/** @file mlan_ioctl.h * * @brief This file declares the IOCTL data structures and APIs. * * * Copyright 2008-2021 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_TX_AGGR_CTRL = 0x000C000F, 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_TDLS_CONFIG = 0x00200010, 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_TDLS_OPER = 0x00200026, MLAN_OID_MISC_GET_TDLS_IES = 0x00200027, 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_TDLS_CS_CHANNEL = 0x0020002D, MLAN_OID_MISC_COALESCE_CFG = 0x0020002E, MLAN_OID_MISC_TDLS_IDLE_TIME = 0x0020002F, 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, MLAN_OID_MISC_HAL_PHY_CFG = 0x0020007E, MLAN_OID_MISC_RF_TEST_HE_POWER = 0X0020007F, }; /** 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; /* previous bssid */ mlan_802_11_mac_addr prev_bssid; /**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; /** Reset Rx Mac Count */ t_u32 rx_reset_mac_recovery_cnt; /** ISR2 Not Done Count*/ t_u32 rx_Isr2_NotDone_Cnt; /** GDMA Abort Count */ t_u32 gdma_abort_cnt; /** Rx Reset MAC Count */ t_u32 g_reset_rx_mac_cnt; } 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 /** Maximum size of IEEE Information Elements */ #define IEEE_MAX_IE_SIZE 256 /** support up to 8 TDLS peer */ #define MLAN_MAX_TDLS_PEER_SUPPORTED 8 /** TDLS peer info */ typedef struct _tdls_peer_info { /** station mac address */ t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH]; /** SNR */ t_s8 snr; /** Noise Floor */ t_s8 nf; /** Extended Capabilities IE */ t_u8 ext_cap[IEEE_MAX_IE_SIZE]; /** HT Capabilities IE */ t_u8 ht_cap[IEEE_MAX_IE_SIZE]; /** VHT Capabilities IE */ t_u8 vht_cap[IEEE_MAX_IE_SIZE]; } tdls_peer_info; /** 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]; /** TDLS peer number */ t_u32 tdls_peer_num; /** TDLS peer list*/ tdls_peer_info tdls_peer_list[MLAN_MAX_TDLS_PEER_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 data_sent_cnt member of mlan_adapter */ t_u32 data_sent_cnt; /** 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; /** txrx_bd_size */ t_u16 txrx_bd_size; /** 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_data { /** 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_data; /** 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_data 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 * */ 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; /** Control TX AMPDU configuration */ t_u32 txaggrctrl; /** 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 { /** */ 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_cfg { /** 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_cfg; /** 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_cfg tx; } mlan_ds_misc_aggr_ctrl; #ifdef USB typedef struct _usb_aggr_ctrl_cfg { /** 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_cfg; /** 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_cfg tx_aggr_ctrl; /** Rx deaggregation control */ usb_aggr_ctrl_cfg 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 /**Action ID for TDLS disable link*/ #define WLAN_TDLS_DISABLE_LINK 0x00 /**Action ID for TDLS enable link*/ #define WLAN_TDLS_ENABLE_LINK 0x01 /**Action ID for TDLS create link*/ #define WLAN_TDLS_CREATE_LINK 0x02 /**Action ID for TDLS config link*/ #define WLAN_TDLS_CONFIG_LINK 0x03 /*reason code*/ #define MLAN_REASON_TDLS_TEARDOWN_UNSPECIFIED 26 /** TDLS operation buffer */ typedef struct _mlan_ds_misc_tdls_oper { /** TDLS Action */ t_u16 tdls_action; /** TDLS peer address */ t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH]; /** peer capability */ t_u16 capability; /** peer qos info */ t_u8 qos_info; /** peer extend capability */ t_u8 *ext_capab; /** extend capability len */ t_u8 ext_capab_len; /** support rates */ t_u8 *supported_rates; /** supported rates len */ t_u8 supported_rates_len; /** peer ht_cap */ t_u8 *ht_capa; /** peer vht capability */ t_u8 *vht_cap; } mlan_ds_misc_tdls_oper; /** flag for TDLS extcap */ #define TDLS_IE_FLAGS_EXTCAP 0x0001 /** flag for TDLS HTCAP */ #define TDLS_IE_FLAGS_HTCAP 0x0002 /** flag for TDLS HTINFO */ #define TDLS_IE_FLAGS_HTINFO 0x0004 /** flag for TDLS VHTCAP */ #define TDLS_IE_FLAGS_VHTCAP 0x0008 /** flag for TDLS VHTOPRAT */ #define TDLS_IE_FLAGS_VHTOPRAT 0x0010 /** flag for TDLS AID inof */ #define TDLS_IE_FLAGS_AID 0x0020 /** flag for TDLS Supported channels and regulatory class IE*/ #define TDLS_IE_FLAGS_SUPP_CS_IE 0x0040 /** flag for TDLS Qos info */ #define TDLS_IE_FLAGS_QOS_INFO 0x0080 /** flag for TDLS SETUP */ #define TDLS_IE_FLAGS_SETUP 0x0100 /** TDLS ie buffer */ typedef struct _mlan_ds_misc_tdls_ies { /** TDLS peer address */ t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH]; /** flags for request IEs */ t_u16 flags; /** Qos info */ t_u8 QosInfo; /** Extended Capabilities IE */ t_u8 ext_cap[IEEE_MAX_IE_SIZE]; /** HT Capabilities IE */ t_u8 ht_cap[IEEE_MAX_IE_SIZE]; /** HT Information IE */ t_u8 ht_info[IEEE_MAX_IE_SIZE]; /** VHT Capabilities IE */ t_u8 vht_cap[IEEE_MAX_IE_SIZE]; /** VHT Operations IE */ t_u8 vht_oprat[IEEE_MAX_IE_SIZE]; /** aid Info */ t_u8 aid_info[IEEE_MAX_IE_SIZE]; /** supported channels */ t_u8 supp_chan[IEEE_MAX_IE_SIZE]; /** supported regulatory class */ t_u8 regulatory_class[IEEE_MAX_IE_SIZE]; } mlan_ds_misc_tdls_ies; #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 typedef MLAN_PACK_START struct _mlan_ds_hal_phy_cfg_params { /** 11b pwr spectral density mask enable/disable */ t_u8 dot11b_psd_mask_cfg; /** reserved fields for future hal/phy cfg use */ t_u8 reserved[7]; } MLAN_PACK_END mlan_ds_hal_phy_cfg_params; #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 #define MFG_CMD_RADIO_MODE_CFG 0x1211 #define MFG_CMD_CONFIG_MAC_HE_TB_TX 0x110A /** 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]; /** NumPkt */ t_u32 NumPkt; /** MaxPE */ t_u32 MaxPE; /** BeamChange */ t_u32 BeamChange; /** Dcm */ t_u32 Dcm; /** Doppler */ t_u32 Doppler; /** MidP */ t_u32 MidP; /** QNum */ t_u32 QNum; } 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; struct MLAN_PACK_START mfg_Cmd_HE_TBTx_t { /** 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_u16 enable; /** Q num */ t_u16 qnum; /** AID */ t_u16 aid; /** AXQ Mu Timer */ t_u16 axq_mu_timer; /** Tx Power */ t_u16 tx_power; } 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; t_u16 tdls_idle_time; /** Config dynamic bandwidth*/ t_u16 dyn_bw; /** TDLS configuration for MLAN_OID_MISC_TDLS_CONFIG */ mlan_ds_misc_tdls_config tdls_config; /** TDLS operation for MLAN_OID_MISC_TDLS_OPER */ mlan_ds_misc_tdls_oper tdls_oper; /** TDLS ies for MLAN_OID_MISC_GET_TDLS_IES */ mlan_ds_misc_tdls_ies tdls_ies; /**tdls cs off channel*/ t_u8 tdls_cs_channel; /** 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; struct mfg_Cmd_HE_TBTx_t mfg_he_power; 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; mlan_ds_hal_phy_cfg_params hal_phy_cfg_params; } 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_ */