summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/mlan_ioctl.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/mlan_ioctl.h')
-rw-r--r--drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/mlan_ioctl.h5159
1 files changed, 5159 insertions, 0 deletions
diff --git a/drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/mlan_ioctl.h b/drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/mlan_ioctl.h
new file mode 100644
index 000000000000..2315b2a2b79e
--- /dev/null
+++ b/drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/mlan_ioctl.h
@@ -0,0 +1,5159 @@
+/** @file mlan_ioctl.h
+ *
+ * @brief This file declares the IOCTL data structures and APIs.
+ *
+ *
+ * Copyright 2014-2020 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:
+ 11/07/2008: initial version
+******************************************************/
+
+#ifndef _MLAN_IOCTL_H_
+#define _MLAN_IOCTL_H_
+
+/** Enumeration for IOCTL request ID */
+enum _mlan_ioctl_req_id {
+ /* Scan Group */
+ MLAN_IOCTL_SCAN = 0x00010000,
+ MLAN_OID_SCAN_NORMAL = 0x00010001,
+ MLAN_OID_SCAN_SPECIFIC_SSID = 0x00010002,
+ MLAN_OID_SCAN_USER_CONFIG = 0x00010003,
+ MLAN_OID_SCAN_CONFIG = 0x00010004,
+ MLAN_OID_SCAN_GET_CURRENT_BSS = 0x00010005,
+ MLAN_OID_SCAN_CANCEL = 0x00010006,
+ MLAN_OID_SCAN_TABLE_FLUSH = 0x0001000A,
+ MLAN_OID_SCAN_BGSCAN_CONFIG = 0x0001000B,
+ /* BSS Configuration Group */
+ MLAN_IOCTL_BSS = 0x00020000,
+ MLAN_OID_BSS_START = 0x00020001,
+ MLAN_OID_BSS_STOP = 0x00020002,
+ MLAN_OID_BSS_MODE = 0x00020003,
+ MLAN_OID_BSS_CHANNEL = 0x00020004,
+ MLAN_OID_BSS_CHANNEL_LIST = 0x00020005,
+ MLAN_OID_BSS_MAC_ADDR = 0x00020006,
+ MLAN_OID_BSS_MULTICAST_LIST = 0x00020007,
+ MLAN_OID_BSS_FIND_BSS = 0x00020008,
+ MLAN_OID_IBSS_BCN_INTERVAL = 0x00020009,
+ MLAN_OID_IBSS_ATIM_WINDOW = 0x0002000A,
+ MLAN_OID_IBSS_CHANNEL = 0x0002000B,
+#ifdef UAP_SUPPORT
+ MLAN_OID_UAP_BSS_CONFIG = 0x0002000C,
+ MLAN_OID_UAP_DEAUTH_STA = 0x0002000D,
+ MLAN_OID_UAP_BSS_RESET = 0x0002000E,
+#endif
+#if defined(STA_SUPPORT) && defined(UAP_SUPPORT)
+ MLAN_OID_BSS_ROLE = 0x0002000F,
+#endif
+#ifdef WIFI_DIRECT_SUPPORT
+ MLAN_OID_WIFI_DIRECT_MODE = 0x00020010,
+#endif
+#ifdef STA_SUPPORT
+ MLAN_OID_BSS_LISTEN_INTERVAL = 0x00020011,
+#endif
+ MLAN_OID_BSS_REMOVE = 0x00020014,
+#ifdef UAP_SUPPORT
+ MLAN_OID_UAP_CFG_WMM_PARAM = 0x00020015,
+#endif
+ MLAN_OID_BSS_11D_CHECK_CHANNEL = 0x00020016,
+#ifdef UAP_SUPPORT
+ MLAN_OID_UAP_ACS_SCAN = 0x00020017,
+ MLAN_OID_UAP_SCAN_CHANNELS = 0x00020018,
+ MLAN_OID_UAP_CHANNEL = 0x00020019,
+ MLAN_OID_UAP_OPER_CTRL = 0x0002001A,
+#endif
+#ifdef STA_SUPPORT
+ MLAN_OID_BSS_CHAN_INFO = 0x0002001B,
+#endif
+#ifdef UAP_SUPPORT
+ MLAN_OID_UAP_ADD_STATION = 0x0002001C,
+#endif
+
+ MLAN_OID_BSS_FIND_BSSID = 0x0002001D,
+
+ /* Radio Configuration Group */
+ MLAN_IOCTL_RADIO_CFG = 0x00030000,
+ MLAN_OID_RADIO_CTRL = 0x00030001,
+ MLAN_OID_BAND_CFG = 0x00030002,
+ MLAN_OID_ANT_CFG = 0x00030003,
+ MLAN_OID_REMAIN_CHAN_CFG = 0x00030004,
+ MLAN_OID_MIMO_SWITCH = 0x00030005,
+
+ /* SNMP MIB Group */
+ MLAN_IOCTL_SNMP_MIB = 0x00040000,
+ MLAN_OID_SNMP_MIB_RTS_THRESHOLD = 0x00040001,
+ MLAN_OID_SNMP_MIB_FRAG_THRESHOLD = 0x00040002,
+ MLAN_OID_SNMP_MIB_RETRY_COUNT = 0x00040003,
+ MLAN_OID_SNMP_MIB_DOT11D = 0x00040004,
+#if defined(UAP_SUPPORT)
+ MLAN_OID_SNMP_MIB_DOT11H = 0x00040005,
+#endif
+ MLAN_OID_SNMP_MIB_DTIM_PERIOD = 0x00040006,
+ MLAN_OID_SNMP_MIB_SIGNALEXT_ENABLE = 0x00040007,
+ MLAN_OID_SNMP_MIB_CTRL_DEAUTH = 0x00040008,
+
+ /* Status Information Group */
+ MLAN_IOCTL_GET_INFO = 0x00050000,
+ MLAN_OID_GET_STATS = 0x00050001,
+ MLAN_OID_GET_SIGNAL = 0x00050002,
+ MLAN_OID_GET_FW_INFO = 0x00050003,
+ MLAN_OID_GET_VER_EXT = 0x00050004,
+ MLAN_OID_GET_BSS_INFO = 0x00050005,
+ MLAN_OID_GET_DEBUG_INFO = 0x00050006,
+#ifdef UAP_SUPPORT
+ MLAN_OID_UAP_STA_LIST = 0x00050007,
+#endif
+ MLAN_OID_GET_SIGNAL_EXT = 0x00050008,
+ MLAN_OID_LINK_STATS = 0x00050009,
+ MLAN_OID_GET_UAP_STATS_LOG = 0x0005000A,
+ /* Security Configuration Group */
+ MLAN_IOCTL_SEC_CFG = 0x00060000,
+ MLAN_OID_SEC_CFG_AUTH_MODE = 0x00060001,
+ MLAN_OID_SEC_CFG_ENCRYPT_MODE = 0x00060002,
+ MLAN_OID_SEC_CFG_WPA_ENABLED = 0x00060003,
+ MLAN_OID_SEC_CFG_ENCRYPT_KEY = 0x00060004,
+ MLAN_OID_SEC_CFG_PASSPHRASE = 0x00060005,
+ MLAN_OID_SEC_CFG_EWPA_ENABLED = 0x00060006,
+ MLAN_OID_SEC_CFG_ESUPP_MODE = 0x00060007,
+ MLAN_OID_SEC_CFG_WAPI_ENABLED = 0x00060009,
+ MLAN_OID_SEC_CFG_PORT_CTRL_ENABLED = 0x0006000A,
+#ifdef UAP_SUPPORT
+ MLAN_OID_SEC_CFG_REPORT_MIC_ERR = 0x0006000B,
+#endif
+ MLAN_OID_SEC_QUERY_KEY = 0x0006000C,
+
+ /* Rate Group */
+ MLAN_IOCTL_RATE = 0x00070000,
+ MLAN_OID_RATE_CFG = 0x00070001,
+ MLAN_OID_GET_DATA_RATE = 0x00070002,
+ MLAN_OID_SUPPORTED_RATES = 0x00070003,
+
+ /* Power Configuration Group */
+ MLAN_IOCTL_POWER_CFG = 0x00080000,
+ MLAN_OID_POWER_CFG = 0x00080001,
+ MLAN_OID_POWER_CFG_EXT = 0x00080002,
+ MLAN_OID_POWER_LOW_POWER_MODE = 0x00080003,
+
+ /* Power Management Configuration Group */
+ MLAN_IOCTL_PM_CFG = 0x00090000,
+ MLAN_OID_PM_CFG_IEEE_PS = 0x00090001,
+ MLAN_OID_PM_CFG_HS_CFG = 0x00090002,
+ MLAN_OID_PM_CFG_INACTIVITY_TO = 0x00090003,
+ MLAN_OID_PM_CFG_DEEP_SLEEP = 0x00090004,
+ MLAN_OID_PM_CFG_SLEEP_PD = 0x00090005,
+ MLAN_OID_PM_CFG_PS_CFG = 0x00090006,
+ MLAN_OID_PM_CFG_SLEEP_PARAMS = 0x00090008,
+#ifdef UAP_SUPPORT
+ MLAN_OID_PM_CFG_PS_MODE = 0x00090009,
+#endif /* UAP_SUPPORT */
+ MLAN_OID_PM_INFO = 0x0009000A,
+ MLAN_OID_PM_HS_WAKEUP_REASON = 0x0009000B,
+ MLAN_OID_PM_MGMT_FILTER = 0x0009000C,
+ MLAN_OID_PM_CFG_BCN_TIMEOUT = 0x0009000D,
+
+ /* WMM Configuration Group */
+ MLAN_IOCTL_WMM_CFG = 0x000A0000,
+ MLAN_OID_WMM_CFG_ENABLE = 0x000A0001,
+ MLAN_OID_WMM_CFG_QOS = 0x000A0002,
+ MLAN_OID_WMM_CFG_ADDTS = 0x000A0003,
+ MLAN_OID_WMM_CFG_DELTS = 0x000A0004,
+ MLAN_OID_WMM_CFG_QUEUE_CONFIG = 0x000A0005,
+ MLAN_OID_WMM_CFG_QUEUE_STATS = 0x000A0006,
+ MLAN_OID_WMM_CFG_QUEUE_STATUS = 0x000A0007,
+ MLAN_OID_WMM_CFG_TS_STATUS = 0x000A0008,
+
+ /* WPS Configuration Group */
+ MLAN_IOCTL_WPS_CFG = 0x000B0000,
+ MLAN_OID_WPS_CFG_SESSION = 0x000B0001,
+
+ /* 802.11n Configuration Group */
+ MLAN_IOCTL_11N_CFG = 0x000C0000,
+ MLAN_OID_11N_CFG_TX = 0x000C0001,
+ MLAN_OID_11N_HTCAP_CFG = 0x000C0002,
+ MLAN_OID_11N_CFG_ADDBA_REJECT = 0x000C0003,
+ MLAN_OID_11N_CFG_AGGR_PRIO_TBL = 0x000C0004,
+ MLAN_OID_11N_CFG_ADDBA_PARAM = 0x000C0005,
+ MLAN_OID_11N_CFG_MAX_TX_BUF_SIZE = 0x000C0006,
+ MLAN_OID_11N_CFG_AMSDU_AGGR_CTRL = 0x000C0007,
+ MLAN_OID_11N_CFG_SUPPORTED_MCS_SET = 0x000C0008,
+ MLAN_OID_11N_CFG_TX_BF_CAP = 0x000C0009,
+ MLAN_OID_11N_CFG_TX_BF_CFG = 0x000C000A,
+ MLAN_OID_11N_CFG_STREAM_CFG = 0x000C000B,
+ MLAN_OID_11N_CFG_DELBA = 0x000C000C,
+ MLAN_OID_11N_CFG_REJECT_ADDBA_REQ = 0x000C000D,
+ MLAN_OID_11N_CFG_COEX_RX_WINSIZE = 0x000C000E,
+ MLAN_OID_11N_CFG_IBSS_AMPDU_PARAM = 0x000C0010,
+ MLAN_OID_11N_CFG_MIN_BA_THRESHOLD = 0x000C0011,
+
+ /* 802.11d Configuration Group */
+ MLAN_IOCTL_11D_CFG = 0x000D0000,
+#ifdef STA_SUPPORT
+ MLAN_OID_11D_CFG_ENABLE = 0x000D0001,
+ MLAN_OID_11D_CLR_CHAN_TABLE = 0x000D0002,
+#endif /* STA_SUPPORT */
+#ifdef UAP_SUPPORT
+ MLAN_OID_11D_DOMAIN_INFO = 0x000D0003,
+#endif
+ MLAN_OID_11D_DOMAIN_INFO_EXT = 0x000D0004,
+
+ /* Register Memory Access Group */
+ MLAN_IOCTL_REG_MEM = 0x000E0000,
+ MLAN_OID_REG_RW = 0x000E0001,
+ MLAN_OID_EEPROM_RD = 0x000E0002,
+ MLAN_OID_MEM_RW = 0x000E0003,
+
+ /* Multi-Radio Configuration Group */
+ MLAN_IOCTL_MFR_CFG = 0x00100000,
+ /* 802.11h Configuration Group */
+ MLAN_IOCTL_11H_CFG = 0x00110000,
+ MLAN_OID_11H_CHANNEL_CHECK = 0x00110001,
+ MLAN_OID_11H_LOCAL_POWER_CONSTRAINT = 0x00110002,
+ MLAN_OID_11H_DFS_TESTING = 0x00110003,
+ MLAN_OID_11H_CHAN_REPORT_REQUEST = 0x00110004,
+ MLAN_OID_11H_CHAN_SWITCH_COUNT = 0x00110005,
+ MLAN_OID_11H_CHAN_NOP_INFO = 0x00110006,
+ MLAN_OID_11H_DFS_W53_CFG = 0x00110008,
+
+ /* 802.11n Configuration Group RANDYTODO for value assign */
+ MLAN_IOCTL_11AC_CFG = 0x00120000,
+ MLAN_OID_11AC_VHT_CFG = 0x00120001,
+ MLAN_OID_11AC_CFG_SUPPORTED_MCS_SET = 0x00120002,
+ MLAN_OID_11AC_OPERMODE_CFG = 0x00120003,
+
+ /* 802.11ax Configuration Group */
+ MLAN_IOCTL_11AX_CFG = 0x00170000,
+ MLAN_OID_11AX_HE_CFG = 0x00170001,
+ MLAN_OID_11AX_CMD_CFG = 0x00170002,
+ MLAN_OID_11AX_TWT_CFG = 0x00170003,
+
+ /* Miscellaneous Configuration Group */
+ MLAN_IOCTL_MISC_CFG = 0x00200000,
+ MLAN_OID_MISC_GEN_IE = 0x00200001,
+ MLAN_OID_MISC_REGION = 0x00200002,
+ MLAN_OID_MISC_WARM_RESET = 0x00200003,
+#ifdef SDIO
+ MLAN_OID_MISC_SDIO_MPA_CTRL = 0x00200006,
+#endif
+ MLAN_OID_MISC_HOST_CMD = 0x00200007,
+ MLAN_OID_MISC_SYS_CLOCK = 0x00200009,
+ MLAN_OID_MISC_SOFT_RESET = 0x0020000A,
+ MLAN_OID_MISC_WWS = 0x0020000B,
+ MLAN_OID_MISC_ASSOC_RSP = 0x0020000C,
+ MLAN_OID_MISC_INIT_SHUTDOWN = 0x0020000D,
+ MLAN_OID_MISC_CUSTOM_IE = 0x0020000F,
+ MLAN_OID_MISC_TX_DATAPAUSE = 0x00200012,
+ MLAN_OID_MISC_IP_ADDR = 0x00200013,
+ MLAN_OID_MISC_MAC_CONTROL = 0x00200014,
+ MLAN_OID_MISC_MEF_CFG = 0x00200015,
+ MLAN_OID_MISC_CFP_CODE = 0x00200016,
+ MLAN_OID_MISC_COUNTRY_CODE = 0x00200017,
+ MLAN_OID_MISC_THERMAL = 0x00200018,
+ MLAN_OID_MISC_RX_MGMT_IND = 0x00200019,
+ MLAN_OID_MISC_SUBSCRIBE_EVENT = 0x0020001A,
+#ifdef DEBUG_LEVEL1
+ MLAN_OID_MISC_DRVDBG = 0x0020001B,
+#endif
+ MLAN_OID_MISC_HOTSPOT_CFG = 0x0020001C,
+ MLAN_OID_MISC_OTP_USER_DATA = 0x0020001D,
+#ifdef USB
+ MLAN_OID_MISC_USB_AGGR_CTRL = 0x0020001F,
+#endif
+ MLAN_OID_MISC_TXCONTROL = 0x00200020,
+#ifdef STA_SUPPORT
+ MLAN_OID_MISC_EXT_CAP_CFG = 0x00200021,
+#endif
+#if defined(STA_SUPPORT)
+ MLAN_OID_MISC_PMFCFG = 0x00200022,
+#endif
+#ifdef WIFI_DIRECT_SUPPORT
+ MLAN_OID_MISC_WIFI_DIRECT_CONFIG = 0x00200025,
+#endif
+ MLAN_OID_MISC_LOW_PWR_MODE = 0x00200029,
+ MLAN_OID_MISC_MEF_FLT_CFG = 0x0020002A,
+ MLAN_OID_MISC_DFS_REAPTER_MODE = 0x0020002B,
+#ifdef RX_PACKET_COALESCE
+ MLAN_OID_MISC_RX_PACKET_COALESCE = 0x0020002C,
+#endif
+ MLAN_OID_MISC_COALESCE_CFG = 0x0020002E,
+ MLAN_OID_MISC_GET_SENSOR_TEMP = 0x00200030,
+ MLAN_OID_MISC_GTK_REKEY_OFFLOAD = 0x00200037,
+ MLAN_OID_MISC_OPER_CLASS = 0x00200038,
+ MLAN_OID_MISC_PMIC_CFG = 0x00200039,
+ MLAN_OID_MISC_IND_RST_CFG = 0x00200040,
+ MLAN_OID_MISC_GET_TSF = 0x00200045,
+ MLAN_OID_MISC_GET_CHAN_REGION_CFG = 0x00200046,
+ MLAN_OID_MISC_CLOUD_KEEP_ALIVE = 0x00200048,
+ MLAN_OID_MISC_OPER_CLASS_CHECK = 0x00200049,
+
+ MLAN_OID_MISC_CWMODE_CTRL = 0x00200051,
+ MLAN_OID_MISC_AGGR_CTRL = 0x00200052,
+ MLAN_OID_MISC_DYN_BW = 0x00200053,
+ MLAN_OID_MISC_FW_DUMP_EVENT = 0x00200054,
+ MLAN_OID_MISC_PER_PKT_CFG = 0x00200055,
+
+ MLAN_OID_MISC_ROBUSTCOEX = 0x00200056,
+ MLAN_OID_MISC_GET_TX_RX_HISTOGRAM = 0x00200057,
+ MLAN_OID_MISC_CFP_INFO = 0x00200060,
+ MLAN_OID_MISC_BOOT_SLEEP = 0x00200061,
+#if defined(PCIE)
+ MLAN_OID_MISC_SSU = 0x00200062,
+#endif
+ MLAN_OID_MISC_DMCS_CONFIG = 0x00200065,
+ MLAN_OID_MISC_RX_ABORT_CFG = 0x00200066,
+ MLAN_OID_MISC_RX_ABORT_CFG_EXT = 0x00200067,
+ MLAN_OID_MISC_TX_AMPDU_PROT_MODE = 0x00200068,
+ MLAN_OID_MISC_RATE_ADAPT_CFG = 0x00200069,
+ MLAN_OID_MISC_CCK_DESENSE_CFG = 0x00200070,
+ MLAN_OID_MISC_GET_CHAN_TRPC_CFG = 0x00200072,
+ MLAN_OID_MISC_BAND_STEERING = 0x00200073,
+ MLAN_OID_MISC_GET_REGIONPWR_CFG = 0x00200074,
+ MLAN_OID_MISC_RF_TEST_GENERIC = 0x00200075,
+ MLAN_OID_MISC_RF_TEST_TX_CONT = 0x00200076,
+ MLAN_OID_MISC_RF_TEST_TX_FRAME = 0x00200077,
+ MLAN_OID_MISC_ARB_CONFIG = 0x00200078,
+ MLAN_OID_MISC_BEACON_STUCK = 0x00200079,
+ MLAN_OID_MISC_CFP_TABLE = 0x0020007A,
+ MLAN_OID_MISC_RANGE_EXT = 0x0020007B,
+ MLAN_OID_MISC_DOT11MC_UNASSOC_FTM_CFG = 0x0020007C,
+ MLAN_OID_MISC_TP_STATE = 0x0020007D,
+};
+
+/** Sub command size */
+#define MLAN_SUB_COMMAND_SIZE 4
+
+/** Enumeration for the action of IOCTL request */
+enum _mlan_act_ioctl {
+ MLAN_ACT_SET = 1,
+ MLAN_ACT_GET,
+ MLAN_ACT_CANCEL,
+ MLAN_ACT_CLEAR,
+ MLAN_ACT_RESET,
+ MLAN_ACT_DEFAULT
+};
+
+/** Enumeration for generic enable/disable */
+enum _mlan_act_generic { MLAN_ACT_DISABLE = 0, MLAN_ACT_ENABLE = 1 };
+
+/** Enumeration for scan mode */
+enum _mlan_scan_mode {
+ MLAN_SCAN_MODE_UNCHANGED = 0,
+ MLAN_SCAN_MODE_BSS,
+ MLAN_SCAN_MODE_IBSS,
+ MLAN_SCAN_MODE_ANY
+};
+
+/** Enumeration for scan type */
+enum _mlan_scan_type {
+ MLAN_SCAN_TYPE_UNCHANGED = 0,
+ MLAN_SCAN_TYPE_ACTIVE,
+ MLAN_SCAN_TYPE_PASSIVE,
+ MLAN_SCAN_TYPE_PASSIVE_TO_ACTIVE
+};
+
+/** Enumeration for passive to active scan */
+enum _mlan_pass_to_act_scan {
+ MLAN_PASS_TO_ACT_SCAN_UNCHANGED = 0,
+ MLAN_PASS_TO_ACT_SCAN_EN,
+ MLAN_PASS_TO_ACT_SCAN_DIS
+};
+
+/** Max number of supported rates */
+#define MLAN_SUPPORTED_RATES 32
+
+/** Mrvl Proprietary Tlv base */
+#define PROPRIETARY_TLV_BASE_ID 0x100
+
+/** RSSI scan */
+#define SCAN_RSSI(RSSI) (0x100 - ((t_u8)(RSSI)))
+
+/** Max passive scan time for each channel in milliseconds */
+#define MRVDRV_MAX_PASSIVE_SCAN_CHAN_TIME 2000
+
+/** Max active scan time for each channel in milliseconds */
+#define MRVDRV_MAX_ACTIVE_SCAN_CHAN_TIME 500
+/** Max gap time between 2 scan in milliseconds */
+#define MRVDRV_MAX_SCAN_CHAN_GAP_TIME 500
+
+/** Maximum number of probes to send on each channel */
+#define MAX_PROBES 5
+
+/** Default number of probes to send on each channel */
+#define DEFAULT_PROBES 4
+
+/**
+ * @brief Sub-structure passed in wlan_ioctl_get_scan_table_entry for each BSS
+ *
+ * Fixed field information returned for the scan response in the IOCTL
+ * response.
+ */
+typedef struct _wlan_get_scan_table_fixed {
+ /** BSSID of this network */
+ t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
+ /** Channel this beacon/probe response was detected */
+ t_u8 channel;
+ /** RSSI for the received packet */
+ t_u8 rssi;
+ /** channel load */
+ t_u8 chan_load;
+ /** TSF value in microseconds from the firmware at packet reception */
+ t_u64 network_tsf;
+} wlan_get_scan_table_fixed;
+
+/** mlan_802_11_ssid data structure */
+typedef struct _mlan_802_11_ssid {
+ /** SSID Length */
+ t_u32 ssid_len;
+ /** SSID information field */
+ t_u8 ssid[MLAN_MAX_SSID_LENGTH];
+} mlan_802_11_ssid, *pmlan_802_11_ssid;
+
+typedef MLAN_PACK_START struct _tx_status_event {
+ /** packet type */
+ t_u8 packet_type;
+ /** tx_token_id */
+ t_u8 tx_token_id;
+ /** 0--success, 1--fail, 2--watchdogtimeout */
+ t_u8 status;
+} MLAN_PACK_END tx_status_event;
+
+/**
+ * Sructure to retrieve the scan table
+ */
+typedef struct {
+ /**
+ * - Zero based scan entry to start retrieval in command request
+ * - Number of scans entries returned in command response
+ */
+ t_u32 scan_number;
+ /**
+ * Buffer marker for multiple wlan_ioctl_get_scan_table_entry
+ * structures. Each struct is padded to the nearest 32 bit boundary.
+ */
+ t_u8 scan_table_entry_buf[1];
+} wlan_ioctl_get_scan_table_info;
+
+/**
+ * Structure passed in the wlan_ioctl_get_scan_table_info for each
+ * BSS returned in the WLAN_GET_SCAN_RESP IOCTL
+ */
+typedef struct _wlan_ioctl_get_scan_table_entry {
+ /**
+ * Fixed field length included in the response.
+ *
+ * Length value is included so future fixed fields can be added to the
+ * response without breaking backwards compatibility. Use the length
+ * to find the offset for the bssInfoLength field, not a sizeof()
+ * calc.
+ */
+ t_u32 fixed_field_length;
+
+ /**
+ * Length of the BSS Information (probe resp or beacon) that
+ * follows after the fixed_field_length
+ */
+ t_u32 bss_info_length;
+
+ /**
+ * Always present, fixed length data fields for the BSS
+ */
+ wlan_get_scan_table_fixed fixed_fields;
+
+ /*
+ * Probe response or beacon scanned for the BSS.
+ *
+ * Field layout:
+ * - TSF 8 octets
+ * - Beacon Interval 2 octets
+ * - Capability Info 2 octets
+ *
+ * - IEEE Infomation Elements; variable number & length per 802.11 spec
+ */
+ /* t_u8 bss_info_buffer[]; */
+} wlan_ioctl_get_scan_table_entry;
+
+/** Type definition of mlan_scan_time_params */
+typedef struct _mlan_scan_time_params {
+ /** Scan channel time for specific scan in milliseconds */
+ t_u32 specific_scan_time;
+ /** Scan channel time for active scan in milliseconds */
+ t_u32 active_scan_time;
+ /** Scan channel time for passive scan in milliseconds */
+ t_u32 passive_scan_time;
+} mlan_scan_time_params, *pmlan_scan_time_params;
+
+/** Type definition of mlan_user_scan */
+typedef struct _mlan_user_scan {
+ /** Length of scan_cfg_buf */
+ t_u32 scan_cfg_len;
+ /** Buffer of scan config */
+ t_u8 scan_cfg_buf[1];
+} mlan_user_scan, *pmlan_user_scan;
+
+/** Type definition of mlan_scan_req */
+typedef struct _mlan_scan_req {
+ /** BSS mode for scanning */
+ t_u32 scan_mode;
+ /** Scan type */
+ t_u32 scan_type;
+ /** SSID */
+ mlan_802_11_ssid scan_ssid;
+ /** Scan time parameters */
+ mlan_scan_time_params scan_time;
+ /** Scan config parameters in user scan */
+ mlan_user_scan user_scan;
+} mlan_scan_req, *pmlan_scan_req;
+
+/** Type defnition of mlan_scan_resp */
+typedef struct _mlan_scan_resp {
+ /** Number of scan result */
+ t_u32 num_in_scan_table;
+ /** Scan table */
+ t_u8 *pscan_table;
+ /* Age in seconds */
+ t_u32 age_in_secs;
+ /** channel statstics */
+ t_u8 *pchan_stats;
+ /** Number of records in the chan_stats */
+ t_u32 num_in_chan_stats;
+} mlan_scan_resp, *pmlan_scan_resp;
+
+#define EXT_SCAN_TYPE_ENH 2
+/** Type definition of mlan_scan_cfg */
+typedef struct _mlan_scan_cfg {
+ /** Scan type */
+ t_u32 scan_type;
+ /** BSS mode for scanning */
+ t_u32 scan_mode;
+ /** Scan probe */
+ t_u32 scan_probe;
+ /** Scan time parameters */
+ mlan_scan_time_params scan_time;
+ /** First passive scan then active scan */
+ t_u8 passive_to_active_scan;
+ /** Ext_scan: 0 disable, 1: enable, 2: enhance scan*/
+ t_u32 ext_scan;
+ /** scan channel gap */
+ t_u32 scan_chan_gap;
+} mlan_scan_cfg, *pmlan_scan_cfg;
+
+/** Type defnition of mlan_ds_scan for MLAN_IOCTL_SCAN */
+typedef struct _mlan_ds_scan {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Scan request/response */
+ union {
+ /** Scan request */
+ mlan_scan_req scan_req;
+ /** Scan response */
+ mlan_scan_resp scan_resp;
+ /** Scan config parameters in user scan */
+ mlan_user_scan user_scan;
+ /** Scan config parameters */
+ mlan_scan_cfg scan_cfg;
+ } param;
+} mlan_ds_scan, *pmlan_ds_scan;
+
+/*-----------------------------------------------------------------*/
+/** BSS Configuration Group */
+/*-----------------------------------------------------------------*/
+/** Enumeration for BSS mode */
+enum _mlan_bss_mode {
+ MLAN_BSS_MODE_INFRA = 1,
+ MLAN_BSS_MODE_IBSS,
+ MLAN_BSS_MODE_AUTO
+};
+
+/** Maximum key length */
+#define MLAN_MAX_KEY_LENGTH 32
+
+/** Maximum atim window in milliseconds */
+#define MLAN_MAX_ATIM_WINDOW 50
+
+/** Minimum beacon interval */
+#define MLAN_MIN_BEACON_INTERVAL 20
+/** Maximum beacon interval */
+#define MLAN_MAX_BEACON_INTERVAL 1000
+/** Default beacon interval */
+#define MLAN_BEACON_INTERVAL 100
+
+/** Receive all packets */
+#define MLAN_PROMISC_MODE 1
+/** Receive multicast packets in multicast list */
+#define MLAN_MULTICAST_MODE 2
+/** Receive all multicast packets */
+#define MLAN_ALL_MULTI_MODE 4
+
+/** Maximum size of multicast list */
+#define MLAN_MAX_MULTICAST_LIST_SIZE 32
+
+/** mlan_multicast_list data structure for MLAN_OID_BSS_MULTICAST_LIST */
+typedef struct _mlan_multicast_list {
+ /** Multicast mode */
+ t_u32 mode;
+ /** Number of multicast addresses in the list */
+ t_u32 num_multicast_addr;
+ /** Multicast address list */
+ mlan_802_11_mac_addr mac_list[MLAN_MAX_MULTICAST_LIST_SIZE];
+} mlan_multicast_list, *pmlan_multicast_list;
+
+/** Max channel */
+#define MLAN_MAX_CHANNEL 165
+/** Maximum number of channels in table */
+#define MLAN_MAX_CHANNEL_NUM 128
+
+/** Channel/frequence for MLAN_OID_BSS_CHANNEL */
+typedef struct _chan_freq {
+ /** Channel Number */
+ t_u32 channel;
+ /** Frequency of this Channel */
+ t_u32 freq;
+} chan_freq;
+
+/** mlan_chan_list data structure for MLAN_OID_BSS_CHANNEL_LIST */
+typedef struct _mlan_chan_list {
+ /** Number of channel */
+ t_u32 num_of_chan;
+ /** Channel-Frequency table */
+ chan_freq cf[MLAN_MAX_CHANNEL_NUM];
+} mlan_chan_list;
+
+/* This channel is disabled.*/
+#define CHAN_FLAGS_DISABLED MBIT(0)
+/* do not initiate radiation, this includes sending probe requests or beaconing
+ */
+#define CHAN_FLAGS_NO_IR MBIT(1)
+/* Radar detection is required on this channel */
+#define CHAN_FLAGS_RADAR MBIT(3)
+/* extension channel above this channel is not permitted */
+#define CHAN_FLAGS_NO_HT40PLUS MBIT(4)
+/* extension channel below this channel is not permitted */
+#define CHAN_FLAGS_NO_HT40MINUS MBIT(5)
+/* OFDM is not allowed on this channel */
+#define CHAN_FLAGS_NO_OFDM MBIT(6)
+/** 80Mhz can not used on this channel */
+#define CHAN_FLAGS_NO_80MHZ MBIT(7)
+/** 180Mhz can not used on this channel */
+#define CHAN_FLAGS_NO_160MHZ MBIT(8)
+/* Only indoor use is permitted on this channel */
+#define CHAN_FLAGS_INDOOR_ONLY MBIT(9)
+/* IR operation is allowed on this channel if it's
+ * connected concurrently to a BSS on the same channel on
+ * the 2 GHz band or to a channel in the same UNII band (on the 5 GHz
+ * band), and IEEE80211_CHAN_RADAR is not set */
+#define CHAN_FLAGS_IR_CONCURRENT MBIT(10)
+/* 20 MHz operation is not allowed on this channel */
+#define CHAN_FLAGS_20MHZ MBIT(11)
+/* 10 MHz operation is not allowed on this channel */
+#define CHAN_FLAGS_NO_10MHZ MBIT(12)
+/** This channel's flag is valid */
+#define CHAN_FLAGS_MAX MBIT(31)
+
+/** Maximum response buffer length */
+#define ASSOC_RSP_BUF_SIZE 500
+
+/** Type definition of mlan_ds_misc_assoc_rsp for MLAN_OID_MISC_ASSOC_RSP */
+typedef struct _mlan_ds_misc_assoc_rsp {
+ /** Associate response buffer */
+ t_u8 assoc_resp_buf[ASSOC_RSP_BUF_SIZE];
+ /** Response buffer length */
+ t_u32 assoc_resp_len;
+} mlan_ds_misc_assoc_rsp, *pmlan_ds_misc_assoc_rsp;
+
+/** mlan_ssid_bssid data structure for
+ * MLAN_OID_BSS_START and MLAN_OID_BSS_FIND_BSS
+ */
+typedef struct _mlan_ssid_bssid {
+ /** SSID */
+ mlan_802_11_ssid ssid;
+ /** BSSID */
+ mlan_802_11_mac_addr bssid;
+ /** index in BSSID list, start from 1 */
+ t_u32 idx;
+ /** Receive signal strength in dBm */
+ t_s32 rssi;
+ /**channel*/
+ t_u16 channel;
+ /**mobility domain value*/
+ t_u16 ft_md;
+ /**ft capability*/
+ t_u8 ft_cap;
+ /**band*/
+ t_u16 bss_band;
+ /** channel flag */
+ t_u32 channel_flags;
+ /** host mlme flag*/
+ t_u8 host_mlme;
+ /** assoicate resp frame/ie from firmware */
+ mlan_ds_misc_assoc_rsp assoc_rsp;
+} mlan_ssid_bssid, *pmlan_ssid_bssid;
+
+/** Data structure of WMM ECW */
+typedef struct _wmm_ecw_t {
+#ifdef BIG_ENDIAN_SUPPORT
+ /** Maximum Ecw */
+ t_u8 ecw_max : 4;
+ /** Minimum Ecw */
+ t_u8 ecw_min : 4;
+#else
+ /** Minimum Ecw */
+ t_u8 ecw_min : 4;
+ /** Maximum Ecw */
+ t_u8 ecw_max : 4;
+#endif /* BIG_ENDIAN_SUPPORT */
+} wmm_ecw_t, *pwmm_ecw_t;
+
+/** Data structure of WMM Aci/Aifsn */
+typedef struct _wmm_aci_aifsn_t {
+#ifdef BIG_ENDIAN_SUPPORT
+ /** Reserved */
+ t_u8 reserved : 1;
+ /** Aci */
+ t_u8 aci : 2;
+ /** Acm */
+ t_u8 acm : 1;
+ /** Aifsn */
+ t_u8 aifsn : 4;
+#else
+ /** Aifsn */
+ t_u8 aifsn : 4;
+ /** Acm */
+ t_u8 acm : 1;
+ /** Aci */
+ t_u8 aci : 2;
+ /** Reserved */
+ t_u8 reserved : 1;
+#endif /* BIG_ENDIAN_SUPPORT */
+} wmm_aci_aifsn_t, *pwmm_aci_aifsn_t;
+
+/** Data structure of WMM AC parameters */
+typedef struct _wmm_ac_parameters_t {
+ wmm_aci_aifsn_t aci_aifsn; /**< AciAifSn */
+ wmm_ecw_t ecw; /**< Ecw */
+ t_u16 tx_op_limit; /**< Tx op limit */
+} wmm_ac_parameters_t, *pwmm_ac_parameters_t;
+
+/** mlan_deauth_param */
+typedef struct _mlan_deauth_param {
+ /** STA mac addr */
+ t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH];
+ /** deauth reason */
+ t_u16 reason_code;
+} mlan_deauth_param;
+
+#ifdef UAP_SUPPORT
+/** UAP FLAG: Host based */
+#define UAP_FLAG_HOST_BASED MBIT(0)
+/** UAP FLAG: Host mlme */
+#define UAP_FLAG_HOST_MLME MBIT(1)
+
+/** Maximum packet forward control value */
+#define MAX_PKT_FWD_CTRL 15
+/** Maximum BEACON period */
+#define MAX_BEACON_PERIOD 4000
+/** Minimum BEACON period */
+#define MIN_BEACON_PERIOD 50
+/** Maximum DTIM period */
+#define MAX_DTIM_PERIOD 100
+/** Minimum DTIM period */
+#define MIN_DTIM_PERIOD 1
+/** Maximum TX Power Limit */
+#define MAX_TX_POWER 20
+/** Minimum TX Power Limit */
+#define MIN_TX_POWER 0
+/** MAX station count */
+#define MAX_STA_COUNT 64
+/** Maximum RTS threshold */
+#define MAX_RTS_THRESHOLD 2347
+/** Maximum fragmentation threshold */
+#define MAX_FRAG_THRESHOLD 2346
+/** Minimum fragmentation threshold */
+#define MIN_FRAG_THRESHOLD 256
+/** data rate 54 M */
+#define DATA_RATE_54M 108
+/** Maximum value of bcast_ssid_ctl */
+#define MAX_BCAST_SSID_CTL 2
+/** antenna A */
+#define ANTENNA_MODE_A 0
+/** antenna B */
+#define ANTENNA_MODE_B 1
+/** transmit antenna */
+#define TX_ANTENNA 1
+/** receive antenna */
+#define RX_ANTENNA 0
+/** Maximum stage out time */
+#define MAX_STAGE_OUT_TIME 864000
+/** Minimum stage out time */
+#define MIN_STAGE_OUT_TIME 50
+/** Maximum Retry Limit */
+#define MAX_RETRY_LIMIT 14
+
+/** Maximum group key timer in seconds */
+#define MAX_GRP_TIMER 86400
+
+/** Maximum value of 4 byte configuration */
+#define MAX_VALID_DWORD 0x7FFFFFFF /* (1 << 31) - 1 */
+
+/** default UAP BAND 2.4G */
+#define DEFAULT_UAP_BAND 0
+/** default UAP channel 6 */
+#define DEFAULT_UAP_CHANNEL 6
+
+/** Maximum data rates */
+#define MAX_DATA_RATES 14
+
+/** auto data rate */
+#define DATA_RATE_AUTO 0
+
+/**filter mode: disable */
+#define MAC_FILTER_MODE_DISABLE 0
+/**filter mode: block mac address */
+#define MAC_FILTER_MODE_ALLOW_MAC 1
+/**filter mode: block mac address */
+#define MAC_FILTER_MODE_BLOCK_MAC 2
+/** Maximum mac filter num */
+#define MAX_MAC_FILTER_NUM 64
+
+/* Bitmap for protocol to use */
+/** No security */
+#define PROTOCOL_NO_SECURITY 0x01
+/** Static WEP */
+#define PROTOCOL_STATIC_WEP 0x02
+/** WPA */
+#define PROTOCOL_WPA 0x08
+/** WPA2 */
+#define PROTOCOL_WPA2 0x20
+/** WP2 Mixed */
+#define PROTOCOL_WPA2_MIXED 0x28
+/** EAP */
+#define PROTOCOL_EAP 0x40
+/** WAPI */
+#define PROTOCOL_WAPI 0x80
+/** WPA3 SAE */
+#define PROTOCOL_WPA3_SAE 0x100
+
+/** Key_mgmt_psk */
+#define KEY_MGMT_NONE 0x04
+/** Key_mgmt_none */
+#define KEY_MGMT_PSK 0x02
+/** Key_mgmt_eap */
+#define KEY_MGMT_EAP 0x01
+/** Key_mgmt_psk_sha256 */
+#define KEY_MGMT_PSK_SHA256 0x100
+/** Key_mgmt_sae */
+#define KEY_MGMT_SAE 0x400
+/** Key_mgmt_owe */
+#define KEY_MGMT_OWE 0x200
+
+/** TKIP */
+#define CIPHER_TKIP 0x04
+/** AES CCMP */
+#define CIPHER_AES_CCMP 0x08
+
+/** Valid cipher bitmap */
+#define VALID_CIPHER_BITMAP 0x0c
+
+/** Packet forwarding to be done by FW or host */
+#define PKT_FWD_FW_BIT 0x01
+/** Intra-BSS broadcast packet forwarding allow bit */
+#define PKT_FWD_INTRA_BCAST 0x02
+/** Intra-BSS unicast packet forwarding allow bit */
+#define PKT_FWD_INTRA_UCAST 0x04
+/** Inter-BSS unicast packet forwarding allow bit */
+#define PKT_FWD_INTER_UCAST 0x08
+/** Intra-BSS unicast packet */
+#define PKT_INTRA_UCAST 0x01
+/** Inter-BSS unicast packet */
+#define PKT_INTER_UCAST 0x02
+/** Enable Host PKT forwarding */
+#define PKT_FWD_ENABLE_BIT 0x01
+
+/** Channel List Entry */
+typedef struct _channel_list {
+ /** Channel Number */
+ t_u8 chan_number;
+ /** Band Config */
+ Band_Config_t bandcfg;
+} scan_chan_list;
+
+/** mac_filter data structure */
+typedef struct _mac_filter {
+ /** mac filter mode */
+ t_u16 filter_mode;
+ /** mac adress count */
+ t_u16 mac_count;
+ /** mac address list */
+ mlan_802_11_mac_addr mac_list[MAX_MAC_FILTER_NUM];
+} mac_filter;
+
+/** wpa parameter */
+typedef struct _wpa_param {
+ /** Pairwise cipher WPA */
+ t_u8 pairwise_cipher_wpa;
+ /** Pairwise cipher WPA2 */
+ t_u8 pairwise_cipher_wpa2;
+ /** group cipher */
+ t_u8 group_cipher;
+ /** RSN replay protection */
+ t_u8 rsn_protection;
+ /** passphrase length */
+ t_u32 length;
+ /** passphrase */
+ t_u8 passphrase[64];
+ /**group key rekey time in seconds */
+ t_u32 gk_rekey_time;
+} wpa_param;
+
+/** wep key */
+typedef struct _wep_key {
+ /** key index 0-3 */
+ t_u8 key_index;
+ /** is default */
+ t_u8 is_default;
+ /** length */
+ t_u16 length;
+ /** key data */
+ t_u8 key[26];
+} wep_key;
+
+/** wep param */
+typedef struct _wep_param {
+ /** key 0 */
+ wep_key key0;
+ /** key 1 */
+ wep_key key1;
+ /** key 2 */
+ wep_key key2;
+ /** key 3 */
+ wep_key key3;
+} wep_param;
+
+/** Data structure of WMM QoS information */
+typedef struct _wmm_qos_info_t {
+#ifdef BIG_ENDIAN_SUPPORT
+ /** QoS UAPSD */
+ t_u8 qos_uapsd : 1;
+ /** Reserved */
+ t_u8 reserved : 3;
+ /** Parameter set count */
+ t_u8 para_set_count : 4;
+#else
+ /** Parameter set count */
+ t_u8 para_set_count : 4;
+ /** Reserved */
+ t_u8 reserved : 3;
+ /** QoS UAPSD */
+ t_u8 qos_uapsd : 1;
+#endif /* BIG_ENDIAN_SUPPORT */
+} wmm_qos_info_t, *pwmm_qos_info_t;
+
+/** Data structure of WMM parameter IE */
+typedef struct _wmm_parameter_t {
+ /** OuiType: 00:50:f2:02 */
+ t_u8 ouitype[4];
+ /** Oui subtype: 01 */
+ t_u8 ouisubtype;
+ /** version: 01 */
+ t_u8 version;
+ /** QoS information */
+ t_u8 qos_info;
+ /** Reserved */
+ t_u8 reserved;
+ /** AC Parameters Record WMM_AC_BE, WMM_AC_BK, WMM_AC_VI, WMM_AC_VO */
+ wmm_ac_parameters_t ac_params[MAX_AC_QUEUES];
+} wmm_parameter_t, *pwmm_parameter_t;
+
+/** MAX BG channel */
+#define MAX_BG_CHANNEL 14
+/** mlan_bss_param
+ * Note: For each entry you must enter an invalid value
+ * in the MOAL function woal_set_sys_config_invalid_data().
+ * Otherwise for a valid data an unwanted TLV will be
+ * added to that command.
+ */
+typedef struct _mlan_uap_bss_param {
+ /** AP mac addr */
+ mlan_802_11_mac_addr mac_addr;
+ /** SSID */
+ mlan_802_11_ssid ssid;
+ /** Broadcast ssid control */
+ t_u8 bcast_ssid_ctl;
+ /** Radio control: on/off */
+ t_u8 radio_ctl;
+ /** dtim period */
+ t_u8 dtim_period;
+ /** beacon period */
+ t_u16 beacon_period;
+ /** rates */
+ t_u8 rates[MAX_DATA_RATES];
+ /** Tx data rate */
+ t_u16 tx_data_rate;
+ /** Tx beacon rate */
+ t_u16 tx_beacon_rate;
+ /** multicast/broadcast data rate */
+ t_u16 mcbc_data_rate;
+ /** Tx power level in dBm */
+ t_u8 tx_power_level;
+ /** Tx antenna */
+ t_u8 tx_antenna;
+ /** Rx antenna */
+ t_u8 rx_antenna;
+ /** packet forward control */
+ t_u8 pkt_forward_ctl;
+ /** max station count */
+ t_u16 max_sta_count;
+ /** mac filter */
+ mac_filter filter;
+ /** station ageout timer in unit of 100ms */
+ t_u32 sta_ageout_timer;
+ /** PS station ageout timer in unit of 100ms */
+ t_u32 ps_sta_ageout_timer;
+ /** RTS threshold */
+ t_u16 rts_threshold;
+ /** fragmentation threshold */
+ t_u16 frag_threshold;
+ /** retry_limit */
+ t_u16 retry_limit;
+ /** pairwise update timeout in milliseconds */
+ t_u32 pairwise_update_timeout;
+ /** pairwise handshake retries */
+ t_u32 pwk_retries;
+ /** groupwise update timeout in milliseconds */
+ t_u32 groupwise_update_timeout;
+ /** groupwise handshake retries */
+ t_u32 gwk_retries;
+ /** preamble type */
+ t_u8 preamble_type;
+ /** band cfg */
+ Band_Config_t bandcfg;
+ /** channel */
+ t_u8 channel;
+ /** auth mode */
+ t_u16 auth_mode;
+ /** encryption protocol */
+ t_u16 protocol;
+ /** key managment type */
+ t_u16 key_mgmt;
+ /** wep param */
+ wep_param wep_cfg;
+ /** wpa param */
+ wpa_param wpa_cfg;
+ /** Mgmt IE passthru mask */
+ t_u32 mgmt_ie_passthru_mask;
+ /*
+ * 11n HT Cap HTCap_t ht_cap
+ */
+ /** HT Capabilities Info field */
+ t_u16 ht_cap_info;
+ /** A-MPDU Parameters field */
+ t_u8 ampdu_param;
+ /** Supported MCS Set field */
+ t_u8 supported_mcs_set[16];
+ /** HT Extended Capabilities field */
+ t_u16 ht_ext_cap;
+ /** Transmit Beamforming Capabilities field */
+ t_u32 tx_bf_cap;
+ /** Antenna Selection Capability field */
+ t_u8 asel;
+ /** Enable 2040 Coex */
+ t_u8 enable_2040coex;
+ /** key management operation */
+ t_u16 key_mgmt_operation;
+ /** BSS status */
+ t_u16 bss_status;
+#ifdef WIFI_DIRECT_SUPPORT
+ /* pre shared key */
+ t_u8 psk[MLAN_MAX_KEY_LENGTH];
+#endif /* WIFI_DIRECT_SUPPORT */
+ /** Number of channels in scan_channel_list */
+ t_u32 num_of_chan;
+ /** scan channel list in ACS mode */
+ scan_chan_list chan_list[MLAN_MAX_CHANNEL];
+ /** Wmm parameters */
+ wmm_parameter_t wmm_para;
+
+ /** uap host based config */
+ t_u32 uap_host_based_config;
+} mlan_uap_bss_param, *pmlan_uap_bss_param;
+
+/** mlan_uap_scan_channels */
+typedef struct _mlan_uap_scan_channels {
+ /** flag for remove nop channel*/
+ t_u8 remove_nop_channel;
+ /** num of removed channel */
+ t_u8 num_remvoed_channel;
+ /** Number of channels in scan_channel_list */
+ t_u32 num_of_chan;
+ /** scan channel list in ACS mode */
+ scan_chan_list chan_list[MLAN_MAX_CHANNEL];
+} mlan_uap_scan_channels;
+
+/** mlan_uap_oper_ctrl */
+typedef struct _mlan_uap_oper_ctrl {
+ /** control value
+ * 0: do nothing,
+ * 2: uap stops and restarts automaticaly
+ */
+ t_u16 ctrl_value;
+ /** channel opt
+ * 1: uap restart on default 2.4G/channel 6
+ * 2: uap restart on the band/channel configured by driver previously
+ * 3: uap restart on the band/channel specified by band_cfg and channel
+ */
+ t_u16 chan_opt;
+ /** band cfg 0
+ * 0: 20Mhz 2: 40 Mhz 3: 80Mhz
+ */
+ t_u8 band_cfg;
+ /** channel */
+ t_u8 channel;
+} mlan_uap_oper_ctrl;
+
+/** mlan_uap_acs_scan */
+typedef struct _mlan_uap_acs_scan {
+ /** band */
+ Band_Config_t bandcfg;
+ /** channel */
+ t_u8 chan;
+} mlan_uap_acs_scan;
+
+/** station is authorized (802.1X) */
+#define STA_FLAG_AUTHORIZED MBIT(1)
+/** Station is capable of receiving frames with short barker preamble */
+#define STA_FLAG_SHORT_PREAMBLE MBIT(2)
+/** station is WME/QoS capable */
+#define STA_FLAG_WME MBIT(3)
+/** station uses management frame protection */
+#define STA_FLAG_MFP MBIT(4)
+/** station is authenticated */
+#define STA_FLAG_AUTHENTICATED MBIT(5)
+/** station is a TDLS peer */
+#define STA_FLAG_TDLS_PEER MBIT(6)
+/** station is associated */
+#define STA_FLAG_ASSOCIATED MBIT(7)
+/** mlan_ds_sta_info */
+typedef struct _mlan_ds_sta_info {
+ /** aid */
+ t_u16 aid;
+ /** peer_mac */
+ t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
+ /** Listen Interval */
+ int listen_interval;
+ /** Capability Info */
+ t_u16 cap_info;
+ /** station flag */
+ t_u32 sta_flags;
+ /** tlv len */
+ t_u16 tlv_len;
+ /** tlv start */
+ t_u8 tlv[];
+} mlan_ds_sta_info;
+#endif
+
+#ifdef WIFI_DIRECT_SUPPORT
+/** mode: disable wifi direct */
+#define WIFI_DIRECT_MODE_DISABLE 0
+/** mode: listen */
+#define WIFI_DIRECT_MODE_LISTEN 1
+/** mode: GO */
+#define WIFI_DIRECT_MODE_GO 2
+/** mode: client */
+#define WIFI_DIRECT_MODE_CLIENT 3
+/** mode: find */
+#define WIFI_DIRECT_MODE_FIND 4
+/** mode: stop find */
+#define WIFI_DIRECT_MODE_STOP_FIND 5
+#endif
+
+/** Type definition of mlan_ds_bss for MLAN_IOCTL_BSS */
+typedef struct _mlan_ds_bss {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** BSS parameter */
+ union {
+ /** SSID-BSSID for MLAN_OID_BSS_START */
+ mlan_ssid_bssid ssid_bssid;
+ /** BSSID for MLAN_OID_BSS_STOP */
+ mlan_802_11_mac_addr bssid;
+ /** BSS mode for MLAN_OID_BSS_MODE */
+ t_u32 bss_mode;
+ /** BSS channel/frequency for MLAN_OID_BSS_CHANNEL */
+ chan_freq bss_chan;
+ /** BSS channel list for MLAN_OID_BSS_CHANNEL_LIST */
+ mlan_chan_list chanlist;
+ /** MAC address for MLAN_OID_BSS_MAC_ADDR */
+ mlan_802_11_mac_addr mac_addr;
+ /** Multicast list for MLAN_OID_BSS_MULTICAST_LIST */
+ mlan_multicast_list multicast_list;
+ /** Beacon interval for MLAN_OID_IBSS_BCN_INTERVAL */
+ t_u32 bcn_interval;
+ /** ATIM window for MLAN_OID_IBSS_ATIM_WINDOW */
+ t_u32 atim_window;
+ /** deauth param for MLAN_OID_BSS_STOP & MLAN_OID_UAP_DEAUTH_STA
+ */
+ mlan_deauth_param deauth_param;
+#ifdef UAP_SUPPORT
+ /** host based flag for MLAN_OID_BSS_START */
+ t_u8 host_based;
+ /** BSS param for AP mode for MLAN_OID_UAP_BSS_CONFIG */
+ mlan_uap_bss_param bss_config;
+ /** AP Wmm parameters for MLAN_OID_UAP_CFG_WMM_PARAM */
+ wmm_parameter_t ap_wmm_para;
+ /** ap scan channels for MLAN_OID_UAP_SCAN_CHANNELS*/
+ mlan_uap_scan_channels ap_scan_channels;
+ /** ap channel for MLAN_OID_UAP_CHANNEL*/
+ chan_band_info ap_channel;
+ /** ap operation control for MLAN_OID_UAP_OPER_CTRL*/
+ mlan_uap_oper_ctrl ap_oper_ctrl;
+ /** AP acs scan MLAN_OID_UAP_ACS_SCAN */
+ mlan_uap_acs_scan ap_acs_scan;
+#endif
+#if defined(STA_SUPPORT) && defined(UAP_SUPPORT)
+ /** BSS role for MLAN_OID_BSS_ROLE */
+ t_u8 bss_role;
+#endif
+#ifdef WIFI_DIRECT_SUPPORT
+ /** wifi direct mode for MLAN_OID_WIFI_DIRECT_MODE */
+ t_u16 wfd_mode;
+#endif
+#ifdef STA_SUPPORT
+ /** Listen interval for MLAN_OID_BSS_LISTEN_INTERVAL */
+ t_u16 listen_interval;
+ /** STA channel info for MLAN_OID_BSS_CHAN_INFO */
+ chan_band_info sta_channel;
+#endif
+#ifdef UAP_SUPPORT
+ /** STA info for MLAN_OID_UAP_ADD_STATION */
+ mlan_ds_sta_info sta_info;
+#endif
+ } param;
+} mlan_ds_bss, *pmlan_ds_bss;
+
+/* OTP Region info */
+typedef MLAN_PACK_START struct _otp_region_info {
+ t_u8 country_code[2];
+ t_u8 region_code;
+ t_u8 environment;
+ t_u16 force_reg : 1;
+ t_u16 reserved : 15;
+} MLAN_PACK_END otp_region_info_t;
+
+/** Type definition of mlan_ds_custom_reg_domain */
+typedef struct _mlan_ds_custom_reg_domain {
+ otp_region_info_t region;
+ /** num of 2g channels in custom_reg_domain */
+ t_u8 num_bg_chan;
+ /** num of 5g channels in custom_reg_domain */
+ t_u8 num_a_chan;
+ /** cfp table */
+ chan_freq_power_t cfp_tbl[];
+} mlan_ds_custom_reg_domain;
+/*-----------------------------------------------------------------*/
+/** Radio Control Group */
+/*-----------------------------------------------------------------*/
+/** Enumeration for band */
+enum _mlan_band_def {
+ BAND_B = 1,
+ BAND_G = 2,
+ BAND_A = 4,
+ BAND_GN = 8,
+ BAND_AN = 16,
+ BAND_GAC = 32,
+ BAND_AAC = 64,
+ BAND_GAX = 256,
+ BAND_AAX = 512,
+
+};
+
+/** Channel bandwidth */
+#define CHANNEL_BW_20MHZ 0
+#define CHANNEL_BW_40MHZ_ABOVE 1
+#define CHANNEL_BW_40MHZ_BELOW 3
+/** secondary channel is 80Mhz bandwidth for 11ac */
+#define CHANNEL_BW_80MHZ 4
+#define CHANNEL_BW_160MHZ 5
+
+/** RF antenna selection */
+#define RF_ANTENNA_MASK(n) ((1 << (n)) - 1)
+/** RF antenna auto select */
+#define RF_ANTENNA_AUTO 0xFFFF
+
+/** Type definition of mlan_ds_band_cfg for MLAN_OID_BAND_CFG */
+typedef struct _mlan_ds_band_cfg {
+ /** Infra band */
+ t_u32 config_bands;
+ /** Ad-hoc start band */
+ t_u32 adhoc_start_band;
+ /** Ad-hoc start channel */
+ t_u32 adhoc_channel;
+ /** fw supported band */
+ t_u32 fw_bands;
+} mlan_ds_band_cfg;
+
+/** Type definition of mlan_ds_ant_cfg for MLAN_OID_ANT_CFG */
+typedef struct _mlan_ds_ant_cfg {
+ /** Tx antenna mode */
+ t_u32 tx_antenna;
+ /** Rx antenna mode */
+ t_u32 rx_antenna;
+} mlan_ds_ant_cfg, *pmlan_ds_ant_cfg;
+/** Type definition of mlan_ds_mimo_switch for MLAN_OID_MIMO_SWITCH */
+typedef struct _mlan_ds_mimo_switch {
+ /** Tx antenna mode */
+ t_u8 txpath_antmode;
+ /** Rx antenna mode */
+ t_u8 rxpath_antmode;
+} mlan_ds_mimo_switch, *pmlan_ds_mimo_switch;
+/** Type definition of mlan_ds_ant_cfg_1x1 for MLAN_OID_ANT_CFG */
+typedef struct _mlan_ds_ant_cfg_1x1 {
+ /** Antenna mode */
+ t_u32 antenna;
+ /** Evaluate time */
+ t_u16 evaluate_time;
+ /** Current antenna */
+ t_u16 current_antenna;
+} mlan_ds_ant_cfg_1x1, *pmlan_ds_ant_cfg_1x1;
+
+/** Type definition of mlan_ds_remain_chan for MLAN_OID_REMAIN_CHAN_CFG */
+typedef struct _mlan_ds_remain_chan {
+ /** remove flag */
+ t_u16 remove;
+ /** status */
+ t_u8 status;
+ /** Band cfg */
+ Band_Config_t bandcfg;
+ /** channel */
+ t_u8 channel;
+ /** remain time: Unit ms*/
+ t_u32 remain_period;
+} mlan_ds_remain_chan, *pmlan_ds_remain_chan;
+
+/** Type definition of mlan_ds_radio_cfg for MLAN_IOCTL_RADIO_CFG */
+typedef struct _mlan_ds_radio_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Radio control parameter */
+ union {
+ /** Radio on/off for MLAN_OID_RADIO_CTRL */
+ t_u32 radio_on_off;
+ /** Band info for MLAN_OID_BAND_CFG */
+ mlan_ds_band_cfg band_cfg;
+ /** Antenna info for MLAN_OID_ANT_CFG */
+ mlan_ds_ant_cfg ant_cfg;
+ /** Antenna mode for MLAN_OID_MIMO_SWITCH */
+ mlan_ds_mimo_switch mimo_switch_cfg;
+ /** Antenna info for MLAN_OID_ANT_CFG */
+ mlan_ds_ant_cfg_1x1 ant_cfg_1x1;
+ /** remain on channel for MLAN_OID_REMAIN_CHAN_CFG */
+ mlan_ds_remain_chan remain_chan;
+ } param;
+} mlan_ds_radio_cfg, *pmlan_ds_radio_cfg;
+
+enum COALESCE_OPERATION {
+ RECV_FILTER_MATCH_TYPE_EQ = 0x80,
+ RECV_FILTER_MATCH_TYPE_NE,
+};
+
+enum COALESCE_PACKET_TYPE {
+ PACKET_TYPE_UNICAST = 1,
+ PACKET_TYPE_MULTICAST = 2,
+ PACKET_TYPE_BROADCAST = 3
+};
+
+#define COALESCE_MAX_RULES 8
+#define COALESCE_MAX_BYTESEQ 4 /* non-adjustable */
+#define COALESCE_MAX_FILTERS 4
+#define MAX_COALESCING_DELAY 100 /* in msecs */
+#define MAX_PATTERN_LEN 20
+#define MAX_OFFSET_LEN 100
+
+struct filt_field_param {
+ t_u8 operation;
+ t_u8 operand_len;
+ t_u16 offset;
+ t_u8 operand_byte_stream[COALESCE_MAX_BYTESEQ];
+};
+
+struct coalesce_rule {
+ t_u16 max_coalescing_delay;
+ t_u8 num_of_fields;
+ t_u8 pkt_type;
+ struct filt_field_param params[COALESCE_MAX_FILTERS];
+};
+
+typedef struct _mlan_ds_coalesce_cfg {
+ t_u16 num_of_rules;
+ struct coalesce_rule rule[COALESCE_MAX_RULES];
+} mlan_ds_coalesce_cfg;
+
+/*-----------------------------------------------------------------*/
+/** SNMP MIB Group */
+/*-----------------------------------------------------------------*/
+/** Type definition of mlan_ds_snmp_mib for MLAN_IOCTL_SNMP_MIB */
+typedef struct _mlan_ds_snmp_mib {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** SNMP MIB parameter */
+ union {
+ /** RTS threshold for MLAN_OID_SNMP_MIB_RTS_THRESHOLD */
+ t_u32 rts_threshold;
+ /** Fragment threshold for MLAN_OID_SNMP_MIB_FRAG_THRESHOLD */
+ t_u32 frag_threshold;
+ /** Retry count for MLAN_OID_SNMP_MIB_RETRY_COUNT */
+ t_u32 retry_count;
+ /** OID value for MLAN_OID_SNMP_MIB_DOT11D/H */
+ t_u32 oid_value;
+ /** DTIM period for MLAN_OID_SNMP_MIB_DTIM_PERIOD */
+ t_u32 dtim_period;
+ /** Singal_ext Enable for MLAN_OID_SNMP_MIB_SIGNALEXT_ENABLE */
+ t_u8 signalext_enable;
+ /** Control deauth when uap switch channel */
+ t_u8 deauthctrl;
+ } param;
+} mlan_ds_snmp_mib, *pmlan_ds_snmp_mib;
+
+/*-----------------------------------------------------------------*/
+/** Status Information Group */
+/*-----------------------------------------------------------------*/
+/** Enumeration for ad-hoc status */
+enum _mlan_adhoc_status {
+ ADHOC_IDLE,
+ ADHOC_STARTED,
+ ADHOC_JOINED,
+ ADHOC_COALESCED,
+ ADHOC_STARTING
+};
+
+typedef struct _mlan_ds_get_stats_org {
+ /** Statistics counter */
+ /** Multicast transmitted frame count */
+ t_u32 mcast_tx_frame;
+ /** Failure count */
+ t_u32 failed;
+ /** Retry count */
+ t_u32 retry;
+ /** Multi entry count */
+ t_u32 multi_retry;
+ /** Duplicate frame count */
+ t_u32 frame_dup;
+ /** RTS success count */
+ t_u32 rts_success;
+ /** RTS failure count */
+ t_u32 rts_failure;
+ /** Ack failure count */
+ t_u32 ack_failure;
+ /** Rx fragmentation count */
+ t_u32 rx_frag;
+ /** Multicast Tx frame count */
+ t_u32 mcast_rx_frame;
+ /** FCS error count */
+ t_u32 fcs_error;
+ /** Tx frame count */
+ t_u32 tx_frame;
+ /** WEP ICV error count */
+ t_u32 wep_icv_error[4];
+ /** beacon recv count */
+ t_u32 bcn_rcv_cnt;
+ /** beacon miss count */
+ t_u32 bcn_miss_cnt;
+ /** received amsdu count*/
+ t_u32 amsdu_rx_cnt;
+ /** received msdu count in amsdu*/
+ t_u32 msdu_in_rx_amsdu_cnt;
+ /** tx amsdu count*/
+ t_u32 amsdu_tx_cnt;
+ /** tx msdu count in amsdu*/
+ t_u32 msdu_in_tx_amsdu_cnt;
+} mlan_ds_get_stats_org;
+
+/** Type definition of mlan_ds_get_stats for MLAN_OID_GET_STATS */
+typedef struct _mlan_ds_get_stats {
+ /** Statistics counter */
+ /** Multicast transmitted frame count */
+ t_u32 mcast_tx_frame;
+ /** Failure count */
+ t_u32 failed;
+ /** Retry count */
+ t_u32 retry;
+ /** Multi entry count */
+ t_u32 multi_retry;
+ /** Duplicate frame count */
+ t_u32 frame_dup;
+ /** RTS success count */
+ t_u32 rts_success;
+ /** RTS failure count */
+ t_u32 rts_failure;
+ /** Ack failure count */
+ t_u32 ack_failure;
+ /** Rx fragmentation count */
+ t_u32 rx_frag;
+ /** Multicast Tx frame count */
+ t_u32 mcast_rx_frame;
+ /** FCS error count */
+ t_u32 fcs_error;
+ /** Tx frame count */
+ t_u32 tx_frame;
+ /** WEP ICV error count */
+ t_u32 wep_icv_error[4];
+ /** beacon recv count */
+ t_u32 bcn_rcv_cnt;
+ /** beacon miss count */
+ t_u32 bcn_miss_cnt;
+ /** received amsdu count*/
+ t_u32 amsdu_rx_cnt;
+ /** received msdu count in amsdu*/
+ t_u32 msdu_in_rx_amsdu_cnt;
+ /** tx amsdu count*/
+ t_u32 amsdu_tx_cnt;
+ /** tx msdu count in amsdu*/
+ t_u32 msdu_in_tx_amsdu_cnt;
+
+ /** Tx frag count */
+ t_u32 tx_frag_cnt;
+ /** Qos Tx frag count */
+ t_u32 qos_tx_frag_cnt[8];
+ /** Qos failed count */
+ t_u32 qos_failed_cnt[8];
+ /** Qos retry count */
+ t_u32 qos_retry_cnt[8];
+ /** Qos multi retry count */
+ t_u32 qos_multi_retry_cnt[8];
+ /** Qos frame dup count */
+ t_u32 qos_frm_dup_cnt[8];
+ /** Qos rts success count */
+ t_u32 qos_rts_suc_cnt[8];
+ /** Qos rts failure count */
+ t_u32 qos_rts_failure_cnt[8];
+ /** Qos ack failure count */
+ t_u32 qos_ack_failure_cnt[8];
+ /** Qos Rx frag count */
+ t_u32 qos_rx_frag_cnt[8];
+ /** Qos Tx frame count */
+ t_u32 qos_tx_frm_cnt[8];
+ /** Qos discarded frame count */
+ t_u32 qos_discarded_frm_cnt[8];
+ /** Qos mpdus Rx count */
+ t_u32 qos_mpdus_rx_cnt[8];
+ /** Qos retry rx count */
+ t_u32 qos_retries_rx_cnt[8];
+ /** CMAC ICV errors count */
+ t_u32 cmacicv_errors;
+ /** CMAC replays count */
+ t_u32 cmac_replays;
+ /** mgmt CCMP replays count */
+ t_u32 mgmt_ccmp_replays;
+ /** TKIP ICV errors count */
+ t_u32 tkipicv_errors;
+ /** TKIP replays count */
+ t_u32 tkip_replays;
+ /** CCMP decrypt errors count */
+ t_u32 ccmp_decrypt_errors;
+ /** CCMP replays count */
+ t_u32 ccmp_replays;
+ /** Tx amsdu count */
+ t_u32 tx_amsdu_cnt;
+ /** failed amsdu count */
+ t_u32 failed_amsdu_cnt;
+ /** retry amsdu count */
+ t_u32 retry_amsdu_cnt;
+ /** multi-retry amsdu count */
+ t_u32 multi_retry_amsdu_cnt;
+ /** Tx octets in amsdu count */
+ t_u64 tx_octets_in_amsdu_cnt;
+ /** amsdu ack failure count */
+ t_u32 amsdu_ack_failure_cnt;
+ /** Rx amsdu count */
+ t_u32 rx_amsdu_cnt;
+ /** Rx octets in amsdu count */
+ t_u64 rx_octets_in_amsdu_cnt;
+ /** Tx ampdu count */
+ t_u32 tx_ampdu_cnt;
+ /** tx mpdus in ampdu count */
+ t_u32 tx_mpdus_in_ampdu_cnt;
+ /** tx octets in ampdu count */
+ t_u64 tx_octets_in_ampdu_cnt;
+ /** ampdu Rx count */
+ t_u32 ampdu_rx_cnt;
+ /** mpdu in Rx ampdu count */
+ t_u32 mpdu_in_rx_ampdu_cnt;
+ /** Rx octets ampdu count */
+ t_u64 rx_octets_in_ampdu_cnt;
+ /** ampdu delimiter CRC error count */
+ t_u32 ampdu_delimiter_crc_error_cnt;
+ /** Rx Stuck Related Info*/
+ /** Rx Stuck Issue count */
+ t_u32 rx_stuck_issue_cnt[2];
+ /** Rx Stuck Recovery count */
+ t_u32 rx_stuck_recovery_cnt;
+ /** Rx Stuck TSF */
+ t_u64 rx_stuck_tsf[2];
+ /** Tx Watchdog Recovery Related Info */
+ /** Tx Watchdog Recovery count */
+ t_u32 tx_watchdog_recovery_cnt;
+ /** Tx Watchdog TSF */
+ t_u64 tx_watchdog_tsf[2];
+ /** Channel Switch Related Info */
+ /** Channel Switch Announcement Sent */
+ t_u32 channel_switch_ann_sent;
+ /** Channel Switch State */
+ t_u32 channel_switch_state;
+ /** Register Class */
+ t_u32 reg_class;
+ /** Channel Number */
+ t_u32 channel_number;
+ /** Channel Switch Mode */
+ t_u32 channel_switch_mode;
+} mlan_ds_get_stats, *pmlan_ds_get_stats;
+
+/** Type definition of mlan_ds_uap_stats for MLAN_OID_GET_STATS */
+typedef struct _mlan_ds_uap_stats {
+ /** tkip mic failures */
+ t_u32 tkip_mic_failures;
+ /** ccmp decrypt errors */
+ t_u32 ccmp_decrypt_errors;
+ /** wep undecryptable count */
+ t_u32 wep_undecryptable_count;
+ /** wep icv error count */
+ t_u32 wep_icv_error_count;
+ /** decrypt failure count */
+ t_u32 decrypt_failure_count;
+ /** dot11 multicast tx count */
+ t_u32 mcast_tx_count;
+ /** dot11 failed count */
+ t_u32 failed_count;
+ /** dot11 retry count */
+ t_u32 retry_count;
+ /** dot11 multi retry count */
+ t_u32 multi_retry_count;
+ /** dot11 frame duplicate count */
+ t_u32 frame_dup_count;
+ /** dot11 rts success count */
+ t_u32 rts_success_count;
+ /** dot11 rts failure count */
+ t_u32 rts_failure_count;
+ /** dot11 ack failure count */
+ t_u32 ack_failure_count;
+ /** dot11 rx ragment count */
+ t_u32 rx_fragment_count;
+ /** dot11 mcast rx frame count */
+ t_u32 mcast_rx_frame_count;
+ /** dot11 fcs error count */
+ t_u32 fcs_error_count;
+ /** dot11 tx frame count */
+ t_u32 tx_frame_count;
+ /** dot11 rsna tkip cm invoked */
+ t_u32 rsna_tkip_cm_invoked;
+ /** dot11 rsna 4way handshake failures */
+ t_u32 rsna_4way_hshk_failures;
+} mlan_ds_uap_stats, *pmlan_ds_uap_stats;
+
+/** Mask of last beacon RSSI */
+#define BCN_RSSI_LAST_MASK 0x00000001
+/** Mask of average beacon RSSI */
+#define BCN_RSSI_AVG_MASK 0x00000002
+/** Mask of last data RSSI */
+#define DATA_RSSI_LAST_MASK 0x00000004
+/** Mask of average data RSSI */
+#define DATA_RSSI_AVG_MASK 0x00000008
+/** Mask of last beacon SNR */
+#define BCN_SNR_LAST_MASK 0x00000010
+/** Mask of average beacon SNR */
+#define BCN_SNR_AVG_MASK 0x00000020
+/** Mask of last data SNR */
+#define DATA_SNR_LAST_MASK 0x00000040
+/** Mask of average data SNR */
+#define DATA_SNR_AVG_MASK 0x00000080
+/** Mask of last beacon NF */
+#define BCN_NF_LAST_MASK 0x00000100
+/** Mask of average beacon NF */
+#define BCN_NF_AVG_MASK 0x00000200
+/** Mask of last data NF */
+#define DATA_NF_LAST_MASK 0x00000400
+/** Mask of average data NF */
+#define DATA_NF_AVG_MASK 0x00000800
+/** Mask of all RSSI_INFO */
+#define ALL_RSSI_INFO_MASK 0x00000fff
+#define MAX_PATH_NUM 3
+/** path A */
+#define PATH_A 0x01
+/** path B */
+#define PATH_B 0x02
+/** path AB */
+#define PATH_AB 0x03
+/** ALL the path */
+#define PATH_ALL 0
+/** Type definition of mlan_ds_get_signal for MLAN_OID_GET_SIGNAL */
+typedef struct _mlan_ds_get_signal {
+ /** Selector of get operation */
+ /*
+ * Bit0: Last Beacon RSSI, Bit1: Average Beacon RSSI,
+ * Bit2: Last Data RSSI, Bit3: Average Data RSSI,
+ * Bit4: Last Beacon SNR, Bit5: Average Beacon SNR,
+ * Bit6: Last Data SNR, Bit7: Average Data SNR,
+ * Bit8: Last Beacon NF, Bit9: Average Beacon NF,
+ * Bit10: Last Data NF, Bit11: Average Data NF
+ *
+ * Bit0: PATH A
+ * Bit1: PATH B
+ */
+ t_u16 selector;
+
+ /** RSSI */
+ /** RSSI of last beacon */
+ t_s16 bcn_rssi_last;
+ /** RSSI of beacon average */
+ t_s16 bcn_rssi_avg;
+ /** RSSI of last data packet */
+ t_s16 data_rssi_last;
+ /** RSSI of data packet average */
+ t_s16 data_rssi_avg;
+
+ /** SNR */
+ /** SNR of last beacon */
+ t_s16 bcn_snr_last;
+ /** SNR of beacon average */
+ t_s16 bcn_snr_avg;
+ /** SNR of last data packet */
+ t_s16 data_snr_last;
+ /** SNR of data packet average */
+ t_s16 data_snr_avg;
+
+ /** NF */
+ /** NF of last beacon */
+ t_s16 bcn_nf_last;
+ /** NF of beacon average */
+ t_s16 bcn_nf_avg;
+ /** NF of last data packet */
+ t_s16 data_nf_last;
+ /** NF of data packet average */
+ t_s16 data_nf_avg;
+} mlan_ds_get_signal, *pmlan_ds_get_signal;
+
+/** bit for 2.4 G antenna diversity */
+#define ANT_DIVERSITY_2G MBIT(3)
+/** bit for 5 G antenna diversity */
+#define ANT_DIVERSITY_5G MBIT(7)
+
+/** mlan_fw_info data structure for MLAN_OID_GET_FW_INFO */
+typedef struct _mlan_fw_info {
+ /** Firmware version */
+ t_u32 fw_ver;
+ /** MAC address */
+ mlan_802_11_mac_addr mac_addr;
+ /** 802.11n device capabilities */
+ t_u32 hw_dot_11n_dev_cap;
+ /** Device support for MIMO abstraction of MCSs */
+ t_u8 hw_dev_mcs_support;
+ /** user's MCS setting */
+ t_u8 usr_dev_mcs_support;
+ /** 802.11ac device capabilities */
+ t_u32 hw_dot_11ac_dev_cap;
+ /** 802.11ac device Capabilities for 2.4GHz */
+ t_u32 usr_dot_11ac_dev_cap_bg;
+ /** 802.11ac device Capabilities for 5GHz */
+ t_u32 usr_dot_11ac_dev_cap_a;
+ /** length of hw he capability */
+ t_u8 hw_hecap_len;
+ /** 802.11ax HE capability */
+ t_u8 hw_he_cap[54];
+ /** length of hw 2.4G he capability */
+ t_u8 hw_2g_hecap_len;
+ /** 802.11ax 2.4G HE capability */
+ t_u8 hw_2g_he_cap[54];
+ /** 802.11ac device support for MIMO abstraction of MCSs */
+ t_u32 hw_dot_11ac_mcs_support;
+ /** User conf 802.11ac device support for MIMO abstraction of MCSs */
+ t_u32 usr_dot_11ac_mcs_support;
+ /** fw supported band */
+ t_u16 fw_bands;
+ /** region code */
+ t_u16 region_code;
+ /** force_reg */
+ t_u8 force_reg;
+ /** ECSA support */
+ t_u8 ecsa_enable;
+ /** Get log support */
+ t_u8 getlog_enable;
+ /** FW support for embedded supplicant */
+ t_u8 fw_supplicant_support;
+ /** ant info */
+ t_u8 antinfo;
+ /** max AP associated sta count supported by fw */
+ t_u8 max_ap_assoc_sta;
+ /** Bandwidth not support 80Mhz */
+ t_u8 prohibit_80mhz;
+} mlan_fw_info, *pmlan_fw_info;
+
+/** Version string buffer length */
+#define MLAN_MAX_VER_STR_LEN 128
+
+/** mlan_ver_ext data structure for MLAN_OID_GET_VER_EXT */
+typedef struct _mlan_ver_ext {
+ /** Selected version string */
+ t_u32 version_str_sel;
+ /** Version string */
+ char version_str[MLAN_MAX_VER_STR_LEN];
+} mlan_ver_ext, *pmlan_ver_ext;
+
+#ifdef BIG_ENDIAN_SUPPORT
+/** Extended Capabilities Data */
+typedef struct MLAN_PACK_START _ExtCap_t {
+ /** Extended Capabilities value */
+ t_u8 rsvdBit79 : 1; /* bit 79 */
+ t_u8 TWTResp : 1; /* bit 78 */
+ t_u8 TWTReq : 1; /* bit 77 */
+ t_u8 rsvdBit76 : 1; /* bit 76 */
+ t_u8 rsvdBit75 : 1; /* bit 75 */
+ t_u8 rsvdBit74 : 1; /* bit 74 */
+ t_u8 rsvdBit73 : 1; /* bit 73 */
+ t_u8 FILS : 1; /* bit 72 */
+ t_u8 FTMI : 1; /* bit 71 */
+ t_u8 FTMR : 1; /* bit 70 */
+ t_u8 CAQ : 1; /* bit 69 */
+ t_u8 rsvdBit68 : 1; /* bit 68 */
+ t_u8 NCC : 1; /* bit 67 */
+ t_u8 rsvdBit66 : 1; /* bit 66 */
+ t_u8 chanSchedMgnt : 1; /* bit 65 */
+ t_u8 MaxAMSDU1 : 1; /* bit 64 */
+ t_u8 MaxAMSDU0 : 1; /* bit 63 */
+ t_u8 OperModeNtf : 1; /* bit 62 */
+ t_u8 TDLSWildBandwidth : 1; /* bit 61 */
+ t_u8 rsvdBit60 : 1; /* bit 60 */
+ t_u8 rsvdBit59 : 1; /* bit 59 */
+ t_u8 rsvdBit58 : 1; /* bit 58 */
+ t_u8 rsvdBit57 : 1; /* bit 57 */
+ t_u8 rsvdBit56 : 1; /* bit 56 */
+ t_u8 rsvdBit55 : 1; /* bit 55 */
+ t_u8 rsvdBit54 : 1; /* bit 54 */
+ t_u8 rsvdBit53 : 1; /* bit 53 */
+ t_u8 rsvdBit52 : 1; /* bit 52 */
+ t_u8 rsvdBit51 : 1; /* bit 51 */
+ t_u8 rsvdBit50 : 1; /* bit 50 */
+ t_u8 rsvdBit49 : 1; /* bit 49 */
+ t_u8 rsvdBit48 : 1; /* bit 48 */
+ t_u8 rsvdBit47 : 1; /* bit 47 */
+ t_u8 rsvdBit46 : 1; /* bit 46 */
+ t_u8 rsvdBit45 : 1; /* bit 45 */
+ t_u8 rsvdBit44 : 1; /* bit 44 */
+ t_u8 rsvdBit43 : 1; /* bit 43 */
+ t_u8 rsvdBit42 : 1; /* bit 42 */
+ t_u8 rsvdBit41 : 1; /* bit 41 */
+ t_u8 rsvdBit40 : 1; /* bit 40 */
+ t_u8 TDLSChlSwitchProhib : 1; /* bit 39 */
+ t_u8 TDLSProhibited : 1; /* bit 38 */
+ t_u8 TDLSSupport : 1; /* bit 37 */
+ t_u8 MSGCF_Capa : 1; /* bit 36 */
+ t_u8 Reserved35 : 1; /* bit 35 */
+ t_u8 SSPN_Interface : 1; /* bit 34 */
+ t_u8 EBR : 1; /* bit 33 */
+ t_u8 Qos_Map : 1; /* bit 32 */
+ t_u8 Interworking : 1; /* bit 31 */
+ t_u8 TDLSChannelSwitching : 1; /* bit 30 */
+ t_u8 TDLSPeerPSMSupport : 1; /* bit 29 */
+ t_u8 TDLSPeerUAPSDSupport : 1; /* bit 28 */
+ t_u8 UTC : 1; /* bit 27 */
+ t_u8 DMS : 1; /* bit 26 */
+ t_u8 SSID_List : 1; /* bit 25 */
+ t_u8 ChannelUsage : 1; /* bit 24 */
+ t_u8 TimingMeasurement : 1; /* bit 23 */
+ t_u8 MultipleBSSID : 1; /* bit 22 */
+ t_u8 AC_StationCount : 1; /* bit 21 */
+ t_u8 QoSTrafficCap : 1; /* bit 20 */
+ t_u8 BSS_Transition : 1; /* bit 19 */
+ t_u8 TIM_Broadcast : 1; /* bit 18 */
+ t_u8 WNM_Sleep : 1; /* bit 17 */
+ t_u8 TFS : 1; /* bit 16 */
+ t_u8 GeospatialLocation : 1; /* bit 15 */
+ t_u8 CivicLocation : 1; /* bit 14 */
+ t_u8 CollocatedIntf : 1; /* bit 13 */
+ t_u8 ProxyARPService : 1; /* bit 12 */
+ t_u8 FMS : 1; /* bit 11 */
+ t_u8 LocationTracking : 1; /* bit 10 */
+ t_u8 MulticastDiagnostics : 1; /* bit 9 */
+ t_u8 Diagnostics : 1; /* bit 8 */
+ t_u8 Event : 1; /* bit 7 */
+ t_u8 SPSMP_Support : 1; /* bit 6 */
+ t_u8 Reserved5 : 1; /* bit 5 */
+ t_u8 PSMP_Capable : 1; /* bit 4 */
+ t_u8 RejectUnadmFrame : 1; /* bit 3 */
+ t_u8 ExtChanSwitching : 1; /* bit 2 */
+ t_u8 Reserved1 : 1; /* bit 1 */
+ t_u8 BSS_CoexistSupport : 1; /* bit 0 */
+} MLAN_PACK_END ExtCap_t, *pExtCap_t;
+#else
+/** Extended Capabilities Data */
+typedef struct MLAN_PACK_START _ExtCap_t {
+ /** Extended Capabilities value */
+ t_u8 BSS_CoexistSupport : 1; /* bit 0 */
+ t_u8 Reserved1 : 1; /* bit 1 */
+ t_u8 ExtChanSwitching : 1; /* bit 2 */
+ t_u8 RejectUnadmFrame : 1; /* bit 3 */
+ t_u8 PSMP_Capable : 1; /* bit 4 */
+ t_u8 Reserved5 : 1; /* bit 5 */
+ t_u8 SPSMP_Support : 1; /* bit 6 */
+ t_u8 Event : 1; /* bit 7 */
+ t_u8 Diagnostics : 1; /* bit 8 */
+ t_u8 MulticastDiagnostics : 1; /* bit 9 */
+ t_u8 LocationTracking : 1; /* bit 10 */
+ t_u8 FMS : 1; /* bit 11 */
+ t_u8 ProxyARPService : 1; /* bit 12 */
+ t_u8 CollocatedIntf : 1; /* bit 13 */
+ t_u8 CivicLocation : 1; /* bit 14 */
+ t_u8 GeospatialLocation : 1; /* bit 15 */
+ t_u8 TFS : 1; /* bit 16 */
+ t_u8 WNM_Sleep : 1; /* bit 17 */
+ t_u8 TIM_Broadcast : 1; /* bit 18 */
+ t_u8 BSS_Transition : 1; /* bit 19 */
+ t_u8 QoSTrafficCap : 1; /* bit 20 */
+ t_u8 AC_StationCount : 1; /* bit 21 */
+ t_u8 MultipleBSSID : 1; /* bit 22 */
+ t_u8 TimingMeasurement : 1; /* bit 23 */
+ t_u8 ChannelUsage : 1; /* bit 24 */
+ t_u8 SSID_List : 1; /* bit 25 */
+ t_u8 DMS : 1; /* bit 26 */
+ t_u8 UTC : 1; /* bit 27 */
+ t_u8 TDLSPeerUAPSDSupport : 1; /* bit 28 */
+ t_u8 TDLSPeerPSMSupport : 1; /* bit 29 */
+ t_u8 TDLSChannelSwitching : 1; /* bit 30 */
+ t_u8 Interworking : 1; /* bit 31 */
+ t_u8 Qos_Map : 1; /* bit 32 */
+ t_u8 EBR : 1; /* bit 33 */
+ t_u8 SSPN_Interface : 1; /* bit 34 */
+ t_u8 Reserved35 : 1; /* bit 35 */
+ t_u8 MSGCF_Capa : 1; /* bit 36 */
+ t_u8 TDLSSupport : 1; /* bit 37 */
+ t_u8 TDLSProhibited : 1; /* bit 38 */
+ t_u8 TDLSChlSwitchProhib : 1; /* bit 39 */
+ t_u8 rsvdBit40 : 1; /* bit 40 */
+ t_u8 rsvdBit41 : 1; /* bit 41 */
+ t_u8 rsvdBit42 : 1; /* bit 42 */
+ t_u8 rsvdBit43 : 1; /* bit 43 */
+ t_u8 rsvdBit44 : 1; /* bit 44 */
+ t_u8 rsvdBit45 : 1; /* bit 45 */
+ t_u8 rsvdBit46 : 1; /* bit 46 */
+ t_u8 rsvdBit47 : 1; /* bit 47 */
+ t_u8 rsvdBit48 : 1; /* bit 48 */
+ t_u8 rsvdBit49 : 1; /* bit 49 */
+ t_u8 rsvdBit50 : 1; /* bit 50 */
+ t_u8 rsvdBit51 : 1; /* bit 51 */
+ t_u8 rsvdBit52 : 1; /* bit 52 */
+ t_u8 rsvdBit53 : 1; /* bit 53 */
+ t_u8 rsvdBit54 : 1; /* bit 54 */
+ t_u8 rsvdBit55 : 1; /* bit 55 */
+ t_u8 rsvdBit56 : 1; /* bit 56 */
+ t_u8 rsvdBit57 : 1; /* bit 57 */
+ t_u8 rsvdBit58 : 1; /* bit 58 */
+ t_u8 rsvdBit59 : 1; /* bit 59 */
+ t_u8 rsvdBit60 : 1; /* bit 60 */
+ t_u8 TDLSWildBandwidth : 1; /* bit 61 */
+ t_u8 OperModeNtf : 1; /* bit 62 */
+ t_u8 MaxAMSDU0 : 1; /* bit 63 */
+ t_u8 MaxAMSDU1 : 1; /* bit 64 */
+ t_u8 chanSchedMgnt : 1; /* bit 65 */
+ t_u8 rsvdBit66 : 1; /* bit 66 */
+ t_u8 NCC : 1; /* bit 67 */
+ t_u8 rsvdBit68 : 1; /* bit 68 */
+ t_u8 CAQ : 1; /* bit 69 */
+ t_u8 FTMR : 1; /* bit 70 */
+ t_u8 FTMI : 1; /* bit 71 */
+ t_u8 FILS : 1; /* bit 72 */
+ t_u8 rsvdBit73 : 1; /* bit 73 */
+ t_u8 rsvdBit74 : 1; /* bit 74 */
+ t_u8 rsvdBit75 : 1; /* bit 75 */
+ t_u8 rsvdBit76 : 1; /* bit 76 */
+ t_u8 TWTReq : 1; /* bit 77 */
+ t_u8 TWTResp : 1; /* bit 78 */
+ t_u8 rsvdBit79 : 1; /* bit 79 */
+} MLAN_PACK_END ExtCap_t, *pExtCap_t;
+#endif
+
+/** ExtCap : TDLS prohibited */
+#define IS_EXTCAP_TDLS_PROHIBITED(ext_cap) (ext_cap.TDLSProhibited)
+/** ExtCap : TDLS channel switch prohibited */
+#define IS_EXTCAP_TDLS_CHLSWITCHPROHIB(ext_cap) (ext_cap.TDLSChlSwitchProhib)
+
+/** mlan_bss_info data structure for MLAN_OID_GET_BSS_INFO */
+typedef struct _mlan_bss_info {
+ /** BSS mode */
+ t_u32 bss_mode;
+ /** SSID */
+ mlan_802_11_ssid ssid;
+ /** Table index */
+ t_u32 scan_table_idx;
+ /** Channel */
+ t_u32 bss_chan;
+ /** Band */
+ t_u8 bss_band;
+ /** Region code */
+ t_u32 region_code;
+ /** Connection status */
+ t_u32 media_connected;
+ /** Radio on */
+ t_u32 radio_on;
+ /** Max power level in dBm */
+ t_s32 max_power_level;
+ /** Min power level in dBm */
+ t_s32 min_power_level;
+ /** Adhoc state */
+ t_u32 adhoc_state;
+ /** NF of last beacon */
+ t_s32 bcn_nf_last;
+ /** wep status */
+ t_u32 wep_status;
+ /** scan block status */
+ t_u8 scan_block;
+ /** Host Sleep configured flag */
+ t_u32 is_hs_configured;
+ /** Deep Sleep flag */
+ t_u32 is_deep_sleep;
+ /** BSSID */
+ mlan_802_11_mac_addr bssid;
+#ifdef STA_SUPPORT
+ /** Capability Info */
+ t_u16 capability_info;
+ /** Beacon Interval */
+ t_u16 beacon_interval;
+ /** Listen Interval */
+ t_u16 listen_interval;
+ /** Association Id */
+ t_u16 assoc_id;
+ /** AP/Peer supported rates */
+ t_u8 peer_supp_rates[MLAN_SUPPORTED_RATES];
+ /** extend capability for AP */
+ ExtCap_t ext_cap;
+#endif /* STA_SUPPORT */
+ /** Mobility Domain ID */
+ t_u16 mdid;
+ /** FT Capability policy */
+ t_u8 ft_cap;
+ /** 11h active */
+ t_bool is_11h_active;
+ /** dfs check channel */
+ t_u8 dfs_check_channel;
+} mlan_bss_info, *pmlan_bss_info;
+
+/** MAXIMUM number of TID */
+#define MAX_NUM_TID 8
+
+/** Max RX Win size */
+#define MAX_RX_WINSIZE 64
+
+/** rx_reorder_tbl */
+typedef struct {
+ /** TID */
+ t_u16 tid;
+ /** TA */
+ t_u8 ta[MLAN_MAC_ADDR_LENGTH];
+ /** Start window */
+ t_u32 start_win;
+ /** Window size */
+ t_u32 win_size;
+ /** amsdu flag */
+ t_u8 amsdu;
+ /** buffer status */
+ t_u32 buffer[MAX_RX_WINSIZE];
+} rx_reorder_tbl;
+
+/** tx_ba_stream_tbl */
+typedef struct {
+ /** TID */
+ t_u16 tid;
+ /** RA */
+ t_u8 ra[MLAN_MAC_ADDR_LENGTH];
+ /** amsdu flag */
+ t_u8 amsdu;
+} tx_ba_stream_tbl;
+
+/** Debug command number */
+#define DBG_CMD_NUM 10
+
+#ifdef SDIO
+/** sdio mp debug number */
+#define SDIO_MP_DBG_NUM 10
+#endif
+
+#ifdef PCIE
+#define MLAN_MAX_TXRX_BD 0x20
+#endif
+
+/** Maximum size of IEEE Information Elements */
+#define IEEE_MAX_IE_SIZE 256
+
+/** max ralist num */
+#define MLAN_MAX_RALIST_NUM 8
+/** ralist info */
+typedef struct _ralist_info {
+ /** RA list buffer */
+ t_u8 ra[MLAN_MAC_ADDR_LENGTH];
+ /** total packets in RA list */
+ t_u16 total_pkts;
+ /** tid num */
+ t_u8 tid;
+ /** tx_pause flag */
+ t_u8 tx_pause;
+} ralist_info, *pralist_info;
+
+/** mlan_debug_info data structure for MLAN_OID_GET_DEBUG_INFO */
+typedef struct _mlan_debug_info {
+ /* WMM AC_BK count */
+ t_u32 wmm_ac_bk;
+ /* WMM AC_BE count */
+ t_u32 wmm_ac_be;
+ /* WMM AC_VI count */
+ t_u32 wmm_ac_vi;
+ /* WMM AC_VO count */
+ t_u32 wmm_ac_vo;
+ /** Corresponds to max_tx_buf_size member of mlan_adapter*/
+ t_u32 max_tx_buf_size;
+ /** Corresponds to tx_buf_size member of mlan_adapter*/
+ t_u32 tx_buf_size;
+ /** Corresponds to curr_tx_buf_size member of mlan_adapter*/
+ t_u32 curr_tx_buf_size;
+ /** Tx table num */
+ t_u32 tx_tbl_num;
+ /** Tx ba stream table */
+ tx_ba_stream_tbl tx_tbl[MLAN_MAX_TX_BASTREAM_SUPPORTED];
+ /** Rx table num */
+ t_u32 rx_tbl_num;
+ /** Rx reorder table*/
+ rx_reorder_tbl rx_tbl[MLAN_MAX_RX_BASTREAM_SUPPORTED];
+ /** ralist num */
+ t_u32 ralist_num;
+ /** ralist info */
+ ralist_info ralist[MLAN_MAX_RALIST_NUM];
+ /** Corresponds to ps_mode member of mlan_adapter */
+ t_u16 ps_mode;
+ /** Corresponds to ps_state member of mlan_adapter */
+ t_u32 ps_state;
+#ifdef STA_SUPPORT
+ /** Corresponds to is_deep_sleep member of mlan_adapter */
+ t_u8 is_deep_sleep;
+#endif /** STA_SUPPORT */
+ /** Corresponds to pm_wakeup_card_req member of mlan_adapter */
+ t_u8 pm_wakeup_card_req;
+ /** Corresponds to pm_wakeup_fw_try member of mlan_adapter */
+ t_u32 pm_wakeup_fw_try;
+ /** time stamp when host try to wake up firmware */
+ t_u32 pm_wakeup_in_secs;
+ /** wake up timeout happened */
+ t_u32 pm_wakeup_timeout;
+ /** Corresponds to is_hs_configured member of mlan_adapter */
+ t_u8 is_hs_configured;
+ /** Corresponds to hs_activated member of mlan_adapter */
+ t_u8 hs_activated;
+ /** Corresponds to pps_uapsd_mode member of mlan_adapter */
+ t_u16 pps_uapsd_mode;
+ /** Corresponds to sleep_period.period member of mlan_adapter */
+ t_u16 sleep_pd;
+ /** Corresponds to wmm_qosinfo member of mlan_private */
+ t_u8 qos_cfg;
+ /** Corresponds to tx_lock_flag member of mlan_adapter */
+ t_u8 tx_lock_flag;
+ /** Corresponds to port_open member of mlan_private */
+ t_u8 port_open;
+ /** bypass pkt count */
+ t_u16 bypass_pkt_count;
+ /** Corresponds to scan_processing member of mlan_adapter */
+ t_u32 scan_processing;
+ /** Corresponds to mlan_processing member of mlan_adapter */
+ t_u32 mlan_processing;
+ /** Corresponds to main_lock_flag member of mlan_adapter */
+ t_u32 main_lock_flag;
+ /** Corresponds to main_process_cnt member of mlan_adapter */
+ t_u32 main_process_cnt;
+ /** Corresponds to delay_task_flag member of mlan_adapter */
+ t_u32 delay_task_flag;
+ /** mlan_rx_processing */
+ t_u32 mlan_rx_processing;
+ /** rx pkts queued */
+ t_u32 rx_pkts_queued;
+ /** Number of host to card command failures */
+ t_u32 num_cmd_host_to_card_failure;
+ /** Number of host to card sleep confirm failures */
+ t_u32 num_cmd_sleep_cfm_host_to_card_failure;
+ /** Number of host to card Tx failures */
+ t_u32 num_tx_host_to_card_failure;
+ /** Number of allocate buffer failure */
+ t_u32 num_alloc_buffer_failure;
+ /** Number of pkt dropped */
+ t_u32 num_pkt_dropped;
+#ifdef SDIO
+ /** Number of card to host command/event failures */
+ t_u32 num_cmdevt_card_to_host_failure;
+ /** Number of card to host Rx failures */
+ t_u32 num_rx_card_to_host_failure;
+ /** Number of interrupt read failures */
+ t_u32 num_int_read_failure;
+ /** Last interrupt status */
+ t_u32 last_int_status;
+ /** number of interrupt receive */
+ t_u32 num_of_irq;
+ /** flag for sdio rx aggr */
+ t_u8 sdio_rx_aggr;
+ /** FW update port number */
+ t_u32 mp_update[SDIO_MP_AGGR_DEF_PKT_LIMIT_MAX * 2];
+ /** Invalid port update count */
+ t_u32 mp_invalid_update;
+ /** Number of packets tx aggr */
+ t_u32 mpa_tx_count[SDIO_MP_AGGR_DEF_PKT_LIMIT_MAX];
+ /** no more packets count*/
+ t_u32 mpa_sent_last_pkt;
+ /** no write_ports count */
+ t_u32 mpa_sent_no_ports;
+ /** last recv wr_bitmap */
+ t_u32 last_recv_wr_bitmap;
+ /** last mp_wr_bitmap */
+ t_u32 last_mp_wr_bitmap[SDIO_MP_DBG_NUM];
+ /** last ports for cmd53 write data */
+ t_u32 last_mp_wr_ports[SDIO_MP_DBG_NUM];
+ /** last len for cmd53 write data */
+ t_u32 last_mp_wr_len[SDIO_MP_DBG_NUM];
+ /** last curr_wr_port */
+ t_u8 last_curr_wr_port[SDIO_MP_DBG_NUM];
+ /** length info for cmd53 write data */
+ t_u16 last_mp_wr_info[SDIO_MP_DBG_NUM * SDIO_MP_AGGR_DEF_PKT_LIMIT_MAX];
+ /** last mp_index */
+ t_u8 last_mp_index;
+ /** buffer for mp debug */
+ t_u8 *mpa_buf;
+ /** length info for mp buf size */
+ t_u32 mpa_buf_size;
+ /** Number of packets rx aggr */
+ t_u32 mpa_rx_count[SDIO_MP_AGGR_DEF_PKT_LIMIT_MAX];
+ /** mp aggr_pkt limit */
+ t_u8 mp_aggr_pkt_limit;
+#endif
+ /** Number of deauthentication events */
+ t_u32 num_event_deauth;
+ /** Number of disassosiation events */
+ t_u32 num_event_disassoc;
+ /** Number of link lost events */
+ t_u32 num_event_link_lost;
+ /** Number of deauthentication commands */
+ t_u32 num_cmd_deauth;
+ /** Number of association comamnd successes */
+ t_u32 num_cmd_assoc_success;
+ /** Number of association command failures */
+ t_u32 num_cmd_assoc_failure;
+ /** Number of consecutive association failures */
+ t_u32 num_cons_assoc_failure;
+
+ /** Number of command timeouts */
+ t_u32 num_cmd_timeout;
+ /** Timeout command ID */
+ t_u16 timeout_cmd_id;
+ /** Timeout command action */
+ t_u16 timeout_cmd_act;
+ /** List of last command IDs */
+ t_u16 last_cmd_id[DBG_CMD_NUM];
+ /** List of last command actions */
+ t_u16 last_cmd_act[DBG_CMD_NUM];
+ /** Last command index */
+ t_u16 last_cmd_index;
+ /** List of last command response IDs */
+ t_u16 last_cmd_resp_id[DBG_CMD_NUM];
+ /** Last command response index */
+ t_u16 last_cmd_resp_index;
+ /** List of last events */
+ t_u16 last_event[DBG_CMD_NUM];
+ /** Last event index */
+ t_u16 last_event_index;
+ /** Number of no free command node */
+ t_u16 num_no_cmd_node;
+ /** pending command id */
+ t_u16 pending_cmd;
+ /** time stamp for dnld last cmd */
+ t_u32 dnld_cmd_in_secs;
+ /** Corresponds to data_sent member of mlan_adapter */
+ t_u8 data_sent;
+ /** Corresponds to cmd_sent member of mlan_adapter */
+ t_u8 cmd_sent;
+ /** SDIO multiple port read bitmap */
+ t_u32 mp_rd_bitmap;
+ /** SDIO multiple port write bitmap */
+ t_u32 mp_wr_bitmap;
+ /** Current available port for read */
+ t_u8 curr_rd_port;
+ /** Current available port for write */
+ t_u8 curr_wr_port;
+#ifdef PCIE
+ /** PCIE txbd read pointer */
+ t_u32 txbd_rdptr;
+ /** PCIE txbd write pointer */
+ t_u32 txbd_wrptr;
+ /** PCIE rxbd read pointer */
+ t_u32 rxbd_rdptr;
+ /** PCIE rxbd write pointer */
+ t_u32 rxbd_wrptr;
+ /** PCIE eventbd read pointer */
+ t_u32 eventbd_rdptr;
+ /** PCIE eventbd write pointer */
+ t_u32 eventbd_wrptr;
+ /** Last pkt size in transmit */
+ t_u32 last_tx_pkt_size[MLAN_MAX_TXRX_BD];
+ /** txbd ring vbase */
+ t_u8 *txbd_ring_vbase;
+ /** txbd ring size */
+ t_u32 txbd_ring_size;
+ /** rxbd ring vbase */
+ t_u8 *rxbd_ring_vbase;
+ /** rxbd ring size */
+ t_u32 rxbd_ring_size;
+ /** evtbd ring vbase */
+ t_u8 *evtbd_ring_vbase;
+ /** evtbd ring size */
+ t_u32 evtbd_ring_size;
+#endif
+ /** Corresponds to cmdresp_received member of mlan_adapter */
+ t_u8 cmd_resp_received;
+ /** Corresponds to event_received member of mlan_adapter */
+ t_u8 event_received;
+ /** pendig tx pkts */
+ t_u32 tx_pkts_queued;
+#ifdef UAP_SUPPORT
+ /** pending bridge pkts */
+ t_u16 num_bridge_pkts;
+ /** dropped pkts */
+ t_u32 num_drop_pkts;
+#endif
+ /** FW hang report */
+ t_u8 fw_hang_report;
+ /** mlan_adapter pointer */
+ t_void *mlan_adapter;
+ /** mlan_adapter_size */
+ t_u32 mlan_adapter_size;
+ /** mlan_priv vector */
+ t_void *mlan_priv[MLAN_MAX_BSS_NUM];
+ /** mlan_priv_size */
+ t_u32 mlan_priv_size[MLAN_MAX_BSS_NUM];
+ /** mlan_priv_num */
+ t_u8 mlan_priv_num;
+} mlan_debug_info, *pmlan_debug_info;
+
+#ifdef UAP_SUPPORT
+/** Maximum number of clients supported by AP */
+#define MAX_NUM_CLIENTS MAX_STA_COUNT
+
+/** station info */
+typedef struct _sta_info {
+ /** STA MAC address */
+ t_u8 mac_address[MLAN_MAC_ADDR_LENGTH];
+ /** Power mgmt status */
+ t_u8 power_mgmt_status;
+ /** RSSI */
+ t_s8 rssi;
+ /** station bandmode */
+ t_u16 bandmode;
+ /** station stats */
+ sta_stats stats;
+ /** ie length */
+ t_u16 ie_len;
+ /** ie buffer */
+ t_u8 ie_buf[];
+} sta_info;
+
+/** mlan_ds_sta_list structure for MLAN_OID_UAP_STA_LIST */
+typedef struct _mlan_ds_sta_list {
+ /** station count */
+ t_u16 sta_count;
+ /** station list */
+ sta_info info[MAX_NUM_CLIENTS];
+} mlan_ds_sta_list, *pmlan_ds_sta_list;
+#endif
+
+/** Type definition of mlan_ds_get_info for MLAN_IOCTL_GET_INFO */
+typedef struct _mlan_ds_get_info {
+ /** Sub-command */
+ t_u32 sub_command;
+
+ /** Status information parameter */
+ union {
+ /** Signal information for MLAN_OID_GET_SIGNAL */
+ mlan_ds_get_signal signal;
+ /** Signal path id for MLAN_OID_GET_SIGNAL_EXT */
+ t_u16 path_id;
+ /** Signal information for MLAN_OID_GET_SIGNAL_EXT */
+ mlan_ds_get_signal signal_ext[MAX_PATH_NUM];
+ /** Statistics information for MLAN_OID_GET_STATS */
+ mlan_ds_get_stats stats;
+ /** Statistics information for MLAN_OID_LINK_STATS*/
+ t_u8 link_statistic[1];
+ /** Firmware information for MLAN_OID_GET_FW_INFO */
+ mlan_fw_info fw_info;
+ /** Extended version information for MLAN_OID_GET_VER_EXT */
+ mlan_ver_ext ver_ext;
+ /** BSS information for MLAN_OID_GET_BSS_INFO */
+ mlan_bss_info bss_info;
+ /** Debug information for MLAN_OID_GET_DEBUG_INFO */
+ t_u8 debug_info[1];
+#ifdef UAP_SUPPORT
+ /** UAP Statistics information for MLAN_OID_GET_STATS */
+ mlan_ds_uap_stats ustats;
+ /** UAP station list for MLAN_OID_UAP_STA_LIST */
+ mlan_ds_sta_list sta_list;
+#endif
+ } param;
+} mlan_ds_get_info, *pmlan_ds_get_info;
+
+/*-----------------------------------------------------------------*/
+/** Security Configuration Group */
+/*-----------------------------------------------------------------*/
+/** Enumeration for authentication mode */
+enum _mlan_auth_mode {
+ MLAN_AUTH_MODE_OPEN = 0x00,
+ MLAN_AUTH_MODE_SHARED = 0x01,
+ MLAN_AUTH_MODE_FT = 0x02,
+ MLAN_AUTH_MODE_SAE = 0x03,
+ MLAN_AUTH_MODE_NETWORKEAP = 0x80,
+ MLAN_AUTH_MODE_AUTO = 0xFF,
+};
+
+/**Enumeration for AssocAgent authentication mode, sync from FW.*/
+typedef enum {
+ AssocAgentAuth_Open,
+ AssocAgentAuth_Shared,
+ AssocAgentAuth_FastBss,
+ AssocAgentAuth_FastBss_Skip,
+ AssocAgentAuth_Network_EAP,
+ AssocAgentAuth_Wpa3Sae,
+ AssocAgentAuth_Auto,
+} AssocAgentAuthType_e;
+
+/** Enumeration for encryption mode */
+enum _mlan_encryption_mode {
+ MLAN_ENCRYPTION_MODE_NONE = 0,
+ MLAN_ENCRYPTION_MODE_WEP40 = 1,
+ MLAN_ENCRYPTION_MODE_TKIP = 2,
+ MLAN_ENCRYPTION_MODE_CCMP = 3,
+ MLAN_ENCRYPTION_MODE_WEP104 = 4,
+ MLAN_ENCRYPTION_MODE_GCMP = 5,
+ MLAN_ENCRYPTION_MODE_GCMP_256 = 6,
+ MLAN_ENCRYPTION_MODE_CCMP_256 = 7,
+};
+
+/** Enumeration for PSK */
+enum _mlan_psk_type {
+ MLAN_PSK_PASSPHRASE = 1,
+ MLAN_PSK_PMK,
+ MLAN_PSK_CLEAR,
+ MLAN_PSK_QUERY,
+ MLAN_PSK_SAE_PASSWORD,
+};
+
+/** The bit to indicate the key is for unicast */
+#define MLAN_KEY_INDEX_UNICAST 0x40000000
+/** The key index to indicate default key */
+#define MLAN_KEY_INDEX_DEFAULT 0x000000ff
+/** Maximum key length */
+/* #define MLAN_MAX_KEY_LENGTH 32 */
+/** Minimum passphrase length */
+#define MLAN_MIN_PASSPHRASE_LENGTH 8
+/** Maximum passphrase length */
+#define MLAN_MAX_PASSPHRASE_LENGTH 63
+/** Minimum sae_password length */
+#define MLAN_MIN_SAE_PASSWORD_LENGTH 8
+/** Maximum sae_password length */
+#define MLAN_MAX_SAE_PASSWORD_LENGTH 255
+/** PMK length */
+#define MLAN_PMK_HEXSTR_LENGTH 64
+/* A few details needed for WEP (Wireless Equivalent Privacy) */
+/** 104 bits */
+#define MAX_WEP_KEY_SIZE 13
+/** 40 bits RC4 - WEP */
+#define MIN_WEP_KEY_SIZE 5
+/** packet number size */
+#define PN_SIZE 16
+/** max seq size of wpa/wpa2 key */
+#define SEQ_MAX_SIZE 8
+
+/** key flag for tx_seq */
+#define KEY_FLAG_TX_SEQ_VALID 0x00000001
+/** key flag for rx_seq */
+#define KEY_FLAG_RX_SEQ_VALID 0x00000002
+/** key flag for group key */
+#define KEY_FLAG_GROUP_KEY 0x00000004
+/** key flag for tx */
+#define KEY_FLAG_SET_TX_KEY 0x00000008
+/** key flag for mcast IGTK */
+#define KEY_FLAG_AES_MCAST_IGTK 0x00000010
+/** key flag for remove key */
+#define KEY_FLAG_REMOVE_KEY 0x80000000
+/** key flag for GCMP */
+#define KEY_FLAG_GCMP 0x00000020
+/** key flag for GCMP_256 */
+#define KEY_FLAG_GCMP_256 0x00000040
+/** key flag for ccmp 256 */
+#define KEY_FLAG_CCMP_256 0x00000080
+
+/** Type definition of mlan_ds_encrypt_key for MLAN_OID_SEC_CFG_ENCRYPT_KEY */
+typedef struct _mlan_ds_encrypt_key {
+ /** Key disabled, all other fields will be
+ * ignore when this flag set to MTRUE
+ */
+ t_u32 key_disable;
+ /** key removed flag, when this flag is set
+ * to MTRUE, only key_index will be check
+ */
+ t_u32 key_remove;
+ /** Key index, used as current tx key index
+ * when is_current_wep_key is set to MTRUE
+ */
+ t_u32 key_index;
+ /** Current Tx key flag */
+ t_u32 is_current_wep_key;
+ /** Key length */
+ t_u32 key_len;
+ /** Key */
+ t_u8 key_material[MLAN_MAX_KEY_LENGTH];
+ /** mac address */
+ t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH];
+ /** wapi key flag */
+ t_u32 is_wapi_key;
+ /** Initial packet number */
+ t_u8 pn[PN_SIZE];
+ /** key flags */
+ t_u32 key_flags;
+} mlan_ds_encrypt_key, *pmlan_ds_encrypt_key;
+
+/** Type definition of mlan_passphrase_t */
+typedef struct _mlan_passphrase_t {
+ /** Length of passphrase */
+ t_u32 passphrase_len;
+ /** Passphrase */
+ t_u8 passphrase[MLAN_MAX_PASSPHRASE_LENGTH];
+} mlan_passphrase_t;
+
+/** Type definition of mlan_sae_password_t */
+typedef struct _mlan_sae_password_t {
+ /** Length of SAE Password */
+ t_u32 sae_password_len;
+ /** SAE Password */
+ t_u8 sae_password[MLAN_MAX_SAE_PASSWORD_LENGTH];
+} mlan_sae_password_t;
+
+/** Type defnition of mlan_pmk_t */
+typedef struct _mlan_pmk_t {
+ /** PMK */
+ t_u8 pmk[MLAN_MAX_KEY_LENGTH];
+} mlan_pmk_t;
+
+/** Embedded supplicant RSN type: No RSN */
+#define RSN_TYPE_NO_RSN MBIT(0)
+/** Embedded supplicant RSN type: WPA */
+#define RSN_TYPE_WPA MBIT(3)
+/** Embedded supplicant RSN type: WPA-NONE */
+#define RSN_TYPE_WPANONE MBIT(4)
+/** Embedded supplicant RSN type: WPA2 */
+#define RSN_TYPE_WPA2 MBIT(5)
+/** Embedded supplicant RSN type: RFU */
+#define RSN_TYPE_VALID_BITS \
+ (RSN_TYPE_NO_RSN | RSN_TYPE_WPA | RSN_TYPE_WPANONE | RSN_TYPE_WPA2)
+
+/** Embedded supplicant cipher type: TKIP */
+#define EMBED_CIPHER_TKIP MBIT(2)
+/** Embedded supplicant cipher type: AES */
+#define EMBED_CIPHER_AES MBIT(3)
+/** Embedded supplicant cipher type: RFU */
+#define EMBED_CIPHER_VALID_BITS (EMBED_CIPHER_TKIP | EMBED_CIPHER_AES)
+
+/** Type definition of mlan_ds_passphrase for MLAN_OID_SEC_CFG_PASSPHRASE */
+typedef struct _mlan_ds_passphrase {
+ /** SSID may be used */
+ mlan_802_11_ssid ssid;
+ /** BSSID may be used */
+ mlan_802_11_mac_addr bssid;
+ /** Flag for passphrase or pmk used */
+ t_u16 psk_type;
+ /** Passphrase or PMK */
+ union {
+ /** Passphrase */
+ mlan_passphrase_t passphrase;
+ /** SAE Password */
+ mlan_sae_password_t sae_password;
+ /** PMK */
+ mlan_pmk_t pmk;
+ } psk;
+} mlan_ds_passphrase, *pmlan_ds_passphrase;
+
+/** Type definition of mlan_ds_esupp_mode for MLAN_OID_SEC_CFG_ESUPP_MODE */
+typedef struct _mlan_ds_ewpa_mode {
+ /** RSN mode */
+ t_u32 rsn_mode;
+ /** Active pairwise cipher */
+ t_u32 act_paircipher;
+ /** Active pairwise cipher */
+ t_u32 act_groupcipher;
+} mlan_ds_esupp_mode, *pmlan_ds_esupp_mode;
+
+/** Type definition of mlan_ds_sec_cfg for MLAN_IOCTL_SEC_CFG */
+typedef struct _mlan_ds_sec_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Security configuration parameter */
+ union {
+ /** Authentication mode for MLAN_OID_SEC_CFG_AUTH_MODE */
+ t_u32 auth_mode;
+ /** Encryption mode for MLAN_OID_SEC_CFG_ENCRYPT_MODE */
+ t_u32 encrypt_mode;
+ /** WPA enabled flag for MLAN_OID_SEC_CFG_WPA_ENABLED */
+ t_u32 wpa_enabled;
+ /** WAPI enabled flag for MLAN_OID_SEC_CFG_WAPI_ENABLED */
+ t_u32 wapi_enabled;
+ /** Port Control enabled flag for MLAN_OID_SEC_CFG_PORT_CTRL */
+ t_u32 port_ctrl_enabled;
+ /** Encryption key for MLAN_OID_SEC_CFG_ENCRYPT_KEY */
+ mlan_ds_encrypt_key encrypt_key;
+ /** Passphrase for MLAN_OID_SEC_CFG_PASSPHRASE */
+ mlan_ds_passphrase passphrase;
+ /** Embedded supplicant WPA enabled flag for
+ * MLAN_OID_SEC_CFG_EWPA_ENABLED
+ */
+ t_u32 ewpa_enabled;
+ /** Embedded supplicant mode for MLAN_OID_SEC_CFG_ESUPP_MODE */
+ mlan_ds_esupp_mode esupp_mode;
+#ifdef UAP_SUPPORT
+ t_u8 sta_mac[MLAN_MAC_ADDR_LENGTH];
+#endif
+ } param;
+} mlan_ds_sec_cfg, *pmlan_ds_sec_cfg;
+
+#if defined(DRV_EMBEDDED_AUTHENTICATOR) || defined(DRV_EMBEDDED_SUPPLICANT)
+#define BIT_TLV_TYPE_CRYPTO_KEY (1 << 0)
+#define BIT_TLV_TYPE_CRYPTO_KEY_IV (1 << 1)
+#define BIT_TLV_TYPE_CRYPTO_KEY_PREFIX (1 << 2)
+#define BIT_TLV_TYPE_CRYPTO_KEY_DATA_BLK (1 << 3)
+
+/** Type definition of mlan_ds_sup_cfg */
+typedef struct _mlan_ds_sup_cfg {
+ /** Sub-command */
+ t_u8 sub_command;
+ /** output length */
+ t_u16 output_len;
+ /** number of data blks */
+ t_u16 data_blks_nr;
+ /** sub action code */
+ t_u8 sub_action_code;
+ /** skip bytes */
+ t_u16 skip_bytes;
+ /** iteration */
+ t_u32 iteration;
+ /** count */
+ t_u32 count;
+ /** pointer to output */
+ t_u8 *output;
+ /** key length */
+ t_u16 key_len;
+ /** pointer to key */
+ t_u8 *key;
+ /** key iv length */
+ t_u16 key_iv_len;
+ /** pointer to key iv */
+ t_u8 *key_iv;
+ /** key prefix length */
+ t_u16 key_prefix_len;
+ /** pointer to key prefix */
+ t_u8 *key_prefix;
+ /** pointer to data blk length array */
+ t_u32 *key_data_blk_len;
+ /** pointer to key data blk pointer array */
+ t_u8 **key_data_blk;
+ /** callback */
+ t_u8 call_back;
+} mlan_ds_sup_cfg, *pmlan_ds_sup_cfg;
+#endif
+
+/*-----------------------------------------------------------------*/
+/** Rate Configuration Group */
+/*-----------------------------------------------------------------*/
+/** Enumeration for rate type */
+enum _mlan_rate_type { MLAN_RATE_INDEX, MLAN_RATE_VALUE, MLAN_RATE_BITMAP };
+
+/** Enumeration for rate format */
+enum _mlan_rate_format {
+ MLAN_RATE_FORMAT_LG = 0,
+ MLAN_RATE_FORMAT_HT,
+ MLAN_RATE_FORMAT_VHT,
+ MLAN_RATE_FORMAT_HE,
+ MLAN_RATE_FORMAT_AUTO = 0xFF,
+};
+
+/** Max bitmap rates size */
+#define MAX_BITMAP_RATES_SIZE 26
+
+/** Type definition of mlan_rate_cfg_t for MLAN_OID_RATE_CFG */
+typedef struct _mlan_rate_cfg_t {
+ /** Fixed rate: 0, auto rate: 1 */
+ t_u32 is_rate_auto;
+ /** Rate type. 0: index; 1: value; 2: bitmap */
+ t_u32 rate_type;
+ /** Rate/MCS index or rate value if fixed rate */
+ t_u32 rate;
+ /** Rate Bitmap */
+ t_u16 bitmap_rates[MAX_BITMAP_RATES_SIZE];
+ /** NSS */
+ t_u32 nss;
+ /* LG rate: 0, HT rate: 1, VHT rate: 2 */
+ t_u32 rate_format;
+ /** Rate Setting */
+ t_u16 rate_setting;
+} mlan_rate_cfg_t;
+
+/** HT channel bandwidth */
+typedef enum _mlan_ht_bw {
+ MLAN_HT_BW20,
+ MLAN_HT_BW40,
+ /** VHT channel bandwidth */
+ MLAN_VHT_BW80,
+ MLAN_VHT_BW160,
+} mlan_ht_bw;
+
+/** HT guard interval */
+typedef enum _mlan_ht_gi {
+ MLAN_HT_LGI,
+ MLAN_HT_SGI,
+} mlan_ht_gi;
+
+typedef enum _mlan_vht_stbc {
+ MLAN_VHT_STBC,
+ MLAN_VHT_NO_STBC,
+} mlan_vht_stbc;
+
+typedef enum _mlan_vht_ldpc {
+ MLAN_VHT_LDPC,
+ MLAN_VHT_NO_LDPC,
+} mlan_vht_ldpc;
+
+/** Band and BSS mode */
+typedef struct _mlan_band_data_rate {
+ /** Band configuration */
+ t_u8 config_bands;
+ /** BSS mode (Infra or IBSS) */
+ t_u8 bss_mode;
+} mlan_band_data_rate;
+
+/** Type definition of mlan_data_rate for MLAN_OID_GET_DATA_RATE */
+typedef struct _mlan_data_rate {
+ /** Tx data rate */
+ t_u32 tx_data_rate;
+ /** Rx data rate */
+ t_u32 rx_data_rate;
+
+ /** Tx channel bandwidth */
+ t_u32 tx_ht_bw;
+ /** Tx guard interval */
+ t_u32 tx_ht_gi;
+ /** Rx channel bandwidth */
+ t_u32 rx_ht_bw;
+ /** Rx guard interval */
+ t_u32 rx_ht_gi;
+ /** MCS index */
+ t_u32 tx_mcs_index;
+ t_u32 rx_mcs_index;
+ /** NSS */
+ t_u32 tx_nss;
+ t_u32 rx_nss;
+ /* LG rate: 0, HT rate: 1, VHT rate: 2 */
+ t_u32 tx_rate_format;
+ t_u32 rx_rate_format;
+} mlan_data_rate;
+
+/** Type definition of mlan_ds_rate for MLAN_IOCTL_RATE */
+typedef struct _mlan_ds_rate {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Rate configuration parameter */
+ union {
+ /** Rate configuration for MLAN_OID_RATE_CFG */
+ mlan_rate_cfg_t rate_cfg;
+ /** Data rate for MLAN_OID_GET_DATA_RATE */
+ mlan_data_rate data_rate;
+ /** Supported rates for MLAN_OID_SUPPORTED_RATES */
+ t_u8 rates[MLAN_SUPPORTED_RATES];
+ /** Band/BSS mode for getting supported rates */
+ mlan_band_data_rate rate_band_cfg;
+ } param;
+} mlan_ds_rate, *pmlan_ds_rate;
+
+/*-----------------------------------------------------------------*/
+/** Power Configuration Group */
+/*-----------------------------------------------------------------*/
+
+/** Type definition of mlan_power_cfg_t for MLAN_OID_POWER_CFG */
+typedef struct _mlan_power_cfg_t {
+ /** Is power auto */
+ t_u32 is_power_auto;
+ /** Power level in dBm */
+ t_s32 power_level;
+} mlan_power_cfg_t;
+
+/** max power table size */
+#define MAX_POWER_TABLE_SIZE 128
+#define TX_PWR_CFG_AUTO_CTRL_OFF 0xFF
+#define MAX_POWER_GROUP 64
+/** Type definition of mlan_power group info */
+typedef struct mlan_power_group {
+ /** rate format (LG: 0, HT: 1, VHT: 2, no auto ctrl: 0xFF) */
+ t_u32 rate_format;
+ /** bandwidth (LG: 20 MHz, HT: 20/40 MHz, VHT: 80/160/80+80 MHz) */
+ t_u8 bandwidth;
+ /** NSS */
+ t_u32 nss;
+ /** LG: first rate index, HT/VHT: first MCS */
+ t_u8 first_rate_ind;
+ /** LG: last rate index, HT/VHT: last MCS */
+ t_u8 last_rate_ind;
+ /** minmum tx power (dBm) */
+ t_s8 power_min;
+ /** maximum tx power (dBm) */
+ t_s8 power_max;
+ /** tx power step (dB) */
+ t_s8 power_step;
+} mlan_power_group;
+
+/** Type definition of mlan_power_cfg_ext for MLAN_OID_POWER_CFG_EXT */
+typedef struct _mlan_power_cfg_ext {
+ /** number of power_groups */
+ t_u32 num_pwr_grp;
+ /** array of power groups */
+ mlan_power_group power_group[MAX_POWER_GROUP];
+} mlan_power_cfg_ext;
+
+/** Type definition of mlan_ds_power_cfg for MLAN_IOCTL_POWER_CFG */
+typedef struct _mlan_ds_power_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Power configuration parameter */
+ union {
+ /** Power configuration for MLAN_OID_POWER_CFG */
+ mlan_power_cfg_t power_cfg;
+ /** Extended power configuration for MLAN_OID_POWER_CFG_EXT */
+ mlan_power_cfg_ext power_ext;
+ /** Low power mode for MLAN_OID_POWER_LOW_POWER_MODE */
+ t_u16 lpm;
+ } param;
+} mlan_ds_power_cfg, *pmlan_ds_power_cfg;
+
+/** Type definition of mlan_ds_band_steer_cfg for MLAN_IOCTL_POWER_CFG */
+typedef struct _mlan_ds_band_steer_cfg {
+ /** Set/Get */
+ t_u8 action;
+ /** enable/disable band steering*/
+ t_u8 state;
+ /** Probe Response will be blocked to 2G channel for first
+ * block_2g_prb_req probe requests*/
+ t_u8 block_2g_prb_req;
+ /** When band steering is enabled, limit the btm request sent to STA at
+ * <max_btm_req_allowed>*/
+ t_u8 max_btm_req_allowed;
+} mlan_ds_band_steer_cfg, *pmlan_ds_band_steer_cfg;
+
+/** Type definition of mlan_ds_beacon_stuck_param_cfg for MLAN_IOCTL_POWER_CFG
+ */
+typedef struct _mlan_ds_beacon_stuck_param_cfg {
+ /** subcmd */
+ t_u32 subcmd;
+ /** Set/Get */
+ t_u8 action;
+ /** No of beacon interval after which firmware will check if beacon Tx
+ * is going fine */
+ t_u8 beacon_stuck_detect_count;
+ /** Upon performing MAC reset, no of beacon interval after which
+ * firmware will check if recovery was successful */
+ t_u8 recovery_confirm_count;
+} mlan_ds_beacon_stuck_param_cfg, *pmlan_ds_beacon_stuck_param_cfg;
+
+/*-----------------------------------------------------------------*/
+/** Power Management Configuration Group */
+/*-----------------------------------------------------------------*/
+/** Host sleep config conditions : Cancel */
+#define HOST_SLEEP_CFG_CANCEL 0xffffffff
+
+/** Host sleep config condition: broadcast data */
+#define HOST_SLEEP_COND_BROADCAST_DATA MBIT(0)
+/** Host sleep config condition: unicast data */
+#define HOST_SLEEP_COND_UNICAST_DATA MBIT(1)
+/** Host sleep config condition: mac event */
+#define HOST_SLEEP_COND_MAC_EVENT MBIT(2)
+/** Host sleep config condition: multicast data */
+#define HOST_SLEEP_COND_MULTICAST_DATA MBIT(3)
+/** Host sleep config condition: IPV6 packet */
+#define HOST_SLEEP_COND_IPV6_PACKET MBIT(31)
+
+/** Host sleep config conditions: Default */
+#define HOST_SLEEP_DEF_COND 0
+
+/** Host sleep config GPIO : Default */
+#define HOST_SLEEP_DEF_GPIO 0xff
+/** Host sleep config gap : Default */
+#define HOST_SLEEP_DEF_GAP 200
+/** Host sleep config min wake holdoff */
+#define HOST_SLEEP_DEF_WAKE_HOLDOFF 0;
+/** Host sleep config inactivity timeout */
+#define HOST_SLEEP_DEF_INACTIVITY_TIMEOUT 10;
+
+/** Type definition of mlan_ds_hs_cfg for MLAN_OID_PM_CFG_HS_CFG */
+typedef struct _mlan_ds_hs_cfg {
+ /** MTRUE to invoke the HostCmd, MFALSE otherwise */
+ t_u32 is_invoke_hostcmd;
+ /** Host sleep config condition */
+ /** Bit0: broadcast data
+ * Bit1: unicast data
+ * Bit2: mac event
+ * Bit3: multicast data
+ */
+ t_u32 conditions;
+ /** GPIO pin or 0xff for interface */
+ t_u32 gpio;
+ /** Gap in milliseconds or or 0xff for special
+ * setting when GPIO is used to wakeup host
+ */
+ t_u32 gap;
+ /** Host sleep wake interval */
+ t_u32 hs_wake_interval;
+ /** Parameter type for indication gpio*/
+ t_u8 param_type_ind;
+ /** GPIO pin for indication wakeup source */
+ t_u32 ind_gpio;
+ /** Level on ind_gpio pin for indication normal wakeup source */
+ t_u32 level;
+ /** Parameter type for extend hscfg*/
+ t_u8 param_type_ext;
+ /** Events that will be forced ignore*/
+ t_u32 event_force_ignore;
+ /** Events that will use extend gap to inform host*/
+ t_u32 event_use_ext_gap;
+ /** Ext gap*/
+ t_u8 ext_gap;
+ /** GPIO wave level for extend hscfg*/
+ t_u8 gpio_wave;
+} mlan_ds_hs_cfg, *pmlan_ds_hs_cfg;
+
+#define MAX_MGMT_FRAME_FILTER 2
+typedef struct _mlan_mgmt_frame_wakeup {
+ /** action - bitmap
+ ** On matching rx'd pkt and filter during NON_HOSTSLEEP mode:
+ ** Action[1]=0 Discard
+ ** Action[1]=1 Allow
+ ** Note that default action on non-match is "Allow".
+ **
+ ** On matching rx'd pkt and filter during HOSTSLEEP mode:
+ ** Action[1:0]=00 Discard and Not Wake host
+ ** Action[1:0]=01 Discard and Wake host
+ ** Action[1:0]=10 Invalid
+ ** Note that default action on non-match is "Discard and Not Wake
+ *host".
+ **/
+ t_u32 action;
+ /** Frame type(p2p, tdls...)
+ ** type=0: invalid
+ ** type=1: p2p
+ ** type=others: reserved
+ **/
+ t_u32 type;
+ /** Frame mask according to each type
+ ** When type=1 for p2p, frame-mask have following define:
+ ** Bit Frame
+ ** 0 GO Negotiation Request
+ ** 1 GO Negotiation Response
+ ** 2 GO Negotiation Confirmation
+ ** 3 P2P Invitation Request
+ ** 4 P2P Invitation Response
+ ** 5 Device Discoverability Request
+ ** 6 Device Discoverability Response
+ ** 7 Provision Discovery Request
+ ** 8 Provision Discovery Response
+ ** 9 Notice of Absence
+ ** 10 P2P Presence Request
+ ** 11 P2P Presence Response
+ ** 12 GO Discoverability Request
+ ** 13-31 Reserved
+ **
+ ** When type=others, frame-mask is reserved.
+ **/
+ t_u32 frame_mask;
+} mlan_mgmt_frame_wakeup, *pmlan_mgmt_frame_wakeup;
+
+/** Enable deep sleep mode */
+#define DEEP_SLEEP_ON 1
+/** Disable deep sleep mode */
+#define DEEP_SLEEP_OFF 0
+
+/** Default idle time in milliseconds for auto deep sleep */
+#define DEEP_SLEEP_IDLE_TIME 100
+
+typedef struct _mlan_ds_auto_ds {
+ /** auto ds mode, 0 - disable, 1 - enable */
+ t_u16 auto_ds;
+ /** auto ds idle time in milliseconds */
+ t_u16 idletime;
+} mlan_ds_auto_ds;
+
+/** Type definition of mlan_ds_inactivity_to
+ * for MLAN_OID_PM_CFG_INACTIVITY_TO
+ */
+typedef struct _mlan_ds_inactivity_to {
+ /** Timeout unit in microsecond, 0 means 1000us (1ms) */
+ t_u32 timeout_unit;
+ /** Inactivity timeout for unicast data */
+ t_u32 unicast_timeout;
+ /** Inactivity timeout for multicast data */
+ t_u32 mcast_timeout;
+ /** Timeout for additional Rx traffic after Null PM1 packet exchange */
+ t_u32 ps_entry_timeout;
+} mlan_ds_inactivity_to, *pmlan_ds_inactivity_to;
+
+/** Minimum sleep period in milliseconds */
+#define MIN_SLEEP_PERIOD 10
+/** Maximum sleep period in milliseconds */
+#define MAX_SLEEP_PERIOD 60
+/** Special setting for UPSD certification tests */
+#define SLEEP_PERIOD_RESERVED_FF 0xFF
+
+/** PS null interval disable */
+#define PS_NULL_DISABLE (-1)
+
+/** Local listen interval disable */
+#define MRVDRV_LISTEN_INTERVAL_DISABLE (-1)
+/** Minimum listen interval */
+#define MRVDRV_MIN_LISTEN_INTERVAL 0
+
+/** Minimum multiple DTIM */
+#define MRVDRV_MIN_MULTIPLE_DTIM 0
+/** Maximum multiple DTIM */
+#define MRVDRV_MAX_MULTIPLE_DTIM 5
+/** Ignore multiple DTIM */
+#define MRVDRV_IGNORE_MULTIPLE_DTIM 0xfffe
+/** Match listen interval to closest DTIM */
+#define MRVDRV_MATCH_CLOSEST_DTIM 0xfffd
+
+/** Minimum beacon miss timeout in milliseconds */
+#define MIN_BCN_MISS_TO 0
+/** Maximum beacon miss timeout in milliseconds */
+#define MAX_BCN_MISS_TO 50
+/** Disable beacon miss timeout */
+#define DISABLE_BCN_MISS_TO 65535
+
+/** Minimum delay to PS in milliseconds */
+#define MIN_DELAY_TO_PS 0
+/** Maximum delay to PS in milliseconds */
+#define MAX_DELAY_TO_PS 65535
+/** Delay to PS unchanged */
+#define DELAY_TO_PS_UNCHANGED (-1)
+/** Default delay to PS in milliseconds */
+#define DELAY_TO_PS_DEFAULT 1000
+
+/** PS mode: Unchanged */
+#define PS_MODE_UNCHANGED 0
+/** PS mode: Auto */
+#define PS_MODE_AUTO 1
+/** PS mode: Poll */
+#define PS_MODE_POLL 2
+/** PS mode: Null */
+#define PS_MODE_NULL 3
+
+/** Type definition of mlan_ds_ps_cfg for MLAN_OID_PM_CFG_PS_CFG */
+typedef struct _mlan_ds_ps_cfg {
+ /** PS null interval in seconds */
+ t_u32 ps_null_interval;
+ /** Multiple DTIM interval */
+ t_u32 multiple_dtim_interval;
+ /** Listen interval */
+ t_u32 listen_interval;
+ /** Beacon miss timeout in milliseconds */
+ t_u32 bcn_miss_timeout;
+ /** Delay to PS in milliseconds */
+ t_s32 delay_to_ps;
+ /** PS mode */
+ t_u32 ps_mode;
+} mlan_ds_ps_cfg, *pmlan_ds_ps_cfg;
+
+/** Type definition of mlan_ds_sleep_params for MLAN_OID_PM_CFG_SLEEP_PARAMS */
+typedef struct _mlan_ds_sleep_params {
+ /** Error */
+ t_u32 error;
+ /** Offset in microseconds */
+ t_u32 offset;
+ /** Stable time in microseconds */
+ t_u32 stable_time;
+ /** Calibration control */
+ t_u32 cal_control;
+ /** External sleep clock */
+ t_u32 ext_sleep_clk;
+ /** Reserved */
+ t_u32 reserved;
+} mlan_ds_sleep_params, *pmlan_ds_sleep_params;
+
+/** sleep_param */
+typedef struct _ps_sleep_param {
+ /** control bitmap */
+ t_u32 ctrl_bitmap;
+ /** minimum sleep period (micro second) */
+ t_u32 min_sleep;
+ /** maximum sleep period (micro second) */
+ t_u32 max_sleep;
+} ps_sleep_param;
+
+/** inactivity sleep_param */
+typedef struct _inact_sleep_param {
+ /** inactivity timeout (micro second) */
+ t_u32 inactivity_to;
+ /** miniumu awake period (micro second) */
+ t_u32 min_awake;
+ /** maximum awake period (micro second) */
+ t_u32 max_awake;
+} inact_sleep_param;
+
+/** flag for ps mode */
+#define PS_FLAG_PS_MODE 1
+/** flag for sleep param */
+#define PS_FLAG_SLEEP_PARAM 2
+/** flag for inactivity sleep param */
+#define PS_FLAG_INACT_SLEEP_PARAM 4
+
+/** Enable Robust Coex mode */
+#define ROBUSTCOEX_GPIOCFG_ENABLE 1
+/** Disable Robust Coex mode */
+#define ROBUSTCOEX_GPIOCFG_DISABLE 0
+
+/** Disable power mode */
+#define PS_MODE_DISABLE 0
+/** Enable periodic dtim ps */
+#define PS_MODE_PERIODIC_DTIM 1
+/** Enable inactivity ps */
+#define PS_MODE_INACTIVITY 2
+/** FW wake up method interface */
+#define FW_WAKEUP_METHOD_INTERFACE 1
+/** FW wake up method gpio */
+#define FW_WAKEUP_METHOD_GPIO 2
+/** mlan_ds_ps_mgmt */
+typedef struct _mlan_ds_ps_mgmt {
+ /** flags for valid field */
+ t_u16 flags;
+ /** power mode */
+ t_u16 ps_mode;
+ /** sleep param */
+ ps_sleep_param sleep_param;
+ /** inactivity sleep param */
+ inact_sleep_param inact_param;
+} mlan_ds_ps_mgmt;
+
+/** mlan_ds_ps_info */
+typedef struct _mlan_ds_ps_info {
+ /** suspend allowed flag */
+ t_u32 is_suspend_allowed;
+} mlan_ds_ps_info;
+
+/** Type definition of mlan_ds_wakeup_reason for MLAN_OID_PM_HS_WAKEUP_REASON */
+typedef struct _mlan_ds_hs_wakeup_reason {
+ t_u16 hs_wakeup_reason;
+} mlan_ds_hs_wakeup_reason;
+
+/** Type definition of mlan_ds_ps_cfg for MLAN_OID_PM_CFG_PS_CFG */
+typedef struct _mlan_ds_bcn_timeout {
+ /** Beacon miss timeout period window */
+ t_u16 bcn_miss_tmo_window;
+ /** Beacon miss timeout period */
+ t_u16 bcn_miss_tmo_period;
+ /** Beacon reacquire timeout period window */
+ t_u16 bcn_rq_tmo_window;
+ /** Beacon reacquire timeout period */
+ t_u16 bcn_rq_tmo_period;
+} mlan_ds_bcn_timeout, *pmlan_ds_bcn_timeout;
+
+/** Type definition of mlan_ds_pm_cfg for MLAN_IOCTL_PM_CFG */
+typedef struct _mlan_ds_pm_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Power management parameter */
+ union {
+ /** Power saving mode for MLAN_OID_PM_CFG_IEEE_PS */
+ t_u32 ps_mode;
+ /** Host Sleep configuration for MLAN_OID_PM_CFG_HS_CFG */
+ mlan_ds_hs_cfg hs_cfg;
+ /** Deep sleep mode for MLAN_OID_PM_CFG_DEEP_SLEEP */
+ mlan_ds_auto_ds auto_deep_sleep;
+ /** Inactivity timeout for MLAN_OID_PM_CFG_INACTIVITY_TO */
+ mlan_ds_inactivity_to inactivity_to;
+ /** Sleep period for MLAN_OID_PM_CFG_SLEEP_PD */
+ t_u32 sleep_period;
+ /** PS configuration parameters for MLAN_OID_PM_CFG_PS_CFG */
+ mlan_ds_ps_cfg ps_cfg;
+ /** PS configuration parameters for MLAN_OID_PM_CFG_SLEEP_PARAMS
+ */
+ mlan_ds_sleep_params sleep_params;
+ /** PS configuration parameters for MLAN_OID_PM_CFG_PS_MODE */
+ mlan_ds_ps_mgmt ps_mgmt;
+ /** power info for MLAN_OID_PM_INFO */
+ mlan_ds_ps_info ps_info;
+ /** hs wakeup reason for MLAN_OID_PM_HS_WAKEUP_REASON */
+ mlan_ds_hs_wakeup_reason wakeup_reason;
+ /** config manamgement frame for hs wakeup */
+ mlan_mgmt_frame_wakeup mgmt_filter[MAX_MGMT_FRAME_FILTER];
+ /** Beacon timout parameters for MLAN_OID_PM_CFG_BCN_TIMEOUT */
+ mlan_ds_bcn_timeout bcn_timeout;
+ } param;
+} mlan_ds_pm_cfg, *pmlan_ds_pm_cfg;
+
+#ifdef RX_PACKET_COALESCE
+typedef struct {
+ mlan_cmd_result_e cmd_result; /**< Firmware execution result */
+
+ t_u32 pkt_threshold; /** Packet threshold */
+ t_u16 delay; /** Timeout value in milliseconds */
+} wlan_ioctl_rx_pkt_coalesce_config_t;
+#endif
+
+/*-----------------------------------------------------------------*/
+/** WMM Configuration Group */
+/*-----------------------------------------------------------------*/
+
+/** WMM TSpec size */
+#define MLAN_WMM_TSPEC_SIZE 63
+/** WMM Add TS extra IE bytes */
+#define MLAN_WMM_ADDTS_EXTRA_IE_BYTES 256
+/** WMM statistics for packets hist bins */
+#define MLAN_WMM_STATS_PKTS_HIST_BINS 7
+/** Maximum number of AC QOS queues available */
+#define MLAN_WMM_MAX_AC_QUEUES 4
+
+/**
+ * @brief IOCTL structure to send an ADDTS request and retrieve the response.
+ *
+ * IOCTL structure from the application layer relayed to firmware to
+ * instigate an ADDTS management frame with an appropriate TSPEC IE as well
+ * as any additional IEs appended in the ADDTS Action frame.
+ *
+ * @sa woal_wmm_addts_req_ioctl
+ */
+typedef struct {
+ mlan_cmd_result_e cmd_result; /**< Firmware execution result */
+
+ t_u32 timeout_ms; /**< Timeout value in milliseconds */
+ t_u8 ieee_status_code; /**< IEEE status code */
+
+ t_u32 ie_data_len; /**< Length of ie block in ie_data */
+ t_u8 ie_data[MLAN_WMM_TSPEC_SIZE /**< TSPEC to send in the ADDTS */
+ + MLAN_WMM_ADDTS_EXTRA_IE_BYTES]; /**< Extra IE buf*/
+} wlan_ioctl_wmm_addts_req_t;
+
+/**
+ * @brief IOCTL structure to send a DELTS request.
+ *
+ * IOCTL structure from the application layer relayed to firmware to
+ * instigate an DELTS management frame with an appropriate TSPEC IE.
+ *
+ * @sa woal_wmm_delts_req_ioctl
+ */
+typedef struct {
+ mlan_cmd_result_e cmd_result; /**< Firmware execution result */
+ t_u8 ieee_reason_code; /**< IEEE reason code sent, unused for WMM */
+ t_u32 ie_data_len; /**< Length of ie block in ie_data */
+ t_u8 ie_data[MLAN_WMM_TSPEC_SIZE]; /**< TSPEC to send in the DELTS */
+} wlan_ioctl_wmm_delts_req_t;
+
+/**
+ * @brief IOCTL structure to configure a specific AC Queue's parameters
+ *
+ * IOCTL structure from the application layer relayed to firmware to
+ * get, set, or default the WMM AC queue parameters.
+ *
+ * - msdu_lifetime_expiry is ignored if set to 0 on a set command
+ *
+ * @sa woal_wmm_queue_config_ioctl
+ */
+typedef struct {
+ mlan_wmm_queue_config_action_e action; /**< Set, Get, or Default */
+ mlan_wmm_ac_e access_category; /**< WMM_AC_BK(0) to WMM_AC_VO(3) */
+ t_u16 msdu_lifetime_expiry; /**< lifetime expiry in TUs */
+ t_u8 supported_rates[10]; /**< Not supported yet */
+} wlan_ioctl_wmm_queue_config_t;
+
+/**
+ * @brief IOCTL structure to start, stop, and get statistics for a WMM AC
+ *
+ * IOCTL structure from the application layer relayed to firmware to
+ * start or stop statistical collection for a given AC. Also used to
+ * retrieve and clear the collected stats on a given AC.
+ *
+ * @sa woal_wmm_queue_stats_ioctl
+ */
+typedef struct {
+ /** Action of Queue Config : Start, Stop, or Get */
+ mlan_wmm_queue_stats_action_e action;
+ /** User Priority */
+ t_u8 user_priority;
+ /** Number of successful packets transmitted */
+ t_u16 pkt_count;
+ /** Packets lost; not included in pkt_count */
+ t_u16 pkt_loss;
+ /** Average Queue delay in microseconds */
+ t_u32 avg_queue_delay;
+ /** Average Transmission delay in microseconds */
+ t_u32 avg_tx_delay;
+ /** Calculated used time in units of 32 microseconds */
+ t_u16 used_time;
+ /** Calculated policed time in units of 32 microseconds */
+ t_u16 policed_time;
+ /** Queue Delay Histogram; number of packets per queue delay range
+ *
+ * [0] - 0ms <= delay < 5ms
+ * [1] - 5ms <= delay < 10ms
+ * [2] - 10ms <= delay < 20ms
+ * [3] - 20ms <= delay < 30ms
+ * [4] - 30ms <= delay < 40ms
+ * [5] - 40ms <= delay < 50ms
+ * [6] - 50ms <= delay < msduLifetime (TUs)
+ */
+ t_u16 delay_histogram[MLAN_WMM_STATS_PKTS_HIST_BINS];
+} wlan_ioctl_wmm_queue_stats_t,
+ /** Type definition of mlan_ds_wmm_queue_stats
+ * for MLAN_OID_WMM_CFG_QUEUE_STATS
+ */
+ mlan_ds_wmm_queue_stats, *pmlan_ds_wmm_queue_stats;
+
+/**
+ * @brief IOCTL sub structure for a specific WMM AC Status
+ */
+typedef struct {
+ /** WMM Acm */
+ t_u8 wmm_acm;
+ /** Flow required flag */
+ t_u8 flow_required;
+ /** Flow created flag */
+ t_u8 flow_created;
+ /** Disabled flag */
+ t_u8 disabled;
+} wlan_ioctl_wmm_queue_status_ac_t;
+
+/**
+ * @brief IOCTL structure to retrieve the WMM AC Queue status
+ *
+ * IOCTL structure from the application layer to retrieve:
+ * - ACM bit setting for the AC
+ * - Firmware status (flow required, flow created, flow disabled)
+ *
+ * @sa woal_wmm_queue_status_ioctl
+ */
+typedef struct {
+ /** WMM AC queue status */
+ wlan_ioctl_wmm_queue_status_ac_t ac_status[MLAN_WMM_MAX_AC_QUEUES];
+} wlan_ioctl_wmm_queue_status_t,
+ /** Type definition of mlan_ds_wmm_queue_status
+ * for MLAN_OID_WMM_CFG_QUEUE_STATUS
+ */
+ mlan_ds_wmm_queue_status, *pmlan_ds_wmm_queue_status;
+
+/** Type definition of mlan_ds_wmm_addts for MLAN_OID_WMM_CFG_ADDTS */
+typedef struct _mlan_ds_wmm_addts {
+ /** Result of ADDTS request */
+ mlan_cmd_result_e result;
+ /** Timeout value in milliseconds */
+ t_u32 timeout;
+ /** IEEE status code */
+ t_u32 status_code;
+ /** Dialog token */
+ t_u8 dialog_tok;
+ /** TSPEC data length */
+ t_u32 ie_data_len;
+ /** TSPEC to send in the ADDTS + buffering for any extra IEs */
+ t_u8 ie_data[MLAN_WMM_TSPEC_SIZE + MLAN_WMM_ADDTS_EXTRA_IE_BYTES];
+} mlan_ds_wmm_addts, *pmlan_ds_wmm_addts;
+
+/** Type definition of mlan_ds_wmm_delts for MLAN_OID_WMM_CFG_DELTS */
+typedef struct _mlan_ds_wmm_delts {
+ /** Result of DELTS request */
+ mlan_cmd_result_e result;
+ /** IEEE status code */
+ t_u32 status_code;
+ /** TSPEC data length */
+ t_u8 ie_data_len;
+ /** TSPEC to send in the DELTS */
+ t_u8 ie_data[MLAN_WMM_TSPEC_SIZE];
+} mlan_ds_wmm_delts, *pmlan_ds_wmm_delts;
+
+/** Type definition of mlan_ds_wmm_queue_config
+ * for MLAN_OID_WMM_CFG_QUEUE_CONFIG
+ */
+typedef struct _mlan_ds_wmm_queue_config {
+ /** Action of Queue Config : Set, Get, or Default */
+ mlan_wmm_queue_config_action_e action;
+ /** WMM Access Category: WMM_AC_BK(0) to WMM_AC_VO(3) */
+ mlan_wmm_ac_e access_category;
+ /** Lifetime expiry in TUs */
+ t_u16 msdu_lifetime_expiry;
+ /** Reserve for future use */
+ t_u8 reserved[10];
+} mlan_ds_wmm_queue_config, *pmlan_ds_wmm_queue_config;
+
+/** Type definition of mlan_ds_wmm_cfg for MLAN_IOCTL_WMM_CFG */
+typedef struct _mlan_ds_wmm_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** WMM configuration parameter */
+ union {
+ /** WMM enable for MLAN_OID_WMM_CFG_ENABLE */
+ t_u32 wmm_enable;
+ /** QoS configuration for MLAN_OID_WMM_CFG_QOS */
+ t_u8 qos_cfg;
+ /** WMM add TS for MLAN_OID_WMM_CFG_ADDTS */
+ mlan_ds_wmm_addts addts;
+ /** WMM delete TS for MLAN_OID_WMM_CFG_DELTS */
+ mlan_ds_wmm_delts delts;
+ /** WMM queue configuration for MLAN_OID_WMM_CFG_QUEUE_CONFIG */
+ mlan_ds_wmm_queue_config q_cfg;
+ /** AC Parameters Record WMM_AC_BE, WMM_AC_BK, WMM_AC_VI,
+ * WMM_AC_VO */
+ wmm_ac_parameters_t ac_params[MAX_AC_QUEUES];
+ /** WMM queue status for MLAN_OID_WMM_CFG_QUEUE_STATS */
+ mlan_ds_wmm_queue_stats q_stats;
+ /** WMM queue status for MLAN_OID_WMM_CFG_QUEUE_STATUS */
+ mlan_ds_wmm_queue_status q_status;
+ /** WMM TS status for MLAN_OID_WMM_CFG_TS_STATUS */
+ mlan_ds_wmm_ts_status ts_status;
+ } param;
+} mlan_ds_wmm_cfg, *pmlan_ds_wmm_cfg;
+
+/*-----------------------------------------------------------------*/
+/** WPS Configuration Group */
+/*-----------------------------------------------------------------*/
+/** Enumeration for WPS session */
+enum _mlan_wps_status {
+ MLAN_WPS_CFG_SESSION_START = 1,
+ MLAN_WPS_CFG_SESSION_END = 0
+};
+
+/** Type definition of mlan_ds_wps_cfg for MLAN_IOCTL_WPS_CFG */
+typedef struct _mlan_ds_wps_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** WPS configuration parameter */
+ union {
+ /** WPS session for MLAN_OID_WPS_CFG_SESSION */
+ t_u32 wps_session;
+ } param;
+} mlan_ds_wps_cfg, *pmlan_ds_wps_cfg;
+
+/*-----------------------------------------------------------------*/
+/** 802.11n Configuration Group */
+/*-----------------------------------------------------------------*/
+/** Maximum MCS */
+#define NUM_MCS_FIELD 16
+
+/** Supported stream modes */
+#define HT_STREAM_MODE_1X1 0x11
+#define HT_STREAM_MODE_2X2 0x22
+
+/* Both 2.4G and 5G band selected */
+#define BAND_SELECT_BOTH 0
+/* Band 2.4G selected */
+#define BAND_SELECT_BG 1
+/* Band 5G selected */
+#define BAND_SELECT_A 2
+
+/** Type definition of mlan_ds_11n_htcap_cfg for MLAN_OID_11N_HTCAP_CFG */
+typedef struct _mlan_ds_11n_htcap_cfg {
+ /** HT Capability information */
+ t_u32 htcap;
+ /** Band selection */
+ t_u32 misc_cfg;
+ /** Hardware HT cap information required */
+ t_u32 hw_cap_req;
+} mlan_ds_11n_htcap_cfg, *pmlan_ds_11n_htcap_cfg;
+
+/** Type definition of mlan_ds_11n_addba_param
+ * for MLAN_OID_11N_CFG_ADDBA_PARAM
+ */
+typedef struct _mlan_ds_11n_addba_param {
+ /** Timeout */
+ t_u32 timeout;
+ /** Buffer size for ADDBA request */
+ t_u32 txwinsize;
+ /** Buffer size for ADDBA response */
+ t_u32 rxwinsize;
+ /** amsdu for ADDBA request */
+ t_u8 txamsdu;
+ /** amsdu for ADDBA response */
+ t_u8 rxamsdu;
+} mlan_ds_11n_addba_param, *pmlan_ds_11n_addba_param;
+
+/** Type definition of mlan_ds_11n_tx_cfg for MLAN_OID_11N_CFG_TX */
+typedef struct _mlan_ds_11n_tx_cfg {
+ /** HTTxCap */
+ t_u16 httxcap;
+ /** HTTxInfo */
+ t_u16 httxinfo;
+ /** Band selection */
+ t_u32 misc_cfg;
+} mlan_ds_11n_tx_cfg, *pmlan_ds_11n_tx_cfg;
+
+/** BF Global Configuration */
+#define BF_GLOBAL_CONFIGURATION 0x00
+/** Performs NDP sounding for PEER specified */
+#define TRIGGER_SOUNDING_FOR_PEER 0x01
+/** TX BF interval for channel sounding */
+#define SET_GET_BF_PERIODICITY 0x02
+/** Tell FW not to perform any sounding for peer */
+#define TX_BF_FOR_PEER_ENBL 0x03
+/** TX BF SNR threshold for peer */
+#define SET_SNR_THR_PEER 0x04
+/** TX Sounding*/
+#define TX_SOUNDING_CFG 0x05
+
+/* Maximum number of peer MAC and status/SNR tuples */
+#define MAX_PEER_MAC_TUPLES 10
+
+/** Any new subcommand structure should be declare here */
+
+/** bf global cfg args */
+typedef struct _mlan_bf_global_cfg_args {
+ /** Global enable/disable bf */
+ t_u8 bf_enbl;
+ /** Global enable/disable sounding */
+ t_u8 sounding_enbl;
+ /** FB Type */
+ t_u8 fb_type;
+ /** SNR Threshold */
+ t_u8 snr_threshold;
+ /** Sounding interval in milliseconds */
+ t_u16 sounding_interval;
+ /** BF mode */
+ t_u8 bf_mode;
+ /** Reserved */
+ t_u8 reserved;
+} mlan_bf_global_cfg_args;
+
+/** trigger sounding args */
+typedef struct _mlan_trigger_sound_args {
+ /** Peer MAC address */
+ t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
+ /** Status */
+ t_u8 status;
+} mlan_trigger_sound_args;
+
+/** bf periodicity args */
+typedef struct _mlan_bf_periodicity_args {
+ /** Peer MAC address */
+ t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
+ /** Current Tx BF Interval in milliseconds */
+ t_u16 interval;
+ /** Status */
+ t_u8 status;
+} mlan_bf_periodicity_args;
+
+/** tx bf peer args */
+typedef struct _mlan_tx_bf_peer_args {
+ /** Peer MAC address */
+ t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
+ /** Reserved */
+ t_u16 reserved;
+ /** Enable/Disable Beamforming */
+ t_u8 bf_enbl;
+ /** Enable/Disable sounding */
+ t_u8 sounding_enbl;
+ /** FB Type */
+ t_u8 fb_type;
+} mlan_tx_bf_peer_args;
+
+/** SNR threshold args */
+typedef struct _mlan_snr_thr_args {
+ /** Peer MAC address */
+ t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
+ /** SNR for peer */
+ t_u8 snr;
+} mlan_snr_thr_args;
+
+/** Type definition of mlan_ds_11n_tx_bf_cfg for MLAN_OID_11N_CFG_TX_BF_CFG */
+typedef struct _mlan_ds_11n_tx_bf_cfg {
+ /** BF Action */
+ t_u16 bf_action;
+ /** Action */
+ t_u16 action;
+ /** Number of peers */
+ t_u32 no_of_peers;
+ union {
+ mlan_bf_global_cfg_args bf_global_cfg;
+ mlan_trigger_sound_args bf_sound[MAX_PEER_MAC_TUPLES];
+ mlan_bf_periodicity_args bf_periodicity[MAX_PEER_MAC_TUPLES];
+ mlan_tx_bf_peer_args tx_bf_peer[MAX_PEER_MAC_TUPLES];
+ mlan_snr_thr_args bf_snr[MAX_PEER_MAC_TUPLES];
+ } body;
+} mlan_ds_11n_tx_bf_cfg, *pmlan_ds_11n_tx_bf_cfg;
+
+/** Type definition of mlan_ds_11n_amsdu_aggr_ctrl for
+ * MLAN_OID_11N_AMSDU_AGGR_CTRL*/
+typedef struct _mlan_ds_11n_amsdu_aggr_ctrl {
+ /** Enable/Disable */
+ t_u16 enable;
+ /** Current AMSDU size valid */
+ t_u16 curr_buf_size;
+} mlan_ds_11n_amsdu_aggr_ctrl, *pmlan_ds_11n_amsdu_aggr_ctrl;
+
+/** Type definition of mlan_ds_11n_aggr_prio_tbl
+ * for MLAN_OID_11N_CFG_AGGR_PRIO_TBL
+ */
+typedef struct _mlan_ds_11n_aggr_prio_tbl {
+ /** ampdu priority table */
+ t_u8 ampdu[MAX_NUM_TID];
+ /** amsdu priority table */
+ t_u8 amsdu[MAX_NUM_TID];
+} mlan_ds_11n_aggr_prio_tbl, *pmlan_ds_11n_aggr_prio_tbl;
+
+/** DelBA All TIDs */
+#define DELBA_ALL_TIDS 0xff
+/** DelBA Tx */
+#define DELBA_TX MBIT(0)
+/** DelBA Rx */
+#define DELBA_RX MBIT(1)
+
+/** Type definition of mlan_ds_11n_delba for MLAN_OID_11N_CFG_DELBA */
+typedef struct _mlan_ds_11n_delba {
+ /** TID */
+ t_u8 tid;
+ /** Peer MAC address */
+ t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH];
+ /** Direction (Tx: bit 0, Rx: bit 1) */
+ t_u8 direction;
+} mlan_ds_11n_delba, *pmlan_ds_11n_delba;
+
+/** Type definition of mlan_ds_delba for MLAN_OID_11N_CFG_REJECT_ADDBA_REQ */
+typedef struct _mlan_ds_reject_addba_req {
+ /** Bit0 : host sleep activated
+ * Bit1 : auto reconnect enabled
+ * Others : reserved
+ */
+ t_u32 conditions;
+} mlan_ds_reject_addba_req, *pmlan_ds_reject_addba_req;
+
+/** Type definition of mlan_ds_ibss_ampdu_param */
+typedef struct _mlan_ds_ibss_ampdu_param {
+ /** ampdu priority table */
+ t_u8 ampdu[MAX_NUM_TID];
+ /** rx amdpdu setting */
+ t_u8 addba_reject[MAX_NUM_TID];
+} mlan_ds_ibss_ampdu_param, *pmlan_ds_ibss_ampdu_param;
+
+/** Type definition of mlan_ds_11n_cfg for MLAN_IOCTL_11N_CFG */
+typedef struct _mlan_ds_11n_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** 802.11n configuration parameter */
+ union {
+ /** Tx param for 11n for MLAN_OID_11N_CFG_TX */
+ mlan_ds_11n_tx_cfg tx_cfg;
+ /** Aggr priority table for MLAN_OID_11N_CFG_AGGR_PRIO_TBL */
+ mlan_ds_11n_aggr_prio_tbl aggr_prio_tbl;
+ /** Add BA param for MLAN_OID_11N_CFG_ADDBA_PARAM */
+ mlan_ds_11n_addba_param addba_param;
+ /** Add BA Reject paramters for MLAN_OID_11N_CFG_ADDBA_REJECT */
+ t_u8 addba_reject[MAX_NUM_TID];
+ /** Tx buf size for MLAN_OID_11N_CFG_MAX_TX_BUF_SIZE */
+ t_u32 tx_buf_size;
+ /** HT cap info configuration for MLAN_OID_11N_HTCAP_CFG */
+ mlan_ds_11n_htcap_cfg htcap_cfg;
+ /** Tx param for 11n for MLAN_OID_11N_AMSDU_AGGR_CTRL */
+ mlan_ds_11n_amsdu_aggr_ctrl amsdu_aggr_ctrl;
+ /** Supported MCS Set field */
+ t_u8 supported_mcs_set[NUM_MCS_FIELD];
+ /** Transmit Beamforming Capabilities field */
+ t_u32 tx_bf_cap;
+ /** Transmit Beamforming configuration */
+ mlan_ds_11n_tx_bf_cfg tx_bf;
+ /** HT stream configuration */
+ t_u32 stream_cfg;
+ /** DelBA for MLAN_OID_11N_CFG_DELBA */
+ mlan_ds_11n_delba del_ba;
+ /** Reject Addba Req for MLAN_OID_11N_CFG_REJECT_ADDBA_REQ */
+ mlan_ds_reject_addba_req reject_addba_req;
+ /** Control coex RX window size configuration */
+ t_u32 coex_rx_winsize;
+ /** aggrprirotity table for MLAN_OID_11N_CFG_IBSS_AMPDU_PARAM */
+ mlan_ds_ibss_ampdu_param ibss_ampdu;
+ /** Minimum BA Threshold for MLAN_OID_11N_CFG_MIN_BA_THRESHOLD
+ */
+ t_u8 min_ba_threshold;
+ } param;
+} mlan_ds_11n_cfg, *pmlan_ds_11n_cfg;
+
+#define NUM_MCS_SUPP 20
+#define VHT_MCS_SET_LEN 8
+
+/** Type definition of mlan_ds_11ac_vhtcap_cfg for MLAN_OID_11AC_VHTCAP_CFG */
+typedef struct _mlan_ds_11ac_vhtcap_cfg {
+ /** HT Capability information */
+ t_u32 vhtcap;
+ /** Band selection */
+ t_u32 misc_cfg;
+ /** Hardware HT cap information required */
+ t_u32 hw_cap_req;
+} mlan_ds_11ac_vhtcap_cfg, *pmlan_ds_11ac_vhtcap_cfg;
+
+/** Type definition of mlan_ds_11ac_tx_cfg for MLAN_OID_11AC_CFG_TX */
+typedef struct _mlan_ds_11ac_tx_cfg {
+ /** Band selection */
+ t_u8 band_cfg;
+ /** misc configuration */
+ t_u8 misc_cfg;
+ /** HTTxCap */
+ t_u16 vhttxcap;
+ /** HTTxInfo */
+ t_u16 vhttxinfo;
+} mlan_ds_11ac_tx_cfg, *pmlan_ds_11ac_tx_cfg;
+
+/** Tx */
+#define MLAN_RADIO_TX MBIT(0)
+/** Rx */
+#define MLAN_RADIO_RX MBIT(1)
+/** Tx & Rx */
+#define MLAN_RADIO_TXRX (MLAN_RADIO_TX | MLAN_RADIO_RX)
+
+/** Type definition of mlan_ds_11ac_tx_cfg for MLAN_OID_11AC_CFG */
+typedef struct _mlan_ds_11ac_vht_cfg {
+ /** Band selection (1: 2.4G, 2: 5 G, 3: both 2.4G and 5G) */
+ t_u32 band;
+ /** TxRx (1: Tx, 2: Rx, 3: both Tx and Rx) */
+ t_u32 txrx;
+ /** BW CFG (0: 11N CFG, 1: vhtcap) */
+ t_u32 bwcfg;
+ /** VHT capabilities. */
+ t_u32 vht_cap_info;
+ /** VHT Tx mcs */
+ t_u32 vht_tx_mcs;
+ /** VHT Rx mcs */
+ t_u32 vht_rx_mcs;
+ /** VHT rx max rate */
+ t_u16 vht_rx_max_rate;
+ /** VHT max tx rate */
+ t_u16 vht_tx_max_rate;
+ /** Skip usr 11ac mcs cfg */
+ t_bool skip_usr_11ac_mcs_cfg;
+} mlan_ds_11ac_vht_cfg, *pmlan_ds_11ac_vht_cfg;
+
+/** Type definition of mlan_ds_11ac_tx_cfg for MLAN_OID_11AC_CFG */
+typedef struct _mlan_ds_11ac_opermode_cfg {
+ /** channel width: 1-20MHz, 2-40MHz, 3-80MHz, 4-160MHz or 80+80MHz */
+ t_u8 bw;
+ /** Rx NSS */
+ t_u8 nss;
+} mlan_ds_11ac_opermode_cfg, *pmlan_ds_11ac_opermode_cfg;
+
+/** Type definition of mlan_ds_11ac_cfg for MLAN_IOCTL_11AC_CFG */
+typedef struct _mlan_ds_11ac_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** 802.11n configuration parameter */
+ union {
+ /** VHT configuration for MLAN_OID_11AC_VHT_CFG */
+ mlan_ds_11ac_vht_cfg vht_cfg;
+ /** Supported MCS Set field */
+ t_u8 supported_mcs_set[NUM_MCS_SUPP];
+ /** Oper mode configuration for MLAN_OID_11AC_OPERMODE_CFG */
+ mlan_ds_11ac_opermode_cfg opermode_cfg;
+ } param;
+} mlan_ds_11ac_cfg, *pmlan_ds_11ac_cfg;
+
+/** Type definition of mlan_ds_11ax_he_capa for MLAN_OID_11AX_HE_CFG */
+typedef MLAN_PACK_START struct _mlan_ds_11ax_he_capa {
+ /** tlv id of he capability */
+ t_u16 id;
+ /** length of the payload */
+ t_u16 len;
+ /** extension id */
+ t_u8 ext_id;
+ /** he mac capability info */
+ t_u8 he_mac_cap[6];
+ /** he phy capability info */
+ t_u8 he_phy_cap[11];
+ /** he txrx mcs support for 80MHz */
+ t_u8 he_txrx_mcs_support[4];
+ /** val for txrx mcs 160Mhz or 80+80, and PPE thresholds */
+ t_u8 val[28];
+} MLAN_PACK_END mlan_ds_11ax_he_capa, *pmlan_ds_11ax_he_capa;
+
+/** Type definition of mlan_ds_11ax_he_cfg for MLAN_OID_11AX_HE_CFG */
+typedef struct _mlan_ds_11ax_he_cfg {
+ /** band, BIT0:2.4G, BIT1:5G*/
+ t_u8 band;
+ /** mlan_ds_11ax_he_capa */
+ mlan_ds_11ax_he_capa he_cap;
+} mlan_ds_11ax_he_cfg, *pmlan_ds_11ax_he_cfg;
+/** Type definition of mlan_ds_11as_cfg for MLAN_IOCTL_11AX_CFG */
+typedef struct _mlan_ds_11ax_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** 802.11n configuration parameter */
+ union {
+ /** HE configuration for MLAN_OID_11AX_HE_CFG */
+ mlan_ds_11ax_he_cfg he_cfg;
+ } param;
+} mlan_ds_11ax_cfg, *pmlan_ds_11ax_cfg;
+
+#define MLAN_11AXCMD_CFG_ID_SR_OBSS_PD_OFFSET 1
+#define MLAN_11AXCMD_CFG_ID_SR_ENABLE 2
+#define MLAN_11AXCMD_CFG_ID_BEAM_CHANGE 3
+#define MLAN_11AXCMD_CFG_ID_HTC_ENABLE 4
+#define MLAN_11AXCMD_CFG_ID_TXOP_RTS 5
+#define MLAN_11AXCMD_CFG_ID_TX_OMI 6
+#define MLAN_11AXCMD_CFG_ID_OBSSNBRU_TOLTIME 7
+
+#define MLAN_11AXCMD_SR_SUBID 0x102
+#define MLAN_11AXCMD_BEAM_SUBID 0x103
+#define MLAN_11AXCMD_HTC_SUBID 0x104
+#define MLAN_11AXCMD_TXOMI_SUBID 0x105
+#define MLAN_11AXCMD_OBSS_TOLTIME_SUBID 0x106
+#define MLAN_11AXCMD_TXOPRTS_SUBID 0x108
+
+#define MLAN_11AX_TWT_SETUP_SUBID 0x114
+#define MLAN_11AX_TWT_TEARDOWN_SUBID 0x115
+
+#define MRVL_DOT11AX_ENABLE_SR_TLV_ID (PROPRIETARY_TLV_BASE_ID + 322)
+#define MRVL_DOT11AX_OBSS_PD_OFFSET_TLV_ID (PROPRIETARY_TLV_BASE_ID + 323)
+
+/** Type definition of mlan_11axcmdcfg_obss_pd_offset for MLAN_OID_11AX_CMD_CFG
+ */
+typedef struct MLAN_PACK_START _mlan_11axcmdcfg_obss_pd_offset {
+ /** <NON_SRG_OffSET, SRG_OFFSET> */
+ t_u8 offset[2];
+} MLAN_PACK_END mlan_11axcmdcfg_obss_pd_offset;
+
+/** Type definition of mlan_11axcmdcfg_sr_control for MLAN_OID_11AX_CMD_CFG */
+typedef struct MLAN_PACK_START _mlan_11axcmdcfg_sr_control {
+ /** 1 enable, 0 disable */
+ t_u8 control;
+} MLAN_PACK_END mlan_11axcmdcfg_sr_control;
+
+/** Type definition of mlan_ds_11ax_sr_cmd for MLAN_OID_11AX_CMD_CFG */
+typedef struct MLAN_PACK_START _mlan_ds_11ax_sr_cmd {
+ /** type*/
+ t_u16 type;
+ /** length of TLV */
+ t_u16 len;
+ /** value */
+ union {
+ mlan_11axcmdcfg_obss_pd_offset obss_pd_offset;
+ mlan_11axcmdcfg_sr_control sr_control;
+ } param;
+} MLAN_PACK_END mlan_ds_11ax_sr_cmd, *pmlan_ds_11ax_sr_cmd;
+
+/** Type definition of mlan_ds_11ax_beam_cmd for MLAN_OID_11AX_CMD_CFG */
+typedef struct _mlan_ds_11ax_beam_cmd {
+ /** command value: 1 is disable, 0 is enable*/
+ t_u8 value;
+} mlan_ds_11ax_beam_cmd, *pmlan_ds_11ax_beam_cmd;
+
+/** Type definition of mlan_ds_11ax_htc_cmd for MLAN_OID_11AX_CMD_CFG */
+typedef struct _mlan_ds_11ax_htc_cmd {
+ /** command value: 1 is enable, 0 is disable*/
+ t_u8 value;
+} mlan_ds_11ax_htc_cmd, *pmlan_ds_11ax_htc_cmd;
+
+/** Type definition of mlan_ds_11ax_htc_cmd for MLAN_OID_11AX_CMD_CFG */
+typedef struct _mlan_ds_11ax_txop_cmd {
+ /** Two byte rts threshold value of which only 10 bits, bit 0 to bit 9
+ * are valid */
+ t_u16 rts_thres;
+} mlan_ds_11ax_txop_cmd, *pmlan_ds_11ax_txop_cmd;
+
+/** Type definition of mlan_ds_11ax_htc_cmd for MLAN_OID_11AX_CMD_CFG */
+typedef struct _mlan_ds_11ax_txomi_cmd {
+ /* 11ax spec 9.2.4.6a.2 OM Control 12 bits. Bit 0 to bit 11 */
+ t_u16 omi;
+} mlan_ds_11ax_txomi_cmd, *pmlan_ds_11ax_txomi_cmd;
+
+/** Type definition of mlan_ds_11ax_toltime_cmd for MLAN_OID_11AX_CMD_CFG */
+typedef struct _mlan_ds_11ax_toltime_cmd {
+ /* OBSS Narrow Bandwidth RU Tolerance Time */
+ t_u32 tol_time;
+} mlan_ds_11ax_toltime_cmd, *pmlan_ds_11ax_toltime_cmd;
+
+/** Type definition of mlan_ds_11ax_cmd_cfg for MLAN_OID_11AX_CMD_CFG */
+typedef struct _mlan_ds_11ax_cmd_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Sub-id */
+ t_u32 sub_id;
+ /** 802.11n configuration parameter */
+ union {
+ /** SR configuration for MLAN_11AXCMD_SR_SUBID */
+ mlan_ds_11ax_sr_cmd sr_cfg;
+ /** Beam configuration for MLAN_11AXCMD_BEAM_SUBID */
+ mlan_ds_11ax_beam_cmd beam_cfg;
+ /** HTC configuration for MLAN_11AXCMD_HTC_SUBID */
+ mlan_ds_11ax_htc_cmd htc_cfg;
+ /** txop RTS configuration for MLAN_11AXCMD_TXOPRTS_SUBID */
+ mlan_ds_11ax_txop_cmd txop_cfg;
+ /** tx omi configuration for MLAN_11AXCMD_TXOMI_SUBID */
+ mlan_ds_11ax_txomi_cmd txomi_cfg;
+ /** OBSS tolerance time configuration for
+ * MLAN_11AXCMD_TOLTIME_SUBID */
+ mlan_ds_11ax_toltime_cmd toltime_cfg;
+ } param;
+} mlan_ds_11ax_cmd_cfg, *pmlan_ds_11ax_cmd_cfg;
+
+/** Type definition of mlan_ds_twt_setup for MLAN_OID_11AX_TWT_CFG */
+typedef struct MLAN_PACK_START _mlan_ds_twt_setup {
+ /** Implicit, 0: TWT session is explicit, 1: Session is implicit */
+ t_u8 implicit;
+ /** Announced, 0: Unannounced, 1: Announced TWT */
+ t_u8 announced;
+ /** Trigger Enabled, 0: Non-Trigger enabled, 1: Trigger enabled TWT */
+ t_u8 trigger_enabled;
+ /** TWT Information Disabled, 0: TWT info enabled, 1: TWT info disabled
+ */
+ t_u8 twt_info_disabled;
+ /** Negotiation Type, 0: Future Individual TWT SP start time, 1: Next
+ * Wake TBTT time */
+ t_u8 negotiation_type;
+ /** TWT Wakeup Duration, time after which the TWT requesting STA can
+ * transition to doze state */
+ t_u8 twt_wakeup_duration;
+ /** Flow Identifier. Range: [0-7]*/
+ t_u8 flow_identifier;
+ /** Hard Constraint, 0: FW can tweak the TWT setup parameters if it is
+ *rejected by AP.
+ ** 1: Firmware should not tweak any parameters. */
+ t_u8 hard_constraint;
+ /** TWT Exponent, Range: [0-63] */
+ t_u8 twt_exponent;
+ /** TWT Mantissa Range: [0-sizeof(UINT16)] */
+ t_u16 twt_mantissa;
+ /** TWT Request Type, 0: REQUEST_TWT, 1: SUGGEST_TWT*/
+ t_u8 twt_request;
+} MLAN_PACK_END mlan_ds_twt_setup, *pmlan_ds_twt_setup;
+
+/** Type definition of mlan_ds_twt_teardown for MLAN_OID_11AX_TWT_CFG */
+typedef struct MLAN_PACK_START _mlan_ds_twt_teardown {
+ /** TWT Flow Identifier. Range: [0-7] */
+ t_u8 flow_identifier;
+ /** Negotiation Type. 0: Future Individual TWT SP start time, 1: Next
+ * Wake TBTT time */
+ t_u8 negotiation_type;
+ /** Tear down all TWT. 1: To teardown all TWT, 0 otherwise */
+ t_u8 teardown_all_twt;
+} MLAN_PACK_END mlan_ds_twt_teardown, *pmlan_ds_twt_teardown;
+
+/** Type definition of mlan_ds_twtcfg for MLAN_OID_11AX_TWT_CFG */
+typedef struct MLAN_PACK_START _mlan_ds_twtcfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Sub-id */
+ t_u32 sub_id;
+ /** TWT Setup/Teardown configuration parameter */
+ union {
+ /** TWT Setup config for Sub ID: MLAN_11AX_TWT_SETUP_SUBID */
+ mlan_ds_twt_setup twt_setup;
+ /** TWT Teardown config for Sub ID: MLAN_11AX_TWT_TEARDOWN_SUBID
+ */
+ mlan_ds_twt_teardown twt_teardown;
+ } param;
+} MLAN_PACK_END mlan_ds_twtcfg, *pmlan_ds_twtcfg;
+
+/** Country code length */
+#define COUNTRY_CODE_LEN 3
+
+/*-----------------------------------------------------------------*/
+/** 802.11d Configuration Group */
+/*-----------------------------------------------------------------*/
+/** Maximum subbands for 11d */
+#define MRVDRV_MAX_SUBBAND_802_11D 83
+
+/** Data structure for subband set */
+typedef struct _mlan_ds_subband_set_t {
+ /** First channel */
+ t_u8 first_chan;
+ /** Number of channels */
+ t_u8 no_of_chan;
+ /** Maximum Tx power in dBm */
+ t_u8 max_tx_pwr;
+} mlan_ds_subband_set_t;
+
+/** Domain regulatory information */
+typedef struct _mlan_ds_11d_domain_info {
+ /** Country Code */
+ t_u8 country_code[COUNTRY_CODE_LEN];
+ /** Band that channels in sub_band belong to */
+ t_u8 band;
+ /** No. of subband in below */
+ t_u8 no_of_sub_band;
+ /** Subband data to send/last sent */
+ mlan_ds_subband_set_t sub_band[MRVDRV_MAX_SUBBAND_802_11D];
+} mlan_ds_11d_domain_info;
+
+/** Type definition of mlan_ds_11d_cfg for MLAN_IOCTL_11D_CFG */
+typedef struct _mlan_ds_11d_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** 802.11d configuration parameter */
+ union {
+#ifdef STA_SUPPORT
+ /** Enable for MLAN_OID_11D_CFG_ENABLE */
+ t_u32 enable_11d;
+#endif /* STA_SUPPORT */
+ /** Domain info for MLAN_OID_11D_DOMAIN_INFO_EXT */
+ mlan_ds_11d_domain_info domain_info;
+#ifdef UAP_SUPPORT
+ /** tlv data for MLAN_OID_11D_DOMAIN_INFO */
+ t_u8 domain_tlv[MAX_IE_SIZE];
+#endif /* UAP_SUPPORT */
+ } param;
+} mlan_ds_11d_cfg, *pmlan_ds_11d_cfg;
+
+/*-----------------------------------------------------------------*/
+/** Register Memory Access Group */
+/*-----------------------------------------------------------------*/
+/** Enumeration for CSU target device type */
+enum _mlan_csu_target_type {
+ MLAN_CSU_TARGET_CAU = 1,
+ MLAN_CSU_TARGET_PSU,
+};
+
+/** Enumeration for register type */
+enum _mlan_reg_type {
+ MLAN_REG_MAC = 1,
+ MLAN_REG_BBP,
+ MLAN_REG_RF,
+ MLAN_REG_CAU = 5,
+ MLAN_REG_PSU = 6,
+ MLAN_REG_BCA = 7,
+#if defined(PCIE9098) || defined(SD9098) || defined(USB9098) || \
+ defined(PCIE9097) || defined(USB9097) || defined(SD9097)
+ MLAN_REG_MAC2 = 0x81,
+ MLAN_REG_BBP2 = 0x82,
+ MLAN_REG_RF2 = 0x83,
+ MLAN_REG_BCA2 = 0x87
+#endif
+};
+
+/** Type definition of mlan_ds_reg_rw for MLAN_OID_REG_RW */
+typedef struct _mlan_ds_reg_rw {
+ /** Register type */
+ t_u32 type;
+ /** Offset */
+ t_u32 offset;
+ /** Value */
+ t_u32 value;
+} mlan_ds_reg_rw;
+
+/** Maximum EEPROM data */
+#define MAX_EEPROM_DATA 256
+
+/** Type definition of mlan_ds_read_eeprom for MLAN_OID_EEPROM_RD */
+typedef struct _mlan_ds_read_eeprom {
+ /** Multiples of 4 */
+ t_u16 offset;
+ /** Number of bytes */
+ t_u16 byte_count;
+ /** Value */
+ t_u8 value[MAX_EEPROM_DATA];
+} mlan_ds_read_eeprom;
+
+/** Type definition of mlan_ds_mem_rw for MLAN_OID_MEM_RW */
+typedef struct _mlan_ds_mem_rw {
+ /** Address */
+ t_u32 addr;
+ /** Value */
+ t_u32 value;
+} mlan_ds_mem_rw;
+
+/** Type definition of mlan_ds_reg_mem for MLAN_IOCTL_REG_MEM */
+typedef struct _mlan_ds_reg_mem {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Register memory access parameter */
+ union {
+ /** Register access for MLAN_OID_REG_RW */
+ mlan_ds_reg_rw reg_rw;
+ /** EEPROM access for MLAN_OID_EEPROM_RD */
+ mlan_ds_read_eeprom rd_eeprom;
+ /** Memory access for MLAN_OID_MEM_RW */
+ mlan_ds_mem_rw mem_rw;
+ } param;
+} mlan_ds_reg_mem, *pmlan_ds_reg_mem;
+
+/*-----------------------------------------------------------------*/
+/** Multi-Radio Configuration Group */
+/*-----------------------------------------------------------------*/
+/*-----------------------------------------------------------------*/
+/** 802.11h Configuration Group */
+/*-----------------------------------------------------------------*/
+/** Type definition of mlan_ds_11h_dfs_testing for MLAN_OID_11H_DFS_TESTING */
+typedef struct _mlan_ds_11h_dfs_testing {
+ /** User-configured CAC period in milliseconds, 0 to use default */
+ t_u32 usr_cac_period_msec;
+ /** User-configured NOP period in seconds, 0 to use default */
+ t_u16 usr_nop_period_sec;
+ /** User-configured skip channel change, 0 to disable */
+ t_u8 usr_no_chan_change;
+ /** User-configured fixed channel to change to, 0 to use random channel
+ */
+ t_u8 usr_fixed_new_chan;
+ /** User-configured cac restart */
+ t_u8 usr_cac_restart;
+} mlan_ds_11h_dfs_testing, *pmlan_ds_11h_dfs_testing;
+
+/** Type definition of mlan_ds_11h_dfs_testing for MLAN_OID_11H_CHAN_NOP_INFO */
+typedef struct _mlan_ds_11h_chan_nop_info {
+ /** current channel */
+ t_u8 curr_chan;
+ /** channel_width */
+ t_u8 chan_width;
+ /** flag for chan under nop */
+ t_bool chan_under_nop;
+ /** chan_ban_info for new channel */
+ chan_band_info new_chan;
+} mlan_ds_11h_chan_nop_info, *pmlan_ds_11h_chan_nop_info;
+
+typedef struct _mlan_ds_11h_chan_rep_req {
+ t_u16 startFreq;
+ Band_Config_t bandcfg;
+ t_u8 chanNum;
+ t_u32 millisec_dwell_time; /**< Channel dwell time in milliseconds */
+ t_u8 host_based;
+} mlan_ds_11h_chan_rep_req;
+
+typedef struct _mlan_ds_11h_dfs_w53_cfg {
+ /** dfs w53 cfg */
+ t_u8 dfs53cfg;
+} mlan_ds_11h_dfs_w53_cfg;
+
+/** Type definition of mlan_ds_11h_cfg for MLAN_IOCTL_11H_CFG */
+typedef struct _mlan_ds_11h_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ union {
+ /** Local power constraint for
+ * MLAN_OID_11H_LOCAL_POWER_CONSTRAINT */
+ t_s8 usr_local_power_constraint;
+ /** User-configuation for MLAN_OID_11H_DFS_TESTING */
+ mlan_ds_11h_dfs_testing dfs_testing;
+ /** channel NOP information for MLAN_OID_11H_CHAN_NOP_INFO */
+ mlan_ds_11h_chan_nop_info ch_nop_info;
+ /** channel report req for MLAN_OID_11H_CHAN_REPORT_REQUEST */
+ mlan_ds_11h_chan_rep_req chan_rpt_req;
+ /** channel switch count for MLAN_OID_11H_CHAN_SWITCH_COUNT*/
+ t_s8 cs_count;
+ mlan_ds_11h_dfs_w53_cfg dfs_w53_cfg;
+ } param;
+} mlan_ds_11h_cfg, *pmlan_ds_11h_cfg;
+
+/*-----------------------------------------------------------------*/
+/** Miscellaneous Configuration Group */
+/*-----------------------------------------------------------------*/
+
+/** CMD buffer size */
+#define MLAN_SIZE_OF_CMD_BUFFER (3 * 1024)
+
+/** LDO Internal */
+#define LDO_INTERNAL 0
+/** LDO External */
+#define LDO_EXTERNAL 1
+
+/** Enumeration for IE type */
+enum _mlan_ie_type {
+ MLAN_IE_TYPE_GEN_IE = 0,
+};
+
+/** Type definition of mlan_ds_misc_gen_ie for MLAN_OID_MISC_GEN_IE */
+typedef struct _mlan_ds_misc_gen_ie {
+ /** IE type */
+ t_u32 type;
+ /** IE length */
+ t_u32 len;
+ /** IE buffer */
+ t_u8 ie_data[MAX_IE_SIZE];
+} mlan_ds_misc_gen_ie;
+
+#ifdef SDIO
+/** Type definition of mlan_ds_misc_sdio_mpa_ctrl
+ * for MLAN_OID_MISC_SDIO_MPA_CTRL
+ */
+typedef struct _mlan_ds_misc_sdio_mpa_ctrl {
+ /** SDIO MP-A TX enable/disable */
+ t_u16 tx_enable;
+ /** SDIO MP-A RX enable/disable */
+ t_u16 rx_enable;
+ /** SDIO MP-A TX buf size */
+ t_u16 tx_buf_size;
+ /** SDIO MP-A RX buf size */
+ t_u16 rx_buf_size;
+ /** SDIO MP-A TX Max Ports */
+ t_u16 tx_max_ports;
+ /** SDIO MP-A RX Max Ports */
+ t_u16 rx_max_ports;
+} mlan_ds_misc_sdio_mpa_ctrl;
+#endif
+
+/** Type definition of mlan_ds_misc_cmd for MLAN_OID_MISC_HOST_CMD */
+typedef struct _mlan_ds_misc_cmd {
+ /** Command length */
+ t_u32 len;
+ /** Command buffer */
+ t_u8 cmd[MRVDRV_SIZE_OF_CMD_BUFFER];
+} mlan_ds_misc_cmd;
+
+/** Maximum number of system clocks */
+#define MLAN_MAX_CLK_NUM 16
+
+/** Clock type : Configurable */
+#define MLAN_CLK_CONFIGURABLE 0
+/** Clock type : Supported */
+#define MLAN_CLK_SUPPORTED 1
+
+/** Type definition of mlan_ds_misc_sys_clock for MLAN_OID_MISC_SYS_CLOCK */
+typedef struct _mlan_ds_misc_sys_clock {
+ /** Current system clock */
+ t_u16 cur_sys_clk;
+ /** Clock type */
+ t_u16 sys_clk_type;
+ /** Number of clocks */
+ t_u16 sys_clk_num;
+ /** System clocks */
+ t_u16 sys_clk[MLAN_MAX_CLK_NUM];
+} mlan_ds_misc_sys_clock;
+
+/** Enumeration for function init/shutdown */
+enum _mlan_func_cmd {
+ MLAN_FUNC_INIT = 1,
+ MLAN_FUNC_SHUTDOWN,
+};
+
+/** Type definition of mlan_ds_misc_tx_datapause
+ * for MLAN_OID_MISC_TX_DATAPAUSE
+ */
+typedef struct _mlan_ds_misc_tx_datapause {
+ /** Tx data pause flag */
+ t_u16 tx_pause;
+ /** Max number of Tx buffers for all PS clients */
+ t_u16 tx_buf_cnt;
+} mlan_ds_misc_tx_datapause;
+
+/** Type definition of mlan_ds_misc_rx_abort_cfg
+ * for MLAN_OID_MISC_RX_ABORT_CFG
+ */
+typedef struct _mlan_ds_misc_rx_abort_cfg {
+ /** enable/disable rx abort */
+ t_u8 enable;
+ /** Rx weak RSSI pkt threshold */
+ t_s8 rssi_threshold;
+} mlan_ds_misc_rx_abort_cfg;
+
+/** Type definition of mlan_ds_misc_rx_abort_cfg_ext
+ * for MLAN_OID_MISC_RX_ABORT_CFG_EXT
+ */
+typedef struct _mlan_ds_misc_rx_abort_cfg_ext {
+ /** enable/disable dynamic rx abort */
+ t_u8 enable;
+ /** rssi margin */
+ t_s8 rssi_margin;
+ /** specify ceil rssi threshold */
+ t_s8 ceil_rssi_threshold;
+} mlan_ds_misc_rx_abort_cfg_ext;
+
+/** Type definition of mlan_ds_misc_rx_abort_cfg_ext
+ * for MLAN_OID_MISC_TX_AMDPU_PROT_MODE
+ */
+typedef struct _mlan_ds_misc_tx_ampdu_prot_mode {
+ /** set prot mode */
+ t_u16 mode;
+} mlan_ds_misc_tx_ampdu_prot_mode;
+
+/** Type definition of mlan_ds_misc_dot11mc_unassoc_ftm_cfg
+ * for MLAN_OID_MISC_DOT11MC_UNASSOC_FTM_CFG
+ */
+typedef struct _mlan_ds_misc_dot11mc_unassoc_ftm_cfg {
+ /** set the state */
+ t_u16 state;
+} mlan_ds_misc_dot11mc_unassoc_ftm_cfg;
+
+#define RATEADAPT_ALGO_LEGACY 0
+#define RATEADAPT_ALGO_SR 1
+
+/** Type definition of mlan_ds_misc_rate_adapt_cfg
+ * for MLAN_OID_MISC_RATE_ADAPT_CFG
+ */
+typedef struct _mlan_ds_misc_rate_adapt_cfg {
+ /** SR Rateadapt */
+ t_u8 sr_rateadapt;
+ /** set low threshold */
+ t_u8 ra_low_thresh;
+ /** set high threshold */
+ t_u8 ra_high_thresh;
+ /** set interval */
+ t_u16 ra_interval;
+} mlan_ds_misc_rate_adapt_cfg;
+
+/** Type definition of mlan_ds_misc_cck_desense_cfg
+ * for MLAN_OID_MISC_CCK_DESENSE_CFG
+ */
+typedef struct _mlan_ds_misc_cck_desense_cfg {
+ /** cck desense mode: 0:disable 1:normal 2:dynamic */
+ t_u16 mode;
+ /** specify rssi margin */
+ t_s8 margin;
+ /** specify ceil rssi threshold */
+ t_s8 ceil_thresh;
+ /** cck desense "on" interval count */
+ t_u8 num_on_intervals;
+ /** cck desense "off" interval count */
+ t_u8 num_off_intervals;
+} mlan_ds_misc_cck_desense_cfg;
+
+/** IP address length */
+#define IPADDR_LEN (16)
+/** Max number of ip */
+#define MAX_IPADDR (4)
+/** IP address type - NONE*/
+#define IPADDR_TYPE_NONE (0)
+/** IP address type - IPv4*/
+#define IPADDR_TYPE_IPV4 (1)
+/** IP operation remove */
+#define MLAN_IPADDR_OP_IP_REMOVE (0)
+/** IP operation ARP response */
+#define MLAN_IPADDR_OP_AUTO_ARP_RESP MBIT(1)
+
+/** Type definition of mlan_ds_misc_ipaddr_cfg for MLAN_OID_MISC_IP_ADDR */
+typedef struct _mlan_ds_misc_ipaddr_cfg {
+ /** Operation code */
+ t_u32 op_code;
+ /** IP address type */
+ t_u32 ip_addr_type;
+ /** Number of IP */
+ t_u32 ip_addr_num;
+ /** IP address */
+ t_u8 ip_addr[MAX_IPADDR][IPADDR_LEN];
+} mlan_ds_misc_ipaddr_cfg;
+
+/* MEF configuration disable */
+#define MEF_CFG_DISABLE 0
+/* MEF configuration Rx filter enable */
+#define MEF_CFG_RX_FILTER_ENABLE 1
+/* MEF configuration auto ARP response */
+#define MEF_CFG_AUTO_ARP_RESP 2
+/* MEF configuration host command */
+#define MEF_CFG_HOSTCMD 0xFFFF
+
+/** Type definition of mlan_ds_misc_mef_cfg for MLAN_OID_MISC_MEF_CFG */
+typedef struct _mlan_ds_misc_mef_cfg {
+ /** Sub-ID for operation */
+ t_u32 sub_id;
+ /** Parameter according to sub-ID */
+ union {
+ /** MEF command buffer for MEF_CFG_HOSTCMD */
+ mlan_ds_misc_cmd cmd_buf;
+ } param;
+} mlan_ds_misc_mef_cfg;
+
+/** Type definition of mlan_ds_misc_cfp_code for MLAN_OID_MISC_CFP_CODE */
+typedef struct _mlan_ds_misc_cfp_code {
+ /** CFP table code for 2.4GHz */
+ t_u32 cfp_code_bg;
+ /** CFP table code for 5GHz */
+ t_u32 cfp_code_a;
+} mlan_ds_misc_cfp_code;
+
+/** Type definition of mlan_ds_misc_arb_cfg
+ * for MLAN_OID_MISC_ARB_CFG
+ */
+typedef struct _mlan_ds_misc_arb_cfg {
+ /** arb mode 0-4 */
+ t_u32 arb_mode;
+} mlan_ds_misc_arb_cfg;
+
+/** Type definition of mlan_ds_misc_tp_state
+ * for MLAN_OID_MISC_TP_STATE
+ */
+typedef struct _mlan_ds_misc_tp_state {
+ /** TP account mode 0-disable 1-enable */
+ t_u32 on;
+ /** Packet drop point */
+ t_u32 drop_point;
+} mlan_ds_misc_tp_state;
+
+/** Type definition of mlan_ds_misc_country_code
+ * for MLAN_OID_MISC_COUNTRY_CODE
+ */
+typedef struct _mlan_ds_misc_country_code {
+ /** Country Code */
+ t_u8 country_code[COUNTRY_CODE_LEN];
+} mlan_ds_misc_country_code;
+
+/** action for set */
+#define SUBSCRIBE_EVT_ACT_BITWISE_SET 0x0002
+/** action for clear */
+#define SUBSCRIBE_EVT_ACT_BITWISE_CLR 0x0003
+/** BITMAP for subscribe event rssi low */
+#define SUBSCRIBE_EVT_RSSI_LOW MBIT(0)
+/** BITMAP for subscribe event snr low */
+#define SUBSCRIBE_EVT_SNR_LOW MBIT(1)
+/** BITMAP for subscribe event max fail */
+#define SUBSCRIBE_EVT_MAX_FAIL MBIT(2)
+/** BITMAP for subscribe event beacon missed */
+#define SUBSCRIBE_EVT_BEACON_MISSED MBIT(3)
+/** BITMAP for subscribe event rssi high */
+#define SUBSCRIBE_EVT_RSSI_HIGH MBIT(4)
+/** BITMAP for subscribe event snr high */
+#define SUBSCRIBE_EVT_SNR_HIGH MBIT(5)
+/** BITMAP for subscribe event data rssi low */
+#define SUBSCRIBE_EVT_DATA_RSSI_LOW MBIT(6)
+/** BITMAP for subscribe event data snr low */
+#define SUBSCRIBE_EVT_DATA_SNR_LOW MBIT(7)
+/** BITMAP for subscribe event data rssi high */
+#define SUBSCRIBE_EVT_DATA_RSSI_HIGH MBIT(8)
+/** BITMAP for subscribe event data snr high */
+#define SUBSCRIBE_EVT_DATA_SNR_HIGH MBIT(9)
+/** BITMAP for subscribe event link quality */
+#define SUBSCRIBE_EVT_LINK_QUALITY MBIT(10)
+/** BITMAP for subscribe event pre_beacon_lost */
+#define SUBSCRIBE_EVT_PRE_BEACON_LOST MBIT(11)
+/** default PRE_BEACON_MISS_COUNT */
+#define DEFAULT_PRE_BEACON_MISS 30
+
+/** Type definition of mlan_ds_subscribe_evt for MLAN_OID_MISC_CFP_CODE */
+typedef struct _mlan_ds_subscribe_evt {
+ /** evt action */
+ t_u16 evt_action;
+ /** bitmap for subscribe event */
+ t_u16 evt_bitmap;
+ /** Absolute value of RSSI threshold value (dBm) */
+ t_u8 low_rssi;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 low_rssi_freq;
+ /** SNR threshold value (dB) */
+ t_u8 low_snr;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 low_snr_freq;
+ /** Failure count threshold */
+ t_u8 failure_count;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 failure_count_freq;
+ /** num of missed beacons */
+ t_u8 beacon_miss;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 beacon_miss_freq;
+ /** Absolute value of RSSI threshold value (dBm) */
+ t_u8 high_rssi;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 high_rssi_freq;
+ /** SNR threshold value (dB) */
+ t_u8 high_snr;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 high_snr_freq;
+ /** Absolute value of data RSSI threshold value (dBm) */
+ t_u8 data_low_rssi;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 data_low_rssi_freq;
+ /** Absolute value of data SNR threshold value (dBm) */
+ t_u8 data_low_snr;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 data_low_snr_freq;
+ /** Absolute value of data RSSI threshold value (dBm) */
+ t_u8 data_high_rssi;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 data_high_rssi_freq;
+ /** Absolute value of data SNR threshold value (dBm) */
+ t_u8 data_high_snr;
+ /** 0--report once, 1--report everytime happen,
+ * N -- report only happend > N consecutive times
+ */
+ t_u8 data_high_snr_freq;
+ /* Link SNR threshold (dB)*/
+ t_u16 link_snr;
+ /* Link SNR frequency */
+ t_u16 link_snr_freq;
+ /* Second minimum rate value as per the rate table below */
+ t_u16 link_rate;
+ /* Second minimum rate frequency */
+ t_u16 link_rate_freq;
+ /* Tx latency value (us) */
+ t_u16 link_tx_latency;
+ /* Tx latency frequency */
+ t_u16 link_tx_lantency_freq;
+ /* Number of pre missed beacons */
+ t_u8 pre_beacon_miss;
+} mlan_ds_subscribe_evt;
+
+/** Max OTP user data length */
+#define MAX_OTP_USER_DATA_LEN 252
+
+/** Type definition of mlan_ds_misc_otp_user_data
+ * for MLAN_OID_MISC_OTP_USER_DATA
+ */
+typedef struct _mlan_ds_misc_otp_user_data {
+ /** Reserved */
+ t_u16 reserved;
+ /** OTP user data length */
+ t_u16 user_data_length;
+ /** User data buffer */
+ t_u8 user_data[MAX_OTP_USER_DATA_LEN];
+} mlan_ds_misc_otp_user_data;
+
+typedef struct _aggr_ctrl {
+ /** Enable */
+ t_u16 enable;
+ /** Aggregation alignment */
+ t_u16 aggr_align;
+ /** Aggregation max size */
+ t_u16 aggr_max_size;
+ /** Aggregation max packet number */
+ t_u16 aggr_max_num;
+ /** Aggrgation timeout, in microseconds */
+ t_u16 aggr_tmo;
+} aggr_ctrl;
+
+/** Type definition of mlan_ds_misc_aggr_ctrl
+ * for MLAN_OID_MISC_AGGR_CTRL
+ */
+typedef struct _mlan_ds_misc_aggr_ctrl {
+ /** Tx aggregation control */
+ aggr_ctrl tx;
+} mlan_ds_misc_aggr_ctrl;
+
+#ifdef USB
+typedef struct _usb_aggr_ctrl {
+ /** Enable */
+ t_u16 enable;
+ /** Aggregation mode */
+ t_u16 aggr_mode;
+ /** Aggregation alignment */
+ t_u16 aggr_align;
+ /** Aggregation max packet/size */
+ t_u16 aggr_max;
+ /** Aggrgation timeout, in microseconds */
+ t_u16 aggr_tmo;
+} usb_aggr_ctrl;
+
+/** Type definition of mlan_ds_misc_usb_aggr_ctrl
+ * for MLAN_OID_MISC_USB_AGGR_CTRL
+ */
+typedef struct _mlan_ds_misc_usb_aggr_ctrl {
+ /** Tx aggregation control */
+ usb_aggr_ctrl tx_aggr_ctrl;
+ /** Rx deaggregation control */
+ usb_aggr_ctrl rx_deaggr_ctrl;
+} mlan_ds_misc_usb_aggr_ctrl;
+#endif
+
+#ifdef WIFI_DIRECT_SUPPORT
+/** flag for NOA */
+#define WIFI_DIRECT_NOA 1
+/** flag for OPP_PS */
+#define WIFI_DIRECT_OPP_PS 2
+/** Type definition of mlan_ds_wifi_direct_config
+ * for MLAN_OID_MISC_WIFI_DIRECT_CONFIG
+ */
+typedef struct _mlan_ds_wifi_direct_config {
+ /** flags for NOA/OPP_PS */
+ t_u8 flags;
+ /** NoA enable/disable */
+ t_u8 noa_enable;
+ /** index */
+ t_u16 index;
+ /** NoA count */
+ t_u8 noa_count;
+ /** NoA duration */
+ t_u32 noa_duration;
+ /** NoA interval */
+ t_u32 noa_interval;
+ /** opp ps enable/disable */
+ t_u8 opp_ps_enable;
+ /** CT window value */
+ t_u8 ct_window;
+} mlan_ds_wifi_direct_config;
+#endif
+
+#if defined(STA_SUPPORT)
+typedef struct _mlan_ds_misc_pmfcfg {
+ /** Management Frame Protection Capable */
+ t_u8 mfpc;
+ /** Management Frame Protection Required */
+ t_u8 mfpr;
+} mlan_ds_misc_pmfcfg;
+#endif
+
+#define MAX_SSID_NUM 16
+#define MAX_AP_LIST 8
+
+#ifdef RX_PACKET_COALESCE
+typedef struct _mlan_ds_misc_rx_packet_coalesce {
+ /** packet threshold */
+ t_u32 packet_threshold;
+ /** timeout value */
+ t_u16 delay;
+} mlan_ds_misc_rx_packet_coalesce;
+#endif
+
+typedef struct _mlan_ds_misc_dfs_repeater {
+ /** Set or Get */
+ t_u16 action;
+ /** 1 on or 0 off */
+ t_u16 mode;
+} mlan_ds_misc_dfs_repeater;
+
+#define WOWLAN_MAX_PATTERN_LEN 20
+#define WOWLAN_MAX_OFFSET_LEN 50
+#define MAX_NUM_FILTERS 10
+#define MEF_MODE_HOST_SLEEP (1 << 0)
+#define MEF_MODE_NON_HOST_SLEEP (1 << 1)
+#define MEF_ACTION_WAKE (1 << 0)
+#define MEF_ACTION_ALLOW (1 << 1)
+#define MEF_ACTION_ALLOW_AND_WAKEUP_HOST 3
+#define MEF_AUTO_ARP 0x10
+#define MEF_AUTO_PING 0x20
+#define MEF_NS_RESP 0x40
+#define MEF_MAGIC_PKT 0x80
+#define CRITERIA_BROADCAST BIT(0)
+#define CRITERIA_UNICAST BIT(1)
+#define CRITERIA_MULTICAST BIT(3)
+
+#define MAX_NUM_ENTRIES 8
+#define MAX_NUM_BYTE_SEQ 6
+#define MAX_NUM_MASK_SEQ 6
+
+#define OPERAND_DNUM 1
+#define OPERAND_BYTE_SEQ 2
+
+#define MAX_OPERAND 0x40
+#define TYPE_BYTE_EQ (MAX_OPERAND + 1)
+#define TYPE_DNUM_EQ (MAX_OPERAND + 2)
+#define TYPE_BIT_EQ (MAX_OPERAND + 3)
+
+#define RPN_TYPE_AND (MAX_OPERAND + 4)
+#define RPN_TYPE_OR (MAX_OPERAND + 5)
+
+#define ICMP_OF_IP_PROTOCOL 0x01
+#define TCP_OF_IP_PROTOCOL 0x06
+#define UDP_OF_IP_PROTOCOL 0x11
+
+#define IPV4_PKT_OFFSET 20
+#define IP_PROTOCOL_OFFSET 31
+#define PORT_PROTOCOL_OFFSET 44
+
+#define FILLING_TYPE MBIT(0)
+#define FILLING_PATTERN MBIT(1)
+#define FILLING_OFFSET MBIT(2)
+#define FILLING_NUM_BYTES MBIT(3)
+#define FILLING_REPEAT MBIT(4)
+#define FILLING_BYTE_SEQ MBIT(5)
+#define FILLING_MASK_SEQ MBIT(6)
+
+/** Type definition of filter_item
+ * Support three match methods:
+ * <1>Byte comparison type=0x41
+ * <2>Decimal comparison type=0x42
+ * <3>Bit comparison type=0x43
+ */
+typedef struct _mef_filter_t {
+ /** flag*/
+ t_u32 fill_flag;
+ /** BYTE 0X41; Decimal 0X42; Bit 0x43*/
+ t_u16 type;
+ /** value*/
+ t_u32 pattern;
+ /** offset*/
+ t_u16 offset;
+ /** number of bytes*/
+ t_u16 num_bytes;
+ /** repeat*/
+ t_u16 repeat;
+ /** byte number*/
+ t_u8 num_byte_seq;
+ /** array*/
+ t_u8 byte_seq[MAX_NUM_BYTE_SEQ];
+ /** mask numbers*/
+ t_u8 num_mask_seq;
+ /** array*/
+ t_u8 mask_seq[MAX_NUM_MASK_SEQ];
+} mef_filter_t;
+
+typedef struct _mef_entry_t {
+ /** mode: bit0--hostsleep mode; bit1--non hostsleep mode */
+ t_u8 mode;
+ /** action: 0--discard and not wake host;
+ 1--discard and wake host;
+ 3--allow and wake host;*/
+ t_u8 action;
+ /** filter number */
+ t_u8 filter_num;
+ /** filter array*/
+ mef_filter_t filter_item[MAX_NUM_FILTERS];
+ /** rpn array*/
+ t_u8 rpn[MAX_NUM_FILTERS];
+} mef_entry_t;
+
+/** Type definition of mlan_ds_nvflt_mef_entry
+ *for MLAN_OID_MISC_MEF_FLT_CFG
+ */
+typedef struct _mlan_ds_misc_mef_flt_cfg {
+ /** Type of action*/
+ int mef_act_type;
+ /** NV Filter Criteria*/
+ t_u32 criteria;
+ /** NV MEF entry*/
+ mef_entry_t mef_entry;
+} mlan_ds_misc_mef_flt_cfg;
+
+/** Enumeration for action type*/
+enum _mlan_act_mef_act_type {
+ MEF_ACT_ADD = 1,
+ MEF_ACT_ENABLE,
+ MEF_ACT_DISABLE,
+ MEF_ACT_CANCEL,
+ MEF_ACT_AUTOARP,
+ MEF_ACT_WOWLAN,
+ MEF_ACT_IPV6_NS,
+};
+
+typedef struct _mlan_ds_sensor_temp {
+ t_u32 temperature;
+} mlan_ds_sensor_temp;
+
+#define MLAN_KCK_LEN 16
+#define MLAN_KEK_LEN 16
+#define MLAN_REPLAY_CTR_LEN 8
+/** mlan_ds_misc_gtk_rekey_data */
+typedef struct _mlan_ds_misc_gtk_rekey_data {
+ /** key encryption key */
+ t_u8 kek[MLAN_KEK_LEN];
+ /** key confirmation key */
+ t_u8 kck[MLAN_KCK_LEN];
+ /** replay counter */
+ t_u8 replay_ctr[MLAN_REPLAY_CTR_LEN];
+} mlan_ds_misc_gtk_rekey_data;
+typedef struct _mlan_ds_bw_chan_oper {
+ /* bandwidth 20:20M 40:40M 80:80M*/
+ t_u8 bandwidth;
+ /* channel number */
+ t_u8 channel;
+ /* Non-global operating class */
+ t_u8 oper_class;
+} mlan_ds_bw_chan_oper;
+
+typedef struct _mlan_ds_ind_rst_cfg {
+ /** Set or Get */
+ t_u16 action;
+ /** oob mode enable/ disable */
+ t_u8 ir_mode;
+ /** gpio pin */
+ t_u8 gpio_pin;
+} mlan_ds_ind_rst_cfg;
+
+#define MKEEP_ALIVE_IP_PKT_MAX 256
+typedef struct _mlan_ds_misc_keep_alive {
+ t_u8 mkeep_alive_id;
+ t_u8 enable;
+ /** enable/disable tcp reset*/
+ t_u8 reset;
+ /**True means saved in driver, false means not saved or download*/
+ t_u8 cached;
+ t_u32 send_interval;
+ t_u16 retry_interval;
+ t_u16 retry_count;
+ t_u8 dst_mac[MLAN_MAC_ADDR_LENGTH];
+ t_u8 src_mac[MLAN_MAC_ADDR_LENGTH];
+ t_u16 pkt_len;
+ t_u8 packet[MKEEP_ALIVE_IP_PKT_MAX];
+ /** Ethernet type */
+ t_u16 ether_type;
+} mlan_ds_misc_keep_alive, *pmlan_ds_misc_keep_alive;
+
+/** TX and RX histogram statistic parameters*/
+typedef MLAN_PACK_START struct _mlan_ds_misc_tx_rx_histogram {
+ /** Enable or disable get tx/rx histogram statistic */
+ t_u8 enable;
+ /** Choose to get TX, RX or both histogram statistic */
+ t_u16 action;
+ /** Size of Tx/Rx info */
+ t_u16 size;
+ /** Store Tx/Rx info */
+ t_u8 value[1];
+} MLAN_PACK_END mlan_ds_misc_tx_rx_histogram;
+
+typedef MLAN_PACK_START struct _mlan_ds_cw_mode_ctrl {
+ /** Mode of Operation 0: Disable 1: Tx Continuous Packet 2: Tx
+ * Continuous Wave */
+ t_u8 mode;
+ /*channel*/
+ t_u8 channel;
+ /* channel info*/
+ t_u8 chanInfo;
+ /** Tx Power level in dBm */
+ t_u16 txPower;
+ /** Packet Length */
+ t_u16 pktLength;
+ /** bit rate Info */
+ t_u32 rateInfo;
+} MLAN_PACK_END mlan_ds_cw_mode_ctrl;
+
+#define RX_PKT_INFO MBIT(1)
+/** Struct for per-packet configuration */
+typedef struct _mlan_per_pkt_cfg {
+ /** Type ID*/
+ t_u16 type;
+ /** Length of payload*/
+ t_u16 len;
+ /** Tx/Rx per-packet control */
+ t_u8 tx_rx_control;
+ /** Number of ethernet types in ether_type array */
+ t_u8 proto_type_num;
+ /** Array of ether_type for per-packet control */
+ t_u16 ether_type[];
+} mlan_per_pkt_cfg;
+
+/** Type definition of mlan_ds_misc_robustcoex_params for MLAN_IOCTL_MISC_CFG */
+typedef struct _mlan_ds_misc_robustcoex_params {
+ t_u16 method;
+ /** enable/disable robustcoex gpio cfg */
+ t_u8 enable;
+ /** Number of GPIO */
+ t_u8 gpio_num;
+ /** Polarity of GPIO */
+ t_u8 gpio_polarity;
+} mlan_ds_misc_robustcoex_params;
+
+#if defined(PCIE)
+typedef struct _mlan_ds_ssu_params {
+ t_u32 nskip;
+ t_u32 nsel;
+ t_u32 adcdownsample;
+ t_u32 mask_adc_pkt;
+ t_u32 out_16bits;
+ t_u32 spec_pwr_enable;
+ t_u32 rate_deduction;
+ t_u32 n_pkt_avg;
+} mlan_ds_ssu_params;
+#endif
+
+#define MAX_NUM_MAC 2
+/** Type definition of mlan_ds_misc_mapping_policy */
+typedef struct _mlan_ds_misc_mapping_policy {
+ /** Enable/disable dynamic mapping */
+ t_u16 subcmd;
+ /** Mapping policy */
+ t_u8 mapping_policy;
+} mlan_ds_misc_mapping_policy, *pmlan_ds_misc_mapping_policy;
+
+typedef struct _dmcsChanStatus_t {
+ /** Channel number */
+ t_u8 channel;
+ /** Number of ap on this channel */
+ t_u8 ap_count;
+ /** Number of sta on this channel */
+ t_u8 sta_count;
+} dmcsChanStatus_t, *pdmcsChanStatus_t;
+
+typedef struct _dmcsStatus_t {
+ /** Radio ID */
+ t_u8 radio_id;
+ /** Running mode
+ ** 0 - Idle
+ ** 1 - DBC
+ ** 2 - DRCS
+ */
+ t_u8 running_mode;
+ /** Current channel status */
+ dmcsChanStatus_t chan_status[2];
+} dmcsStatus_t, *pdmcsStatus_t;
+
+/** Type definition of mlan_ds_misc_dmcs_status */
+typedef struct _mlan_ds_misc_dmcs_status {
+ t_u8 mapping_policy;
+ dmcsStatus_t radio_status[MAX_NUM_MAC];
+} mlan_ds_misc_dmcs_status, *pmlan_ds_misc_dmcs_status;
+
+/** Type definition of mlan_ds_misc_chan_trpc_cfg for
+ * MLAN_OID_MISC_GET_CHAN_TRPC_CFG */
+typedef struct _mlan_ds_misc_chan_trpc_cfg {
+ /** sub_band */
+ t_u16 sub_band;
+ /** length */
+ t_u16 length;
+ /** buf */
+ t_u8 trpc_buf[2048];
+} mlan_ds_misc_chan_trpc_cfg;
+
+#define MFG_CMD_SET_TEST_MODE 1
+#define MFG_CMD_UNSET_TEST_MODE 0
+#define MFG_CMD_TX_ANT 0x1004
+#define MFG_CMD_RX_ANT 0x1005
+#define MFG_CMD_TX_CONT 0x1009
+#define MFG_CMD_RF_CHAN 0x100A
+#define MFG_CMD_CLR_RX_ERR 0x1010
+#define MFG_CMD_TX_FRAME 0x1021
+#define MFG_CMD_RFPWR 0x1033
+#define MFG_CMD_RF_BAND_AG 0x1034
+#define MFG_CMD_RF_CHANNELBW 0x1044
+/** MFG CMD generic cfg */
+struct MLAN_PACK_START mfg_cmd_generic_cfg {
+ /** MFG command code */
+ t_u32 mfg_cmd;
+ /** Action */
+ t_u16 action;
+ /** Device ID */
+ t_u16 device_id;
+ /** MFG Error code */
+ t_u32 error;
+ /** value 1 */
+ t_u32 data1;
+ /** value 2 */
+ t_u32 data2;
+ /** value 3 */
+ t_u32 data3;
+} MLAN_PACK_END;
+
+/** MFG CMD Tx Frame 2 */
+struct MLAN_PACK_START mfg_cmd_tx_frame2 {
+ /** MFG command code */
+ t_u32 mfg_cmd;
+ /** Action */
+ t_u16 action;
+ /** Device ID */
+ t_u16 device_id;
+ /** MFG Error code */
+ t_u32 error;
+ /** enable */
+ t_u32 enable;
+ /** data_rate */
+ t_u32 data_rate;
+ /** frame pattern */
+ t_u32 frame_pattern;
+ /** frame length */
+ t_u32 frame_length;
+ /** BSSID */
+ t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
+ /** Adjust burst sifs */
+ t_u16 adjust_burst_sifs;
+ /** Burst sifs in us*/
+ t_u32 burst_sifs_in_us;
+ /** short preamble */
+ t_u32 short_preamble;
+ /** active sub channel */
+ t_u32 act_sub_ch;
+ /** short GI */
+ t_u32 short_gi;
+ /** Adv coding */
+ t_u32 adv_coding;
+ /** Tx beamforming */
+ t_u32 tx_bf;
+ /** HT Greenfield Mode*/
+ t_u32 gf_mode;
+ /** STBC */
+ t_u32 stbc;
+ /** power id */
+ t_u32 rsvd[2];
+} MLAN_PACK_END;
+
+/* MFG CMD Tx Continuous */
+struct MLAN_PACK_START mfg_cmd_tx_cont {
+ /** MFG command code */
+ t_u32 mfg_cmd;
+ /** Action */
+ t_u16 action;
+ /** Device ID */
+ t_u16 device_id;
+ /** MFG Error code */
+ t_u32 error;
+ /** enable Tx*/
+ t_u32 enable_tx;
+ /** Continuous Wave mode */
+ t_u32 cw_mode;
+ /** payload pattern */
+ t_u32 payload_pattern;
+ /** CS Mode */
+ t_u32 cs_mode;
+ /** active sub channel */
+ t_u32 act_sub_ch;
+ /** Tx rate */
+ t_u32 tx_rate;
+ /** power id */
+ t_u32 rsvd;
+} MLAN_PACK_END;
+
+typedef struct _mlan_ds_misc_chnrgpwr_cfg {
+ /** length */
+ t_u16 length;
+ /** chnrgpwr buf */
+ t_u8 chnrgpwr_buf[2048];
+} mlan_ds_misc_chnrgpwr_cfg;
+
+/** dfs chan list for MLAN_OID_MISC_CFP_TABLE */
+typedef struct _mlan_ds_misc_cfp_tbl {
+ /** band */
+ t_u8 band;
+ /** num chan */
+ t_u8 num_chan;
+ /** cfp table */
+ chan_freq_power_t cfp_tbl[];
+} mlan_ds_misc_cfp_tbl;
+
+/** Type definition of mlan_ds_misc_cfg for MLAN_IOCTL_MISC_CFG */
+typedef struct _mlan_ds_misc_cfg {
+ /** Sub-command */
+ t_u32 sub_command;
+ /** Miscellaneous configuration parameter */
+ union {
+ /** Generic IE for MLAN_OID_MISC_GEN_IE */
+ mlan_ds_misc_gen_ie gen_ie;
+ /** Region code for MLAN_OID_MISC_REGION */
+ t_u32 region_code;
+#ifdef SDIO
+ /** SDIO MP-A Ctrl command for MLAN_OID_MISC_SDIO_MPA_CTRL */
+ mlan_ds_misc_sdio_mpa_ctrl mpa_ctrl;
+#endif
+ /** Hostcmd for MLAN_OID_MISC_HOST_CMD */
+ mlan_ds_misc_cmd hostcmd;
+ /** System clock for MLAN_OID_MISC_SYS_CLOCK */
+ mlan_ds_misc_sys_clock sys_clock;
+ /** WWS set/get for MLAN_OID_MISC_WWS */
+ t_u32 wws_cfg;
+ /** Get associate response for MLAN_OID_MISC_ASSOC_RSP */
+ mlan_ds_misc_assoc_rsp assoc_resp;
+ /** Function init/shutdown for MLAN_OID_MISC_INIT_SHUTDOWN */
+ t_u32 func_init_shutdown;
+ /** Custom IE for MLAN_OID_MISC_CUSTOM_IE */
+ mlan_ds_misc_custom_ie cust_ie;
+ /** Config dynamic bandwidth*/
+ t_u16 dyn_bw;
+ /** Tx data pause for MLAN_OID_MISC_TX_DATAPAUSE */
+ mlan_ds_misc_tx_datapause tx_datapause;
+ /** IP address configuration */
+ mlan_ds_misc_ipaddr_cfg ipaddr_cfg;
+ /** MAC control for MLAN_OID_MISC_MAC_CONTROL */
+ t_u32 mac_ctrl;
+ /** MEF configuration for MLAN_OID_MISC_MEF_CFG */
+ mlan_ds_misc_mef_cfg mef_cfg;
+ /** CFP code for MLAN_OID_MISC_CFP_CODE */
+ mlan_ds_misc_cfp_code cfp_code;
+ /** Country code for MLAN_OID_MISC_COUNTRY_CODE */
+ mlan_ds_misc_country_code country_code;
+ /** Thermal reading for MLAN_OID_MISC_THERMAL */
+ t_u32 thermal;
+ /** Mgmt subtype mask for MLAN_OID_MISC_RX_MGMT_IND */
+ t_u32 mgmt_subtype_mask;
+ /** subscribe event for MLAN_OID_MISC_SUBSCRIBE_EVENT */
+ mlan_ds_subscribe_evt subscribe_event;
+#ifdef DEBUG_LEVEL1
+ /** Driver debug bit masks */
+ t_u32 drvdbg;
+#endif
+ /** Hotspot config param set */
+ t_u32 hotspot_cfg;
+#ifdef STA_SUPPORT
+ ExtCap_t ext_cap;
+#endif
+ mlan_ds_misc_otp_user_data otp_user_data;
+#ifdef USB
+ /** USB aggregation parameters for MLAN_OID_MISC_USB_AGGR_CTRL
+ */
+ mlan_ds_misc_usb_aggr_ctrl usb_aggr_params;
+#endif
+ mlan_ds_misc_aggr_ctrl aggr_params;
+ /** Tx control */
+ t_u32 tx_control;
+#if defined(STA_SUPPORT)
+ mlan_ds_misc_pmfcfg pmfcfg;
+#endif
+#ifdef WIFI_DIRECT_SUPPORT
+ mlan_ds_wifi_direct_config p2p_config;
+#endif
+ mlan_ds_coalesce_cfg coalesce_cfg;
+ t_u8 low_pwr_mode;
+ /** MEF-FLT-CONFIG for MLAN_OID_MISC_NV_FLT_CFG */
+ mlan_ds_misc_mef_flt_cfg mef_flt_cfg;
+ mlan_ds_misc_dfs_repeater dfs_repeater;
+#ifdef RX_PACKET_COALESCE
+ mlan_ds_misc_rx_packet_coalesce rx_coalesce;
+#endif
+ /** FW reload flag */
+ t_u8 fw_reload;
+ mlan_ds_sensor_temp sensor_temp;
+ /** GTK rekey data */
+ mlan_ds_misc_gtk_rekey_data gtk_rekey;
+ mlan_ds_bw_chan_oper bw_chan_oper;
+ mlan_ds_ind_rst_cfg ind_rst_cfg;
+ t_u64 misc_tsf;
+ mlan_ds_custom_reg_domain custom_reg_domain;
+ mlan_ds_misc_keep_alive keep_alive;
+ mlan_ds_misc_tx_rx_histogram tx_rx_histogram;
+ mlan_ds_cw_mode_ctrl cwmode;
+ /** Tx/Rx per-packet control */
+ t_u8 txrx_pkt_ctrl;
+ mlan_ds_misc_robustcoex_params robustcoexparams;
+#if defined(PCIE)
+ mlan_ds_ssu_params ssu_params;
+#endif
+ /** boot sleep enable or disable */
+ t_u16 boot_sleep;
+ /** Mapping Policy */
+ mlan_ds_misc_mapping_policy dmcs_policy;
+ mlan_ds_misc_dmcs_status dmcs_status;
+ mlan_ds_misc_rx_abort_cfg rx_abort_cfg;
+ mlan_ds_misc_rx_abort_cfg_ext rx_abort_cfg_ext;
+ mlan_ds_misc_tx_ampdu_prot_mode tx_ampdu_prot_mode;
+ mlan_ds_misc_rate_adapt_cfg rate_adapt_cfg;
+ mlan_ds_misc_cck_desense_cfg cck_desense_cfg;
+ mlan_ds_misc_chan_trpc_cfg trpc_cfg;
+ mlan_ds_misc_chnrgpwr_cfg rgchnpwr_cfg;
+
+ mlan_ds_band_steer_cfg band_steer_cfg;
+ mlan_ds_beacon_stuck_param_cfg beacon_stuck_cfg;
+ struct mfg_cmd_generic_cfg mfg_generic_cfg;
+ struct mfg_cmd_tx_cont mfg_tx_cont;
+ struct mfg_cmd_tx_frame2 mfg_tx_frame2;
+ mlan_ds_misc_arb_cfg arb_cfg;
+ mlan_ds_misc_cfp_tbl cfp;
+ t_u8 range_ext_mode;
+ mlan_ds_misc_dot11mc_unassoc_ftm_cfg dot11mc_unassoc_ftm_cfg;
+ mlan_ds_misc_tp_state tp_state;
+ } param;
+} mlan_ds_misc_cfg, *pmlan_ds_misc_cfg;
+
+/** Hotspot status enable */
+#define HOTSPOT_ENABLED MBIT(0)
+/** Hotspot status disable */
+#define HOTSPOT_DISABLED MFALSE
+/** Keep Hotspot2.0 compatible in mwu and wpa_supplicant */
+#define HOTSPOT_BY_SUPPLICANT MBIT(1)
+
+/** Reason codes */
+#define MLAN_REASON_UNSPECIFIED 1
+#define MLAN_REASON_PREV_AUTH_NOT_VALID 2
+#define MLAN_REASON_DEAUTH_LEAVING 3
+#define MLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4
+#define MLAN_REASON_DISASSOC_AP_BUSY 5
+#define MLAN_REASON_CLASS2_FRAME_FROM_NOAUTH_STA 6
+#define MLAN_REASON_CLASS3_FRAME_FROM_NOASSOC_STA 7
+#define MLAN_REASON_DISASSOC_STA_HAS_LEFT 8
+#define MLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9
+#endif /* !_MLAN_IOCTL_H_ */