mirror of
https://github.com/nxp-imx/mwifiex.git
synced 2024-11-15 03:25:35 +00:00
e057e875ba
New Additions/Removals/Improvements: ------------------------------------ 1. WSW-18868: Improve FW download time after suspend/resume cycle 2. WSFD-484: WIFI 6E support 3. WSW-17954: Enable turbo mode command for mlanutl 4. WSW-19363: Add debug prints to WLAN driver regarding WPA_supplicant 5. WSW-19307: Support robust btc related commands [0x00e0] in mlanutl 6. WSW-16429: Disabling of WEP/TKIP on all V16 devices 7. Use CFG80211_VERSION_CODE to control cfg80211 related code 8. Enabled these new commands for mlanutl: min_ba_threshold, stop_su and ed_mac_ctrl_v3 9. WSFD-386: FW and VHAL Implementation for WOWLAN by adding code for MDNS wakeup Driver Bug Fixes: ----------------- 1. WSW-18708: Setting domain info fails for W8801 Murata M.2 Module (2DS) 2. WSW-18541: Debug logs not seen if drvdbg is part of wifi_mod_para.conf 3. WSW-19136: Command 0x107 timeout is seen radomly during connect-disconnect test 4. WSW-18865: VHT80 TCP-tx throughput only run about 170Mbps, both STA and MMH mode 5. WSW-17923: 4K Video Stoppage Issue, Wi-Fi throughput drops to lower than 20Mbps without recovery 6. WSW-17925: NO_IR flags are not cleared for ch 12,13 and 14 if country is changed to JP in runtime 7. WCSWREL-251: There is "mlan0: Failed to initialize driver interface" during stress load/unload testing 8. WSW-18431: UAP beacon (in 1x1 mode) not reporting correct values for tx_highest_rate and rx_highest_rate in VhtCap IE 9. WSW-18116: TCP Keep alive packets are not seen after starting cloud keep alive 10. WSW-18690: STAUT is advertising support of MCS-0 to 9 only in HE-IE in Probe Request 11. WCSWREL-266: Fix L5.16 build errors and warnings Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
727 lines
22 KiB
C
727 lines
22 KiB
C
|
|
/** @file moal_eth_ioctl.h
|
|
*
|
|
* @brief This file contains definition for private IOCTL call.
|
|
*
|
|
*
|
|
* Copyright 2008-2022 NXP
|
|
*
|
|
* This software file (the File) is distributed by NXP
|
|
* under the terms of the GNU General Public License Version 2, June 1991
|
|
* (the License). You may use, redistribute and/or modify the File in
|
|
* accordance with the terms and conditions of the License, a copy of which
|
|
* is available by writing to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
|
|
* worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
|
*
|
|
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE EXPRESSLY DISCLAIMED. The License provides additional details about
|
|
* this warranty disclaimer.
|
|
*
|
|
*/
|
|
|
|
/********************************************************
|
|
Change log:
|
|
01/05/2012: initial version
|
|
********************************************************/
|
|
#if defined(STA_CFG80211) || defined(UAP_CFG80211)
|
|
#include "moal_cfg80211.h"
|
|
#endif
|
|
|
|
#ifndef _WOAL_ETH_PRIV_H_
|
|
#define _WOAL_ETH_PRIV_H_
|
|
|
|
/** Command disabled */
|
|
#define CMD_DISABLED 0
|
|
/** Command enabled */
|
|
#define CMD_ENABLED 1
|
|
/** Command get */
|
|
#define CMD_GET 2
|
|
|
|
/** 2K bytes */
|
|
#define WOAL_2K_BYTES 2000
|
|
|
|
/** NXP private command identifier string */
|
|
#define CMD_NXP "MRVL_CMD"
|
|
|
|
/** Private command: Version */
|
|
#define PRIV_CMD_VERSION "version"
|
|
/** Private command: Band cfg */
|
|
#define PRIV_CMD_BANDCFG "bandcfg"
|
|
/** Private command: Host cmd */
|
|
#define PRIV_CMD_HOSTCMD "hostcmd"
|
|
/** Private command: Custom IE config*/
|
|
#define PRIV_CMD_CUSTOMIE "customie"
|
|
/** Private command: HT Tx Cfg */
|
|
#define PRIV_CMD_HTTXCFG "httxcfg"
|
|
/** Private command: HT Cap Info */
|
|
#define PRIV_CMD_HTCAPINFO "htcapinfo"
|
|
/** Private command: Add BA para */
|
|
#define PRIV_CMD_ADDBAPARA "addbapara"
|
|
/** Private command: Aggragation priority table */
|
|
#define PRIV_CMD_AGGRPRIOTBL "aggrpriotbl"
|
|
/** Private command: Add BA reject cfg */
|
|
#define PRIV_CMD_ADDBAREJECT "addbareject"
|
|
/** Private command: Delete BA */
|
|
#define PRIV_CMD_DELBA "delba"
|
|
/** Private command: Reject Addba Req */
|
|
#define PRIV_CMD_REJECTADDBAREQ "rejectaddbareq"
|
|
/** Private command: 11AC Cfg */
|
|
#define PRIV_CMD_VHTCFG "vhtcfg"
|
|
/** Private command: 11AC Oper Mode Cfg */
|
|
#define PRIV_CMD_OPERMODECFG "opermodecfg"
|
|
#define PRIV_CMD_DATARATE "getdatarate"
|
|
#define PRIV_CMD_TXRATECFG "txratecfg"
|
|
#define PRIV_CMD_GETLOG "getlog"
|
|
#define PRIV_CMD_ESUPPMODE "esuppmode"
|
|
#define PRIV_CMD_PASSPHRASE "passphrase"
|
|
#define PRIV_CMD_DEAUTH "deauth"
|
|
#ifdef UAP_SUPPORT
|
|
#define PRIV_CMD_AP_DEAUTH "apdeauth"
|
|
#define PRIV_CMD_GET_STA_LIST "getstalist"
|
|
#define PRIV_CMD_BSS_CONFIG "bssconfig"
|
|
#endif
|
|
#ifdef WIFI_DIRECT_SUPPORT
|
|
#if defined(STA_SUPPORT) && defined(UAP_SUPPORT)
|
|
#define PRIV_CMD_BSSROLE "bssrole"
|
|
#endif
|
|
#endif
|
|
#ifdef STA_SUPPORT
|
|
#define PRIV_CMD_GETSCANTABLE "getscantable"
|
|
#define PRIV_CMD_GETCHANSTATS "getchanstats"
|
|
typedef struct _chan_stats {
|
|
/** Number of records in the chan_stats */
|
|
t_u32 num_in_chan_stats;
|
|
/** channel statistics */
|
|
ChanStatistics_t stats[];
|
|
} chan_stats;
|
|
#define PRIV_CMD_SETUSERSCAN "setuserscan"
|
|
#define PRIV_CMD_EXTCAPCFG "extcapcfg"
|
|
#define PRIV_CMD_CANCELSCAN "cancelscan"
|
|
#endif
|
|
#define PRIV_CMD_DEEPSLEEP "deepsleep"
|
|
#define PRIV_CMD_IPADDR "ipaddr"
|
|
#define PRIV_CMD_WPSSESSION "wpssession"
|
|
#define PRIV_CMD_OTPUSERDATA "otpuserdata"
|
|
#define PRIV_CMD_COUNTRYCODE "countrycode"
|
|
#define PRIV_CMD_TCPACKENH "tcpackenh"
|
|
#ifdef REASSOCIATION
|
|
#define PRIV_CMD_ASSOCESSID "assocessid"
|
|
#define PRIV_CMD_ASSOCBSSID "assocessid_bssid"
|
|
#endif
|
|
#define PRIV_CMD_WAKEUPREASON "wakeupreason"
|
|
#ifdef STA_SUPPORT
|
|
#define PRIV_CMD_LISTENINTERVAL "listeninterval"
|
|
#endif
|
|
#ifdef DEBUG_LEVEL1
|
|
#define PRIV_CMD_DRVDBG "drvdbg"
|
|
#endif
|
|
#define PRIV_CMD_HSCFG "hscfg"
|
|
#define PRIV_CMD_HSSETPARA "hssetpara"
|
|
#define PRIV_CMD_MGMT_FILTER "mgmtfilter"
|
|
#define PRIV_CMD_SCANCFG "scancfg"
|
|
#define PRIV_CMD_GETNLNUM "getnlnum"
|
|
#define PRIV_CMD_AGGRCTRL "aggrctrl"
|
|
#ifdef USB
|
|
#define PRIV_CMD_USBAGGRCTRL "usbaggrctrl"
|
|
#endif
|
|
#define PRIV_CMD_SET_BSS_MODE "setbssmode"
|
|
#ifdef STA_SUPPORT
|
|
#define PRIV_CMD_SET_AP "setap"
|
|
#define PRIV_CMD_SET_POWER "setpower"
|
|
#define PRIV_CMD_SET_ESSID "setessid"
|
|
#define PRIV_CMD_SET_AUTH "setauth"
|
|
#define PRIV_CMD_GET_AP "getap"
|
|
#define PRIV_CMD_GET_POWER "getpower"
|
|
#define PRIV_CMD_PSMODE "psmode"
|
|
#endif
|
|
#define PRIV_CMD_WARMRESET "warmreset"
|
|
#define PRIV_CMD_TXPOWERCFG "txpowercfg"
|
|
#define PRIV_CMD_PSCFG "pscfg"
|
|
#define PRIV_CMD_BCNTIMEOUTCFG "bcntimeoutcfg"
|
|
#define PRIV_CMD_SLEEPPD "sleeppd"
|
|
#define PRIV_CMD_TXCONTROL "txcontrol"
|
|
#define PRIV_CMD_REGRDWR "regrdwr"
|
|
#define PRIV_CMD_RDEEPROM "rdeeprom"
|
|
#define PRIV_CMD_MEMRDWR "memrdwr"
|
|
#ifdef SDIO
|
|
#define PRIV_CMD_SDCMD52RW "sdcmd52rw"
|
|
#endif
|
|
#define PRIV_CMD_ARPFILTER "arpfilter"
|
|
#define PRIV_CMD_HOTSPOTCFG "hotspotcfg"
|
|
#define PRIV_CMD_MGMT_FRAME_CTRL "mgmtframectrl"
|
|
#define PRIV_CMD_QCONFIG "qconfig"
|
|
#define PRIV_CMD_ADDTS "addts"
|
|
#define PRIV_CMD_DELTS "delts"
|
|
#define PRIV_CMD_QSTATUS "qstatus"
|
|
#define PRIV_CMD_TS_STATUS "ts_status"
|
|
#define PRIV_CMD_QOS_CFG "qoscfg"
|
|
#define PRIV_CMD_MAC_CTRL "macctrl"
|
|
#define PRIV_CMD_GETWAP "getwap"
|
|
#define PRIV_CMD_REGION_CODE "regioncode"
|
|
#define PRIV_CMD_CFPINFO "cfpinfo"
|
|
#define PRIV_CMD_FWMACADDR "fwmacaddr"
|
|
#define PRIV_CMD_OFFCHANNEL "offchannel"
|
|
#define PRIV_CMD_DSCP_MAP "dscpmap"
|
|
/** Private command: Verext */
|
|
#define PRIV_CMD_VEREXT "verext"
|
|
#ifdef CONFIG_USB_SUSPEND
|
|
#define PRIV_CMD_USB_SUSPEND "usbsuspend"
|
|
#define PRIV_CMD_USB_RESUME "usbresume"
|
|
#endif /* CONFIG_USB_SUSPEND */
|
|
#if defined(STA_SUPPORT) && defined(STA_WEXT)
|
|
#define PRIV_CMD_RADIO_CTRL "radioctrl"
|
|
#endif
|
|
#define PRIV_CMD_WMM_CFG "wmmcfg"
|
|
#define PRIV_CMD_MIN_BA_THRESH_CFG "min_ba_threshold"
|
|
#if defined(STA_SUPPORT)
|
|
#define PRIV_CMD_11D_CFG "11dcfg"
|
|
#define PRIV_CMD_11D_CLR_TBL "11dclrtbl"
|
|
#endif
|
|
#ifndef OPCHAN
|
|
#define PRIV_CMD_WWS_CFG "wwscfg"
|
|
#endif
|
|
#if defined(REASSOCIATION)
|
|
#define PRIV_CMD_REASSOCTRL "reassoctrl"
|
|
#endif
|
|
#define PRIV_CMD_TXBUF_CFG "txbufcfg"
|
|
#ifdef STA_SUPPORT
|
|
#define PRIV_CMD_AUTH_TYPE "authtype"
|
|
#endif
|
|
#define PRIV_CMD_POWER_CONS "powercons"
|
|
#define PRIV_CMD_HT_STREAM_CFG "htstreamcfg"
|
|
#define PRIV_CMD_MIMO_SWITCH "mimoswitch"
|
|
#define PRIV_CMD_THERMAL "thermal"
|
|
#define PRIV_CMD_BCN_INTERVAL "bcninterval"
|
|
#ifdef STA_SUPPORT
|
|
#define PRIV_CMD_GET_SIGNAL "getsignal"
|
|
#define PRIV_CMD_SIGNALEXT_CFG "signalextcfg"
|
|
#define PRIV_CMD_GET_SIGNAL_EXT_V2 "getsignalextv2"
|
|
#define PRIV_CMD_GET_SIGNAL_EXT "getsignalext"
|
|
#endif
|
|
#if defined(STA_SUPPORT)
|
|
#define PRIV_CMD_PMFCFG "pmfcfg"
|
|
#endif
|
|
#define PRIV_CMD_INACTIVITYTO "inactivityto"
|
|
#define PRIV_CMD_AMSDU_AGGR_CTRL "amsduaggrctrl"
|
|
#define PRIV_CMD_TX_BF_CAP "httxbfcap"
|
|
#ifdef SDIO
|
|
#define PRIV_CMD_SDIO_CLOCK "sdioclock"
|
|
#endif
|
|
#ifdef SDIO
|
|
#define PRIV_CMD_MPA_CTRL "mpactrl"
|
|
#endif
|
|
#define PRIV_CMD_SLEEP_PARAMS "sleepparams"
|
|
#define PRIV_CMD_NET_MON "netmon"
|
|
#if defined(STA_CFG80211) && defined(UAP_CFG80211)
|
|
#define PRIV_CMD_MONITOR_MODE "monitormode"
|
|
#endif
|
|
#define PRIV_CMD_DFS_TESTING "dfstesting"
|
|
#define PRIV_CMD_CLEAR_NOP "clear_nop"
|
|
#define PRIV_CMD_FAKE_RADAR "fake_radar"
|
|
#define PRIV_CMD_DFS53_CFG "dfs53cfg"
|
|
#define PRIV_CMD_DFS_CAC "dfs_cac"
|
|
#define PRIV_CMD_AUTODFS "autodfs"
|
|
#define PRIV_CMD_CFP_CODE "cfpcode"
|
|
#define PRIV_CMD_CWMODE "cwmode"
|
|
#define PRIV_CMD_ANT_CFG "antcfg"
|
|
#define PRIV_CMD_SYSCLOCK "sysclock"
|
|
#define PRIV_CMD_GET_KEY "getkey"
|
|
#define PRIV_CMD_ASSOCIATE "associate"
|
|
#define PRIV_CMD_TX_BF_CFG "httxbfcfg"
|
|
#define PRIV_CMD_PORT_CTRL "port_ctrl"
|
|
#define PRIV_CMD_PB_BYPASS "pb_bypass"
|
|
#ifdef SDIO
|
|
#define PRIV_CMD_SD_CMD53_RW "sdcmd53rw"
|
|
#endif
|
|
#ifdef RX_PACKET_COALESCE
|
|
#define PRIV_CMD_RX_COAL_CFG "rxpktcoal_cfg"
|
|
#endif
|
|
#ifdef WIFI_DIRECT_SUPPORT
|
|
#if defined(UAP_CFG80211)
|
|
#define PRIV_CMD_CFG_NOA "cfg_noa"
|
|
#define PRIV_CMD_CFG_OPP_PS "cfg_opp_ps"
|
|
#endif
|
|
#endif
|
|
#define PRIV_CMD_CFG_CLOCK_SYNC "clocksync"
|
|
#define PRIV_CMD_CFG_GET_TSF_INFO "gettsfinfo"
|
|
#define PRIV_CMD_TARGET_CHANNEL "targetchan"
|
|
#define PRIV_CMD_BACKUP_CHANNEL "backupchan"
|
|
|
|
#define PRIV_CMD_DFS_REPEATER_CFG "dfs_repeater"
|
|
#ifdef WIFI_DIRECT_SUPPORT
|
|
#if defined(STA_CFG80211) || defined(UAP_CFG80211)
|
|
#define PRIV_CMD_MIRACAST_CFG "miracastcfg"
|
|
#endif
|
|
#endif
|
|
#define PRIV_CMD_COEX_RX_WINSIZE "coex_rx_winsize"
|
|
#define PRIV_CMD_TX_AGGR_CTRL "txaggrctrl"
|
|
#define PRIV_CMD_AUTO_TDLS "autotdls"
|
|
|
|
#ifdef PCIE
|
|
#define PRIV_CMD_PCIE_REG_RW "pcieregrw"
|
|
#define PRIV_CMD_PCIE_BAR0_REG_RW "pciebar0regrw"
|
|
#endif
|
|
|
|
#define PRIV_CMD_GET_SENSOR_TEMP "get_sensor_temp"
|
|
|
|
#define PRIV_CMD_GET_CHNRGPWR "get_chnrgpwr"
|
|
#define PRIV_CMD_GET_TXPWR_LIMIT "get_txpwrlimit"
|
|
#define PRIV_CMD_GET_CFG_CHAN_LIST "getcfgchanlist"
|
|
#if defined(UAP_SUPPORT)
|
|
#define PRIV_CMD_EXTEND_CHAN_SWITCH "channel_switch"
|
|
#endif
|
|
|
|
#define PRIV_CMD_TDLS_IDLE_TIME "tdls_idle_time"
|
|
|
|
#define PRIV_CMD_DYN_BW "dyn_bw"
|
|
|
|
#if CFG80211_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)
|
|
#define PRIV_CMD_DFS_OFFLOAD "dfs_offload"
|
|
#endif
|
|
|
|
#define PRIV_CMD_AUTO_ARP "auto_arp"
|
|
|
|
#define PRIV_CMD_PER_PKT_CFG "per_pkt_cfg"
|
|
|
|
#define PRIV_CMD_DEAUTH_CTRL "ctrldeauth"
|
|
|
|
#define PRIV_CMD_TX_RX_HISTOGRAM "txrxhistogram"
|
|
|
|
/**Private command ID to set/get independent reset*/
|
|
#define PRIV_CMD_IND_RST_CFG "indrstcfg"
|
|
|
|
#define PRIV_CMD_MCAST_AGGR_GROUP "mcast_aggr_group"
|
|
#define PRIV_CMD_MC_AGGR_CFG "mc_aggr_cfg"
|
|
#define PRIV_CMD_CH_LOAD "getchload"
|
|
|
|
#define PRIV_CMD_ARB_CFG "arb"
|
|
|
|
/**Private command to configure static rx abort config */
|
|
#define PRIV_CMD_RX_ABORT_CFG "rx_abort_cfg"
|
|
/**Private command to configure dynamic rx abort config */
|
|
#define PRIV_CMD_RX_ABORT_CFG_EXT "rx_abort_cfg_ext"
|
|
#define TX_AMPDU_RTS_CTS 0
|
|
#define TX_AMPDU_CTS_2_SELF 1
|
|
#define TX_AMPDU_DISABLE_PROTECTION 2
|
|
#define TX_AMPDU_DYNAMIC_RTS_CTS 3
|
|
/**Private command to set tx ampdu protection mode */
|
|
#define PRIV_CMD_TX_AMPDU_PROT_MODE "tx_ampdu_prot_mode"
|
|
/**Private command to configure tx rate adapt config */
|
|
#define PRIV_CMD_RATE_ADAPT_CFG "rate_adapt_cfg"
|
|
#define CCK_DESENSE_MODE_DISABLED 0
|
|
#define CCK_DESENSE_MODE_DYNAMIC 1
|
|
#define CCK_DESENSE_MODE_DYN_ENH 2
|
|
/**Private command to configure cck desense config */
|
|
#define PRIV_CMD_CCK_DESENSE_CFG "cck_desense_cfg"
|
|
#define PRIV_CMD_DOT11MC_UNASSOC_FTM_CFG "dot11mc_unassoc_ftm_cfg"
|
|
#define PRIV_CMD_HAL_PHY_CFG "hal_phy_cfg"
|
|
#define PRIV_CMD_IPS_CFG "ips_cfg"
|
|
|
|
/** Private command ID for Android default commands */
|
|
#define WOAL_ANDROID_DEF_CMD (SIOCDEVPRIVATE + 1)
|
|
|
|
/** Private command ID to send TLD configuration */
|
|
#define WOAL_TDLS_CONFIG (SIOCDEVPRIVATE + 5)
|
|
|
|
/** Private command ID to pass mgmt frame */
|
|
#define WOAL_MGMT_FRAME_TX WOAL_MGMT_FRAME_TX_IOCTL
|
|
|
|
/** Private command ID to pass custom IE list */
|
|
#define WOAL_CUSTOM_IE_CFG (SIOCDEVPRIVATE + 13)
|
|
|
|
/** Private command ID for Android ICS priv CMDs */
|
|
#define WOAL_ANDROID_PRIV_CMD (SIOCDEVPRIVATE + 14)
|
|
|
|
/** Private command ID to get BSS type */
|
|
#define WOAL_GET_BSS_TYPE (SIOCDEVPRIVATE + 15)
|
|
|
|
/** Private command ID for robustcoex */
|
|
#define PRIV_CMD_ROBUSTCOEX "robustcoex"
|
|
|
|
#define PRIV_CMD_DMCS "dmcs"
|
|
|
|
#if defined(PCIE)
|
|
#define PRIV_CMD_SSU "ssu"
|
|
/** ssu_params_ctrl */
|
|
typedef struct _ssu_params_cfg {
|
|
/* ssu mode */
|
|
t_u8 ssu_mode;
|
|
/* 0-3; # of FFT samples to skip*/
|
|
t_u32 nskip;
|
|
/* 0-3: # of FFT samples selected to dump */
|
|
t_u32 nsel;
|
|
/* 0-3: Down sample ADC input for buffering*/
|
|
t_u32 adcdownsample;
|
|
/* 0-1: Mask out ADC Data from spectral packet */
|
|
t_u32 mask_adc_pkt;
|
|
/* 0-1: Enable 16-Bit FFT output data precision in spectral packet */
|
|
t_u32 out_16bits;
|
|
/* 0-1: Enable power spectrum in dB for spectral packe */
|
|
t_u32 spec_pwr_enable;
|
|
/* 0-1: Enable spectral packet rate reduction in DB output format */
|
|
t_u32 rate_deduction;
|
|
/* 0-7: Number of spectral packets over which spectral data is to be
|
|
* averaged. */
|
|
t_u32 n_pkt_avg;
|
|
} __attribute__((packed)) ssu_params_cfg;
|
|
#endif
|
|
|
|
#define PRIV_CMD_CSI "csi"
|
|
|
|
#define PRIV_CMD_BOOTSLEEP "bootsleep"
|
|
|
|
/** Private command: 11AX Cfg */
|
|
#define PRIV_CMD_11AXCFG "11axcfg"
|
|
/** Private command: 11AX Cmd */
|
|
#define PRIV_CMD_11AXCMDCFG "11axcmd"
|
|
/** Private command: Range ext Cmd */
|
|
#define PRIV_CMD_RANGE_EXT "range_ext"
|
|
/** Private command: TWT Setup Cfg */
|
|
#define PRIV_CMD_TWT_SETUP "twt_setup"
|
|
/** Private command: TWT Teardown Cfg */
|
|
#define PRIV_CMD_TWT_TEARDOWN "twt_teardown"
|
|
|
|
#define PRIV_CMD_LPM "lpm"
|
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)
|
|
int woal_do_ioctl(struct net_device *dev, struct ifreq *req, void __user *data,
|
|
int cmd);
|
|
#else
|
|
int woal_do_ioctl(struct net_device *dev, struct ifreq *req, int cmd);
|
|
#endif
|
|
/*
|
|
* For android private commands, fixed value of ioctl is used.
|
|
* Internally commands are differentiated using strings.
|
|
*
|
|
* application needs to specify "total_len" of data for copy_from_user
|
|
* kernel updates "used_len" during copy_to_user
|
|
*/
|
|
/** Private command structure from app */
|
|
#ifdef USERSPACE_32BIT_OVER_KERNEL_64BIT
|
|
typedef struct _android_wifi_priv_cmd {
|
|
/** Buffer pointer */
|
|
t_u64 buf;
|
|
/** buffer updated by driver */
|
|
int used_len;
|
|
/** buffer sent by application */
|
|
int total_len;
|
|
} __attribute__((packed)) android_wifi_priv_cmd;
|
|
#else
|
|
typedef struct _android_wifi_priv_cmd {
|
|
/** Buffer pointer */
|
|
char *buf;
|
|
/** buffer updated by driver */
|
|
int used_len;
|
|
/** buffer sent by application */
|
|
int total_len;
|
|
} android_wifi_priv_cmd;
|
|
#endif
|
|
|
|
#ifndef IFNAMSIZ
|
|
#define IFNAMSIZ 16
|
|
#endif
|
|
|
|
/* Maximum size of the ESSID and NICKN strings */
|
|
#define MW_ESSID_MAX_SIZE 32
|
|
|
|
/* Modes of operation */
|
|
#define MW_MODE_AUTO 0 /* Let the driver decides */
|
|
#define MW_MODE_ADHOC 1 /* Single cell network */
|
|
#define MW_MODE_INFRA 2 /* Multi cell network, roaming, ... */
|
|
#define MW_MODE_MASTER 3 /* Synchronisation master or Access Point */
|
|
#define MW_MODE_REPEAT 4 /* Wireless Repeater (forwarder) */
|
|
#define MW_MODE_SECOND 5 /* Secondary master/repeater (backup) */
|
|
#define MW_MODE_MONITOR 6 /* Passive monitor (listen only) */
|
|
#define MW_MODE_MESH 7 /* Mesh (IEEE 802.11s) network */
|
|
|
|
#define MW_POWER_TYPE 0xF000 /* Type of parameter */
|
|
#define MW_POWER_PERIOD 0x1000 /* Value is a period/duration of */
|
|
#define MW_POWER_TIMEOUT 0x2000 /* Value is a timeout (to go asleep) */
|
|
|
|
#define MW_AUTH_INDEX 0x0FFF
|
|
#define MW_AUTH_FLAGS 0xF000
|
|
#define MW_AUTH_WPA_VERSION 0
|
|
#define MW_AUTH_CIPHER_PAIRWISE 1
|
|
#define MW_AUTH_CIPHER_GROUP 2
|
|
#define MW_AUTH_KEY_MGMT 3
|
|
#define MW_AUTH_TKIP_COUNTERMEASURES 4
|
|
#define MW_AUTH_DROP_UNENCRYPTED 5
|
|
#define MW_AUTH_80211_AUTH_ALG 6
|
|
#define MW_AUTH_WPA_ENABLED 7
|
|
#define MW_AUTH_RX_UNENCRYPTED_EAPOL 8
|
|
#define MW_AUTH_ROAMING_CONTROL 9
|
|
#define MW_AUTH_PRIVACY_INVOKED 10
|
|
#define MW_AUTH_CIPHER_GROUP_MGMT 11
|
|
#define MW_AUTH_MFP 12
|
|
|
|
#define MW_AUTH_CIPHER_NONE 0x00000001
|
|
#define MW_AUTH_CIPHER_WEP40 0x00000002
|
|
#define MW_AUTH_CIPHER_TKIP 0x00000004
|
|
#define MW_AUTH_CIPHER_CCMP 0x00000008
|
|
#define MW_AUTH_CIPHER_WEP104 0x00000010
|
|
#define MW_AUTH_CIPHER_AES_CMAC 0x00000020
|
|
|
|
#define MW_AUTH_ALG_OPEN_SYSTEM 0x00000001
|
|
#define MW_AUTH_ALG_SHARED_KEY 0x00000002
|
|
#define MW_AUTH_ALG_LEAP 0x00000004
|
|
|
|
/* Generic format for most parameters that fit in an int */
|
|
struct mw_param {
|
|
t_s32 value; /* The value of the parameter itself */
|
|
t_u8 fixed; /* Hardware should not use auto select */
|
|
t_u8 disabled; /* Disable the feature */
|
|
t_u16 flags; /* Various specifc flags (if any) */
|
|
};
|
|
|
|
/*
|
|
* For all data larger than 16 octets, we need to use a
|
|
* pointer to memory allocated in user space.
|
|
*/
|
|
struct mw_point {
|
|
t_u8 *pointer; /* Pointer to the data (in user space) */
|
|
t_u16 length; /* number of fields or size in bytes */
|
|
t_u16 flags; /* Optional params */
|
|
};
|
|
|
|
/*
|
|
* This structure defines the payload of an ioctl, and is used
|
|
* below.
|
|
*/
|
|
union mwreq_data {
|
|
/* Config - generic */
|
|
char name[IFNAMSIZ];
|
|
|
|
struct mw_point essid; /* Extended network name */
|
|
t_u32 mode; /* Operation mode */
|
|
struct mw_param power; /* PM duration/timeout */
|
|
struct sockaddr ap_addr; /* Access point address */
|
|
struct mw_param param; /* Other small parameters */
|
|
struct mw_point data; /* Other large parameters */
|
|
};
|
|
|
|
/* The structure to exchange data for ioctl */
|
|
struct mwreq {
|
|
union {
|
|
char ifrn_name[IFNAMSIZ]; /* if name, e.g. "eth0" */
|
|
} ifr_ifrn;
|
|
|
|
/* Data part */
|
|
union mwreq_data u;
|
|
};
|
|
|
|
typedef struct woal_priv_ht_cap_info {
|
|
t_u32 ht_cap_info_bg;
|
|
t_u32 ht_cap_info_a;
|
|
} woal_ht_cap_info;
|
|
|
|
typedef struct woal_priv_addba {
|
|
t_u32 time_out;
|
|
t_u32 tx_win_size;
|
|
t_u32 rx_win_size;
|
|
t_u32 tx_amsdu;
|
|
t_u32 rx_amsdu;
|
|
} woal_addba;
|
|
|
|
/** Action field value : get */
|
|
#define ACTION_GET 0
|
|
/** Action field value : set */
|
|
#define ACTION_SET 1
|
|
/** Action field value: add */
|
|
#define ACTION_ADD 2
|
|
/** Action field value: remove */
|
|
#define ACTION_REMOVE 3
|
|
#define MC_AGGR_CTRL MBIT(0)
|
|
/* mcast_aggr_group */
|
|
typedef struct _mcast_aggr_group {
|
|
/** action */
|
|
t_u32 action;
|
|
/** mcast addr */
|
|
t_u8 mcast_addr[ETH_ALEN];
|
|
/** Number of multicast addresses in the list */
|
|
t_u32 num_mcast_addr;
|
|
/** Multicast address list */
|
|
mlan_802_11_mac_addr mac_list[MLAN_MAX_MULTICAST_LIST_SIZE];
|
|
} mcast_aggr_group, *pmcast_aggr_group;
|
|
|
|
typedef struct _txrate_setting {
|
|
t_u16 preamble : 2; /*BIT1-BIT0:
|
|
* For legacy 11b: preamble type
|
|
* 00 = long
|
|
* 01 = short
|
|
* 10/11 = reserved
|
|
* For legacy 11g: reserved
|
|
* For 11n: Green field PPDU indicator
|
|
* 00 = HT-mix
|
|
* 01 = HT-GF
|
|
* 10/11 = reserved.
|
|
* For 11ac: reserved.
|
|
* For 11ax:
|
|
* 00 = HE-SU
|
|
* 01 = HE-EXT-SU
|
|
* 10 = HE-MU
|
|
* 11 = HE trigger based
|
|
*/
|
|
t_u16 bandwidth : 3; /* BIT2- BIT4
|
|
* For 11n and 11ac traffic: Bandwidth
|
|
* 0 = 20Mhz
|
|
* 1 = 40Mhz
|
|
* 2 = 80 Mhz
|
|
* 3 = 160 Mhz
|
|
* 4-7 = reserved
|
|
* For legacy rate : BW>0 implies non-HT
|
|
* duplicates. For HE SU PPDU: 0 = 20Mhz 1 = 40Mhz
|
|
* 2 = 80 Mhz
|
|
* 3 = 160 Mhz
|
|
* 4-7 = reserved
|
|
* For HE ER SU PPDU:
|
|
* 0 = 242-tone RU
|
|
* 1 = upper frequency 106 tone RU within the
|
|
* primary 20 Mhz. For HE MU PPDU: 0 = 20Mhz. 1 =
|
|
* 40Mhz. 2 = 80Mhz non-preamble puncturing mode 3
|
|
* = 160Mhz and 80+80 Mhz non-preamble. 4 = for
|
|
* preemble puncturing in 80 Mhz , where in the
|
|
* preamble only the secondary 20Mhz is punctured.
|
|
* 5 = for preemble puncturing in 80 Mhz ,
|
|
* where in the preamble only one of the two
|
|
* 20Mhz subchannels in the secondary 40Mhz is
|
|
* punctured. 6 = for preemble puncturing in 160
|
|
* Mhz or 80 Mhz + 80 Mhz, where in the primary 80
|
|
* Mhz of the preamble only the secondary 20 Mhz is
|
|
* punctured. 7 = for preemble puncturing in 160
|
|
* Mhz or 80 Mhz + 80 Mhz, where in the primary 80
|
|
* Mhz of the preamble the primary 40 Mhz is
|
|
* present.
|
|
*/
|
|
t_u16 shortGI : 2; /*BIT5- BIT6
|
|
* For legacy: not used
|
|
* For 11n: 00 = normal, 01 =shortGI, 10/11 =
|
|
* reserved For 11ac: SGI map to VHT-SIG-A2[0]
|
|
* VHT-SIG-A2[1] is set to 1 if short guard
|
|
* interval is used and NSYM mod 10 = 9, otherwise
|
|
* set to 0. For 11ax: 00 = 1xHELTF+GI0.8usec 01 =
|
|
* 2xHELTF+GI0.8usec 10 = 2xHELTF+GI1.6usec 11 =
|
|
* 4xHELTF+GI0.8 usec if both DCM and STBC are 1
|
|
* 4xHELTF+GI3.2 usec otherwise
|
|
*/
|
|
t_u16 stbc : 1; // BIT7, 0: no STBC; 1: STBC
|
|
t_u16 dcm : 1; // BIT8, 0: no DCM; 1: DCM used.
|
|
t_u16 adv_coding : 1; // BIT9, 0: BCC; 1: LDPC.
|
|
t_u16 doppler : 2; /* BIT11-BIT10,
|
|
00: Doppler0
|
|
01: Doppler 1 with Mma =10
|
|
10: Doppler 1 with Mma =20
|
|
*/
|
|
t_u16 max_pktext : 2; /*BIT12-BIT13:
|
|
* Max packet extension
|
|
* 0 - 0 usec
|
|
* 1 - 8 usec
|
|
* 2 - 16 usec.
|
|
*/
|
|
t_u16 reserverd : 2; // BIT14-BIT15
|
|
} __ATTRIB_PACK__ txrate_setting;
|
|
|
|
/** data structure for cmd txratecfg */
|
|
typedef struct woal_priv_tx_rate_cfg {
|
|
/* LG rate: 0, HT rate: 1, VHT rate: 2 */
|
|
t_u32 rate_format;
|
|
/** Rate/MCS index (0xFF: auto) */
|
|
t_u32 rate_index;
|
|
/** Data rate */
|
|
t_u32 rate;
|
|
/** NSS */
|
|
t_u32 nss;
|
|
/** Rate Setting */
|
|
t_u16 rate_setting;
|
|
} woal_tx_rate_cfg;
|
|
|
|
typedef struct woal_priv_esuppmode_cfg {
|
|
/* RSN mode */
|
|
t_u16 rsn_mode;
|
|
/* Pairwise cipher */
|
|
t_u8 pairwise_cipher;
|
|
/* Group cipher */
|
|
t_u8 group_cipher;
|
|
} woal_esuppmode_cfg;
|
|
|
|
mlan_status woal_set_ap_wps_p2p_ie(moal_private *priv, t_u8 *ie, size_t len);
|
|
|
|
int woal_android_priv_cmd(struct net_device *dev, struct ifreq *req);
|
|
|
|
#define PRIV_CMD_CLOUD_KEEP_ALIVE "cloud_keep_alive"
|
|
/** cloud keep alive parameters */
|
|
typedef struct _cloud_keep_alive {
|
|
/** id */
|
|
t_u8 mkeep_alive_id;
|
|
/** enable/disable of this id */
|
|
t_u8 enable;
|
|
/** enable/disable reset*/
|
|
t_u8 reset;
|
|
/** Reserved */
|
|
t_u8 reserved;
|
|
/** Destination MAC address */
|
|
t_u8 dst_mac[ETH_ALEN];
|
|
/** Source MAC address */
|
|
t_u8 src_mac[ETH_ALEN];
|
|
/** packet send period */
|
|
t_u32 sendInterval;
|
|
/** packet retry interval */
|
|
t_u32 retryInterval;
|
|
/** packet retry count */
|
|
t_u8 retryCount;
|
|
/** packet length */
|
|
t_u8 pkt_len;
|
|
/** packet content */
|
|
t_u8 pkt[255];
|
|
} __ATTRIB_PACK__ cloud_keep_alive;
|
|
|
|
#define TLV_TYPE_PER_PKT_CFG 0x0001
|
|
#define TX_PKT_CTRL MBIT(0)
|
|
#define RX_PKT_INFO MBIT(1)
|
|
|
|
#define FLAG_TX_HISTOGRAM 0x01
|
|
#define FLAG_RX_HISTOGRAM 0x02
|
|
#define DISABLE_TX_RX_HISTOGRAM 0x00
|
|
#define ENABLE_TX_RX_HISTOGRAM 0x01
|
|
#define GET_TX_RX_HISTOGRAM 0x02
|
|
#define PRIV_CMD_TX_RX_HISTOGRAM "txrxhistogram"
|
|
/** TX and RX histogram statistic parameters*/
|
|
typedef struct _tx_rx_histogram {
|
|
/** Enable or disable get tx/rx histogram statistic */
|
|
t_u8 enable;
|
|
/** Choose to get TX, RX or both histogram statistic */
|
|
t_u8 action;
|
|
} __ATTRIB_PACK__ tx_rx_histogram;
|
|
|
|
/* Enum for different CW mode type */
|
|
typedef enum _cw_modes_e {
|
|
CWMODE_DISABLE,
|
|
CWMODE_TXCONTPKT,
|
|
CWMODE_TXCONTWAVE,
|
|
} cw_modes_e;
|
|
|
|
/** wlan_ieee80211_chan */
|
|
typedef struct {
|
|
/** center freq */
|
|
t_u16 center_freq;
|
|
/** chan num */
|
|
t_u16 hw_value;
|
|
/** chan flags */
|
|
t_u32 flags;
|
|
/** max power */
|
|
int max_power;
|
|
/** dfs_state */
|
|
t_u8 dfs_state;
|
|
} __ATTRIB_PACK__ wlan_ieee80211_chan;
|
|
|
|
/** wlan_ieee80211_chan_list*/
|
|
typedef struct {
|
|
/** num of chan */
|
|
t_u8 num_chan;
|
|
/** chan_list */
|
|
wlan_ieee80211_chan chan_list[];
|
|
} __ATTRIB_PACK__ wlan_ieee80211_chan_list;
|
|
|
|
#define PRIV_CMD_TP_STATE "tp_state"
|
|
#endif /* _WOAL_ETH_PRIV_H_ */
|