1*4882a593Smuzhiyun /** @file mlan_fw.h 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * @brief This file contains firmware specific defines. 4*4882a593Smuzhiyun * structures and declares global function prototypes used 5*4882a593Smuzhiyun * in MLAN module. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Copyright 2008-2022 NXP 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * This software file (the File) is distributed by NXP 11*4882a593Smuzhiyun * under the terms of the GNU General Public License Version 2, June 1991 12*4882a593Smuzhiyun * (the License). You may use, redistribute and/or modify the File in 13*4882a593Smuzhiyun * accordance with the terms and conditions of the License, a copy of which 14*4882a593Smuzhiyun * is available by writing to the Free Software Foundation, Inc., 15*4882a593Smuzhiyun * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the 16*4882a593Smuzhiyun * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 17*4882a593Smuzhiyun * 18*4882a593Smuzhiyun * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE 19*4882a593Smuzhiyun * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE 20*4882a593Smuzhiyun * ARE EXPRESSLY DISCLAIMED. The License provides additional details about 21*4882a593Smuzhiyun * this warranty disclaimer. 22*4882a593Smuzhiyun * 23*4882a593Smuzhiyun */ 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /****************************************************** 26*4882a593Smuzhiyun Change log: 27*4882a593Smuzhiyun 10/27/2008: initial version 28*4882a593Smuzhiyun ******************************************************/ 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #ifndef _MLAN_FW_H_ 31*4882a593Smuzhiyun #define _MLAN_FW_H_ 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun /** Interface header length */ 34*4882a593Smuzhiyun #ifdef USB 35*4882a593Smuzhiyun #define USB_INTF_HEADER_LEN 0 36*4882a593Smuzhiyun #endif /* USB */ 37*4882a593Smuzhiyun #ifdef SDIO 38*4882a593Smuzhiyun #define SDIO_INTF_HEADER_LEN 4 39*4882a593Smuzhiyun #endif /* SDIO */ 40*4882a593Smuzhiyun #ifdef PCIE 41*4882a593Smuzhiyun #define PCIE_INTF_HEADER_LEN 4 42*4882a593Smuzhiyun #endif /* PCIE */ 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #ifdef PRAGMA_PACK 45*4882a593Smuzhiyun #pragma pack(push, 1) 46*4882a593Smuzhiyun #endif 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #define WPA_GCMP_KEY_LEN 32 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #define WPA_CCMP_256_KEY_LEN 32 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /** Ethernet header */ 53*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 54*4882a593Smuzhiyun /** Ethernet header destination address */ 55*4882a593Smuzhiyun t_u8 dest_addr[MLAN_MAC_ADDR_LENGTH]; 56*4882a593Smuzhiyun /** Ethernet header source address */ 57*4882a593Smuzhiyun t_u8 src_addr[MLAN_MAC_ADDR_LENGTH]; 58*4882a593Smuzhiyun /** Ethernet header length */ 59*4882a593Smuzhiyun t_u16 h803_len; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun } MLAN_PACK_END Eth803Hdr_t; 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun /** RFC 1042 header */ 64*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 65*4882a593Smuzhiyun /** LLC DSAP */ 66*4882a593Smuzhiyun t_u8 llc_dsap; 67*4882a593Smuzhiyun /** LLC SSAP */ 68*4882a593Smuzhiyun t_u8 llc_ssap; 69*4882a593Smuzhiyun /** LLC CTRL */ 70*4882a593Smuzhiyun t_u8 llc_ctrl; 71*4882a593Smuzhiyun /** SNAP OUI */ 72*4882a593Smuzhiyun t_u8 snap_oui[3]; 73*4882a593Smuzhiyun /** SNAP type */ 74*4882a593Smuzhiyun t_u16 snap_type; 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun } MLAN_PACK_END Rfc1042Hdr_t; 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun /** Rx packet header */ 79*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 80*4882a593Smuzhiyun /** Etherner header */ 81*4882a593Smuzhiyun Eth803Hdr_t eth803_hdr; 82*4882a593Smuzhiyun /** RFC 1042 header */ 83*4882a593Smuzhiyun Rfc1042Hdr_t rfc1042_hdr; 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun } MLAN_PACK_END RxPacketHdr_t; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun /** Rates supported in band B */ 88*4882a593Smuzhiyun #define B_SUPPORTED_RATES 5 89*4882a593Smuzhiyun /** Rates supported in band G */ 90*4882a593Smuzhiyun #define G_SUPPORTED_RATES 9 91*4882a593Smuzhiyun /** Rates supported in band BG */ 92*4882a593Smuzhiyun #define BG_SUPPORTED_RATES 13 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun /** Setup the number of rates passed in the driver/firmware API */ 95*4882a593Smuzhiyun #define A_SUPPORTED_RATES 9 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun /** CapInfo Short Slot Time Disabled */ 98*4882a593Smuzhiyun /* #define SHORT_SLOT_TIME_DISABLED(CapInfo) 99*4882a593Smuzhiyun * ((IEEEtypes_CapInfo_t)(CapInfo).short_slot_time = 0) */ 100*4882a593Smuzhiyun #define SHORT_SLOT_TIME_DISABLED(CapInfo) (CapInfo &= ~MBIT(10)) 101*4882a593Smuzhiyun /** CapInfo Short Slot Time Enabled */ 102*4882a593Smuzhiyun #define SHORT_SLOT_TIME_ENABLED(CapInfo) (CapInfo |= MBIT(10)) 103*4882a593Smuzhiyun /** CapInfo Spectrum Mgmt Disabled */ 104*4882a593Smuzhiyun #define SPECTRUM_MGMT_DISABLED(CapInfo) (CapInfo &= ~MBIT(8)) 105*4882a593Smuzhiyun /** CapInfo Spectrum Mgmt Enabled */ 106*4882a593Smuzhiyun #define SPECTRUM_MGMT_ENABLED(CapInfo) (CapInfo |= MBIT(8)) 107*4882a593Smuzhiyun /** CapInfo Radio Measurement Disabled */ 108*4882a593Smuzhiyun #define RADIO_MEASUREMENT_DISABLED(CapInfo) (CapInfo &= ~MBIT(12)) 109*4882a593Smuzhiyun /** CapInfo Radio Measurement Enabled */ 110*4882a593Smuzhiyun #define RADIO_MEASUREMENT_ENABLED(CapInfo) (CapInfo |= MBIT(12)) 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun /** Setup the number of rates passed in the driver/firmware API */ 113*4882a593Smuzhiyun #define HOSTCMD_SUPPORTED_RATES 14 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun /** Rates supported in band N */ 116*4882a593Smuzhiyun #define N_SUPPORTED_RATES 3 117*4882a593Smuzhiyun #ifdef STA_SUPPORT 118*4882a593Smuzhiyun /** All bands (B, G, N, AAC, GAC) */ 119*4882a593Smuzhiyun #define ALL_802_11_BANDS \ 120*4882a593Smuzhiyun (BAND_A | BAND_B | BAND_G | BAND_GN | BAND_AAC | BAND_GAC) 121*4882a593Smuzhiyun #else 122*4882a593Smuzhiyun /** All bands (B, G, A) */ 123*4882a593Smuzhiyun #define ALL_802_11_BANDS (BAND_B | BAND_G | BAND_A) 124*4882a593Smuzhiyun #endif /* STA_SUPPORT */ 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun #ifdef STA_SUPPORT 127*4882a593Smuzhiyun /** Firmware multiple bands support */ 128*4882a593Smuzhiyun #define FW_MULTI_BANDS_SUPPORT \ 129*4882a593Smuzhiyun (MBIT(8) | MBIT(9) | MBIT(10) | MBIT(11) | MBIT(12) | MBIT(13)) 130*4882a593Smuzhiyun #else 131*4882a593Smuzhiyun /** Firmware multiple bands support */ 132*4882a593Smuzhiyun #define FW_MULTI_BANDS_SUPPORT (MBIT(8) | MBIT(9) | MBIT(10)) 133*4882a593Smuzhiyun #endif /* STA_SUPPORT */ 134*4882a593Smuzhiyun /** Check if multiple bands support is enabled in firmware */ 135*4882a593Smuzhiyun #define IS_SUPPORT_MULTI_BANDS(_adapter) \ 136*4882a593Smuzhiyun (_adapter->fw_cap_info & FW_MULTI_BANDS_SUPPORT) 137*4882a593Smuzhiyun /** Get default bands of the firmware */ 138*4882a593Smuzhiyun /* need to shift bit 12 and bit 13 in fw_cap_info from the firmware 139*4882a593Smuzhiyun * to bit 13 and 14 for 11ac so that bit 11 is for GN, bit 12 for AN, 140*4882a593Smuzhiyun * bit 13 for GAC, and bit 14 for AAC, in order to be compatible with 141*4882a593Smuzhiyun * the band capability defined in the driver after right shift of 8 bits */ 142*4882a593Smuzhiyun #define GET_FW_DEFAULT_BANDS(_adapter) \ 143*4882a593Smuzhiyun (((((_adapter->fw_cap_info & 0x3000) << 1) | \ 144*4882a593Smuzhiyun (_adapter->fw_cap_info & ~0xF000)) >> \ 145*4882a593Smuzhiyun 8) & \ 146*4882a593Smuzhiyun ALL_802_11_BANDS) 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun extern t_u8 SupportedRates_B[B_SUPPORTED_RATES]; 149*4882a593Smuzhiyun extern t_u8 SupportedRates_G[G_SUPPORTED_RATES]; 150*4882a593Smuzhiyun extern t_u8 SupportedRates_BG[BG_SUPPORTED_RATES]; 151*4882a593Smuzhiyun extern t_u8 SupportedRates_A[A_SUPPORTED_RATES]; 152*4882a593Smuzhiyun extern t_u8 SupportedRates_N[N_SUPPORTED_RATES]; 153*4882a593Smuzhiyun extern t_u8 AdhocRates_G[G_SUPPORTED_RATES]; 154*4882a593Smuzhiyun extern t_u8 AdhocRates_B[B_SUPPORTED_RATES]; 155*4882a593Smuzhiyun extern t_u8 AdhocRates_BG[BG_SUPPORTED_RATES]; 156*4882a593Smuzhiyun extern t_u8 AdhocRates_A[A_SUPPORTED_RATES]; 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun /** Default auto deep sleep mode */ 159*4882a593Smuzhiyun #define DEFAULT_AUTO_DS_MODE MTRUE 160*4882a593Smuzhiyun /** Default power save mode */ 161*4882a593Smuzhiyun #define DEFAULT_PS_MODE Wlan802_11PowerModePSP 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun /** WEP Key index mask */ 164*4882a593Smuzhiyun #define HostCmd_WEP_KEY_INDEX_MASK 0x3fff 165*4882a593Smuzhiyun /** Length of WEP 40 bit key */ 166*4882a593Smuzhiyun #define WEP_40_BIT_LEN 5 167*4882a593Smuzhiyun /** Length of WEP 104 bit key */ 168*4882a593Smuzhiyun #define WEP_104_BIT_LEN 13 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun /** Key information enabled */ 171*4882a593Smuzhiyun #define KEY_INFO_ENABLED 0x01 172*4882a593Smuzhiyun /** KEY_TYPE_ID */ 173*4882a593Smuzhiyun typedef enum _KEY_TYPE_ID { 174*4882a593Smuzhiyun /** Key type : WEP */ 175*4882a593Smuzhiyun KEY_TYPE_ID_WEP = 0, 176*4882a593Smuzhiyun /** Key type : TKIP */ 177*4882a593Smuzhiyun KEY_TYPE_ID_TKIP = 1, 178*4882a593Smuzhiyun /** Key type : AES */ 179*4882a593Smuzhiyun KEY_TYPE_ID_AES = 2, 180*4882a593Smuzhiyun KEY_TYPE_ID_WAPI = 3, 181*4882a593Smuzhiyun KEY_TYPE_ID_AES_CMAC = 4, 182*4882a593Smuzhiyun /** Key type : GCMP */ 183*4882a593Smuzhiyun KEY_TYPE_ID_GCMP = 5, 184*4882a593Smuzhiyun /** Key type : GCMP_256 */ 185*4882a593Smuzhiyun KEY_TYPE_ID_GCMP_256 = 6, 186*4882a593Smuzhiyun /** Key type : CCMP_256 */ 187*4882a593Smuzhiyun KEY_TYPE_ID_CCMP_256 = 7, 188*4882a593Smuzhiyun /** Key type : GMAC_128 */ 189*4882a593Smuzhiyun KEY_TYPE_ID_BIP_GMAC_128 = 8, 190*4882a593Smuzhiyun /** Key type : GMAC_256 */ 191*4882a593Smuzhiyun KEY_TYPE_ID_BIP_GMAC_256 = 9, 192*4882a593Smuzhiyun } KEY_TYPE_ID; 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun /** Key Info flag for multicast key */ 195*4882a593Smuzhiyun #define KEY_INFO_MCAST_KEY 0x01 196*4882a593Smuzhiyun /** Key Info flag for unicast key */ 197*4882a593Smuzhiyun #define KEY_INFO_UCAST_KEY 0x02 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun /** KEY_INFO_WEP*/ 200*4882a593Smuzhiyun typedef enum _KEY_INFO_WEP { 201*4882a593Smuzhiyun KEY_INFO_WEP_MCAST = 0x01, 202*4882a593Smuzhiyun KEY_INFO_WEP_UNICAST = 0x02, 203*4882a593Smuzhiyun KEY_INFO_WEP_ENABLED = 0x04 204*4882a593Smuzhiyun } KEY_INFO_WEP; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun /** KEY_INFO_TKIP */ 207*4882a593Smuzhiyun typedef enum _KEY_INFO_TKIP { 208*4882a593Smuzhiyun KEY_INFO_TKIP_MCAST = 0x01, 209*4882a593Smuzhiyun KEY_INFO_TKIP_UNICAST = 0x02, 210*4882a593Smuzhiyun KEY_INFO_TKIP_ENABLED = 0x04 211*4882a593Smuzhiyun } KEY_INFO_TKIP; 212*4882a593Smuzhiyun 213*4882a593Smuzhiyun /** KEY_INFO_AES*/ 214*4882a593Smuzhiyun typedef enum _KEY_INFO_AES { 215*4882a593Smuzhiyun KEY_INFO_AES_MCAST = 0x01, 216*4882a593Smuzhiyun KEY_INFO_AES_UNICAST = 0x02, 217*4882a593Smuzhiyun KEY_INFO_AES_ENABLED = 0x04, 218*4882a593Smuzhiyun KEY_INFO_AES_MCAST_IGTK = 0x400, 219*4882a593Smuzhiyun } KEY_INFO_AES; 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun /** WPA AES key length */ 222*4882a593Smuzhiyun #define WPA_AES_KEY_LEN 16 223*4882a593Smuzhiyun /** WPA TKIP key length */ 224*4882a593Smuzhiyun #define WPA_TKIP_KEY_LEN 32 225*4882a593Smuzhiyun /** WPA AES IGTK key length */ 226*4882a593Smuzhiyun #define CMAC_AES_KEY_LEN 16 227*4882a593Smuzhiyun /** IGTK key length */ 228*4882a593Smuzhiyun #define WPA_IGTK_KEY_LEN 16 229*4882a593Smuzhiyun #define WPA_IGTK_256_KEY_LEN 32 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun /** WAPI key length */ 232*4882a593Smuzhiyun #define WAPI_KEY_LEN 50 233*4882a593Smuzhiyun /** KEY_INFO_WAPI*/ 234*4882a593Smuzhiyun typedef enum _KEY_INFO_WAPI { 235*4882a593Smuzhiyun KEY_INFO_WAPI_MCAST = 0x01, 236*4882a593Smuzhiyun KEY_INFO_WAPI_UNICAST = 0x02, 237*4882a593Smuzhiyun KEY_INFO_WAPI_ENABLED = 0x04 238*4882a593Smuzhiyun } KEY_INFO_WAPI; 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun /** Maximum ethernet frame length sans FCS */ 241*4882a593Smuzhiyun #define MV_ETH_FRAME_LEN 1514 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun #if defined(SDIO) || defined(PCIE) 244*4882a593Smuzhiyun /** Length of SNAP header */ 245*4882a593Smuzhiyun #define MRVDRV_SNAP_HEADER_LEN 8 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun /** The number of times to try when polling for status bits */ 248*4882a593Smuzhiyun #define MAX_POLL_TRIES 100 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun /** The number of times to try when waiting for downloaded firmware to 251*4882a593Smuzhiyun become active when multiple interface is present */ 252*4882a593Smuzhiyun #define MAX_MULTI_INTERFACE_POLL_TRIES 150 253*4882a593Smuzhiyun /** The number of times to try when waiting for downloaded firmware to 254*4882a593Smuzhiyun become active. (polling the scratch register). */ 255*4882a593Smuzhiyun #define MAX_FIRMWARE_POLL_TRIES 100 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /** FW fill in rx_len with extra 204 bytes */ 258*4882a593Smuzhiyun #define EXTRA_LEN 256 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun /** Buffer size for ethernet Tx packets */ 261*4882a593Smuzhiyun #define MRVDRV_ETH_TX_PACKET_BUFFER_SIZE \ 262*4882a593Smuzhiyun (MV_ETH_FRAME_LEN + sizeof(TxPD) + EXTRA_LEN) 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun /** Buffer size for ethernet Rx packets */ 265*4882a593Smuzhiyun #define MRVDRV_ETH_RX_PACKET_BUFFER_SIZE \ 266*4882a593Smuzhiyun (MV_ETH_FRAME_LEN + sizeof(RxPD) + MRVDRV_SNAP_HEADER_LEN + EXTRA_LEN) 267*4882a593Smuzhiyun #endif /* SDIO || PCIE */ 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun #ifdef SDIO 270*4882a593Smuzhiyun /* Macros in interface module */ 271*4882a593Smuzhiyun /** Firmware ready */ 272*4882a593Smuzhiyun #define SDIO_FIRMWARE_READY 0xfedc 273*4882a593Smuzhiyun #endif /* SDIO */ 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun #ifdef PCIE 276*4882a593Smuzhiyun /* Macros in interface module */ 277*4882a593Smuzhiyun /** Firmware ready */ 278*4882a593Smuzhiyun #define PCIE_FIRMWARE_READY 0xfedcba00 279*4882a593Smuzhiyun #endif 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun /** Enumeration definition*/ 282*4882a593Smuzhiyun /** WLAN_802_11_PRIVACY_FILTER */ 283*4882a593Smuzhiyun typedef enum _WLAN_802_11_PRIVACY_FILTER { 284*4882a593Smuzhiyun Wlan802_11PrivFilterAcceptAll, 285*4882a593Smuzhiyun Wlan802_11PrivFilter8021xWEP 286*4882a593Smuzhiyun } WLAN_802_11_PRIVACY_FILTER; 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun /** WLAN_802_11_WEP_STATUS */ 289*4882a593Smuzhiyun typedef enum _WLAN_802_11_WEP_STATUS { 290*4882a593Smuzhiyun Wlan802_11WEPEnabled, 291*4882a593Smuzhiyun Wlan802_11WEPDisabled, 292*4882a593Smuzhiyun Wlan802_11WEPKeyAbsent, 293*4882a593Smuzhiyun Wlan802_11WEPNotSupported 294*4882a593Smuzhiyun } WLAN_802_11_WEP_STATUS; 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun /** SNR calculation */ 297*4882a593Smuzhiyun #define CAL_SNR(RSSI, NF) ((t_s16)((t_s16)(RSSI) - (t_s16)(NF))) 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun /** 2K buf size */ 300*4882a593Smuzhiyun #define MLAN_TX_DATA_BUF_SIZE_2K 2048 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun /** Terminating TLV Type */ 303*4882a593Smuzhiyun #define MRVL_TERMINATE_TLV_ID 0xffff 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun /** TLV type : SSID */ 306*4882a593Smuzhiyun #define TLV_TYPE_SSID 0x0000 307*4882a593Smuzhiyun /** TLV type : Rates */ 308*4882a593Smuzhiyun #define TLV_TYPE_RATES 0x0001 309*4882a593Smuzhiyun /** TLV type : PHY FH */ 310*4882a593Smuzhiyun #define TLV_TYPE_PHY_FH 0x0002 311*4882a593Smuzhiyun /** TLV type : PHY DS */ 312*4882a593Smuzhiyun #define TLV_TYPE_PHY_DS 0x0003 313*4882a593Smuzhiyun /** TLV type : CF */ 314*4882a593Smuzhiyun #define TLV_TYPE_CF 0x0004 315*4882a593Smuzhiyun /** TLV type : IBSS */ 316*4882a593Smuzhiyun #define TLV_TYPE_IBSS 0x0006 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun /** TLV type : Domain */ 319*4882a593Smuzhiyun #define TLV_TYPE_DOMAIN 0x0007 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun /** TLV type : Power constraint */ 322*4882a593Smuzhiyun #define TLV_TYPE_POWER_CONSTRAINT 0x0020 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun /** TLV type : Power capability */ 325*4882a593Smuzhiyun #define TLV_TYPE_POWER_CAPABILITY 0x0021 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun #define TLV_TYPE_HT_CAPABILITY 0x002d 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun #define TLV_TYPE_EXTENSION_ID 0x00ff 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun /**TLV type : Host MLME Flag*/ 332*4882a593Smuzhiyun #define TLV_TYPE_HOST_MLME (PROPRIETARY_TLV_BASE_ID + 307) 333*4882a593Smuzhiyun 334*4882a593Smuzhiyun /** TLV type : AP wacp mode */ 335*4882a593Smuzhiyun #define TLV_TYPE_UAP_WACP_MODE (PROPRIETARY_TLV_BASE_ID + 0x147) /* 0x0247 */ 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun /** TLV type : Vendor Specific IE */ 338*4882a593Smuzhiyun #define TLV_TYPE_VENDOR_SPECIFIC_IE 0x00dd 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun /** TLV type : Key material */ 341*4882a593Smuzhiyun #define TLV_TYPE_KEY_MATERIAL (PROPRIETARY_TLV_BASE_ID + 0x00) /* 0x0100 */ 342*4882a593Smuzhiyun /** TLV type : Channel list */ 343*4882a593Smuzhiyun #define TLV_TYPE_CHANLIST (PROPRIETARY_TLV_BASE_ID + 0x01) /* 0x0101 */ 344*4882a593Smuzhiyun /** TLV type : Number of probes */ 345*4882a593Smuzhiyun #define TLV_TYPE_NUMPROBES (PROPRIETARY_TLV_BASE_ID + 0x02) /* 0x0102 */ 346*4882a593Smuzhiyun /** TLV type : Beacon RSSI low */ 347*4882a593Smuzhiyun #define TLV_TYPE_RSSI_LOW (PROPRIETARY_TLV_BASE_ID + 0x04) /* 0x0104 */ 348*4882a593Smuzhiyun /** TLV type : Beacon SNR low */ 349*4882a593Smuzhiyun #define TLV_TYPE_SNR_LOW (PROPRIETARY_TLV_BASE_ID + 0x05) /* 0x0105 */ 350*4882a593Smuzhiyun /** TLV type : Fail count */ 351*4882a593Smuzhiyun #define TLV_TYPE_FAILCOUNT (PROPRIETARY_TLV_BASE_ID + 0x06) /* 0x0106 */ 352*4882a593Smuzhiyun /** TLV type : BCN miss */ 353*4882a593Smuzhiyun #define TLV_TYPE_BCNMISS (PROPRIETARY_TLV_BASE_ID + 0x07) /* 0x0107 */ 354*4882a593Smuzhiyun /** TLV type : LED behavior */ 355*4882a593Smuzhiyun #define TLV_TYPE_LEDBEHAVIOR (PROPRIETARY_TLV_BASE_ID + 0x09) /* 0x0109 */ 356*4882a593Smuzhiyun /** TLV type : Passthrough */ 357*4882a593Smuzhiyun #define TLV_TYPE_PASSTHROUGH (PROPRIETARY_TLV_BASE_ID + 0x0a) /* 0x010a */ 358*4882a593Smuzhiyun /** TLV type : Power TBL 2.4 Ghz */ 359*4882a593Smuzhiyun #define TLV_TYPE_POWER_TBL_2_4GHZ \ 360*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x0c) /* 0x010c \ 361*4882a593Smuzhiyun */ 362*4882a593Smuzhiyun /** TLV type : Power TBL 5 GHz */ 363*4882a593Smuzhiyun #define TLV_TYPE_POWER_TBL_5GHZ (PROPRIETARY_TLV_BASE_ID + 0x0d) /* 0x010d */ 364*4882a593Smuzhiyun /** TLV type : WMM queue status */ 365*4882a593Smuzhiyun #define TLV_TYPE_WMMQSTATUS (PROPRIETARY_TLV_BASE_ID + 0x10) /* 0x0110 */ 366*4882a593Smuzhiyun /** TLV type : Wildcard SSID */ 367*4882a593Smuzhiyun #define TLV_TYPE_WILDCARDSSID (PROPRIETARY_TLV_BASE_ID + 0x12) /* 0x0112 */ 368*4882a593Smuzhiyun /** TLV type : TSF timestamp */ 369*4882a593Smuzhiyun #define TLV_TYPE_TSFTIMESTAMP (PROPRIETARY_TLV_BASE_ID + 0x13) /* 0x0113 */ 370*4882a593Smuzhiyun /** TLV type : ARP filter */ 371*4882a593Smuzhiyun #define TLV_TYPE_ARP_FILTER (PROPRIETARY_TLV_BASE_ID + 0x15) /* 0x0115 */ 372*4882a593Smuzhiyun /** TLV type : Beacon RSSI high */ 373*4882a593Smuzhiyun #define TLV_TYPE_RSSI_HIGH (PROPRIETARY_TLV_BASE_ID + 0x16) /* 0x0116 */ 374*4882a593Smuzhiyun /** TLV type : Beacon SNR high */ 375*4882a593Smuzhiyun #define TLV_TYPE_SNR_HIGH (PROPRIETARY_TLV_BASE_ID + 0x17) /* 0x0117 */ 376*4882a593Smuzhiyun /** TLV type : Start BG scan later */ 377*4882a593Smuzhiyun #define TLV_TYPE_STARTBGSCANLATER \ 378*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x1e) /* 0x011e \ 379*4882a593Smuzhiyun */ 380*4882a593Smuzhiyun /** TLV type: BG scan repeat count */ 381*4882a593Smuzhiyun #define TLV_TYPE_REPEAT_COUNT (PROPRIETARY_TLV_BASE_ID + 0xb0) /* 0x01b0 */ 382*4882a593Smuzhiyun /** TLV type : Authentication type */ 383*4882a593Smuzhiyun #define TLV_TYPE_AUTH_TYPE (PROPRIETARY_TLV_BASE_ID + 0x1f) /* 0x011f */ 384*4882a593Smuzhiyun /** TLV type : BSSID */ 385*4882a593Smuzhiyun #define TLV_TYPE_BSSID (PROPRIETARY_TLV_BASE_ID + 0x23) /* 0x0123 */ 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun /** TLV type : Link Quality */ 388*4882a593Smuzhiyun #define TLV_TYPE_LINK_QUALITY (PROPRIETARY_TLV_BASE_ID + 0x24) /* 0x0124 */ 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun /** TLV type : Data RSSI low */ 391*4882a593Smuzhiyun #define TLV_TYPE_RSSI_LOW_DATA (PROPRIETARY_TLV_BASE_ID + 0x26) /* 0x0126 */ 392*4882a593Smuzhiyun /** TLV type : Data SNR low */ 393*4882a593Smuzhiyun #define TLV_TYPE_SNR_LOW_DATA (PROPRIETARY_TLV_BASE_ID + 0x27) /* 0x0127 */ 394*4882a593Smuzhiyun /** TLV type : Data RSSI high */ 395*4882a593Smuzhiyun #define TLV_TYPE_RSSI_HIGH_DATA (PROPRIETARY_TLV_BASE_ID + 0x28) /* 0x0128 */ 396*4882a593Smuzhiyun /** TLV type : Data SNR high */ 397*4882a593Smuzhiyun #define TLV_TYPE_SNR_HIGH_DATA (PROPRIETARY_TLV_BASE_ID + 0x29) /* 0x0129 */ 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun /** TLV type : Channel band list */ 400*4882a593Smuzhiyun #define TLV_TYPE_CHANNELBANDLIST (PROPRIETARY_TLV_BASE_ID + 0x2a) /* 0x012a */ 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun /** TLV type : Security Cfg */ 403*4882a593Smuzhiyun #define TLV_TYPE_SECURITY_CFG (PROPRIETARY_TLV_BASE_ID + 0x3a) /* 0x013a */ 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun /** TLV type : Passphrase */ 406*4882a593Smuzhiyun #define TLV_TYPE_PASSPHRASE (PROPRIETARY_TLV_BASE_ID + 0x3c) /* 0x013c */ 407*4882a593Smuzhiyun /** TLV type : SAE Password */ 408*4882a593Smuzhiyun #define TLV_TYPE_SAE_PASSWORD (PROPRIETARY_TLV_BASE_ID + 0x141) /* 0x0241 */ 409*4882a593Smuzhiyun /** TLV type : SAE PWE Derivation Mode */ 410*4882a593Smuzhiyun #define TLV_TYPE_WPA3_SAE_PWE_DERIVATION_MODE \ 411*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 339) /* 0x0100 + 0x153 */ 412*4882a593Smuzhiyun /** TLV type : Encryption Protocol TLV */ 413*4882a593Smuzhiyun #define TLV_TYPE_ENCRYPTION_PROTO \ 414*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x40) /* 0x0140 \ 415*4882a593Smuzhiyun */ 416*4882a593Smuzhiyun /** TLV type : Cipher TLV */ 417*4882a593Smuzhiyun #define TLV_TYPE_CIPHER (PROPRIETARY_TLV_BASE_ID + 0x42) /* 0x0142 */ 418*4882a593Smuzhiyun /** TLV type : PMK */ 419*4882a593Smuzhiyun #define TLV_TYPE_PMK (PROPRIETARY_TLV_BASE_ID + 0x44) /* 0x0144 */ 420*4882a593Smuzhiyun 421*4882a593Smuzhiyun /** TLV type : BCN miss */ 422*4882a593Smuzhiyun #define TLV_TYPE_PRE_BCNMISS (PROPRIETARY_TLV_BASE_ID + 0x49) /* 0x0149 */ 423*4882a593Smuzhiyun 424*4882a593Smuzhiyun /** TLV type : ENABLE ROAM IE */ 425*4882a593Smuzhiyun #define TLV_TYPE_ROAM (PROPRIETARY_TLV_BASE_ID + 245) 426*4882a593Smuzhiyun /** TLV type : AP LIST IE */ 427*4882a593Smuzhiyun #define TLV_TYPE_APLIST (PROPRIETARY_TLV_BASE_ID + 246) 428*4882a593Smuzhiyun /** TLV type : PMK */ 429*4882a593Smuzhiyun #define TLV_TYPE_PMK_R0 (PROPRIETARY_TLV_BASE_ID + 247) 430*4882a593Smuzhiyun /** TLV type : PMK */ 431*4882a593Smuzhiyun #define TLV_TYPE_PMK_R0_NAME (PROPRIETARY_TLV_BASE_ID + 248) 432*4882a593Smuzhiyun /** TLV type : TRIGGER CONDITION*/ 433*4882a593Smuzhiyun #define TLV_TYPE_ROM_TRIGGER (PROPRIETARY_TLV_BASE_ID + 264) 434*4882a593Smuzhiyun /** TLV type : RETRY_COUNT*/ 435*4882a593Smuzhiyun #define TLV_TYPE_ROM_RETRY_COUNT (PROPRIETARY_TLV_BASE_ID + 265) 436*4882a593Smuzhiyun /** TLV type : BGSCAN SETTING*/ 437*4882a593Smuzhiyun #define TLV_TYPE_ROM_BGSCAN (PROPRIETARY_TLV_BASE_ID + 266) 438*4882a593Smuzhiyun /** TLV type : PARA RSSI*/ 439*4882a593Smuzhiyun #define TLV_TYPE_ROM_PARA_RSSI (PROPRIETARY_TLV_BASE_ID + 267) 440*4882a593Smuzhiyun /** TLV type : BSSID blacklist*/ 441*4882a593Smuzhiyun #define TLV_TYPE_BLACKLIST_BSSID (PROPRIETARY_TLV_BASE_ID + 0x11d) 442*4882a593Smuzhiyun /** TLV type : BAND & RSSI*/ 443*4882a593Smuzhiyun #define TLV_TYPE_BAND_RSSI (PROPRIETARY_TLV_BASE_ID + 0x11e) 444*4882a593Smuzhiyun /** TLV type : ESS scan*/ 445*4882a593Smuzhiyun #define TLV_TYPE_ENERGYEFFICIENTSCAN (PROPRIETARY_TLV_BASE_ID + 0xda) 446*4882a593Smuzhiyun /** TLV type : KEY params*/ 447*4882a593Smuzhiyun #define TLV_TYPE_ROAM_OFFLOAD_USER_SET_PMK (PROPRIETARY_TLV_BASE_ID + 291) 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun /** TLV type: WAPI IE */ 450*4882a593Smuzhiyun #define TLV_TYPE_WAPI_IE (PROPRIETARY_TLV_BASE_ID + 0x5e) /* 0x015e */ 451*4882a593Smuzhiyun 452*4882a593Smuzhiyun /** TLV type: MGMT IE */ 453*4882a593Smuzhiyun #define TLV_TYPE_MGMT_IE (PROPRIETARY_TLV_BASE_ID + 0x69) /* 0x0169 */ 454*4882a593Smuzhiyun /** TLV type: MAX_MGMT_IE */ 455*4882a593Smuzhiyun #define TLV_TYPE_MAX_MGMT_IE (PROPRIETARY_TLV_BASE_ID + 0xaa) /* 0x01aa */ 456*4882a593Smuzhiyun 457*4882a593Smuzhiyun /** TLV : Region Domain Code */ 458*4882a593Smuzhiyun #define TLV_TYPE_REGION_DOMAIN_CODE \ 459*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0xab) /* 0x01ab */ 460*4882a593Smuzhiyun 461*4882a593Smuzhiyun /** TLV type: key param v2 */ 462*4882a593Smuzhiyun #define TLV_TYPE_KEY_PARAM_V2 (PROPRIETARY_TLV_BASE_ID + 0x9C) /* 0x019C */ 463*4882a593Smuzhiyun 464*4882a593Smuzhiyun /** TLV type: ps params in hs */ 465*4882a593Smuzhiyun #define TLV_TYPE_PS_PARAMS_IN_HS (PROPRIETARY_TLV_BASE_ID + 0xB5) /* 0x01b5 */ 466*4882a593Smuzhiyun /** TLV type: hs wake hold off */ 467*4882a593Smuzhiyun #define TLV_TYPE_HS_WAKE_HOLDOFF (PROPRIETARY_TLV_BASE_ID + 0xB6) /* 0x01b6 */ 468*4882a593Smuzhiyun /** TLV type: wake up source */ 469*4882a593Smuzhiyun #define TLV_TYPE_HS_WAKEUP_SOURCE_GPIO \ 470*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x105) /* 0x0205 */ 471*4882a593Smuzhiyun /** TLV type: management filter */ 472*4882a593Smuzhiyun #define TLV_TYPE_MGMT_FRAME_WAKEUP \ 473*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x116) /* 0x0216 */ 474*4882a593Smuzhiyun /** TLV type: extend wakeup source */ 475*4882a593Smuzhiyun #define TLV_TYPE_WAKEUP_EXTEND (PROPRIETARY_TLV_BASE_ID + 0x118) /* 0x0218 */ 476*4882a593Smuzhiyun /** TLV type: HS antenna mode */ 477*4882a593Smuzhiyun #define TLV_TYPE_HS_ANTMODE (PROPRIETARY_TLV_BASE_ID + 0x119) /* 0x0219 */ 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun /** TLV type: robustcoex mode */ 480*4882a593Smuzhiyun #define TLV_TYPE_ROBUSTCOEX (PROPRIETARY_TLV_BASE_ID + 0x11B) /* 0x021B */ 481*4882a593Smuzhiyun 482*4882a593Smuzhiyun #define TLV_TYPE_DMCS_STATUS (PROPRIETARY_TLV_BASE_ID + 0x13A) /* 0x023A */ 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun /** TLV type : TDLS IDLE TIMEOUT */ 485*4882a593Smuzhiyun #define TLV_TYPE_TDLS_IDLE_TIMEOUT \ 486*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0xC2) /* 0x01C2 \ 487*4882a593Smuzhiyun */ 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun /** TLV type : HT Capabilities */ 490*4882a593Smuzhiyun #define TLV_TYPE_HT_CAP (PROPRIETARY_TLV_BASE_ID + 0x4a) /* 0x014a */ 491*4882a593Smuzhiyun /** TLV type : HT Information */ 492*4882a593Smuzhiyun #define TLV_TYPE_HT_INFO (PROPRIETARY_TLV_BASE_ID + 0x4b) /* 0x014b */ 493*4882a593Smuzhiyun /** TLV type : Secondary Channel Offset */ 494*4882a593Smuzhiyun #define TLV_SECONDARY_CHANNEL_OFFSET \ 495*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x4c) /* 0x014c */ 496*4882a593Smuzhiyun /** TLV type : 20/40 BSS Coexistence */ 497*4882a593Smuzhiyun #define TLV_TYPE_2040BSS_COEXISTENCE \ 498*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x4d) /* 0x014d */ 499*4882a593Smuzhiyun /** TLV type : Overlapping BSS Scan Parameters */ 500*4882a593Smuzhiyun #define TLV_TYPE_OVERLAP_BSS_SCAN_PARAM \ 501*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x4e) /* 0x014e */ 502*4882a593Smuzhiyun /** TLV type : Extended capabilities */ 503*4882a593Smuzhiyun #define TLV_TYPE_EXTCAP (PROPRIETARY_TLV_BASE_ID + 0x4f) /* 0x014f */ 504*4882a593Smuzhiyun /** TLV type : Set of MCS values that STA desires to use within the BSS */ 505*4882a593Smuzhiyun #define TLV_TYPE_HT_OPERATIONAL_MCS_SET \ 506*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x50) /* 0x0150 */ 507*4882a593Smuzhiyun /** TLV ID : Management Frame */ 508*4882a593Smuzhiyun #define TLV_TYPE_MGMT_FRAME (PROPRIETARY_TLV_BASE_ID + 0x68) /* 0x0168 */ 509*4882a593Smuzhiyun /** TLV type : RXBA_SYNC */ 510*4882a593Smuzhiyun #define TLV_TYPE_RXBA_SYNC (PROPRIETARY_TLV_BASE_ID + 0x99) /* 0x0199 */ 511*4882a593Smuzhiyun 512*4882a593Smuzhiyun #ifdef WIFI_DIRECT_SUPPORT 513*4882a593Smuzhiyun /** TLV type : AP PSK */ 514*4882a593Smuzhiyun #define TLV_TYPE_UAP_PSK (PROPRIETARY_TLV_BASE_ID + 0xa8) /* 0x01a8 */ 515*4882a593Smuzhiyun /** TLV type : p2p NOA */ 516*4882a593Smuzhiyun #define TLV_TYPE_WIFI_DIRECT_NOA (PROPRIETARY_TLV_BASE_ID + 0x83) 517*4882a593Smuzhiyun /** TLV type : p2p opp ps */ 518*4882a593Smuzhiyun #define TLV_TYPE_WIFI_DIRECT_OPP_PS (PROPRIETARY_TLV_BASE_ID + 0x84) 519*4882a593Smuzhiyun #endif /* WIFI_DIRECT_SUPPORT */ 520*4882a593Smuzhiyun /** TLV type : GPIO TSF LATCH CONFIG */ 521*4882a593Smuzhiyun #define TLV_TYPE_GPIO_TSF_LATCH_CONFIG (PROPRIETARY_TLV_BASE_ID + 0x154) 522*4882a593Smuzhiyun /** TLV type : GPIO TSF LATCH REPORT*/ 523*4882a593Smuzhiyun #define TLV_TYPE_GPIO_TSF_LATCH_REPORT (PROPRIETARY_TLV_BASE_ID + 0x155) 524*4882a593Smuzhiyun 525*4882a593Smuzhiyun /** TLV : 20/40 coex config */ 526*4882a593Smuzhiyun #define TLV_TYPE_2040_BSS_COEX_CONTROL \ 527*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x98) /* 0x0198 */ 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun /** TLV type : aggr win size */ 530*4882a593Smuzhiyun #define TLV_BTCOEX_WL_AGGR_WINSIZE (PROPRIETARY_TLV_BASE_ID + 0xca) 531*4882a593Smuzhiyun /** TLV type : scan time */ 532*4882a593Smuzhiyun #define TLV_BTCOEX_WL_SCANTIME (PROPRIETARY_TLV_BASE_ID + 0Xcb) 533*4882a593Smuzhiyun /** TLV type : Ewpa_eapol_pkt */ 534*4882a593Smuzhiyun #define TLV_TYPE_EAPOL_PKT (PROPRIETARY_TLV_BASE_ID + 0xcf) 535*4882a593Smuzhiyun 536*4882a593Smuzhiyun #define TLV_TYPE_COALESCE_RULE (PROPRIETARY_TLV_BASE_ID + 0x9a) 537*4882a593Smuzhiyun 538*4882a593Smuzhiyun /** TLV type : EES Configuration */ 539*4882a593Smuzhiyun #define TLV_TYPE_EES_CFG (PROPRIETARY_TLV_BASE_ID + 0xda) 540*4882a593Smuzhiyun /** TLV type : EES Network Configuration */ 541*4882a593Smuzhiyun #define TLV_TYPE_EES_NET_CFG (PROPRIETARY_TLV_BASE_ID + 0xdb) 542*4882a593Smuzhiyun 543*4882a593Smuzhiyun #define TLV_TYPE_LL_STAT_IFACE (PROPRIETARY_TLV_BASE_ID + 300) 544*4882a593Smuzhiyun #define TLV_TYPE_LL_STAT_RADIO (PROPRIETARY_TLV_BASE_ID + 301) 545*4882a593Smuzhiyun 546*4882a593Smuzhiyun /** TLV type: fw cap info */ 547*4882a593Smuzhiyun #define TLV_TYPE_FW_CAP_INFO (PROPRIETARY_TLV_BASE_ID + 318) 548*4882a593Smuzhiyun 549*4882a593Smuzhiyun /** TLV type: secure boot uuid */ 550*4882a593Smuzhiyun #define TLV_TYPE_SECURE_BOOT_UUID (PROPRIETARY_TLV_BASE_ID + 348) 551*4882a593Smuzhiyun 552*4882a593Smuzhiyun /** ADDBA TID mask */ 553*4882a593Smuzhiyun #define ADDBA_TID_MASK (MBIT(2) | MBIT(3) | MBIT(4) | MBIT(5)) 554*4882a593Smuzhiyun /** DELBA TID mask */ 555*4882a593Smuzhiyun #define DELBA_TID_MASK (MBIT(12) | MBIT(13) | MBIT(14) | MBIT(15)) 556*4882a593Smuzhiyun /** ADDBA Starting Sequence Number Mask */ 557*4882a593Smuzhiyun #define SSN_MASK 0xfff0 558*4882a593Smuzhiyun 559*4882a593Smuzhiyun /** Block Ack result status */ 560*4882a593Smuzhiyun /** Block Ack Result : Success */ 561*4882a593Smuzhiyun #define BA_RESULT_SUCCESS 0x0 562*4882a593Smuzhiyun /** Block Ack Result : Execution failure */ 563*4882a593Smuzhiyun #define BA_RESULT_FAILURE 0x1 564*4882a593Smuzhiyun /** Block Ack Result : Timeout */ 565*4882a593Smuzhiyun #define BA_RESULT_TIMEOUT 0x2 566*4882a593Smuzhiyun /** Block Ack Result : Data invalid */ 567*4882a593Smuzhiyun #define BA_RESULT_DATA_INVALID 0x3 568*4882a593Smuzhiyun 569*4882a593Smuzhiyun /** Get the baStatus (NOT_SETUP, COMPLETE, IN_PROGRESS) 570*4882a593Smuzhiyun * in Tx BA stream table */ 571*4882a593Smuzhiyun #define IS_BASTREAM_SETUP(ptr) (ptr->ba_status) 572*4882a593Smuzhiyun 573*4882a593Smuzhiyun /** An AMPDU/AMSDU could be disallowed for certain TID. 0xff means 574*4882a593Smuzhiyun * no aggregation is enabled for the assigned TID */ 575*4882a593Smuzhiyun #define BA_STREAM_NOT_ALLOWED 0xff 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun #ifdef STA_SUPPORT 578*4882a593Smuzhiyun #endif 579*4882a593Smuzhiyun 580*4882a593Smuzhiyun /** Test if 11n is enabled by checking the HTCap IE */ 581*4882a593Smuzhiyun #define IS_11N_ENABLED(priv) \ 582*4882a593Smuzhiyun ((priv->config_bands & BAND_GN || priv->config_bands & BAND_AN) && \ 583*4882a593Smuzhiyun priv->curr_bss_params.bss_descriptor.pht_cap && \ 584*4882a593Smuzhiyun !priv->curr_bss_params.bss_descriptor.disable_11n) 585*4882a593Smuzhiyun /** Find out if we are the initiator or not */ 586*4882a593Smuzhiyun #define INITIATOR_BIT(DelBAParamSet) \ 587*4882a593Smuzhiyun (((DelBAParamSet)&MBIT(DELBA_INITIATOR_POS)) >> DELBA_INITIATOR_POS) 588*4882a593Smuzhiyun 589*4882a593Smuzhiyun /** 4K buf size */ 590*4882a593Smuzhiyun #define MLAN_TX_DATA_BUF_SIZE_4K 4096 591*4882a593Smuzhiyun /** 8K buf size */ 592*4882a593Smuzhiyun #define MLAN_TX_DATA_BUF_SIZE_8K 8192 593*4882a593Smuzhiyun /** 12K buf size */ 594*4882a593Smuzhiyun #define MLAN_TX_DATA_BUF_SIZE_12K 12288 595*4882a593Smuzhiyun /** Max Rx AMPDU Size */ 596*4882a593Smuzhiyun #define MAX_RX_AMPDU_SIZE_64K 0x03 597*4882a593Smuzhiyun /** Non green field station */ 598*4882a593Smuzhiyun #define NON_GREENFIELD_STAS 0x04 599*4882a593Smuzhiyun 600*4882a593Smuzhiyun /** Max AMSDU size support */ 601*4882a593Smuzhiyun #define HWSPEC_MAX_AMSDU_SUPP MBIT(31) 602*4882a593Smuzhiyun /** Greenfield support */ 603*4882a593Smuzhiyun #define HWSPEC_GREENFIELD_SUPP MBIT(29) 604*4882a593Smuzhiyun /** SM Power Save enable */ 605*4882a593Smuzhiyun #define CAPINFO_SMPS_ENABLE MBIT(27) 606*4882a593Smuzhiyun /** RX STBC support */ 607*4882a593Smuzhiyun #define HWSPEC_RXSTBC_SUPP MBIT(26) 608*4882a593Smuzhiyun /** ShortGI @ 40Mhz support */ 609*4882a593Smuzhiyun #define HWSPEC_SHORTGI40_SUPP MBIT(24) 610*4882a593Smuzhiyun /** ShortGI @ 20Mhz support */ 611*4882a593Smuzhiyun #define HWSPEC_SHORTGI20_SUPP MBIT(23) 612*4882a593Smuzhiyun /** RX LDPC support */ 613*4882a593Smuzhiyun #define HWSPEC_LDPC_SUPP MBIT(22) 614*4882a593Smuzhiyun /** Channel width 40Mhz support */ 615*4882a593Smuzhiyun #define HWSPEC_CHANBW40_SUPP MBIT(17) 616*4882a593Smuzhiyun /** SM Power Save mode */ 617*4882a593Smuzhiyun #define CAPINFO_SMPS_MODE MBIT(9) 618*4882a593Smuzhiyun /** 40Mhz intolarent enable */ 619*4882a593Smuzhiyun #define CAPINFO_40MHZ_INTOLARENT MBIT(8) 620*4882a593Smuzhiyun 621*4882a593Smuzhiyun /** Default 11n capability mask for 2.4GHz */ 622*4882a593Smuzhiyun #define DEFAULT_11N_CAP_MASK_BG \ 623*4882a593Smuzhiyun (HWSPEC_SHORTGI20_SUPP | HWSPEC_RXSTBC_SUPP | HWSPEC_LDPC_SUPP) 624*4882a593Smuzhiyun /** Default 11n capability mask for 5GHz */ 625*4882a593Smuzhiyun #define DEFAULT_11N_CAP_MASK_A \ 626*4882a593Smuzhiyun (HWSPEC_CHANBW40_SUPP | HWSPEC_SHORTGI20_SUPP | \ 627*4882a593Smuzhiyun HWSPEC_MAX_AMSDU_SUPP | HWSPEC_SHORTGI40_SUPP | HWSPEC_RXSTBC_SUPP | \ 628*4882a593Smuzhiyun HWSPEC_LDPC_SUPP) 629*4882a593Smuzhiyun 630*4882a593Smuzhiyun /** Default 11n TX BF capability 2X2 chip **/ 631*4882a593Smuzhiyun #define DEFAULT_11N_TX_BF_CAP_2X2 0x19E74618 632*4882a593Smuzhiyun /** Default 11n TX BF capability 1X1 chip **/ 633*4882a593Smuzhiyun #define DEFAULT_11N_TX_BF_CAP_1X1 0x19E74608 634*4882a593Smuzhiyun 635*4882a593Smuzhiyun /** Bits to ignore in hw_dev_cap as these bits are set in get_hw_spec */ 636*4882a593Smuzhiyun #define IGN_HW_DEV_CAP \ 637*4882a593Smuzhiyun (CAPINFO_40MHZ_INTOLARENT | (CAPINFO_SMPS_ENABLE | CAPINFO_SMPS_MODE)) 638*4882a593Smuzhiyun 639*4882a593Smuzhiyun /** HW_SPEC FwCapInfo : If FW support RSN Replay Detection */ 640*4882a593Smuzhiyun #define ISSUPP_RSN_REPLAY_DETECTION(FwCapInfo) (FwCapInfo & MBIT(28)) 641*4882a593Smuzhiyun 642*4882a593Smuzhiyun /** HW_SPEC FwCapInfo */ 643*4882a593Smuzhiyun #define ISSUPP_11NENABLED(FwCapInfo) (FwCapInfo & MBIT(11)) 644*4882a593Smuzhiyun 645*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : MAX AMSDU supported */ 646*4882a593Smuzhiyun #define ISSUPP_MAXAMSDU(Dot11nDevCap) (Dot11nDevCap & MBIT(31)) 647*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Beamforming support */ 648*4882a593Smuzhiyun #define ISSUPP_BEAMFORMING(Dot11nDevCap) (Dot11nDevCap & MBIT(30)) 649*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Green field support */ 650*4882a593Smuzhiyun #define ISSUPP_GREENFIELD(Dot11nDevCap) (Dot11nDevCap & MBIT(29)) 651*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : AMPDU support */ 652*4882a593Smuzhiyun #define ISSUPP_AMPDU(Dot11nDevCap) (Dot11nDevCap & MBIT(28)) 653*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : MIMO PS support */ 654*4882a593Smuzhiyun #define ISSUPP_MIMOPS(Dot11nDevCap) (Dot11nDevCap & MBIT(27)) 655*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Rx STBC support */ 656*4882a593Smuzhiyun #define ISSUPP_RXSTBC(Dot11nDevCap) (Dot11nDevCap & MBIT(26)) 657*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Tx STBC support */ 658*4882a593Smuzhiyun #define ISSUPP_TXSTBC(Dot11nDevCap) (Dot11nDevCap & MBIT(25)) 659*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Short GI @ 40Mhz support */ 660*4882a593Smuzhiyun #define ISSUPP_SHORTGI40(Dot11nDevCap) (Dot11nDevCap & MBIT(24)) 661*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Reset Short GI @ 40Mhz support */ 662*4882a593Smuzhiyun #define RESETSUPP_SHORTGI40(Dot11nDevCap) (Dot11nDevCap &= ~MBIT(24)) 663*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Short GI @ 20Mhz support */ 664*4882a593Smuzhiyun #define ISSUPP_SHORTGI20(Dot11nDevCap) (Dot11nDevCap & MBIT(23)) 665*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Rx LDPC support */ 666*4882a593Smuzhiyun #define ISSUPP_RXLDPC(Dot11nDevCap) (Dot11nDevCap & MBIT(22)) 667*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Number of TX BA streams supported */ 668*4882a593Smuzhiyun #define ISSUPP_GETTXBASTREAM(Dot11nDevCap) ((Dot11nDevCap >> 18) & 0xF) 669*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Channel BW support @ 40Mhz support */ 670*4882a593Smuzhiyun #define ISSUPP_CHANWIDTH40(Dot11nDevCap) (Dot11nDevCap & MBIT(17)) 671*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Channel BW support @ 20Mhz support */ 672*4882a593Smuzhiyun #define ISSUPP_CHANWIDTH20(Dot11nDevCap) (Dot11nDevCap & MBIT(16)) 673*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Channel BW support @ 10Mhz support */ 674*4882a593Smuzhiyun #define ISSUPP_CHANWIDTH10(Dot11nDevCap) (Dot11nDevCap & MBIT(15)) 675*4882a593Smuzhiyun /** Dot11nUsrCap : SMPS static/dynamic mode if BIT27 MIMO PS support eanbled */ 676*4882a593Smuzhiyun #define ISSUPP_SMPS_DYNAMIC_MODE(Dot11nDevCap) (Dot11nDevCap & MBIT(9)) 677*4882a593Smuzhiyun /** Dot11nUsrCap : 40Mhz intolarance enabled */ 678*4882a593Smuzhiyun #define ISENABLED_40MHZ_INTOLARENT(Dot11nDevCap) (Dot11nDevCap & MBIT(8)) 679*4882a593Smuzhiyun /** Dot11nUsrCap : Reset 40Mhz intolarance enabled */ 680*4882a593Smuzhiyun #define RESET_40MHZ_INTOLARENT(Dot11nDevCap) (Dot11nDevCap &= ~MBIT(8)) 681*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Rx AntennaD support */ 682*4882a593Smuzhiyun #define ISSUPP_RXANTENNAD(Dot11nDevCap) (Dot11nDevCap & MBIT(7)) 683*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Rx AntennaC support */ 684*4882a593Smuzhiyun #define ISSUPP_RXANTENNAC(Dot11nDevCap) (Dot11nDevCap & MBIT(6)) 685*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Rx AntennaB support */ 686*4882a593Smuzhiyun #define ISSUPP_RXANTENNAB(Dot11nDevCap) (Dot11nDevCap & MBIT(5)) 687*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Rx AntennaA support */ 688*4882a593Smuzhiyun #define ISSUPP_RXANTENNAA(Dot11nDevCap) (Dot11nDevCap & MBIT(4)) 689*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Tx AntennaD support */ 690*4882a593Smuzhiyun #define ISSUPP_TXANTENNAD(Dot11nDevCap) (Dot11nDevCap & MBIT(3)) 691*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Tx AntennaC support */ 692*4882a593Smuzhiyun #define ISSUPP_TXANTENNAC(Dot11nDevCap) (Dot11nDevCap & MBIT(2)) 693*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Tx AntennaB support */ 694*4882a593Smuzhiyun #define ISSUPP_TXANTENNAB(Dot11nDevCap) (Dot11nDevCap & MBIT(1)) 695*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Tx AntennaA support */ 696*4882a593Smuzhiyun #define ISSUPP_TXANTENNAA(Dot11nDevCap) (Dot11nDevCap & MBIT(0)) 697*4882a593Smuzhiyun 698*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Set support of channel bw @ 40Mhz */ 699*4882a593Smuzhiyun #define SETSUPP_CHANWIDTH40(Dot11nDevCap) (Dot11nDevCap |= MBIT(17)) 700*4882a593Smuzhiyun /** HW_SPEC Dot11nDevCap : Reset support of channel bw @ 40Mhz */ 701*4882a593Smuzhiyun #define RESETSUPP_CHANWIDTH40(Dot11nDevCap) (Dot11nDevCap &= ~MBIT(17)) 702*4882a593Smuzhiyun 703*4882a593Smuzhiyun /** DevMCSSupported : Tx MCS supported */ 704*4882a593Smuzhiyun #define GET_TXMCSSUPP(DevMCSSupported) (DevMCSSupported >> 4) 705*4882a593Smuzhiyun /** DevMCSSupported : Rx MCS supported */ 706*4882a593Smuzhiyun #define GET_RXMCSSUPP(DevMCSSupported) (DevMCSSupported & 0x0f) 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun /** GET HTCapInfo : Supported Channel BW */ 709*4882a593Smuzhiyun #define GETHT_SUPPCHANWIDTH(HTCapInfo) (HTCapInfo & MBIT(1)) 710*4882a593Smuzhiyun /** GET HTCapInfo : Support for Greenfield */ 711*4882a593Smuzhiyun #define GETHT_GREENFIELD(HTCapInfo) (HTCapInfo & MBIT(4)) 712*4882a593Smuzhiyun /** GET HTCapInfo : Support for Short GI @ 20Mhz */ 713*4882a593Smuzhiyun #define GETHT_SHORTGI20(HTCapInfo) (HTCapInfo & MBIT(5)) 714*4882a593Smuzhiyun /** GET HTCapInfo : Support for Short GI @ 40Mhz */ 715*4882a593Smuzhiyun #define GETHT_SHORTGI40(HTCapInfo) (HTCapInfo & MBIT(6)) 716*4882a593Smuzhiyun /** GET HTCapInfo : Support for Tx STBC */ 717*4882a593Smuzhiyun #define GETHT_TXSTBC(HTCapInfo) (HTCapInfo & MBIT(7)) 718*4882a593Smuzhiyun 719*4882a593Smuzhiyun /** GET HTCapInfo : Support for Rx STBC */ 720*4882a593Smuzhiyun #define GETHT_RXSTBC(HTCapInfo) ((HTCapInfo >> 8) & 0x03) 721*4882a593Smuzhiyun /** GET HTCapInfo : Support for Delayed ACK */ 722*4882a593Smuzhiyun #define GETHT_DELAYEDBACK(HTCapInfo) (HTCapInfo & MBIT(10)) 723*4882a593Smuzhiyun /** GET HTCapInfo : Support for Max AMSDU */ 724*4882a593Smuzhiyun #define GETHT_MAXAMSDU(HTCapInfo) (HTCapInfo & MBIT(11)) 725*4882a593Smuzhiyun 726*4882a593Smuzhiyun /** GET HTCapInfo : Support 40Mhz Intolarence */ 727*4882a593Smuzhiyun #define GETHT_40MHZ_INTOLARANT(HTCapInfo) (HTCapInfo & MBIT(14)) 728*4882a593Smuzhiyun 729*4882a593Smuzhiyun /** SET HTCapInfo : Set support for LDPC coding capability */ 730*4882a593Smuzhiyun #define SETHT_LDPCCODINGCAP(HTCapInfo) (HTCapInfo |= MBIT(0)) 731*4882a593Smuzhiyun /** SET HTCapInfo : Set support for Channel BW */ 732*4882a593Smuzhiyun #define SETHT_SUPPCHANWIDTH(HTCapInfo) (HTCapInfo |= MBIT(1)) 733*4882a593Smuzhiyun /** SET HTCapInfo : Set support for Greenfield */ 734*4882a593Smuzhiyun #define SETHT_GREENFIELD(HTCapInfo) (HTCapInfo |= MBIT(4)) 735*4882a593Smuzhiyun /** SET HTCapInfo : Set support for Short GI @ 20Mhz */ 736*4882a593Smuzhiyun #define SETHT_SHORTGI20(HTCapInfo) (HTCapInfo |= MBIT(5)) 737*4882a593Smuzhiyun /** SET HTCapInfo : Set support for Short GI @ 40Mhz */ 738*4882a593Smuzhiyun #define SETHT_SHORTGI40(HTCapInfo) (HTCapInfo |= MBIT(6)) 739*4882a593Smuzhiyun /** SET HTCapInfo : Set support for Tx STBC */ 740*4882a593Smuzhiyun #define SETHT_TXSTBC(HTCapInfo) (HTCapInfo |= MBIT(7)) 741*4882a593Smuzhiyun /** SET HTCapInfo : Set support for Rx STBC */ 742*4882a593Smuzhiyun #define SETHT_RXSTBC(HTCapInfo, value) (HTCapInfo |= (value << 8)) 743*4882a593Smuzhiyun /** SET HTCapInfo : Set support for delayed block ack */ 744*4882a593Smuzhiyun #define SETHT_DELAYEDBACK(HTCapInfo) (HTCapInfo |= MBIT(10)) 745*4882a593Smuzhiyun /** SET HTCapInfo : Set support for Max size AMSDU */ 746*4882a593Smuzhiyun #define SETHT_MAXAMSDU(HTCapInfo) (HTCapInfo |= MBIT(11)) 747*4882a593Smuzhiyun /** SET HTCapInfo : Set support for DSSS/CCK Rates @ 40Mhz */ 748*4882a593Smuzhiyun #define SETHT_DSSSCCK40(HTCapInfo) (HTCapInfo |= MBIT(12)) 749*4882a593Smuzhiyun /** SET HTCapInfo : Enable 40Mhz Intolarence */ 750*4882a593Smuzhiyun #define SETHT_40MHZ_INTOLARANT(HTCapInfo) (HTCapInfo |= MBIT(14)) 751*4882a593Smuzhiyun 752*4882a593Smuzhiyun /** SET HTCapInfo : Set SM power save disabled */ 753*4882a593Smuzhiyun #define SETHT_SMPS_DISABLE(HTCapInfo) ((HTCapInfo) |= (MBIT(2) | MBIT(3))) 754*4882a593Smuzhiyun /** SET HTCapInfo : Set Dynamic SM power save */ 755*4882a593Smuzhiyun #define SETHT_SMPS_DYNAMIC(HTCapInfo) ((HTCapInfo) |= MBIT(2)) 756*4882a593Smuzhiyun 757*4882a593Smuzhiyun /** RESET HTCapInfo : Set support for LDPC coding capability */ 758*4882a593Smuzhiyun #define RESETHT_LDPCCODINGCAP(HTCapInfo) (HTCapInfo &= ~MBIT(0)) 759*4882a593Smuzhiyun /** RESET HTCapInfo : Set support for Channel BW */ 760*4882a593Smuzhiyun #define RESETHT_SUPPCHANWIDTH(HTCapInfo) (HTCapInfo &= ~MBIT(1)) 761*4882a593Smuzhiyun /** RESET HTCapInfo : Set support for Greenfield */ 762*4882a593Smuzhiyun #define RESETHT_GREENFIELD(HTCapInfo) (HTCapInfo &= ~MBIT(4)) 763*4882a593Smuzhiyun /** RESET HTCapInfo : Set support for Short GI @ 20Mhz */ 764*4882a593Smuzhiyun #define RESETHT_SHORTGI20(HTCapInfo) (HTCapInfo &= ~MBIT(5)) 765*4882a593Smuzhiyun /** RESET HTCapInfo : Set support for Short GI @ 40Mhz */ 766*4882a593Smuzhiyun #define RESETHT_SHORTGI40(HTCapInfo) (HTCapInfo &= ~MBIT(6)) 767*4882a593Smuzhiyun /** RESET HTCapInfo : Set support for Tx STBC */ 768*4882a593Smuzhiyun #define RESETHT_TXSTBC(HTCapInfo) (HTCapInfo &= ~MBIT(7)) 769*4882a593Smuzhiyun /** RESET HTCapInfo : Set support for Rx STBC */ 770*4882a593Smuzhiyun #define RESETHT_RXSTBC(HTCapInfo) (HTCapInfo &= ~(0x03 << 8)) 771*4882a593Smuzhiyun /** RESET HTCapInfo : Set support for delayed block ack */ 772*4882a593Smuzhiyun #define RESETHT_DELAYEDBACK(HTCapInfo) (HTCapInfo &= ~MBIT(10)) 773*4882a593Smuzhiyun /** RESET HTCapInfo : Set support for Max size AMSDU */ 774*4882a593Smuzhiyun #define RESETHT_MAXAMSDU(HTCapInfo) (HTCapInfo &= ~MBIT(11)) 775*4882a593Smuzhiyun /** RESET HTCapInfo : Disable 40Mhz Intolarence */ 776*4882a593Smuzhiyun #define RESETHT_40MHZ_INTOLARANT(HTCapInfo) (HTCapInfo &= ~MBIT(14)) 777*4882a593Smuzhiyun /** RESET HTCapInfo: Enable SM power save */ 778*4882a593Smuzhiyun #define RESETHT_SM_POWERSAVE(HTCapInfo) ((HTCapInfo) &= ~(MBIT(2) | MBIT(3))) 779*4882a593Smuzhiyun /** RESET HTExtCap : Clear RD Responder bit */ 780*4882a593Smuzhiyun #define RESETHT_EXTCAP_RDG(HTExtCap) (HTExtCap &= ~MBIT(11)) 781*4882a593Smuzhiyun /** SET MCS32 */ 782*4882a593Smuzhiyun #define SETHT_MCS32(x) (x[4] |= 1) 783*4882a593Smuzhiyun /** Set mcs set defined bit */ 784*4882a593Smuzhiyun #define SETHT_MCS_SET_DEFINED(x) (x[12] |= 1) 785*4882a593Smuzhiyun /** Set the highest Rx data rate */ 786*4882a593Smuzhiyun #define SETHT_RX_HIGHEST_DT_SUPP(x, y) ((*(t_u16 *)(x + 10)) = y) 787*4882a593Smuzhiyun /** AMPDU factor size */ 788*4882a593Smuzhiyun #define AMPDU_FACTOR_64K 0x03 789*4882a593Smuzhiyun /** Set AMPDU size in A-MPDU paramter field */ 790*4882a593Smuzhiyun #define SETAMPDU_SIZE(x, y) \ 791*4882a593Smuzhiyun do { \ 792*4882a593Smuzhiyun x = x & ~0x03; \ 793*4882a593Smuzhiyun x |= y & 0x03; \ 794*4882a593Smuzhiyun } while (0) /** Set AMPDU spacing in A-MPDU paramter field */ 795*4882a593Smuzhiyun #define SETAMPDU_SPACING(x, y) \ 796*4882a593Smuzhiyun do { \ 797*4882a593Smuzhiyun x = x & ~0x1c; \ 798*4882a593Smuzhiyun x |= (y & 0x07) << 2; \ 799*4882a593Smuzhiyun } while (0) 800*4882a593Smuzhiyun 801*4882a593Smuzhiyun /** RadioType : Support for Band A */ 802*4882a593Smuzhiyun #define ISSUPP_BANDA(FwCapInfo) (FwCapInfo & MBIT(10)) 803*4882a593Smuzhiyun /** RadioType : Support for 40Mhz channel BW */ 804*4882a593Smuzhiyun #define ISALLOWED_CHANWIDTH40(Field2) (Field2 & MBIT(2)) 805*4882a593Smuzhiyun /** RadioType : Set support 40Mhz channel */ 806*4882a593Smuzhiyun #define SET_CHANWIDTH40(Field2) (Field2 |= MBIT(2)) 807*4882a593Smuzhiyun /** RadioType : Reset support 40Mhz channel */ 808*4882a593Smuzhiyun #define RESET_CHANWIDTH40(Field2) (Field2 &= ~(MBIT(0) | MBIT(1) | MBIT(2))) 809*4882a593Smuzhiyun /** RadioType : Get secondary channel */ 810*4882a593Smuzhiyun #define GET_SECONDARYCHAN(Field2) (Field2 & (MBIT(0) | MBIT(1))) 811*4882a593Smuzhiyun 812*4882a593Smuzhiyun /** ExtCap : Support for FILS */ 813*4882a593Smuzhiyun #define ISSUPP_EXTCAP_FILS(ext_cap) (ext_cap.FILS) 814*4882a593Smuzhiyun /** ExtCap : Set support FILS */ 815*4882a593Smuzhiyun #define SET_EXTCAP_FILS(ext_cap) (ext_cap.FILS = 1) 816*4882a593Smuzhiyun /** ExtCap : Reset support FILS */ 817*4882a593Smuzhiyun #define RESET_EXTCAP_FILS(ext_cap) (ext_cap.FILS = 0) 818*4882a593Smuzhiyun 819*4882a593Smuzhiyun /** ExtCap : Support for TDLS */ 820*4882a593Smuzhiyun #define ISSUPP_EXTCAP_TDLS(ext_cap) (ext_cap.TDLSSupport) 821*4882a593Smuzhiyun /** ExtCap : Set support TDLS */ 822*4882a593Smuzhiyun #define SET_EXTCAP_TDLS(ext_cap) (ext_cap.TDLSSupport = 1) 823*4882a593Smuzhiyun /** ExtCap : Reset support TDLS */ 824*4882a593Smuzhiyun #define RESET_EXTCAP_TDLS(ext_cap) (ext_cap.TDLSSupport = 0) 825*4882a593Smuzhiyun /** ExtCap : Support for TDLS UAPSD */ 826*4882a593Smuzhiyun #define ISSUPP_EXTCAP_TDLS_UAPSD(ext_cap) (ext_cap.TDLSPeerUAPSDSupport) 827*4882a593Smuzhiyun /** ExtCap : Set support TDLS UAPSD */ 828*4882a593Smuzhiyun #define SET_EXTCAP_TDLS_UAPSD(ext_cap) (ext_cap.TDLSPeerUAPSDSupport = 1) 829*4882a593Smuzhiyun /** ExtCap : Reset support TDLS UAPSD */ 830*4882a593Smuzhiyun #define RESET_EXTCAP_TDLS_UAPSD(ext_cap) (ext_cap.TDLSPeerUAPSDSupport = 0) 831*4882a593Smuzhiyun /** ExtCap : Support for TDLS CHANNEL SWITCH */ 832*4882a593Smuzhiyun #define ISSUPP_EXTCAP_TDLS_CHAN_SWITCH(ext_cap) (ext_cap.TDLSChannelSwitching) 833*4882a593Smuzhiyun /** ExtCap : Set support TDLS CHANNEL SWITCH */ 834*4882a593Smuzhiyun #define SET_EXTCAP_TDLS_CHAN_SWITCH(ext_cap) (ext_cap.TDLSChannelSwitching = 1) 835*4882a593Smuzhiyun /** ExtCap : Reset support TDLS CHANNEL SWITCH */ 836*4882a593Smuzhiyun #define RESET_EXTCAP_TDLS_CHAN_SWITCH(ext_cap) \ 837*4882a593Smuzhiyun (ext_cap.TDLSChannelSwitching = 0) 838*4882a593Smuzhiyun /** ExtCap : Set support Multi BSSID */ 839*4882a593Smuzhiyun #define SET_EXTCAP_MULTI_BSSID(ext_cap) (ext_cap.MultipleBSSID = 1) 840*4882a593Smuzhiyun /** ExtCap : Support for Interworking */ 841*4882a593Smuzhiyun #define ISSUPP_EXTCAP_INTERWORKING(ext_cap) (ext_cap.Interworking) 842*4882a593Smuzhiyun /** ExtCap : Set support Interworking */ 843*4882a593Smuzhiyun #define SET_EXTCAP_INTERWORKING(ext_cap) (ext_cap.Interworking = 1) 844*4882a593Smuzhiyun /** ExtCap : Reset support Interworking */ 845*4882a593Smuzhiyun #define RESET_EXTCAP_INTERWORKING(ext_cap) (ext_cap.Interworking = 0) 846*4882a593Smuzhiyun /** ExtCap : Support for Operation Mode Notification */ 847*4882a593Smuzhiyun #define ISSUPP_EXTCAP_OPERMODENTF(ext_cap) (ext_cap.OperModeNtf) 848*4882a593Smuzhiyun /** ExtCap : Set support Operation Mode Notification */ 849*4882a593Smuzhiyun #define SET_EXTCAP_OPERMODENTF(ext_cap) (ext_cap.OperModeNtf = 1) 850*4882a593Smuzhiyun /** ExtCap : Reset support Operation Mode Notification */ 851*4882a593Smuzhiyun #define RESET_EXTCAP_OPERMODENTF(ext_cap) (ext_cap.OperModeNtf = 0) 852*4882a593Smuzhiyun /** ExtCap : Support for QosMap */ 853*4882a593Smuzhiyun #define ISSUPP_EXTCAP_QOS_MAP(ext_cap) (ext_cap.Qos_Map) 854*4882a593Smuzhiyun /** ExtCap : Set Support QosMap */ 855*4882a593Smuzhiyun #define SET_EXTCAP_QOS_MAP(ext_cap) (ext_cap.Qos_Map = 1) 856*4882a593Smuzhiyun /** ExtCap : Reset support QosMap */ 857*4882a593Smuzhiyun #define RESET_EXTCAP_QOS_MAP(ext_cap) (ext_cap.Qos_Map = 0) 858*4882a593Smuzhiyun /** ExtCap : Support for BSS_Transition */ 859*4882a593Smuzhiyun #define ISSUPP_EXTCAP_BSS_TRANSITION(ext_cap) (ext_cap.BSS_Transition) 860*4882a593Smuzhiyun /** ExtCap : Set Support BSS_Transition */ 861*4882a593Smuzhiyun #define SET_EXTCAP_BSS_TRANSITION(ext_cap) (ext_cap.BSS_Transition = 1) 862*4882a593Smuzhiyun /** ExtCap : Reset support BSS_Transition */ 863*4882a593Smuzhiyun #define RESET_EXTCAP_BSS_TRANSITION(ext_cap) (ext_cap.BSS_Transition = 0) 864*4882a593Smuzhiyun 865*4882a593Smuzhiyun /** ExtCap : Support for TDLS wider bandwidth */ 866*4882a593Smuzhiyun #define ISSUPP_EXTCAP_TDLS_WIDER_BANDWIDTH(ext_cap) (ext_cap.TDLSWildBandwidth) 867*4882a593Smuzhiyun /** ExtCap : Set support TDLS wider bandwidth */ 868*4882a593Smuzhiyun #define SET_EXTCAP_TDLS_WIDER_BANDWIDTH(ext_cap) (ext_cap.TDLSWildBandwidth = 1) 869*4882a593Smuzhiyun /** ExtCap : Reset support TDLS wider bandwidth */ 870*4882a593Smuzhiyun #define RESET_EXTCAP_TDLS_WIDER_BANDWIDTH(ext_cap) \ 871*4882a593Smuzhiyun (ext_cap.TDLSWildBandwidth = 0) 872*4882a593Smuzhiyun 873*4882a593Smuzhiyun /** ExtCap : Support for extend channel switch */ 874*4882a593Smuzhiyun #define ISSUPP_EXTCAP_EXT_CHANNEL_SWITCH(ext_cap) (ext_cap.ExtChanSwitching) 875*4882a593Smuzhiyun /** ExtCap : Set support Ext Channel Switch */ 876*4882a593Smuzhiyun #define SET_EXTCAP_EXT_CHANNEL_SWITCH(ext_cap) (ext_cap.ExtChanSwitching = 1) 877*4882a593Smuzhiyun /** ExtCap: Set Timing Measurement */ 878*4882a593Smuzhiyun #define SET_EXTCAP_EXT_TIMING_MEASUREMENT(ext_cap) \ 879*4882a593Smuzhiyun (ext_cap.TimingMeasurement = 1) 880*4882a593Smuzhiyun /** ExtCap : Reset support Ext Channel Switch */ 881*4882a593Smuzhiyun #define RESET_EXTCAP_EXT_CHANNEL_SWITCH(ext_cap) (ext_cap.ExtChanSwitching = 0) 882*4882a593Smuzhiyun 883*4882a593Smuzhiyun /** ExtCap : Support for TWT RESP */ 884*4882a593Smuzhiyun #define ISSUPP_EXTCAP_EXT_TWT_RESP(ext_cap) (ext_cap.TWTResp) 885*4882a593Smuzhiyun /** ExtCap : Set support Ext TWT_REQ */ 886*4882a593Smuzhiyun #define SET_EXTCAP_TWT_REQ(ext_cap) (ext_cap.TWTReq = 1) 887*4882a593Smuzhiyun /** ExtCap : ReSet support Ext TWT REQ */ 888*4882a593Smuzhiyun #define RESET_EXTCAP_TWT_REQ(ext_cap) (ext_cap.TWTReq = 0) 889*4882a593Smuzhiyun 890*4882a593Smuzhiyun /** LLC/SNAP header len */ 891*4882a593Smuzhiyun #define LLC_SNAP_LEN 8 892*4882a593Smuzhiyun 893*4882a593Smuzhiyun /** bandwidth following HTCAP */ 894*4882a593Smuzhiyun #define BW_FOLLOW_HTCAP 0 895*4882a593Smuzhiyun /** bandwidth following VHTCAP */ 896*4882a593Smuzhiyun #define BW_FOLLOW_VHTCAP 1 897*4882a593Smuzhiyun 898*4882a593Smuzhiyun /** HW_SPEC FwCapInfo */ 899*4882a593Smuzhiyun #define HWSPEC_11ACSGI80_SUPP MBIT(5) 900*4882a593Smuzhiyun #define HWSPEC_11ACRXSTBC_SUPP MBIT(8) 901*4882a593Smuzhiyun 902*4882a593Smuzhiyun #define ISSUPP_11ACENABLED(FwCapInfo) (FwCapInfo & (MBIT(12) | MBIT(13))) 903*4882a593Smuzhiyun 904*4882a593Smuzhiyun #define ISSUPP_11AC2GENABLED(FwCapInfo) (FwCapInfo & MBIT(12)) 905*4882a593Smuzhiyun #define ISSUPP_11AC5GENABLED(FwCapInfo) (FwCapInfo & MBIT(13)) 906*4882a593Smuzhiyun 907*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : HTC-VHT supported */ 908*4882a593Smuzhiyun #define ISSUPP_11ACVHTHTCVHT(Dot11acDevCap) (Dot11acDevCap & MBIT(22)) 909*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : VHT TXOP PS support */ 910*4882a593Smuzhiyun #define ISSUPP_11ACVHTTXOPPS(Dot11acDevCap) (Dot11acDevCap & MBIT(21)) 911*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : MU RX beamformee support */ 912*4882a593Smuzhiyun #define ISSUPP_11ACMURXBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap & MBIT(20)) 913*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : MU TX beamformee support */ 914*4882a593Smuzhiyun #define ISSUPP_11ACMUTXBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap & MBIT(19)) 915*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : SU Beamformee support */ 916*4882a593Smuzhiyun #define ISSUPP_11ACSUBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap & MBIT(12)) 917*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : SU Beamformer support */ 918*4882a593Smuzhiyun #define ISSUPP_11ACSUBEAMFORMER(Dot11acDevCap) (Dot11acDevCap & MBIT(11)) 919*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : Rx STBC support */ 920*4882a593Smuzhiyun #define ISSUPP_11ACRXSTBC(Dot11acDevCap) (Dot11acDevCap & MBIT(8)) 921*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : Tx STBC support */ 922*4882a593Smuzhiyun #define ISSUPP_11ACTXSTBC(Dot11acDevCap) (Dot11acDevCap & MBIT(7)) 923*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : Short GI support for 160MHz BW */ 924*4882a593Smuzhiyun #define ISSUPP_11ACSGI160(Dot11acDevCap) (Dot11acDevCap & MBIT(6)) 925*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : Short GI support for 80MHz BW */ 926*4882a593Smuzhiyun #define ISSUPP_11ACSGI80(Dot11acDevCap) (Dot11acDevCap & MBIT(5)) 927*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : LDPC coding support */ 928*4882a593Smuzhiyun #define ISSUPP_11ACLDPC(Dot11acDevCap) (Dot11acDevCap & MBIT(4)) 929*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : Channel BW 20/40/80/160/80+80 MHz support */ 930*4882a593Smuzhiyun #define ISSUPP_11ACBW8080(Dot11acDevCap) (Dot11acDevCap & MBIT(3)) 931*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : Channel BW 20/40/80/160 MHz support */ 932*4882a593Smuzhiyun #define ISSUPP_11ACBW160(Dot11acDevCap) (Dot11acDevCap & MBIT(2)) 933*4882a593Smuzhiyun 934*4882a593Smuzhiyun /** Set VHT Cap Info: Max MPDU length */ 935*4882a593Smuzhiyun #define SET_VHTCAP_MAXMPDULEN(VHTCapInfo, value) (VHTCapInfo |= (value & 0x03)) 936*4882a593Smuzhiyun /** Reset VHT Cap Info: Max MPDU length */ 937*4882a593Smuzhiyun #define RESET_VHTCAP_MAXMPDULEN(VHTCapInfo) (VHTCapInfo &= ~(MBIT(0) | MBIT(1))) 938*4882a593Smuzhiyun 939*4882a593Smuzhiyun /** SET VHT CapInfo: Supported Channel Width SET (2 bits)*/ 940*4882a593Smuzhiyun #define SET_VHTCAP_CHWDSET(VHTCapInfo, value) \ 941*4882a593Smuzhiyun (VHTCapInfo |= ((value & 0x3) << 2)) 942*4882a593Smuzhiyun /** SET VHT CapInfo: Rx STBC (3 bits) */ 943*4882a593Smuzhiyun #define SET_VHTCAP_RXSTBC(VHTCapInfo, value) \ 944*4882a593Smuzhiyun (VHTCapInfo |= ((value & 0x7) << 8)) 945*4882a593Smuzhiyun /** SET VHT CapInfo: Commpressed Steering Num of BFer Ant Supported (3 bits) */ 946*4882a593Smuzhiyun #define SET_VHTCAP_SNBFERANT(VHTCapInfo, value) \ 947*4882a593Smuzhiyun (VHTCapInfo |= ((value & 0x7) << 13)) 948*4882a593Smuzhiyun /** SET VHT CapInfo: Num of Sounding Dimensions (3 bits) */ 949*4882a593Smuzhiyun #define SET_VHTCAP_NUMSNDDM(VHTCapInfo, value) \ 950*4882a593Smuzhiyun (VHTCapInfo |= ((value & 0x7) << 16)) 951*4882a593Smuzhiyun /** SET VHT CapInfo: Max AMPDU Length Exponent (3 bits) */ 952*4882a593Smuzhiyun #define SET_VHTCAP_MAXAMPDULENEXP(VHTCapInfo, value) \ 953*4882a593Smuzhiyun (VHTCapInfo |= ((value & 0x7) << 23)) 954*4882a593Smuzhiyun /** SET VHT CapInfo: VHT Link Adaptation Capable (2 bits) */ 955*4882a593Smuzhiyun #define SET_VHTCAP_LINKADPCAP(VHTCapInfo, value) \ 956*4882a593Smuzhiyun (VHTCapInfo |= ((value & 0x3) << 26)) 957*4882a593Smuzhiyun 958*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet VHT Link Adapation Capable */ 959*4882a593Smuzhiyun #define RESET_11ACVHTLINKCAPA(Dot11acDevCap, value) (Dot11acDevCap &= ~(0x03)) 960*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet Maximum AMPDU Length Exponent */ 961*4882a593Smuzhiyun #define RESET_11ACAMPDULENEXP(Dot11acDevCap, value) (Dot11acDevCap &= ~(0x07)) 962*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of HTC-VHT */ 963*4882a593Smuzhiyun #define RESET_11ACVHTHTCVHT(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(22)) 964*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of VHT TXOP PS */ 965*4882a593Smuzhiyun #define RESET_11ACVHTTXOPPS(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(21)) 966*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of MU RX beamformee */ 967*4882a593Smuzhiyun #define RESET_11ACMURXBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(20)) 968*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of MU TX beamformee */ 969*4882a593Smuzhiyun #define RESET_11ACMUTXBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(19)) 970*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet Number of Sounding Dimensions */ 971*4882a593Smuzhiyun #define RESET_11ACSOUNDINGNUM(Dot11acDevCap) (Dot11acDevCap &= ~((0x07) << 16)) 972*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet Compressed Steering Number 973*4882a593Smuzhiyun * of Beamformer Antenna */ 974*4882a593Smuzhiyun #define RESET_11ACBFANTNUM(Dot11acDevCap) (Dot11acDevCap &= ~((0x07) << 13)) 975*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of SU Beamformee */ 976*4882a593Smuzhiyun #define RESET_11ACSUBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(12)) 977*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of SU Beamformer */ 978*4882a593Smuzhiyun #define RESET_11ACSUBEAMFORMER(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(11)) 979*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of Rx STBC */ 980*4882a593Smuzhiyun #define RESET_11ACRXSTBC(Dot11acDevCap) (Dot11acDevCap &= ~((0x07) << 8)) 981*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of Tx STBC */ 982*4882a593Smuzhiyun #define RESET_11ACTXSTBC(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(7)) 983*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of Short GI support for 160MHz BW */ 984*4882a593Smuzhiyun #define RESET_11ACSGI160(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(6)) 985*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of Short GI support for 80MHz BW */ 986*4882a593Smuzhiyun #define RESET_11ACSGI80(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(5)) 987*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of LDPC coding */ 988*4882a593Smuzhiyun #define RESET_11ACLDPC(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(4)) 989*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of 990*4882a593Smuzhiyun * Channel BW 20/40/80/160/80+80 MHz */ 991*4882a593Smuzhiyun #define RESET_11ACBW8080(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(3)) 992*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet support of 993*4882a593Smuzhiyun * Channel BW 20/40/80/160 MHz */ 994*4882a593Smuzhiyun #define RESET_11ACBW160(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(2)) 995*4882a593Smuzhiyun /** HW_SPEC Dot11acDevCap : ReSet Max MPDU length */ 996*4882a593Smuzhiyun #define RESET_11ACMAXMPDULEN(Dot11acDevCap) (Dot11acDevCap &= ~(0x03)) 997*4882a593Smuzhiyun 998*4882a593Smuzhiyun /** Default 11ac capability mask for 2.4GHz */ 999*4882a593Smuzhiyun #define DEFAULT_11AC_CAP_MASK_BG \ 1000*4882a593Smuzhiyun (HWSPEC_11ACSGI80_SUPP | HWSPEC_11ACRXSTBC_SUPP) 1001*4882a593Smuzhiyun /** Default 11ac capability mask for 5GHz */ 1002*4882a593Smuzhiyun #define DEFAULT_11AC_CAP_MASK_A (HWSPEC_11ACSGI80_SUPP | HWSPEC_11ACRXSTBC_SUPP) 1003*4882a593Smuzhiyun /** GET VHT CapInfo : MAX MPDU Length */ 1004*4882a593Smuzhiyun #define GET_VHTCAP_MAXMPDULEN(VHTCapInfo) (VHTCapInfo & 0x3) 1005*4882a593Smuzhiyun /** GET VHT CapInfo: Supported Channel Width SET (2 bits)*/ 1006*4882a593Smuzhiyun #define GET_VHTCAP_CHWDSET(VHTCapInfo) ((VHTCapInfo >> 2) & 0x3) 1007*4882a593Smuzhiyun /** GET VHT CapInfo: Rx STBC (3 bits) */ 1008*4882a593Smuzhiyun #define GET_VHTCAP_RXSTBC(VHTCapInfo) ((VHTCapInfo >> 8) & 0x7) 1009*4882a593Smuzhiyun /** GET VHT CapInfo: Compressed Steering Num of BFer Ant Supported (3 bits) */ 1010*4882a593Smuzhiyun #define GET_VHTCAP_SNBFERANT(VHTCapInfo) ((VHTCapInfo >> 13) & 0x7) 1011*4882a593Smuzhiyun /** GET VHT CapInfo: Num of Sounding Dimensions (3 bits) */ 1012*4882a593Smuzhiyun #define GET_VHTCAP_NUMSNDDM(VHTCapInfo) ((VHTCapInfo >> 16) & 0x7) 1013*4882a593Smuzhiyun /** GET VHT CapInfo: Max AMPDU Length Exponent (3 bits) */ 1014*4882a593Smuzhiyun #define GET_VHTCAP_MAXAMPDULENEXP(VHTCapInfo) ((VHTCapInfo >> 23) & 0x7) 1015*4882a593Smuzhiyun /** GET VHT CapInfo: VHT Link Adaptation Capable (2 bits) */ 1016*4882a593Smuzhiyun #define GET_VHTCAP_LINKADPCAP(VHTCapInfo) ((VHTCapInfo >> 26) & 0x3) 1017*4882a593Smuzhiyun /**SET OPERATING MODE:Channel Width:80M*/ 1018*4882a593Smuzhiyun #define SET_OPER_MODE_80M(oper_mode) \ 1019*4882a593Smuzhiyun (oper_mode = (oper_mode & ~MBIT(0)) | MBIT(1)) 1020*4882a593Smuzhiyun /**SET OPERATING MODE:Channel Width:40M*/ 1021*4882a593Smuzhiyun #define SET_OPER_MODE_40M(oper_mode) \ 1022*4882a593Smuzhiyun (oper_mode = (oper_mode & ~MBIT(1)) | MBIT(0)) 1023*4882a593Smuzhiyun /**SET OPERATING MODE:Channel Width:20M*/ 1024*4882a593Smuzhiyun #define SET_OPER_MODE_20M(oper_mode) (oper_mode &= ~(0x03)) 1025*4882a593Smuzhiyun #define IS_OPER_MODE_20M(oper_mode) (((oper_mode) & (MBIT(0) | MBIT(1))) == 0) 1026*4882a593Smuzhiyun /**SET OPERATING MODE:Rx NSS:2*/ 1027*4882a593Smuzhiyun #define SET_OPER_MODE_2NSS(oper_mode) \ 1028*4882a593Smuzhiyun (oper_mode = (oper_mode & ~(MBIT(5) | MBIT(6))) | MBIT(4)) 1029*4882a593Smuzhiyun /**SET OPERATING MODE:Rx NSS:1*/ 1030*4882a593Smuzhiyun #define SET_OPER_MODE_1NSS(oper_mode) \ 1031*4882a593Smuzhiyun (oper_mode &= ~(MBIT(4) | MBIT(5) | MBIT(6))) 1032*4882a593Smuzhiyun 1033*4882a593Smuzhiyun #define NO_NSS_SUPPORT 0x3 1034*4882a593Smuzhiyun #define GET_VHTMCS(MCSMapSet) (MCSMapSet & 0xFFFF) 1035*4882a593Smuzhiyun #define GET_VHTNSSMCS(MCSMapSet, nss) ((MCSMapSet >> (2 * (nss - 1))) & 0x3) 1036*4882a593Smuzhiyun #define RET_VHTNSSMCS(MCSMapSet, nss) ((MCSMapSet >> (2 * (nss - 1))) & 0x3) 1037*4882a593Smuzhiyun #define SET_VHTNSSMCS(MCSMapSet, nss, value) \ 1038*4882a593Smuzhiyun (MCSMapSet |= (value & 0x3) << (2 * (nss - 1))) 1039*4882a593Smuzhiyun 1040*4882a593Smuzhiyun /** DevMCSSupported : Tx MCS supported */ 1041*4882a593Smuzhiyun #define GET_DEVTXMCSMAP(DevMCSMap) (DevMCSMap >> 16) 1042*4882a593Smuzhiyun #define GET_DEVNSSTXMCS(DevMCSMap, nss) \ 1043*4882a593Smuzhiyun ((DevMCSMap >> (2 * (nss - 1) + 16)) & 0x3) 1044*4882a593Smuzhiyun #define SET_DEVNSSTXMCS(DevMCSMap, nss, value) \ 1045*4882a593Smuzhiyun (DevMCSMap |= (value & 0x3) << (2 * (nss - 1) + 16)) 1046*4882a593Smuzhiyun #define RESET_DEVTXMCSMAP(DevMCSMap) (DevMCSMap &= 0xFFFF) 1047*4882a593Smuzhiyun /** DevMCSSupported : Rx MCS supported */ 1048*4882a593Smuzhiyun #define GET_DEVRXMCSMAP(DevMCSMap) (DevMCSMap & 0xFFFF) 1049*4882a593Smuzhiyun #define GET_DEVNSSRXMCS(DevMCSMap, nss) ((DevMCSMap >> (2 * (nss - 1))) & 0x3) 1050*4882a593Smuzhiyun #define SET_DEVNSSRXMCS(DevMCSMap, nss, value) \ 1051*4882a593Smuzhiyun (DevMCSMap |= (value & 0x3) << (2 * (nss - 1))) 1052*4882a593Smuzhiyun #define RESET_DEVRXMCSMAP(DevMCSMap) (DevMCSMap &= 0xFFFF0000) 1053*4882a593Smuzhiyun 1054*4882a593Smuzhiyun /** TLV type : Rate scope */ 1055*4882a593Smuzhiyun #define TLV_TYPE_RATE_DROP_PATTERN \ 1056*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x51) /* 0x0151 \ 1057*4882a593Smuzhiyun */ 1058*4882a593Smuzhiyun /** TLV type : Rate drop pattern */ 1059*4882a593Smuzhiyun #define TLV_TYPE_RATE_DROP_CONTROL \ 1060*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x52) /* 0x0152 \ 1061*4882a593Smuzhiyun */ 1062*4882a593Smuzhiyun /** TLV type : Rate scope */ 1063*4882a593Smuzhiyun #define TLV_TYPE_RATE_SCOPE (PROPRIETARY_TLV_BASE_ID + 0x53) /* 0x0153 */ 1064*4882a593Smuzhiyun 1065*4882a593Smuzhiyun /** TLV type : Power group */ 1066*4882a593Smuzhiyun #define TLV_TYPE_POWER_GROUP (PROPRIETARY_TLV_BASE_ID + 0x54) /* 0x0154 */ 1067*4882a593Smuzhiyun 1068*4882a593Smuzhiyun /** Modulation class for DSSS Rates */ 1069*4882a593Smuzhiyun #define MOD_CLASS_HR_DSSS 0x03 1070*4882a593Smuzhiyun /** Modulation class for OFDM Rates */ 1071*4882a593Smuzhiyun #define MOD_CLASS_OFDM 0x07 1072*4882a593Smuzhiyun /** Modulation class for HT Rates */ 1073*4882a593Smuzhiyun #define MOD_CLASS_HT 0x08 1074*4882a593Smuzhiyun /** Modulation class for VHT Rates */ 1075*4882a593Smuzhiyun #define MOD_CLASS_VHT 0x09 1076*4882a593Smuzhiyun /** HT bandwidth 20 MHz */ 1077*4882a593Smuzhiyun #define HT_BW_20 0 1078*4882a593Smuzhiyun /** HT bandwidth 40 MHz */ 1079*4882a593Smuzhiyun #define HT_BW_40 1 1080*4882a593Smuzhiyun /** HT bandwidth 80 MHz */ 1081*4882a593Smuzhiyun #define HT_BW_80 2 1082*4882a593Smuzhiyun 1083*4882a593Smuzhiyun /** TLV type : TX RATE CFG, rename from TLV_TYPE_GI_LTF_SIZE to include CMD and 1084*4882a593Smuzhiyun * HE ER SU settings to this tlv */ 1085*4882a593Smuzhiyun #define TLV_TYPE_TX_RATE_CFG (PROPRIETARY_TLV_BASE_ID + 319) /* 0x023f */ 1086*4882a593Smuzhiyun 1087*4882a593Smuzhiyun /** TLV type : Scan Response */ 1088*4882a593Smuzhiyun #define TLV_TYPE_BSS_SCAN_RSP (PROPRIETARY_TLV_BASE_ID + 0x56) /* 0x0156 */ 1089*4882a593Smuzhiyun /** TLV type : Scan Response Stats */ 1090*4882a593Smuzhiyun #define TLV_TYPE_BSS_SCAN_INFO (PROPRIETARY_TLV_BASE_ID + 0x57) /* 0x0157 */ 1091*4882a593Smuzhiyun 1092*4882a593Smuzhiyun /** TLV type : 11h Basic Rpt */ 1093*4882a593Smuzhiyun #define TLV_TYPE_CHANRPT_11H_BASIC \ 1094*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x5b) /* 0x015b \ 1095*4882a593Smuzhiyun */ 1096*4882a593Smuzhiyun 1097*4882a593Smuzhiyun /** TLV type : ZERO DFS Operation */ 1098*4882a593Smuzhiyun #define TLV_TYPE_ZERO_DFS_OPERATION (PROPRIETARY_TLV_BASE_ID + 0x13b) // + 315 1099*4882a593Smuzhiyun /** TLV type : DFS W53 Configuration */ 1100*4882a593Smuzhiyun #define TLV_TYPE_DFS_W53_CFG (PROPRIETARY_TLV_BASE_ID + 0x145) // + 325 1101*4882a593Smuzhiyun #ifdef OPCHAN 1102*4882a593Smuzhiyun /** TLV type : OpChannel control */ 1103*4882a593Smuzhiyun #define TLV_TYPE_OPCHAN_CONTROL_DESC \ 1104*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x79) /* 0x0179 */ 1105*4882a593Smuzhiyun /** TLV type : OpChannel channel group control */ 1106*4882a593Smuzhiyun #define TLV_TYPE_OPCHAN_CHANGRP_CTRL \ 1107*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x7a) /* 0x017a */ 1108*4882a593Smuzhiyun #endif 1109*4882a593Smuzhiyun 1110*4882a593Smuzhiyun /** TLV type : Action frame */ 1111*4882a593Smuzhiyun #define TLV_TYPE_IEEE_ACTION_FRAME \ 1112*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x8c) /* 0x018c \ 1113*4882a593Smuzhiyun */ 1114*4882a593Smuzhiyun 1115*4882a593Smuzhiyun /** TLV type : SCAN channel gap */ 1116*4882a593Smuzhiyun #define TLV_TYPE_SCAN_CHANNEL_GAP \ 1117*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0xc5) /* 0x01c5 \ 1118*4882a593Smuzhiyun */ 1119*4882a593Smuzhiyun /** TLV type : Channel statistics */ 1120*4882a593Smuzhiyun #define TLV_TYPE_CHANNEL_STATS (PROPRIETARY_TLV_BASE_ID + 0xc6) /* 0x01c6 */ 1121*4882a593Smuzhiyun /** TLV type : BSS_MODE */ 1122*4882a593Smuzhiyun #define TLV_TYPE_BSS_MODE (PROPRIETARY_TLV_BASE_ID + 0xce) /* 0x01ce */ 1123*4882a593Smuzhiyun 1124*4882a593Smuzhiyun /** Firmware Host Command ID Constants */ 1125*4882a593Smuzhiyun /** Host Command ID : Get hardware specifications */ 1126*4882a593Smuzhiyun #define HostCmd_CMD_GET_HW_SPEC 0x0003 1127*4882a593Smuzhiyun /** Host Command ID : 802.11 scan */ 1128*4882a593Smuzhiyun #define HostCmd_CMD_802_11_SCAN 0x0006 1129*4882a593Smuzhiyun /** Host Command ID : 802.11 get log */ 1130*4882a593Smuzhiyun #define HostCmd_CMD_802_11_GET_LOG 0x000b 1131*4882a593Smuzhiyun 1132*4882a593Smuzhiyun /** Host Command id: GET_TX_RX_PKT_STATS */ 1133*4882a593Smuzhiyun #define HOST_CMD_TX_RX_PKT_STATS 0x008d 1134*4882a593Smuzhiyun 1135*4882a593Smuzhiyun /** Host Command ID : 802.11 get/set link layer statistic */ 1136*4882a593Smuzhiyun #define HostCmd_CMD_802_11_LINK_STATS 0x0256 1137*4882a593Smuzhiyun 1138*4882a593Smuzhiyun /** Host Command ID : MAC multicast address */ 1139*4882a593Smuzhiyun #define HostCmd_CMD_MAC_MULTICAST_ADR 0x0010 1140*4882a593Smuzhiyun /** Host Command ID : 802.11 EEPROM access */ 1141*4882a593Smuzhiyun #define HostCmd_CMD_802_11_EEPROM_ACCESS 0x0059 1142*4882a593Smuzhiyun /** Host Command ID : 802.11 associate */ 1143*4882a593Smuzhiyun #define HostCmd_CMD_802_11_ASSOCIATE 0x0012 1144*4882a593Smuzhiyun 1145*4882a593Smuzhiyun /** Host Command ID : 802.11 SNMP MIB */ 1146*4882a593Smuzhiyun #define HostCmd_CMD_802_11_SNMP_MIB 0x0016 1147*4882a593Smuzhiyun /** Host Command ID : MAC register access */ 1148*4882a593Smuzhiyun #define HostCmd_CMD_MAC_REG_ACCESS 0x0019 1149*4882a593Smuzhiyun /** Host Command ID : BBP register access */ 1150*4882a593Smuzhiyun #define HostCmd_CMD_BBP_REG_ACCESS 0x001a 1151*4882a593Smuzhiyun /** Host Command ID : RF register access */ 1152*4882a593Smuzhiyun #define HostCmd_CMD_RF_REG_ACCESS 0x001b 1153*4882a593Smuzhiyun 1154*4882a593Smuzhiyun /** Host Command ID : 802.11 radio control */ 1155*4882a593Smuzhiyun #define HostCmd_CMD_802_11_RADIO_CONTROL 0x001c 1156*4882a593Smuzhiyun /** Host Command ID : 802.11 RF channel */ 1157*4882a593Smuzhiyun #define HostCmd_CMD_802_11_RF_CHANNEL 0x001d 1158*4882a593Smuzhiyun /** Host Command ID : 802.11 RF Tx power */ 1159*4882a593Smuzhiyun #define HostCmd_CMD_802_11_RF_TX_POWER 0x001e 1160*4882a593Smuzhiyun 1161*4882a593Smuzhiyun /** Host Command ID : 802.11 RF antenna */ 1162*4882a593Smuzhiyun #define HostCmd_CMD_802_11_RF_ANTENNA 0x0020 1163*4882a593Smuzhiyun 1164*4882a593Smuzhiyun /** Host Command ID : 802.11 deauthenticate */ 1165*4882a593Smuzhiyun #define HostCmd_CMD_802_11_DEAUTHENTICATE 0x0024 1166*4882a593Smuzhiyun /** Host Command ID: 802.11 disassoicate */ 1167*4882a593Smuzhiyun #define HostCmd_CMD_802_11_DISASSOCIATE 0x0026 1168*4882a593Smuzhiyun /** Host Command ID : MAC control */ 1169*4882a593Smuzhiyun #define HostCmd_CMD_MAC_CONTROL 0x0028 1170*4882a593Smuzhiyun /** Host Command ID : 802.11 Ad-Hoc start */ 1171*4882a593Smuzhiyun #define HostCmd_CMD_802_11_AD_HOC_START 0x002b 1172*4882a593Smuzhiyun /** Host Command ID : 802.11 Ad-Hoc join */ 1173*4882a593Smuzhiyun #define HostCmd_CMD_802_11_AD_HOC_JOIN 0x002c 1174*4882a593Smuzhiyun 1175*4882a593Smuzhiyun /** Host Command ID: CW Mode */ 1176*4882a593Smuzhiyun #define HostCmd_CMD_CW_MODE_CTRL 0x0239 1177*4882a593Smuzhiyun /** Host Command ID : 802.11 key material */ 1178*4882a593Smuzhiyun #define HostCmd_CMD_802_11_KEY_MATERIAL 0x005e 1179*4882a593Smuzhiyun 1180*4882a593Smuzhiyun /** Host Command ID : 802.11 Ad-Hoc stop */ 1181*4882a593Smuzhiyun #define HostCmd_CMD_802_11_AD_HOC_STOP 0x0040 1182*4882a593Smuzhiyun 1183*4882a593Smuzhiyun /** Host Command ID : 802.22 MAC address */ 1184*4882a593Smuzhiyun #define HostCmd_CMD_802_11_MAC_ADDRESS 0x004D 1185*4882a593Smuzhiyun 1186*4882a593Smuzhiyun /** Host Command ID : WMM Traffic Stream Status */ 1187*4882a593Smuzhiyun #define HostCmd_CMD_WMM_TS_STATUS 0x005d 1188*4882a593Smuzhiyun 1189*4882a593Smuzhiyun /** Host Command ID : 802.11 D domain information */ 1190*4882a593Smuzhiyun #define HostCmd_CMD_802_11D_DOMAIN_INFO 0x005b 1191*4882a593Smuzhiyun 1192*4882a593Smuzhiyun /*This command gets/sets the Transmit Rate-based Power Control (TRPC) channel 1193*4882a593Smuzhiyun * configuration.*/ 1194*4882a593Smuzhiyun #define HostCmd_CHANNEL_TRPC_CONFIG 0x00fb 1195*4882a593Smuzhiyun 1196*4882a593Smuzhiyun /** Host Command ID : 802.11 TPC information */ 1197*4882a593Smuzhiyun #define HostCmd_CMD_802_11_TPC_INFO 0x005f 1198*4882a593Smuzhiyun /** Host Command ID : 802.11 TPC adapt req */ 1199*4882a593Smuzhiyun #define HostCmd_CMD_802_11_TPC_ADAPT_REQ 0x0060 1200*4882a593Smuzhiyun /** Host Command ID : 802.11 channel SW ann */ 1201*4882a593Smuzhiyun #define HostCmd_CMD_802_11_CHAN_SW_ANN 0x0061 1202*4882a593Smuzhiyun 1203*4882a593Smuzhiyun /** Host Command ID : Measurement request */ 1204*4882a593Smuzhiyun #define HostCmd_CMD_MEASUREMENT_REQUEST 0x0062 1205*4882a593Smuzhiyun /** Host Command ID : Measurement report */ 1206*4882a593Smuzhiyun #define HostCmd_CMD_MEASUREMENT_REPORT 0x0063 1207*4882a593Smuzhiyun 1208*4882a593Smuzhiyun /** Host Command ID : 802.11 sleep parameters */ 1209*4882a593Smuzhiyun #define HostCmd_CMD_802_11_SLEEP_PARAMS 0x0066 1210*4882a593Smuzhiyun 1211*4882a593Smuzhiyun /** Host Command ID : 802.11 ps inactivity timeout */ 1212*4882a593Smuzhiyun #define HostCmd_CMD_802_11_PS_INACTIVITY_TIMEOUT 0x0067 1213*4882a593Smuzhiyun 1214*4882a593Smuzhiyun /** Host Command ID : 802.11 sleep period */ 1215*4882a593Smuzhiyun #define HostCmd_CMD_802_11_SLEEP_PERIOD 0x0068 1216*4882a593Smuzhiyun 1217*4882a593Smuzhiyun /** Host Command ID: 802.11 BG scan config */ 1218*4882a593Smuzhiyun #define HostCmd_CMD_802_11_BG_SCAN_CONFIG 0x006b 1219*4882a593Smuzhiyun /** Host Command ID : 802.11 BG scan query */ 1220*4882a593Smuzhiyun #define HostCmd_CMD_802_11_BG_SCAN_QUERY 0x006c 1221*4882a593Smuzhiyun 1222*4882a593Smuzhiyun /** Host Command ID : WMM ADDTS req */ 1223*4882a593Smuzhiyun #define HostCmd_CMD_WMM_ADDTS_REQ 0x006E 1224*4882a593Smuzhiyun /** Host Command ID : WMM DELTS req */ 1225*4882a593Smuzhiyun #define HostCmd_CMD_WMM_DELTS_REQ 0x006F 1226*4882a593Smuzhiyun /** Host Command ID : WMM queue configuration */ 1227*4882a593Smuzhiyun #define HostCmd_CMD_WMM_QUEUE_CONFIG 0x0070 1228*4882a593Smuzhiyun /** Host Command ID : 802.11 get status */ 1229*4882a593Smuzhiyun #define HostCmd_CMD_WMM_GET_STATUS 0x0071 1230*4882a593Smuzhiyun 1231*4882a593Smuzhiyun /** Host Command ID : 802.11 subscribe event */ 1232*4882a593Smuzhiyun #define HostCmd_CMD_802_11_SUBSCRIBE_EVENT 0x0075 1233*4882a593Smuzhiyun 1234*4882a593Smuzhiyun /** Host Command ID : 802.11 Tx rate query */ 1235*4882a593Smuzhiyun #define HostCmd_CMD_802_11_TX_RATE_QUERY 0x007f 1236*4882a593Smuzhiyun /** Host Command ID :Get timestamp value */ 1237*4882a593Smuzhiyun #define HostCmd_CMD_GET_TSF 0x0080 1238*4882a593Smuzhiyun 1239*4882a593Smuzhiyun /** Host Command ID : WMM queue stats */ 1240*4882a593Smuzhiyun #define HostCmd_CMD_WMM_QUEUE_STATS 0x0081 1241*4882a593Smuzhiyun 1242*4882a593Smuzhiyun /** Host Command ID : KEEP ALIVE command */ 1243*4882a593Smuzhiyun #define HostCmd_CMD_AUTO_TX 0x0082 1244*4882a593Smuzhiyun 1245*4882a593Smuzhiyun /** Host Command ID : 802.11 IBSS coalescing status */ 1246*4882a593Smuzhiyun #define HostCmd_CMD_802_11_IBSS_COALESCING_STATUS 0x0083 1247*4882a593Smuzhiyun 1248*4882a593Smuzhiyun /** Host Command ID : Memory access */ 1249*4882a593Smuzhiyun #define HostCmd_CMD_MEM_ACCESS 0x0086 1250*4882a593Smuzhiyun 1251*4882a593Smuzhiyun #if defined(SDIO) 1252*4882a593Smuzhiyun /** Host Command ID : SDIO GPIO interrupt configuration */ 1253*4882a593Smuzhiyun #define HostCmd_CMD_SDIO_GPIO_INT_CONFIG 0x0088 1254*4882a593Smuzhiyun #endif 1255*4882a593Smuzhiyun 1256*4882a593Smuzhiyun /** Host Command ID : Mfg command */ 1257*4882a593Smuzhiyun #define HostCmd_CMD_MFG_COMMAND 0x0089 1258*4882a593Smuzhiyun /** Host Command ID : Inactivity timeout ext */ 1259*4882a593Smuzhiyun #define HostCmd_CMD_INACTIVITY_TIMEOUT_EXT 0x008a 1260*4882a593Smuzhiyun 1261*4882a593Smuzhiyun /** Host Command ID : DBGS configuration */ 1262*4882a593Smuzhiyun #define HostCmd_CMD_DBGS_CFG 0x008b 1263*4882a593Smuzhiyun /** Host Command ID : Get memory */ 1264*4882a593Smuzhiyun #define HostCmd_CMD_GET_MEM 0x008c 1265*4882a593Smuzhiyun 1266*4882a593Smuzhiyun /** Host Command ID : Cal data dnld */ 1267*4882a593Smuzhiyun #define HostCmd_CMD_CFG_DATA 0x008f 1268*4882a593Smuzhiyun 1269*4882a593Smuzhiyun /** Host Command ID : SDIO pull control */ 1270*4882a593Smuzhiyun #define HostCmd_CMD_SDIO_PULL_CTRL 0x0093 1271*4882a593Smuzhiyun 1272*4882a593Smuzhiyun /** Host Command ID : ECL system clock configuration */ 1273*4882a593Smuzhiyun #define HostCmd_CMD_ECL_SYSTEM_CLOCK_CONFIG 0x0094 1274*4882a593Smuzhiyun 1275*4882a593Smuzhiyun /** Host Command ID : Extended version */ 1276*4882a593Smuzhiyun #define HostCmd_CMD_VERSION_EXT 0x0097 1277*4882a593Smuzhiyun 1278*4882a593Smuzhiyun /** Host Command ID : MEF configuration */ 1279*4882a593Smuzhiyun #define HostCmd_CMD_MEF_CFG 0x009a 1280*4882a593Smuzhiyun /** Host Command ID : 802.11 RSSI INFO*/ 1281*4882a593Smuzhiyun #define HostCmd_CMD_RSSI_INFO 0x00a4 1282*4882a593Smuzhiyun /** Host Command ID : Function initialization */ 1283*4882a593Smuzhiyun #define HostCmd_CMD_FUNC_INIT 0x00a9 1284*4882a593Smuzhiyun /** Host Command ID : Function shutdown */ 1285*4882a593Smuzhiyun #define HostCmd_CMD_FUNC_SHUTDOWN 0x00aa 1286*4882a593Smuzhiyun 1287*4882a593Smuzhiyun /** Host Command ID : Robustcoex */ 1288*4882a593Smuzhiyun #define HostCmd_CMD_802_11_ROBUSTCOEX 0x00e0 1289*4882a593Smuzhiyun 1290*4882a593Smuzhiyun /** Host Command ID :EAPOL PKT */ 1291*4882a593Smuzhiyun #define HostCmd_CMD_802_11_EAPOL_PKT 0x012e 1292*4882a593Smuzhiyun 1293*4882a593Smuzhiyun /** Host Command ID :MIMO SWITCH **/ 1294*4882a593Smuzhiyun #define HostCmd_CMD_802_11_MIMO_SWITCH 0x0235 1295*4882a593Smuzhiyun 1296*4882a593Smuzhiyun /** Host Command ID : 802.11 RSSI INFO EXT*/ 1297*4882a593Smuzhiyun #define HostCmd_CMD_RSSI_INFO_EXT 0x0237 1298*4882a593Smuzhiyun /** Host Command ID : ROAMING OFFLOAD TO FW*/ 1299*4882a593Smuzhiyun #define HostCmd_CMD_ROAM_OFFLOAD 0x0245 1300*4882a593Smuzhiyun 1301*4882a593Smuzhiyun #ifdef RX_PACKET_COALESCE 1302*4882a593Smuzhiyun /** TLV ID for RX pkt coalesce config */ 1303*4882a593Smuzhiyun #define TLV_TYPE_RX_PKT_COAL_CONFIG (PROPRIETARY_TLV_BASE_ID + 0xC9) 1304*4882a593Smuzhiyun #endif 1305*4882a593Smuzhiyun 1306*4882a593Smuzhiyun #define TLV_TYPE_PREV_BSSID (PROPRIETARY_TLV_BASE_ID + 330) 1307*4882a593Smuzhiyun 1308*4882a593Smuzhiyun /** Host Command ID : Channel report request */ 1309*4882a593Smuzhiyun #define HostCmd_CMD_CHAN_REPORT_REQUEST 0x00dd 1310*4882a593Smuzhiyun 1311*4882a593Smuzhiyun /** Host Command ID: SUPPLICANT_PMK */ 1312*4882a593Smuzhiyun #define HostCmd_CMD_SUPPLICANT_PMK 0x00c4 1313*4882a593Smuzhiyun /** Host Command ID: SUPPLICANT_PROFILE */ 1314*4882a593Smuzhiyun #define HostCmd_CMD_SUPPLICANT_PROFILE 0x00c5 1315*4882a593Smuzhiyun 1316*4882a593Smuzhiyun /** Host Command ID : Add Block Ack Request */ 1317*4882a593Smuzhiyun #define HostCmd_CMD_11N_ADDBA_REQ 0x00ce 1318*4882a593Smuzhiyun /** Host Command ID : Delete a Block Ack Request */ 1319*4882a593Smuzhiyun #define HostCmd_CMD_11N_CFG 0x00cd 1320*4882a593Smuzhiyun /** Host Command ID : Add Block Ack Response */ 1321*4882a593Smuzhiyun #define HostCmd_CMD_11N_ADDBA_RSP 0x00cf 1322*4882a593Smuzhiyun /** Host Command ID : Delete a Block Ack Request */ 1323*4882a593Smuzhiyun #define HostCmd_CMD_11N_DELBA 0x00d0 1324*4882a593Smuzhiyun /** Host Command ID: Configure Tx Buf size */ 1325*4882a593Smuzhiyun #define HostCmd_CMD_RECONFIGURE_TX_BUFF 0x00d9 1326*4882a593Smuzhiyun /** Host Command ID: AMSDU Aggr Ctrl */ 1327*4882a593Smuzhiyun #define HostCmd_CMD_AMSDU_AGGR_CTRL 0x00df 1328*4882a593Smuzhiyun /** Host Command ID: 11AC config */ 1329*4882a593Smuzhiyun #define HostCmd_CMD_11AC_CFG 0x0112 1330*4882a593Smuzhiyun /** Host Command ID: Configure TX Beamforming capability */ 1331*4882a593Smuzhiyun #define HostCmd_CMD_TX_BF_CFG 0x0104 1332*4882a593Smuzhiyun 1333*4882a593Smuzhiyun /** Host Command ID : 802.11 TX power configuration */ 1334*4882a593Smuzhiyun #define HostCmd_CMD_TXPWR_CFG 0x00d1 1335*4882a593Smuzhiyun 1336*4882a593Smuzhiyun /** Host Command ID : Soft Reset */ 1337*4882a593Smuzhiyun #define HostCmd_CMD_SOFT_RESET 0x00d5 1338*4882a593Smuzhiyun 1339*4882a593Smuzhiyun /** Host Command ID : 802.11 b/g/n rate configration */ 1340*4882a593Smuzhiyun #define HostCmd_CMD_TX_RATE_CFG 0x00d6 1341*4882a593Smuzhiyun 1342*4882a593Smuzhiyun /** Host Command ID : Enhanced PS mode */ 1343*4882a593Smuzhiyun #define HostCmd_CMD_802_11_PS_MODE_ENH 0x00e4 1344*4882a593Smuzhiyun 1345*4882a593Smuzhiyun /** Host command action : Host sleep configuration */ 1346*4882a593Smuzhiyun #define HostCmd_CMD_802_11_HS_CFG_ENH 0x00e5 1347*4882a593Smuzhiyun 1348*4882a593Smuzhiyun /** Host Command ID : CAU register access */ 1349*4882a593Smuzhiyun #define HostCmd_CMD_CAU_REG_ACCESS 0x00ed 1350*4882a593Smuzhiyun 1351*4882a593Smuzhiyun /** Host Command ID : mgmt IE list */ 1352*4882a593Smuzhiyun #define HostCmd_CMD_MGMT_IE_LIST 0x00f2 1353*4882a593Smuzhiyun 1354*4882a593Smuzhiyun #define HostCmd_CMD_802_11_BAND_STEERING 0x026f 1355*4882a593Smuzhiyun /*** Host Command ID " MC_AGGR_CFG */ 1356*4882a593Smuzhiyun #define HostCmd_CMD_MC_AGGR_CFG 0x027a 1357*4882a593Smuzhiyun #define HostCmd_CMD_802_11_STATS 0x0014 1358*4882a593Smuzhiyun #define HostCmd_CMD_GET_CH_LOAD 0x027b 1359*4882a593Smuzhiyun 1360*4882a593Smuzhiyun /** Host Command ID : TDLS configuration */ 1361*4882a593Smuzhiyun #define HostCmd_CMD_TDLS_CONFIG 0x0100 1362*4882a593Smuzhiyun /** Host Command ID : TDLS operation */ 1363*4882a593Smuzhiyun #define HostCmd_CMD_TDLS_OPERATION 0x0122 1364*4882a593Smuzhiyun 1365*4882a593Smuzhiyun #ifdef SDIO 1366*4882a593Smuzhiyun /** Host Command ID : SDIO single port RX aggr */ 1367*4882a593Smuzhiyun #define HostCmd_CMD_SDIO_SP_RX_AGGR_CFG 0x0223 1368*4882a593Smuzhiyun 1369*4882a593Smuzhiyun /** fw_cap_info bit16 for sdio sp rx aggr flag*/ 1370*4882a593Smuzhiyun #define SDIO_SP_RX_AGGR_ENABLE MBIT(16) 1371*4882a593Smuzhiyun 1372*4882a593Smuzhiyun #endif 1373*4882a593Smuzhiyun 1374*4882a593Smuzhiyun /* fw_cap_info bit18 for ecsa support*/ 1375*4882a593Smuzhiyun #define FW_CAPINFO_ECSA MBIT(18) 1376*4882a593Smuzhiyun 1377*4882a593Smuzhiyun /* fw_cap_info bit20 for get log*/ 1378*4882a593Smuzhiyun #define FW_CAPINFO_GET_LOG MBIT(20) 1379*4882a593Smuzhiyun 1380*4882a593Smuzhiyun /** fw_cap_info bit22 for embedded supplicant support*/ 1381*4882a593Smuzhiyun #define FW_CAPINFO_SUPPLICANT_SUPPORT MBIT(21) 1382*4882a593Smuzhiyun 1383*4882a593Smuzhiyun /** fw_cap_info bit23 for embedded authenticator support*/ 1384*4882a593Smuzhiyun #define FW_CAPINFO_AUTH_SUPPORT MBIT(22) 1385*4882a593Smuzhiyun 1386*4882a593Smuzhiyun /** fw_cap_info bit23 for firmware roaming*/ 1387*4882a593Smuzhiyun #define FW_ROAMING_SUPPORT MBIT(23) 1388*4882a593Smuzhiyun 1389*4882a593Smuzhiyun /** fw_cap_info bit25 for adhoc support*/ 1390*4882a593Smuzhiyun #define FW_CAPINFO_ADHOC_SUPPORT MBIT(25) 1391*4882a593Smuzhiyun /** Check if adhoc is supported by firmware */ 1392*4882a593Smuzhiyun #define IS_FW_SUPPORT_ADHOC(_adapter) \ 1393*4882a593Smuzhiyun (_adapter->fw_cap_info & FW_CAPINFO_ADHOC_SUPPORT) 1394*4882a593Smuzhiyun 1395*4882a593Smuzhiyun /** Check if supplicant is supported by firmware */ 1396*4882a593Smuzhiyun #define IS_FW_SUPPORT_SUPPLICANT(_adapter) \ 1397*4882a593Smuzhiyun (_adapter->fw_cap_info & FW_CAPINFO_SUPPLICANT_SUPPORT) 1398*4882a593Smuzhiyun 1399*4882a593Smuzhiyun /** Check if authenticator is supported by firmware */ 1400*4882a593Smuzhiyun #define IS_FW_SUPPORT_AUTHENTICATOR(_adapter) \ 1401*4882a593Smuzhiyun (_adapter->fw_cap_info & FW_CAPINFO_AUTH_SUPPORT) 1402*4882a593Smuzhiyun 1403*4882a593Smuzhiyun /** Ext fw cap info bit0 only 1x1 5G is available */ 1404*4882a593Smuzhiyun #define FW_CAPINFO_EXT_5G_1X1_ONLY MBIT(0) 1405*4882a593Smuzhiyun /** Ext fw cap info bit1 1x1 5G is not available */ 1406*4882a593Smuzhiyun #define FW_CAPINFO_EXT_NO_5G_1X1 MBIT(1) 1407*4882a593Smuzhiyun /** Ext fw cap info bit 2 only 1x1 2G is available */ 1408*4882a593Smuzhiyun #define FW_CAPINFO_EXT_2G_1X1_ONLY MBIT(2) 1409*4882a593Smuzhiyun /**Ext fw cap info bit3 1x1 2G is not available */ 1410*4882a593Smuzhiyun #define FW_CAPINFO_EXT_NO_2G_1X1 MBIT(3) 1411*4882a593Smuzhiyun /** Ext fw cap info bit4 1x1 + 1x1 5G mode is unavailable */ 1412*4882a593Smuzhiyun #define FW_CAPINFO_EXT_NO_5G_1X1_PLUS_1X1 MBIT(4) 1413*4882a593Smuzhiyun /** Ext fw cap info bit5 80 + 80 MHz capability disabled */ 1414*4882a593Smuzhiyun #define FW_CAPINFO_EXT_NO_80MHz_PLUS_80MHz MBIT(5) 1415*4882a593Smuzhiyun /** Ext fw cap info bit6 1024 QAM is disabled */ 1416*4882a593Smuzhiyun #define FW_CAPINFO_EXT_NO_1024_QAM MBIT(6) 1417*4882a593Smuzhiyun /** FW cap info bit 7 11AX */ 1418*4882a593Smuzhiyun #define FW_CAPINFO_EXT_802_11AX MBIT(7) 1419*4882a593Smuzhiyun /** FW cap info bit 8: 80MHZ disabled */ 1420*4882a593Smuzhiyun #define FW_CAPINFO_EXT_NO_80MHZ MBIT(8) 1421*4882a593Smuzhiyun /** FW cap info bit 9: Multi BSSID Support */ 1422*4882a593Smuzhiyun #define FW_CAPINFO_EXT_MULTI_BSSID MBIT(9) 1423*4882a593Smuzhiyun /** FW cap info bit 10: Beacon Protection Support */ 1424*4882a593Smuzhiyun #define FW_CAPINFO_EXT_BEACON_PROT MBIT(10) 1425*4882a593Smuzhiyun /** FW cap info bit 11: OTP cal data */ 1426*4882a593Smuzhiyun #define FW_CAPINFO_EXT_OTP_CALDATA MBIT(11) 1427*4882a593Smuzhiyun /** FW cap info bit 12: RTT Support */ 1428*4882a593Smuzhiyun #define FW_CAPINFO_EXT_RTT MBIT(12) 1429*4882a593Smuzhiyun /** FW cap info bit 13: Channel Tracking Support */ 1430*4882a593Smuzhiyun #define FW_CAPINFO_EXT_CHAN_TRACK MBIT(13) 1431*4882a593Smuzhiyun /** FW cap info bit 14: 6G Support */ 1432*4882a593Smuzhiyun #define FW_CAPINFO_EXT_6G MBIT(14) 1433*4882a593Smuzhiyun 1434*4882a593Smuzhiyun /** Check if 5G 1x1 only is supported by firmware */ 1435*4882a593Smuzhiyun #define IS_FW_SUPPORT_5G_1X1_ONLY(_adapter) \ 1436*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_5G_1X1_ONLY) 1437*4882a593Smuzhiyun /** Check if 5G 1x1 is unavailable in firmware */ 1438*4882a593Smuzhiyun #define IS_FW_SUPPORT_NO_5G_1X1(_adapter) \ 1439*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_5G_1X1) 1440*4882a593Smuzhiyun /** Check if 2G 1x1 only is supported by firmware */ 1441*4882a593Smuzhiyun #define IS_FW_SUPPORT_2G_1X1_ONLY(_adapter) \ 1442*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_2G_1X1_ONLY) 1443*4882a593Smuzhiyun /** Check if 2G 1x1 is unavailable in firmware */ 1444*4882a593Smuzhiyun #define IS_FW_SUPPORT_NO_2G_1X1(_adapter) \ 1445*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_2G_1X1) 1446*4882a593Smuzhiyun /** Check if 5G 1x1 + 1x1 mode is disabled in firmware */ 1447*4882a593Smuzhiyun #define IS_FW_SUPPORT_NO_5G_1X1_PLUS_1X1(_adapter) \ 1448*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_5G_1X1_PLUS_1X1) 1449*4882a593Smuzhiyun /** Check if 80 + 80MHz is disabled in firmware */ 1450*4882a593Smuzhiyun #define IS_FW_SUPPORT_NO_80MHz_PLUS_80MHz(_adapter) \ 1451*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_80MHz_PLUS_80MHz) 1452*4882a593Smuzhiyun /** Check if 1024 QAM disabled in firmware */ 1453*4882a593Smuzhiyun #define IS_FW_SUPPORT_NO_1024_QAM(_adapter) \ 1454*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_1024_QAM) 1455*4882a593Smuzhiyun /** Check if 80MHZ disabled in firmware */ 1456*4882a593Smuzhiyun #define IS_FW_SUPPORT_NO_80MHZ(_adapter) \ 1457*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_80MHZ) 1458*4882a593Smuzhiyun /** Check if Multi BSSID supported by firmware */ 1459*4882a593Smuzhiyun #define IS_FW_SUPPORT_MULTIBSSID(_adapter) \ 1460*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_MULTI_BSSID) 1461*4882a593Smuzhiyun /** Check if Beacon Protection supported by firmware */ 1462*4882a593Smuzhiyun #define IS_FW_SUPPORT_BEACON_PROT(_adapter) \ 1463*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_BEACON_PROT) 1464*4882a593Smuzhiyun /** Check if RTT supported by firmware */ 1465*4882a593Smuzhiyun #define IS_FW_SUPPORT_RTT(_adapter) (_adapter->fw_cap_ext & FW_CAPINFO_EXT_RTT) 1466*4882a593Smuzhiyun /** Check if Channel Tracking supported by firmware */ 1467*4882a593Smuzhiyun #define IS_FW_SUPPORT_CHAN_TRACK(_adapter) \ 1468*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_CHAN_TRACK) 1469*4882a593Smuzhiyun /** Check if 6G supported by firmware */ 1470*4882a593Smuzhiyun #define IS_FW_SUPPORT_6G(_adapter) (_adapter->fw_cap_ext & FW_CAPINFO_EXT_6G) 1471*4882a593Smuzhiyun 1472*4882a593Smuzhiyun /** MrvlIEtypes_PrevBssid_t */ 1473*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_PrevBssid_t { 1474*4882a593Smuzhiyun /** Header */ 1475*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 1476*4882a593Smuzhiyun /** prev_bssid **/ 1477*4882a593Smuzhiyun t_u8 prev_bssid[6]; 1478*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_PrevBssid_t; 1479*4882a593Smuzhiyun 1480*4882a593Smuzhiyun /** FW cap info TLV */ 1481*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_fw_cap_info_t { 1482*4882a593Smuzhiyun /** Header type */ 1483*4882a593Smuzhiyun t_u16 type; 1484*4882a593Smuzhiyun /** Header length */ 1485*4882a593Smuzhiyun t_u16 len; 1486*4882a593Smuzhiyun /** Fw cap info bitmap */ 1487*4882a593Smuzhiyun t_u32 fw_cap_info; 1488*4882a593Smuzhiyun /** Extended fw cap info bitmap */ 1489*4882a593Smuzhiyun t_u32 fw_cap_ext; 1490*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_fw_cap_info_t, *pMrvlIEtypes_fw_cap_info_t; 1491*4882a593Smuzhiyun 1492*4882a593Smuzhiyun /** Check if 11AX is supported by firmware */ 1493*4882a593Smuzhiyun #define IS_FW_SUPPORT_11AX(_adapter) \ 1494*4882a593Smuzhiyun (_adapter->fw_cap_ext & FW_CAPINFO_EXT_802_11AX) 1495*4882a593Smuzhiyun 1496*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Extension_t { 1497*4882a593Smuzhiyun /** Header type */ 1498*4882a593Smuzhiyun t_u16 type; 1499*4882a593Smuzhiyun /** Header length */ 1500*4882a593Smuzhiyun t_u16 len; 1501*4882a593Smuzhiyun /** Element id extension */ 1502*4882a593Smuzhiyun t_u8 ext_id; 1503*4882a593Smuzhiyun /** payload */ 1504*4882a593Smuzhiyun t_u8 data[1]; 1505*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Extension_t, *pMrvlIEtypes_Extension_t; 1506*4882a593Smuzhiyun 1507*4882a593Smuzhiyun /* HE MAC Capabilities Information field BIT 1 for TWT Req */ 1508*4882a593Smuzhiyun #define HE_MAC_CAP_TWT_REQ_SUPPORT MBIT(1) 1509*4882a593Smuzhiyun /* HE MAC Capabilities Information field BIT 2 for TWT Resp*/ 1510*4882a593Smuzhiyun #define HE_MAC_CAP_TWT_RESP_SUPPORT MBIT(2) 1511*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_He_cap_t { 1512*4882a593Smuzhiyun /** Header type */ 1513*4882a593Smuzhiyun t_u16 type; 1514*4882a593Smuzhiyun /** Header length */ 1515*4882a593Smuzhiyun t_u16 len; 1516*4882a593Smuzhiyun /** Element id extension */ 1517*4882a593Smuzhiyun t_u8 ext_id; 1518*4882a593Smuzhiyun /** he mac capability info */ 1519*4882a593Smuzhiyun t_u8 he_mac_cap[6]; 1520*4882a593Smuzhiyun /** he phy capability info */ 1521*4882a593Smuzhiyun t_u8 he_phy_cap[11]; 1522*4882a593Smuzhiyun /** rx mcs for 80 */ 1523*4882a593Smuzhiyun t_u16 rx_mcs_80; 1524*4882a593Smuzhiyun /** tx mcs for 80 */ 1525*4882a593Smuzhiyun t_u16 tx_mcs_80; 1526*4882a593Smuzhiyun /** rx mcs for bw 160 */ 1527*4882a593Smuzhiyun t_u16 rx_mcs_160; 1528*4882a593Smuzhiyun /** tx mcs for bw 160 */ 1529*4882a593Smuzhiyun t_u16 tx_mcs_160; 1530*4882a593Smuzhiyun /** rx mcs for bw 80+80 */ 1531*4882a593Smuzhiyun t_u16 rx_mcs_80p80; 1532*4882a593Smuzhiyun /** tx mcs for bw 80+80 */ 1533*4882a593Smuzhiyun t_u16 tx_mcs_80p80; 1534*4882a593Smuzhiyun /** PPE Thresholds (optional) */ 1535*4882a593Smuzhiyun t_u8 val[20]; 1536*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_He_cap_t, *pMrvlIEtypes_he_cap_t; 1537*4882a593Smuzhiyun 1538*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_He_Op_t { 1539*4882a593Smuzhiyun /** Header */ 1540*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 1541*4882a593Smuzhiyun /** Element id extension */ 1542*4882a593Smuzhiyun t_u8 ext_id; 1543*4882a593Smuzhiyun /** HE Operation Parameters */ 1544*4882a593Smuzhiyun t_u16 he_op_param1; 1545*4882a593Smuzhiyun /** HE Operation Parameters */ 1546*4882a593Smuzhiyun t_u8 he_op_param2; 1547*4882a593Smuzhiyun /** BSS Color Info */ 1548*4882a593Smuzhiyun t_u8 bss_color_info; 1549*4882a593Smuzhiyun /** Basic HE-MCS and NSS Set */ 1550*4882a593Smuzhiyun t_u16 basic_he_mcs_nss; 1551*4882a593Smuzhiyun /** Optional Field, including VHT Operation Info Max Co-Hosted BSSID 1552*4882a593Smuzhiyun * Indicator, and 6Ghz Operation Info */ 1553*4882a593Smuzhiyun t_u8 option[9]; 1554*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_He_Op_t; 1555*4882a593Smuzhiyun 1556*4882a593Smuzhiyun #ifdef RX_PACKET_COALESCE 1557*4882a593Smuzhiyun /** Host Command ID : Rx packet coalescing configuration */ 1558*4882a593Smuzhiyun #define HostCmd_CMD_RX_PKT_COALESCE_CFG 0x012c 1559*4882a593Smuzhiyun #endif 1560*4882a593Smuzhiyun 1561*4882a593Smuzhiyun /** Host Command ID : Extended scan support */ 1562*4882a593Smuzhiyun #define HostCmd_CMD_802_11_SCAN_EXT 0x0107 1563*4882a593Smuzhiyun 1564*4882a593Smuzhiyun /** Host Command ID : Forward mgmt frame */ 1565*4882a593Smuzhiyun #define HostCmd_CMD_RX_MGMT_IND 0x010c 1566*4882a593Smuzhiyun 1567*4882a593Smuzhiyun #ifdef PCIE 1568*4882a593Smuzhiyun /** Host Command ID: Host buffer description */ 1569*4882a593Smuzhiyun #define HostCmd_CMD_PCIE_HOST_BUF_DETAILS 0x00fa 1570*4882a593Smuzhiyun #endif 1571*4882a593Smuzhiyun 1572*4882a593Smuzhiyun /** Host Command ID : Set BSS_MODE */ 1573*4882a593Smuzhiyun #define HostCmd_CMD_SET_BSS_MODE 0x00f7 1574*4882a593Smuzhiyun 1575*4882a593Smuzhiyun #ifdef UAP_SUPPORT 1576*4882a593Smuzhiyun /** Host Command id: SYS_INFO */ 1577*4882a593Smuzhiyun #define HOST_CMD_APCMD_SYS_INFO 0x00ae 1578*4882a593Smuzhiyun /** Host Command id: sys_reset */ 1579*4882a593Smuzhiyun #define HOST_CMD_APCMD_SYS_RESET 0x00af 1580*4882a593Smuzhiyun /** Host Command id: SYS_CONFIGURE */ 1581*4882a593Smuzhiyun #define HOST_CMD_APCMD_SYS_CONFIGURE 0x00b0 1582*4882a593Smuzhiyun /** Host Command id: BSS_START */ 1583*4882a593Smuzhiyun #define HOST_CMD_APCMD_BSS_START 0x00b1 1584*4882a593Smuzhiyun /** Host Command id: BSS_STOP */ 1585*4882a593Smuzhiyun #define HOST_CMD_APCMD_BSS_STOP 0x00b2 1586*4882a593Smuzhiyun /** Host Command id: sta_list */ 1587*4882a593Smuzhiyun #define HOST_CMD_APCMD_STA_LIST 0x00b3 1588*4882a593Smuzhiyun /** Host Command id: STA_DEAUTH */ 1589*4882a593Smuzhiyun #define HOST_CMD_APCMD_STA_DEAUTH 0x00b5 1590*4882a593Smuzhiyun 1591*4882a593Smuzhiyun /** Host Command id: REPORT_MIC */ 1592*4882a593Smuzhiyun #define HOST_CMD_APCMD_REPORT_MIC 0x00ee 1593*4882a593Smuzhiyun /** Host Command id: UAP_OPER_CTRL */ 1594*4882a593Smuzhiyun #define HOST_CMD_APCMD_OPER_CTRL 0x0233 1595*4882a593Smuzhiyun #endif /* UAP_SUPPORT */ 1596*4882a593Smuzhiyun 1597*4882a593Smuzhiyun /** Host Command id: PMIC CONFIGURE*/ 1598*4882a593Smuzhiyun #define HOST_CMD_PMIC_CONFIGURE 0x23E 1599*4882a593Smuzhiyun 1600*4882a593Smuzhiyun /** Host Command ID: 802.11 Network Monitor */ 1601*4882a593Smuzhiyun #define HostCmd_CMD_802_11_NET_MONITOR 0x0102 1602*4882a593Smuzhiyun 1603*4882a593Smuzhiyun /** Host Command ID: Tx data pause */ 1604*4882a593Smuzhiyun #define HostCmd_CMD_CFG_TX_DATA_PAUSE 0x0103 1605*4882a593Smuzhiyun 1606*4882a593Smuzhiyun #ifdef WIFI_DIRECT_SUPPORT 1607*4882a593Smuzhiyun /** Host Command ID: P2P PARAMS CONFIG */ 1608*4882a593Smuzhiyun #define HOST_CMD_P2P_PARAMS_CONFIG 0x00ea 1609*4882a593Smuzhiyun /** Host Command ID: WIFI_DIRECT_MODE_CONFIG */ 1610*4882a593Smuzhiyun #define HOST_CMD_WIFI_DIRECT_MODE_CONFIG 0x00eb 1611*4882a593Smuzhiyun #endif 1612*4882a593Smuzhiyun 1613*4882a593Smuzhiyun /** Host Command ID: GPIO TSF LATCH */ 1614*4882a593Smuzhiyun #define HOST_CMD_GPIO_TSF_LATCH_PARAM_CONFIG 0x0278 1615*4882a593Smuzhiyun /** Host Command ID: Remain On Channel */ 1616*4882a593Smuzhiyun #define HostCmd_CMD_802_11_REMAIN_ON_CHANNEL 0x010d 1617*4882a593Smuzhiyun 1618*4882a593Smuzhiyun #define HostCmd_CMD_COALESCE_CFG 0x010a 1619*4882a593Smuzhiyun 1620*4882a593Smuzhiyun /** Host Command ID: GTK REKEY OFFLOAD CFG */ 1621*4882a593Smuzhiyun #define HostCmd_CMD_GTK_REKEY_OFFLOAD_CFG 0x010f 1622*4882a593Smuzhiyun 1623*4882a593Smuzhiyun /** Host Command ID : OTP user data */ 1624*4882a593Smuzhiyun #define HostCmd_CMD_OTP_READ_USER_DATA 0x0114 1625*4882a593Smuzhiyun 1626*4882a593Smuzhiyun /** Host Command ID: fw auto reconnect */ 1627*4882a593Smuzhiyun #define HostCmd_CMD_FW_AUTO_RECONNECT 0x0115 1628*4882a593Smuzhiyun 1629*4882a593Smuzhiyun /** Host Command ID: HS wakeup reason */ 1630*4882a593Smuzhiyun #define HostCmd_CMD_HS_WAKEUP_REASON 0x0116 1631*4882a593Smuzhiyun 1632*4882a593Smuzhiyun /** Host Command ID: reject addba request */ 1633*4882a593Smuzhiyun #define HostCmd_CMD_REJECT_ADDBA_REQ 0x0119 1634*4882a593Smuzhiyun 1635*4882a593Smuzhiyun #define HostCmd_CMD_FW_DUMP_EVENT 0x0125 1636*4882a593Smuzhiyun 1637*4882a593Smuzhiyun #define HostCMD_CONFIG_LOW_POWER_MODE 0x0128 1638*4882a593Smuzhiyun 1639*4882a593Smuzhiyun /** Host Command ID : Target device access */ 1640*4882a593Smuzhiyun #define HostCmd_CMD_TARGET_ACCESS 0x012a 1641*4882a593Smuzhiyun 1642*4882a593Smuzhiyun /** Host Command ID: BCA device access */ 1643*4882a593Smuzhiyun #define HostCmd_CMD_BCA_REG_ACCESS 0x0272 1644*4882a593Smuzhiyun /** Host Command ID: register device access */ 1645*4882a593Smuzhiyun #define HostCmd_CMD_REG_ACCESS 0x027C 1646*4882a593Smuzhiyun 1647*4882a593Smuzhiyun /** Host Command ID: DFS repeater mode */ 1648*4882a593Smuzhiyun #define HostCmd_DFS_REPEATER_MODE 0x012b 1649*4882a593Smuzhiyun 1650*4882a593Smuzhiyun /** Host Command ID: ACS scan */ 1651*4882a593Smuzhiyun #define HostCMD_APCMD_ACS_SCAN 0x0224 1652*4882a593Smuzhiyun 1653*4882a593Smuzhiyun /** Host Command ID: Get sensor temp*/ 1654*4882a593Smuzhiyun #define HostCmd_DS_GET_SENSOR_TEMP 0x0227 1655*4882a593Smuzhiyun 1656*4882a593Smuzhiyun /** Host Command ID : Configure ADHOC_OVER_IP parameters */ 1657*4882a593Smuzhiyun #define HostCmd_CMD_WMM_PARAM_CONFIG 0x023a 1658*4882a593Smuzhiyun 1659*4882a593Smuzhiyun #define HostCmd_CMD_IPV6_RA_OFFLOAD_CFG 0x0238 1660*4882a593Smuzhiyun 1661*4882a593Smuzhiyun #ifdef STA_SUPPORT 1662*4882a593Smuzhiyun /** Host Command ID : set/get sta configure */ 1663*4882a593Smuzhiyun #define HostCmd_CMD_STA_CONFIGURE 0x023f 1664*4882a593Smuzhiyun #endif 1665*4882a593Smuzhiyun 1666*4882a593Smuzhiyun /** Host Command ID : GPIO independent reset configure */ 1667*4882a593Smuzhiyun #define HostCmd_CMD_INDEPENDENT_RESET_CFG 0x0243 1668*4882a593Smuzhiyun 1669*4882a593Smuzhiyun #if defined(PCIE9098) || defined(SD9098) || defined(USB9098) || \ 1670*4882a593Smuzhiyun defined(PCIE9097) || defined(USB9097) || defined(SDNW62X) || \ 1671*4882a593Smuzhiyun defined(PCIENW62X) || defined(USBNW62X) || defined(SD9097) 1672*4882a593Smuzhiyun /* TLV type: reg type */ 1673*4882a593Smuzhiyun #define TLV_TYPE_REG_ACCESS_CTRL (PROPRIETARY_TLV_BASE_ID + 0x13C) /* 0x023c*/ 1674*4882a593Smuzhiyun /** MrvlIEtypes_Reg_type_t*/ 1675*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Reg_type_t { 1676*4882a593Smuzhiyun /** Header */ 1677*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 1678*4882a593Smuzhiyun /** type: 0x81/0x82/0x83 */ 1679*4882a593Smuzhiyun t_u8 type; 1680*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Reg_type_t; 1681*4882a593Smuzhiyun #endif 1682*4882a593Smuzhiyun /** use to query chan region cfg setting in firmware */ 1683*4882a593Smuzhiyun #define HostCmd_CMD_CHAN_REGION_CFG 0x0242 1684*4882a593Smuzhiyun /** used in hostcmd to download region power cfg setting to firmware */ 1685*4882a593Smuzhiyun #define HostCmd_CMD_REGION_POWER_CFG 0x0249 1686*4882a593Smuzhiyun 1687*4882a593Smuzhiyun /* mod_grp */ 1688*4882a593Smuzhiyun typedef enum _mod_grp { 1689*4882a593Smuzhiyun MOD_CCK, // 0 1690*4882a593Smuzhiyun MOD_OFDM_PSK, // 1 1691*4882a593Smuzhiyun MOD_OFDM_QAM16, // 2 1692*4882a593Smuzhiyun MOD_OFDM_QAM64, // 3 1693*4882a593Smuzhiyun MOD_HT_20_PSK, // 4 1694*4882a593Smuzhiyun MOD_HT_20_QAM16, // 5 1695*4882a593Smuzhiyun MOD_HT_20_QAM64, // 6 1696*4882a593Smuzhiyun MOD_HT_40_PSK, // 7 1697*4882a593Smuzhiyun MOD_HT_40_QAM16, // 8 1698*4882a593Smuzhiyun MOD_HT_40_QAM64, // 9 1699*4882a593Smuzhiyun #ifdef STREAM_2x2 1700*4882a593Smuzhiyun MOD_HT2_20_PSK, // 10 1701*4882a593Smuzhiyun MOD_HT2_20_QAM16, // 11 1702*4882a593Smuzhiyun MOD_HT2_20_QAM64, // 12 1703*4882a593Smuzhiyun MOD_HT2_40_PSK, // 13 1704*4882a593Smuzhiyun MOD_HT2_40_QAM16, // 14 1705*4882a593Smuzhiyun MOD_HT2_40_QAM64, // 15 1706*4882a593Smuzhiyun #endif 1707*4882a593Smuzhiyun 1708*4882a593Smuzhiyun MOD_VHT_20_QAM256, // 16 1709*4882a593Smuzhiyun MOD_VHT_40_QAM256, // 17 1710*4882a593Smuzhiyun MOD_VHT_80_PSK, // 18 1711*4882a593Smuzhiyun MOD_VHT_80_QAM16, // 19 1712*4882a593Smuzhiyun MOD_VHT_80_QAM64, // 20 1713*4882a593Smuzhiyun MOD_VHT_80_QAM256, // 21 1714*4882a593Smuzhiyun #ifdef STREAM_2x2 1715*4882a593Smuzhiyun MOD_VHT2_20_QAM256, // 22 1716*4882a593Smuzhiyun MOD_VHT2_40_QAM256, // 23 1717*4882a593Smuzhiyun MOD_VHT2_80_PSK, // 24 1718*4882a593Smuzhiyun MOD_VHT2_80_QAM16, // 25 1719*4882a593Smuzhiyun MOD_VHT2_80_QAM64, // 26 1720*4882a593Smuzhiyun MOD_VHT2_80_QAM256, // 27 1721*4882a593Smuzhiyun #endif 1722*4882a593Smuzhiyun } mod_grp; 1723*4882a593Smuzhiyun 1724*4882a593Smuzhiyun typedef MLAN_PACK_START struct _power_table_attr { 1725*4882a593Smuzhiyun t_u8 rows_2g; 1726*4882a593Smuzhiyun t_u8 cols_2g; 1727*4882a593Smuzhiyun t_u8 rows_5g; 1728*4882a593Smuzhiyun t_u8 cols_5g; 1729*4882a593Smuzhiyun } MLAN_PACK_END power_table_attr_t; 1730*4882a593Smuzhiyun 1731*4882a593Smuzhiyun #define FW_CFP_TABLE_MAX_ROWS_BG 14 1732*4882a593Smuzhiyun #define FW_CFP_TABLE_MAX_COLS_BG 17 1733*4882a593Smuzhiyun 1734*4882a593Smuzhiyun #define FW_CFP_TABLE_MAX_ROWS_A 39 1735*4882a593Smuzhiyun #define FW_CFP_TABLE_MAX_COLS_A 29 1736*4882a593Smuzhiyun 1737*4882a593Smuzhiyun #define HostCmd_CMD_DYN_BW 0x0252 1738*4882a593Smuzhiyun 1739*4882a593Smuzhiyun #define HostCmd_CMD_BOOT_SLEEP 0x0258 1740*4882a593Smuzhiyun 1741*4882a593Smuzhiyun #define HostCmd_CMD_RX_ABORT_CFG 0x0261 1742*4882a593Smuzhiyun #define HostCmd_CMD_RX_ABORT_CFG_EXT 0x0262 1743*4882a593Smuzhiyun #define HostCmd_CMD_TX_AMPDU_PROT_MODE 0x0263 1744*4882a593Smuzhiyun #define HostCmd_CMD_RATE_ADAPT_CFG 0x0264 1745*4882a593Smuzhiyun #define HostCmd_CMD_CCK_DESENSE_CFG 0x0265 1746*4882a593Smuzhiyun 1747*4882a593Smuzhiyun #define HostCmd_CMD_VDLL 0x0240 1748*4882a593Smuzhiyun #if defined(PCIE) 1749*4882a593Smuzhiyun #define HostCmd_CMD_SSU 0x0259 1750*4882a593Smuzhiyun #endif 1751*4882a593Smuzhiyun #define HostCmd_CMD_CSI 0x025b 1752*4882a593Smuzhiyun #define CSI_CMD_ENABLE 0x0001 1753*4882a593Smuzhiyun #define CSI_CMD_DISABLE 0x0002 1754*4882a593Smuzhiyun 1755*4882a593Smuzhiyun #define HostCmd_CMD_DMCS_CONFIG 0x0260 1756*4882a593Smuzhiyun 1757*4882a593Smuzhiyun /** Host Command ID: 11AX config */ 1758*4882a593Smuzhiyun #define HostCmd_CMD_11AX_CFG 0x0266 1759*4882a593Smuzhiyun /** Host Command ID: 11AX command */ 1760*4882a593Smuzhiyun #define HostCmd_CMD_11AX_CMD 0x026d 1761*4882a593Smuzhiyun /** Host Command ID: Range ext command */ 1762*4882a593Smuzhiyun #define HostCmd_CMD_RANGE_EXT 0x0274 1763*4882a593Smuzhiyun /** Host Command ID: TWT cfg command */ 1764*4882a593Smuzhiyun #define HostCmd_CMD_TWT_CFG 0x0270 1765*4882a593Smuzhiyun 1766*4882a593Smuzhiyun #define HostCmd_CMD_LOW_POWER_MODE_CFG 0x026e 1767*4882a593Smuzhiyun #define HostCmd_CMD_UAP_BEACON_STUCK_CFG 0x0271 1768*4882a593Smuzhiyun #define HostCmd_CMD_ARB_CONFIG 0x0273 1769*4882a593Smuzhiyun #define HostCmd_CMD_DOT11MC_UNASSOC_FTM_CFG 0x0275 1770*4882a593Smuzhiyun #define HostCmd_CMD_HAL_PHY_CFG 0x0276 1771*4882a593Smuzhiyun 1772*4882a593Smuzhiyun /** Host Command ID : IPS Config */ 1773*4882a593Smuzhiyun #define HostCmd_CMD_IPS_CONFIG 0x0279 1774*4882a593Smuzhiyun 1775*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 1776*4882a593Smuzhiyun t_u32 enable; 1777*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_IPS_CONFIG; 1778*4882a593Smuzhiyun 1779*4882a593Smuzhiyun /** Enhanced PS modes */ 1780*4882a593Smuzhiyun typedef enum _ENH_PS_MODES { 1781*4882a593Smuzhiyun GET_PS = 0, 1782*4882a593Smuzhiyun SLEEP_CONFIRM = 5, 1783*4882a593Smuzhiyun DIS_AUTO_PS = 0xfe, 1784*4882a593Smuzhiyun EN_AUTO_PS = 0xff, 1785*4882a593Smuzhiyun } ENH_PS_MODES; 1786*4882a593Smuzhiyun 1787*4882a593Smuzhiyun /** Command RET code, MSB is set to 1 */ 1788*4882a593Smuzhiyun #define HostCmd_RET_BIT 0x8000 1789*4882a593Smuzhiyun 1790*4882a593Smuzhiyun /** General purpose action : Get */ 1791*4882a593Smuzhiyun #define HostCmd_ACT_GEN_GET 0x0000 1792*4882a593Smuzhiyun /** General purpose action : Set */ 1793*4882a593Smuzhiyun #define HostCmd_ACT_GEN_SET 0x0001 1794*4882a593Smuzhiyun /** General purpose action : Set Default */ 1795*4882a593Smuzhiyun #define HostCmd_ACT_GEN_SET_DEFAULT 0x0002 1796*4882a593Smuzhiyun /** General purpose action : Get_Current */ 1797*4882a593Smuzhiyun #define HostCmd_ACT_GEN_GET_CURRENT 0x0003 1798*4882a593Smuzhiyun /** General purpose action : Remove */ 1799*4882a593Smuzhiyun #define HostCmd_ACT_GEN_REMOVE 0x0004 1800*4882a593Smuzhiyun /** General purpose action : Reset */ 1801*4882a593Smuzhiyun #define HostCmd_ACT_GEN_RESET 0x0005 1802*4882a593Smuzhiyun 1803*4882a593Smuzhiyun /** Host command action : Set Rx */ 1804*4882a593Smuzhiyun #define HostCmd_ACT_SET_RX 0x0001 1805*4882a593Smuzhiyun /** Host command action : Set Tx */ 1806*4882a593Smuzhiyun #define HostCmd_ACT_SET_TX 0x0002 1807*4882a593Smuzhiyun /** Host command action : Set both Rx and Tx */ 1808*4882a593Smuzhiyun #define HostCmd_ACT_SET_BOTH 0x0003 1809*4882a593Smuzhiyun /** Host command action : Get Rx */ 1810*4882a593Smuzhiyun #define HostCmd_ACT_GET_RX 0x0004 1811*4882a593Smuzhiyun /** Host command action : Get Tx */ 1812*4882a593Smuzhiyun #define HostCmd_ACT_GET_TX 0x0008 1813*4882a593Smuzhiyun /** Host command action : Get both Rx and Tx */ 1814*4882a593Smuzhiyun #define HostCmd_ACT_GET_BOTH 0x000c 1815*4882a593Smuzhiyun 1816*4882a593Smuzhiyun /** General Result Code*/ 1817*4882a593Smuzhiyun /** General result code OK */ 1818*4882a593Smuzhiyun #define HostCmd_RESULT_OK 0x0000 1819*4882a593Smuzhiyun /** Genenral error */ 1820*4882a593Smuzhiyun #define HostCmd_RESULT_ERROR 0x0001 1821*4882a593Smuzhiyun /** Command is not valid */ 1822*4882a593Smuzhiyun #define HostCmd_RESULT_NOT_SUPPORT 0x0002 1823*4882a593Smuzhiyun /** Command is pending */ 1824*4882a593Smuzhiyun #define HostCmd_RESULT_PENDING 0x0003 1825*4882a593Smuzhiyun /** System is busy (command ignored) */ 1826*4882a593Smuzhiyun #define HostCmd_RESULT_BUSY 0x0004 1827*4882a593Smuzhiyun /** Data buffer is not big enough */ 1828*4882a593Smuzhiyun #define HostCmd_RESULT_PARTIAL_DATA 0x0005 1829*4882a593Smuzhiyun 1830*4882a593Smuzhiyun /* Define action or option for HostCmd_CMD_MAC_CONTROL */ 1831*4882a593Smuzhiyun /** MAC action : Rx on */ 1832*4882a593Smuzhiyun #define HostCmd_ACT_MAC_RX_ON 0x0001 1833*4882a593Smuzhiyun /** MAC action : Tx on */ 1834*4882a593Smuzhiyun #define HostCmd_ACT_MAC_TX_ON 0x0002 1835*4882a593Smuzhiyun /** MAC action : WEP enable */ 1836*4882a593Smuzhiyun #define HostCmd_ACT_MAC_WEP_ENABLE 0x0008 1837*4882a593Smuzhiyun /** MAC action : EthernetII enable */ 1838*4882a593Smuzhiyun #define HostCmd_ACT_MAC_ETHERNETII_ENABLE 0x0010 1839*4882a593Smuzhiyun /** MAC action : Promiscous mode enable */ 1840*4882a593Smuzhiyun #define HostCmd_ACT_MAC_PROMISCUOUS_ENABLE 0x0080 1841*4882a593Smuzhiyun /** MAC action : All multicast enable */ 1842*4882a593Smuzhiyun #define HostCmd_ACT_MAC_ALL_MULTICAST_ENABLE 0x0100 1843*4882a593Smuzhiyun /** MAC action : RTS/CTS enable */ 1844*4882a593Smuzhiyun #define HostCmd_ACT_MAC_RTS_CTS_ENABLE 0x0200 1845*4882a593Smuzhiyun /** MAC action : Strict protection enable */ 1846*4882a593Smuzhiyun #define HostCmd_ACT_MAC_STRICT_PROTECTION_ENABLE 0x0400 1847*4882a593Smuzhiyun /** MAC action : Force 11n protection disable */ 1848*4882a593Smuzhiyun #define HostCmd_ACT_MAC_FORCE_11N_PROTECTION_OFF 0x0800 1849*4882a593Smuzhiyun /** MAC action : Ad-Hoc G protection on */ 1850*4882a593Smuzhiyun #define HostCmd_ACT_MAC_ADHOC_G_PROTECTION_ON 0x2000 1851*4882a593Smuzhiyun /** MAC action : Static-Dynamic BW enable */ 1852*4882a593Smuzhiyun #define HostCmd_ACT_MAC_STATIC_DYNAMIC_BW_ENABLE MBIT(16) 1853*4882a593Smuzhiyun /** MAC action : Dynamic BW */ 1854*4882a593Smuzhiyun #define HostCmd_ACT_MAC_DYNAMIC_BW MBIT(17) 1855*4882a593Smuzhiyun 1856*4882a593Smuzhiyun /* Define action or option for HostCmd_CMD_802_11_SCAN */ 1857*4882a593Smuzhiyun /** Scan type : BSS */ 1858*4882a593Smuzhiyun #define HostCmd_BSS_MODE_BSS 0x0001 1859*4882a593Smuzhiyun /** Scan type : IBSS */ 1860*4882a593Smuzhiyun #define HostCmd_BSS_MODE_IBSS 0x0002 1861*4882a593Smuzhiyun /** Scan type : Any */ 1862*4882a593Smuzhiyun #define HostCmd_BSS_MODE_ANY 0x0003 1863*4882a593Smuzhiyun 1864*4882a593Smuzhiyun /** Define bitmap conditions for HOST_SLEEP_CFG : GPIO FF */ 1865*4882a593Smuzhiyun #define HOST_SLEEP_CFG_GPIO_FF 0xff 1866*4882a593Smuzhiyun /** Define bitmap conditions for HOST_SLEEP_CFG : GAP FF */ 1867*4882a593Smuzhiyun #define HOST_SLEEP_CFG_GAP_FF 0xff 1868*4882a593Smuzhiyun 1869*4882a593Smuzhiyun /** Buffer Constants */ 1870*4882a593Smuzhiyun /** Number of command buffers */ 1871*4882a593Smuzhiyun #define MRVDRV_NUM_OF_CMD_BUFFER 40 1872*4882a593Smuzhiyun /** Maximum number of BSS Descriptors */ 1873*4882a593Smuzhiyun #define MRVDRV_MAX_BSSID_LIST 200 1874*4882a593Smuzhiyun 1875*4882a593Smuzhiyun /** Host command flag in command */ 1876*4882a593Smuzhiyun #define CMD_F_HOSTCMD (1 << 0) 1877*4882a593Smuzhiyun /** command cancel flag in command */ 1878*4882a593Smuzhiyun #define CMD_F_CANCELED (1 << 1) 1879*4882a593Smuzhiyun /** scan command flag */ 1880*4882a593Smuzhiyun #define CMD_F_SCAN (1 << 2) 1881*4882a593Smuzhiyun 1882*4882a593Smuzhiyun /** Host Command ID bit mask (bit 11:0) */ 1883*4882a593Smuzhiyun #define HostCmd_CMD_ID_MASK 0x0fff 1884*4882a593Smuzhiyun 1885*4882a593Smuzhiyun /** Host Command Sequence number mask (bit 7:0) */ 1886*4882a593Smuzhiyun #define HostCmd_SEQ_NUM_MASK 0x00ff 1887*4882a593Smuzhiyun 1888*4882a593Smuzhiyun /** Host Command BSS number mask (bit 11:8) */ 1889*4882a593Smuzhiyun #define HostCmd_BSS_NUM_MASK 0x0f00 1890*4882a593Smuzhiyun 1891*4882a593Smuzhiyun /** Host Command BSS type mask (bit 15:12) */ 1892*4882a593Smuzhiyun #define HostCmd_BSS_TYPE_MASK 0xf000 1893*4882a593Smuzhiyun 1894*4882a593Smuzhiyun /** Set BSS information to Host Command */ 1895*4882a593Smuzhiyun #define HostCmd_SET_SEQ_NO_BSS_INFO(seq, num, type) \ 1896*4882a593Smuzhiyun ((((seq)&0x00ff) | (((num)&0x000f) << 8)) | (((type)&0x000f) << 12)) 1897*4882a593Smuzhiyun 1898*4882a593Smuzhiyun /** Get Sequence Number from Host Command (bit 7:0) */ 1899*4882a593Smuzhiyun #define HostCmd_GET_SEQ_NO(seq) ((seq)&HostCmd_SEQ_NUM_MASK) 1900*4882a593Smuzhiyun 1901*4882a593Smuzhiyun /** Get BSS number from Host Command (bit 11:8) */ 1902*4882a593Smuzhiyun #define HostCmd_GET_BSS_NO(seq) (((seq)&HostCmd_BSS_NUM_MASK) >> 8) 1903*4882a593Smuzhiyun 1904*4882a593Smuzhiyun /** Get BSS type from Host Command (bit 15:12) */ 1905*4882a593Smuzhiyun #define HostCmd_GET_BSS_TYPE(seq) (((seq)&HostCmd_BSS_TYPE_MASK) >> 12) 1906*4882a593Smuzhiyun 1907*4882a593Smuzhiyun /* EVENT ID*/ 1908*4882a593Smuzhiyun /** Card Event definition : Dummy host wakeup signal */ 1909*4882a593Smuzhiyun #define EVENT_DUMMY_HOST_WAKEUP_SIGNAL 0x00000001 1910*4882a593Smuzhiyun /** Card Event definition : Link lost */ 1911*4882a593Smuzhiyun #define EVENT_LINK_LOST 0x00000003 1912*4882a593Smuzhiyun /** Card Event definition : Link sensed */ 1913*4882a593Smuzhiyun #define EVENT_LINK_SENSED 0x00000004 1914*4882a593Smuzhiyun /** Card Event definition : MIB changed */ 1915*4882a593Smuzhiyun #define EVENT_MIB_CHANGED 0x00000006 1916*4882a593Smuzhiyun /** Card Event definition : Init done */ 1917*4882a593Smuzhiyun #define EVENT_INIT_DONE 0x00000007 1918*4882a593Smuzhiyun /** Card Event definition : Deauthenticated */ 1919*4882a593Smuzhiyun #define EVENT_DEAUTHENTICATED 0x00000008 1920*4882a593Smuzhiyun /** Card Event definition : Disassociated */ 1921*4882a593Smuzhiyun #define EVENT_DISASSOCIATED 0x00000009 1922*4882a593Smuzhiyun /** Card Event definition : Power save awake */ 1923*4882a593Smuzhiyun #define EVENT_PS_AWAKE 0x0000000a 1924*4882a593Smuzhiyun /** Card Event definition : Power save sleep */ 1925*4882a593Smuzhiyun #define EVENT_PS_SLEEP 0x0000000b 1926*4882a593Smuzhiyun /** Card Event definition : MIC error multicast */ 1927*4882a593Smuzhiyun #define EVENT_MIC_ERR_MULTICAST 0x0000000d 1928*4882a593Smuzhiyun /** Card Event definition : MIC error unicast */ 1929*4882a593Smuzhiyun #define EVENT_MIC_ERR_UNICAST 0x0000000e 1930*4882a593Smuzhiyun 1931*4882a593Smuzhiyun /** Card Event definition : Ad-Hoc BCN lost */ 1932*4882a593Smuzhiyun #define EVENT_ADHOC_BCN_LOST 0x00000011 1933*4882a593Smuzhiyun 1934*4882a593Smuzhiyun /** Card Event definition : Stop Tx */ 1935*4882a593Smuzhiyun #define EVENT_STOP_TX 0x00000013 1936*4882a593Smuzhiyun /** Card Event definition : Start Tx */ 1937*4882a593Smuzhiyun #define EVENT_START_TX 0x00000014 1938*4882a593Smuzhiyun /** Card Event definition : Channel switch */ 1939*4882a593Smuzhiyun #define EVENT_CHANNEL_SWITCH 0x00000015 1940*4882a593Smuzhiyun 1941*4882a593Smuzhiyun /** Card Event definition : MEAS report ready */ 1942*4882a593Smuzhiyun #define EVENT_MEAS_REPORT_RDY 0x00000016 1943*4882a593Smuzhiyun 1944*4882a593Smuzhiyun /** Card Event definition : WMM status change */ 1945*4882a593Smuzhiyun #define EVENT_WMM_STATUS_CHANGE 0x00000017 1946*4882a593Smuzhiyun 1947*4882a593Smuzhiyun /** Card Event definition : BG scan report */ 1948*4882a593Smuzhiyun #define EVENT_BG_SCAN_REPORT 0x00000018 1949*4882a593Smuzhiyun /** Card Event definition : BG scan stopped */ 1950*4882a593Smuzhiyun #define EVENT_BG_SCAN_STOPPED 0x00000065 1951*4882a593Smuzhiyun 1952*4882a593Smuzhiyun /** Card Event definition : Beacon RSSI low */ 1953*4882a593Smuzhiyun #define EVENT_RSSI_LOW 0x00000019 1954*4882a593Smuzhiyun /** Card Event definition : Beacon SNR low */ 1955*4882a593Smuzhiyun #define EVENT_SNR_LOW 0x0000001a 1956*4882a593Smuzhiyun /** Card Event definition : Maximum fail */ 1957*4882a593Smuzhiyun #define EVENT_MAX_FAIL 0x0000001b 1958*4882a593Smuzhiyun /** Card Event definition : Beacon RSSI high */ 1959*4882a593Smuzhiyun #define EVENT_RSSI_HIGH 0x0000001c 1960*4882a593Smuzhiyun /** Card Event definition : Beacon SNR high */ 1961*4882a593Smuzhiyun #define EVENT_SNR_HIGH 0x0000001d 1962*4882a593Smuzhiyun 1963*4882a593Smuzhiyun /** Card Event definition : IBSS coalsced */ 1964*4882a593Smuzhiyun #define EVENT_IBSS_COALESCED 0x0000001e 1965*4882a593Smuzhiyun 1966*4882a593Smuzhiyun /** Event definition : IBSS station connected */ 1967*4882a593Smuzhiyun #define EVENT_IBSS_STATION_CONNECT 0x00000020 1968*4882a593Smuzhiyun /** Event definition : IBSS station dis-connected */ 1969*4882a593Smuzhiyun #define EVENT_IBSS_STATION_DISCONNECT 0x00000021 1970*4882a593Smuzhiyun 1971*4882a593Smuzhiyun /** Card Event definition : Data RSSI low */ 1972*4882a593Smuzhiyun #define EVENT_DATA_RSSI_LOW 0x00000024 1973*4882a593Smuzhiyun /** Card Event definition : Data SNR low */ 1974*4882a593Smuzhiyun #define EVENT_DATA_SNR_LOW 0x00000025 1975*4882a593Smuzhiyun /** Card Event definition : Data RSSI high */ 1976*4882a593Smuzhiyun #define EVENT_DATA_RSSI_HIGH 0x00000026 1977*4882a593Smuzhiyun /** Card Event definition : Data SNR high */ 1978*4882a593Smuzhiyun #define EVENT_DATA_SNR_HIGH 0x00000027 1979*4882a593Smuzhiyun 1980*4882a593Smuzhiyun /** Card Event definition : Link Quality */ 1981*4882a593Smuzhiyun #define EVENT_LINK_QUALITY 0x00000028 1982*4882a593Smuzhiyun 1983*4882a593Smuzhiyun /** Card Event definition : Port release event */ 1984*4882a593Smuzhiyun #define EVENT_PORT_RELEASE 0x0000002b 1985*4882a593Smuzhiyun 1986*4882a593Smuzhiyun #ifdef UAP_SUPPORT 1987*4882a593Smuzhiyun /** Event ID: STA deauth */ 1988*4882a593Smuzhiyun #define EVENT_MICRO_AP_STA_DEAUTH 0x0000002c 1989*4882a593Smuzhiyun /** Event ID: STA assoicated */ 1990*4882a593Smuzhiyun #define EVENT_MICRO_AP_STA_ASSOC 0x0000002d 1991*4882a593Smuzhiyun /** Event ID: BSS started */ 1992*4882a593Smuzhiyun #define EVENT_MICRO_AP_BSS_START 0x0000002e 1993*4882a593Smuzhiyun /** Event ID: BSS idle event */ 1994*4882a593Smuzhiyun #define EVENT_MICRO_AP_BSS_IDLE 0x00000043 1995*4882a593Smuzhiyun /** Event ID: BSS active event */ 1996*4882a593Smuzhiyun #define EVENT_MICRO_AP_BSS_ACTIVE 0x00000044 1997*4882a593Smuzhiyun 1998*4882a593Smuzhiyun /** Event ID: MIC countermeasures event */ 1999*4882a593Smuzhiyun #define EVENT_MICRO_AP_MIC_COUNTERMEASURES 0x0000004c 2000*4882a593Smuzhiyun #endif /* UAP_SUPPORT */ 2001*4882a593Smuzhiyun 2002*4882a593Smuzhiyun /** Card Event definition : Pre-Beacon Lost */ 2003*4882a593Smuzhiyun #define EVENT_PRE_BEACON_LOST 0x00000031 2004*4882a593Smuzhiyun 2005*4882a593Smuzhiyun #define EVENT_WATCHDOG_TMOUT 0x00000032 2006*4882a593Smuzhiyun 2007*4882a593Smuzhiyun /** Card Event definition : Add BA event */ 2008*4882a593Smuzhiyun #define EVENT_ADDBA 0x00000033 2009*4882a593Smuzhiyun /** Card Event definition : Del BA event */ 2010*4882a593Smuzhiyun #define EVENT_DELBA 0x00000034 2011*4882a593Smuzhiyun /** Card Event definition: BA stream timeout*/ 2012*4882a593Smuzhiyun #define EVENT_BA_STREAM_TIMEOUT 0x00000037 2013*4882a593Smuzhiyun 2014*4882a593Smuzhiyun /** Card Event definition : AMSDU aggr control */ 2015*4882a593Smuzhiyun #define EVENT_AMSDU_AGGR_CTRL 0x00000042 2016*4882a593Smuzhiyun 2017*4882a593Smuzhiyun /** Card Event definition: WEP ICV error */ 2018*4882a593Smuzhiyun #define EVENT_WEP_ICV_ERR 0x00000046 2019*4882a593Smuzhiyun 2020*4882a593Smuzhiyun /** Card Event definition : Host sleep enable */ 2021*4882a593Smuzhiyun #define EVENT_HS_ACT_REQ 0x00000047 2022*4882a593Smuzhiyun 2023*4882a593Smuzhiyun /** Card Event definition : BW changed */ 2024*4882a593Smuzhiyun #define EVENT_BW_CHANGE 0x00000048 2025*4882a593Smuzhiyun 2026*4882a593Smuzhiyun #ifdef WIFI_DIRECT_SUPPORT 2027*4882a593Smuzhiyun /** WIFIDIRECT generic event */ 2028*4882a593Smuzhiyun #define EVENT_WIFIDIRECT_GENERIC_EVENT 0x00000049 2029*4882a593Smuzhiyun /** WIFIDIRECT service discovery event */ 2030*4882a593Smuzhiyun #define EVENT_WIFIDIRECT_SERVICE_DISCOVERY 0x0000004a 2031*4882a593Smuzhiyun #endif 2032*4882a593Smuzhiyun /** Remain on Channel expired event */ 2033*4882a593Smuzhiyun #define EVENT_REMAIN_ON_CHANNEL_EXPIRED 0x0000005f 2034*4882a593Smuzhiyun 2035*4882a593Smuzhiyun /** TDLS generic event */ 2036*4882a593Smuzhiyun #define EVENT_TDLS_GENERIC_EVENT 0x00000052 2037*4882a593Smuzhiyun 2038*4882a593Smuzhiyun #define EVENT_MEF_HOST_WAKEUP 0x0000004f 2039*4882a593Smuzhiyun 2040*4882a593Smuzhiyun /** Card Event definition: Channel switch pending announcment */ 2041*4882a593Smuzhiyun #define EVENT_CHANNEL_SWITCH_ANN 0x00000050 2042*4882a593Smuzhiyun 2043*4882a593Smuzhiyun /** Event definition: Radar Detected by card */ 2044*4882a593Smuzhiyun #define EVENT_RADAR_DETECTED 0x00000053 2045*4882a593Smuzhiyun 2046*4882a593Smuzhiyun /** Event definition: Radar Detected by card */ 2047*4882a593Smuzhiyun #define EVENT_CHANNEL_REPORT_RDY 0x00000054 2048*4882a593Smuzhiyun 2049*4882a593Smuzhiyun /** Event definition: Scan results through event */ 2050*4882a593Smuzhiyun #define EVENT_EXT_SCAN_REPORT 0x00000058 2051*4882a593Smuzhiyun /** Enhance ext scan done event */ 2052*4882a593Smuzhiyun #define EVENT_EXT_SCAN_STATUS_REPORT 0x0000007f 2053*4882a593Smuzhiyun 2054*4882a593Smuzhiyun /** Event definition: RXBA_SYNC */ 2055*4882a593Smuzhiyun #define EVENT_RXBA_SYNC 0x00000059 2056*4882a593Smuzhiyun 2057*4882a593Smuzhiyun /** Event ID: TX data pause event */ 2058*4882a593Smuzhiyun #define EVENT_TX_DATA_PAUSE 0x00000055 2059*4882a593Smuzhiyun 2060*4882a593Smuzhiyun /** Event definition : FW debug information */ 2061*4882a593Smuzhiyun #define EVENT_FW_DEBUG_INFO 0x00000063 2062*4882a593Smuzhiyun 2063*4882a593Smuzhiyun /** Event ID: SAD Report */ 2064*4882a593Smuzhiyun #define EVENT_SAD_REPORT 0x00000066 2065*4882a593Smuzhiyun 2066*4882a593Smuzhiyun #define EVENT_FW_DUMP_INFO 0x00000073 2067*4882a593Smuzhiyun /** Event ID: Tx status */ 2068*4882a593Smuzhiyun #define EVENT_TX_STATUS_REPORT 0x00000074 2069*4882a593Smuzhiyun 2070*4882a593Smuzhiyun #define EVENT_BT_COEX_WLAN_PARA_CHANGE 0x00000076 2071*4882a593Smuzhiyun 2072*4882a593Smuzhiyun #define EVENT_VDLL_IND 0x00000081 2073*4882a593Smuzhiyun 2074*4882a593Smuzhiyun #define EVENT_ROAM_OFFLOAD 0x00000083 2075*4882a593Smuzhiyun 2076*4882a593Smuzhiyun #define EVENT_EXCEED_MAX_P2P_CONN 0x00000089 2077*4882a593Smuzhiyun 2078*4882a593Smuzhiyun #if defined(PCIE) 2079*4882a593Smuzhiyun #define EVENT_SSU_DUMP_DMA 0x0000008C 2080*4882a593Smuzhiyun #endif 2081*4882a593Smuzhiyun 2082*4882a593Smuzhiyun #define EVENT_CSI 0x0000008D 2083*4882a593Smuzhiyun #define EVENT_FW_HANG_REPORT 0x0000008F 2084*4882a593Smuzhiyun /** Card Event definition : RESET PN */ 2085*4882a593Smuzhiyun 2086*4882a593Smuzhiyun #define EVENT_ASSOC_REQ_IE 0x00000095 2087*4882a593Smuzhiyun 2088*4882a593Smuzhiyun #define CHAN_LOAD_EVENT 0x00000099 2089*4882a593Smuzhiyun 2090*4882a593Smuzhiyun /** Event ID mask */ 2091*4882a593Smuzhiyun #define EVENT_ID_MASK 0xffff 2092*4882a593Smuzhiyun 2093*4882a593Smuzhiyun /** BSS number mask */ 2094*4882a593Smuzhiyun #define BSS_NUM_MASK 0xf 2095*4882a593Smuzhiyun 2096*4882a593Smuzhiyun /** Get BSS number from event cause (bit 23:16) */ 2097*4882a593Smuzhiyun #define EVENT_GET_BSS_NUM(event_cause) (((event_cause) >> 16) & BSS_NUM_MASK) 2098*4882a593Smuzhiyun 2099*4882a593Smuzhiyun /** Get BSS type from event cause (bit 31:24) */ 2100*4882a593Smuzhiyun #define EVENT_GET_BSS_TYPE(event_cause) (((event_cause) >> 24) & 0x00ff) 2101*4882a593Smuzhiyun 2102*4882a593Smuzhiyun /** event type for tdls setup failure */ 2103*4882a593Smuzhiyun #define TDLS_EVENT_TYPE_SETUP_FAILURE 1 2104*4882a593Smuzhiyun /** event type for tdls setup request received */ 2105*4882a593Smuzhiyun #define TDLS_EVENT_TYPE_SETUP_REQ 2 2106*4882a593Smuzhiyun /** event type for tdls link torn down */ 2107*4882a593Smuzhiyun #define TDLS_EVENT_TYPE_LINK_TORN_DOWN 3 2108*4882a593Smuzhiyun /** event type for tdls link established */ 2109*4882a593Smuzhiyun #define TDLS_EVENT_TYPE_LINK_ESTABLISHED 4 2110*4882a593Smuzhiyun /** event type for tdls debug */ 2111*4882a593Smuzhiyun #define TDLS_EVENT_TYPE_DEBUG 5 2112*4882a593Smuzhiyun /** event type for tdls packet */ 2113*4882a593Smuzhiyun #define TDLS_EVENT_TYPE_PACKET 6 2114*4882a593Smuzhiyun /** event type for channel switch result */ 2115*4882a593Smuzhiyun #define TDLS_EVENT_TYPE_CHAN_SWITCH_RESULT 7 2116*4882a593Smuzhiyun /** event type for start channel switch */ 2117*4882a593Smuzhiyun #define TDLS_EVENT_TYPE_START_CHAN_SWITCH 8 2118*4882a593Smuzhiyun /** event type for stop channel switch */ 2119*4882a593Smuzhiyun #define TDLS_EVENT_TYPE_CHAN_SWITCH_STOPPED 9 2120*4882a593Smuzhiyun 2121*4882a593Smuzhiyun /** Packet received on direct link */ 2122*4882a593Smuzhiyun #define RXPD_FLAG_PKT_DIRECT_LINK MBIT(0) 2123*4882a593Smuzhiyun /** TDLS base channel */ 2124*4882a593Smuzhiyun #define TDLS_BASE_CHANNEL 0 2125*4882a593Smuzhiyun /** TDLS off channel */ 2126*4882a593Smuzhiyun #define TDLS_OFF_CHANNEL 1 2127*4882a593Smuzhiyun 2128*4882a593Smuzhiyun /** structure for channel switch result from TDLS FW */ 2129*4882a593Smuzhiyun typedef MLAN_PACK_START struct _chan_switch_result { 2130*4882a593Smuzhiyun /** current channel, 0 - base channel, 1 - off channel*/ 2131*4882a593Smuzhiyun t_u8 current_channel; 2132*4882a593Smuzhiyun /** channel switch status*/ 2133*4882a593Smuzhiyun t_u8 status; 2134*4882a593Smuzhiyun /** channel switch fauilure reason code*/ 2135*4882a593Smuzhiyun t_u8 reason; 2136*4882a593Smuzhiyun } MLAN_PACK_END chan_switch_result; 2137*4882a593Smuzhiyun 2138*4882a593Smuzhiyun typedef MLAN_PACK_START struct _ie_data { 2139*4882a593Smuzhiyun /** IE Length */ 2140*4882a593Smuzhiyun t_u16 ie_length; 2141*4882a593Smuzhiyun /** IE pointer */ 2142*4882a593Smuzhiyun t_u8 ie_ptr[1]; 2143*4882a593Smuzhiyun } MLAN_PACK_END tdls_ie_data; 2144*4882a593Smuzhiyun 2145*4882a593Smuzhiyun /** Event structure for generic events from TDLS FW */ 2146*4882a593Smuzhiyun typedef MLAN_PACK_START struct _Event_tdls_generic { 2147*4882a593Smuzhiyun /** Event Type */ 2148*4882a593Smuzhiyun t_u16 event_type; 2149*4882a593Smuzhiyun /** Peer mac address */ 2150*4882a593Smuzhiyun t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH]; 2151*4882a593Smuzhiyun union { 2152*4882a593Smuzhiyun /** channel switch result structure*/ 2153*4882a593Smuzhiyun chan_switch_result switch_result; 2154*4882a593Smuzhiyun /** channel switch stop reason*/ 2155*4882a593Smuzhiyun t_u8 cs_stop_reason; 2156*4882a593Smuzhiyun /** Reason code */ 2157*4882a593Smuzhiyun t_u16 reason_code; 2158*4882a593Smuzhiyun /** IE data */ 2159*4882a593Smuzhiyun tdls_ie_data ie_data; 2160*4882a593Smuzhiyun } u; 2161*4882a593Smuzhiyun } MLAN_PACK_END Event_tdls_generic; 2162*4882a593Smuzhiyun 2163*4882a593Smuzhiyun typedef enum _tdls_error_code_e { 2164*4882a593Smuzhiyun NO_ERROR = 0, 2165*4882a593Smuzhiyun INTERNAL_ERROR, 2166*4882a593Smuzhiyun MAX_TDLS_LINKS_EST, 2167*4882a593Smuzhiyun TDLS_LINK_EXISTS, 2168*4882a593Smuzhiyun TDLS_LINK_NONEXISTENT, 2169*4882a593Smuzhiyun TDLS_PEER_STA_UNREACHABLE = 25, 2170*4882a593Smuzhiyun } tdls_error_code_e; 2171*4882a593Smuzhiyun 2172*4882a593Smuzhiyun #define RXPD_FLAG_EXTRA_HEADER (1 << 1) 2173*4882a593Smuzhiyun 2174*4882a593Smuzhiyun /** Event_WEP_ICV_ERR structure */ 2175*4882a593Smuzhiyun typedef MLAN_PACK_START struct _Event_WEP_ICV_ERR { 2176*4882a593Smuzhiyun /** Reason code */ 2177*4882a593Smuzhiyun t_u16 reason_code; 2178*4882a593Smuzhiyun /** Source MAC address */ 2179*4882a593Smuzhiyun t_u8 src_mac_addr[MLAN_MAC_ADDR_LENGTH]; 2180*4882a593Smuzhiyun /** WEP decryption used key */ 2181*4882a593Smuzhiyun t_u8 wep_key_index; 2182*4882a593Smuzhiyun /** WEP key length */ 2183*4882a593Smuzhiyun t_u8 wep_key_length; 2184*4882a593Smuzhiyun /** WEP key */ 2185*4882a593Smuzhiyun t_u8 key[MAX_WEP_KEY_SIZE]; 2186*4882a593Smuzhiyun } MLAN_PACK_END Event_WEP_ICV_ERR; 2187*4882a593Smuzhiyun 2188*4882a593Smuzhiyun /** WLAN_802_11_FIXED_IEs */ 2189*4882a593Smuzhiyun typedef MLAN_PACK_START struct _WLAN_802_11_FIXED_IEs { 2190*4882a593Smuzhiyun /** Timestamp */ 2191*4882a593Smuzhiyun t_u8 time_stamp[8]; 2192*4882a593Smuzhiyun /** Beacon interval */ 2193*4882a593Smuzhiyun t_u16 beacon_interval; 2194*4882a593Smuzhiyun /** Capabilities*/ 2195*4882a593Smuzhiyun t_u16 capabilities; 2196*4882a593Smuzhiyun } MLAN_PACK_END WLAN_802_11_FIXED_IEs; 2197*4882a593Smuzhiyun 2198*4882a593Smuzhiyun /** WLAN_802_11_VARIABLE_IEs */ 2199*4882a593Smuzhiyun typedef MLAN_PACK_START struct _WLAN_802_11_VARIABLE_IEs { 2200*4882a593Smuzhiyun /** Element ID */ 2201*4882a593Smuzhiyun t_u8 element_id; 2202*4882a593Smuzhiyun /** Length */ 2203*4882a593Smuzhiyun t_u8 length; 2204*4882a593Smuzhiyun /** IE data */ 2205*4882a593Smuzhiyun t_u8 data[1]; 2206*4882a593Smuzhiyun } MLAN_PACK_END WLAN_802_11_VARIABLE_IEs; 2207*4882a593Smuzhiyun 2208*4882a593Smuzhiyun /** TLV related data structures*/ 2209*4882a593Smuzhiyun /*TDLS TIMEOUT VALUE (seconds)*/ 2210*4882a593Smuzhiyun #define TDLS_IDLE_TIMEOUT 60 2211*4882a593Smuzhiyun /** MrvlIEtypes_Data_t */ 2212*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_TDLS_Idle_Timeout_t { 2213*4882a593Smuzhiyun /** Header */ 2214*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2215*4882a593Smuzhiyun /** value */ 2216*4882a593Smuzhiyun t_u16 value; 2217*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_TDLS_Idle_Timeout_t; 2218*4882a593Smuzhiyun #if defined(STA_SUPPORT) 2219*4882a593Smuzhiyun /** Pairwise Cipher Suite length */ 2220*4882a593Smuzhiyun #define PAIRWISE_CIPHER_SUITE_LEN 4 2221*4882a593Smuzhiyun /** AKM Suite length */ 2222*4882a593Smuzhiyun #define AKM_SUITE_LEN 4 2223*4882a593Smuzhiyun /** MFPC bit in RSN capability */ 2224*4882a593Smuzhiyun #define MFPC_BIT 7 2225*4882a593Smuzhiyun /** MFPR bit in RSN capability */ 2226*4882a593Smuzhiyun #define MFPR_BIT 6 2227*4882a593Smuzhiyun #endif 2228*4882a593Smuzhiyun /** Bit mask for TxPD status field for null packet */ 2229*4882a593Smuzhiyun #define MRVDRV_TxPD_POWER_MGMT_NULL_PACKET 0x01 2230*4882a593Smuzhiyun /** Bit mask for TxPD status field for last packet */ 2231*4882a593Smuzhiyun #define MRVDRV_TxPD_POWER_MGMT_LAST_PACKET 0x08 2232*4882a593Smuzhiyun 2233*4882a593Smuzhiyun /** Bit mask for TxPD flags field for TDLS packet */ 2234*4882a593Smuzhiyun #define MRVDRV_TxPD_FLAGS_TDLS_PACKET MBIT(4) 2235*4882a593Smuzhiyun 2236*4882a593Smuzhiyun /** Bit mask for TxPD flags field for Tx status report */ 2237*4882a593Smuzhiyun #define MRVDRV_TxPD_FLAGS_TX_PACKET_STATUS MBIT(5) 2238*4882a593Smuzhiyun 2239*4882a593Smuzhiyun /** Packet type: 802.11 */ 2240*4882a593Smuzhiyun #define PKT_TYPE_802DOT11 0x05 2241*4882a593Smuzhiyun 2242*4882a593Smuzhiyun #define PKT_TYPE_MGMT_FRAME 0xE5 2243*4882a593Smuzhiyun /** Packet type: AMSDU */ 2244*4882a593Smuzhiyun #define PKT_TYPE_AMSDU 0xE6 2245*4882a593Smuzhiyun /** Packet type: BAR */ 2246*4882a593Smuzhiyun #define PKT_TYPE_BAR 0xE7 2247*4882a593Smuzhiyun 2248*4882a593Smuzhiyun /** Packet type: debugging */ 2249*4882a593Smuzhiyun #define PKT_TYPE_DEBUG 0xEF 2250*4882a593Smuzhiyun 2251*4882a593Smuzhiyun #define PKT_TYPE_802DOT11_MC_AGGR 11 2252*4882a593Smuzhiyun 2253*4882a593Smuzhiyun /** channel number at bit 5-13 */ 2254*4882a593Smuzhiyun #define RXPD_CHAN_MASK 0x3FE0 2255*4882a593Smuzhiyun /** Rate control mask 15-23 */ 2256*4882a593Smuzhiyun #define TXPD_RATE_MASK 0xff8000 2257*4882a593Smuzhiyun /** enable bw ctrl in TxPD */ 2258*4882a593Smuzhiyun #define TXPD_BW_ENABLE MBIT(20) 2259*4882a593Smuzhiyun /** enable tx power ctrl in TxPD */ 2260*4882a593Smuzhiyun #define TXPD_TXPW_ENABLE MBIT(7) 2261*4882a593Smuzhiyun /** sign of power */ 2262*4882a593Smuzhiyun #define TXPD_TXPW_NEGATIVE MBIT(6) 2263*4882a593Smuzhiyun /** Enable Rate ctrl in TxPD */ 2264*4882a593Smuzhiyun #define TXPD_TXRATE_ENABLE MBIT(15) 2265*4882a593Smuzhiyun /** enable retry limit in TxPD */ 2266*4882a593Smuzhiyun #define TXPD_RETRY_ENABLE MBIT(12) 2267*4882a593Smuzhiyun 2268*4882a593Smuzhiyun /** tx_control*/ 2269*4882a593Smuzhiyun #ifdef BIG_ENDIAN_SUPPORT 2270*4882a593Smuzhiyun typedef MLAN_PACK_START struct _tx_ctrl { 2271*4882a593Smuzhiyun /** reserved */ 2272*4882a593Smuzhiyun t_u32 reserved : 3; 2273*4882a593Smuzhiyun /** mc retry packet */ 2274*4882a593Smuzhiyun t_u32 mc_pkt_retry : 1; 2275*4882a593Smuzhiyun /** end of mc AMPDU */ 2276*4882a593Smuzhiyun t_u32 mc_ampdu_end : 1; 2277*4882a593Smuzhiyun /** start of mc AMPDU */ 2278*4882a593Smuzhiyun t_u32 mc_ampdu_start : 1; 2279*4882a593Smuzhiyun /** End of mc cycle */ 2280*4882a593Smuzhiyun t_u32 mc_cycle_end : 1; 2281*4882a593Smuzhiyun /** start of mc cycle */ 2282*4882a593Smuzhiyun t_u32 mc_cycle_start : 1; 2283*4882a593Smuzhiyun /** bw 0-20MHz, 1-40MHz */ 2284*4882a593Smuzhiyun t_u32 bw : 3; 2285*4882a593Smuzhiyun /** Rate used for transmission MCS0-7*/ 2286*4882a593Smuzhiyun t_u32 tx_rate : 5; 2287*4882a593Smuzhiyun /** Control the use of txRate. 0 - use FW setting, 1 - use the specified 2288*4882a593Smuzhiyun * txRate;*/ 2289*4882a593Smuzhiyun t_u32 host_txrate_ctrl : 1; 2290*4882a593Smuzhiyun /** 0/1 - use FW setting, 2 - ACK_IMMD, 3 - NO_ACK.*/ 2291*4882a593Smuzhiyun t_u32 ack_policy : 2; 2292*4882a593Smuzhiyun /** Control the use of retryLimit. 0 - use FW setting, 1 - use the 2293*4882a593Smuzhiyun * specified retryLimit.*/ 2294*4882a593Smuzhiyun t_u32 host_retry_ctrl : 1; 2295*4882a593Smuzhiyun /** retry limit */ 2296*4882a593Smuzhiyun t_u32 retry_limit : 4; 2297*4882a593Smuzhiyun /** Control the use of txPower. 0 - use FW power setting, 1 - use the 2298*4882a593Smuzhiyun * specified txPower.*/ 2299*4882a593Smuzhiyun t_u32 host_tx_powerctrl : 1; 2300*4882a593Smuzhiyun /** Sign of the txPower, 0 - positive_sign(+), 1 - negative_sign(-). */ 2301*4882a593Smuzhiyun t_u32 tx_power_sign : 1; 2302*4882a593Smuzhiyun /** Power used for transmission(in dBm); */ 2303*4882a593Smuzhiyun t_u32 tx_power : 6; 2304*4882a593Smuzhiyun } MLAN_PACK_END tx_ctrl; 2305*4882a593Smuzhiyun #else 2306*4882a593Smuzhiyun typedef MLAN_PACK_START struct _tx_ctrl { 2307*4882a593Smuzhiyun /** Power used for transmission(in dBm); */ 2308*4882a593Smuzhiyun t_u32 tx_power : 6; 2309*4882a593Smuzhiyun /** Sign of the txPower, 0 - positive_sign(+), 1 - negative_sign(-). */ 2310*4882a593Smuzhiyun t_u32 tx_power_sign : 1; 2311*4882a593Smuzhiyun /** Control the use of txPower. 0 - use FW power setting, 1 - use the 2312*4882a593Smuzhiyun * specified txPower.*/ 2313*4882a593Smuzhiyun t_u32 host_tx_powerctrl : 1; 2314*4882a593Smuzhiyun /** retry limit */ 2315*4882a593Smuzhiyun t_u32 retry_limit : 4; 2316*4882a593Smuzhiyun /** Control the use of retryLimit. 0 - use FW setting, 1 - use the 2317*4882a593Smuzhiyun * specified retryLimit.*/ 2318*4882a593Smuzhiyun t_u32 host_retry_ctrl : 1; 2319*4882a593Smuzhiyun /** 0/1 - use FW setting, 2 - ACK_IMMD, 3 - NO_ACK.*/ 2320*4882a593Smuzhiyun t_u32 ack_policy : 2; 2321*4882a593Smuzhiyun /** Control the use of txRate. 0 - use FW setting, 1 - use the specified 2322*4882a593Smuzhiyun * txRate;*/ 2323*4882a593Smuzhiyun t_u32 host_txrate_ctrl : 1; 2324*4882a593Smuzhiyun /** Rate used for transmission MCS0-7*/ 2325*4882a593Smuzhiyun t_u32 tx_rate : 5; 2326*4882a593Smuzhiyun /** bw 0-20MHz 1-40MHz*/ 2327*4882a593Smuzhiyun t_u32 bw : 3; 2328*4882a593Smuzhiyun /** start of mc cycle */ 2329*4882a593Smuzhiyun t_u32 mc_cycle_start : 1; 2330*4882a593Smuzhiyun /** End of mc cycle */ 2331*4882a593Smuzhiyun t_u32 mc_cycle_end : 1; 2332*4882a593Smuzhiyun /** start of mc AMPDU */ 2333*4882a593Smuzhiyun t_u32 mc_ampdu_start : 1; 2334*4882a593Smuzhiyun /** end of mc AMPDU */ 2335*4882a593Smuzhiyun t_u32 mc_ampdu_end : 1; 2336*4882a593Smuzhiyun /** mc retry packet */ 2337*4882a593Smuzhiyun t_u32 mc_pkt_retry : 1; 2338*4882a593Smuzhiyun /** reserved */ 2339*4882a593Smuzhiyun t_u32 reserved : 3; 2340*4882a593Smuzhiyun } MLAN_PACK_END tx_ctrl; 2341*4882a593Smuzhiyun #endif 2342*4882a593Smuzhiyun 2343*4882a593Smuzhiyun /** mc tx ctrl */ 2344*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mc_tx_ctrl { 2345*4882a593Smuzhiyun /** mc seq */ 2346*4882a593Smuzhiyun t_u16 mc_seq; 2347*4882a593Smuzhiyun /** abs_tsf_expirytime*/ 2348*4882a593Smuzhiyun t_u32 abs_tsf_expirytime; 2349*4882a593Smuzhiyun } MLAN_PACK_END mc_tx_ctrl; 2350*4882a593Smuzhiyun 2351*4882a593Smuzhiyun /** TxPD descriptor */ 2352*4882a593Smuzhiyun typedef MLAN_PACK_START struct _TxPD { 2353*4882a593Smuzhiyun /** BSS type */ 2354*4882a593Smuzhiyun t_u8 bss_type; 2355*4882a593Smuzhiyun /** BSS number */ 2356*4882a593Smuzhiyun t_u8 bss_num; 2357*4882a593Smuzhiyun /** Tx packet length */ 2358*4882a593Smuzhiyun t_u16 tx_pkt_length; 2359*4882a593Smuzhiyun /** Tx packet offset */ 2360*4882a593Smuzhiyun t_u16 tx_pkt_offset; 2361*4882a593Smuzhiyun /** Tx packet type */ 2362*4882a593Smuzhiyun t_u16 tx_pkt_type; 2363*4882a593Smuzhiyun /** Tx Control */ 2364*4882a593Smuzhiyun t_u32 tx_control; 2365*4882a593Smuzhiyun /** Pkt Priority */ 2366*4882a593Smuzhiyun t_u8 priority; 2367*4882a593Smuzhiyun /** Transmit Pkt Flags*/ 2368*4882a593Smuzhiyun t_u8 flags; 2369*4882a593Smuzhiyun /** Amount of time the packet has been queued 2370*4882a593Smuzhiyun * in the driver (units = 2ms)*/ 2371*4882a593Smuzhiyun t_u8 pkt_delay_2ms; 2372*4882a593Smuzhiyun /** reserved */ 2373*4882a593Smuzhiyun t_u8 reserved; 2374*4882a593Smuzhiyun /** Tx Control */ 2375*4882a593Smuzhiyun t_u32 tx_control_1; 2376*4882a593Smuzhiyun } MLAN_PACK_END TxPD, *PTxPD; 2377*4882a593Smuzhiyun 2378*4882a593Smuzhiyun /** RxPD Descriptor */ 2379*4882a593Smuzhiyun typedef MLAN_PACK_START struct _RxPD { 2380*4882a593Smuzhiyun /** BSS type */ 2381*4882a593Smuzhiyun t_u8 bss_type; 2382*4882a593Smuzhiyun /** BSS number */ 2383*4882a593Smuzhiyun t_u8 bss_num; 2384*4882a593Smuzhiyun /** Rx Packet Length */ 2385*4882a593Smuzhiyun t_u16 rx_pkt_length; 2386*4882a593Smuzhiyun /** Rx Pkt offset */ 2387*4882a593Smuzhiyun t_u16 rx_pkt_offset; 2388*4882a593Smuzhiyun /** Rx packet type */ 2389*4882a593Smuzhiyun t_u16 rx_pkt_type; 2390*4882a593Smuzhiyun /** Sequence number */ 2391*4882a593Smuzhiyun t_u16 seq_num; 2392*4882a593Smuzhiyun /** Packet Priority */ 2393*4882a593Smuzhiyun t_u8 priority; 2394*4882a593Smuzhiyun /** Rx Packet Rate */ 2395*4882a593Smuzhiyun t_u8 rx_rate; 2396*4882a593Smuzhiyun /** SNR */ 2397*4882a593Smuzhiyun t_s8 snr; 2398*4882a593Smuzhiyun /** Noise Floor */ 2399*4882a593Smuzhiyun t_s8 nf; 2400*4882a593Smuzhiyun /** [Bit 1] [Bit 0] RxRate format: legacy rate = 00 HT = 01 VHT = 10 2401*4882a593Smuzhiyun * [Bit 3] [Bit 2] HT/VHT Bandwidth BW20 = 00 BW40 = 01 BW80 = 10 BW160 2402*4882a593Smuzhiyun * = 11 [Bit 4] HT/VHT Guard interval LGI = 0 SGI = 1 [Bit 5] STBC 2403*4882a593Smuzhiyun * support Enabled = 1 [Bit 6] LDPC support Enabled = 1 [Bit 7] [Bit4, 2404*4882a593Smuzhiyun * Bit7] AX Guard interval, 00, 01, 10 */ 2405*4882a593Smuzhiyun t_u8 rate_info; 2406*4882a593Smuzhiyun /** Reserved */ 2407*4882a593Smuzhiyun t_u8 reserved[3]; 2408*4882a593Smuzhiyun /** TDLS flags, bit 0: 0=InfraLink, 1=DirectLink */ 2409*4882a593Smuzhiyun t_u8 flags; 2410*4882a593Smuzhiyun /**For SD8887 antenna info: 0 = 2.4G antenna a; 1 = 2.4G antenna b; 3 = 2411*4882a593Smuzhiyun * 5G antenna; 0xff = invalid value */ 2412*4882a593Smuzhiyun t_u8 antenna; 2413*4882a593Smuzhiyun /* [31:0] ToA of the rx packet, [63:32] ToD of the ack for the rx packet 2414*4882a593Smuzhiyun * Both ToA and ToD are in nanoseconds */ 2415*4882a593Smuzhiyun t_u64 toa_tod_tstamps; 2416*4882a593Smuzhiyun /** rx info */ 2417*4882a593Smuzhiyun t_u32 rx_info; 2418*4882a593Smuzhiyun 2419*4882a593Smuzhiyun /** Reserved */ 2420*4882a593Smuzhiyun t_u8 reserved3[8]; 2421*4882a593Smuzhiyun } MLAN_PACK_END RxPD, *PRxPD; 2422*4882a593Smuzhiyun 2423*4882a593Smuzhiyun /** IEEEtypes_FrameCtl_t*/ 2424*4882a593Smuzhiyun #ifdef BIG_ENDIAN_SUPPORT 2425*4882a593Smuzhiyun typedef MLAN_PACK_START struct _IEEEtypes_FrameCtl_t { 2426*4882a593Smuzhiyun /** Order */ 2427*4882a593Smuzhiyun t_u8 order : 1; 2428*4882a593Smuzhiyun /** Wep */ 2429*4882a593Smuzhiyun t_u8 wep : 1; 2430*4882a593Smuzhiyun /** More Data */ 2431*4882a593Smuzhiyun t_u8 more_data : 1; 2432*4882a593Smuzhiyun /** Power Mgmt */ 2433*4882a593Smuzhiyun t_u8 pwr_mgmt : 1; 2434*4882a593Smuzhiyun /** Retry */ 2435*4882a593Smuzhiyun t_u8 retry : 1; 2436*4882a593Smuzhiyun /** More Frag */ 2437*4882a593Smuzhiyun t_u8 more_frag : 1; 2438*4882a593Smuzhiyun /** From DS */ 2439*4882a593Smuzhiyun t_u8 from_ds : 1; 2440*4882a593Smuzhiyun /** To DS */ 2441*4882a593Smuzhiyun t_u8 to_ds : 1; 2442*4882a593Smuzhiyun /** Sub Type */ 2443*4882a593Smuzhiyun t_u8 sub_type : 4; 2444*4882a593Smuzhiyun /** Type */ 2445*4882a593Smuzhiyun t_u8 type : 2; 2446*4882a593Smuzhiyun /** Protocol Version */ 2447*4882a593Smuzhiyun t_u8 protocol_version : 2; 2448*4882a593Smuzhiyun } MLAN_PACK_END IEEEtypes_FrameCtl_t; 2449*4882a593Smuzhiyun #else 2450*4882a593Smuzhiyun typedef MLAN_PACK_START struct _IEEEtypes_FrameCtl_t { 2451*4882a593Smuzhiyun /** Protocol Version */ 2452*4882a593Smuzhiyun t_u8 protocol_version : 2; 2453*4882a593Smuzhiyun /** Type */ 2454*4882a593Smuzhiyun t_u8 type : 2; 2455*4882a593Smuzhiyun /** Sub Type */ 2456*4882a593Smuzhiyun t_u8 sub_type : 4; 2457*4882a593Smuzhiyun /** To DS */ 2458*4882a593Smuzhiyun t_u8 to_ds : 1; 2459*4882a593Smuzhiyun /** From DS */ 2460*4882a593Smuzhiyun t_u8 from_ds : 1; 2461*4882a593Smuzhiyun /** More Frag */ 2462*4882a593Smuzhiyun t_u8 more_frag : 1; 2463*4882a593Smuzhiyun /** Retry */ 2464*4882a593Smuzhiyun t_u8 retry : 1; 2465*4882a593Smuzhiyun /** Power Mgmt */ 2466*4882a593Smuzhiyun t_u8 pwr_mgmt : 1; 2467*4882a593Smuzhiyun /** More Data */ 2468*4882a593Smuzhiyun t_u8 more_data : 1; 2469*4882a593Smuzhiyun /** Wep */ 2470*4882a593Smuzhiyun t_u8 wep : 1; 2471*4882a593Smuzhiyun /** Order */ 2472*4882a593Smuzhiyun t_u8 order : 1; 2473*4882a593Smuzhiyun } MLAN_PACK_END IEEEtypes_FrameCtl_t; 2474*4882a593Smuzhiyun #endif 2475*4882a593Smuzhiyun 2476*4882a593Smuzhiyun /** MrvlIETypes_MgmtFrameSet_t */ 2477*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_MgmtFrameSet_t { 2478*4882a593Smuzhiyun /** Type */ 2479*4882a593Smuzhiyun t_u16 type; 2480*4882a593Smuzhiyun /** Length */ 2481*4882a593Smuzhiyun t_u16 len; 2482*4882a593Smuzhiyun /** Frame Control */ 2483*4882a593Smuzhiyun IEEEtypes_FrameCtl_t frame_control; 2484*4882a593Smuzhiyun /* t_u8 frame_contents[]; */ 2485*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_MgmtFrameSet_t; 2486*4882a593Smuzhiyun 2487*4882a593Smuzhiyun /** Beacon */ 2488*4882a593Smuzhiyun typedef MLAN_PACK_START struct _IEEEtypes_Beacon_t { 2489*4882a593Smuzhiyun /** time stamp */ 2490*4882a593Smuzhiyun t_u8 time_stamp[8]; 2491*4882a593Smuzhiyun /** beacon interval */ 2492*4882a593Smuzhiyun t_u16 beacon_interval; 2493*4882a593Smuzhiyun /** cap info */ 2494*4882a593Smuzhiyun t_u16 cap_info; 2495*4882a593Smuzhiyun } MLAN_PACK_END IEEEtypes_Beacon_t; 2496*4882a593Smuzhiyun 2497*4882a593Smuzhiyun /** Fixed size of station association event */ 2498*4882a593Smuzhiyun #define ASSOC_EVENT_FIX_SIZE 12 2499*4882a593Smuzhiyun 2500*4882a593Smuzhiyun /** MrvlIEtypes_channel_band_t */ 2501*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_channel_band_t { 2502*4882a593Smuzhiyun /** Header */ 2503*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2504*4882a593Smuzhiyun /** Band Configuration */ 2505*4882a593Smuzhiyun Band_Config_t bandcfg; 2506*4882a593Smuzhiyun /** channel */ 2507*4882a593Smuzhiyun t_u8 channel; 2508*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_channel_band_t; 2509*4882a593Smuzhiyun 2510*4882a593Smuzhiyun #ifdef UAP_SUPPORT 2511*4882a593Smuzhiyun /** IEEEtypes_AssocRqst_t */ 2512*4882a593Smuzhiyun typedef MLAN_PACK_START struct _IEEEtypes_AssocRqst_t { 2513*4882a593Smuzhiyun /** Capability Info */ 2514*4882a593Smuzhiyun t_u16 cap_info; 2515*4882a593Smuzhiyun /** Listen Interval */ 2516*4882a593Smuzhiyun t_u16 listen_interval; 2517*4882a593Smuzhiyun /* t_u8 ie_buffer[]; */ 2518*4882a593Smuzhiyun } MLAN_PACK_END IEEEtypes_AssocRqst_t; 2519*4882a593Smuzhiyun 2520*4882a593Smuzhiyun /** IEEEtypes_ReAssocRqst_t */ 2521*4882a593Smuzhiyun typedef MLAN_PACK_START struct _IEEEtypes_ReAssocRqst_t { 2522*4882a593Smuzhiyun /** Capability Info */ 2523*4882a593Smuzhiyun t_u16 cap_info; 2524*4882a593Smuzhiyun /** Listen Interval */ 2525*4882a593Smuzhiyun t_u16 listen_interval; 2526*4882a593Smuzhiyun /** Current AP Address */ 2527*4882a593Smuzhiyun t_u8 current_ap_addr[MLAN_MAC_ADDR_LENGTH]; 2528*4882a593Smuzhiyun /* t_u8 ie_buffer[]; */ 2529*4882a593Smuzhiyun } MLAN_PACK_END IEEEtypes_ReAssocRqst_t; 2530*4882a593Smuzhiyun #endif /* UAP_SUPPORT */ 2531*4882a593Smuzhiyun 2532*4882a593Smuzhiyun /** wlan_802_11_header */ 2533*4882a593Smuzhiyun typedef MLAN_PACK_START struct _wlan_802_11_header { 2534*4882a593Smuzhiyun /** Frame Control */ 2535*4882a593Smuzhiyun t_u16 frm_ctl; 2536*4882a593Smuzhiyun /** Duration ID */ 2537*4882a593Smuzhiyun t_u16 duration_id; 2538*4882a593Smuzhiyun /** Address1 */ 2539*4882a593Smuzhiyun mlan_802_11_mac_addr addr1; 2540*4882a593Smuzhiyun /** Address2 */ 2541*4882a593Smuzhiyun mlan_802_11_mac_addr addr2; 2542*4882a593Smuzhiyun /** Address3 */ 2543*4882a593Smuzhiyun mlan_802_11_mac_addr addr3; 2544*4882a593Smuzhiyun /** Sequence Control */ 2545*4882a593Smuzhiyun t_u16 seq_ctl; 2546*4882a593Smuzhiyun /** Address4 */ 2547*4882a593Smuzhiyun mlan_802_11_mac_addr addr4; 2548*4882a593Smuzhiyun } MLAN_PACK_END wlan_802_11_header; 2549*4882a593Smuzhiyun 2550*4882a593Smuzhiyun /** wlan_802_11_header packet from FW with length */ 2551*4882a593Smuzhiyun typedef MLAN_PACK_START struct _wlan_mgmt_pkt { 2552*4882a593Smuzhiyun /** Packet Length */ 2553*4882a593Smuzhiyun t_u16 frm_len; 2554*4882a593Smuzhiyun /** wlan_802_11_header */ 2555*4882a593Smuzhiyun wlan_802_11_header wlan_header; 2556*4882a593Smuzhiyun } MLAN_PACK_END wlan_mgmt_pkt; 2557*4882a593Smuzhiyun 2558*4882a593Smuzhiyun #ifdef STA_SUPPORT 2559*4882a593Smuzhiyun /** (Beaconsize(256)-5(IEId,len,contrystr(3))/3(FirstChan,NoOfChan,MaxPwr) */ 2560*4882a593Smuzhiyun #define MAX_NO_OF_CHAN 40 2561*4882a593Smuzhiyun 2562*4882a593Smuzhiyun /** Channel-power table entries */ 2563*4882a593Smuzhiyun typedef MLAN_PACK_START struct _chan_power_11d { 2564*4882a593Smuzhiyun /** 11D channel */ 2565*4882a593Smuzhiyun t_u8 chan; 2566*4882a593Smuzhiyun /** Band for channel */ 2567*4882a593Smuzhiyun t_u16 band; 2568*4882a593Smuzhiyun /** 11D channel power */ 2569*4882a593Smuzhiyun t_u8 pwr; 2570*4882a593Smuzhiyun /** AP seen on channel */ 2571*4882a593Smuzhiyun t_u8 ap_seen; 2572*4882a593Smuzhiyun } MLAN_PACK_END chan_power_11d_t; 2573*4882a593Smuzhiyun 2574*4882a593Smuzhiyun /** Region channel info */ 2575*4882a593Smuzhiyun typedef MLAN_PACK_START struct _parsed_region_chan_11d { 2576*4882a593Smuzhiyun /** 11D channel power per channel */ 2577*4882a593Smuzhiyun chan_power_11d_t chan_pwr[MAX_NO_OF_CHAN]; 2578*4882a593Smuzhiyun /** 11D number of channels */ 2579*4882a593Smuzhiyun t_u8 no_of_chan; 2580*4882a593Smuzhiyun } MLAN_PACK_END parsed_region_chan_11d_t; 2581*4882a593Smuzhiyun #endif /* STA_SUPPORT */ 2582*4882a593Smuzhiyun 2583*4882a593Smuzhiyun /** ChanScanMode_t */ 2584*4882a593Smuzhiyun typedef MLAN_PACK_START struct _ChanScanMode_t { 2585*4882a593Smuzhiyun #ifdef BIG_ENDIAN_SUPPORT 2586*4882a593Smuzhiyun /** Reserved */ 2587*4882a593Smuzhiyun t_u8 reserved_7 : 1; 2588*4882a593Smuzhiyun /** First passive scan then active scan */ 2589*4882a593Smuzhiyun t_u8 passive_to_active_scan : 1; 2590*4882a593Smuzhiyun /** First channel in scan */ 2591*4882a593Smuzhiyun t_u8 first_chan : 1; 2592*4882a593Smuzhiyun /** Enable hidden ssid report */ 2593*4882a593Smuzhiyun t_u8 hidden_ssid_report : 1; 2594*4882a593Smuzhiyun /** Enable probe response timeout */ 2595*4882a593Smuzhiyun t_u8 rsp_timeout_en : 1; 2596*4882a593Smuzhiyun /** Multidomain scan mode */ 2597*4882a593Smuzhiyun t_u8 multidomain_scan : 1; 2598*4882a593Smuzhiyun /** Disble channel filtering flag */ 2599*4882a593Smuzhiyun t_u8 disable_chan_filt : 1; 2600*4882a593Smuzhiyun /** Channel scan mode passive flag */ 2601*4882a593Smuzhiyun t_u8 passive_scan : 1; 2602*4882a593Smuzhiyun #else 2603*4882a593Smuzhiyun /** Channel scan mode passive flag */ 2604*4882a593Smuzhiyun t_u8 passive_scan : 1; 2605*4882a593Smuzhiyun /** Disble channel filtering flag */ 2606*4882a593Smuzhiyun t_u8 disable_chan_filt : 1; 2607*4882a593Smuzhiyun /** Multidomain scan mode */ 2608*4882a593Smuzhiyun t_u8 multidomain_scan : 1; 2609*4882a593Smuzhiyun /** Enable probe response timeout */ 2610*4882a593Smuzhiyun t_u8 rsp_timeout_en : 1; 2611*4882a593Smuzhiyun /** Enable hidden ssid report */ 2612*4882a593Smuzhiyun t_u8 hidden_ssid_report : 1; 2613*4882a593Smuzhiyun /** First channel in scan */ 2614*4882a593Smuzhiyun t_u8 first_chan : 1; 2615*4882a593Smuzhiyun /** First passive scan then active scan */ 2616*4882a593Smuzhiyun t_u8 passive_to_active_scan : 1; 2617*4882a593Smuzhiyun /** Reserved */ 2618*4882a593Smuzhiyun t_u8 reserved_7 : 1; 2619*4882a593Smuzhiyun #endif 2620*4882a593Smuzhiyun } MLAN_PACK_END ChanScanMode_t; 2621*4882a593Smuzhiyun 2622*4882a593Smuzhiyun /** ChanScanParamSet_t */ 2623*4882a593Smuzhiyun typedef MLAN_PACK_START struct _ChanScanParamSet_t { 2624*4882a593Smuzhiyun /** Channel scan parameter : band config */ 2625*4882a593Smuzhiyun Band_Config_t bandcfg; 2626*4882a593Smuzhiyun /** Channel scan parameter : Channel number */ 2627*4882a593Smuzhiyun t_u8 chan_number; 2628*4882a593Smuzhiyun /** Channel scan parameter : Channel scan mode */ 2629*4882a593Smuzhiyun ChanScanMode_t chan_scan_mode; 2630*4882a593Smuzhiyun /** Channel scan parameter : Minimum scan time */ 2631*4882a593Smuzhiyun t_u16 min_scan_time; 2632*4882a593Smuzhiyun /** Channel scan parameter : Maximum scan time */ 2633*4882a593Smuzhiyun t_u16 max_scan_time; 2634*4882a593Smuzhiyun } MLAN_PACK_END ChanScanParamSet_t; 2635*4882a593Smuzhiyun 2636*4882a593Smuzhiyun /** MrvlIEtypes_ChanListParamSet_t */ 2637*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_ChanListParamSet_t { 2638*4882a593Smuzhiyun /** Header */ 2639*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2640*4882a593Smuzhiyun /** Channel scan parameters */ 2641*4882a593Smuzhiyun ChanScanParamSet_t chan_scan_param[1]; 2642*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ChanListParamSet_t; 2643*4882a593Smuzhiyun 2644*4882a593Smuzhiyun /** MrvlIEtypes_EESParamSet_t */ 2645*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_EESParamSet_t { 2646*4882a593Smuzhiyun /** Header */ 2647*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2648*4882a593Smuzhiyun /** EES scan mode */ 2649*4882a593Smuzhiyun t_u16 ees_mode; 2650*4882a593Smuzhiyun /** EES report condition */ 2651*4882a593Smuzhiyun t_u16 report_cond; 2652*4882a593Smuzhiyun /** EES High Period scan interval */ 2653*4882a593Smuzhiyun t_u16 high_period; 2654*4882a593Smuzhiyun /** EES High Period scan count */ 2655*4882a593Smuzhiyun t_u16 high_period_count; 2656*4882a593Smuzhiyun /** EES Medium Period scan interval */ 2657*4882a593Smuzhiyun t_u16 mid_period; 2658*4882a593Smuzhiyun /** EES Medium Period scan count */ 2659*4882a593Smuzhiyun t_u16 mid_period_count; 2660*4882a593Smuzhiyun /** EES Low Period scan interval */ 2661*4882a593Smuzhiyun t_u16 low_period; 2662*4882a593Smuzhiyun /** EES Low Period scan count */ 2663*4882a593Smuzhiyun t_u16 low_period_count; 2664*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_EESParamSet_t; 2665*4882a593Smuzhiyun 2666*4882a593Smuzhiyun /** MrvlIEtype_EESNetworkCfg_t */ 2667*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtype_EESNetworkCfg_t { 2668*4882a593Smuzhiyun /** Header */ 2669*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2670*4882a593Smuzhiyun /** Number of networks in the list */ 2671*4882a593Smuzhiyun t_u8 network_count; 2672*4882a593Smuzhiyun /** Maximum number of connection */ 2673*4882a593Smuzhiyun t_u8 max_conn_count; 2674*4882a593Smuzhiyun /** Black List Exp */ 2675*4882a593Smuzhiyun t_u8 black_list_exp; 2676*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtype_EESNetworkCfg_t; 2677*4882a593Smuzhiyun 2678*4882a593Smuzhiyun /** ChanBandParamSet_t */ 2679*4882a593Smuzhiyun typedef struct _ChanBandParamSet_t { 2680*4882a593Smuzhiyun /** Channel scan parameter : band config */ 2681*4882a593Smuzhiyun Band_Config_t bandcfg; 2682*4882a593Smuzhiyun /** Channel number */ 2683*4882a593Smuzhiyun t_u8 chan_number; 2684*4882a593Smuzhiyun } ChanBandParamSet_t; 2685*4882a593Smuzhiyun 2686*4882a593Smuzhiyun /** MrvlIEtypes_ChanBandListParamSet_t */ 2687*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_ChanBandListParamSet_t { 2688*4882a593Smuzhiyun /** Header */ 2689*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2690*4882a593Smuzhiyun /** Channel Band parameters */ 2691*4882a593Smuzhiyun ChanBandParamSet_t chan_band_param[1]; 2692*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ChanBandListParamSet_t; 2693*4882a593Smuzhiyun 2694*4882a593Smuzhiyun /** MrvlIEtypes_RatesParamSet_t */ 2695*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_RatesParamSet_t { 2696*4882a593Smuzhiyun /** Header */ 2697*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2698*4882a593Smuzhiyun /** Rates */ 2699*4882a593Smuzhiyun t_u8 rates[1]; 2700*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_RatesParamSet_t; 2701*4882a593Smuzhiyun 2702*4882a593Smuzhiyun /** _MrvlIEtypes_Bssid_List_t */ 2703*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Bssid_List_t { 2704*4882a593Smuzhiyun /** Header */ 2705*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2706*4882a593Smuzhiyun /** BSSID */ 2707*4882a593Smuzhiyun t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 2708*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Bssid_List_t; 2709*4882a593Smuzhiyun 2710*4882a593Smuzhiyun /** MrvlIEtypes_SsIdParamSet_t */ 2711*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_SsIdParamSet_t { 2712*4882a593Smuzhiyun /** Header */ 2713*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2714*4882a593Smuzhiyun /** SSID */ 2715*4882a593Smuzhiyun t_u8 ssid[1]; 2716*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_SsIdParamSet_t; 2717*4882a593Smuzhiyun 2718*4882a593Smuzhiyun /**MrvlIEtypes_AssocType_t */ 2719*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_HostMlme_t { 2720*4882a593Smuzhiyun /** Header */ 2721*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2722*4882a593Smuzhiyun /** Authentication type */ 2723*4882a593Smuzhiyun t_u8 host_mlme; 2724*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_HostMlme_t; 2725*4882a593Smuzhiyun 2726*4882a593Smuzhiyun /** MrvlIEtypes_NumProbes_t */ 2727*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_NumProbes_t { 2728*4882a593Smuzhiyun /** Header */ 2729*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2730*4882a593Smuzhiyun /** Number of probes */ 2731*4882a593Smuzhiyun t_u16 num_probes; 2732*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_NumProbes_t; 2733*4882a593Smuzhiyun 2734*4882a593Smuzhiyun /** MrvlIEtypes_WildCardSsIdParamSet_t */ 2735*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_WildCardSsIdParamSet_t { 2736*4882a593Smuzhiyun /** Header */ 2737*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2738*4882a593Smuzhiyun /** Maximum SSID length */ 2739*4882a593Smuzhiyun t_u8 max_ssid_length; 2740*4882a593Smuzhiyun /** SSID */ 2741*4882a593Smuzhiyun t_u8 ssid[1]; 2742*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_WildCardSsIdParamSet_t; 2743*4882a593Smuzhiyun 2744*4882a593Smuzhiyun /**TSF data size */ 2745*4882a593Smuzhiyun #define TSF_DATA_SIZE 8 2746*4882a593Smuzhiyun /** Table of TSF values returned in the scan result */ 2747*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_TsfTimestamp_t { 2748*4882a593Smuzhiyun /** Header */ 2749*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2750*4882a593Smuzhiyun /** the length of each TSF data is 8 bytes, could be multiple TSF here 2751*4882a593Smuzhiyun */ 2752*4882a593Smuzhiyun t_u8 tsf_data[1]; 2753*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_TsfTimestamp_t; 2754*4882a593Smuzhiyun 2755*4882a593Smuzhiyun /** CfParamSet_t */ 2756*4882a593Smuzhiyun typedef MLAN_PACK_START struct _CfParamSet_t { 2757*4882a593Smuzhiyun /** CF parameter : Count */ 2758*4882a593Smuzhiyun t_u8 cfp_cnt; 2759*4882a593Smuzhiyun /** CF parameter : Period */ 2760*4882a593Smuzhiyun t_u8 cfp_period; 2761*4882a593Smuzhiyun /** CF parameter : Duration */ 2762*4882a593Smuzhiyun t_u16 cfp_max_duration; 2763*4882a593Smuzhiyun /** CF parameter : Duration remaining */ 2764*4882a593Smuzhiyun t_u16 cfp_duration_remaining; 2765*4882a593Smuzhiyun } MLAN_PACK_END CfParamSet_t; 2766*4882a593Smuzhiyun 2767*4882a593Smuzhiyun /** IbssParamSet_t */ 2768*4882a593Smuzhiyun typedef MLAN_PACK_START struct _IbssParamSet_t { 2769*4882a593Smuzhiyun /** ATIM window value */ 2770*4882a593Smuzhiyun t_u16 atim_window; 2771*4882a593Smuzhiyun } MLAN_PACK_END IbssParamSet_t; 2772*4882a593Smuzhiyun 2773*4882a593Smuzhiyun /** MrvlIEtypes_SsParamSet_t */ 2774*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_SsParamSet_t { 2775*4882a593Smuzhiyun /** Header */ 2776*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2777*4882a593Smuzhiyun /** CF/IBSS parameters sets */ 2778*4882a593Smuzhiyun union { 2779*4882a593Smuzhiyun /** CF parameter set */ 2780*4882a593Smuzhiyun CfParamSet_t cf_param_set[1]; 2781*4882a593Smuzhiyun /** IBSS parameter set */ 2782*4882a593Smuzhiyun IbssParamSet_t ibss_param_set[1]; 2783*4882a593Smuzhiyun } cf_ibss; 2784*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_SsParamSet_t; 2785*4882a593Smuzhiyun 2786*4882a593Smuzhiyun /** FhParamSet_t */ 2787*4882a593Smuzhiyun typedef MLAN_PACK_START struct _FhParamSet_t { 2788*4882a593Smuzhiyun /** FH parameter : Dwell time */ 2789*4882a593Smuzhiyun t_u16 dwell_time; 2790*4882a593Smuzhiyun /** FH parameter : Hop set */ 2791*4882a593Smuzhiyun t_u8 hop_set; 2792*4882a593Smuzhiyun /** FH parameter : Hop pattern */ 2793*4882a593Smuzhiyun t_u8 hop_pattern; 2794*4882a593Smuzhiyun /** FH parameter : Hop index */ 2795*4882a593Smuzhiyun t_u8 hop_index; 2796*4882a593Smuzhiyun } MLAN_PACK_END FhParamSet_t; 2797*4882a593Smuzhiyun 2798*4882a593Smuzhiyun /** DsParamSet_t */ 2799*4882a593Smuzhiyun typedef MLAN_PACK_START struct _DsParamSet_t { 2800*4882a593Smuzhiyun /** Current channel number */ 2801*4882a593Smuzhiyun t_u8 current_chan; 2802*4882a593Smuzhiyun } MLAN_PACK_END DsParamSet_t; 2803*4882a593Smuzhiyun 2804*4882a593Smuzhiyun /** MrvlIEtypes_PhyParamSet_t */ 2805*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_PhyParamSet_t { 2806*4882a593Smuzhiyun /** Header */ 2807*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2808*4882a593Smuzhiyun /** FH/DS parameters */ 2809*4882a593Smuzhiyun union { 2810*4882a593Smuzhiyun /** FH parameter set */ 2811*4882a593Smuzhiyun FhParamSet_t fh_param_set[1]; 2812*4882a593Smuzhiyun /** DS parameter set */ 2813*4882a593Smuzhiyun DsParamSet_t ds_param_set[1]; 2814*4882a593Smuzhiyun } fh_ds; 2815*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_PhyParamSet_t; 2816*4882a593Smuzhiyun 2817*4882a593Smuzhiyun /* Auth type to be used in the Authentication portion of an Assoc seq */ 2818*4882a593Smuzhiyun /** MrvlIEtypes_AuthType_t */ 2819*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_AuthType_t { 2820*4882a593Smuzhiyun /** Header */ 2821*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2822*4882a593Smuzhiyun /** Authentication type */ 2823*4882a593Smuzhiyun t_u16 auth_type; 2824*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_AuthType_t; 2825*4882a593Smuzhiyun 2826*4882a593Smuzhiyun /** MrvlIEtypes_ScanChanGap_t */ 2827*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_ScanChanGap_t { 2828*4882a593Smuzhiyun /** Header */ 2829*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2830*4882a593Smuzhiyun /** Time gap in units to TUs to be used between 2831*4882a593Smuzhiyun * two consecutive channels scan */ 2832*4882a593Smuzhiyun t_u16 gap; 2833*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ScanChanGap_t; 2834*4882a593Smuzhiyun 2835*4882a593Smuzhiyun /** channel statictics */ 2836*4882a593Smuzhiyun typedef MLAN_PACK_START struct _chan_statistics_t { 2837*4882a593Smuzhiyun /** channle number */ 2838*4882a593Smuzhiyun t_u8 chan_num; 2839*4882a593Smuzhiyun /** band info */ 2840*4882a593Smuzhiyun Band_Config_t bandcfg; 2841*4882a593Smuzhiyun /** flags */ 2842*4882a593Smuzhiyun t_u8 flags; 2843*4882a593Smuzhiyun /** noise */ 2844*4882a593Smuzhiyun t_s8 noise; 2845*4882a593Smuzhiyun /** total network */ 2846*4882a593Smuzhiyun t_u16 total_networks; 2847*4882a593Smuzhiyun /** scan duration */ 2848*4882a593Smuzhiyun t_u16 cca_scan_duration; 2849*4882a593Smuzhiyun /** busy duration */ 2850*4882a593Smuzhiyun t_u16 cca_busy_duration; 2851*4882a593Smuzhiyun } MLAN_PACK_END chan_statistics_t; 2852*4882a593Smuzhiyun 2853*4882a593Smuzhiyun /** channel statictics tlv */ 2854*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_ChannelStats_t { 2855*4882a593Smuzhiyun /** Header */ 2856*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2857*4882a593Smuzhiyun /** channel statictics */ 2858*4882a593Smuzhiyun chan_statistics_t chanStat[]; 2859*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ChannelStats_t; 2860*4882a593Smuzhiyun 2861*4882a593Smuzhiyun /** MrvlIETypes_ActionFrame_t */ 2862*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 2863*4882a593Smuzhiyun MrvlIEtypesHeader_t header; /**< Header */ 2864*4882a593Smuzhiyun 2865*4882a593Smuzhiyun t_u8 srcAddr[MLAN_MAC_ADDR_LENGTH]; 2866*4882a593Smuzhiyun t_u8 dstAddr[MLAN_MAC_ADDR_LENGTH]; 2867*4882a593Smuzhiyun 2868*4882a593Smuzhiyun IEEEtypes_ActionFrame_t actionFrame; 2869*4882a593Smuzhiyun 2870*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_ActionFrame_t; 2871*4882a593Smuzhiyun 2872*4882a593Smuzhiyun /** MrvlIEtypes_RxBaSync_t */ 2873*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_RxBaSync_t { 2874*4882a593Smuzhiyun /** Header */ 2875*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2876*4882a593Smuzhiyun /** mac address */ 2877*4882a593Smuzhiyun t_u8 mac[MLAN_MAC_ADDR_LENGTH]; 2878*4882a593Smuzhiyun /** tid */ 2879*4882a593Smuzhiyun t_u8 tid; 2880*4882a593Smuzhiyun /** reserved field */ 2881*4882a593Smuzhiyun t_u8 reserved; 2882*4882a593Smuzhiyun /** start seq num */ 2883*4882a593Smuzhiyun t_u16 seq_num; 2884*4882a593Smuzhiyun /** bitmap len */ 2885*4882a593Smuzhiyun t_u16 bitmap_len; 2886*4882a593Smuzhiyun /** bitmap */ 2887*4882a593Smuzhiyun t_u8 bitmap[1]; 2888*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_RxBaSync_t; 2889*4882a593Smuzhiyun 2890*4882a593Smuzhiyun /** MrvlIEtypes_RsnParamSet_t */ 2891*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_RsnParamSet_t { 2892*4882a593Smuzhiyun /** Header */ 2893*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2894*4882a593Smuzhiyun /** RSN IE */ 2895*4882a593Smuzhiyun t_u8 rsn_ie[]; 2896*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_RsnParamSet_t; 2897*4882a593Smuzhiyun 2898*4882a593Smuzhiyun /** MrvlIEtypes_SecurityCfg_t */ 2899*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_SecurityCfg_t { 2900*4882a593Smuzhiyun /** Header */ 2901*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 2902*4882a593Smuzhiyun /** enable 11w */ 2903*4882a593Smuzhiyun t_u8 use_mfp; 2904*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_SecurityCfg_t; 2905*4882a593Smuzhiyun 2906*4882a593Smuzhiyun /** Host Command ID : _HostCmd_DS_BEACON_STUCK_CFG */ 2907*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_BEACON_STUCK_CFG { 2908*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 2909*4882a593Smuzhiyun t_u8 action; 2910*4882a593Smuzhiyun /** No of beacon interval after which firmware will check if beacon Tx 2911*4882a593Smuzhiyun * is going fine */ 2912*4882a593Smuzhiyun t_u8 beacon_stuck_detect_count; 2913*4882a593Smuzhiyun /** Upon performing MAC reset, no of beacon interval after which 2914*4882a593Smuzhiyun * firmware will check if recovery was successful */ 2915*4882a593Smuzhiyun t_u8 recovery_confirm_count; 2916*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_BEACON_STUCK_CFG; 2917*4882a593Smuzhiyun 2918*4882a593Smuzhiyun /** Key Info flag for multicast key */ 2919*4882a593Smuzhiyun #define KEY_INFO_MCAST_KEY 0x01 2920*4882a593Smuzhiyun /** Key Info flag for unicast key */ 2921*4882a593Smuzhiyun #define KEY_INFO_UCAST_KEY 0x02 2922*4882a593Smuzhiyun /** Key Info flag for enable key */ 2923*4882a593Smuzhiyun #define KEY_INFO_ENABLE_KEY 0x04 2924*4882a593Smuzhiyun /** Key Info flag for default key */ 2925*4882a593Smuzhiyun #define KEY_INFO_DEFAULT_KEY 0x08 2926*4882a593Smuzhiyun /** Key Info flag for TX key */ 2927*4882a593Smuzhiyun #define KEY_INFO_TX_KEY 0x10 2928*4882a593Smuzhiyun /** Key Info flag for RX key */ 2929*4882a593Smuzhiyun #define KEY_INFO_RX_KEY 0x20 2930*4882a593Smuzhiyun #define KEY_INFO_CMAC_AES_KEY 0x400 2931*4882a593Smuzhiyun /** PN size for WPA/WPA2 */ 2932*4882a593Smuzhiyun #define WPA_PN_SIZE 8 2933*4882a593Smuzhiyun /** PN size for PMF IGTK */ 2934*4882a593Smuzhiyun #define IGTK_PN_SIZE 8 2935*4882a593Smuzhiyun /** WAPI KEY size */ 2936*4882a593Smuzhiyun #define WAPI_KEY_SIZE 32 2937*4882a593Smuzhiyun /** key params fix size */ 2938*4882a593Smuzhiyun #define KEY_PARAMS_FIXED_LEN 10 2939*4882a593Smuzhiyun /** key index mask */ 2940*4882a593Smuzhiyun #define KEY_INDEX_MASK 0xf 2941*4882a593Smuzhiyun 2942*4882a593Smuzhiyun /** wep_param */ 2943*4882a593Smuzhiyun typedef MLAN_PACK_START struct _wep_param_t { 2944*4882a593Smuzhiyun /** key_len */ 2945*4882a593Smuzhiyun t_u16 key_len; 2946*4882a593Smuzhiyun /** wep key */ 2947*4882a593Smuzhiyun t_u8 key[MAX_WEP_KEY_SIZE]; 2948*4882a593Smuzhiyun } MLAN_PACK_END wep_param_t; 2949*4882a593Smuzhiyun 2950*4882a593Smuzhiyun /** tkip_param */ 2951*4882a593Smuzhiyun typedef MLAN_PACK_START struct _tkip_param { 2952*4882a593Smuzhiyun /** Rx packet num */ 2953*4882a593Smuzhiyun t_u8 pn[WPA_PN_SIZE]; 2954*4882a593Smuzhiyun /** key_len */ 2955*4882a593Smuzhiyun t_u16 key_len; 2956*4882a593Smuzhiyun /** tkip key */ 2957*4882a593Smuzhiyun t_u8 key[WPA_TKIP_KEY_LEN]; 2958*4882a593Smuzhiyun } MLAN_PACK_END tkip_param; 2959*4882a593Smuzhiyun 2960*4882a593Smuzhiyun /** aes_param */ 2961*4882a593Smuzhiyun typedef MLAN_PACK_START struct _aes_param { 2962*4882a593Smuzhiyun /** Rx packet num */ 2963*4882a593Smuzhiyun t_u8 pn[WPA_PN_SIZE]; 2964*4882a593Smuzhiyun /** key_len */ 2965*4882a593Smuzhiyun t_u16 key_len; 2966*4882a593Smuzhiyun /** aes key */ 2967*4882a593Smuzhiyun t_u8 key[WPA_AES_KEY_LEN]; 2968*4882a593Smuzhiyun } MLAN_PACK_END aes_param; 2969*4882a593Smuzhiyun 2970*4882a593Smuzhiyun /** wapi_param */ 2971*4882a593Smuzhiyun typedef MLAN_PACK_START struct _wapi_param { 2972*4882a593Smuzhiyun /** Rx packet num */ 2973*4882a593Smuzhiyun t_u8 pn[PN_SIZE]; 2974*4882a593Smuzhiyun /** key_len */ 2975*4882a593Smuzhiyun t_u16 key_len; 2976*4882a593Smuzhiyun /** wapi key */ 2977*4882a593Smuzhiyun t_u8 key[WAPI_KEY_SIZE]; 2978*4882a593Smuzhiyun } MLAN_PACK_END wapi_param; 2979*4882a593Smuzhiyun 2980*4882a593Smuzhiyun /** cmac_aes_param */ 2981*4882a593Smuzhiyun typedef MLAN_PACK_START struct _cmac_aes_param { 2982*4882a593Smuzhiyun /** IGTK pn */ 2983*4882a593Smuzhiyun t_u8 ipn[IGTK_PN_SIZE]; 2984*4882a593Smuzhiyun /** key_len */ 2985*4882a593Smuzhiyun t_u16 key_len; 2986*4882a593Smuzhiyun /** aes key */ 2987*4882a593Smuzhiyun t_u8 key[CMAC_AES_KEY_LEN]; 2988*4882a593Smuzhiyun } MLAN_PACK_END cmac_aes_param; 2989*4882a593Smuzhiyun 2990*4882a593Smuzhiyun /** gmac_aes_256_param */ 2991*4882a593Smuzhiyun typedef MLAN_PACK_START struct _gmac_aes_256_param { 2992*4882a593Smuzhiyun /** IGTK pn */ 2993*4882a593Smuzhiyun t_u8 ipn[IGTK_PN_SIZE]; 2994*4882a593Smuzhiyun /** key_len */ 2995*4882a593Smuzhiyun t_u16 key_len; 2996*4882a593Smuzhiyun /** aes key */ 2997*4882a593Smuzhiyun t_u8 key[WPA_IGTK_256_KEY_LEN]; 2998*4882a593Smuzhiyun } MLAN_PACK_END gmac_aes_256_param; 2999*4882a593Smuzhiyun 3000*4882a593Smuzhiyun /** gmac_param */ 3001*4882a593Smuzhiyun typedef MLAN_PACK_START struct _gcmp_param { 3002*4882a593Smuzhiyun /** GCMP pn */ 3003*4882a593Smuzhiyun t_u8 pn[WPA_PN_SIZE]; 3004*4882a593Smuzhiyun /** key_len */ 3005*4882a593Smuzhiyun t_u16 key_len; 3006*4882a593Smuzhiyun /** aes key */ 3007*4882a593Smuzhiyun t_u8 key[WPA_GCMP_KEY_LEN]; 3008*4882a593Smuzhiyun } MLAN_PACK_END gcmp_param; 3009*4882a593Smuzhiyun 3010*4882a593Smuzhiyun /** ccmp256_param */ 3011*4882a593Smuzhiyun typedef MLAN_PACK_START struct _ccmp256_param { 3012*4882a593Smuzhiyun /** CCMP pn */ 3013*4882a593Smuzhiyun t_u8 pn[WPA_PN_SIZE]; 3014*4882a593Smuzhiyun /** key_len */ 3015*4882a593Smuzhiyun t_u16 key_len; 3016*4882a593Smuzhiyun /** ccmp256 key */ 3017*4882a593Smuzhiyun t_u8 key[WPA_CCMP_256_KEY_LEN]; 3018*4882a593Smuzhiyun } MLAN_PACK_END ccmp_256_param; 3019*4882a593Smuzhiyun 3020*4882a593Smuzhiyun /** MrvlIEtype_KeyParamSet_t */ 3021*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtype_KeyParamSetV2_t { 3022*4882a593Smuzhiyun /** Type ID */ 3023*4882a593Smuzhiyun t_u16 type; 3024*4882a593Smuzhiyun /** Length of Payload */ 3025*4882a593Smuzhiyun t_u16 length; 3026*4882a593Smuzhiyun /** mac address */ 3027*4882a593Smuzhiyun t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH]; 3028*4882a593Smuzhiyun /** key index */ 3029*4882a593Smuzhiyun t_u8 key_idx; 3030*4882a593Smuzhiyun /** Type of Key: WEP=0, TKIP=1, AES=2, WAPI=3 AES_CMAC=4 */ 3031*4882a593Smuzhiyun t_u8 key_type; 3032*4882a593Smuzhiyun /** Key Control Info specific to a key_type_id */ 3033*4882a593Smuzhiyun t_u16 key_info; 3034*4882a593Smuzhiyun union { 3035*4882a593Smuzhiyun /** wep key param */ 3036*4882a593Smuzhiyun wep_param_t wep; 3037*4882a593Smuzhiyun /** tkip key param */ 3038*4882a593Smuzhiyun tkip_param tkip; 3039*4882a593Smuzhiyun /** aes key param */ 3040*4882a593Smuzhiyun aes_param aes; 3041*4882a593Smuzhiyun /** wapi key param */ 3042*4882a593Smuzhiyun wapi_param wapi; 3043*4882a593Smuzhiyun /** IGTK key param */ 3044*4882a593Smuzhiyun cmac_aes_param cmac_aes; 3045*4882a593Smuzhiyun /** gcmp key param */ 3046*4882a593Smuzhiyun gcmp_param gcmp; 3047*4882a593Smuzhiyun /** ccmp 256 key parameters */ 3048*4882a593Smuzhiyun ccmp_256_param ccmp256; 3049*4882a593Smuzhiyun } key_params; 3050*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtype_KeyParamSetV2_t; 3051*4882a593Smuzhiyun 3052*4882a593Smuzhiyun /** HostCmd_DS_802_11_KEY_MATERIAL */ 3053*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_KEY_MATERIAL { 3054*4882a593Smuzhiyun /** Action */ 3055*4882a593Smuzhiyun t_u16 action; 3056*4882a593Smuzhiyun /** Key parameter set */ 3057*4882a593Smuzhiyun MrvlIEtype_KeyParamSetV2_t key_param_set; 3058*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_KEY_MATERIAL; 3059*4882a593Smuzhiyun 3060*4882a593Smuzhiyun /** HostCmd_DS_GTK_REKEY_PARAMS */ 3061*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_GTK_REKEY_PARAMS { 3062*4882a593Smuzhiyun /** Action */ 3063*4882a593Smuzhiyun t_u16 action; 3064*4882a593Smuzhiyun /** Key confirmation key */ 3065*4882a593Smuzhiyun t_u8 kck[MLAN_KCK_LEN]; 3066*4882a593Smuzhiyun /** Key encryption key */ 3067*4882a593Smuzhiyun t_u8 kek[MLAN_KEK_LEN]; 3068*4882a593Smuzhiyun /** Replay counter low 32 bit */ 3069*4882a593Smuzhiyun t_u32 replay_ctr_low; 3070*4882a593Smuzhiyun /** Replay counter high 32 bit */ 3071*4882a593Smuzhiyun t_u32 replay_ctr_high; 3072*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_GTK_REKEY_PARAMS; 3073*4882a593Smuzhiyun 3074*4882a593Smuzhiyun /** Data structure of WMM QoS information */ 3075*4882a593Smuzhiyun typedef MLAN_PACK_START struct _WmmQosInfo_t { 3076*4882a593Smuzhiyun #ifdef BIG_ENDIAN_SUPPORT 3077*4882a593Smuzhiyun /** QoS UAPSD */ 3078*4882a593Smuzhiyun t_u8 qos_uapsd : 1; 3079*4882a593Smuzhiyun /** Reserved */ 3080*4882a593Smuzhiyun t_u8 reserved : 3; 3081*4882a593Smuzhiyun /** Parameter set count */ 3082*4882a593Smuzhiyun t_u8 para_set_count : 4; 3083*4882a593Smuzhiyun #else 3084*4882a593Smuzhiyun /** Parameter set count */ 3085*4882a593Smuzhiyun t_u8 para_set_count : 4; 3086*4882a593Smuzhiyun /** Reserved */ 3087*4882a593Smuzhiyun t_u8 reserved : 3; 3088*4882a593Smuzhiyun /** QoS UAPSD */ 3089*4882a593Smuzhiyun t_u8 qos_uapsd : 1; 3090*4882a593Smuzhiyun #endif /* BIG_ENDIAN_SUPPORT */ 3091*4882a593Smuzhiyun } MLAN_PACK_END WmmQosInfo_t, *pWmmQosInfo_t; 3092*4882a593Smuzhiyun 3093*4882a593Smuzhiyun /** Data structure of WMM ECW */ 3094*4882a593Smuzhiyun typedef MLAN_PACK_START struct _WmmEcw_t { 3095*4882a593Smuzhiyun #ifdef BIG_ENDIAN_SUPPORT 3096*4882a593Smuzhiyun /** Maximum Ecw */ 3097*4882a593Smuzhiyun t_u8 ecw_max : 4; 3098*4882a593Smuzhiyun /** Minimum Ecw */ 3099*4882a593Smuzhiyun t_u8 ecw_min : 4; 3100*4882a593Smuzhiyun #else 3101*4882a593Smuzhiyun /** Minimum Ecw */ 3102*4882a593Smuzhiyun t_u8 ecw_min : 4; 3103*4882a593Smuzhiyun /** Maximum Ecw */ 3104*4882a593Smuzhiyun t_u8 ecw_max : 4; 3105*4882a593Smuzhiyun #endif /* BIG_ENDIAN_SUPPORT */ 3106*4882a593Smuzhiyun } MLAN_PACK_END WmmEcw_t, *pWmmEcw_t; 3107*4882a593Smuzhiyun 3108*4882a593Smuzhiyun /** Data structure of WMM Aci/Aifsn */ 3109*4882a593Smuzhiyun typedef MLAN_PACK_START struct _WmmAciAifsn_t { 3110*4882a593Smuzhiyun #ifdef BIG_ENDIAN_SUPPORT 3111*4882a593Smuzhiyun /** Reserved */ 3112*4882a593Smuzhiyun t_u8 reserved : 1; 3113*4882a593Smuzhiyun /** Aci */ 3114*4882a593Smuzhiyun t_u8 aci : 2; 3115*4882a593Smuzhiyun /** Acm */ 3116*4882a593Smuzhiyun t_u8 acm : 1; 3117*4882a593Smuzhiyun /** Aifsn */ 3118*4882a593Smuzhiyun t_u8 aifsn : 4; 3119*4882a593Smuzhiyun #else 3120*4882a593Smuzhiyun /** Aifsn */ 3121*4882a593Smuzhiyun t_u8 aifsn : 4; 3122*4882a593Smuzhiyun /** Acm */ 3123*4882a593Smuzhiyun t_u8 acm : 1; 3124*4882a593Smuzhiyun /** Aci */ 3125*4882a593Smuzhiyun t_u8 aci : 2; 3126*4882a593Smuzhiyun /** Reserved */ 3127*4882a593Smuzhiyun t_u8 reserved : 1; 3128*4882a593Smuzhiyun #endif /* BIG_ENDIAN_SUPPORT */ 3129*4882a593Smuzhiyun } MLAN_PACK_END WmmAciAifsn_t, *pWmmAciAifsn_t; 3130*4882a593Smuzhiyun 3131*4882a593Smuzhiyun /** Data structure of WMM AC parameters */ 3132*4882a593Smuzhiyun typedef MLAN_PACK_START struct _WmmAcParameters_t { 3133*4882a593Smuzhiyun WmmAciAifsn_t aci_aifsn; /**< AciAifSn */ 3134*4882a593Smuzhiyun WmmEcw_t ecw; /**< Ecw */ 3135*4882a593Smuzhiyun t_u16 tx_op_limit; /**< Tx op limit */ 3136*4882a593Smuzhiyun } MLAN_PACK_END WmmAcParameters_t, *pWmmAcParameters_t; 3137*4882a593Smuzhiyun 3138*4882a593Smuzhiyun /** Data structure of WMM parameter */ 3139*4882a593Smuzhiyun typedef MLAN_PACK_START struct _WmmParameter_t { 3140*4882a593Smuzhiyun /** OuiType: 00:50:f2:02 */ 3141*4882a593Smuzhiyun t_u8 ouitype[4]; 3142*4882a593Smuzhiyun /** Oui subtype: 01 */ 3143*4882a593Smuzhiyun t_u8 ouisubtype; 3144*4882a593Smuzhiyun /** version: 01 */ 3145*4882a593Smuzhiyun t_u8 version; 3146*4882a593Smuzhiyun /** QoS information */ 3147*4882a593Smuzhiyun t_u8 qos_info; 3148*4882a593Smuzhiyun /** Reserved */ 3149*4882a593Smuzhiyun t_u8 reserved; 3150*4882a593Smuzhiyun /** AC Parameters Record WMM_AC_BE, WMM_AC_BK, WMM_AC_VI, WMM_AC_VO */ 3151*4882a593Smuzhiyun WmmAcParameters_t ac_params[MAX_AC_QUEUES]; 3152*4882a593Smuzhiyun } MLAN_PACK_END WmmParameter_t, *pWmmParameter_t; 3153*4882a593Smuzhiyun 3154*4882a593Smuzhiyun /** Data structure of Host command WMM_PARAM_CFG */ 3155*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_WMM_PARAM_CONFIG { 3156*4882a593Smuzhiyun /** action */ 3157*4882a593Smuzhiyun t_u16 action; 3158*4882a593Smuzhiyun /** AC Parameters Record WMM_AC_BE, WMM_AC_BK, WMM_AC_VI, WMM_AC_VO */ 3159*4882a593Smuzhiyun WmmAcParameters_t ac_params[MAX_AC_QUEUES]; 3160*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_WMM_PARAM_CONFIG; 3161*4882a593Smuzhiyun 3162*4882a593Smuzhiyun /* Definition of firmware host command */ 3163*4882a593Smuzhiyun /** HostCmd_DS_GEN */ 3164*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_GEN { 3165*4882a593Smuzhiyun /** Command */ 3166*4882a593Smuzhiyun t_u16 command; 3167*4882a593Smuzhiyun /** Size */ 3168*4882a593Smuzhiyun t_u16 size; 3169*4882a593Smuzhiyun /** Sequence number */ 3170*4882a593Smuzhiyun t_u16 seq_num; 3171*4882a593Smuzhiyun /** Result */ 3172*4882a593Smuzhiyun t_u16 result; 3173*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_GEN 3174*4882a593Smuzhiyun 3175*4882a593Smuzhiyun ; 3176*4882a593Smuzhiyun 3177*4882a593Smuzhiyun /** Size of HostCmd_DS_GEN */ 3178*4882a593Smuzhiyun #define S_DS_GEN sizeof(HostCmd_DS_GEN) 3179*4882a593Smuzhiyun 3180*4882a593Smuzhiyun /** mod_group_setting */ 3181*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mod_group_setting { 3182*4882a593Smuzhiyun /** modulation group */ 3183*4882a593Smuzhiyun t_u8 mod_group; 3184*4882a593Smuzhiyun /** power */ 3185*4882a593Smuzhiyun t_u8 power; 3186*4882a593Smuzhiyun } MLAN_PACK_END mod_group_setting; 3187*4882a593Smuzhiyun 3188*4882a593Smuzhiyun /** MrvlIETypes_ChanTRPCConfig_t */ 3189*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_ChanTRPCConfig_t { 3190*4882a593Smuzhiyun /** Header */ 3191*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 3192*4882a593Smuzhiyun /** start freq */ 3193*4882a593Smuzhiyun t_u16 start_freq; 3194*4882a593Smuzhiyun /* channel width */ 3195*4882a593Smuzhiyun t_u8 width; 3196*4882a593Smuzhiyun /** channel number */ 3197*4882a593Smuzhiyun t_u8 chan_num; 3198*4882a593Smuzhiyun /** mode groups */ 3199*4882a593Smuzhiyun mod_group_setting mod_group[1]; 3200*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_ChanTRPCConfig_t; 3201*4882a593Smuzhiyun 3202*4882a593Smuzhiyun /* HostCmd_DS_CHANNEL_TRPC_CONFIG */ 3203*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CHANNEL_TRPC_CONFIG { 3204*4882a593Smuzhiyun /** action */ 3205*4882a593Smuzhiyun t_u16 action; 3206*4882a593Smuzhiyun /** 0/1/2/3 */ 3207*4882a593Smuzhiyun t_u16 sub_band; 3208*4882a593Smuzhiyun /** chan TRPC config */ 3209*4882a593Smuzhiyun // MrvlIETypes_ChanTRPCConfig_t tlv[]; 3210*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CHANNEL_TRPC_CONFIG; 3211*4882a593Smuzhiyun 3212*4882a593Smuzhiyun /** Address type: broadcast */ 3213*4882a593Smuzhiyun #define ADDR_TYPE_BROADCAST 1 3214*4882a593Smuzhiyun /* Address type: unicast */ 3215*4882a593Smuzhiyun #define ADDR_TYPE_UNICAST 2 3216*4882a593Smuzhiyun /* Address type: multicast */ 3217*4882a593Smuzhiyun #define ADDR_TYPE_MULTICAST 3 3218*4882a593Smuzhiyun 3219*4882a593Smuzhiyun /** Ether type: any */ 3220*4882a593Smuzhiyun #define ETHER_TYPE_ANY 0xffff 3221*4882a593Smuzhiyun /** Ether type: ARP */ 3222*4882a593Smuzhiyun #define ETHER_TYPE_ARP 0x0608 3223*4882a593Smuzhiyun 3224*4882a593Smuzhiyun /** IPv4 address any */ 3225*4882a593Smuzhiyun #define IPV4_ADDR_ANY 0xffffffff 3226*4882a593Smuzhiyun 3227*4882a593Smuzhiyun /** Header structure for ARP filter */ 3228*4882a593Smuzhiyun typedef MLAN_PACK_START struct _arpfilter_header { 3229*4882a593Smuzhiyun /** Type */ 3230*4882a593Smuzhiyun t_u16 type; 3231*4882a593Smuzhiyun /** TLV length */ 3232*4882a593Smuzhiyun t_u16 len; 3233*4882a593Smuzhiyun } MLAN_PACK_END arpfilter_header; 3234*4882a593Smuzhiyun 3235*4882a593Smuzhiyun /** Filter entry structure */ 3236*4882a593Smuzhiyun typedef MLAN_PACK_START struct _filter_entry { 3237*4882a593Smuzhiyun /** Address type */ 3238*4882a593Smuzhiyun t_u16 addr_type; 3239*4882a593Smuzhiyun /** Ether type */ 3240*4882a593Smuzhiyun t_u16 eth_type; 3241*4882a593Smuzhiyun /** IPv4 address */ 3242*4882a593Smuzhiyun t_u32 ipv4_addr; 3243*4882a593Smuzhiyun } MLAN_PACK_END filter_entry; 3244*4882a593Smuzhiyun 3245*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_MEF_CFG { 3246*4882a593Smuzhiyun /** Criteria */ 3247*4882a593Smuzhiyun t_u32 criteria; 3248*4882a593Smuzhiyun /** Number of entries */ 3249*4882a593Smuzhiyun t_u16 nentries; 3250*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MEF_CFG; 3251*4882a593Smuzhiyun 3252*4882a593Smuzhiyun #define MAX_NUM_STACK_BYTES 100 3253*4882a593Smuzhiyun /** mef stack struct*/ 3254*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mef_stack { 3255*4882a593Smuzhiyun /** length of byte*/ 3256*4882a593Smuzhiyun t_u16 sp; 3257*4882a593Smuzhiyun /** data of filter items*/ 3258*4882a593Smuzhiyun t_u8 byte[MAX_NUM_STACK_BYTES]; 3259*4882a593Smuzhiyun } MLAN_PACK_END mef_stack; 3260*4882a593Smuzhiyun 3261*4882a593Smuzhiyun /** mef entry struct */ 3262*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mef_entry_header { 3263*4882a593Smuzhiyun /**mode:1->hostsleep;2->non hostsleep mode*/ 3264*4882a593Smuzhiyun t_u8 mode; 3265*4882a593Smuzhiyun /**action=0->discard and not wake host 3266*4882a593Smuzhiyun * action=1->discard and wake host 3267*4882a593Smuzhiyun * action=3->allow and wake host*/ 3268*4882a593Smuzhiyun t_u8 action; 3269*4882a593Smuzhiyun } MLAN_PACK_END mef_entry_header; 3270*4882a593Smuzhiyun 3271*4882a593Smuzhiyun /** mef op struct is to help to generate mef data*/ 3272*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mef_op { 3273*4882a593Smuzhiyun /** operand_type*/ 3274*4882a593Smuzhiyun t_u8 operand_type; 3275*4882a593Smuzhiyun /** reserved*/ 3276*4882a593Smuzhiyun t_u8 rsvd[3]; 3277*4882a593Smuzhiyun /** data */ 3278*4882a593Smuzhiyun t_u8 val[MAX_NUM_BYTE_SEQ + 1]; 3279*4882a593Smuzhiyun } MLAN_PACK_END mef_op; 3280*4882a593Smuzhiyun 3281*4882a593Smuzhiyun /** Structure definition for low power mode cfg command */ 3282*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_LOW_POWER_MODE_CFG { 3283*4882a593Smuzhiyun /** Action */ 3284*4882a593Smuzhiyun t_u16 action; 3285*4882a593Smuzhiyun /** Low power mode */ 3286*4882a593Smuzhiyun t_u16 lpm; 3287*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_LOW_POWER_MODE_CFG; 3288*4882a593Smuzhiyun 3289*4882a593Smuzhiyun /* HostCmd_DS_802_11_SLEEP_PERIOD */ 3290*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SLEEP_PERIOD { 3291*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 3292*4882a593Smuzhiyun t_u16 action; 3293*4882a593Smuzhiyun 3294*4882a593Smuzhiyun /** Sleep Period in msec */ 3295*4882a593Smuzhiyun t_u16 sleep_pd; 3296*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_SLEEP_PERIOD; 3297*4882a593Smuzhiyun 3298*4882a593Smuzhiyun /* HostCmd_DS_802_11_SLEEP_PARAMS */ 3299*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SLEEP_PARAMS { 3300*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 3301*4882a593Smuzhiyun t_u16 action; 3302*4882a593Smuzhiyun /** Sleep clock error in ppm */ 3303*4882a593Smuzhiyun t_u16 error; 3304*4882a593Smuzhiyun /** Wakeup offset in usec */ 3305*4882a593Smuzhiyun t_u16 offset; 3306*4882a593Smuzhiyun /** Clock stabilization time in usec */ 3307*4882a593Smuzhiyun t_u16 stable_time; 3308*4882a593Smuzhiyun /** Control periodic calibration */ 3309*4882a593Smuzhiyun t_u8 cal_control; 3310*4882a593Smuzhiyun /** Control the use of external sleep clock */ 3311*4882a593Smuzhiyun t_u8 external_sleep_clk; 3312*4882a593Smuzhiyun /** Reserved field, should be set to zero */ 3313*4882a593Smuzhiyun t_u16 reserved; 3314*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_SLEEP_PARAMS; 3315*4882a593Smuzhiyun 3316*4882a593Smuzhiyun /** Sleep response control */ 3317*4882a593Smuzhiyun typedef enum _sleep_resp_ctrl { 3318*4882a593Smuzhiyun RESP_NOT_NEEDED = 0, 3319*4882a593Smuzhiyun RESP_NEEDED, 3320*4882a593Smuzhiyun } sleep_resp_ctrl; 3321*4882a593Smuzhiyun 3322*4882a593Smuzhiyun /** Structure definition for the new ieee power save parameters*/ 3323*4882a593Smuzhiyun typedef MLAN_PACK_START struct __ps_param { 3324*4882a593Smuzhiyun /** Null packet interval */ 3325*4882a593Smuzhiyun t_u16 null_pkt_interval; 3326*4882a593Smuzhiyun /** Num dtims */ 3327*4882a593Smuzhiyun t_u16 multiple_dtims; 3328*4882a593Smuzhiyun /** becaon miss interval */ 3329*4882a593Smuzhiyun t_u16 bcn_miss_timeout; 3330*4882a593Smuzhiyun /** local listen interval */ 3331*4882a593Smuzhiyun t_u16 local_listen_interval; 3332*4882a593Smuzhiyun /** Adhoc awake period */ 3333*4882a593Smuzhiyun t_u16 adhoc_wake_period; 3334*4882a593Smuzhiyun /** mode - (0x01 - firmware to automatically choose PS_POLL or NULL 3335*4882a593Smuzhiyun * mode, 0x02 - PS_POLL, 0x03 - NULL mode ) 3336*4882a593Smuzhiyun */ 3337*4882a593Smuzhiyun t_u16 mode; 3338*4882a593Smuzhiyun /** Delay to PS in milliseconds */ 3339*4882a593Smuzhiyun t_u16 delay_to_ps; 3340*4882a593Smuzhiyun } MLAN_PACK_END ps_param; 3341*4882a593Smuzhiyun 3342*4882a593Smuzhiyun /** Structure definition for the new auto deep sleep command */ 3343*4882a593Smuzhiyun typedef MLAN_PACK_START struct __auto_ds_param { 3344*4882a593Smuzhiyun /** Deep sleep inactivity timeout */ 3345*4882a593Smuzhiyun t_u16 deep_sleep_timeout; 3346*4882a593Smuzhiyun } MLAN_PACK_END auto_ds_param; 3347*4882a593Smuzhiyun 3348*4882a593Smuzhiyun /** Structure definition for sleep confirmation in the new ps command */ 3349*4882a593Smuzhiyun typedef MLAN_PACK_START struct __sleep_confirm_param { 3350*4882a593Smuzhiyun /** response control 0x00 - response not needed, 0x01 - response needed 3351*4882a593Smuzhiyun */ 3352*4882a593Smuzhiyun t_u16 resp_ctrl; 3353*4882a593Smuzhiyun } MLAN_PACK_END sleep_confirm_param; 3354*4882a593Smuzhiyun 3355*4882a593Smuzhiyun /** bitmap for get auto deepsleep */ 3356*4882a593Smuzhiyun #define BITMAP_AUTO_DS 0x01 3357*4882a593Smuzhiyun /** bitmap for sta power save */ 3358*4882a593Smuzhiyun #define BITMAP_STA_PS 0x10 3359*4882a593Smuzhiyun /** bitmap for beacon timeout */ 3360*4882a593Smuzhiyun #define BITMAP_BCN_TMO 0x20 3361*4882a593Smuzhiyun /** bitmap for uap inactivity based PS */ 3362*4882a593Smuzhiyun #define BITMAP_UAP_INACT_PS 0x100 3363*4882a593Smuzhiyun /** bitmap for uap DTIM PS */ 3364*4882a593Smuzhiyun #define BITMAP_UAP_DTIM_PS 0x200 3365*4882a593Smuzhiyun /** Structure definition for the new ieee power save parameters*/ 3366*4882a593Smuzhiyun typedef MLAN_PACK_START struct _auto_ps_param { 3367*4882a593Smuzhiyun /** bitmap for enable power save mode */ 3368*4882a593Smuzhiyun t_u16 ps_bitmap; 3369*4882a593Smuzhiyun /* auto deep sleep parameter, 3370*4882a593Smuzhiyun * sta power save parameter 3371*4882a593Smuzhiyun * uap inactivity parameter 3372*4882a593Smuzhiyun * uap DTIM parameter */ 3373*4882a593Smuzhiyun } MLAN_PACK_END auto_ps_param; 3374*4882a593Smuzhiyun 3375*4882a593Smuzhiyun /** fix size for auto ps */ 3376*4882a593Smuzhiyun #define AUTO_PS_FIX_SIZE 4 3377*4882a593Smuzhiyun 3378*4882a593Smuzhiyun /** TLV type : auto ds param */ 3379*4882a593Smuzhiyun #define TLV_TYPE_AUTO_DS_PARAM (PROPRIETARY_TLV_BASE_ID + 0x71) /* 0x0171 */ 3380*4882a593Smuzhiyun /** TLV type : ps param */ 3381*4882a593Smuzhiyun #define TLV_TYPE_PS_PARAM (PROPRIETARY_TLV_BASE_ID + 0x72) /* 0x0172 */ 3382*4882a593Smuzhiyun /** TLV type : beacon timeout */ 3383*4882a593Smuzhiyun #define TLV_TYPE_BCN_TIMEOUT (PROPRIETARY_TLV_BASE_ID + 0x11F) /* 0x011F */ 3384*4882a593Smuzhiyun 3385*4882a593Smuzhiyun /** MrvlIEtypes_auto_ds_param_t */ 3386*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_auto_ds_param_t { 3387*4882a593Smuzhiyun /** Header */ 3388*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 3389*4882a593Smuzhiyun /** auto ds param */ 3390*4882a593Smuzhiyun auto_ds_param param; 3391*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_auto_ds_param_t; 3392*4882a593Smuzhiyun 3393*4882a593Smuzhiyun /** MrvlIEtypes_ps_param_t */ 3394*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_ps_param_t { 3395*4882a593Smuzhiyun /** Header */ 3396*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 3397*4882a593Smuzhiyun /** ps param */ 3398*4882a593Smuzhiyun ps_param param; 3399*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ps_param_t; 3400*4882a593Smuzhiyun 3401*4882a593Smuzhiyun /** MrvlIEtypes_bcn_timeout_t */ 3402*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_bcn_timeout_t { 3403*4882a593Smuzhiyun /** Header */ 3404*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 3405*4882a593Smuzhiyun /** Beacon miss timeout period window */ 3406*4882a593Smuzhiyun t_u16 bcn_miss_tmo_window; 3407*4882a593Smuzhiyun /** Beacon miss timeout period */ 3408*4882a593Smuzhiyun t_u16 bcn_miss_tmo_period; 3409*4882a593Smuzhiyun /** Beacon reacquire timeout period window */ 3410*4882a593Smuzhiyun t_u16 bcn_rq_tmo_window; 3411*4882a593Smuzhiyun /** Beacon reacquire timeout period */ 3412*4882a593Smuzhiyun t_u16 bcn_rq_tmo_period; 3413*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_bcn_timeout_t; 3414*4882a593Smuzhiyun 3415*4882a593Smuzhiyun /** Structure definition for new power save command */ 3416*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_PS_MODE_ENH { 3417*4882a593Smuzhiyun /** Action */ 3418*4882a593Smuzhiyun t_u16 action; 3419*4882a593Smuzhiyun /** Data speciifc to action */ 3420*4882a593Smuzhiyun /* For IEEE power save data will be as 3421*4882a593Smuzhiyun * UINT16 mode (0x01 - firmware to automatically choose PS_POLL or NULL 3422*4882a593Smuzhiyun * mode, 0x02 - PS_POLL, 0x03 - NULL mode ) UINT16 NullpacketInterval 3423*4882a593Smuzhiyun * UINT16 NumDtims 3424*4882a593Smuzhiyun * UINT16 BeaconMissInterval 3425*4882a593Smuzhiyun * UINT16 locallisteninterval 3426*4882a593Smuzhiyun * UINT16 adhocawakeperiod */ 3427*4882a593Smuzhiyun 3428*4882a593Smuzhiyun /* For auto deep sleep */ 3429*4882a593Smuzhiyun /* UINT16 Deep sleep inactivity timeout*/ 3430*4882a593Smuzhiyun 3431*4882a593Smuzhiyun /* For PS sleep confirm 3432*4882a593Smuzhiyun * UINT16 responeCtrl - 0x00 - reponse from fw not needed, 0x01 - 3433*4882a593Smuzhiyun * response from fw is needed */ 3434*4882a593Smuzhiyun 3435*4882a593Smuzhiyun union { 3436*4882a593Smuzhiyun /** PS param definition */ 3437*4882a593Smuzhiyun ps_param opt_ps; 3438*4882a593Smuzhiyun /** Auto ds param definition */ 3439*4882a593Smuzhiyun auto_ds_param auto_ds; 3440*4882a593Smuzhiyun /** Sleep comfirm param definition */ 3441*4882a593Smuzhiyun sleep_confirm_param sleep_cfm; 3442*4882a593Smuzhiyun /** bitmap for get PS info and Disable PS mode */ 3443*4882a593Smuzhiyun t_u16 ps_bitmap; 3444*4882a593Smuzhiyun /** auto ps param */ 3445*4882a593Smuzhiyun auto_ps_param auto_ps; 3446*4882a593Smuzhiyun } params; 3447*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_PS_MODE_ENH; 3448*4882a593Smuzhiyun 3449*4882a593Smuzhiyun /** FW VERSION tlv */ 3450*4882a593Smuzhiyun #define TLV_TYPE_FW_VER_INFO (PROPRIETARY_TLV_BASE_ID + 0xC7) /* 0x1C7 */ 3451*4882a593Smuzhiyun 3452*4882a593Smuzhiyun /** MrvlIEtypes_fw_ver_info_t */ 3453*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_fw_ver_info_t { 3454*4882a593Smuzhiyun /** Header */ 3455*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 3456*4882a593Smuzhiyun /** API id */ 3457*4882a593Smuzhiyun t_u16 api_id; 3458*4882a593Smuzhiyun /** major version */ 3459*4882a593Smuzhiyun t_u8 major_ver; 3460*4882a593Smuzhiyun /** minor version */ 3461*4882a593Smuzhiyun t_u8 minor_ver; 3462*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_fw_ver_info_t; 3463*4882a593Smuzhiyun 3464*4882a593Smuzhiyun /** API ID */ 3465*4882a593Smuzhiyun enum API_VER_ID { 3466*4882a593Smuzhiyun KEY_API_VER_ID = 1, 3467*4882a593Smuzhiyun FW_API_VER_ID = 2, 3468*4882a593Smuzhiyun UAP_FW_API_VER_ID = 3, 3469*4882a593Smuzhiyun CHANRPT_API_VER_ID = 4, 3470*4882a593Smuzhiyun FW_HOTFIX_VER_ID = 5, 3471*4882a593Smuzhiyun }; 3472*4882a593Smuzhiyun 3473*4882a593Smuzhiyun /** FW AP V15 */ 3474*4882a593Smuzhiyun #define HOST_API_VERSION_V15 15 3475*4882a593Smuzhiyun /** FW minor version 1 */ 3476*4882a593Smuzhiyun #define FW_MINOR_VERSION_1 1 3477*4882a593Smuzhiyun 3478*4882a593Smuzhiyun /** UAP FW version 2 */ 3479*4882a593Smuzhiyun #define UAP_FW_VERSION_2 0x2 3480*4882a593Smuzhiyun 3481*4882a593Smuzhiyun /** HostCMD_DS_APCMD_ACS_SCAN */ 3482*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCMD_DS_APCMD_ACS_SCAN { 3483*4882a593Smuzhiyun /** band */ 3484*4882a593Smuzhiyun Band_Config_t bandcfg; 3485*4882a593Smuzhiyun /** channel */ 3486*4882a593Smuzhiyun t_u8 chan; 3487*4882a593Smuzhiyun } MLAN_PACK_END HostCMD_DS_APCMD_ACS_SCAN; 3488*4882a593Smuzhiyun 3489*4882a593Smuzhiyun /** HostCmd_DS_GET_HW_SPEC */ 3490*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_GET_HW_SPEC { 3491*4882a593Smuzhiyun /** HW Interface version number */ 3492*4882a593Smuzhiyun t_u16 hw_if_version; 3493*4882a593Smuzhiyun /** HW version number */ 3494*4882a593Smuzhiyun t_u16 version; 3495*4882a593Smuzhiyun /** Reserved field */ 3496*4882a593Smuzhiyun t_u16 reserved; 3497*4882a593Smuzhiyun /** Max no of Multicast address */ 3498*4882a593Smuzhiyun t_u16 num_of_mcast_adr; 3499*4882a593Smuzhiyun /** MAC address */ 3500*4882a593Smuzhiyun t_u8 permanent_addr[MLAN_MAC_ADDR_LENGTH]; 3501*4882a593Smuzhiyun /** Region Code */ 3502*4882a593Smuzhiyun t_u16 region_code; 3503*4882a593Smuzhiyun /** Number of antenna used */ 3504*4882a593Smuzhiyun t_u16 number_of_antenna; 3505*4882a593Smuzhiyun /** FW release number, example 0x1234=1.2.3.4 */ 3506*4882a593Smuzhiyun t_u32 fw_release_number; 3507*4882a593Smuzhiyun /** Reserved field */ 3508*4882a593Smuzhiyun t_u32 reserved_1; 3509*4882a593Smuzhiyun /** Reserved field */ 3510*4882a593Smuzhiyun t_u32 reserved_2; 3511*4882a593Smuzhiyun /** Reserved field */ 3512*4882a593Smuzhiyun t_u32 reserved_3; 3513*4882a593Smuzhiyun /** FW/HW Capability */ 3514*4882a593Smuzhiyun t_u32 fw_cap_info; 3515*4882a593Smuzhiyun /** 802.11n Device Capabilities */ 3516*4882a593Smuzhiyun t_u32 dot_11n_dev_cap; 3517*4882a593Smuzhiyun /** MIMO abstraction of MCSs supported by device */ 3518*4882a593Smuzhiyun t_u8 dev_mcs_support; 3519*4882a593Smuzhiyun /** Valid end port at init */ 3520*4882a593Smuzhiyun t_u16 mp_end_port; 3521*4882a593Smuzhiyun /** mgmt IE buffer count */ 3522*4882a593Smuzhiyun t_u16 mgmt_buf_count; 3523*4882a593Smuzhiyun /** Reserved */ 3524*4882a593Smuzhiyun t_u32 reserved_8; 3525*4882a593Smuzhiyun /** Reserved */ 3526*4882a593Smuzhiyun t_u32 reserved_9; 3527*4882a593Smuzhiyun /** 802.11ac Device Capabilities */ 3528*4882a593Smuzhiyun t_u32 Dot11acDevCap; 3529*4882a593Smuzhiyun /** MCSs supported by 802.11ac device */ 3530*4882a593Smuzhiyun t_u32 Dot11acMcsSupport; 3531*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_GET_HW_SPEC; 3532*4882a593Smuzhiyun 3533*4882a593Smuzhiyun #ifdef SDIO 3534*4882a593Smuzhiyun /* HostCmd_DS_SDIO_SP_RX_AGGR_CFG */ 3535*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_SDIO_SP_RX_AGGR_CFG { 3536*4882a593Smuzhiyun t_u8 action; 3537*4882a593Smuzhiyun t_u8 enable; 3538*4882a593Smuzhiyun t_u16 sdio_block_size; 3539*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_SDIO_SP_RX_AGGR_CFG; 3540*4882a593Smuzhiyun #endif 3541*4882a593Smuzhiyun 3542*4882a593Smuzhiyun /** HostCmd_DS_802_11_CFG_DATA */ 3543*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_CFG_DATA { 3544*4882a593Smuzhiyun /** Action */ 3545*4882a593Smuzhiyun t_u16 action; 3546*4882a593Smuzhiyun /** Type */ 3547*4882a593Smuzhiyun t_u16 type; 3548*4882a593Smuzhiyun /** Data length */ 3549*4882a593Smuzhiyun t_u16 data_len; 3550*4882a593Smuzhiyun /** Data */ 3551*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_CFG_DATA; 3552*4882a593Smuzhiyun 3553*4882a593Smuzhiyun /** HostCmd_DS_CMD_802_11_RSSI_INFO_EXT */ 3554*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RSSI_INFO_EXT { 3555*4882a593Smuzhiyun /** Action */ 3556*4882a593Smuzhiyun t_u16 action; 3557*4882a593Smuzhiyun /** Parameter used for exponential averaging for Data */ 3558*4882a593Smuzhiyun t_u16 ndata; 3559*4882a593Smuzhiyun /** Parameter used for exponential averaging for Beacon */ 3560*4882a593Smuzhiyun t_u16 nbcn; 3561*4882a593Smuzhiyun /** Last RSSI beacon TSF(only for Get action) */ 3562*4882a593Smuzhiyun t_u64 tsfbcn; 3563*4882a593Smuzhiyun /** TLV info**/ 3564*4882a593Smuzhiyun t_u8 *tlv_buf[]; 3565*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_RSSI_INFO_EXT; 3566*4882a593Smuzhiyun 3567*4882a593Smuzhiyun /** TLV rssi info */ 3568*4882a593Smuzhiyun #define TLV_TYPE_RSSI_INFO (PROPRIETARY_TLV_BASE_ID + 0xe5) /* 0x01E5 */ 3569*4882a593Smuzhiyun 3570*4882a593Smuzhiyun /** MrvlIEtypes_eapol_pkt_t */ 3571*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_RSSI_EXT_t { 3572*4882a593Smuzhiyun /** Header */ 3573*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 3574*4882a593Smuzhiyun /** Path ID 3575*4882a593Smuzhiyun [Bit1:Bit0] = [0:1]: path A 3576*4882a593Smuzhiyun [Bit1:Bit0] = [1:0]: path B 3577*4882a593Smuzhiyun [Bit1:Bit0] = [1:1]: combined signal of path A and path B 3578*4882a593Smuzhiyun [Bit7:Bit2] : Reserved 3579*4882a593Smuzhiyun **/ 3580*4882a593Smuzhiyun t_u16 path_id; 3581*4882a593Smuzhiyun /** Last Data RSSI in dBm */ 3582*4882a593Smuzhiyun t_s16 data_rssi_last; 3583*4882a593Smuzhiyun /** Last Data NF in dBm */ 3584*4882a593Smuzhiyun t_s16 data_nf_last; 3585*4882a593Smuzhiyun /** AVG DATA RSSI in dBm */ 3586*4882a593Smuzhiyun t_s16 data_rssi_avg; 3587*4882a593Smuzhiyun /** AVG DATA NF in dBm */ 3588*4882a593Smuzhiyun t_s16 data_nf_avg; 3589*4882a593Smuzhiyun /** Last BEACON RSSI in dBm */ 3590*4882a593Smuzhiyun t_s16 bcn_rssi_last; 3591*4882a593Smuzhiyun /** Last BEACON NF in dBm */ 3592*4882a593Smuzhiyun t_s16 bcn_nf_last; 3593*4882a593Smuzhiyun /** AVG BEACON RSSI in dBm */ 3594*4882a593Smuzhiyun t_s16 bcn_rssi_avg; 3595*4882a593Smuzhiyun /** AVG BEACON NF in dBm */ 3596*4882a593Smuzhiyun t_s16 bcn_nf_avg; 3597*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_RSSI_EXT_t; 3598*4882a593Smuzhiyun 3599*4882a593Smuzhiyun /** HostCmd_DS_CMD_MC_AGGR_CFG */ 3600*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_MC_AGGR_CFG { 3601*4882a593Smuzhiyun /** Action */ 3602*4882a593Smuzhiyun t_u16 action; 3603*4882a593Smuzhiyun /** Reserved field 1 */ 3604*4882a593Smuzhiyun t_u16 reserved_1; 3605*4882a593Smuzhiyun /* 1 enable, 0 disable 3606*4882a593Smuzhiyun * bit 0 MC aggregation 3607*4882a593Smuzhiyun * bit 1 packet expiry 3608*4882a593Smuzhiyun * bit 2 CTS2Self 3609*4882a593Smuzhiyun * bit 3 CTS2Self duration offset*/ 3610*4882a593Smuzhiyun t_u8 enable_bitmap; 3611*4882a593Smuzhiyun /* 1 valid, 0 invalid 3612*4882a593Smuzhiyun * bit 0 MC aggregation 3613*4882a593Smuzhiyun * bit 1 packet expiry 3614*4882a593Smuzhiyun * bit 2 CTS2Self 3615*4882a593Smuzhiyun * bit 3 CTS2Self duration offset*/ 3616*4882a593Smuzhiyun t_u8 mask_bitmap; 3617*4882a593Smuzhiyun /** CTS2Self duration offset */ 3618*4882a593Smuzhiyun t_u16 cts2self_offset; 3619*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MC_AGGR_CFG; 3620*4882a593Smuzhiyun 3621*4882a593Smuzhiyun /** Stats_Cfg_Params_TLV */ 3622*4882a593Smuzhiyun typedef struct MLAN_PACK_START _Stats_Cfg_Params_TLV { 3623*4882a593Smuzhiyun /** tlvHeader */ 3624*4882a593Smuzhiyun MrvlIEtypesHeader_t tlvHeader; 3625*4882a593Smuzhiyun /** op */ 3626*4882a593Smuzhiyun t_u8 op; 3627*4882a593Smuzhiyun /** reserved */ 3628*4882a593Smuzhiyun t_u8 reserved; 3629*4882a593Smuzhiyun /** mac */ 3630*4882a593Smuzhiyun mlan_802_11_mac_addr mac; 3631*4882a593Smuzhiyun } MLAN_PACK_END Stats_Cfg_Params_TLV_t; 3632*4882a593Smuzhiyun 3633*4882a593Smuzhiyun /** HostCmd_DS_STATS */ 3634*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_STATS { 3635*4882a593Smuzhiyun /** Action */ 3636*4882a593Smuzhiyun t_u16 action; 3637*4882a593Smuzhiyun /** TLV buffer */ 3638*4882a593Smuzhiyun t_u8 tlv_buffer[1]; 3639*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_STATS; 3640*4882a593Smuzhiyun 3641*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_GET_CH_LOAD { 3642*4882a593Smuzhiyun /** Action */ 3643*4882a593Smuzhiyun t_u16 action; 3644*4882a593Smuzhiyun t_u16 ch_load; 3645*4882a593Smuzhiyun t_s16 noise; 3646*4882a593Smuzhiyun t_u16 rx_quality; 3647*4882a593Smuzhiyun t_u16 duration; 3648*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_GET_CH_LOAD; 3649*4882a593Smuzhiyun 3650*4882a593Smuzhiyun /** HostCmd_DS_CMD_802_11_RSSI_INFO */ 3651*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RSSI_INFO { 3652*4882a593Smuzhiyun /** Action */ 3653*4882a593Smuzhiyun t_u16 action; 3654*4882a593Smuzhiyun /** Parameter used for exponential averaging for Data */ 3655*4882a593Smuzhiyun t_u16 ndata; 3656*4882a593Smuzhiyun /** Parameter used for exponential averaging for Beacon */ 3657*4882a593Smuzhiyun t_u16 nbcn; 3658*4882a593Smuzhiyun /** Reserved field 0 */ 3659*4882a593Smuzhiyun t_u16 reserved[9]; 3660*4882a593Smuzhiyun /** Reserved field 1 */ 3661*4882a593Smuzhiyun t_u64 reserved_1; 3662*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_RSSI_INFO; 3663*4882a593Smuzhiyun 3664*4882a593Smuzhiyun /** HostCmd_DS_802_11_RSSI_INFO_RSP */ 3665*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RSSI_INFO_RSP { 3666*4882a593Smuzhiyun /** Action */ 3667*4882a593Smuzhiyun t_u16 action; 3668*4882a593Smuzhiyun /** Parameter used for exponential averaging for Data */ 3669*4882a593Smuzhiyun t_u16 ndata; 3670*4882a593Smuzhiyun /** Parameter used for exponential averaging for beacon */ 3671*4882a593Smuzhiyun t_u16 nbcn; 3672*4882a593Smuzhiyun /** Last Data RSSI in dBm */ 3673*4882a593Smuzhiyun t_s16 data_rssi_last; 3674*4882a593Smuzhiyun /** Last Data NF in dBm */ 3675*4882a593Smuzhiyun t_s16 data_nf_last; 3676*4882a593Smuzhiyun /** AVG DATA RSSI in dBm */ 3677*4882a593Smuzhiyun t_s16 data_rssi_avg; 3678*4882a593Smuzhiyun /** AVG DATA NF in dBm */ 3679*4882a593Smuzhiyun t_s16 data_nf_avg; 3680*4882a593Smuzhiyun /** Last BEACON RSSI in dBm */ 3681*4882a593Smuzhiyun t_s16 bcn_rssi_last; 3682*4882a593Smuzhiyun /** Last BEACON NF in dBm */ 3683*4882a593Smuzhiyun t_s16 bcn_nf_last; 3684*4882a593Smuzhiyun /** AVG BEACON RSSI in dBm */ 3685*4882a593Smuzhiyun t_s16 bcn_rssi_avg; 3686*4882a593Smuzhiyun /** AVG BEACON NF in dBm */ 3687*4882a593Smuzhiyun t_s16 bcn_nf_avg; 3688*4882a593Smuzhiyun /** Last RSSI Beacon TSF */ 3689*4882a593Smuzhiyun t_u64 tsf_bcn; 3690*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_RSSI_INFO_RSP; 3691*4882a593Smuzhiyun 3692*4882a593Smuzhiyun /** HostCmd_DS_802_11_MAC_ADDRESS */ 3693*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_MAC_ADDRESS { 3694*4882a593Smuzhiyun /** Action */ 3695*4882a593Smuzhiyun t_u16 action; 3696*4882a593Smuzhiyun /** MAC address */ 3697*4882a593Smuzhiyun t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH]; 3698*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_MAC_ADDRESS; 3699*4882a593Smuzhiyun 3700*4882a593Smuzhiyun /** HostCmd_DS_MAC_CONTROL */ 3701*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_MAC_CONTROL { 3702*4882a593Smuzhiyun /** Action */ 3703*4882a593Smuzhiyun t_u32 action; 3704*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MAC_CONTROL; 3705*4882a593Smuzhiyun 3706*4882a593Smuzhiyun /** HostCmd_DS_802_11_NET_MONITOR */ 3707*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_802_11_DS_NET_MONITOR { 3708*4882a593Smuzhiyun /** Action */ 3709*4882a593Smuzhiyun t_u16 action; 3710*4882a593Smuzhiyun /** Enable/disable net monitor */ 3711*4882a593Smuzhiyun t_u16 enable_net_mon; 3712*4882a593Smuzhiyun /** set net monitor filer flag */ 3713*4882a593Smuzhiyun t_u16 filter_flag; 3714*4882a593Smuzhiyun /** Channel to monitor */ 3715*4882a593Smuzhiyun MrvlIEtypes_ChanBandListParamSet_t monitor_chan; 3716*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_NET_MONITOR; 3717*4882a593Smuzhiyun 3718*4882a593Smuzhiyun /** HostCmd_DS_CMD_TX_DATA_PAUSE */ 3719*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CMD_TX_DATA_PAUSE { 3720*4882a593Smuzhiyun /** Action */ 3721*4882a593Smuzhiyun t_u16 action; 3722*4882a593Smuzhiyun /** Enable/disable Tx data pause */ 3723*4882a593Smuzhiyun t_u8 enable_tx_pause; 3724*4882a593Smuzhiyun /** Max number of TX buffers allowed for all PS clients*/ 3725*4882a593Smuzhiyun t_u8 pause_tx_count; 3726*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CMD_TX_DATA_PAUSE; 3727*4882a593Smuzhiyun 3728*4882a593Smuzhiyun /** TLV type : TX pause TLV */ 3729*4882a593Smuzhiyun #define TLV_TYPE_TX_PAUSE (PROPRIETARY_TLV_BASE_ID + 0x94) /* 0x0194 */ 3730*4882a593Smuzhiyun /** MrvlIEtypes_SsIdParamSet_t */ 3731*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_tx_pause_t { 3732*4882a593Smuzhiyun /** Header */ 3733*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 3734*4882a593Smuzhiyun /** peer mac address */ 3735*4882a593Smuzhiyun t_u8 peermac[MLAN_MAC_ADDR_LENGTH]; 3736*4882a593Smuzhiyun /** Tx pause state, 1--pause, 0--free flowing */ 3737*4882a593Smuzhiyun t_u8 tx_pause; 3738*4882a593Smuzhiyun /** total packets queued for the client */ 3739*4882a593Smuzhiyun t_u8 pkt_cnt; 3740*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_tx_pause_t; 3741*4882a593Smuzhiyun 3742*4882a593Smuzhiyun /** HostCmd_CMD_MAC_MULTICAST_ADR */ 3743*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_MAC_MULTICAST_ADR { 3744*4882a593Smuzhiyun /** Action */ 3745*4882a593Smuzhiyun t_u16 action; 3746*4882a593Smuzhiyun /** Number of addresses */ 3747*4882a593Smuzhiyun t_u16 num_of_adrs; 3748*4882a593Smuzhiyun /** List of MAC */ 3749*4882a593Smuzhiyun t_u8 mac_list[MLAN_MAC_ADDR_LENGTH * MLAN_MAX_MULTICAST_LIST_SIZE]; 3750*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MAC_MULTICAST_ADR; 3751*4882a593Smuzhiyun 3752*4882a593Smuzhiyun /** HostCmd_CMD_802_11_DEAUTHENTICATE */ 3753*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_DEAUTHENTICATE { 3754*4882a593Smuzhiyun /** MAC address */ 3755*4882a593Smuzhiyun t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH]; 3756*4882a593Smuzhiyun /** Deauthentication resaon code */ 3757*4882a593Smuzhiyun t_u16 reason_code; 3758*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_DEAUTHENTICATE; 3759*4882a593Smuzhiyun 3760*4882a593Smuzhiyun /** HostCmd_DS_802_11_ASSOCIATE */ 3761*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_ASSOCIATE { 3762*4882a593Smuzhiyun /** Peer STA address */ 3763*4882a593Smuzhiyun t_u8 peer_sta_addr[MLAN_MAC_ADDR_LENGTH]; 3764*4882a593Smuzhiyun /** Capability information */ 3765*4882a593Smuzhiyun IEEEtypes_CapInfo_t cap_info; 3766*4882a593Smuzhiyun /** Listen interval */ 3767*4882a593Smuzhiyun t_u16 listen_interval; 3768*4882a593Smuzhiyun /** Beacon period */ 3769*4882a593Smuzhiyun t_u16 beacon_period; 3770*4882a593Smuzhiyun /** DTIM period */ 3771*4882a593Smuzhiyun t_u8 dtim_period; 3772*4882a593Smuzhiyun 3773*4882a593Smuzhiyun /** 3774*4882a593Smuzhiyun * MrvlIEtypes_SsIdParamSet_t SsIdParamSet; 3775*4882a593Smuzhiyun * MrvlIEtypes_PhyParamSet_t PhyParamSet; 3776*4882a593Smuzhiyun * MrvlIEtypes_SsParamSet_t SsParamSet; 3777*4882a593Smuzhiyun * MrvlIEtypes_RatesParamSet_t RatesParamSet; 3778*4882a593Smuzhiyun */ 3779*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_ASSOCIATE; 3780*4882a593Smuzhiyun 3781*4882a593Smuzhiyun /** HostCmd_CMD_802_11_ASSOCIATE response */ 3782*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_ASSOCIATE_RSP { 3783*4882a593Smuzhiyun /** Association response structure */ 3784*4882a593Smuzhiyun IEEEtypes_AssocRsp_t assoc_rsp; 3785*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_ASSOCIATE_RSP; 3786*4882a593Smuzhiyun 3787*4882a593Smuzhiyun /** HostCmd_DS_802_11_AD_HOC_START*/ 3788*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_AD_HOC_START { 3789*4882a593Smuzhiyun /** AdHoc SSID */ 3790*4882a593Smuzhiyun t_u8 ssid[MLAN_MAX_SSID_LENGTH]; 3791*4882a593Smuzhiyun /** BSS mode */ 3792*4882a593Smuzhiyun t_u8 bss_mode; 3793*4882a593Smuzhiyun /** Beacon period */ 3794*4882a593Smuzhiyun t_u16 beacon_period; 3795*4882a593Smuzhiyun /** DTIM period */ 3796*4882a593Smuzhiyun t_u8 dtim_period; 3797*4882a593Smuzhiyun /** SS parameter set */ 3798*4882a593Smuzhiyun IEEEtypes_SsParamSet_t ss_param_set; 3799*4882a593Smuzhiyun /** PHY parameter set */ 3800*4882a593Smuzhiyun IEEEtypes_PhyParamSet_t phy_param_set; 3801*4882a593Smuzhiyun /** Reserved field */ 3802*4882a593Smuzhiyun t_u16 reserved1; 3803*4882a593Smuzhiyun /** Capability information */ 3804*4882a593Smuzhiyun IEEEtypes_CapInfo_t cap; 3805*4882a593Smuzhiyun /** Supported data rates */ 3806*4882a593Smuzhiyun t_u8 DataRate[HOSTCMD_SUPPORTED_RATES]; 3807*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_AD_HOC_START; 3808*4882a593Smuzhiyun 3809*4882a593Smuzhiyun /** HostCmd_CMD_802_11_AD_HOC_START response */ 3810*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_AD_HOC_START_RESULT { 3811*4882a593Smuzhiyun /** Padding */ 3812*4882a593Smuzhiyun t_u8 pad[3]; 3813*4882a593Smuzhiyun /** AdHoc BSSID */ 3814*4882a593Smuzhiyun t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 3815*4882a593Smuzhiyun /** Padding to sync with FW structure*/ 3816*4882a593Smuzhiyun t_u8 pad2[2]; 3817*4882a593Smuzhiyun /** Result */ 3818*4882a593Smuzhiyun t_u8 result; 3819*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_AD_HOC_START_RESULT; 3820*4882a593Smuzhiyun 3821*4882a593Smuzhiyun /** HostCmd_CMD_802_11_AD_HOC_START response */ 3822*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_AD_HOC_JOIN_RESULT { 3823*4882a593Smuzhiyun /** Result */ 3824*4882a593Smuzhiyun t_u8 result; 3825*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_AD_HOC_JOIN_RESULT; 3826*4882a593Smuzhiyun 3827*4882a593Smuzhiyun /** AdHoc_BssDesc_t */ 3828*4882a593Smuzhiyun typedef MLAN_PACK_START struct _AdHoc_BssDesc_t { 3829*4882a593Smuzhiyun /** BSSID */ 3830*4882a593Smuzhiyun t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 3831*4882a593Smuzhiyun /** SSID */ 3832*4882a593Smuzhiyun t_u8 ssid[MLAN_MAX_SSID_LENGTH]; 3833*4882a593Smuzhiyun /** BSS mode */ 3834*4882a593Smuzhiyun t_u8 bss_mode; 3835*4882a593Smuzhiyun /** Beacon period */ 3836*4882a593Smuzhiyun t_u16 beacon_period; 3837*4882a593Smuzhiyun /** DTIM period */ 3838*4882a593Smuzhiyun t_u8 dtim_period; 3839*4882a593Smuzhiyun /** Timestamp */ 3840*4882a593Smuzhiyun t_u8 time_stamp[8]; 3841*4882a593Smuzhiyun /** Local time */ 3842*4882a593Smuzhiyun t_u8 local_time[8]; 3843*4882a593Smuzhiyun /** PHY parameter set */ 3844*4882a593Smuzhiyun IEEEtypes_PhyParamSet_t phy_param_set; 3845*4882a593Smuzhiyun /** SS parameter set */ 3846*4882a593Smuzhiyun IEEEtypes_SsParamSet_t ss_param_set; 3847*4882a593Smuzhiyun /** Capability information */ 3848*4882a593Smuzhiyun IEEEtypes_CapInfo_t cap; 3849*4882a593Smuzhiyun /** Supported data rates */ 3850*4882a593Smuzhiyun t_u8 data_rates[HOSTCMD_SUPPORTED_RATES]; 3851*4882a593Smuzhiyun 3852*4882a593Smuzhiyun /* 3853*4882a593Smuzhiyun * DO NOT ADD ANY FIELDS TO THIS STRUCTURE. 3854*4882a593Smuzhiyun * It is used in the Adhoc join command and will cause a 3855*4882a593Smuzhiyun * binary layout mismatch with the firmware 3856*4882a593Smuzhiyun */ 3857*4882a593Smuzhiyun } MLAN_PACK_END AdHoc_BssDesc_t; 3858*4882a593Smuzhiyun 3859*4882a593Smuzhiyun /** HostCmd_DS_802_11_AD_HOC_JOIN */ 3860*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_AD_HOC_JOIN { 3861*4882a593Smuzhiyun /** AdHoc BSS descriptor */ 3862*4882a593Smuzhiyun AdHoc_BssDesc_t bss_descriptor; 3863*4882a593Smuzhiyun /** Reserved field */ 3864*4882a593Smuzhiyun t_u16 reserved1; 3865*4882a593Smuzhiyun /** Reserved field */ 3866*4882a593Smuzhiyun t_u16 reserved2; 3867*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_AD_HOC_JOIN; 3868*4882a593Smuzhiyun 3869*4882a593Smuzhiyun #if defined(SDIO) 3870*4882a593Smuzhiyun /** Interrupt Raising Edge */ 3871*4882a593Smuzhiyun #define INT_RASING_EDGE 0 3872*4882a593Smuzhiyun /** Interrupt Falling Edge */ 3873*4882a593Smuzhiyun #define INT_FALLING_EDGE 1 3874*4882a593Smuzhiyun 3875*4882a593Smuzhiyun /** Delay 1 usec */ 3876*4882a593Smuzhiyun #define DELAY_1_US 1 3877*4882a593Smuzhiyun 3878*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_SDIO_GPIO_INT_CONFIG { 3879*4882a593Smuzhiyun /** Action */ 3880*4882a593Smuzhiyun t_u16 action; 3881*4882a593Smuzhiyun /** GPIO interrupt pin */ 3882*4882a593Smuzhiyun t_u16 gpio_pin; 3883*4882a593Smuzhiyun /** GPIO interrupt edge, 1: failing edge; 0: raising edge */ 3884*4882a593Smuzhiyun t_u16 gpio_int_edge; 3885*4882a593Smuzhiyun /** GPIO interrupt pulse widthin usec units */ 3886*4882a593Smuzhiyun t_u16 gpio_pulse_width; 3887*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_SDIO_GPIO_INT_CONFIG; 3888*4882a593Smuzhiyun #endif /* GPIO_SDIO_INT_CTRL */ 3889*4882a593Smuzhiyun 3890*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_SDIO_PULL_CTRL { 3891*4882a593Smuzhiyun /** Action */ 3892*4882a593Smuzhiyun t_u16 action; 3893*4882a593Smuzhiyun /** The delay of pulling up in us */ 3894*4882a593Smuzhiyun t_u16 pull_up; 3895*4882a593Smuzhiyun /** The delay of pulling down in us */ 3896*4882a593Smuzhiyun t_u16 pull_down; 3897*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_SDIO_PULL_CTRL; 3898*4882a593Smuzhiyun 3899*4882a593Smuzhiyun /** HostCmd_DS_802_11_GET_LOG */ 3900*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_GET_LOG { 3901*4882a593Smuzhiyun /** Number of multicast transmitted frames */ 3902*4882a593Smuzhiyun t_u32 mcast_tx_frame; 3903*4882a593Smuzhiyun /** Number of failures */ 3904*4882a593Smuzhiyun t_u32 failed; 3905*4882a593Smuzhiyun /** Number of retries */ 3906*4882a593Smuzhiyun t_u32 retry; 3907*4882a593Smuzhiyun /** Number of multiretries */ 3908*4882a593Smuzhiyun t_u32 multiretry; 3909*4882a593Smuzhiyun /** Number of duplicate frames */ 3910*4882a593Smuzhiyun t_u32 frame_dup; 3911*4882a593Smuzhiyun /** Number of RTS success */ 3912*4882a593Smuzhiyun t_u32 rts_success; 3913*4882a593Smuzhiyun /** Number of RTS failure */ 3914*4882a593Smuzhiyun t_u32 rts_failure; 3915*4882a593Smuzhiyun /** Number of acknowledgement failure */ 3916*4882a593Smuzhiyun t_u32 ack_failure; 3917*4882a593Smuzhiyun /** Number of fragmented packets received */ 3918*4882a593Smuzhiyun t_u32 rx_frag; 3919*4882a593Smuzhiyun /** Number of multicast frames received */ 3920*4882a593Smuzhiyun t_u32 mcast_rx_frame; 3921*4882a593Smuzhiyun /** FCS error */ 3922*4882a593Smuzhiyun t_u32 fcs_error; 3923*4882a593Smuzhiyun /** Number of transmitted frames */ 3924*4882a593Smuzhiyun t_u32 tx_frame; 3925*4882a593Smuzhiyun /** Reserved field */ 3926*4882a593Smuzhiyun t_u32 reserved; 3927*4882a593Smuzhiyun /** Number of WEP icv error for each key */ 3928*4882a593Smuzhiyun t_u32 wep_icv_err_cnt[4]; 3929*4882a593Smuzhiyun /** Beacon received count */ 3930*4882a593Smuzhiyun t_u32 bcn_rcv_cnt; 3931*4882a593Smuzhiyun /** Beacon missed count */ 3932*4882a593Smuzhiyun t_u32 bcn_miss_cnt; 3933*4882a593Smuzhiyun /** Tx frag count */ 3934*4882a593Smuzhiyun t_u32 tx_frag_cnt; 3935*4882a593Smuzhiyun /** Qos Tx frag count */ 3936*4882a593Smuzhiyun t_u32 qos_tx_frag_cnt[8]; 3937*4882a593Smuzhiyun /** Qos failed count */ 3938*4882a593Smuzhiyun t_u32 qos_failed_cnt[8]; 3939*4882a593Smuzhiyun /** Qos retry count */ 3940*4882a593Smuzhiyun t_u32 qos_retry_cnt[8]; 3941*4882a593Smuzhiyun /** Qos multi retry count */ 3942*4882a593Smuzhiyun t_u32 qos_multi_retry_cnt[8]; 3943*4882a593Smuzhiyun /** Qos frame dup count */ 3944*4882a593Smuzhiyun t_u32 qos_frm_dup_cnt[8]; 3945*4882a593Smuzhiyun /** Qos rts success count */ 3946*4882a593Smuzhiyun t_u32 qos_rts_suc_cnt[8]; 3947*4882a593Smuzhiyun /** Qos rts failure count */ 3948*4882a593Smuzhiyun t_u32 qos_rts_failure_cnt[8]; 3949*4882a593Smuzhiyun /** Qos ack failure count */ 3950*4882a593Smuzhiyun t_u32 qos_ack_failure_cnt[8]; 3951*4882a593Smuzhiyun /** Qos Rx frag count */ 3952*4882a593Smuzhiyun t_u32 qos_rx_frag_cnt[8]; 3953*4882a593Smuzhiyun /** Qos Tx frame count */ 3954*4882a593Smuzhiyun t_u32 qos_tx_frm_cnt[8]; 3955*4882a593Smuzhiyun /** Qos discarded frame count */ 3956*4882a593Smuzhiyun t_u32 qos_discarded_frm_cnt[8]; 3957*4882a593Smuzhiyun /** Qos mpdus Rx count */ 3958*4882a593Smuzhiyun t_u32 qos_mpdus_rx_cnt[8]; 3959*4882a593Smuzhiyun /** Qos retry rx count */ 3960*4882a593Smuzhiyun t_u32 qos_retries_rx_cnt[8]; 3961*4882a593Smuzhiyun /** CMAC ICV errors count */ 3962*4882a593Smuzhiyun t_u32 cmacicv_errors; 3963*4882a593Smuzhiyun /** CMAC replays count */ 3964*4882a593Smuzhiyun t_u32 cmac_replays; 3965*4882a593Smuzhiyun /** mgmt CCMP replays count */ 3966*4882a593Smuzhiyun t_u32 mgmt_ccmp_replays; 3967*4882a593Smuzhiyun /** TKIP ICV errors count */ 3968*4882a593Smuzhiyun t_u32 tkipicv_errors; 3969*4882a593Smuzhiyun /** TKIP replays count */ 3970*4882a593Smuzhiyun t_u32 tkip_replays; 3971*4882a593Smuzhiyun /** CCMP decrypt errors count */ 3972*4882a593Smuzhiyun t_u32 ccmp_decrypt_errors; 3973*4882a593Smuzhiyun /** CCMP replays count */ 3974*4882a593Smuzhiyun t_u32 ccmp_replays; 3975*4882a593Smuzhiyun /** Tx amsdu count */ 3976*4882a593Smuzhiyun t_u32 tx_amsdu_cnt; 3977*4882a593Smuzhiyun /** failed amsdu count */ 3978*4882a593Smuzhiyun t_u32 failed_amsdu_cnt; 3979*4882a593Smuzhiyun /** retry amsdu count */ 3980*4882a593Smuzhiyun t_u32 retry_amsdu_cnt; 3981*4882a593Smuzhiyun /** multi-retry amsdu count */ 3982*4882a593Smuzhiyun t_u32 multi_retry_amsdu_cnt; 3983*4882a593Smuzhiyun /** Tx octets in amsdu count */ 3984*4882a593Smuzhiyun t_u64 tx_octets_in_amsdu_cnt; 3985*4882a593Smuzhiyun /** amsdu ack failure count */ 3986*4882a593Smuzhiyun t_u32 amsdu_ack_failure_cnt; 3987*4882a593Smuzhiyun /** Rx amsdu count */ 3988*4882a593Smuzhiyun t_u32 rx_amsdu_cnt; 3989*4882a593Smuzhiyun /** Rx octets in amsdu count */ 3990*4882a593Smuzhiyun t_u64 rx_octets_in_amsdu_cnt; 3991*4882a593Smuzhiyun /** Tx ampdu count */ 3992*4882a593Smuzhiyun t_u32 tx_ampdu_cnt; 3993*4882a593Smuzhiyun /** tx mpdus in ampdu count */ 3994*4882a593Smuzhiyun t_u32 tx_mpdus_in_ampdu_cnt; 3995*4882a593Smuzhiyun /** tx octets in ampdu count */ 3996*4882a593Smuzhiyun t_u64 tx_octets_in_ampdu_cnt; 3997*4882a593Smuzhiyun /** ampdu Rx count */ 3998*4882a593Smuzhiyun t_u32 ampdu_rx_cnt; 3999*4882a593Smuzhiyun /** mpdu in Rx ampdu count */ 4000*4882a593Smuzhiyun t_u32 mpdu_in_rx_ampdu_cnt; 4001*4882a593Smuzhiyun /** Rx octets ampdu count */ 4002*4882a593Smuzhiyun t_u64 rx_octets_in_ampdu_cnt; 4003*4882a593Smuzhiyun /** ampdu delimiter CRC error count */ 4004*4882a593Smuzhiyun t_u32 ampdu_delimiter_crc_error_cnt; 4005*4882a593Smuzhiyun /** Rx Stuck Related Info*/ 4006*4882a593Smuzhiyun /** Rx Stuck Issue count */ 4007*4882a593Smuzhiyun t_u32 rx_stuck_issue_cnt[2]; 4008*4882a593Smuzhiyun /** Rx Stuck Recovery count */ 4009*4882a593Smuzhiyun t_u32 rx_stuck_recovery_cnt; 4010*4882a593Smuzhiyun /** Rx Stuck TSF */ 4011*4882a593Smuzhiyun t_u64 rx_stuck_tsf[2]; 4012*4882a593Smuzhiyun /** Tx Watchdog Recovery Related Info */ 4013*4882a593Smuzhiyun /** Tx Watchdog Recovery count */ 4014*4882a593Smuzhiyun t_u32 tx_watchdog_recovery_cnt; 4015*4882a593Smuzhiyun /** Tx Watchdog TSF */ 4016*4882a593Smuzhiyun t_u64 tx_watchdog_tsf[2]; 4017*4882a593Smuzhiyun /** Channel Switch Related Info */ 4018*4882a593Smuzhiyun /** Channel Switch Announcement Sent */ 4019*4882a593Smuzhiyun t_u32 channel_switch_ann_sent; 4020*4882a593Smuzhiyun /** Channel Switch State */ 4021*4882a593Smuzhiyun t_u32 channel_switch_state; 4022*4882a593Smuzhiyun /** Register Class */ 4023*4882a593Smuzhiyun t_u32 reg_class; 4024*4882a593Smuzhiyun /** Channel Number */ 4025*4882a593Smuzhiyun t_u32 channel_number; 4026*4882a593Smuzhiyun /** Channel Switch Mode */ 4027*4882a593Smuzhiyun t_u32 channel_switch_mode; 4028*4882a593Smuzhiyun /** Reset Rx Mac Count */ 4029*4882a593Smuzhiyun t_u32 rx_reset_mac_recovery_cnt; 4030*4882a593Smuzhiyun /** ISR2 Not Done Count*/ 4031*4882a593Smuzhiyun t_u32 rx_Isr2_NotDone_Cnt; 4032*4882a593Smuzhiyun /** GDMA Abort Count */ 4033*4882a593Smuzhiyun t_u32 gdma_abort_cnt; 4034*4882a593Smuzhiyun /** Rx Reset MAC Count */ 4035*4882a593Smuzhiyun t_u32 g_reset_rx_mac_cnt; 4036*4882a593Smuzhiyun // Ownership error counters 4037*4882a593Smuzhiyun /*Error Ownership error count*/ 4038*4882a593Smuzhiyun t_u32 dwCtlErrCnt; 4039*4882a593Smuzhiyun /*Control Ownership error count*/ 4040*4882a593Smuzhiyun t_u32 dwBcnErrCnt; 4041*4882a593Smuzhiyun /*Control Ownership error count*/ 4042*4882a593Smuzhiyun t_u32 dwMgtErrCnt; 4043*4882a593Smuzhiyun /*Control Ownership error count*/ 4044*4882a593Smuzhiyun t_u32 dwDatErrCnt; 4045*4882a593Smuzhiyun /*BIGTK MME good count*/ 4046*4882a593Smuzhiyun t_u32 bigtk_mmeGoodCnt; 4047*4882a593Smuzhiyun /*BIGTK Replay error count*/ 4048*4882a593Smuzhiyun t_u32 bigtk_replayErrCnt; 4049*4882a593Smuzhiyun /*BIGTK MIC error count*/ 4050*4882a593Smuzhiyun t_u32 bigtk_micErrCnt; 4051*4882a593Smuzhiyun /*BIGTK MME not included count*/ 4052*4882a593Smuzhiyun t_u32 bigtk_mmeNotFoundCnt; 4053*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_GET_LOG; 4054*4882a593Smuzhiyun 4055*4882a593Smuzhiyun /* maln wifi rate */ 4056*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mlan_wifi_rate { 4057*4882a593Smuzhiyun /** 0: OFDM, 1:CCK, 2:HT 3:VHT 4..7 reserved */ 4058*4882a593Smuzhiyun t_u8 preamble; 4059*4882a593Smuzhiyun /** 0:1x1, 1:2x2, 3:3x3, 4:4x4 */ 4060*4882a593Smuzhiyun t_u8 nss; 4061*4882a593Smuzhiyun /** 0:20MHz, 1:40Mhz, 2:80Mhz, 3:160Mhz */ 4062*4882a593Smuzhiyun t_u8 bw; 4063*4882a593Smuzhiyun /** OFDM/CCK rate code would be as per ieee std in the units of 0.5mbps 4064*4882a593Smuzhiyun */ 4065*4882a593Smuzhiyun /** HT/VHT it would be mcs index */ 4066*4882a593Smuzhiyun t_u8 rateMcsIdx; 4067*4882a593Smuzhiyun /** units of 100 Kbps */ 4068*4882a593Smuzhiyun t_u32 bitrate; 4069*4882a593Smuzhiyun } MLAN_PACK_START mlan_wifi_rate; 4070*4882a593Smuzhiyun 4071*4882a593Smuzhiyun /** channel information */ 4072*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 4073*4882a593Smuzhiyun /** channel width (20, 40, 80, 80+80, 160) */ 4074*4882a593Smuzhiyun t_u32 width; 4075*4882a593Smuzhiyun /** primary 20 MHz channel */ 4076*4882a593Smuzhiyun t_u32 center_freq; 4077*4882a593Smuzhiyun /** center frequency (MHz) first segment */ 4078*4882a593Smuzhiyun t_u32 center_freq0; 4079*4882a593Smuzhiyun /** center frequency (MHz) second segment */ 4080*4882a593Smuzhiyun t_u32 center_freq1; 4081*4882a593Smuzhiyun } MLAN_PACK_END mlan_wifi_channel_info; 4082*4882a593Smuzhiyun 4083*4882a593Smuzhiyun /** channel statistics */ 4084*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 4085*4882a593Smuzhiyun /** channel */ 4086*4882a593Smuzhiyun mlan_wifi_channel_info channel; 4087*4882a593Smuzhiyun /** msecs the radio is awake (32 bits number accruing over time) */ 4088*4882a593Smuzhiyun t_u32 on_time; 4089*4882a593Smuzhiyun /** msecs the CCA register is busy (32 bits number accruing over time) 4090*4882a593Smuzhiyun */ 4091*4882a593Smuzhiyun t_u32 cca_busy_time; 4092*4882a593Smuzhiyun } MLAN_PACK_END mlan_wifi_channel_stat; 4093*4882a593Smuzhiyun 4094*4882a593Smuzhiyun /** radio statistics */ 4095*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 4096*4882a593Smuzhiyun /** supported wifi in case of multi radio */ 4097*4882a593Smuzhiyun t_u32 radio; 4098*4882a593Smuzhiyun /** msecs the radio is awake */ 4099*4882a593Smuzhiyun t_u32 on_time; 4100*4882a593Smuzhiyun /** msecs the radio is transmitting */ 4101*4882a593Smuzhiyun t_u32 tx_time; 4102*4882a593Smuzhiyun /** TBD: num_tx_levels: number of radio transmit power levels */ 4103*4882a593Smuzhiyun t_u32 reserved0; 4104*4882a593Smuzhiyun /** TBD: tx_time_per_levels: pointer to an array of radio transmit per 4105*4882a593Smuzhiyun * power levels in msecs accured over time */ 4106*4882a593Smuzhiyun t_u32 reserved1; 4107*4882a593Smuzhiyun /** msecs the radio is in active receive */ 4108*4882a593Smuzhiyun t_u32 rx_time; 4109*4882a593Smuzhiyun /** msecs the radio is awake due to all scan */ 4110*4882a593Smuzhiyun t_u32 on_time_scan; 4111*4882a593Smuzhiyun /** msecs the radio is awake due to NAN */ 4112*4882a593Smuzhiyun t_u32 on_time_nbd; 4113*4882a593Smuzhiyun /** msecs the radio is awake due to G?scan */ 4114*4882a593Smuzhiyun t_u32 on_time_gscan; 4115*4882a593Smuzhiyun /** msecs the radio is awake due to roam?scan */ 4116*4882a593Smuzhiyun t_u32 on_time_roam_scan; 4117*4882a593Smuzhiyun /** msecs the radio is awake due to PNO scan */ 4118*4882a593Smuzhiyun t_u32 on_time_pno_scan; 4119*4882a593Smuzhiyun /** msecs the radio is awake due to HS2.0 scans and GAS exchange */ 4120*4882a593Smuzhiyun t_u32 on_time_hs20; 4121*4882a593Smuzhiyun /** number of channels */ 4122*4882a593Smuzhiyun t_u32 num_channels; 4123*4882a593Smuzhiyun /** channel statistics */ 4124*4882a593Smuzhiyun mlan_wifi_channel_stat channels[MAX_NUM_CHAN]; // support only 1 4125*4882a593Smuzhiyun // channel, so keep it. 4126*4882a593Smuzhiyun } MLAN_PACK_END mlan_wifi_radio_stat; 4127*4882a593Smuzhiyun 4128*4882a593Smuzhiyun /** per rate statistics */ 4129*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 4130*4882a593Smuzhiyun /** rate information */ 4131*4882a593Smuzhiyun mlan_wifi_rate rate; 4132*4882a593Smuzhiyun /** number of successfully transmitted data pkts (ACK rcvd) */ 4133*4882a593Smuzhiyun t_u32 tx_mpdu; 4134*4882a593Smuzhiyun /** number of received data pkts */ 4135*4882a593Smuzhiyun t_u32 rx_mpdu; 4136*4882a593Smuzhiyun /** number of data packet losses (no ACK) */ 4137*4882a593Smuzhiyun t_u32 mpdu_lost; 4138*4882a593Smuzhiyun /** total number of data pkt retries */ 4139*4882a593Smuzhiyun t_u32 retries; 4140*4882a593Smuzhiyun /** number of short data pkt retries */ 4141*4882a593Smuzhiyun t_u32 retries_short; 4142*4882a593Smuzhiyun /** number of long data pkt retries */ 4143*4882a593Smuzhiyun t_u32 retries_long; 4144*4882a593Smuzhiyun } MLAN_PACK_END mlan_wifi_rate_stat; 4145*4882a593Smuzhiyun 4146*4882a593Smuzhiyun /** per peer statistics */ 4147*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 4148*4882a593Smuzhiyun /** peer type (AP, TDLS, GO etc.) */ 4149*4882a593Smuzhiyun t_u8 type; 4150*4882a593Smuzhiyun /** mac address */ 4151*4882a593Smuzhiyun t_u8 peer_mac_address[6]; 4152*4882a593Smuzhiyun /** peer WIFI_CAPABILITY_XXX */ 4153*4882a593Smuzhiyun t_u32 capabilities; 4154*4882a593Smuzhiyun /** number of rates */ 4155*4882a593Smuzhiyun t_u32 num_rate; 4156*4882a593Smuzhiyun /** per rate statistics, number of entries = num_rate */ 4157*4882a593Smuzhiyun mlan_wifi_rate_stat rate_stats[]; 4158*4882a593Smuzhiyun } MLAN_PACK_END mlan_wifi_peer_info; 4159*4882a593Smuzhiyun 4160*4882a593Smuzhiyun /* per access category statistics */ 4161*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 4162*4882a593Smuzhiyun /** access category (VI, VO, BE, BK) */ 4163*4882a593Smuzhiyun t_u32 ac; 4164*4882a593Smuzhiyun /** number of successfully transmitted unicast data pkts (ACK rcvd) */ 4165*4882a593Smuzhiyun t_u32 tx_mpdu; 4166*4882a593Smuzhiyun /** number of received unicast mpdus */ 4167*4882a593Smuzhiyun t_u32 rx_mpdu; 4168*4882a593Smuzhiyun /** number of succesfully transmitted multicast data packets */ 4169*4882a593Smuzhiyun /** STA case: implies ACK received from AP for the unicast packet in 4170*4882a593Smuzhiyun * which mcast pkt was sent */ 4171*4882a593Smuzhiyun t_u32 tx_mcast; 4172*4882a593Smuzhiyun /** number of received multicast data packets */ 4173*4882a593Smuzhiyun t_u32 rx_mcast; 4174*4882a593Smuzhiyun /** number of received unicast a-mpdus */ 4175*4882a593Smuzhiyun t_u32 rx_ampdu; 4176*4882a593Smuzhiyun /** number of transmitted unicast a-mpdus */ 4177*4882a593Smuzhiyun t_u32 tx_ampdu; 4178*4882a593Smuzhiyun /** number of data pkt losses (no ACK) */ 4179*4882a593Smuzhiyun t_u32 mpdu_lost; 4180*4882a593Smuzhiyun /** total number of data pkt retries */ 4181*4882a593Smuzhiyun t_u32 retries; 4182*4882a593Smuzhiyun /** number of short data pkt retries */ 4183*4882a593Smuzhiyun t_u32 retries_short; 4184*4882a593Smuzhiyun /** number of long data pkt retries */ 4185*4882a593Smuzhiyun t_u32 retries_long; 4186*4882a593Smuzhiyun /** data pkt min contention time (usecs) */ 4187*4882a593Smuzhiyun t_u32 contention_time_min; 4188*4882a593Smuzhiyun /** data pkt max contention time (usecs) */ 4189*4882a593Smuzhiyun t_u32 contention_time_max; 4190*4882a593Smuzhiyun /** data pkt avg contention time (usecs) */ 4191*4882a593Smuzhiyun t_u32 contention_time_avg; 4192*4882a593Smuzhiyun /** num of data pkts used for contention statistics */ 4193*4882a593Smuzhiyun t_u32 contention_num_samples; 4194*4882a593Smuzhiyun } MLAN_PACK_END mlan_wifi_wmm_ac_stat; 4195*4882a593Smuzhiyun 4196*4882a593Smuzhiyun /** interface statistics */ 4197*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 4198*4882a593Smuzhiyun /** access point beacon received count from connected AP */ 4199*4882a593Smuzhiyun t_u32 beacon_rx; 4200*4882a593Smuzhiyun /** Average beacon offset encountered (beacon_TSF - TBTT) 4201*4882a593Smuzhiyun * the average_tsf_offset field is used so as to calculate the 4202*4882a593Smuzhiyun * typical beacon contention time on the channel as well may be 4203*4882a593Smuzhiyun * used to debug beacon synchronization and related power consumption 4204*4882a593Smuzhiyun * issue 4205*4882a593Smuzhiyun */ 4206*4882a593Smuzhiyun t_u64 average_tsf_offset; 4207*4882a593Smuzhiyun /** indicate that this AP typically leaks packets beyond the driver 4208*4882a593Smuzhiyun * guard time */ 4209*4882a593Smuzhiyun t_u32 leaky_ap_detected; 4210*4882a593Smuzhiyun /** average number of frame leaked by AP after frame with PM bit set was 4211*4882a593Smuzhiyun * ACK'ed by AP */ 4212*4882a593Smuzhiyun t_u32 leaky_ap_avg_num_frames_leaked; 4213*4882a593Smuzhiyun /** Guard time currently in force (when implementing IEEE power 4214*4882a593Smuzhiyun * management based on frame control PM bit), How long driver waits 4215*4882a593Smuzhiyun * before shutting down the radio and after receiving an ACK for a data 4216*4882a593Smuzhiyun * frame with PM bit set) 4217*4882a593Smuzhiyun */ 4218*4882a593Smuzhiyun t_u32 leaky_ap_guard_time; 4219*4882a593Smuzhiyun /** access point mgmt frames received count from connected AP (including 4220*4882a593Smuzhiyun * Beacon) */ 4221*4882a593Smuzhiyun t_u32 mgmt_rx; 4222*4882a593Smuzhiyun /** action frames received count */ 4223*4882a593Smuzhiyun t_u32 mgmt_action_rx; 4224*4882a593Smuzhiyun /** action frames transmit count */ 4225*4882a593Smuzhiyun t_u32 mgmt_action_tx; 4226*4882a593Smuzhiyun /** access Point Beacon and Management frames RSSI (averaged) */ 4227*4882a593Smuzhiyun t_u32 rssi_mgmt; 4228*4882a593Smuzhiyun /** access Point Data Frames RSSI (averaged) from connected AP */ 4229*4882a593Smuzhiyun t_u32 rssi_data; 4230*4882a593Smuzhiyun /** access Point ACK RSSI (averaged) from connected AP */ 4231*4882a593Smuzhiyun t_u32 rssi_ack; 4232*4882a593Smuzhiyun /** per ac data packet statistics */ 4233*4882a593Smuzhiyun mlan_wifi_wmm_ac_stat ac[MAX_AC_QUEUES]; 4234*4882a593Smuzhiyun /** number of peers */ 4235*4882a593Smuzhiyun t_u32 num_peers; 4236*4882a593Smuzhiyun /** per peer statistics */ 4237*4882a593Smuzhiyun mlan_wifi_peer_info peer_info[]; 4238*4882a593Smuzhiyun } MLAN_PACK_END mlan_wifi_iface_stat; 4239*4882a593Smuzhiyun 4240*4882a593Smuzhiyun /** MrvlIETypes_llStatIface_t */ 4241*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_llStatIface_t { 4242*4882a593Smuzhiyun /** Type */ 4243*4882a593Smuzhiyun t_u16 type; 4244*4882a593Smuzhiyun /** Length */ 4245*4882a593Smuzhiyun t_u16 len; 4246*4882a593Smuzhiyun /** Frame Control */ 4247*4882a593Smuzhiyun mlan_wifi_iface_stat ifaceStat; 4248*4882a593Smuzhiyun /* t_u8 frame_contents[]; */ 4249*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_llStatIface_t; 4250*4882a593Smuzhiyun 4251*4882a593Smuzhiyun /** MrvlIETypes_llStatRadio_t */ 4252*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_llStatRadio_t { 4253*4882a593Smuzhiyun /** Type */ 4254*4882a593Smuzhiyun t_u16 type; 4255*4882a593Smuzhiyun /** Length */ 4256*4882a593Smuzhiyun t_u16 len; 4257*4882a593Smuzhiyun /** Frame Control */ 4258*4882a593Smuzhiyun mlan_wifi_radio_stat radioStat[MAX_RADIO]; 4259*4882a593Smuzhiyun /* t_u8 frame_contents[]; */ 4260*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_llStatRadio_t; 4261*4882a593Smuzhiyun 4262*4882a593Smuzhiyun #define TYPE_IFACE_STAT MBIT(0) 4263*4882a593Smuzhiyun #define TYPE_RADIO_STAT MBIT(1) 4264*4882a593Smuzhiyun #define TYPE_PEER_INFO MBIT(2) 4265*4882a593Smuzhiyun /** HostCmd_DS_802_11_LINK_STATISTIC */ 4266*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_LINK_STATISTIC { 4267*4882a593Smuzhiyun /** Action : HostCmd_ACT_GEN_GET/SET/REMOVE */ 4268*4882a593Smuzhiyun t_u16 action; 4269*4882a593Smuzhiyun /** statistic which would be get in action HostCmd_ACT_GEN_GET : 4270*4882a593Smuzhiyun * TYPE_IFACE_STAT/RADIO_STAT/PEER_INFO */ 4271*4882a593Smuzhiyun t_u16 stat_type; 4272*4882a593Smuzhiyun /* threshold to classify the pkts as short or long, packet size < 4273*4882a593Smuzhiyun * mpdu_size_threshold => short */ 4274*4882a593Smuzhiyun t_u32 mpdu_size_threshold; 4275*4882a593Smuzhiyun /* set for field debug mode. Driver should collect all statistics 4276*4882a593Smuzhiyun * regardless of performance impact. */ 4277*4882a593Smuzhiyun t_u32 aggressive_statistics_gathering; 4278*4882a593Smuzhiyun /** Value */ 4279*4882a593Smuzhiyun t_u8 value[]; 4280*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_LINK_STATISTIC; 4281*4882a593Smuzhiyun 4282*4882a593Smuzhiyun /**_HostCmd_TX_RATE_QUERY */ 4283*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_TX_RATE_QUERY { 4284*4882a593Smuzhiyun /** Tx rate */ 4285*4882a593Smuzhiyun t_u8 tx_rate; 4286*4882a593Smuzhiyun /** V14 FW: Ht Info 4287*4882a593Smuzhiyun * [Bit 0] RxRate format: LG=0, HT=1 4288*4882a593Smuzhiyun * [Bit 1] HT Bandwidth: BW20 = 0, BW40 = 1 4289*4882a593Smuzhiyun * [Bit 2] HT Guard Interval: LGI = 0, SGI = 1 */ 4290*4882a593Smuzhiyun /** Tx Rate Info: 4291*4882a593Smuzhiyun * [Bit 0-1] tx rate formate: LG = 0, HT = 1, VHT = 2 4292*4882a593Smuzhiyun * [Bit 2-3] HT/VHT Bandwidth: BW20 = 0, BW40 = 1, BW80 = 2, BW160 = 3 4293*4882a593Smuzhiyun * [Bit 4] HT/VHT Guard Interval: LGI = 0, SGI = 1 4294*4882a593Smuzhiyun * [Bit4,Bit7] AX Guard Interval: 00, 01, 02 */ 4295*4882a593Smuzhiyun t_u8 tx_rate_info; 4296*4882a593Smuzhiyun /** 4297*4882a593Smuzhiyun * BIT0: DCM 4298*4882a593Smuzhiyun * BIT3-BIT1: tone mode 4299*4882a593Smuzhiyun ** 000: 26 tone 4300*4882a593Smuzhiyun ** 001: 52 tone 4301*4882a593Smuzhiyun ** 010: 106 tone 4302*4882a593Smuzhiyun ** 011: 242 tone 4303*4882a593Smuzhiyun ** 100: 484 tone 4304*4882a593Smuzhiyun ** 101: 996 tone 4305*4882a593Smuzhiyun * BIT7-BIT4: resvd 4306*4882a593Smuzhiyun **/ 4307*4882a593Smuzhiyun t_u8 ext_tx_rate_info; 4308*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_TX_RATE_QUERY; 4309*4882a593Smuzhiyun 4310*4882a593Smuzhiyun typedef MLAN_PACK_START struct _hs_config_param { 4311*4882a593Smuzhiyun /** bit0=1: broadcast data 4312*4882a593Smuzhiyun * bit1=1: unicast data 4313*4882a593Smuzhiyun * bit2=1: mac events 4314*4882a593Smuzhiyun * bit3=1: multicast data 4315*4882a593Smuzhiyun */ 4316*4882a593Smuzhiyun t_u32 conditions; 4317*4882a593Smuzhiyun /** GPIO pin or 0xff for interface */ 4318*4882a593Smuzhiyun t_u8 gpio; 4319*4882a593Smuzhiyun /** gap in milliseconds or or 0xff for special setting when 4320*4882a593Smuzhiyun * GPIO is used to wakeup host 4321*4882a593Smuzhiyun */ 4322*4882a593Smuzhiyun t_u8 gap; 4323*4882a593Smuzhiyun } MLAN_PACK_END hs_config_param; 4324*4882a593Smuzhiyun 4325*4882a593Smuzhiyun /** HS Action 0x0001 - Configure enhanced host sleep mode, 4326*4882a593Smuzhiyun * 0x0002 - Activate enhanced host sleep mode 4327*4882a593Smuzhiyun */ 4328*4882a593Smuzhiyun typedef enum _Host_Sleep_Action { 4329*4882a593Smuzhiyun HS_CONFIGURE = 0x0001, 4330*4882a593Smuzhiyun HS_ACTIVATE = 0x0002, 4331*4882a593Smuzhiyun } Host_Sleep_Action; 4332*4882a593Smuzhiyun 4333*4882a593Smuzhiyun /** Structure definition for activating enhanced hs */ 4334*4882a593Smuzhiyun typedef MLAN_PACK_START struct __hs_activate_param { 4335*4882a593Smuzhiyun /** response control 0x00 - response not needed, 0x01 - response needed 4336*4882a593Smuzhiyun */ 4337*4882a593Smuzhiyun t_u16 resp_ctrl; 4338*4882a593Smuzhiyun } MLAN_PACK_END hs_activate_param; 4339*4882a593Smuzhiyun 4340*4882a593Smuzhiyun /** HostCmd_DS_802_11_HS_CFG_ENH */ 4341*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_HS_CFG_ENH { 4342*4882a593Smuzhiyun /** Action 0x0001 - Configure enhanced host sleep mode, 4343*4882a593Smuzhiyun * 0x0002 - Activate enhanced host sleep mode 4344*4882a593Smuzhiyun */ 4345*4882a593Smuzhiyun t_u16 action; 4346*4882a593Smuzhiyun 4347*4882a593Smuzhiyun union { 4348*4882a593Smuzhiyun /** Configure enhanced hs */ 4349*4882a593Smuzhiyun hs_config_param hs_config; 4350*4882a593Smuzhiyun /** Activate enhanced hs */ 4351*4882a593Smuzhiyun hs_activate_param hs_activate; 4352*4882a593Smuzhiyun } params; 4353*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_HS_CFG_ENH; 4354*4882a593Smuzhiyun 4355*4882a593Smuzhiyun /** HostCmd_CMD_802_11_ROBUSTCOEX */ 4356*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_ROBUSTCOEX { 4357*4882a593Smuzhiyun /** Action */ 4358*4882a593Smuzhiyun t_u16 action; 4359*4882a593Smuzhiyun /** RSVD */ 4360*4882a593Smuzhiyun t_u16 rsvd; 4361*4882a593Smuzhiyun t_u8 tlv_buf[]; 4362*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_ROBUSTCOEX; 4363*4882a593Smuzhiyun 4364*4882a593Smuzhiyun /** HostCmd_CMD_DMCS_CFG */ 4365*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_DMCS_CFG { 4366*4882a593Smuzhiyun /** Action */ 4367*4882a593Smuzhiyun t_u16 action; 4368*4882a593Smuzhiyun /** SubCmd of DMCS */ 4369*4882a593Smuzhiyun t_u16 subcmd; 4370*4882a593Smuzhiyun t_u8 tlv_buf[]; 4371*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_DMCS_CFG; 4372*4882a593Smuzhiyun 4373*4882a593Smuzhiyun #if defined(PCIE) 4374*4882a593Smuzhiyun /** HostCmd_CMD_SSU */ 4375*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_SSU_CFG { 4376*4882a593Smuzhiyun /** Action */ 4377*4882a593Smuzhiyun t_u16 action; 4378*4882a593Smuzhiyun /** # of FFT sample to skip */ 4379*4882a593Smuzhiyun t_u32 nskip; 4380*4882a593Smuzhiyun /** # of FFT sample selected to dump */ 4381*4882a593Smuzhiyun t_u32 nsel; 4382*4882a593Smuzhiyun /** Down sample ADC input for buffering */ 4383*4882a593Smuzhiyun t_u32 adcdownsample; 4384*4882a593Smuzhiyun /** Mask Out ADC Data From Spectral Packet */ 4385*4882a593Smuzhiyun t_u32 mask_adc_pkt; 4386*4882a593Smuzhiyun /** Enable 16-Bit FFT Output Data Precision in Spectral Packet */ 4387*4882a593Smuzhiyun t_u32 out_16bits; 4388*4882a593Smuzhiyun /** Enable power spectrum in dB for spectral packet */ 4389*4882a593Smuzhiyun t_u32 spec_pwr_enable; 4390*4882a593Smuzhiyun /** Enable Spectral Packet Rate Reduction in dB output format */ 4391*4882a593Smuzhiyun t_u32 rate_deduction; 4392*4882a593Smuzhiyun /** # of Spectral packets over which spectral data to be averaged */ 4393*4882a593Smuzhiyun t_u32 n_pkt_avg; 4394*4882a593Smuzhiyun /** ret: Calculated fft length in dw */ 4395*4882a593Smuzhiyun t_u32 fft_len; 4396*4882a593Smuzhiyun /** ret: Calculated adc length in dw */ 4397*4882a593Smuzhiyun t_u32 adc_len; 4398*4882a593Smuzhiyun /** ret: Calculated record length in dw */ 4399*4882a593Smuzhiyun t_u32 rec_len; 4400*4882a593Smuzhiyun /** Mapped address of DMA buffer */ 4401*4882a593Smuzhiyun t_u32 buffer_base_addr[2]; 4402*4882a593Smuzhiyun /** Total size of allocated buffer for SSU DMA */ 4403*4882a593Smuzhiyun t_u32 buffer_pool_size; 4404*4882a593Smuzhiyun /** ret: Calculated buffer numbers */ 4405*4882a593Smuzhiyun t_u32 number_of_buffers; 4406*4882a593Smuzhiyun /** ret: Calculated buffer size in byte for each descriptor */ 4407*4882a593Smuzhiyun t_u32 buffer_size; 4408*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_SSU_CFG; 4409*4882a593Smuzhiyun #endif 4410*4882a593Smuzhiyun 4411*4882a593Smuzhiyun /** HostCmd_CMD_CSI_START */ 4412*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CSI_CFG { 4413*4882a593Smuzhiyun /** Action */ 4414*4882a593Smuzhiyun t_u16 action; 4415*4882a593Smuzhiyun /** Header ID*/ 4416*4882a593Smuzhiyun t_u32 head_id; 4417*4882a593Smuzhiyun /** Tail ID */ 4418*4882a593Smuzhiyun t_u32 tail_id; 4419*4882a593Smuzhiyun /** Number of CSI filters */ 4420*4882a593Smuzhiyun t_u8 csi_filter_cnt; 4421*4882a593Smuzhiyun /** Chip ID */ 4422*4882a593Smuzhiyun t_u8 chip_id; 4423*4882a593Smuzhiyun /** CSI filters */ 4424*4882a593Smuzhiyun mlan_csi_filter_t csi_filter[CSI_FILTER_MAX]; 4425*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CSI_CFG; 4426*4882a593Smuzhiyun 4427*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_HAL_PHY_CFG { 4428*4882a593Smuzhiyun /** Action */ 4429*4882a593Smuzhiyun t_u16 action; 4430*4882a593Smuzhiyun /** 11b pwr spectral density mask enable/disable */ 4431*4882a593Smuzhiyun t_u8 dot11b_psd_mask_cfg; 4432*4882a593Smuzhiyun /** reserved fields for future hal/phy cfg use */ 4433*4882a593Smuzhiyun t_u8 reserved[7]; 4434*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_HAL_PHY_CFG; 4435*4882a593Smuzhiyun 4436*4882a593Smuzhiyun /** SNMP_MIB_INDEX */ 4437*4882a593Smuzhiyun typedef enum _SNMP_MIB_INDEX { 4438*4882a593Smuzhiyun OpRateSet_i = 1, 4439*4882a593Smuzhiyun DtimPeriod_i = 3, 4440*4882a593Smuzhiyun RtsThresh_i = 5, 4441*4882a593Smuzhiyun ShortRetryLim_i = 6, 4442*4882a593Smuzhiyun LongRetryLim_i = 7, 4443*4882a593Smuzhiyun FragThresh_i = 8, 4444*4882a593Smuzhiyun Dot11D_i = 9, 4445*4882a593Smuzhiyun Dot11H_i = 10, 4446*4882a593Smuzhiyun WwsMode_i = 17, 4447*4882a593Smuzhiyun Thermal_i = 34, 4448*4882a593Smuzhiyun NullPktPeriod_i = 37, 4449*4882a593Smuzhiyun SignalextEnable_i = 41, 4450*4882a593Smuzhiyun ECSAEnable_i = 42, 4451*4882a593Smuzhiyun StopDeauth_i = 44, 4452*4882a593Smuzhiyun Dot11H_fakeRadar = 45, 4453*4882a593Smuzhiyun ChanTrackParam_i = 46, 4454*4882a593Smuzhiyun } SNMP_MIB_INDEX; 4455*4882a593Smuzhiyun 4456*4882a593Smuzhiyun /** max SNMP buf size */ 4457*4882a593Smuzhiyun #define MAX_SNMP_BUF_SIZE 128 4458*4882a593Smuzhiyun 4459*4882a593Smuzhiyun #ifdef UAP_SUPPORT 4460*4882a593Smuzhiyun /** HostCmd_CMD_802_11_SNMP_MIB */ 4461*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_UAP_802_11_SNMP_MIB { 4462*4882a593Smuzhiyun /** SNMP query type */ 4463*4882a593Smuzhiyun t_u16 query_type; 4464*4882a593Smuzhiyun /** snmp oid buf */ 4465*4882a593Smuzhiyun t_u8 snmp_data[]; 4466*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_UAP_802_11_SNMP_MIB; 4467*4882a593Smuzhiyun #endif 4468*4882a593Smuzhiyun 4469*4882a593Smuzhiyun /** HostCmd_CMD_802_11_SNMP_MIB */ 4470*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SNMP_MIB { 4471*4882a593Smuzhiyun /** SNMP query type */ 4472*4882a593Smuzhiyun t_u16 query_type; 4473*4882a593Smuzhiyun /** SNMP object ID */ 4474*4882a593Smuzhiyun t_u16 oid; 4475*4882a593Smuzhiyun /** SNMP buffer size */ 4476*4882a593Smuzhiyun t_u16 buf_size; 4477*4882a593Smuzhiyun /** Value */ 4478*4882a593Smuzhiyun t_u8 value[1]; 4479*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_SNMP_MIB; 4480*4882a593Smuzhiyun 4481*4882a593Smuzhiyun /** Radio on */ 4482*4882a593Smuzhiyun #define RADIO_ON 0x01 4483*4882a593Smuzhiyun /** Radio off */ 4484*4882a593Smuzhiyun #define RADIO_OFF 0x00 4485*4882a593Smuzhiyun 4486*4882a593Smuzhiyun /** HostCmd_CMD_802_11_RADIO_CONTROL */ 4487*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RADIO_CONTROL { 4488*4882a593Smuzhiyun /** Action */ 4489*4882a593Smuzhiyun t_u16 action; 4490*4882a593Smuzhiyun /** Control */ 4491*4882a593Smuzhiyun t_u16 control; 4492*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_RADIO_CONTROL; 4493*4882a593Smuzhiyun 4494*4882a593Smuzhiyun /** MrvlRateScope_t */ 4495*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlRateScope_t { 4496*4882a593Smuzhiyun /** Header Type */ 4497*4882a593Smuzhiyun t_u16 type; 4498*4882a593Smuzhiyun /** Header Length */ 4499*4882a593Smuzhiyun t_u16 length; 4500*4882a593Smuzhiyun /** Bitmap of HR/DSSS rates */ 4501*4882a593Smuzhiyun t_u16 hr_dsss_rate_bitmap; 4502*4882a593Smuzhiyun /** Bitmap of OFDM rates */ 4503*4882a593Smuzhiyun t_u16 ofdm_rate_bitmap; 4504*4882a593Smuzhiyun /** Bitmap of HT-MCSs allowed for initial rate */ 4505*4882a593Smuzhiyun t_u16 ht_mcs_rate_bitmap[8]; 4506*4882a593Smuzhiyun t_u16 vht_mcs_rate_bitmap[8]; 4507*4882a593Smuzhiyun t_u16 he_mcs_rate_bitmap[8]; 4508*4882a593Smuzhiyun } MLAN_PACK_END MrvlRateScope_t; 4509*4882a593Smuzhiyun 4510*4882a593Smuzhiyun /** MrvlRateDropPattern_t */ 4511*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlRateDropPattern_t { 4512*4882a593Smuzhiyun /** Header Type */ 4513*4882a593Smuzhiyun t_u16 type; 4514*4882a593Smuzhiyun /** Header Length */ 4515*4882a593Smuzhiyun t_u16 length; 4516*4882a593Smuzhiyun /** Rate Drop Mode */ 4517*4882a593Smuzhiyun t_u32 rate_drop_mode; 4518*4882a593Smuzhiyun /* MrvlRateDropControl_t RateDropControl[]; */ 4519*4882a593Smuzhiyun } MLAN_PACK_END MrvlRateDropPattern_t; 4520*4882a593Smuzhiyun 4521*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_rate_setting_t { 4522*4882a593Smuzhiyun /** Header */ 4523*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4524*4882a593Smuzhiyun /** Rate Setting */ 4525*4882a593Smuzhiyun t_u16 rate_setting; 4526*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_rate_setting_t; 4527*4882a593Smuzhiyun 4528*4882a593Smuzhiyun /** HostCmd_DS_TX_RATE_CFG */ 4529*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TX_RATE_CFG { 4530*4882a593Smuzhiyun /** Action */ 4531*4882a593Smuzhiyun t_u16 action; 4532*4882a593Smuzhiyun /** V14 FW: cfg_index */ 4533*4882a593Smuzhiyun /** V15+ FW: reserved_1 */ 4534*4882a593Smuzhiyun t_u16 cfg_index; 4535*4882a593Smuzhiyun /* MrvlRateScope_t RateScope; 4536*4882a593Smuzhiyun * MrvlRateDropPattern_t RateDrop; */ 4537*4882a593Smuzhiyun t_u8 tlv_buf[]; 4538*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TX_RATE_CFG; 4539*4882a593Smuzhiyun 4540*4882a593Smuzhiyun /** Power_Group_t */ 4541*4882a593Smuzhiyun typedef MLAN_PACK_START struct _Power_Group_t { 4542*4882a593Smuzhiyun /** Modulation Class */ 4543*4882a593Smuzhiyun t_u8 modulation_class; 4544*4882a593Smuzhiyun /** MCS Code or Legacy RateID */ 4545*4882a593Smuzhiyun t_u8 first_rate_code; 4546*4882a593Smuzhiyun /** MCS Code or Legacy RateID */ 4547*4882a593Smuzhiyun t_u8 last_rate_code; 4548*4882a593Smuzhiyun /** Power Adjustment Step */ 4549*4882a593Smuzhiyun t_s8 power_step; 4550*4882a593Smuzhiyun /** Minimal Tx Power Level [dBm] */ 4551*4882a593Smuzhiyun t_s8 power_min; 4552*4882a593Smuzhiyun /** Maximal Tx Power Level [dBm] */ 4553*4882a593Smuzhiyun t_s8 power_max; 4554*4882a593Smuzhiyun /** 0: HTBW20, 1: HTBW40 */ 4555*4882a593Smuzhiyun t_u8 ht_bandwidth; 4556*4882a593Smuzhiyun /** Reserved */ 4557*4882a593Smuzhiyun t_u8 reserved; 4558*4882a593Smuzhiyun } MLAN_PACK_END Power_Group_t; 4559*4882a593Smuzhiyun 4560*4882a593Smuzhiyun /** MrvlTypes_Power_Group_t */ 4561*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlTypes_Power_Group_t { 4562*4882a593Smuzhiyun /** Header Type */ 4563*4882a593Smuzhiyun t_u16 type; 4564*4882a593Smuzhiyun /** Header Length */ 4565*4882a593Smuzhiyun t_u16 length; 4566*4882a593Smuzhiyun /* Power_Group_t PowerGroups */ 4567*4882a593Smuzhiyun } MLAN_PACK_END MrvlTypes_Power_Group_t; 4568*4882a593Smuzhiyun 4569*4882a593Smuzhiyun /** HostCmd_CMD_TXPWR_CFG */ 4570*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TXPWR_CFG { 4571*4882a593Smuzhiyun /** Action */ 4572*4882a593Smuzhiyun t_u16 action; 4573*4882a593Smuzhiyun /** Power group configuration index */ 4574*4882a593Smuzhiyun t_u16 cfg_index; 4575*4882a593Smuzhiyun /** Power group configuration mode */ 4576*4882a593Smuzhiyun t_u32 mode; 4577*4882a593Smuzhiyun /* MrvlTypes_Power_Group_t PowerGrpCfg[]*/ 4578*4882a593Smuzhiyun t_u8 tlv_buf[]; 4579*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TXPWR_CFG; 4580*4882a593Smuzhiyun 4581*4882a593Smuzhiyun /** HostCmd_CMD_802_11_RF_TX_POWER */ 4582*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RF_TX_POWER { 4583*4882a593Smuzhiyun /** Action */ 4584*4882a593Smuzhiyun t_u16 action; 4585*4882a593Smuzhiyun /** Current power level */ 4586*4882a593Smuzhiyun t_s16 current_level; 4587*4882a593Smuzhiyun /** Maximum power */ 4588*4882a593Smuzhiyun t_s8 max_power; 4589*4882a593Smuzhiyun /** Minimum power */ 4590*4882a593Smuzhiyun t_s8 min_power; 4591*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_RF_TX_POWER; 4592*4882a593Smuzhiyun 4593*4882a593Smuzhiyun /** Connection type infra */ 4594*4882a593Smuzhiyun #define CONNECTION_TYPE_INFRA 0 4595*4882a593Smuzhiyun /** Connection type adhoc */ 4596*4882a593Smuzhiyun #define CONNECTION_TYPE_ADHOC 1 4597*4882a593Smuzhiyun #ifdef WIFI_DIRECT_SUPPORT 4598*4882a593Smuzhiyun /** BSS Mode: WIFIDIRECT Client */ 4599*4882a593Smuzhiyun #define BSS_MODE_WIFIDIRECT_CLIENT 0 4600*4882a593Smuzhiyun /** BSS Mode: WIFIDIRECT GO */ 4601*4882a593Smuzhiyun #define BSS_MODE_WIFIDIRECT_GO 2 4602*4882a593Smuzhiyun #endif 4603*4882a593Smuzhiyun /** HostCmd_DS_SET_BSS_MODE */ 4604*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_SET_BSS_MODE { 4605*4882a593Smuzhiyun /** connection type */ 4606*4882a593Smuzhiyun t_u8 con_type; 4607*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_SET_BSS_MODE; 4608*4882a593Smuzhiyun 4609*4882a593Smuzhiyun /** HT Capabilities element */ 4610*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_HTCap_t { 4611*4882a593Smuzhiyun /** Header */ 4612*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4613*4882a593Smuzhiyun 4614*4882a593Smuzhiyun /** HTCap struct */ 4615*4882a593Smuzhiyun HTCap_t ht_cap; 4616*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_HTCap_t; 4617*4882a593Smuzhiyun /** VHT Capabilities element */ 4618*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_VHTCap_t { 4619*4882a593Smuzhiyun /** Header */ 4620*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4621*4882a593Smuzhiyun 4622*4882a593Smuzhiyun /** VHTCap struct */ 4623*4882a593Smuzhiyun VHT_capa_t vht_cap; 4624*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_VHTCap_t; 4625*4882a593Smuzhiyun 4626*4882a593Smuzhiyun /** HostCmd_DS_REMAIN_ON_CHANNEL */ 4627*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_REMAIN_ON_CHANNEL { 4628*4882a593Smuzhiyun /** Action 0-GET, 1-SET, 4 CLEAR*/ 4629*4882a593Smuzhiyun t_u16 action; 4630*4882a593Smuzhiyun /** Not used set to zero */ 4631*4882a593Smuzhiyun t_u8 status; 4632*4882a593Smuzhiyun /** Not used set to zero */ 4633*4882a593Smuzhiyun t_u8 reserved; 4634*4882a593Smuzhiyun /** Band cfg */ 4635*4882a593Smuzhiyun Band_Config_t bandcfg; 4636*4882a593Smuzhiyun /** channel */ 4637*4882a593Smuzhiyun t_u8 channel; 4638*4882a593Smuzhiyun /** remain time: Unit ms*/ 4639*4882a593Smuzhiyun t_u32 remain_period; 4640*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_REMAIN_ON_CHANNEL; 4641*4882a593Smuzhiyun 4642*4882a593Smuzhiyun #ifdef WIFI_DIRECT_SUPPORT 4643*4882a593Smuzhiyun /** HostCmd_DS_WIFI_DIRECT_MODE */ 4644*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_WIFI_DIRECT_MODE { 4645*4882a593Smuzhiyun /** Action 0-GET, 1-SET*/ 4646*4882a593Smuzhiyun t_u16 action; 4647*4882a593Smuzhiyun /**0:disable 1:listen 2:GO 3:p2p client 4:find 5:stop find*/ 4648*4882a593Smuzhiyun t_u16 mode; 4649*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_WIFI_DIRECT_MODE; 4650*4882a593Smuzhiyun 4651*4882a593Smuzhiyun /** MrvlIEtypes_NoA_setting_t */ 4652*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_NoA_setting_t { 4653*4882a593Smuzhiyun /** Header */ 4654*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4655*4882a593Smuzhiyun /** enable/disable */ 4656*4882a593Smuzhiyun t_u8 enable; 4657*4882a593Smuzhiyun /** index */ 4658*4882a593Smuzhiyun t_u16 index; 4659*4882a593Smuzhiyun /** NoA count */ 4660*4882a593Smuzhiyun t_u8 noa_count; 4661*4882a593Smuzhiyun /** NoA duration */ 4662*4882a593Smuzhiyun t_u32 noa_duration; 4663*4882a593Smuzhiyun /** NoA interval */ 4664*4882a593Smuzhiyun t_u32 noa_interval; 4665*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_NoA_setting_t; 4666*4882a593Smuzhiyun 4667*4882a593Smuzhiyun /** MrvlIEtypes_NoA_setting_t */ 4668*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_OPP_PS_setting_t { 4669*4882a593Smuzhiyun /** Header */ 4670*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4671*4882a593Smuzhiyun /** enable/disable && ct_window */ 4672*4882a593Smuzhiyun t_u8 enable; 4673*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_OPP_PS_setting_t; 4674*4882a593Smuzhiyun 4675*4882a593Smuzhiyun /** HostCmd_DS_WIFI_DIRECT_PARAM_CONFIG */ 4676*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_WIFI_DIRECT_PARAM_CONFIG { 4677*4882a593Smuzhiyun /** Action 0-GET, 1-SET */ 4678*4882a593Smuzhiyun t_u16 action; 4679*4882a593Smuzhiyun /** MrvlIEtypes_NoA_setting_t 4680*4882a593Smuzhiyun * MrvlIEtypes_OPP_PS_setting_t 4681*4882a593Smuzhiyun */ 4682*4882a593Smuzhiyun t_u8 tlv_buf[]; 4683*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_WIFI_DIRECT_PARAM_CONFIG; 4684*4882a593Smuzhiyun #endif 4685*4882a593Smuzhiyun 4686*4882a593Smuzhiyun /** MrvlIEtypes_GPIO_TSF_LATCH_CONFIG*/ 4687*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_GPIO_TSF_LATCH_CONFIG { 4688*4882a593Smuzhiyun /** Header */ 4689*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4690*4882a593Smuzhiyun /**clock sync Mode */ 4691*4882a593Smuzhiyun t_u8 clock_sync_mode; 4692*4882a593Smuzhiyun /**clock sync Role */ 4693*4882a593Smuzhiyun t_u8 clock_sync_Role; 4694*4882a593Smuzhiyun /**clock sync GPIO Pin Number */ 4695*4882a593Smuzhiyun t_u8 clock_sync_gpio_pin_number; 4696*4882a593Smuzhiyun /**clock sync GPIO Level or Toggle */ 4697*4882a593Smuzhiyun t_u8 clock_sync_gpio_level_toggle; 4698*4882a593Smuzhiyun /**clock sync GPIO Pulse Width */ 4699*4882a593Smuzhiyun t_u16 clock_sync_gpio_pulse_width; 4700*4882a593Smuzhiyun 4701*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_GPIO_TSF_LATCH_CONFIG; 4702*4882a593Smuzhiyun 4703*4882a593Smuzhiyun /** MrvlIEtypes_GPIO_TSF_LATCH_REPORT */ 4704*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_GPIO_TSF_LATCH_REPORT { 4705*4882a593Smuzhiyun /** Header */ 4706*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4707*4882a593Smuzhiyun /**get tsf info format */ 4708*4882a593Smuzhiyun t_u16 tsf_format; 4709*4882a593Smuzhiyun /**tsf info */ 4710*4882a593Smuzhiyun t_u16 tsf_info; 4711*4882a593Smuzhiyun /**tsf */ 4712*4882a593Smuzhiyun t_u64 tsf; 4713*4882a593Smuzhiyun /**Positive or negative offset in microsecond from Beacon TSF to GPIO 4714*4882a593Smuzhiyun * toggle TSF */ 4715*4882a593Smuzhiyun t_s32 tsf_offset; 4716*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_GPIO_TSF_LATCH_REPORT; 4717*4882a593Smuzhiyun 4718*4882a593Smuzhiyun /** HostCmd_DS_GPIO_TSF_LATCH_PARAM_CONFIG */ 4719*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_GPIO_TSF_LATCH_PARAM_CONFIG { 4720*4882a593Smuzhiyun /** Action 0-GET, 1-SET */ 4721*4882a593Smuzhiyun t_u16 action; 4722*4882a593Smuzhiyun /** MrvlIEtypes_GPIO_TSF_LATCH_CONFIG 4723*4882a593Smuzhiyun * MrvlIEtypes_GPIO_TSF_LATCH_REPORT 4724*4882a593Smuzhiyun */ 4725*4882a593Smuzhiyun t_u8 tlv_buf[]; 4726*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_GPIO_TSF_LATCH_PARAM_CONFIG; 4727*4882a593Smuzhiyun 4728*4882a593Smuzhiyun MLAN_PACK_START struct coalesce_filt_field_param { 4729*4882a593Smuzhiyun t_u8 operation; 4730*4882a593Smuzhiyun t_u8 operand_len; 4731*4882a593Smuzhiyun t_u16 offset; 4732*4882a593Smuzhiyun t_u8 operand_byte_stream[4]; 4733*4882a593Smuzhiyun } MLAN_PACK_END; 4734*4882a593Smuzhiyun 4735*4882a593Smuzhiyun MLAN_PACK_START struct coalesce_receive_filt_rule { 4736*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4737*4882a593Smuzhiyun t_u8 num_of_fields; 4738*4882a593Smuzhiyun t_u8 pkt_type; 4739*4882a593Smuzhiyun t_u16 max_coalescing_delay; 4740*4882a593Smuzhiyun struct coalesce_filt_field_param params[1]; 4741*4882a593Smuzhiyun } MLAN_PACK_END; 4742*4882a593Smuzhiyun 4743*4882a593Smuzhiyun /** HostCmd_DS_COALESCE_CONFIG */ 4744*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_COALESCE_CONFIG { 4745*4882a593Smuzhiyun /** Action 0-GET, 1-SET */ 4746*4882a593Smuzhiyun t_u16 action; 4747*4882a593Smuzhiyun t_u16 num_of_rules; 4748*4882a593Smuzhiyun struct coalesce_receive_filt_rule rule[1]; 4749*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_COALESCE_CONFIG; 4750*4882a593Smuzhiyun 4751*4882a593Smuzhiyun /** TLV type : FW support max connection TLV */ 4752*4882a593Smuzhiyun #define TLV_TYPE_MAX_CONN (PROPRIETARY_TLV_BASE_ID + 0x117) /* 0x0217 */ 4753*4882a593Smuzhiyun /** MrvlIEtypes_Max_Conn_t */ 4754*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Max_Conn_t { 4755*4882a593Smuzhiyun /** Header */ 4756*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4757*4882a593Smuzhiyun /** FW support max P2P connection */ 4758*4882a593Smuzhiyun t_u8 max_p2p_conn; 4759*4882a593Smuzhiyun /** FW support max STA connection */ 4760*4882a593Smuzhiyun t_u8 max_sta_conn; 4761*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Max_Conn_t; 4762*4882a593Smuzhiyun 4763*4882a593Smuzhiyun /** exceed max p2p connection event */ 4764*4882a593Smuzhiyun typedef MLAN_PACK_START struct _event_exceed_max_p2p_conn { 4765*4882a593Smuzhiyun /** Event ID */ 4766*4882a593Smuzhiyun t_u16 event_id; 4767*4882a593Smuzhiyun /** BSS index number for multiple BSS support */ 4768*4882a593Smuzhiyun t_u8 bss_index; 4769*4882a593Smuzhiyun /** BSS type */ 4770*4882a593Smuzhiyun t_u8 bss_type; 4771*4882a593Smuzhiyun /** When exceed max, the mac address who request p2p connect */ 4772*4882a593Smuzhiyun t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH]; 4773*4882a593Smuzhiyun } MLAN_PACK_END event_exceed_max_p2p_conn; 4774*4882a593Smuzhiyun 4775*4882a593Smuzhiyun #ifdef STA_SUPPORT 4776*4882a593Smuzhiyun 4777*4882a593Smuzhiyun /** 4778*4882a593Smuzhiyun * @brief Structure used internally in the wlan driver to configure a scan. 4779*4882a593Smuzhiyun * 4780*4882a593Smuzhiyun * Sent to the command process module to configure the firmware 4781*4882a593Smuzhiyun * scan command prepared by wlan_cmd_802_11_scan. 4782*4882a593Smuzhiyun * 4783*4882a593Smuzhiyun * @sa wlan_scan_networks 4784*4882a593Smuzhiyun * 4785*4882a593Smuzhiyun */ 4786*4882a593Smuzhiyun typedef MLAN_PACK_START struct _wlan_scan_cmd_config { 4787*4882a593Smuzhiyun /** 4788*4882a593Smuzhiyun * BSS Type to be sent in the firmware command 4789*4882a593Smuzhiyun * 4790*4882a593Smuzhiyun * Field can be used to restrict the types of networks returned in the 4791*4882a593Smuzhiyun * scan. Valid settings are: 4792*4882a593Smuzhiyun * 4793*4882a593Smuzhiyun * - MLAN_SCAN_MODE_BSS (infrastructure) 4794*4882a593Smuzhiyun * - MLAN_SCAN_MODE_IBSS (adhoc) 4795*4882a593Smuzhiyun * - MLAN_SCAN_MODE_ANY (unrestricted, adhoc and infrastructure) 4796*4882a593Smuzhiyun */ 4797*4882a593Smuzhiyun t_u8 bss_mode; 4798*4882a593Smuzhiyun 4799*4882a593Smuzhiyun /** 4800*4882a593Smuzhiyun * Specific BSSID used to filter scan results in the firmware 4801*4882a593Smuzhiyun */ 4802*4882a593Smuzhiyun t_u8 specific_bssid[MLAN_MAC_ADDR_LENGTH]; 4803*4882a593Smuzhiyun 4804*4882a593Smuzhiyun /** 4805*4882a593Smuzhiyun * Length of TLVs sent in command starting at tlvBuffer 4806*4882a593Smuzhiyun */ 4807*4882a593Smuzhiyun t_u32 tlv_buf_len; 4808*4882a593Smuzhiyun 4809*4882a593Smuzhiyun /** 4810*4882a593Smuzhiyun * SSID TLV(s) and ChanList TLVs to be sent in the firmware command 4811*4882a593Smuzhiyun * 4812*4882a593Smuzhiyun * TLV_TYPE_CHANLIST, MrvlIEtypes_ChanListParamSet_t 4813*4882a593Smuzhiyun * TLV_TYPE_SSID, MrvlIEtypes_SsIdParamSet_t 4814*4882a593Smuzhiyun */ 4815*4882a593Smuzhiyun t_u8 tlv_buf[1]; /* SSID TLV(s) and ChanList TLVs are stored here */ 4816*4882a593Smuzhiyun } MLAN_PACK_END wlan_scan_cmd_config; 4817*4882a593Smuzhiyun 4818*4882a593Smuzhiyun /** 4819*4882a593Smuzhiyun * Sructure to retrieve the scan table 4820*4882a593Smuzhiyun */ 4821*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 4822*4882a593Smuzhiyun /** 4823*4882a593Smuzhiyun * - Zero based scan entry to start retrieval in command request 4824*4882a593Smuzhiyun * - Number of scans entries returned in command response 4825*4882a593Smuzhiyun */ 4826*4882a593Smuzhiyun t_u32 scan_number; 4827*4882a593Smuzhiyun /** 4828*4882a593Smuzhiyun * Buffer marker for multiple wlan_ioctl_get_scan_table_entry 4829*4882a593Smuzhiyun * structures. Each struct is padded to the nearest 32 bit boundary. 4830*4882a593Smuzhiyun */ 4831*4882a593Smuzhiyun t_u8 scan_table_entry_buf[1]; 4832*4882a593Smuzhiyun } MLAN_PACK_END wlan_get_scan_table_info; 4833*4882a593Smuzhiyun 4834*4882a593Smuzhiyun /** Generic structure defined for parsing WPA/RSN IEs for GTK/PTK OUIs */ 4835*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 4836*4882a593Smuzhiyun /** Group key oui */ 4837*4882a593Smuzhiyun t_u8 GrpKeyOui[4]; 4838*4882a593Smuzhiyun /** Number of PTKs */ 4839*4882a593Smuzhiyun t_u8 PtkCnt[2]; 4840*4882a593Smuzhiyun /** Ptk body starts here */ 4841*4882a593Smuzhiyun t_u8 PtkBody[4]; 4842*4882a593Smuzhiyun } MLAN_PACK_END IEBody; 4843*4882a593Smuzhiyun #endif /* STA_SUPPORT */ 4844*4882a593Smuzhiyun 4845*4882a593Smuzhiyun /* 4846*4882a593Smuzhiyun * This scan handle Country Information IE(802.11d compliant) 4847*4882a593Smuzhiyun * Define data structure for HostCmd_CMD_802_11_SCAN 4848*4882a593Smuzhiyun */ 4849*4882a593Smuzhiyun /** HostCmd_DS_802_11_SCAN */ 4850*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SCAN { 4851*4882a593Smuzhiyun /** BSS mode */ 4852*4882a593Smuzhiyun t_u8 bss_mode; 4853*4882a593Smuzhiyun /** BSSID */ 4854*4882a593Smuzhiyun t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 4855*4882a593Smuzhiyun /** TLV buffer */ 4856*4882a593Smuzhiyun t_u8 tlv_buffer[1]; 4857*4882a593Smuzhiyun /** MrvlIEtypes_SsIdParamSet_t SsIdParamSet; 4858*4882a593Smuzhiyun * MrvlIEtypes_ChanListParamSet_t ChanListParamSet; 4859*4882a593Smuzhiyun * MrvlIEtypes_RatesParamSet_t OpRateSet; 4860*4882a593Smuzhiyun */ 4861*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_SCAN; 4862*4882a593Smuzhiyun 4863*4882a593Smuzhiyun /** fw_cap_info bit to indicate enhance ext scan type */ 4864*4882a593Smuzhiyun #define ENHANCE_EXT_SCAN_ENABLE MBIT(19) 4865*4882a593Smuzhiyun /** mlan_event_scan_result data structure */ 4866*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mlan_event_scan_result { 4867*4882a593Smuzhiyun /** Event ID */ 4868*4882a593Smuzhiyun t_u16 event_id; 4869*4882a593Smuzhiyun /** BSS index number for multiple BSS support */ 4870*4882a593Smuzhiyun t_u8 bss_index; 4871*4882a593Smuzhiyun /** BSS type */ 4872*4882a593Smuzhiyun t_u8 bss_type; 4873*4882a593Smuzhiyun /** More event available or not */ 4874*4882a593Smuzhiyun t_u8 more_event; 4875*4882a593Smuzhiyun /** Reserved */ 4876*4882a593Smuzhiyun t_u8 reserved[3]; 4877*4882a593Smuzhiyun /** Size of the response buffer */ 4878*4882a593Smuzhiyun t_u16 buf_size; 4879*4882a593Smuzhiyun /** Number of BSS in scan response */ 4880*4882a593Smuzhiyun t_u8 num_of_set; 4881*4882a593Smuzhiyun } MLAN_PACK_END mlan_event_scan_result, *pmlan_event_scan_result; 4882*4882a593Smuzhiyun 4883*4882a593Smuzhiyun /** ext scan status report event */ 4884*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mlan_event_scan_status { 4885*4882a593Smuzhiyun /** Event ID */ 4886*4882a593Smuzhiyun t_u16 event_id; 4887*4882a593Smuzhiyun /** BSS index number for multiple BSS support */ 4888*4882a593Smuzhiyun t_u8 bss_index; 4889*4882a593Smuzhiyun /** BSS type */ 4890*4882a593Smuzhiyun t_u8 bss_type; 4891*4882a593Smuzhiyun /** scan status */ 4892*4882a593Smuzhiyun t_u8 scan_status; 4893*4882a593Smuzhiyun /** result */ 4894*4882a593Smuzhiyun t_u16 buf_len; 4895*4882a593Smuzhiyun /** event buf */ 4896*4882a593Smuzhiyun t_u8 event_buf[]; 4897*4882a593Smuzhiyun } MLAN_PACK_END mlan_event_scan_status, *pmlan_event_scan_status; 4898*4882a593Smuzhiyun 4899*4882a593Smuzhiyun /* 4900*4882a593Smuzhiyun * This scan handle Country Information IE(802.11d compliant) 4901*4882a593Smuzhiyun * Define data structure for HostCmd_CMD_802_11_SCAN_EXT 4902*4882a593Smuzhiyun */ 4903*4882a593Smuzhiyun /** HostCmd_DS_802_11_SCAN_EXT */ 4904*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SCAN_EXT { 4905*4882a593Smuzhiyun /** Scan type for ext scan 4906*4882a593Smuzhiyun * 0: default type: cmd resp after ext scan report event 4907*4882a593Smuzhiyun * 1: enhanced type: cmd resp before ext scan report event 4908*4882a593Smuzhiyun * 2: scan cancelled: cancel scan during scan processing 4909*4882a593Smuzhiyun */ 4910*4882a593Smuzhiyun t_u8 ext_scan_type; 4911*4882a593Smuzhiyun /** Reserved */ 4912*4882a593Smuzhiyun t_u8 reserved[3]; 4913*4882a593Smuzhiyun /** TLV buffer */ 4914*4882a593Smuzhiyun t_u8 tlv_buffer[1]; 4915*4882a593Smuzhiyun /** MrvlIEtypes_Bssid_List_t BssIdList; 4916*4882a593Smuzhiyun * MrvlIEtypes_SsIdParamSet_t SSIDParamSet; 4917*4882a593Smuzhiyun * MrvlIEtypes_ChanListParamSet_t ChanListParamSet; 4918*4882a593Smuzhiyun * MrvlIEtypes_RatesParamSet_t OpRateSet; 4919*4882a593Smuzhiyun * MrvlIEtypes_NumProbes_t NumProbes; 4920*4882a593Smuzhiyun * MrvlIEtypes_WildCardSsIdParamSet_t WildCardSSIDParamSet; 4921*4882a593Smuzhiyun * MrvlIEtypes_BssMode_t BssMode; 4922*4882a593Smuzhiyun */ 4923*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_SCAN_EXT; 4924*4882a593Smuzhiyun 4925*4882a593Smuzhiyun /** MrvlIEtypes_BssMode */ 4926*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_BssMode_t { 4927*4882a593Smuzhiyun /** Header */ 4928*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4929*4882a593Smuzhiyun /* INFRA/IBSS/AUTO */ 4930*4882a593Smuzhiyun t_u8 bss_mode; 4931*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_BssMode_t; 4932*4882a593Smuzhiyun 4933*4882a593Smuzhiyun /** BSS scan Rsp */ 4934*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Bss_Scan_Rsp_t { 4935*4882a593Smuzhiyun /** Header */ 4936*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4937*4882a593Smuzhiyun /** BSSID of the BSS descriptor */ 4938*4882a593Smuzhiyun t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 4939*4882a593Smuzhiyun /** Beacon/Probe response buffer */ 4940*4882a593Smuzhiyun t_u8 frame_body[1]; 4941*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Bss_Scan_Rsp_t; 4942*4882a593Smuzhiyun 4943*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Bss_Scan_Info_t { 4944*4882a593Smuzhiyun /** Header */ 4945*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 4946*4882a593Smuzhiyun /** RSSI for scan entry */ 4947*4882a593Smuzhiyun t_s16 rssi; 4948*4882a593Smuzhiyun /** Channel ANPI */ 4949*4882a593Smuzhiyun t_s16 anpi; 4950*4882a593Smuzhiyun /** Channel load (parts per 255) */ 4951*4882a593Smuzhiyun t_u8 cca_busy_fraction; 4952*4882a593Smuzhiyun /** Band */ 4953*4882a593Smuzhiyun Band_Config_t bandcfg; 4954*4882a593Smuzhiyun /** Channel */ 4955*4882a593Smuzhiyun t_u8 channel; 4956*4882a593Smuzhiyun /** Reserved */ 4957*4882a593Smuzhiyun t_u8 reserved; 4958*4882a593Smuzhiyun /** TSF data */ 4959*4882a593Smuzhiyun t_u64 tsf; 4960*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Bss_Scan_Info_t; 4961*4882a593Smuzhiyun 4962*4882a593Smuzhiyun /** HostCmd_DS_RX_MGMT_IND */ 4963*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_RX_MGMT_IND { 4964*4882a593Smuzhiyun /** Action */ 4965*4882a593Smuzhiyun t_u16 action; 4966*4882a593Smuzhiyun /** Mgmt frame subtype mask */ 4967*4882a593Smuzhiyun t_u32 mgmt_subtype_mask; 4968*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_RX_MGMT_IND; 4969*4882a593Smuzhiyun 4970*4882a593Smuzhiyun /** HostCmd_DS_802_11_SCAN_RSP */ 4971*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SCAN_RSP { 4972*4882a593Smuzhiyun /** Size of BSS descriptor */ 4973*4882a593Smuzhiyun t_u16 bss_descript_size; 4974*4882a593Smuzhiyun /** Numner of sets */ 4975*4882a593Smuzhiyun t_u8 number_of_sets; 4976*4882a593Smuzhiyun /** BSS descriptor and TLV buffer */ 4977*4882a593Smuzhiyun t_u8 bss_desc_and_tlv_buffer[1]; 4978*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_SCAN_RSP; 4979*4882a593Smuzhiyun 4980*4882a593Smuzhiyun /** HostCmd_DS_802_11_BG_SCAN_CONFIG */ 4981*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_BG_SCAN_CONFIG { 4982*4882a593Smuzhiyun /** action */ 4983*4882a593Smuzhiyun t_u16 action; 4984*4882a593Smuzhiyun /** 0: disable, 1: enable */ 4985*4882a593Smuzhiyun t_u8 enable; 4986*4882a593Smuzhiyun /** bss type */ 4987*4882a593Smuzhiyun t_u8 bss_type; 4988*4882a593Smuzhiyun /** num of channel per scan */ 4989*4882a593Smuzhiyun t_u8 chan_per_scan; 4990*4882a593Smuzhiyun /** reserved field */ 4991*4882a593Smuzhiyun t_u8 reserved; 4992*4882a593Smuzhiyun /** reserved field */ 4993*4882a593Smuzhiyun t_u16 reserved1; 4994*4882a593Smuzhiyun /** interval between consecutive scans */ 4995*4882a593Smuzhiyun t_u32 scan_interval; 4996*4882a593Smuzhiyun /** reserved field */ 4997*4882a593Smuzhiyun t_u32 reserved2; 4998*4882a593Smuzhiyun /** condition to trigger report to host */ 4999*4882a593Smuzhiyun t_u32 report_condition; 5000*4882a593Smuzhiyun /** reserved field */ 5001*4882a593Smuzhiyun t_u16 reserved3; 5002*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_BG_SCAN_CONFIG; 5003*4882a593Smuzhiyun 5004*4882a593Smuzhiyun /** HostCmd_DS_802_11_BG_SCAN_QUERY */ 5005*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_BG_SCAN_QUERY { 5006*4882a593Smuzhiyun /** Flush */ 5007*4882a593Smuzhiyun t_u8 flush; 5008*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_BG_SCAN_QUERY; 5009*4882a593Smuzhiyun 5010*4882a593Smuzhiyun /** HostCmd_DS_802_11_BG_SCAN_QUERY_RSP */ 5011*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_BG_SCAN_QUERY_RSP { 5012*4882a593Smuzhiyun /** Report condition */ 5013*4882a593Smuzhiyun t_u32 report_condition; 5014*4882a593Smuzhiyun /** Scan response */ 5015*4882a593Smuzhiyun HostCmd_DS_802_11_SCAN_RSP scan_resp; 5016*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_BG_SCAN_QUERY_RSP; 5017*4882a593Smuzhiyun 5018*4882a593Smuzhiyun /** MrvlIEtypes_StartLater_t */ 5019*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_StartLater_t { 5020*4882a593Smuzhiyun /** Header */ 5021*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5022*4882a593Smuzhiyun /* 0 - BGScan start immediately, 1 - BGScan will start later after "Scan 5023*4882a593Smuzhiyun * Interval" */ 5024*4882a593Smuzhiyun t_u16 value; 5025*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_StartLater_t; 5026*4882a593Smuzhiyun 5027*4882a593Smuzhiyun /** MrvlIEtypes_RepeatCount_t */ 5028*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_RepeatCount_t { 5029*4882a593Smuzhiyun /** Header */ 5030*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5031*4882a593Smuzhiyun /* Repeat count */ 5032*4882a593Smuzhiyun t_u16 repeat_count; 5033*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_RepeatCount_t; 5034*4882a593Smuzhiyun 5035*4882a593Smuzhiyun /** MrvlIEtypes_DomainParamSet_t */ 5036*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_DomainParamSet { 5037*4882a593Smuzhiyun /** Header */ 5038*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5039*4882a593Smuzhiyun /** Country code */ 5040*4882a593Smuzhiyun t_u8 country_code[COUNTRY_CODE_LEN]; 5041*4882a593Smuzhiyun /** Set of subbands */ 5042*4882a593Smuzhiyun IEEEtypes_SubbandSet_t sub_band[1]; 5043*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_DomainParamSet_t; 5044*4882a593Smuzhiyun 5045*4882a593Smuzhiyun /** HostCmd_DS_802_11D_DOMAIN_INFO */ 5046*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11D_DOMAIN_INFO { 5047*4882a593Smuzhiyun /** Action */ 5048*4882a593Smuzhiyun t_u16 action; 5049*4882a593Smuzhiyun /** Domain parameter set */ 5050*4882a593Smuzhiyun MrvlIEtypes_DomainParamSet_t domain; 5051*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11D_DOMAIN_INFO; 5052*4882a593Smuzhiyun 5053*4882a593Smuzhiyun /** HostCmd_DS_802_11D_DOMAIN_INFO_RSP */ 5054*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11D_DOMAIN_INFO_RSP { 5055*4882a593Smuzhiyun /** Action */ 5056*4882a593Smuzhiyun t_u16 action; 5057*4882a593Smuzhiyun /** Domain parameter set */ 5058*4882a593Smuzhiyun MrvlIEtypes_DomainParamSet_t domain; 5059*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11D_DOMAIN_INFO_RSP; 5060*4882a593Smuzhiyun 5061*4882a593Smuzhiyun /** HostCmd_DS_11N_ADDBA_REQ */ 5062*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_11N_ADDBA_REQ { 5063*4882a593Smuzhiyun /** Result of the ADDBA Request Operation */ 5064*4882a593Smuzhiyun t_u8 add_req_result; 5065*4882a593Smuzhiyun /** Peer MAC address */ 5066*4882a593Smuzhiyun t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH]; 5067*4882a593Smuzhiyun /** Dialog Token */ 5068*4882a593Smuzhiyun t_u8 dialog_token; 5069*4882a593Smuzhiyun /** Block Ack Parameter Set */ 5070*4882a593Smuzhiyun t_u16 block_ack_param_set; 5071*4882a593Smuzhiyun /** Block Act Timeout Value */ 5072*4882a593Smuzhiyun t_u16 block_ack_tmo; 5073*4882a593Smuzhiyun /** Starting Sequence Number */ 5074*4882a593Smuzhiyun t_u16 ssn; 5075*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_11N_ADDBA_REQ; 5076*4882a593Smuzhiyun 5077*4882a593Smuzhiyun /** HostCmd_DS_11N_ADDBA_RSP */ 5078*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_11N_ADDBA_RSP { 5079*4882a593Smuzhiyun /** Result of the ADDBA Response Operation */ 5080*4882a593Smuzhiyun t_u8 add_rsp_result; 5081*4882a593Smuzhiyun /** Peer MAC address */ 5082*4882a593Smuzhiyun t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH]; 5083*4882a593Smuzhiyun /** Dialog Token */ 5084*4882a593Smuzhiyun t_u8 dialog_token; 5085*4882a593Smuzhiyun /** Status Code */ 5086*4882a593Smuzhiyun t_u16 status_code; 5087*4882a593Smuzhiyun /** Block Ack Parameter Set */ 5088*4882a593Smuzhiyun t_u16 block_ack_param_set; 5089*4882a593Smuzhiyun /** Block Act Timeout Value */ 5090*4882a593Smuzhiyun t_u16 block_ack_tmo; 5091*4882a593Smuzhiyun /** Starting Sequence Number */ 5092*4882a593Smuzhiyun t_u16 ssn; 5093*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_11N_ADDBA_RSP; 5094*4882a593Smuzhiyun 5095*4882a593Smuzhiyun /** HostCmd_DS_11N_DELBA */ 5096*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_11N_DELBA { 5097*4882a593Smuzhiyun /** Result of the ADDBA Request Operation */ 5098*4882a593Smuzhiyun t_u8 del_result; 5099*4882a593Smuzhiyun /** Peer MAC address */ 5100*4882a593Smuzhiyun t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH]; 5101*4882a593Smuzhiyun /** Delete Block Ack Parameter Set */ 5102*4882a593Smuzhiyun t_u16 del_ba_param_set; 5103*4882a593Smuzhiyun /** Reason Code sent for DELBA */ 5104*4882a593Smuzhiyun t_u16 reason_code; 5105*4882a593Smuzhiyun /** Reserved */ 5106*4882a593Smuzhiyun t_u8 reserved; 5107*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_11N_DELBA; 5108*4882a593Smuzhiyun 5109*4882a593Smuzhiyun /** HostCmd_DS_11N_BATIMEOUT */ 5110*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_11N_BATIMEOUT { 5111*4882a593Smuzhiyun /** TID */ 5112*4882a593Smuzhiyun t_u8 tid; 5113*4882a593Smuzhiyun /** Peer MAC address */ 5114*4882a593Smuzhiyun t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH]; 5115*4882a593Smuzhiyun /** Delete Block Ack Parameter Set */ 5116*4882a593Smuzhiyun t_u8 origninator; 5117*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_11N_BATIMEOUT; 5118*4882a593Smuzhiyun 5119*4882a593Smuzhiyun /** HostCmd_DS_11N_CFG */ 5120*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_11N_CFG { 5121*4882a593Smuzhiyun /** Action */ 5122*4882a593Smuzhiyun t_u16 action; 5123*4882a593Smuzhiyun /** HTTxCap */ 5124*4882a593Smuzhiyun t_u16 ht_tx_cap; 5125*4882a593Smuzhiyun /** HTTxInfo */ 5126*4882a593Smuzhiyun t_u16 ht_tx_info; 5127*4882a593Smuzhiyun /** Misc configuration */ 5128*4882a593Smuzhiyun t_u16 misc_config; 5129*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_11N_CFG; 5130*4882a593Smuzhiyun 5131*4882a593Smuzhiyun /** HostCmd_DS_11N_CFG */ 5132*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_REJECT_ADDBA_REQ { 5133*4882a593Smuzhiyun /** Action */ 5134*4882a593Smuzhiyun t_u16 action; 5135*4882a593Smuzhiyun /** Bit0 : host sleep activated 5136*4882a593Smuzhiyun * Bit1 : auto reconnect enabled 5137*4882a593Smuzhiyun * Others : reserved 5138*4882a593Smuzhiyun */ 5139*4882a593Smuzhiyun t_u32 conditions; 5140*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_REJECT_ADDBA_REQ; 5141*4882a593Smuzhiyun 5142*4882a593Smuzhiyun /** HostCmd_DS_TXBUF_CFG*/ 5143*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TXBUF_CFG { 5144*4882a593Smuzhiyun /** Action */ 5145*4882a593Smuzhiyun t_u16 action; 5146*4882a593Smuzhiyun /** Buffer Size */ 5147*4882a593Smuzhiyun t_u16 buff_size; 5148*4882a593Smuzhiyun /** End Port_for Multiport */ 5149*4882a593Smuzhiyun t_u16 mp_end_port; 5150*4882a593Smuzhiyun /** Reserved */ 5151*4882a593Smuzhiyun t_u16 reserved3; 5152*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TXBUF_CFG; 5153*4882a593Smuzhiyun 5154*4882a593Smuzhiyun /** HostCmd_DS_AMSDU_AGGR_CTRL */ 5155*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_AMSDU_AGGR_CTRL { 5156*4882a593Smuzhiyun /** Action */ 5157*4882a593Smuzhiyun t_u16 action; 5158*4882a593Smuzhiyun /** Enable */ 5159*4882a593Smuzhiyun t_u16 enable; 5160*4882a593Smuzhiyun /** Get the current Buffer Size valid */ 5161*4882a593Smuzhiyun t_u16 curr_buf_size; 5162*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_AMSDU_AGGR_CTRL; 5163*4882a593Smuzhiyun 5164*4882a593Smuzhiyun /** HostCmd_DS_11AC_CFG */ 5165*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_11AC_CFG { 5166*4882a593Smuzhiyun /** Action */ 5167*4882a593Smuzhiyun t_u16 action; 5168*4882a593Smuzhiyun /** BandConfig */ 5169*4882a593Smuzhiyun t_u8 band_config; 5170*4882a593Smuzhiyun /** Misc Configuration */ 5171*4882a593Smuzhiyun t_u8 misc_config; 5172*4882a593Smuzhiyun /** VHT Capability Info */ 5173*4882a593Smuzhiyun t_u32 vht_cap_info; 5174*4882a593Smuzhiyun /** VHT Support MCS Set */ 5175*4882a593Smuzhiyun t_u8 vht_supp_mcs_set[VHT_MCS_SET_LEN]; 5176*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_11AC_CFG; 5177*4882a593Smuzhiyun 5178*4882a593Smuzhiyun /** HostCmd_DS_11ACTXBUF_CFG*/ 5179*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_11ACTXBUF_CFG { 5180*4882a593Smuzhiyun /** Action */ 5181*4882a593Smuzhiyun t_u16 action; 5182*4882a593Smuzhiyun /** Buffer Size */ 5183*4882a593Smuzhiyun t_u16 buff_size; 5184*4882a593Smuzhiyun /** End Port_for Multiport */ 5185*4882a593Smuzhiyun t_u16 mp_end_port; 5186*4882a593Smuzhiyun /** Reserved */ 5187*4882a593Smuzhiyun t_u16 reserved3; 5188*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_11ACTXBUF_CFG; 5189*4882a593Smuzhiyun 5190*4882a593Smuzhiyun /** HostCmd_DS_11AX_CFG */ 5191*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_11AX_CFG { 5192*4882a593Smuzhiyun /** Action */ 5193*4882a593Smuzhiyun t_u16 action; 5194*4882a593Smuzhiyun /** BandConfig */ 5195*4882a593Smuzhiyun t_u8 band_config; 5196*4882a593Smuzhiyun /** TLV for HE capability or HE operation */ 5197*4882a593Smuzhiyun t_u8 val[]; 5198*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_11AX_CFG; 5199*4882a593Smuzhiyun 5200*4882a593Smuzhiyun /** HostCmd_DS_11AX_CMD_CFG */ 5201*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_11AX_CMD_CFG { 5202*4882a593Smuzhiyun /** Action */ 5203*4882a593Smuzhiyun t_u16 action; 5204*4882a593Smuzhiyun /** CMD_SUBID */ 5205*4882a593Smuzhiyun t_u16 sub_id; 5206*4882a593Smuzhiyun /** TLV or value for cmd */ 5207*4882a593Smuzhiyun t_u8 val[]; 5208*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_11AX_CMD_CFG; 5209*4882a593Smuzhiyun 5210*4882a593Smuzhiyun /** HostCmd_DS_RANGE_EXT */ 5211*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_RANGE_EXT { 5212*4882a593Smuzhiyun /** Action */ 5213*4882a593Smuzhiyun t_u16 action; 5214*4882a593Smuzhiyun /** Range ext mode */ 5215*4882a593Smuzhiyun t_u8 mode; 5216*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_RANGE_EXT; 5217*4882a593Smuzhiyun 5218*4882a593Smuzhiyun /** Type definition of hostcmd_twt_setup */ 5219*4882a593Smuzhiyun typedef struct MLAN_PACK_START _hostcmd_twt_setup { 5220*4882a593Smuzhiyun /** Implicit, 0: TWT session is explicit, 1: Session is implicit */ 5221*4882a593Smuzhiyun t_u8 implicit; 5222*4882a593Smuzhiyun /** Announced, 0: Unannounced, 1: Announced TWT */ 5223*4882a593Smuzhiyun t_u8 announced; 5224*4882a593Smuzhiyun /** Trigger Enabled, 0: Non-Trigger enabled, 1: Trigger enabled TWT */ 5225*4882a593Smuzhiyun t_u8 trigger_enabled; 5226*4882a593Smuzhiyun /** TWT Information Disabled, 0: TWT info enabled, 1: TWT info disabled 5227*4882a593Smuzhiyun */ 5228*4882a593Smuzhiyun t_u8 twt_info_disabled; 5229*4882a593Smuzhiyun /** Negotiation Type, 0: Future Individual TWT SP start time, 1: Next 5230*4882a593Smuzhiyun * Wake TBTT time */ 5231*4882a593Smuzhiyun t_u8 negotiation_type; 5232*4882a593Smuzhiyun /** TWT Wakeup Duration, time after which the TWT requesting STA can 5233*4882a593Smuzhiyun * transition to doze state */ 5234*4882a593Smuzhiyun t_u8 twt_wakeup_duration; 5235*4882a593Smuzhiyun /** Flow Identifier. Range: [0-7]*/ 5236*4882a593Smuzhiyun t_u8 flow_identifier; 5237*4882a593Smuzhiyun /** Hard Constraint, 0: FW can tweak the TWT setup parameters if it is 5238*4882a593Smuzhiyun *rejected by AP. 5239*4882a593Smuzhiyun ** 1: Firmware should not tweak any parameters. */ 5240*4882a593Smuzhiyun t_u8 hard_constraint; 5241*4882a593Smuzhiyun /** TWT Exponent, Range: [0-63] */ 5242*4882a593Smuzhiyun t_u8 twt_exponent; 5243*4882a593Smuzhiyun /** TWT Mantissa Range: [0-sizeof(UINT16)] */ 5244*4882a593Smuzhiyun t_u16 twt_mantissa; 5245*4882a593Smuzhiyun /** TWT Request Type, 0: REQUEST_TWT, 1: SUGGEST_TWT*/ 5246*4882a593Smuzhiyun t_u8 twt_request; 5247*4882a593Smuzhiyun /** TWT Setup State. Set to 0 by driver, filled by FW in response*/ 5248*4882a593Smuzhiyun t_u8 twt_setup_state; 5249*4882a593Smuzhiyun /** Reserved, set to 0. */ 5250*4882a593Smuzhiyun t_u8 reserved[2]; 5251*4882a593Smuzhiyun } MLAN_PACK_END hostcmd_twt_setup, *phostcmd_twt_setup; 5252*4882a593Smuzhiyun 5253*4882a593Smuzhiyun /** Type definition of hostcmd_twt_teardown */ 5254*4882a593Smuzhiyun typedef struct MLAN_PACK_START _hostcmd_twt_teardown { 5255*4882a593Smuzhiyun /** TWT Flow Identifier. Range: [0-7] */ 5256*4882a593Smuzhiyun t_u8 flow_identifier; 5257*4882a593Smuzhiyun /** Negotiation Type. 0: Future Individual TWT SP start time, 1: Next 5258*4882a593Smuzhiyun * Wake TBTT time */ 5259*4882a593Smuzhiyun t_u8 negotiation_type; 5260*4882a593Smuzhiyun /** Tear down all TWT. 1: To teardown all TWT, 0 otherwise */ 5261*4882a593Smuzhiyun t_u8 teardown_all_twt; 5262*4882a593Smuzhiyun /** TWT Teardown State. Set to 0 by driver, filled by FW in response */ 5263*4882a593Smuzhiyun t_u8 twt_teardown_state; 5264*4882a593Smuzhiyun /** Reserved, set to 0. */ 5265*4882a593Smuzhiyun t_u8 reserved[3]; 5266*4882a593Smuzhiyun } MLAN_PACK_END hostcmd_twt_teardown, *phostcmd_twt_teardown; 5267*4882a593Smuzhiyun 5268*4882a593Smuzhiyun /** HostCmd_DS_TWT_CFG */ 5269*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TWT_CFG { 5270*4882a593Smuzhiyun /** Action */ 5271*4882a593Smuzhiyun t_u16 action; 5272*4882a593Smuzhiyun /** CMD_SUBID */ 5273*4882a593Smuzhiyun t_u16 sub_id; 5274*4882a593Smuzhiyun /** TWT Setup/Teardown configuration parameters */ 5275*4882a593Smuzhiyun union { 5276*4882a593Smuzhiyun /** TWT Setup config for Sub ID: MLAN_11AX_TWT_SETUP_SUBID */ 5277*4882a593Smuzhiyun hostcmd_twt_setup twt_setup; 5278*4882a593Smuzhiyun /** TWT Teardown config for Sub ID: MLAN_11AX_TWT_TEARDOWN_SUBID 5279*4882a593Smuzhiyun */ 5280*4882a593Smuzhiyun hostcmd_twt_teardown twt_teardown; 5281*4882a593Smuzhiyun } param; 5282*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TWT_CFG; 5283*4882a593Smuzhiyun 5284*4882a593Smuzhiyun /** HostCmd_DS_ECL_SYSTEM_CLOCK_CONFIG */ 5285*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_ECL_SYSTEM_CLOCK_CONFIG { 5286*4882a593Smuzhiyun /** Action */ 5287*4882a593Smuzhiyun t_u16 action; 5288*4882a593Smuzhiyun /** Current system clock */ 5289*4882a593Smuzhiyun t_u16 cur_sys_clk; 5290*4882a593Smuzhiyun /** Clock type */ 5291*4882a593Smuzhiyun t_u16 sys_clk_type; 5292*4882a593Smuzhiyun /** Length of clocks */ 5293*4882a593Smuzhiyun t_u16 sys_clk_len; 5294*4882a593Smuzhiyun /** System clocks */ 5295*4882a593Smuzhiyun t_u16 sys_clk[16]; 5296*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_ECL_SYSTEM_CLOCK_CONFIG; 5297*4882a593Smuzhiyun 5298*4882a593Smuzhiyun /** MrvlIEtypes_WmmParamSet_t */ 5299*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_WmmParamSet_t { 5300*4882a593Smuzhiyun /** Header */ 5301*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5302*4882a593Smuzhiyun /** WMM IE */ 5303*4882a593Smuzhiyun t_u8 wmm_ie[1]; 5304*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_WmmParamSet_t; 5305*4882a593Smuzhiyun 5306*4882a593Smuzhiyun /** MrvlIEtypes_WmmQueueStatus_t */ 5307*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 5308*4882a593Smuzhiyun /** Header */ 5309*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5310*4882a593Smuzhiyun /** Queue index */ 5311*4882a593Smuzhiyun t_u8 queue_index; 5312*4882a593Smuzhiyun /** Disabled flag */ 5313*4882a593Smuzhiyun t_u8 disabled; 5314*4882a593Smuzhiyun /** Medium time allocation in 32us units*/ 5315*4882a593Smuzhiyun t_u16 medium_time; 5316*4882a593Smuzhiyun /** Flow required flag */ 5317*4882a593Smuzhiyun t_u8 flow_required; 5318*4882a593Smuzhiyun /** Flow created flag */ 5319*4882a593Smuzhiyun t_u8 flow_created; 5320*4882a593Smuzhiyun /** Reserved */ 5321*4882a593Smuzhiyun t_u32 reserved; 5322*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_WmmQueueStatus_t; 5323*4882a593Smuzhiyun 5324*4882a593Smuzhiyun /** Size of a TSPEC. Used to allocate necessary buffer space in commands */ 5325*4882a593Smuzhiyun #define WMM_TSPEC_SIZE 63 5326*4882a593Smuzhiyun 5327*4882a593Smuzhiyun /** Extra IE bytes allocated in messages for appended IEs after a TSPEC */ 5328*4882a593Smuzhiyun #define WMM_ADDTS_EXTRA_IE_BYTES 256 5329*4882a593Smuzhiyun 5330*4882a593Smuzhiyun /** Extra TLV bytes allocated in messages for configuring WMM Queues */ 5331*4882a593Smuzhiyun #define WMM_QUEUE_CONFIG_EXTRA_TLV_BYTES 64 5332*4882a593Smuzhiyun 5333*4882a593Smuzhiyun /** Number of bins in the histogram for the HostCmd_DS_WMM_QUEUE_STATS */ 5334*4882a593Smuzhiyun #define WMM_STATS_PKTS_HIST_BINS 7 5335*4882a593Smuzhiyun 5336*4882a593Smuzhiyun /** 5337*4882a593Smuzhiyun * @brief Firmware command structure to retrieve the firmware WMM status. 5338*4882a593Smuzhiyun * 5339*4882a593Smuzhiyun * Used to retrieve the status of each WMM AC Queue in TLV 5340*4882a593Smuzhiyun * format (MrvlIEtypes_WmmQueueStatus_t) as well as the current WMM 5341*4882a593Smuzhiyun * parameter IE advertised by the AP. 5342*4882a593Smuzhiyun * 5343*4882a593Smuzhiyun * Used in response to a EVENT_WMM_STATUS_CHANGE event signaling 5344*4882a593Smuzhiyun * a QOS change on one of the ACs or a change in the WMM Parameter in 5345*4882a593Smuzhiyun * the Beacon. 5346*4882a593Smuzhiyun * 5347*4882a593Smuzhiyun * TLV based command, byte arrays used for max sizing purpose. There are no 5348*4882a593Smuzhiyun * arguments sent in the command, the TLVs are returned by the firmware. 5349*4882a593Smuzhiyun */ 5350*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 5351*4882a593Smuzhiyun /** Queue status TLV */ 5352*4882a593Smuzhiyun t_u8 queue_status_tlv[sizeof(MrvlIEtypes_WmmQueueStatus_t) * 5353*4882a593Smuzhiyun MAX_AC_QUEUES]; 5354*4882a593Smuzhiyun /** WMM parameter TLV */ 5355*4882a593Smuzhiyun t_u8 wmm_param_tlv[sizeof(IEEEtypes_WmmParameter_t) + 2]; 5356*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_WMM_GET_STATUS; 5357*4882a593Smuzhiyun 5358*4882a593Smuzhiyun /** 5359*4882a593Smuzhiyun * @brief Command structure for the HostCmd_CMD_WMM_ADDTS_REQ firmware command 5360*4882a593Smuzhiyun */ 5361*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 5362*4882a593Smuzhiyun mlan_cmd_result_e command_result; /**< Command result */ 5363*4882a593Smuzhiyun t_u32 timeout_ms; /**< Timeout value in milliseconds */ 5364*4882a593Smuzhiyun t_u8 dialog_token; /**< Dialog token */ 5365*4882a593Smuzhiyun t_u8 ieee_status_code; /**< IEEE status code */ 5366*4882a593Smuzhiyun t_u8 tspec_data[WMM_TSPEC_SIZE]; /**< TSPEC data */ 5367*4882a593Smuzhiyun t_u8 addts_extra_ie_buf[WMM_ADDTS_EXTRA_IE_BYTES]; /**< Extra IE buffer 5368*4882a593Smuzhiyun */ 5369*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_WMM_ADDTS_REQ; 5370*4882a593Smuzhiyun 5371*4882a593Smuzhiyun /** 5372*4882a593Smuzhiyun * @brief Command structure for the HostCmd_CMD_WMM_DELTS_REQ firmware command 5373*4882a593Smuzhiyun */ 5374*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 5375*4882a593Smuzhiyun mlan_cmd_result_e command_result; /**< Command result */ 5376*4882a593Smuzhiyun t_u8 dialog_token; /**< Dialog token */ 5377*4882a593Smuzhiyun t_u8 ieee_reason_code; /**< IEEE reason code */ 5378*4882a593Smuzhiyun t_u8 tspec_data[WMM_TSPEC_SIZE]; /**< TSPEC data */ 5379*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_WMM_DELTS_REQ; 5380*4882a593Smuzhiyun 5381*4882a593Smuzhiyun /** 5382*4882a593Smuzhiyun * @brief Command structure for the HostCmd_CMD_WMM_QUEUE_CONFIG firmware cmd 5383*4882a593Smuzhiyun * 5384*4882a593Smuzhiyun * Set/Get/Default the Queue parameters for a specific AC in the firmware. 5385*4882a593Smuzhiyun */ 5386*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 5387*4882a593Smuzhiyun mlan_wmm_queue_config_action_e action; /**< Set, Get, or Default */ 5388*4882a593Smuzhiyun mlan_wmm_ac_e access_category; /**< WMM_AC_BK(0) to WMM_AC_VO(3) */ 5389*4882a593Smuzhiyun /** @brief MSDU lifetime expiry per 802.11e 5390*4882a593Smuzhiyun * 5391*4882a593Smuzhiyun * - Ignored if 0 on a set command 5392*4882a593Smuzhiyun * - Set to the 802.11e specified 500 TUs when defaulted 5393*4882a593Smuzhiyun */ 5394*4882a593Smuzhiyun t_u16 msdu_lifetime_expiry; 5395*4882a593Smuzhiyun t_u8 tlv_buffer[WMM_QUEUE_CONFIG_EXTRA_TLV_BYTES]; /**< Not supported */ 5396*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_WMM_QUEUE_CONFIG; 5397*4882a593Smuzhiyun 5398*4882a593Smuzhiyun /** 5399*4882a593Smuzhiyun * @brief Command structure for the HostCmd_CMD_WMM_QUEUE_STATS firmware cmd 5400*4882a593Smuzhiyun * 5401*4882a593Smuzhiyun * Turn statistical collection on/off for a given AC or retrieve the 5402*4882a593Smuzhiyun * accumulated stats for an AC and clear them in the firmware. 5403*4882a593Smuzhiyun */ 5404*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 5405*4882a593Smuzhiyun mlan_wmm_queue_stats_action_e action; /**< Start, Stop, or Get */ 5406*4882a593Smuzhiyun #ifdef BIG_ENDIAN_SUPPORT 5407*4882a593Smuzhiyun t_u8 select_bin : 7; /**< WMM_AC_BK(0) to WMM_AC_VO(3), or TID */ 5408*4882a593Smuzhiyun t_u8 select_is_userpri : 1; /**< Set if select_bin is UP, Clear for AC 5409*4882a593Smuzhiyun */ 5410*4882a593Smuzhiyun #else 5411*4882a593Smuzhiyun t_u8 select_is_userpri : 1; /**< Set if select_bin is UP, Clear for AC 5412*4882a593Smuzhiyun */ 5413*4882a593Smuzhiyun t_u8 select_bin : 7; /**< WMM_AC_BK(0) to WMM_AC_VO(3), or TID */ 5414*4882a593Smuzhiyun #endif 5415*4882a593Smuzhiyun t_u16 pkt_count; /**< Number of successful packets transmitted */ 5416*4882a593Smuzhiyun t_u16 pkt_loss; /**< Packets lost; not included in pktCount */ 5417*4882a593Smuzhiyun t_u32 avg_queue_delay; /**< Average Queue delay in microsec */ 5418*4882a593Smuzhiyun t_u32 avg_tx_delay; /**< Average Transmission delay in microsec */ 5419*4882a593Smuzhiyun t_u16 used_time; /**< Calc used time - units of 32 microsec */ 5420*4882a593Smuzhiyun t_u16 policed_time; /**< Calc policed time - units of 32 microsec */ 5421*4882a593Smuzhiyun /** @brief Queue Delay Histogram; number of packets per queue delay 5422*4882a593Smuzhiyun * range 5423*4882a593Smuzhiyun * 5424*4882a593Smuzhiyun * [0] - 0ms <= delay < 5ms 5425*4882a593Smuzhiyun * [1] - 5ms <= delay < 10ms 5426*4882a593Smuzhiyun * [2] - 10ms <= delay < 20ms 5427*4882a593Smuzhiyun * [3] - 20ms <= delay < 30ms 5428*4882a593Smuzhiyun * [4] - 30ms <= delay < 40ms 5429*4882a593Smuzhiyun * [5] - 40ms <= delay < 50ms 5430*4882a593Smuzhiyun * [6] - 50ms <= delay < msduLifetime (TUs) 5431*4882a593Smuzhiyun */ 5432*4882a593Smuzhiyun t_u16 delay_histogram[WMM_STATS_PKTS_HIST_BINS]; 5433*4882a593Smuzhiyun /** Reserved */ 5434*4882a593Smuzhiyun t_u16 reserved_1; 5435*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_WMM_QUEUE_STATS; 5436*4882a593Smuzhiyun 5437*4882a593Smuzhiyun /** 5438*4882a593Smuzhiyun * @brief Command structure for the HostCmd_CMD_WMM_TS_STATUS firmware cmd 5439*4882a593Smuzhiyun * 5440*4882a593Smuzhiyun * Query the firmware to get the status of the WMM Traffic Streams 5441*4882a593Smuzhiyun */ 5442*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 5443*4882a593Smuzhiyun /** TSID: Range: 0->7 */ 5444*4882a593Smuzhiyun t_u8 tid; 5445*4882a593Smuzhiyun /** TSID specified is valid */ 5446*4882a593Smuzhiyun t_u8 valid; 5447*4882a593Smuzhiyun /** AC TSID is active on */ 5448*4882a593Smuzhiyun t_u8 access_category; 5449*4882a593Smuzhiyun /** UP specified for the TSID */ 5450*4882a593Smuzhiyun t_u8 user_priority; 5451*4882a593Smuzhiyun /** Power save mode for TSID: 0 (legacy), 1 (UAPSD) */ 5452*4882a593Smuzhiyun t_u8 psb; 5453*4882a593Smuzhiyun /** Uplink(1), Downlink(2), Bidirectional(3) */ 5454*4882a593Smuzhiyun t_u8 flow_dir; 5455*4882a593Smuzhiyun /** Medium time granted for the TSID */ 5456*4882a593Smuzhiyun t_u16 medium_time; 5457*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_WMM_TS_STATUS; 5458*4882a593Smuzhiyun 5459*4882a593Smuzhiyun /** Firmware status for a specific AC */ 5460*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 5461*4882a593Smuzhiyun /** Disabled flag */ 5462*4882a593Smuzhiyun t_u8 disabled; 5463*4882a593Smuzhiyun /** Flow required flag */ 5464*4882a593Smuzhiyun t_u8 flow_required; 5465*4882a593Smuzhiyun /** Flow created flag */ 5466*4882a593Smuzhiyun t_u8 flow_created; 5467*4882a593Smuzhiyun } MLAN_PACK_END WmmAcStatus_t; 5468*4882a593Smuzhiyun 5469*4882a593Smuzhiyun /** Local Power Capability */ 5470*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_PowerCapability_t { 5471*4882a593Smuzhiyun /** Header */ 5472*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5473*4882a593Smuzhiyun /** Minmum power */ 5474*4882a593Smuzhiyun t_s8 min_power; 5475*4882a593Smuzhiyun /** Maximum power */ 5476*4882a593Smuzhiyun t_s8 max_power; 5477*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_PowerCapability_t; 5478*4882a593Smuzhiyun 5479*4882a593Smuzhiyun /** HT Information element */ 5480*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_HTInfo_t { 5481*4882a593Smuzhiyun /** Header */ 5482*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5483*4882a593Smuzhiyun 5484*4882a593Smuzhiyun /** HTInfo struct */ 5485*4882a593Smuzhiyun HTInfo_t ht_info; 5486*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_HTInfo_t; 5487*4882a593Smuzhiyun 5488*4882a593Smuzhiyun /** 20/40 BSS Coexistence element */ 5489*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_2040BSSCo_t { 5490*4882a593Smuzhiyun /** Header */ 5491*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5492*4882a593Smuzhiyun 5493*4882a593Smuzhiyun /** BSSCo2040_t struct */ 5494*4882a593Smuzhiyun BSSCo2040_t bss_co_2040; 5495*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_2040BSSCo_t; 5496*4882a593Smuzhiyun 5497*4882a593Smuzhiyun /** Extended Capabilities element */ 5498*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_ExtCap_t { 5499*4882a593Smuzhiyun /** Header */ 5500*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5501*4882a593Smuzhiyun 5502*4882a593Smuzhiyun /** ExtCap_t struct */ 5503*4882a593Smuzhiyun ExtCap_t ext_cap; 5504*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_ExtCap_t; 5505*4882a593Smuzhiyun 5506*4882a593Smuzhiyun /** Supported operating classes element */ 5507*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_SuppOperClass_t { 5508*4882a593Smuzhiyun /** Header */ 5509*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5510*4882a593Smuzhiyun /** Current operationg class **/ 5511*4882a593Smuzhiyun t_u8 current_oper_class; 5512*4882a593Smuzhiyun /** Operating class list */ 5513*4882a593Smuzhiyun t_u8 oper_class[1]; 5514*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_SuppOperClass_t; 5515*4882a593Smuzhiyun 5516*4882a593Smuzhiyun /** Oper_class channel bandwidth element */ 5517*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_chan_bw_oper_t { 5518*4882a593Smuzhiyun /** Header */ 5519*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5520*4882a593Smuzhiyun /** channel oper bandwidth*/ 5521*4882a593Smuzhiyun mlan_ds_bw_chan_oper ds_chan_bw_oper; 5522*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_chan_bw_oper_t; 5523*4882a593Smuzhiyun 5524*4882a593Smuzhiyun /** Qos Info */ 5525*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_qosinfo_t { 5526*4882a593Smuzhiyun /** Header */ 5527*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5528*4882a593Smuzhiyun /** qos_info*/ 5529*4882a593Smuzhiyun t_u8 qos_info; 5530*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_qosinfo_t; 5531*4882a593Smuzhiyun 5532*4882a593Smuzhiyun /** Overlapping BSS Scan Parameters element */ 5533*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_OverlapBSSScanParam_t { 5534*4882a593Smuzhiyun /** Header */ 5535*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5536*4882a593Smuzhiyun 5537*4882a593Smuzhiyun /** OBSSScanParam_t struct */ 5538*4882a593Smuzhiyun OBSSScanParam_t obss_scan_param; 5539*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_OverlapBSSScanParam_t; 5540*4882a593Smuzhiyun 5541*4882a593Smuzhiyun /** Set of MCS values that STA desires to use within the BSS */ 5542*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_HTOperationalMCSSet_t { 5543*4882a593Smuzhiyun /** Header */ 5544*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5545*4882a593Smuzhiyun 5546*4882a593Smuzhiyun /** Bitmap indicating MCSs that STA desires to use within the BSS */ 5547*4882a593Smuzhiyun t_u8 ht_operational_mcs_bitmap[16]; 5548*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_HTOperationalMCSSet_t; 5549*4882a593Smuzhiyun 5550*4882a593Smuzhiyun /** VHT Operations IE */ 5551*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_VHTOprat_t { 5552*4882a593Smuzhiyun /** Header */ 5553*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5554*4882a593Smuzhiyun 5555*4882a593Smuzhiyun t_u8 chan_width; 5556*4882a593Smuzhiyun t_u8 chan_center_freq_1; 5557*4882a593Smuzhiyun t_u8 chan_center_freq_2; 5558*4882a593Smuzhiyun /** Basic MCS set map, each 2 bits stands for a Nss */ 5559*4882a593Smuzhiyun t_u16 basic_MCS_map; 5560*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_VHTOprat_t; 5561*4882a593Smuzhiyun 5562*4882a593Smuzhiyun /** VHT Transmit Power Envelope IE */ 5563*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_VHTtxpower_t { 5564*4882a593Smuzhiyun /** Header */ 5565*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5566*4882a593Smuzhiyun 5567*4882a593Smuzhiyun t_u8 max_tx_power; 5568*4882a593Smuzhiyun t_u8 chan_center_freq; 5569*4882a593Smuzhiyun t_u8 chan_width; 5570*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_VHTtxpower_t; 5571*4882a593Smuzhiyun 5572*4882a593Smuzhiyun /** Extended Power Constraint IE */ 5573*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_ExtPwerCons_t { 5574*4882a593Smuzhiyun /** Header */ 5575*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5576*4882a593Smuzhiyun 5577*4882a593Smuzhiyun /** channel width */ 5578*4882a593Smuzhiyun t_u8 chan_width; 5579*4882a593Smuzhiyun /** local power constraint */ 5580*4882a593Smuzhiyun t_u8 local_power_cons; 5581*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_ExtPwerCons_t; 5582*4882a593Smuzhiyun 5583*4882a593Smuzhiyun /** Extended BSS Load IE */ 5584*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_ExtBSSload_t { 5585*4882a593Smuzhiyun /** Header */ 5586*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5587*4882a593Smuzhiyun 5588*4882a593Smuzhiyun t_u8 MU_MIMO_capa_count; 5589*4882a593Smuzhiyun t_u8 stream_underutilization; 5590*4882a593Smuzhiyun t_u8 VHT40_util; 5591*4882a593Smuzhiyun t_u8 VHT80_util; 5592*4882a593Smuzhiyun t_u8 VHT160_util; 5593*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_ExtBSSload_t; 5594*4882a593Smuzhiyun 5595*4882a593Smuzhiyun /** Quiet Channel IE */ 5596*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_QuietChan_t { 5597*4882a593Smuzhiyun /** Header */ 5598*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5599*4882a593Smuzhiyun 5600*4882a593Smuzhiyun t_u8 AP_quiet_mode; 5601*4882a593Smuzhiyun t_u8 quiet_count; 5602*4882a593Smuzhiyun t_u8 quiet_period; 5603*4882a593Smuzhiyun t_u16 quiet_dur; 5604*4882a593Smuzhiyun t_u16 quiet_offset; 5605*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_QuietChan_t; 5606*4882a593Smuzhiyun 5607*4882a593Smuzhiyun /** Wide Bandwidth Channel Switch IE */ 5608*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_BWSwitch_t { 5609*4882a593Smuzhiyun /** Header */ 5610*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5611*4882a593Smuzhiyun 5612*4882a593Smuzhiyun t_u8 new_chan_width; 5613*4882a593Smuzhiyun t_u8 new_chan_center_freq_1; 5614*4882a593Smuzhiyun t_u8 new_chan_center_freq_2; 5615*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_BWSwitch_t; 5616*4882a593Smuzhiyun 5617*4882a593Smuzhiyun /** AID IE */ 5618*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_AID_t { 5619*4882a593Smuzhiyun /** Header */ 5620*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5621*4882a593Smuzhiyun 5622*4882a593Smuzhiyun /** AID number */ 5623*4882a593Smuzhiyun t_u16 AID; 5624*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_AID_t; 5625*4882a593Smuzhiyun 5626*4882a593Smuzhiyun /** Operating Mode Notification IE */ 5627*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_OperModeNtf_t { 5628*4882a593Smuzhiyun /** Header */ 5629*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5630*4882a593Smuzhiyun 5631*4882a593Smuzhiyun /** operating mdoe */ 5632*4882a593Smuzhiyun t_u8 oper_mode; 5633*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_OperModeNtf_t; 5634*4882a593Smuzhiyun 5635*4882a593Smuzhiyun /** bf global args */ 5636*4882a593Smuzhiyun typedef struct MLAN_PACK_START _bf_global_cfg_args { 5637*4882a593Smuzhiyun /** Global enable/disable bf */ 5638*4882a593Smuzhiyun t_u8 bf_enbl; 5639*4882a593Smuzhiyun /** Global enable/disable sounding */ 5640*4882a593Smuzhiyun t_u8 sounding_enbl; 5641*4882a593Smuzhiyun /** FB Type */ 5642*4882a593Smuzhiyun t_u8 fb_type; 5643*4882a593Smuzhiyun /** SNR Threshold */ 5644*4882a593Smuzhiyun t_u8 snr_threshold; 5645*4882a593Smuzhiyun /** Sounding interval */ 5646*4882a593Smuzhiyun t_u16 sounding_interval; 5647*4882a593Smuzhiyun /** BF mode */ 5648*4882a593Smuzhiyun t_u8 bf_mode; 5649*4882a593Smuzhiyun /** Reserved */ 5650*4882a593Smuzhiyun t_u8 reserved; 5651*4882a593Smuzhiyun } MLAN_PACK_END bf_global_cfg_args; 5652*4882a593Smuzhiyun 5653*4882a593Smuzhiyun /** bf_trigger_sound_args_t */ 5654*4882a593Smuzhiyun typedef MLAN_PACK_START struct _bf_trigger_sound_args_t { 5655*4882a593Smuzhiyun /** Peer MAC address */ 5656*4882a593Smuzhiyun t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH]; 5657*4882a593Smuzhiyun /** Status */ 5658*4882a593Smuzhiyun t_u8 status; 5659*4882a593Smuzhiyun } MLAN_PACK_END bf_trigger_sound_args_t; 5660*4882a593Smuzhiyun 5661*4882a593Smuzhiyun /** bf periodicity args */ 5662*4882a593Smuzhiyun typedef MLAN_PACK_START struct _bf_periodicity_args { 5663*4882a593Smuzhiyun /** Peer MAC address */ 5664*4882a593Smuzhiyun t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH]; 5665*4882a593Smuzhiyun /** Current Tx BF Interval */ 5666*4882a593Smuzhiyun t_u16 interval; 5667*4882a593Smuzhiyun /** Status */ 5668*4882a593Smuzhiyun t_u8 status; 5669*4882a593Smuzhiyun } MLAN_PACK_END bf_periodicity_args; 5670*4882a593Smuzhiyun 5671*4882a593Smuzhiyun /** bf peer configuration args */ 5672*4882a593Smuzhiyun typedef struct MLAN_PACK_START _bf_peer_args { 5673*4882a593Smuzhiyun /** Peer MAC address */ 5674*4882a593Smuzhiyun t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH]; 5675*4882a593Smuzhiyun /** Reserved */ 5676*4882a593Smuzhiyun t_u16 reserved; 5677*4882a593Smuzhiyun /** Enable/Disable Beamforming */ 5678*4882a593Smuzhiyun t_u8 bf_enbl; 5679*4882a593Smuzhiyun /** Enable/Disable sounding */ 5680*4882a593Smuzhiyun t_u8 sounding_enbl; 5681*4882a593Smuzhiyun /** FB Type */ 5682*4882a593Smuzhiyun t_u8 fb_type; 5683*4882a593Smuzhiyun } MLAN_PACK_END bf_peer_args; 5684*4882a593Smuzhiyun 5685*4882a593Smuzhiyun /** bf_snr_thr_t */ 5686*4882a593Smuzhiyun typedef MLAN_PACK_START struct _bf_snr_thr_t { 5687*4882a593Smuzhiyun /** Peer MAC address */ 5688*4882a593Smuzhiyun t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH]; 5689*4882a593Smuzhiyun /** SNR */ 5690*4882a593Smuzhiyun t_u8 snr; 5691*4882a593Smuzhiyun } MLAN_PACK_END bf_snr_thr_t; 5692*4882a593Smuzhiyun 5693*4882a593Smuzhiyun /** HostCmd_DS_TX_BF_CFG */ 5694*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TX_BF_CFG { 5695*4882a593Smuzhiyun /* Beamforming action */ 5696*4882a593Smuzhiyun t_u16 bf_action; 5697*4882a593Smuzhiyun /* action - SET/GET*/ 5698*4882a593Smuzhiyun t_u16 action; 5699*4882a593Smuzhiyun 5700*4882a593Smuzhiyun MLAN_PACK_START union { 5701*4882a593Smuzhiyun bf_global_cfg_args bf_global_cfg; 5702*4882a593Smuzhiyun bf_trigger_sound_args_t bf_sound_args; 5703*4882a593Smuzhiyun bf_periodicity_args bf_periodicity; 5704*4882a593Smuzhiyun bf_peer_args tx_bf_peer; 5705*4882a593Smuzhiyun bf_snr_thr_t bf_snr; 5706*4882a593Smuzhiyun } MLAN_PACK_END body; 5707*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TX_BF_CFG; 5708*4882a593Smuzhiyun 5709*4882a593Smuzhiyun #ifdef WIFI_DIRECT_SUPPORT 5710*4882a593Smuzhiyun /** MrvlIEtypes_psk_t */ 5711*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_psk_t { 5712*4882a593Smuzhiyun /** Header */ 5713*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5714*4882a593Smuzhiyun /** PSK */ 5715*4882a593Smuzhiyun t_u8 psk[MLAN_MAX_KEY_LENGTH]; 5716*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_psk_t; 5717*4882a593Smuzhiyun #endif /* WIFI_DIRECT_SUPPORT */ 5718*4882a593Smuzhiyun 5719*4882a593Smuzhiyun /** Data structure for Link ID */ 5720*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_LinkIDElement_t { 5721*4882a593Smuzhiyun /** Header */ 5722*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5723*4882a593Smuzhiyun /** Bssid */ 5724*4882a593Smuzhiyun t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 5725*4882a593Smuzhiyun /** initial sta address*/ 5726*4882a593Smuzhiyun t_u8 init_sta[MLAN_MAC_ADDR_LENGTH]; 5727*4882a593Smuzhiyun /** respose sta address */ 5728*4882a593Smuzhiyun t_u8 resp_sta[MLAN_MAC_ADDR_LENGTH]; 5729*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_LinkIDElement_t; 5730*4882a593Smuzhiyun 5731*4882a593Smuzhiyun /** MrvlIEtypes_PMK_t */ 5732*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_PMK_t { 5733*4882a593Smuzhiyun /** Header */ 5734*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5735*4882a593Smuzhiyun /** PMK */ 5736*4882a593Smuzhiyun t_u8 pmk[1]; 5737*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_PMK_t; 5738*4882a593Smuzhiyun 5739*4882a593Smuzhiyun /** MrvlIEtypes_Passphrase_t */ 5740*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Passphrase_t { 5741*4882a593Smuzhiyun /** Header */ 5742*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5743*4882a593Smuzhiyun /** Passphrase */ 5744*4882a593Smuzhiyun char passphrase[1]; 5745*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Passphrase_t; 5746*4882a593Smuzhiyun 5747*4882a593Smuzhiyun /** MrvlIEtypes_SAE_Password_t */ 5748*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_SAE_Password_t { 5749*4882a593Smuzhiyun /** Header */ 5750*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5751*4882a593Smuzhiyun /** SAE Password */ 5752*4882a593Smuzhiyun char sae_password[1]; 5753*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_SAE_Password_t; 5754*4882a593Smuzhiyun 5755*4882a593Smuzhiyun /** MrvlIEtypes_SAE_PWE_Mode_t */ 5756*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_SAE_PWE_Mode_t { 5757*4882a593Smuzhiyun /** Header */ 5758*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5759*4882a593Smuzhiyun /** WPA3 SAE mechanism for PWE derivation */ 5760*4882a593Smuzhiyun char pwe[1]; 5761*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_SAE_PWE_Mode_t; 5762*4882a593Smuzhiyun 5763*4882a593Smuzhiyun /** SAE H2E capability bit in RSNX */ 5764*4882a593Smuzhiyun #define SAE_H2E_BIT 5 5765*4882a593Smuzhiyun 5766*4882a593Smuzhiyun /* rsnMode - 5767*4882a593Smuzhiyun * Bit 0 : No RSN 5768*4882a593Smuzhiyun * Bit 1-2 : RFU 5769*4882a593Smuzhiyun * Bit 3 : WPA 5770*4882a593Smuzhiyun * Bit 4 : WPA-NONE 5771*4882a593Smuzhiyun * Bit 5 : WPA2 5772*4882a593Smuzhiyun * Bit 6 : AES CCKM 5773*4882a593Smuzhiyun * Bit 7-15 : RFU 5774*4882a593Smuzhiyun */ 5775*4882a593Smuzhiyun /** MrvlIEtypes_EncrProto_t */ 5776*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_EncrProto_t { 5777*4882a593Smuzhiyun /** Header */ 5778*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5779*4882a593Smuzhiyun /** EncrProto */ 5780*4882a593Smuzhiyun t_u16 rsn_mode; 5781*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_EncrProto_t; 5782*4882a593Smuzhiyun 5783*4882a593Smuzhiyun /** MrvlIEtypes_Bssid_t */ 5784*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Bssid_t { 5785*4882a593Smuzhiyun /** Header */ 5786*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5787*4882a593Smuzhiyun /** Bssid */ 5788*4882a593Smuzhiyun t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 5789*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Bssid_t; 5790*4882a593Smuzhiyun 5791*4882a593Smuzhiyun /* 5792*4882a593Smuzhiyun * This struct will handle GET,SET,CLEAR function for embedded 5793*4882a593Smuzhiyun * supplicant. 5794*4882a593Smuzhiyun * Define data structure for HostCmd_CMD_802_11_SUPPLICANT_PMK 5795*4882a593Smuzhiyun */ 5796*4882a593Smuzhiyun /** HostCmd_DS_802_11_SUPPLICANT_PMK */ 5797*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SUPPLICANT_PMK { 5798*4882a593Smuzhiyun /** CMD Action GET/SET/CLEAR */ 5799*4882a593Smuzhiyun t_u16 action; 5800*4882a593Smuzhiyun /** CacheResult initialized to 0 */ 5801*4882a593Smuzhiyun t_u16 cache_result; 5802*4882a593Smuzhiyun /** TLV Buffer */ 5803*4882a593Smuzhiyun t_u8 tlv_buffer[1]; 5804*4882a593Smuzhiyun /** MrvlIEtypes_SsidParamSet_t SsidParamSet; 5805*4882a593Smuzhiyun * MrvlIEtypes_PMK_t Pmk; 5806*4882a593Smuzhiyun * MrvlIEtypes_Passphrase_t Passphrase; 5807*4882a593Smuzhiyun * MrvlIEtypes_Bssid_t Bssid; 5808*4882a593Smuzhiyun **/ 5809*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_SUPPLICANT_PMK; 5810*4882a593Smuzhiyun 5811*4882a593Smuzhiyun /* 5812*4882a593Smuzhiyun * This struct will GET the Supplicant supported bitmaps 5813*4882a593Smuzhiyun * The GET_CURRENT action will get the network profile used 5814*4882a593Smuzhiyun * for the current assocation. 5815*4882a593Smuzhiyun * Define data structure for HostCmd_CMD_802_11_SUPPLICANT_PROFILE 5816*4882a593Smuzhiyun */ 5817*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SUPPLICANT_PROFILE { 5818*4882a593Smuzhiyun /** GET/SET/GET_CURRENT */ 5819*4882a593Smuzhiyun t_u16 action; 5820*4882a593Smuzhiyun /** Reserved */ 5821*4882a593Smuzhiyun t_u16 reserved; 5822*4882a593Smuzhiyun /** TLVBuffer */ 5823*4882a593Smuzhiyun t_u8 tlv_buf[1]; 5824*4882a593Smuzhiyun /* MrvlIEtypes_EncrProto_t */ 5825*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_SUPPLICANT_PROFILE; 5826*4882a593Smuzhiyun 5827*4882a593Smuzhiyun /* unicastCipher - 5828*4882a593Smuzhiyun * Bit 0 : RFU 5829*4882a593Smuzhiyun * Bit 1 : RFU 5830*4882a593Smuzhiyun * Bit 2 : TKIP 5831*4882a593Smuzhiyun * Bit 3 : AES CCKM 5832*4882a593Smuzhiyun * Bit 2-7 : RFU 5833*4882a593Smuzhiyun * multicastCipher - 5834*4882a593Smuzhiyun * Bit 0 : WEP40 5835*4882a593Smuzhiyun * Bit 1 : WEP104 5836*4882a593Smuzhiyun * Bit 2 : TKIP 5837*4882a593Smuzhiyun * Bit 3 : AES 5838*4882a593Smuzhiyun * Bit 4-7 : Reserved for now 5839*4882a593Smuzhiyun */ 5840*4882a593Smuzhiyun /** MrvlIEtypes_Cipher_t */ 5841*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Cipher_t { 5842*4882a593Smuzhiyun /** Header */ 5843*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 5844*4882a593Smuzhiyun /** PairCipher */ 5845*4882a593Smuzhiyun t_u8 pair_cipher; 5846*4882a593Smuzhiyun /** GroupCipher */ 5847*4882a593Smuzhiyun t_u8 group_cipher; 5848*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Cipher_t; 5849*4882a593Smuzhiyun 5850*4882a593Smuzhiyun /** RFType */ 5851*4882a593Smuzhiyun typedef MLAN_PACK_START struct _RFType_t { 5852*4882a593Smuzhiyun /** band info */ 5853*4882a593Smuzhiyun Band_Config_t bandcfg; 5854*4882a593Smuzhiyun /** reserved */ 5855*4882a593Smuzhiyun t_u8 reserved; 5856*4882a593Smuzhiyun } MLAN_PACK_END RFType_t; 5857*4882a593Smuzhiyun 5858*4882a593Smuzhiyun /** HostCmd_CMD_802_11_RF_CHANNEL */ 5859*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RF_CHANNEL { 5860*4882a593Smuzhiyun /** Action */ 5861*4882a593Smuzhiyun t_u16 action; 5862*4882a593Smuzhiyun /** Current channel */ 5863*4882a593Smuzhiyun t_u16 current_channel; 5864*4882a593Smuzhiyun /** RF type */ 5865*4882a593Smuzhiyun RFType_t rf_type; 5866*4882a593Smuzhiyun /** Reserved field */ 5867*4882a593Smuzhiyun t_u16 reserved; 5868*4882a593Smuzhiyun #ifdef STA_SUPPORT 5869*4882a593Smuzhiyun /** Reserved */ 5870*4882a593Smuzhiyun t_u8 reserved_1[32]; 5871*4882a593Smuzhiyun #else /* STA_SUPPORT */ 5872*4882a593Smuzhiyun /** List of channels */ 5873*4882a593Smuzhiyun t_u8 channel_list[32]; 5874*4882a593Smuzhiyun #endif /* !STA_SUPPORT */ 5875*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_RF_CHANNEL; 5876*4882a593Smuzhiyun 5877*4882a593Smuzhiyun /** HostCmd_DS_VERSION_EXT */ 5878*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_VERSION_EXT { 5879*4882a593Smuzhiyun /** Selected version string */ 5880*4882a593Smuzhiyun t_u8 version_str_sel; 5881*4882a593Smuzhiyun /** Version string */ 5882*4882a593Smuzhiyun char version_str[128]; 5883*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_VERSION_EXT; 5884*4882a593Smuzhiyun 5885*4882a593Smuzhiyun #define TLV_TYPE_CHAN_ATTR_CFG (PROPRIETARY_TLV_BASE_ID + 237) 5886*4882a593Smuzhiyun #define TLV_TYPE_REGION_INFO (PROPRIETARY_TLV_BASE_ID + 238) 5887*4882a593Smuzhiyun #define TLV_TYPE_POWER_TABLE (PROPRIETARY_TLV_BASE_ID + 262) 5888*4882a593Smuzhiyun #define TLV_TYPE_POWER_TABLE_ATTR (PROPRIETARY_TLV_BASE_ID + 317) 5889*4882a593Smuzhiyun /** HostCmd_DS_CHAN_REGION_CFG */ 5890*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CHAN_REGION_CFG { 5891*4882a593Smuzhiyun /** Action */ 5892*4882a593Smuzhiyun t_u16 action; 5893*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CHAN_REGION_CFG; 5894*4882a593Smuzhiyun 5895*4882a593Smuzhiyun /** HostCmd_CMD_CW_MODE_CTRL */ 5896*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CW_MODE_CTRL { 5897*4882a593Smuzhiyun /** Action for CW Tone Control */ 5898*4882a593Smuzhiyun t_u16 action; 5899*4882a593Smuzhiyun /** Mode of Operation 0: Disbale 1: Tx Continuous Packet 2: Tx 5900*4882a593Smuzhiyun * Continuous Wave */ 5901*4882a593Smuzhiyun t_u8 mode; 5902*4882a593Smuzhiyun /** channel */ 5903*4882a593Smuzhiyun t_u8 channel; 5904*4882a593Smuzhiyun /** channel info*/ 5905*4882a593Smuzhiyun t_u8 chanInfo; 5906*4882a593Smuzhiyun /** Tx Power level in dBm */ 5907*4882a593Smuzhiyun t_u16 txPower; 5908*4882a593Smuzhiyun /** Packet Length */ 5909*4882a593Smuzhiyun t_u16 pktLength; 5910*4882a593Smuzhiyun /** bit rate Info */ 5911*4882a593Smuzhiyun t_u32 rateInfo; 5912*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CW_MODE_CTRL; 5913*4882a593Smuzhiyun 5914*4882a593Smuzhiyun /** HostCmd_CMD_802_11_RF_ANTENNA */ 5915*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RF_ANTENNA { 5916*4882a593Smuzhiyun /** Action for Tx antenna */ 5917*4882a593Smuzhiyun t_u16 action_tx; 5918*4882a593Smuzhiyun /** Tx antenna mode Bit0:1, Bit1:2, Bit0-1:1+2, 0xffff: diversity */ 5919*4882a593Smuzhiyun t_u16 tx_antenna_mode; 5920*4882a593Smuzhiyun /** Action for Rx antenna */ 5921*4882a593Smuzhiyun t_u16 action_rx; 5922*4882a593Smuzhiyun /** Rx antenna mode Bit0:1, Bit1:2, Bit0-1:1+2, 0xffff: diversity */ 5923*4882a593Smuzhiyun t_u16 rx_antenna_mode; 5924*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_RF_ANTENNA; 5925*4882a593Smuzhiyun 5926*4882a593Smuzhiyun /** HostCmd_DS_802_11_IBSS_STATUS */ 5927*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_IBSS_STATUS { 5928*4882a593Smuzhiyun /** Action */ 5929*4882a593Smuzhiyun t_u16 action; 5930*4882a593Smuzhiyun /** Enable */ 5931*4882a593Smuzhiyun t_u16 enable; 5932*4882a593Smuzhiyun /** BSSID */ 5933*4882a593Smuzhiyun t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 5934*4882a593Smuzhiyun /** Beacon interval */ 5935*4882a593Smuzhiyun t_u16 beacon_interval; 5936*4882a593Smuzhiyun /** ATIM window interval */ 5937*4882a593Smuzhiyun t_u16 atim_window; 5938*4882a593Smuzhiyun /** User G rate protection */ 5939*4882a593Smuzhiyun t_u16 use_g_rate_protect; 5940*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_IBSS_STATUS; 5941*4882a593Smuzhiyun 5942*4882a593Smuzhiyun /** HostCmd_DS_MGMT_IE_LIST_CFG */ 5943*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_MGMT_IE_LIST { 5944*4882a593Smuzhiyun /** Action */ 5945*4882a593Smuzhiyun t_u16 action; 5946*4882a593Smuzhiyun /** Get/Set mgmt IE */ 5947*4882a593Smuzhiyun mlan_ds_misc_custom_ie ds_mgmt_ie; 5948*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MGMT_IE_LIST_CFG; 5949*4882a593Smuzhiyun 5950*4882a593Smuzhiyun /** HostCmd_DS_TDLS_CONFIG */ 5951*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TDLS_CONFIG { 5952*4882a593Smuzhiyun /** Set TDLS configuration */ 5953*4882a593Smuzhiyun mlan_ds_misc_tdls_config tdls_info; 5954*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TDLS_CONFIG; 5955*4882a593Smuzhiyun 5956*4882a593Smuzhiyun /**Action ID for TDLS delete link*/ 5957*4882a593Smuzhiyun #define TDLS_DELETE 0x00 5958*4882a593Smuzhiyun /**Action ID for TDLS create link*/ 5959*4882a593Smuzhiyun #define TDLS_CREATE 0x01 5960*4882a593Smuzhiyun /**Action ID for TDLS config link*/ 5961*4882a593Smuzhiyun #define TDLS_CONFIG 0x02 5962*4882a593Smuzhiyun /** HostCmd_DS_TDLS_OPER */ 5963*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TDLS_OPER { 5964*4882a593Smuzhiyun /** Action */ 5965*4882a593Smuzhiyun t_u16 tdls_action; 5966*4882a593Smuzhiyun /**reason*/ 5967*4882a593Smuzhiyun t_u16 reason; 5968*4882a593Smuzhiyun /** peer mac */ 5969*4882a593Smuzhiyun t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH]; 5970*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TDLS_OPER; 5971*4882a593Smuzhiyun 5972*4882a593Smuzhiyun /** HostCmd_CMD_MAC_REG_ACCESS */ 5973*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_MAC_REG_ACCESS { 5974*4882a593Smuzhiyun /** Action */ 5975*4882a593Smuzhiyun t_u16 action; 5976*4882a593Smuzhiyun /** MAC register offset */ 5977*4882a593Smuzhiyun t_u16 offset; 5978*4882a593Smuzhiyun /** MAC register value */ 5979*4882a593Smuzhiyun t_u32 value; 5980*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MAC_REG_ACCESS; 5981*4882a593Smuzhiyun 5982*4882a593Smuzhiyun /** HostCmd_CMD_BCA_REG_ACCESS */ 5983*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_BCA_REG_ACCESS { 5984*4882a593Smuzhiyun /** Action */ 5985*4882a593Smuzhiyun t_u16 action; 5986*4882a593Smuzhiyun /** BCA register offset */ 5987*4882a593Smuzhiyun t_u16 offset; 5988*4882a593Smuzhiyun /** BCA register value */ 5989*4882a593Smuzhiyun t_u32 value; 5990*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_BCA_REG_ACCESS; 5991*4882a593Smuzhiyun 5992*4882a593Smuzhiyun /** HostCmd_CMD_BBP_REG_ACCESS */ 5993*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_BBP_REG_ACCESS { 5994*4882a593Smuzhiyun /** Acion */ 5995*4882a593Smuzhiyun t_u16 action; 5996*4882a593Smuzhiyun /** BBP register offset */ 5997*4882a593Smuzhiyun t_u16 offset; 5998*4882a593Smuzhiyun /** BBP register value */ 5999*4882a593Smuzhiyun t_u8 value; 6000*4882a593Smuzhiyun /** Reserved field */ 6001*4882a593Smuzhiyun t_u8 reserved[3]; 6002*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_BBP_REG_ACCESS; 6003*4882a593Smuzhiyun 6004*4882a593Smuzhiyun /** HostCmd_CMD_RF_REG_ACCESS */ 6005*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_RF_REG_ACCESS { 6006*4882a593Smuzhiyun /** Action */ 6007*4882a593Smuzhiyun t_u16 action; 6008*4882a593Smuzhiyun /** RF register offset */ 6009*4882a593Smuzhiyun t_u16 offset; 6010*4882a593Smuzhiyun /** RF register value */ 6011*4882a593Smuzhiyun t_u8 value; 6012*4882a593Smuzhiyun /** Reserved field */ 6013*4882a593Smuzhiyun t_u8 reserved[3]; 6014*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_RF_REG_ACCESS; 6015*4882a593Smuzhiyun 6016*4882a593Smuzhiyun /** HostCmd_DS_802_11_EEPROM_ACCESS */ 6017*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_EEPROM_ACCESS { 6018*4882a593Smuzhiyun /** Action */ 6019*4882a593Smuzhiyun t_u16 action; 6020*4882a593Smuzhiyun 6021*4882a593Smuzhiyun /** multiple 4 */ 6022*4882a593Smuzhiyun t_u16 offset; 6023*4882a593Smuzhiyun /** Number of bytes */ 6024*4882a593Smuzhiyun t_u16 byte_count; 6025*4882a593Smuzhiyun /** Value */ 6026*4882a593Smuzhiyun t_u8 value; 6027*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_EEPROM_ACCESS; 6028*4882a593Smuzhiyun 6029*4882a593Smuzhiyun /** HostCmd_DS_MEM_ACCESS */ 6030*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_MEM_ACCESS { 6031*4882a593Smuzhiyun /** Action */ 6032*4882a593Smuzhiyun t_u16 action; 6033*4882a593Smuzhiyun /** Reserved field */ 6034*4882a593Smuzhiyun t_u16 reserved; 6035*4882a593Smuzhiyun /** Address */ 6036*4882a593Smuzhiyun t_u32 addr; 6037*4882a593Smuzhiyun /** Value */ 6038*4882a593Smuzhiyun t_u32 value; 6039*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MEM_ACCESS; 6040*4882a593Smuzhiyun 6041*4882a593Smuzhiyun /** HostCmd_CMD_REG_ACCESS */ 6042*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_REG_ACCESS { 6043*4882a593Smuzhiyun /** Action */ 6044*4882a593Smuzhiyun t_u16 action; 6045*4882a593Smuzhiyun /** reg type */ 6046*4882a593Smuzhiyun t_u16 reg_type; 6047*4882a593Smuzhiyun /** reserved */ 6048*4882a593Smuzhiyun t_u16 reserved; 6049*4882a593Smuzhiyun /** register offset */ 6050*4882a593Smuzhiyun t_u16 offset; 6051*4882a593Smuzhiyun /** register value */ 6052*4882a593Smuzhiyun t_u32 value; 6053*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_REG_ACCESS; 6054*4882a593Smuzhiyun 6055*4882a593Smuzhiyun /** HostCmd_DS_TARGET_ACCESS */ 6056*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TARGET_ACCESS { 6057*4882a593Smuzhiyun /** Action */ 6058*4882a593Smuzhiyun t_u16 action; 6059*4882a593Smuzhiyun /** CSU Target Device. 1: CSU, 2: PSU */ 6060*4882a593Smuzhiyun t_u16 csu_target; 6061*4882a593Smuzhiyun /** Target Device Address */ 6062*4882a593Smuzhiyun t_u16 address; 6063*4882a593Smuzhiyun /** Data */ 6064*4882a593Smuzhiyun t_u8 data; 6065*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TARGET_ACCESS; 6066*4882a593Smuzhiyun 6067*4882a593Smuzhiyun /** HostCmd_DS_SUBSCRIBE_EVENT */ 6068*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_SUBSCRIBE_EVENT { 6069*4882a593Smuzhiyun /** Action */ 6070*4882a593Smuzhiyun t_u16 action; 6071*4882a593Smuzhiyun /** Bitmap of subscribed events */ 6072*4882a593Smuzhiyun t_u16 event_bitmap; 6073*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_SUBSCRIBE_EVENT; 6074*4882a593Smuzhiyun 6075*4882a593Smuzhiyun /** HostCmd_DS_OTP_USER_DATA */ 6076*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_OTP_USER_DATA { 6077*4882a593Smuzhiyun /** Action */ 6078*4882a593Smuzhiyun t_u16 action; 6079*4882a593Smuzhiyun /** Reserved field */ 6080*4882a593Smuzhiyun t_u16 reserved; 6081*4882a593Smuzhiyun /** User data length */ 6082*4882a593Smuzhiyun t_u16 user_data_length; 6083*4882a593Smuzhiyun /** User data */ 6084*4882a593Smuzhiyun t_u8 user_data[1]; 6085*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_OTP_USER_DATA; 6086*4882a593Smuzhiyun 6087*4882a593Smuzhiyun /** HostCmd_DS_FW_AUTO_RECONNECT */ 6088*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_FW_AUTO_RECONNECT { 6089*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 6090*4882a593Smuzhiyun t_u16 action; 6091*4882a593Smuzhiyun /** reconnect counter: 6092*4882a593Smuzhiyun * [0x0]: Do not attempt auto reconnect i.e. disable auto-reconnect 6093*4882a593Smuzhiyun * [0x1-0xFE]: Number of times reconnection needs to be attempted 6094*4882a593Smuzhiyun * [0xFF]: Attempt auto-reconnection forever */ 6095*4882a593Smuzhiyun t_u8 reconnect_counter; 6096*4882a593Smuzhiyun /** reconnect interval */ 6097*4882a593Smuzhiyun t_u8 reconnect_interval; 6098*4882a593Smuzhiyun /** flags: 6099*4882a593Smuzhiyun * [Bit 0]: Set to 1: Firmware should report link-loss to host if AP 6100*4882a593Smuzhiyun * rejects authentication/association while reconnecting Set to 0: 6101*4882a593Smuzhiyun * Default behavior: Firmware does not report link-loss to host on AP 6102*4882a593Smuzhiyun * rejection and continues internally [Bit 1-15]: Reserved */ 6103*4882a593Smuzhiyun t_u16 flags; 6104*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_FW_AUTO_RECONNECT; 6105*4882a593Smuzhiyun 6106*4882a593Smuzhiyun /** HostCmd_CMD_HS_WAKEUP_REASON */ 6107*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_HS_WAKEUP_REASON { 6108*4882a593Smuzhiyun /** wakeupReason: 6109*4882a593Smuzhiyun * 0: unknown 6110*4882a593Smuzhiyun * 1: Broadcast data matched 6111*4882a593Smuzhiyun * 2: Multicast data matched 6112*4882a593Smuzhiyun * 3: Unicast data matched 6113*4882a593Smuzhiyun * 4: Maskable event matched 6114*4882a593Smuzhiyun * 5. Non-maskable event matched 6115*4882a593Smuzhiyun * 6: Non-maskable condition matched (EAPoL rekey) 6116*4882a593Smuzhiyun * 7: Magic pattern matched 6117*4882a593Smuzhiyun * Others: reserved. (set to 0) */ 6118*4882a593Smuzhiyun t_u16 wakeup_reason; 6119*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_HS_WAKEUP_REASON; 6120*4882a593Smuzhiyun 6121*4882a593Smuzhiyun /** MrvlIEtypes_HsWakeHoldoff_t */ 6122*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_HsWakeHoldoff_t { 6123*4882a593Smuzhiyun /** Header */ 6124*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6125*4882a593Smuzhiyun /** Minimum delay between HsActive and HostWake (in msec) */ 6126*4882a593Smuzhiyun t_u16 min_wake_holdoff; 6127*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_HsWakeHoldoff_t; 6128*4882a593Smuzhiyun 6129*4882a593Smuzhiyun /** MrvlIEtypes_PsParamsInHs_t */ 6130*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_PsParamsInHs_t { 6131*4882a593Smuzhiyun /** Header */ 6132*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6133*4882a593Smuzhiyun /** Host sleep wake interval(in msec) */ 6134*4882a593Smuzhiyun t_u32 hs_wake_interval; 6135*4882a593Smuzhiyun /** Host sleep inactivity timeout (in msec) */ 6136*4882a593Smuzhiyun t_u32 hs_inactivity_timeout; 6137*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_PsParamsInHs_t; 6138*4882a593Smuzhiyun 6139*4882a593Smuzhiyun /** MrvlIEtypes_WakeupSourceGPIO_t */ 6140*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_WakeupSourceGPIO_t { 6141*4882a593Smuzhiyun /** Header */ 6142*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6143*4882a593Smuzhiyun /** GPIO for indication of wakeup source */ 6144*4882a593Smuzhiyun t_u8 ind_gpio; 6145*4882a593Smuzhiyun /** Level on ind_gpio for normal wakeup source */ 6146*4882a593Smuzhiyun t_u8 level; 6147*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_WakeupSourceGPIO_t; 6148*4882a593Smuzhiyun 6149*4882a593Smuzhiyun /** MrvlIEtypes_RobustcoexSourceGPIO_t */ 6150*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_RobustcoexSourceGPIO_t { 6151*4882a593Smuzhiyun /** Header */ 6152*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6153*4882a593Smuzhiyun /** GPIO cfg for external bt request */ 6154*4882a593Smuzhiyun t_u8 enable; 6155*4882a593Smuzhiyun /** GPIO number */ 6156*4882a593Smuzhiyun t_u8 gpio_num; 6157*4882a593Smuzhiyun /** GPIO Polarity */ 6158*4882a593Smuzhiyun t_u8 gpio_polarity; 6159*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_RobustcoexSourceGPIO_t; 6160*4882a593Smuzhiyun 6161*4882a593Smuzhiyun #define MAX_NUM_MAC 2 6162*4882a593Smuzhiyun 6163*4882a593Smuzhiyun typedef MLAN_PACK_START struct _dmcs_chan_status { 6164*4882a593Smuzhiyun /** Channel number */ 6165*4882a593Smuzhiyun t_u8 channel; 6166*4882a593Smuzhiyun /** Number of AP on this channel */ 6167*4882a593Smuzhiyun t_u8 ap_count; 6168*4882a593Smuzhiyun /** Number of STA on this channel*/ 6169*4882a593Smuzhiyun t_u8 sta_count; 6170*4882a593Smuzhiyun } MLAN_PACK_END dmcs_chan_status; 6171*4882a593Smuzhiyun 6172*4882a593Smuzhiyun typedef MLAN_PACK_START struct _dmcs_status_data { 6173*4882a593Smuzhiyun /** radio ID */ 6174*4882a593Smuzhiyun t_u8 radio_id; 6175*4882a593Smuzhiyun /** Running mode 6176*4882a593Smuzhiyun ** 0 - Idle 6177*4882a593Smuzhiyun ** 1 - DBC 6178*4882a593Smuzhiyun ** 2 - DRCS 6179*4882a593Smuzhiyun */ 6180*4882a593Smuzhiyun t_u8 running_mode; 6181*4882a593Smuzhiyun /** Channel status of this radio */ 6182*4882a593Smuzhiyun dmcs_chan_status chan_status[2]; 6183*4882a593Smuzhiyun } MLAN_PACK_END dmcs_status_data; 6184*4882a593Smuzhiyun 6185*4882a593Smuzhiyun /** MrvlIEtypes_DmcsConfig_t */ 6186*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_DmcsConfig_t { 6187*4882a593Smuzhiyun /** Header */ 6188*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6189*4882a593Smuzhiyun /** Mapping policy */ 6190*4882a593Smuzhiyun t_u8 mapping_policy; 6191*4882a593Smuzhiyun /** Radio status of DMCS */ 6192*4882a593Smuzhiyun dmcs_status_data radio_status[MAX_NUM_MAC]; 6193*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_DmcsStatus_t; 6194*4882a593Smuzhiyun 6195*4882a593Smuzhiyun #define ANTMODE_FW_DECISION 0xff 6196*4882a593Smuzhiyun /** MrvlIEtypes_HS_Antmode_t */ 6197*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_HS_Antmode_t { 6198*4882a593Smuzhiyun /** Header */ 6199*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6200*4882a593Smuzhiyun /** Tx Path antenna mode*/ 6201*4882a593Smuzhiyun t_u8 txpath_antmode; 6202*4882a593Smuzhiyun /** Rx Path antenna mode */ 6203*4882a593Smuzhiyun t_u8 rxpath_antmode; 6204*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_HS_Antmode_t; 6205*4882a593Smuzhiyun 6206*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_WakeupExtend_t { 6207*4882a593Smuzhiyun /** Header */ 6208*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6209*4882a593Smuzhiyun /** Events that will be forced ignore **/ 6210*4882a593Smuzhiyun t_u32 event_force_ignore; 6211*4882a593Smuzhiyun /** Events that will use extend gap to inform host*/ 6212*4882a593Smuzhiyun t_u32 event_use_ext_gap; 6213*4882a593Smuzhiyun /** Extend gap*/ 6214*4882a593Smuzhiyun t_u8 ext_gap; 6215*4882a593Smuzhiyun /** GPIO wave level*/ 6216*4882a593Smuzhiyun t_u8 gpio_wave; 6217*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_WakeupExtend_t; 6218*4882a593Smuzhiyun 6219*4882a593Smuzhiyun #define EVENT_MANAGEMENT_FRAME_WAKEUP 0x00000088 6220*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mgmt_frame_filter { 6221*4882a593Smuzhiyun /** action - bitmap 6222*4882a593Smuzhiyun ** On matching rx'd pkt and filter during NON_HOSTSLEEP mode: 6223*4882a593Smuzhiyun ** Action[1]=0 Discard 6224*4882a593Smuzhiyun ** Action[1]=1 Allow 6225*4882a593Smuzhiyun ** Note that default action on non-match is "Allow". 6226*4882a593Smuzhiyun ** 6227*4882a593Smuzhiyun ** On matching rx'd pkt and filter during HOSTSLEEP mode: 6228*4882a593Smuzhiyun ** Action[1:0]=00 Discard and Not Wake host 6229*4882a593Smuzhiyun ** Action[1:0]=01 Discard and Wake host 6230*4882a593Smuzhiyun ** Action[1:0]=10 Invalid 6231*4882a593Smuzhiyun ** Note that default action on non-match is "Discard and Not Wake 6232*4882a593Smuzhiyun *host". 6233*4882a593Smuzhiyun **/ 6234*4882a593Smuzhiyun t_u8 action; 6235*4882a593Smuzhiyun /** Frame type(p2p...) 6236*4882a593Smuzhiyun ** type=0: invalid 6237*4882a593Smuzhiyun ** type=1: p2p 6238*4882a593Smuzhiyun ** type=0xff: management frames(assoc req/rsp, probe req/rsp,...) 6239*4882a593Smuzhiyun ** type=others: reserved 6240*4882a593Smuzhiyun **/ 6241*4882a593Smuzhiyun t_u8 type; 6242*4882a593Smuzhiyun /** Frame mask according to each type 6243*4882a593Smuzhiyun ** When type=1 for p2p, frame-mask have following define: 6244*4882a593Smuzhiyun ** Bit Frame 6245*4882a593Smuzhiyun ** 0 GO Negotiation Request 6246*4882a593Smuzhiyun ** 1 GO Negotiation Response 6247*4882a593Smuzhiyun ** 2 GO Negotiation Confirmation 6248*4882a593Smuzhiyun ** 3 P2P Invitation Request 6249*4882a593Smuzhiyun ** 4 P2P Invitation Response 6250*4882a593Smuzhiyun ** 5 Device Discoverability Request 6251*4882a593Smuzhiyun ** 6 Device Discoverability Response 6252*4882a593Smuzhiyun ** 7 Provision Discovery Request 6253*4882a593Smuzhiyun ** 8 Provision Discovery Response 6254*4882a593Smuzhiyun ** 9 Notice of Absence 6255*4882a593Smuzhiyun ** 10 P2P Presence Request 6256*4882a593Smuzhiyun ** 11 P2P Presence Response 6257*4882a593Smuzhiyun ** 12 GO Discoverability Request 6258*4882a593Smuzhiyun ** 13-31 Reserved 6259*4882a593Smuzhiyun ** 6260*4882a593Smuzhiyun ** When type=others, frame-mask is reserved. 6261*4882a593Smuzhiyun **/ 6262*4882a593Smuzhiyun t_u32 frame_mask; 6263*4882a593Smuzhiyun } MLAN_PACK_END mgmt_frame_filter; 6264*4882a593Smuzhiyun 6265*4882a593Smuzhiyun #define MAX_MGMT_FRAME_FILTER 2 6266*4882a593Smuzhiyun /** MrvlIEtypes_MgmtFrameFilter_t */ 6267*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_MgmtFrameFilter_t { 6268*4882a593Smuzhiyun /** Header */ 6269*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6270*4882a593Smuzhiyun /** management frame filters */ 6271*4882a593Smuzhiyun mgmt_frame_filter filter[MAX_MGMT_FRAME_FILTER]; 6272*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_MgmtFrameFilter_t; 6273*4882a593Smuzhiyun 6274*4882a593Smuzhiyun /** HostCmd_DS_INACTIVITY_TIMEOUT_EXT */ 6275*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_INACTIVITY_TIMEOUT_EXT { 6276*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 6277*4882a593Smuzhiyun t_u16 action; 6278*4882a593Smuzhiyun /** uS, 0 means 1000uS(1ms) */ 6279*4882a593Smuzhiyun t_u16 timeout_unit; 6280*4882a593Smuzhiyun /** Inactivity timeout for unicast data */ 6281*4882a593Smuzhiyun t_u16 unicast_timeout; 6282*4882a593Smuzhiyun /** Inactivity timeout for multicast data */ 6283*4882a593Smuzhiyun t_u16 mcast_timeout; 6284*4882a593Smuzhiyun /** Timeout for additional RX traffic after Null PM1 packet exchange */ 6285*4882a593Smuzhiyun t_u16 ps_entry_timeout; 6286*4882a593Smuzhiyun /** Reserved to further expansion */ 6287*4882a593Smuzhiyun t_u16 reserved; 6288*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_INACTIVITY_TIMEOUT_EXT; 6289*4882a593Smuzhiyun 6290*4882a593Smuzhiyun /** HostCmd_DS_INDEPENDENT_RESET_CFG */ 6291*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_INDEPENDENT_RESET_CFG { 6292*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 6293*4882a593Smuzhiyun t_u16 action; 6294*4882a593Smuzhiyun /** out band independent reset */ 6295*4882a593Smuzhiyun t_u8 ir_mode; 6296*4882a593Smuzhiyun /** gpio pin */ 6297*4882a593Smuzhiyun t_u8 gpio_pin; 6298*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_INDEPENDENT_RESET_CFG; 6299*4882a593Smuzhiyun 6300*4882a593Smuzhiyun /** HostCmd_DS_802_11_PS_INACTIVITY_TIMEOUT */ 6301*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_802_11_PS_INACTIVITY_TIMEOUT { 6302*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 6303*4882a593Smuzhiyun t_u16 action; 6304*4882a593Smuzhiyun /** ps inactivity timeout value */ 6305*4882a593Smuzhiyun t_u16 inact_tmo; 6306*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_PS_INACTIVITY_TIMEOUT; 6307*4882a593Smuzhiyun 6308*4882a593Smuzhiyun /** TLV type : STA Mac address */ 6309*4882a593Smuzhiyun #define TLV_TYPE_STA_MAC_ADDRESS (PROPRIETARY_TLV_BASE_ID + 0x20) /* 0x0120 */ 6310*4882a593Smuzhiyun 6311*4882a593Smuzhiyun #define TLV_TYPE_RANDOM_MAC (PROPRIETARY_TLV_BASE_ID + 0xEC) /*0x01EC*/ 6312*4882a593Smuzhiyun 6313*4882a593Smuzhiyun /** MrvlIEtypes_MacAddr_t */ 6314*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_MacAddr_t { 6315*4882a593Smuzhiyun /** Header */ 6316*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6317*4882a593Smuzhiyun /** mac address */ 6318*4882a593Smuzhiyun t_u8 mac[MLAN_MAC_ADDR_LENGTH]; 6319*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_MacAddr_t; 6320*4882a593Smuzhiyun 6321*4882a593Smuzhiyun /** Assoc Request */ 6322*4882a593Smuzhiyun #define SUBTYPE_ASSOC_REQUEST 0 6323*4882a593Smuzhiyun /** ReAssoc Request */ 6324*4882a593Smuzhiyun #define SUBTYPE_REASSOC_REQUEST 2 6325*4882a593Smuzhiyun /** Probe Resp */ 6326*4882a593Smuzhiyun #define SUBTYPE_PROBE_RESP 5 6327*4882a593Smuzhiyun /** Disassoc Request */ 6328*4882a593Smuzhiyun #define SUBTYPE_DISASSOC 10 6329*4882a593Smuzhiyun /** Auth Request */ 6330*4882a593Smuzhiyun #define SUBTYPE_AUTH 11 6331*4882a593Smuzhiyun /** Deauth Request */ 6332*4882a593Smuzhiyun #define SUBTYPE_DEAUTH 12 6333*4882a593Smuzhiyun /** Action frame */ 6334*4882a593Smuzhiyun #define SUBTYPE_ACTION 13 6335*4882a593Smuzhiyun /** beacon */ 6336*4882a593Smuzhiyun #define SUBTYPE_BEACON 8 6337*4882a593Smuzhiyun 6338*4882a593Smuzhiyun #ifdef UAP_SUPPORT 6339*4882a593Smuzhiyun /** TLV type : AP Channel band Config */ 6340*4882a593Smuzhiyun #define TLV_TYPE_UAP_CHAN_BAND_CONFIG \ 6341*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x2a) /* 0x012a */ 6342*4882a593Smuzhiyun /** TLV type : AP Mac address */ 6343*4882a593Smuzhiyun #define TLV_TYPE_UAP_MAC_ADDRESS (PROPRIETARY_TLV_BASE_ID + 0x2b) /* 0x012b */ 6344*4882a593Smuzhiyun /** TLV type : AP Beacon period */ 6345*4882a593Smuzhiyun #define TLV_TYPE_UAP_BEACON_PERIOD \ 6346*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x2c) /* 0x012c \ 6347*4882a593Smuzhiyun */ 6348*4882a593Smuzhiyun /** TLV type : AP DTIM period */ 6349*4882a593Smuzhiyun #define TLV_TYPE_UAP_DTIM_PERIOD (PROPRIETARY_TLV_BASE_ID + 0x2d) /* 0x012d */ 6350*4882a593Smuzhiyun /** TLV type : AP Tx power */ 6351*4882a593Smuzhiyun #define TLV_TYPE_UAP_TX_POWER (PROPRIETARY_TLV_BASE_ID + 0x2f) /* 0x012f */ 6352*4882a593Smuzhiyun /** TLV type : AP SSID broadcast control */ 6353*4882a593Smuzhiyun #define TLV_TYPE_UAP_BCAST_SSID_CTL \ 6354*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x30) /* 0x0130 */ 6355*4882a593Smuzhiyun /** TLV type : AP Preamble control */ 6356*4882a593Smuzhiyun #define TLV_TYPE_UAP_PREAMBLE_CTL \ 6357*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x31) /* 0x0131 \ 6358*4882a593Smuzhiyun */ 6359*4882a593Smuzhiyun /** TLV type : AP Antenna control */ 6360*4882a593Smuzhiyun #define TLV_TYPE_UAP_ANTENNA_CTL (PROPRIETARY_TLV_BASE_ID + 0x32) /* 0x0132 */ 6361*4882a593Smuzhiyun /** TLV type : AP RTS threshold */ 6362*4882a593Smuzhiyun #define TLV_TYPE_UAP_RTS_THRESHOLD \ 6363*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x33) /* 0x0133 \ 6364*4882a593Smuzhiyun */ 6365*4882a593Smuzhiyun /** TLV type : AP Tx data rate */ 6366*4882a593Smuzhiyun #define TLV_TYPE_UAP_TX_DATA_RATE \ 6367*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x35) /* 0x0135 \ 6368*4882a593Smuzhiyun */ 6369*4882a593Smuzhiyun /** TLV type: AP Packet forwarding control */ 6370*4882a593Smuzhiyun #define TLV_TYPE_UAP_PKT_FWD_CTL (PROPRIETARY_TLV_BASE_ID + 0x36) /* 0x0136 */ 6371*4882a593Smuzhiyun /** TLV type: STA information */ 6372*4882a593Smuzhiyun #define TLV_TYPE_UAP_STA_INFO (PROPRIETARY_TLV_BASE_ID + 0x37) /* 0x0137 */ 6373*4882a593Smuzhiyun /** TLV type: AP STA MAC address filter */ 6374*4882a593Smuzhiyun #define TLV_TYPE_UAP_STA_MAC_ADDR_FILTER \ 6375*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x38) /* 0x0138 */ 6376*4882a593Smuzhiyun /** TLV type: AP STA ageout timer */ 6377*4882a593Smuzhiyun #define TLV_TYPE_UAP_STA_AGEOUT_TIMER \ 6378*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x39) /* 0x0139 */ 6379*4882a593Smuzhiyun /** TLV type: AP WEP keys */ 6380*4882a593Smuzhiyun #define TLV_TYPE_UAP_WEP_KEY (PROPRIETARY_TLV_BASE_ID + 0x3b) /* 0x013b */ 6381*4882a593Smuzhiyun /** TLV type: AP WPA passphrase */ 6382*4882a593Smuzhiyun #define TLV_TYPE_UAP_WPA_PASSPHRASE \ 6383*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x3c) /* 0x013c */ 6384*4882a593Smuzhiyun /** TLV type: AP protocol */ 6385*4882a593Smuzhiyun #define TLV_TYPE_UAP_ENCRYPT_PROTOCOL \ 6386*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x40) /* 0x0140 */ 6387*4882a593Smuzhiyun /** TLV type: AP AKMP */ 6388*4882a593Smuzhiyun #define TLV_TYPE_UAP_AKMP (PROPRIETARY_TLV_BASE_ID + 0x41) /* 0x0141 */ 6389*4882a593Smuzhiyun /** TLV type: AP Fragment threshold */ 6390*4882a593Smuzhiyun #define TLV_TYPE_UAP_FRAG_THRESHOLD \ 6391*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x46) /* 0x0146 */ 6392*4882a593Smuzhiyun /** TLV type: AP Group rekey timer */ 6393*4882a593Smuzhiyun #define TLV_TYPE_UAP_GRP_REKEY_TIME \ 6394*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x47) /* 0x0147 */ 6395*4882a593Smuzhiyun /**TLV type : AP Max Station number */ 6396*4882a593Smuzhiyun #define TLV_TYPE_UAP_MAX_STA_CNT (PROPRIETARY_TLV_BASE_ID + 0x55) /* 0x0155 */ 6397*4882a593Smuzhiyun /**TLV type : AP Max Station number per chip */ 6398*4882a593Smuzhiyun #define TLV_TYPE_UAP_MAX_STA_CNT_PER_CHIP \ 6399*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x140) /* 0x0240 */ 6400*4882a593Smuzhiyun /**TLV type : AP Retry limit */ 6401*4882a593Smuzhiyun #define TLV_TYPE_UAP_RETRY_LIMIT (PROPRIETARY_TLV_BASE_ID + 0x5d) /* 0x015d */ 6402*4882a593Smuzhiyun /** TLV type : AP MCBC data rate */ 6403*4882a593Smuzhiyun #define TLV_TYPE_UAP_MCBC_DATA_RATE \ 6404*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x62) /* 0x0162 */ 6405*4882a593Smuzhiyun /**TLV type: AP RSN replay protection */ 6406*4882a593Smuzhiyun #define TLV_TYPE_UAP_RSN_REPLAY_PROTECT \ 6407*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x64) /* 0x0164 */ 6408*4882a593Smuzhiyun /**TLV type: AP mgmt IE passthru mask */ 6409*4882a593Smuzhiyun #define TLV_TYPE_UAP_MGMT_IE_PASSTHRU_MASK \ 6410*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x70) /* 0x0170 */ 6411*4882a593Smuzhiyun 6412*4882a593Smuzhiyun /**TLV type: AP pairwise handshake timeout */ 6413*4882a593Smuzhiyun #define TLV_TYPE_UAP_EAPOL_PWK_HSK_TIMEOUT \ 6414*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x75) /* 0x0175 */ 6415*4882a593Smuzhiyun /**TLV type: AP pairwise handshake retries */ 6416*4882a593Smuzhiyun #define TLV_TYPE_UAP_EAPOL_PWK_HSK_RETRIES \ 6417*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x76) /* 0x0176 */ 6418*4882a593Smuzhiyun /**TLV type: AP groupwise handshake timeout */ 6419*4882a593Smuzhiyun #define TLV_TYPE_UAP_EAPOL_GWK_HSK_TIMEOUT \ 6420*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x77) /* 0x0177 */ 6421*4882a593Smuzhiyun /**TLV type: AP groupwise handshake retries */ 6422*4882a593Smuzhiyun #define TLV_TYPE_UAP_EAPOL_GWK_HSK_RETRIES \ 6423*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x78) /* 0x0178 */ 6424*4882a593Smuzhiyun /** TLV type: AP PS STA ageout timer */ 6425*4882a593Smuzhiyun #define TLV_TYPE_UAP_PS_STA_AGEOUT_TIMER \ 6426*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x7b) /* 0x017b */ 6427*4882a593Smuzhiyun /** TLV type : Pairwise Cipher */ 6428*4882a593Smuzhiyun #define TLV_TYPE_PWK_CIPHER (PROPRIETARY_TLV_BASE_ID + 0x91) /* 0x0191 */ 6429*4882a593Smuzhiyun /** TLV type : Group Cipher */ 6430*4882a593Smuzhiyun #define TLV_TYPE_GWK_CIPHER (PROPRIETARY_TLV_BASE_ID + 0x92) /* 0x0192 */ 6431*4882a593Smuzhiyun /** TLV type : BSS Status */ 6432*4882a593Smuzhiyun #define TLV_TYPE_BSS_STATUS (PROPRIETARY_TLV_BASE_ID + 0x93) /* 0x0193 */ 6433*4882a593Smuzhiyun /** TLV type : AP WMM params */ 6434*4882a593Smuzhiyun #define TLV_TYPE_AP_WMM_PARAM (PROPRIETARY_TLV_BASE_ID + 0xd0) /* 0x01d0 */ 6435*4882a593Smuzhiyun /** TLV type : AP Tx beacon rate */ 6436*4882a593Smuzhiyun #define TLV_TYPE_UAP_TX_BEACON_RATE (PROPRIETARY_TLV_BASE_ID + 288) /* 0x0220 \ 6437*4882a593Smuzhiyun */ 6438*4882a593Smuzhiyun #define NXP_802_11_PER_PEER_STATS_CFG_TLV_ID \ 6439*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 346) /* 0x025A */ 6440*4882a593Smuzhiyun #define NXP_802_11_PER_PEER_STATS_ENTRY_TLV_ID \ 6441*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 347) /* 0x025B */ 6442*4882a593Smuzhiyun 6443*4882a593Smuzhiyun /** MrvlIEtypes_beacon_period_t */ 6444*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_beacon_period_t { 6445*4882a593Smuzhiyun /** Header */ 6446*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6447*4882a593Smuzhiyun /** beacon period */ 6448*4882a593Smuzhiyun t_u16 beacon_period; 6449*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_beacon_period_t; 6450*4882a593Smuzhiyun 6451*4882a593Smuzhiyun /** MrvlIEtypes_dtim_period_t */ 6452*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_dtim_period_t { 6453*4882a593Smuzhiyun /** Header */ 6454*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6455*4882a593Smuzhiyun /** DTIM period */ 6456*4882a593Smuzhiyun t_u8 dtim_period; 6457*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_dtim_period_t; 6458*4882a593Smuzhiyun 6459*4882a593Smuzhiyun /** MrvlIEtypes_tx_rate_t */ 6460*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_tx_rate_t { 6461*4882a593Smuzhiyun /** Header */ 6462*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6463*4882a593Smuzhiyun /** tx data rate */ 6464*4882a593Smuzhiyun t_u16 tx_data_rate; 6465*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_tx_rate_t; 6466*4882a593Smuzhiyun 6467*4882a593Smuzhiyun /** MrvlIEtypes_mcbc_rate_t */ 6468*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_mcbc_rate_t { 6469*4882a593Smuzhiyun /** Header */ 6470*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6471*4882a593Smuzhiyun /** mcbc data rate */ 6472*4882a593Smuzhiyun t_u16 mcbc_data_rate; 6473*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_mcbc_rate_t; 6474*4882a593Smuzhiyun 6475*4882a593Smuzhiyun /** MrvlIEtypes_tx_power_t */ 6476*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_tx_power_t { 6477*4882a593Smuzhiyun /** Header */ 6478*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6479*4882a593Smuzhiyun /** tx power */ 6480*4882a593Smuzhiyun t_u8 tx_power; 6481*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_tx_power_t; 6482*4882a593Smuzhiyun 6483*4882a593Smuzhiyun /** MrvlIEtypes_bcast_ssid_t */ 6484*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_bcast_ssid_t { 6485*4882a593Smuzhiyun /** Header */ 6486*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6487*4882a593Smuzhiyun /** bcast ssid control*/ 6488*4882a593Smuzhiyun t_u8 bcast_ssid_ctl; 6489*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_bcast_ssid_t; 6490*4882a593Smuzhiyun 6491*4882a593Smuzhiyun /** MrvlIEtypes_antenna_mode_t */ 6492*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_antenna_mode_t { 6493*4882a593Smuzhiyun /** Header */ 6494*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6495*4882a593Smuzhiyun /** which antenna */ 6496*4882a593Smuzhiyun t_u8 which_antenna; 6497*4882a593Smuzhiyun /** antenna mode*/ 6498*4882a593Smuzhiyun t_u8 antenna_mode; 6499*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_antenna_mode_t; 6500*4882a593Smuzhiyun 6501*4882a593Smuzhiyun /** MrvlIEtypes_pkt_forward_t */ 6502*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_pkt_forward_t { 6503*4882a593Smuzhiyun /** Header */ 6504*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6505*4882a593Smuzhiyun /** pkt foward control */ 6506*4882a593Smuzhiyun t_u8 pkt_forward_ctl; 6507*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_pkt_forward_t; 6508*4882a593Smuzhiyun 6509*4882a593Smuzhiyun /** MrvlIEtypes_max_sta_count_t */ 6510*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_max_sta_count_t { 6511*4882a593Smuzhiyun /** Header */ 6512*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6513*4882a593Smuzhiyun /** max station count */ 6514*4882a593Smuzhiyun t_u16 max_sta_count; 6515*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_max_sta_count_t; 6516*4882a593Smuzhiyun 6517*4882a593Smuzhiyun /** MrvlIEtypes_uap_max_sta_cnt */ 6518*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_uap_max_sta_cnt_t { 6519*4882a593Smuzhiyun /** Header */ 6520*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6521*4882a593Smuzhiyun /** max station count */ 6522*4882a593Smuzhiyun t_u16 uap_max_sta; 6523*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_uap_max_sta_cnt_t; 6524*4882a593Smuzhiyun 6525*4882a593Smuzhiyun #define MRVL_ACTION_CHAN_SWITCH_ANNOUNCE (PROPRIETARY_TLV_BASE_ID + 342) 6526*4882a593Smuzhiyun 6527*4882a593Smuzhiyun /** MrvlIEtypes_uap_chan_switch */ 6528*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_action_chan_switch_t { 6529*4882a593Smuzhiyun /** Header */ 6530*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6531*4882a593Smuzhiyun /* 0 send broadcast CSA action frame, 1 send unicast CSA action frame */ 6532*4882a593Smuzhiyun t_u8 mode; 6533*4882a593Smuzhiyun /* number of frame */ 6534*4882a593Smuzhiyun t_u8 num_pkt; 6535*4882a593Smuzhiyun /** reserved */ 6536*4882a593Smuzhiyun t_u16 reserved; 6537*4882a593Smuzhiyun /**ie buf*/ 6538*4882a593Smuzhiyun t_u8 ie_buf[]; 6539*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_action_chan_switch_t; 6540*4882a593Smuzhiyun 6541*4882a593Smuzhiyun /** MrvlIEtypes_sta_ageout_t */ 6542*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_sta_ageout_t { 6543*4882a593Smuzhiyun /** Header */ 6544*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6545*4882a593Smuzhiyun /** station age out timer */ 6546*4882a593Smuzhiyun t_u32 sta_ageout_timer; 6547*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_sta_ageout_t; 6548*4882a593Smuzhiyun 6549*4882a593Smuzhiyun /** MrvlIEtypes_rts_threshold_t */ 6550*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_rts_threshold_t { 6551*4882a593Smuzhiyun /** Header */ 6552*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6553*4882a593Smuzhiyun /** rts threshold */ 6554*4882a593Smuzhiyun t_u16 rts_threshold; 6555*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_rts_threshold_t; 6556*4882a593Smuzhiyun 6557*4882a593Smuzhiyun /** MrvlIEtypes_frag_threshold_t */ 6558*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_frag_threshold_t { 6559*4882a593Smuzhiyun /** Header */ 6560*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6561*4882a593Smuzhiyun /** frag threshold */ 6562*4882a593Smuzhiyun t_u16 frag_threshold; 6563*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_frag_threshold_t; 6564*4882a593Smuzhiyun 6565*4882a593Smuzhiyun /** MrvlIEtypes_retry_limit_t */ 6566*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_retry_limit_t { 6567*4882a593Smuzhiyun /** Header */ 6568*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6569*4882a593Smuzhiyun /** retry limit */ 6570*4882a593Smuzhiyun t_u8 retry_limit; 6571*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_retry_limit_t; 6572*4882a593Smuzhiyun 6573*4882a593Smuzhiyun /** MrvlIEtypes_eapol_pwk_hsk_timeout_t */ 6574*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_pwk_hsk_timeout_t { 6575*4882a593Smuzhiyun /** Header */ 6576*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6577*4882a593Smuzhiyun /** pairwise update timeout in milliseconds */ 6578*4882a593Smuzhiyun t_u32 pairwise_update_timeout; 6579*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_eapol_pwk_hsk_timeout_t; 6580*4882a593Smuzhiyun 6581*4882a593Smuzhiyun /** MrvlIEtypes_eapol_pwk_hsk_retries_t */ 6582*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_pwk_hsk_retries_t { 6583*4882a593Smuzhiyun /** Header */ 6584*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6585*4882a593Smuzhiyun /** pairwise handshake retries */ 6586*4882a593Smuzhiyun t_u32 pwk_retries; 6587*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_eapol_pwk_hsk_retries_t; 6588*4882a593Smuzhiyun 6589*4882a593Smuzhiyun /** MrvlIEtypes_eapol_gwk_hsk_timeout_t */ 6590*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_gwk_hsk_timeout_t { 6591*4882a593Smuzhiyun /** Header */ 6592*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6593*4882a593Smuzhiyun /** groupwise update timeout in milliseconds */ 6594*4882a593Smuzhiyun t_u32 groupwise_update_timeout; 6595*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_eapol_gwk_hsk_timeout_t; 6596*4882a593Smuzhiyun 6597*4882a593Smuzhiyun /** MrvlIEtypes_eapol_gwk_hsk_retries_t */ 6598*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_gwk_hsk_retries_t { 6599*4882a593Smuzhiyun /** Header */ 6600*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6601*4882a593Smuzhiyun /** groupwise handshake retries */ 6602*4882a593Smuzhiyun t_u32 gwk_retries; 6603*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_eapol_gwk_hsk_retries_t; 6604*4882a593Smuzhiyun 6605*4882a593Smuzhiyun /** MrvlIEtypes_mgmt_ie_passthru_t */ 6606*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_mgmt_ie_passthru_t { 6607*4882a593Smuzhiyun /** Header */ 6608*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6609*4882a593Smuzhiyun /** mgmt IE mask value */ 6610*4882a593Smuzhiyun t_u32 mgmt_ie_mask; 6611*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_mgmt_ie_passthru_t; 6612*4882a593Smuzhiyun 6613*4882a593Smuzhiyun /** MrvlIEtypes_mac_filter_t */ 6614*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_mac_filter_t { 6615*4882a593Smuzhiyun /** Header */ 6616*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6617*4882a593Smuzhiyun /** Filter mode */ 6618*4882a593Smuzhiyun t_u8 filter_mode; 6619*4882a593Smuzhiyun /** Number of STA MACs */ 6620*4882a593Smuzhiyun t_u8 count; 6621*4882a593Smuzhiyun /** STA MAC addresses buffer */ 6622*4882a593Smuzhiyun t_u8 mac_address[1]; 6623*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_mac_filter_t; 6624*4882a593Smuzhiyun 6625*4882a593Smuzhiyun /** MrvlIEtypes_auth_type_t */ 6626*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_auth_type_t { 6627*4882a593Smuzhiyun /** Header */ 6628*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6629*4882a593Smuzhiyun /** Authentication type */ 6630*4882a593Smuzhiyun t_u8 auth_type; 6631*4882a593Smuzhiyun /** PWE derivation */ 6632*4882a593Smuzhiyun t_u8 PWE_derivation; 6633*4882a593Smuzhiyun /** transition disable */ 6634*4882a593Smuzhiyun t_u8 transition_disable; 6635*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_auth_type_t; 6636*4882a593Smuzhiyun 6637*4882a593Smuzhiyun /** MrvlIEtypes_encrypt_protocol_t */ 6638*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_encrypt_protocol_t { 6639*4882a593Smuzhiyun /** Header */ 6640*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6641*4882a593Smuzhiyun /** encryption protocol */ 6642*4882a593Smuzhiyun t_u16 protocol; 6643*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_encrypt_protocol_t; 6644*4882a593Smuzhiyun 6645*4882a593Smuzhiyun /** MrvlIEtypes_pwk_cipher_t */ 6646*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_pwk_cipher_t { 6647*4882a593Smuzhiyun /** Header */ 6648*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6649*4882a593Smuzhiyun /** protocol */ 6650*4882a593Smuzhiyun t_u16 protocol; 6651*4882a593Smuzhiyun /** pairwise cipher */ 6652*4882a593Smuzhiyun t_u8 pairwise_cipher; 6653*4882a593Smuzhiyun /** reserved */ 6654*4882a593Smuzhiyun t_u8 reserved; 6655*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_pwk_cipher_t; 6656*4882a593Smuzhiyun 6657*4882a593Smuzhiyun /** MrvlIEtypes_gwk_cipher_t */ 6658*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_gwk_cipher_t { 6659*4882a593Smuzhiyun /** Header */ 6660*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6661*4882a593Smuzhiyun /** group cipher */ 6662*4882a593Smuzhiyun t_u8 group_cipher; 6663*4882a593Smuzhiyun /** reserved */ 6664*4882a593Smuzhiyun t_u8 reserved; 6665*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_gwk_cipher_t; 6666*4882a593Smuzhiyun 6667*4882a593Smuzhiyun /** MrvlIEtypes_akmp_t */ 6668*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_akmp_t { 6669*4882a593Smuzhiyun /** Header */ 6670*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6671*4882a593Smuzhiyun /** key management */ 6672*4882a593Smuzhiyun t_u16 key_mgmt; 6673*4882a593Smuzhiyun /** key management operation */ 6674*4882a593Smuzhiyun t_u16 key_mgmt_operation; 6675*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_akmp_t; 6676*4882a593Smuzhiyun 6677*4882a593Smuzhiyun /** MrvlIEtypes_passphrase_t */ 6678*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_passphrase_t { 6679*4882a593Smuzhiyun /** Header */ 6680*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6681*4882a593Smuzhiyun /** passphrase */ 6682*4882a593Smuzhiyun t_u8 passphrase[1]; 6683*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_passphrase_t; 6684*4882a593Smuzhiyun 6685*4882a593Smuzhiyun /** MrvlIEtypes_rsn_replay_prot_t */ 6686*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_rsn_replay_prot_t { 6687*4882a593Smuzhiyun /** Header */ 6688*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6689*4882a593Smuzhiyun /** rsn replay proection */ 6690*4882a593Smuzhiyun t_u8 rsn_replay_prot; 6691*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_rsn_replay_prot_t; 6692*4882a593Smuzhiyun 6693*4882a593Smuzhiyun /** MrvlIEtypes_group_rekey_time_t */ 6694*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_group_rekey_time_t { 6695*4882a593Smuzhiyun /** Header */ 6696*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6697*4882a593Smuzhiyun /** group key rekey time */ 6698*4882a593Smuzhiyun t_u32 gk_rekey_time; 6699*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_group_rekey_time_t; 6700*4882a593Smuzhiyun 6701*4882a593Smuzhiyun /** MrvlIEtypes_wep_key_t */ 6702*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_wep_key_t { 6703*4882a593Smuzhiyun /** Header */ 6704*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6705*4882a593Smuzhiyun /** key index */ 6706*4882a593Smuzhiyun t_u8 key_index; 6707*4882a593Smuzhiyun /** is default */ 6708*4882a593Smuzhiyun t_u8 is_default; 6709*4882a593Smuzhiyun /** key data */ 6710*4882a593Smuzhiyun t_u8 key[1]; 6711*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_wep_key_t; 6712*4882a593Smuzhiyun 6713*4882a593Smuzhiyun /** MrvlIEtypes_bss_status_t */ 6714*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_bss_status_t { 6715*4882a593Smuzhiyun /** Header */ 6716*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6717*4882a593Smuzhiyun /** BSS status, READ only */ 6718*4882a593Smuzhiyun t_u16 bss_status; 6719*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_bss_status_t; 6720*4882a593Smuzhiyun 6721*4882a593Smuzhiyun /** MrvlIEtypes_preamble_t */ 6722*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_preamble_t { 6723*4882a593Smuzhiyun /** Header */ 6724*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6725*4882a593Smuzhiyun /** preamble type, READ only */ 6726*4882a593Smuzhiyun t_u8 preamble_type; 6727*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_preamble_t; 6728*4882a593Smuzhiyun 6729*4882a593Smuzhiyun /** MrvlIEtypes_wmm_parameter_t */ 6730*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_wmm_parameter_t { 6731*4882a593Smuzhiyun /** Header */ 6732*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6733*4882a593Smuzhiyun /** WMM parameter */ 6734*4882a593Smuzhiyun WmmParameter_t wmm_para; 6735*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_wmm_parameter_t; 6736*4882a593Smuzhiyun 6737*4882a593Smuzhiyun /** MrvlIEtypes_wacp_mode_t */ 6738*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_wacp_mode_t { 6739*4882a593Smuzhiyun /** Header */ 6740*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6741*4882a593Smuzhiyun /** wacp_mode */ 6742*4882a593Smuzhiyun t_u8 wacp_mode; 6743*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_wacp_mode_t; 6744*4882a593Smuzhiyun 6745*4882a593Smuzhiyun /** SNMP_MIB_UAP_INDEX */ 6746*4882a593Smuzhiyun typedef enum _SNMP_MIB_UAP_INDEX { 6747*4882a593Smuzhiyun tkip_mic_failures = 0x0b, 6748*4882a593Smuzhiyun ccmp_decrypt_errors = 0x0c, 6749*4882a593Smuzhiyun wep_undecryptable_count = 0x0d, 6750*4882a593Smuzhiyun wep_icv_error_count = 0x0e, 6751*4882a593Smuzhiyun decrypt_failure_count = 0xf, 6752*4882a593Smuzhiyun dot11_failed_count = 0x12, 6753*4882a593Smuzhiyun dot11_retry_count = 0x13, 6754*4882a593Smuzhiyun dot11_multi_retry_count = 0x14, 6755*4882a593Smuzhiyun dot11_frame_dup_count = 0x15, 6756*4882a593Smuzhiyun dot11_rts_success_count = 0x16, 6757*4882a593Smuzhiyun dot11_rts_failure_count = 0x17, 6758*4882a593Smuzhiyun dot11_ack_failure_count = 0x18, 6759*4882a593Smuzhiyun dot11_rx_fragment_count = 0x19, 6760*4882a593Smuzhiyun dot11_mcast_rx_frame_count = 0x1a, 6761*4882a593Smuzhiyun dot11_fcs_error_count = 0x1b, 6762*4882a593Smuzhiyun dot11_tx_frame_count = 0x1c, 6763*4882a593Smuzhiyun dot11_rsna_tkip_cm_invoked = 0x1d, 6764*4882a593Smuzhiyun dot11_rsna_4way_hshk_failures = 0x1e, 6765*4882a593Smuzhiyun dot11_mcast_tx_count = 0x1f, 6766*4882a593Smuzhiyun } SNMP_MIB_UAP_INDEX; 6767*4882a593Smuzhiyun 6768*4882a593Smuzhiyun /** MrvlIEtypes_snmp_oid_t */ 6769*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_snmp_oid_t { 6770*4882a593Smuzhiyun /** Header */ 6771*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6772*4882a593Smuzhiyun /** data */ 6773*4882a593Smuzhiyun t_u32 data; 6774*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_snmp_oid_t; 6775*4882a593Smuzhiyun 6776*4882a593Smuzhiyun /** HostCmd_SYS_CONFIG */ 6777*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_SYS_CONFIG { 6778*4882a593Smuzhiyun /** CMD Action GET/SET*/ 6779*4882a593Smuzhiyun t_u16 action; 6780*4882a593Smuzhiyun /** Tlv buffer */ 6781*4882a593Smuzhiyun t_u8 tlv_buffer[1]; 6782*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_SYS_CONFIG; 6783*4882a593Smuzhiyun 6784*4882a593Smuzhiyun /** HostCmd_SYS_CONFIG */ 6785*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_SYS_INFO { 6786*4882a593Smuzhiyun /** sys info */ 6787*4882a593Smuzhiyun t_u8 sys_info[64]; 6788*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_SYS_INFO; 6789*4882a593Smuzhiyun 6790*4882a593Smuzhiyun /** HostCmd_DS_STA_DEAUTH */ 6791*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_STA_DEAUTH { 6792*4882a593Smuzhiyun /** mac address */ 6793*4882a593Smuzhiyun t_u8 mac[MLAN_MAC_ADDR_LENGTH]; 6794*4882a593Smuzhiyun /** reason code */ 6795*4882a593Smuzhiyun t_u16 reason; 6796*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_STA_DEAUTH; 6797*4882a593Smuzhiyun 6798*4882a593Smuzhiyun /** HostCmd_DS_REPORT_MIC */ 6799*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_REPORT_MIC { 6800*4882a593Smuzhiyun /** mac address */ 6801*4882a593Smuzhiyun t_u8 mac[MLAN_MAC_ADDR_LENGTH]; 6802*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_REPORT_MIC; 6803*4882a593Smuzhiyun 6804*4882a593Smuzhiyun /** HostCmd_UAP_OPER_CTRL */ 6805*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_UAP_OPER_CTRL { 6806*4882a593Smuzhiyun /** CMD Action GET/SET*/ 6807*4882a593Smuzhiyun t_u16 action; 6808*4882a593Smuzhiyun /** control*/ 6809*4882a593Smuzhiyun t_u16 ctrl; 6810*4882a593Smuzhiyun /**channel operation*/ 6811*4882a593Smuzhiyun t_u16 chan_opt; 6812*4882a593Smuzhiyun /**channel band tlv*/ 6813*4882a593Smuzhiyun MrvlIEtypes_channel_band_t channel_band; 6814*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_UAP_OPER_CTRL; 6815*4882a593Smuzhiyun 6816*4882a593Smuzhiyun /** Host Command id: POWER_MGMT */ 6817*4882a593Smuzhiyun #define HOST_CMD_POWER_MGMT_EXT 0x00ef 6818*4882a593Smuzhiyun /** TLV type: AP Sleep param */ 6819*4882a593Smuzhiyun #define TLV_TYPE_AP_SLEEP_PARAM (PROPRIETARY_TLV_BASE_ID + 0x6a) /* 0x016a */ 6820*4882a593Smuzhiyun /** TLV type: AP Inactivity Sleep param */ 6821*4882a593Smuzhiyun #define TLV_TYPE_AP_INACT_SLEEP_PARAM \ 6822*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x6b) /* 0x016b */ 6823*4882a593Smuzhiyun 6824*4882a593Smuzhiyun /** MrvlIEtypes_sleep_param_t */ 6825*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_sleep_param_t { 6826*4882a593Smuzhiyun /** Header */ 6827*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6828*4882a593Smuzhiyun /** control bitmap */ 6829*4882a593Smuzhiyun t_u32 ctrl_bitmap; 6830*4882a593Smuzhiyun /** min_sleep */ 6831*4882a593Smuzhiyun t_u32 min_sleep; 6832*4882a593Smuzhiyun /** max_sleep */ 6833*4882a593Smuzhiyun t_u32 max_sleep; 6834*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_sleep_param_t; 6835*4882a593Smuzhiyun 6836*4882a593Smuzhiyun /** MrvlIEtypes_inact_sleep_param_t */ 6837*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_inact_sleep_param_t { 6838*4882a593Smuzhiyun /** Header */ 6839*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6840*4882a593Smuzhiyun /** inactivity timeout */ 6841*4882a593Smuzhiyun t_u32 inactivity_to; 6842*4882a593Smuzhiyun 6843*4882a593Smuzhiyun /** min_awake */ 6844*4882a593Smuzhiyun t_u32 min_awake; 6845*4882a593Smuzhiyun /** max_awake */ 6846*4882a593Smuzhiyun t_u32 max_awake; 6847*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_inact_sleep_param_t; 6848*4882a593Smuzhiyun 6849*4882a593Smuzhiyun /** HostCmd_DS_POWER_MGMT */ 6850*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_POWER_MGMT_EXT { 6851*4882a593Smuzhiyun /** CMD Action Get/Set*/ 6852*4882a593Smuzhiyun t_u16 action; 6853*4882a593Smuzhiyun /** power mode */ 6854*4882a593Smuzhiyun t_u16 power_mode; 6855*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_POWER_MGMT_EXT; 6856*4882a593Smuzhiyun 6857*4882a593Smuzhiyun /** MrvlIEtypes_ps_sta_ageout_t */ 6858*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_ps_sta_ageout_t { 6859*4882a593Smuzhiyun /** Header */ 6860*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6861*4882a593Smuzhiyun /** station age out timer */ 6862*4882a593Smuzhiyun t_u32 ps_sta_ageout_timer; 6863*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ps_sta_ageout_t; 6864*4882a593Smuzhiyun 6865*4882a593Smuzhiyun /** MrvlIEtypes_sta_info_t */ 6866*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_sta_info_t { 6867*4882a593Smuzhiyun /** Header */ 6868*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6869*4882a593Smuzhiyun /** STA MAC address */ 6870*4882a593Smuzhiyun t_u8 mac_address[MLAN_MAC_ADDR_LENGTH]; 6871*4882a593Smuzhiyun /** Power Mgmt status */ 6872*4882a593Smuzhiyun t_u8 power_mgmt_status; 6873*4882a593Smuzhiyun /** RSSI */ 6874*4882a593Smuzhiyun t_s8 rssi; 6875*4882a593Smuzhiyun /** ie_buf */ 6876*4882a593Smuzhiyun t_u8 ie_buf[]; 6877*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_sta_info_t; 6878*4882a593Smuzhiyun 6879*4882a593Smuzhiyun /** HostCmd_DS_STA_LIST */ 6880*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_STA_LIST { 6881*4882a593Smuzhiyun /** Number of STAs */ 6882*4882a593Smuzhiyun t_u16 sta_count; 6883*4882a593Smuzhiyun /* MrvlIEtypes_sta_info_t sta_info[]; */ 6884*4882a593Smuzhiyun t_u8 tlv_buf[]; 6885*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_STA_LIST; 6886*4882a593Smuzhiyun 6887*4882a593Smuzhiyun /** TLV ID : WAPI Information */ 6888*4882a593Smuzhiyun #define TLV_TYPE_AP_WAPI_INFO (PROPRIETARY_TLV_BASE_ID + 0x67) /* 0x0167 */ 6889*4882a593Smuzhiyun 6890*4882a593Smuzhiyun /** MrvlIEtypes_sta_info_t */ 6891*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_wapi_info_t { 6892*4882a593Smuzhiyun /** Header */ 6893*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6894*4882a593Smuzhiyun /** Multicast PN */ 6895*4882a593Smuzhiyun t_u8 multicast_PN[16]; 6896*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_wapi_info_t; 6897*4882a593Smuzhiyun #endif /* UAP_SUPPORT */ 6898*4882a593Smuzhiyun 6899*4882a593Smuzhiyun /** HostCmd_DS_TX_RX_HISTOGRAM */ 6900*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TX_RX_HISTOGRAM { 6901*4882a593Smuzhiyun /** Enable or disable */ 6902*4882a593Smuzhiyun t_u8 enable; 6903*4882a593Smuzhiyun /** Choose to get TX, RX or both */ 6904*4882a593Smuzhiyun t_u16 action; 6905*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TX_RX_HISTOGRAM; 6906*4882a593Smuzhiyun 6907*4882a593Smuzhiyun /** TLV buffer : 2040 coex config */ 6908*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_2040_coex_enable_t { 6909*4882a593Smuzhiyun /** Header */ 6910*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6911*4882a593Smuzhiyun /** Enable */ 6912*4882a593Smuzhiyun t_u8 enable_2040coex; 6913*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_2040_coex_enable_t; 6914*4882a593Smuzhiyun 6915*4882a593Smuzhiyun /**BT coexit scan time setting*/ 6916*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_BtCoexScanTime_t { 6917*4882a593Smuzhiyun /** Header */ 6918*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6919*4882a593Smuzhiyun /**coex scan state 0: disable 1: enable*/ 6920*4882a593Smuzhiyun t_u8 coex_scan; 6921*4882a593Smuzhiyun /**reserved*/ 6922*4882a593Smuzhiyun t_u8 reserved; 6923*4882a593Smuzhiyun /**min scan time*/ 6924*4882a593Smuzhiyun t_u16 min_scan_time; 6925*4882a593Smuzhiyun /**max scan time*/ 6926*4882a593Smuzhiyun t_u16 max_scan_time; 6927*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_BtCoexScanTime_t; 6928*4882a593Smuzhiyun 6929*4882a593Smuzhiyun /**BT coexit aggr win size */ 6930*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_BtCoexAggrWinSize_t { 6931*4882a593Smuzhiyun /** Header */ 6932*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6933*4882a593Smuzhiyun /**winsize 0: restore default winsize, 1: use below winsize */ 6934*4882a593Smuzhiyun t_u8 coex_win_size; 6935*4882a593Smuzhiyun /**tx win size*/ 6936*4882a593Smuzhiyun t_u8 tx_win_size; 6937*4882a593Smuzhiyun /**rx win size*/ 6938*4882a593Smuzhiyun t_u8 rx_win_size; 6939*4882a593Smuzhiyun /**reserved*/ 6940*4882a593Smuzhiyun t_u8 reserved; 6941*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_BtCoexAggrWinSize_t; 6942*4882a593Smuzhiyun 6943*4882a593Smuzhiyun /** MrvlIEtypes_eapol_pkt_t */ 6944*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_pkt_t { 6945*4882a593Smuzhiyun /** Header */ 6946*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6947*4882a593Smuzhiyun /** eapol pkt buf */ 6948*4882a593Smuzhiyun t_u8 pkt_buf[]; 6949*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_eapol_pkt_t; 6950*4882a593Smuzhiyun 6951*4882a593Smuzhiyun /** HostCmd_DS_EAPOL_PKT */ 6952*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_EAPOL_PKT { 6953*4882a593Smuzhiyun /** Action */ 6954*4882a593Smuzhiyun t_u16 action; 6955*4882a593Smuzhiyun /** TLV buffer */ 6956*4882a593Smuzhiyun MrvlIEtypes_eapol_pkt_t tlv_eapol; 6957*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_EAPOL_PKT; 6958*4882a593Smuzhiyun 6959*4882a593Smuzhiyun /** HostCmd_DS_OXYGEN_MIMO_SWITCH */ 6960*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_MIMO_SWITCH { 6961*4882a593Smuzhiyun /** Tx path antanne mode */ 6962*4882a593Smuzhiyun t_u8 txpath_antmode; 6963*4882a593Smuzhiyun /** Rx path antanne mode */ 6964*4882a593Smuzhiyun t_u8 rxpath_antmode; 6965*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MIMO_SWITCH; 6966*4882a593Smuzhiyun 6967*4882a593Smuzhiyun #ifdef RX_PACKET_COALESCE 6968*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_RX_PKT_COAL_CFG { 6969*4882a593Smuzhiyun /** Action */ 6970*4882a593Smuzhiyun t_u16 action; 6971*4882a593Smuzhiyun /** Packet threshold */ 6972*4882a593Smuzhiyun t_u32 packet_threshold; 6973*4882a593Smuzhiyun /** Timeout */ 6974*4882a593Smuzhiyun t_u16 delay; 6975*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_RX_PKT_COAL_CFG; 6976*4882a593Smuzhiyun #endif 6977*4882a593Smuzhiyun 6978*4882a593Smuzhiyun /** TLV buffer : firmware roam keys */ 6979*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_keyParams_t { 6980*4882a593Smuzhiyun /** Header */ 6981*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6982*4882a593Smuzhiyun /** Tlv buffer */ 6983*4882a593Smuzhiyun t_u8 tlv_buffer[]; 6984*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_keyParams_t; 6985*4882a593Smuzhiyun 6986*4882a593Smuzhiyun /** TLV buffer : firmware roam enable */ 6987*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_fw_roam_enable_t { 6988*4882a593Smuzhiyun /** Header */ 6989*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 6990*4882a593Smuzhiyun /** Enable */ 6991*4882a593Smuzhiyun t_u8 roam_enable; 6992*4882a593Smuzhiyun /** User set passphrase*/ 6993*4882a593Smuzhiyun t_u8 userset_passphrase; 6994*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_fw_roam_enable_t; 6995*4882a593Smuzhiyun /** HostCmd_DS_ROAM_OFFLOAD */ 6996*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_ROAM_OFFLOAD { 6997*4882a593Smuzhiyun /** Action */ 6998*4882a593Smuzhiyun t_u16 action; 6999*4882a593Smuzhiyun /** tlv */ 7000*4882a593Smuzhiyun t_u8 tlv[]; 7001*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_ROAM_OFFLOAD; 7002*4882a593Smuzhiyun /** HostCmd_DS_ROAM_OFFLOAD_APLIST */ 7003*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_roam_aplist_t { 7004*4882a593Smuzhiyun /** Header */ 7005*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7006*4882a593Smuzhiyun /** AP mac addrs**/ 7007*4882a593Smuzhiyun t_u8 ap_mac[][MLAN_MAC_ADDR_LENGTH]; 7008*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_roam_aplist_t; 7009*4882a593Smuzhiyun /** MrvlIEtypes_fw_roam_trigger_condition_t */ 7010*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_fw_roam_trigger_condition_t { 7011*4882a593Smuzhiyun /** Header */ 7012*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7013*4882a593Smuzhiyun /** Roam offload trigger condition**/ 7014*4882a593Smuzhiyun t_u16 trigger_condition; 7015*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_fw_roam_trigger_condition_t; 7016*4882a593Smuzhiyun /** MrvlIEtypes_fw_roam_retry_count_t */ 7017*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_fw_roam_retry_count_t { 7018*4882a593Smuzhiyun /** Header */ 7019*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7020*4882a593Smuzhiyun /** Roam offload retry count**/ 7021*4882a593Smuzhiyun t_u16 retry_count; 7022*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_fw_roam_retry_count_t; 7023*4882a593Smuzhiyun /** MrvlIEtypes_fw_roam_bgscan_setting_t */ 7024*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_fw_roam_bgscan_setting_t { 7025*4882a593Smuzhiyun /** Header */ 7026*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7027*4882a593Smuzhiyun /** Bss type of BG scan during fw roam**/ 7028*4882a593Smuzhiyun t_u8 bss_type; 7029*4882a593Smuzhiyun /** Number of channels scanned during each scan**/ 7030*4882a593Smuzhiyun t_u8 channels_perscan; 7031*4882a593Smuzhiyun /** Interval between consecutive scans**/ 7032*4882a593Smuzhiyun t_u32 scan_interval; 7033*4882a593Smuzhiyun /** Condition to trigger report to host**/ 7034*4882a593Smuzhiyun t_u32 report_condition; 7035*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_fw_roam_bgscan_setting_t; 7036*4882a593Smuzhiyun /** MrvlIEtypes_para_rssi_t */ 7037*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_para_rssi_t { 7038*4882a593Smuzhiyun /** Header */ 7039*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7040*4882a593Smuzhiyun /** Max value of RSSI threshold**/ 7041*4882a593Smuzhiyun t_u8 max_rssi; 7042*4882a593Smuzhiyun /** Min value of RSSI threshold**/ 7043*4882a593Smuzhiyun t_u8 min_rssi; 7044*4882a593Smuzhiyun /** Adjusting step value of RSSI threshold**/ 7045*4882a593Smuzhiyun t_u8 step_rssi; 7046*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_para_rssi_t; 7047*4882a593Smuzhiyun /** MrvlIEtypes_band_rssi_t */ 7048*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_band_rssi_t { 7049*4882a593Smuzhiyun /** Header */ 7050*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7051*4882a593Smuzhiyun /** BAND and RSSI gap*/ 7052*4882a593Smuzhiyun mlan_ds_misc_band_rssi band_rssi; 7053*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_band_rssi_t; 7054*4882a593Smuzhiyun /** MrvlIEtypes_ees_param_set_t */ 7055*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_ees_param_set_t { 7056*4882a593Smuzhiyun /** Header */ 7057*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7058*4882a593Smuzhiyun /** ees params*/ 7059*4882a593Smuzhiyun mlan_ds_misc_ees_cfg ees_cfg; 7060*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ees_param_set_t; 7061*4882a593Smuzhiyun /** MrvlIEtypes_roam_blacklist_t */ 7062*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_roam_blacklist_t { 7063*4882a593Smuzhiyun /** Header */ 7064*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7065*4882a593Smuzhiyun /* Black list(BSSID list)*/ 7066*4882a593Smuzhiyun mlan_ds_misc_roam_offload_aplist blacklist; 7067*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_roam_blacklist_t; 7068*4882a593Smuzhiyun /** MrvlIEtypes_beacon_miss_threshold_t */ 7069*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_beacon_miss_threshold_t { 7070*4882a593Smuzhiyun /** Header */ 7071*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7072*4882a593Smuzhiyun /* Beacon miss threshold*/ 7073*4882a593Smuzhiyun t_u8 bcn_miss_threshold; 7074*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_beacon_miss_threshold_t; 7075*4882a593Smuzhiyun /** MrvlIEtypes_pre_beacon_miss_threshold_t */ 7076*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_pre_beacon_miss_threshold_t { 7077*4882a593Smuzhiyun /** Header */ 7078*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7079*4882a593Smuzhiyun /* Pre-Beacon miss threshold*/ 7080*4882a593Smuzhiyun t_u8 pre_bcn_miss_threshold; 7081*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_pre_beacon_miss_threshold_t; 7082*4882a593Smuzhiyun 7083*4882a593Smuzhiyun /** HostCmd_DS_DYN_BW */ 7084*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_DYN_BW { 7085*4882a593Smuzhiyun /** Action */ 7086*4882a593Smuzhiyun t_u16 action; 7087*4882a593Smuzhiyun /** Dynamic bandwidth */ 7088*4882a593Smuzhiyun t_u16 dyn_bw; 7089*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_DYN_BW; 7090*4882a593Smuzhiyun 7091*4882a593Smuzhiyun /** Host Command ID : Packet aggregation CTRL */ 7092*4882a593Smuzhiyun #define HostCmd_CMD_PACKET_AGGR_CTRL 0x0251 7093*4882a593Smuzhiyun 7094*4882a593Smuzhiyun /** HostCmd_DS_PACKET_AGGR_CTRL */ 7095*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_PACKET_AGGR_AGGR_CTRL { 7096*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 7097*4882a593Smuzhiyun t_u16 action; 7098*4882a593Smuzhiyun /** enable aggregation, BIT(0) TX, BIT(1)RX */ 7099*4882a593Smuzhiyun t_u16 aggr_enable; 7100*4882a593Smuzhiyun /** Tx aggregation alignment */ 7101*4882a593Smuzhiyun t_u16 tx_aggr_max_size; 7102*4882a593Smuzhiyun /** Tx aggregation max packet number */ 7103*4882a593Smuzhiyun t_u16 tx_aggr_max_num; 7104*4882a593Smuzhiyun /** Tx aggregation alignment */ 7105*4882a593Smuzhiyun t_u16 tx_aggr_align; 7106*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_PACKET_AGGR_CTRL; 7107*4882a593Smuzhiyun 7108*4882a593Smuzhiyun #ifdef USB 7109*4882a593Smuzhiyun /** Host Command ID : Packet aggregation over host interface */ 7110*4882a593Smuzhiyun #define HostCmd_CMD_PACKET_AGGR_OVER_HOST_INTERFACE 0x0117 7111*4882a593Smuzhiyun 7112*4882a593Smuzhiyun /** TLV ID : USB Aggregation parameters */ 7113*4882a593Smuzhiyun #define MRVL_USB_AGGR_PARAM_TLV_ID \ 7114*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0xB1) /* 0x1B1 \ 7115*4882a593Smuzhiyun */ 7116*4882a593Smuzhiyun 7117*4882a593Smuzhiyun /** TLV size : USB Aggregation parameters, except header */ 7118*4882a593Smuzhiyun #define MRVL_USB_AGGR_PARAM_TLV_LEN (14) 7119*4882a593Smuzhiyun 7120*4882a593Smuzhiyun /** VHT Operations IE */ 7121*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIETypes_USBAggrParam_t { 7122*4882a593Smuzhiyun /** Header */ 7123*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7124*4882a593Smuzhiyun 7125*4882a593Smuzhiyun /** Enable */ 7126*4882a593Smuzhiyun t_u16 enable; 7127*4882a593Smuzhiyun /** Rx aggregation mode */ 7128*4882a593Smuzhiyun t_u16 rx_aggr_mode; 7129*4882a593Smuzhiyun /** Rx aggregation alignment */ 7130*4882a593Smuzhiyun t_u16 rx_aggr_align; 7131*4882a593Smuzhiyun /** Rx aggregation max packet/size */ 7132*4882a593Smuzhiyun t_u16 rx_aggr_max; 7133*4882a593Smuzhiyun /** Rx aggrgation timeout, in microseconds */ 7134*4882a593Smuzhiyun t_u16 rx_aggr_tmo; 7135*4882a593Smuzhiyun /** Tx aggregation mode */ 7136*4882a593Smuzhiyun t_u16 tx_aggr_mode; 7137*4882a593Smuzhiyun /** Tx aggregation alignment */ 7138*4882a593Smuzhiyun t_u16 tx_aggr_align; 7139*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_USBAggrParam_t; 7140*4882a593Smuzhiyun 7141*4882a593Smuzhiyun /** HostCmd_DS_PACKET_AGGR_OVER_HOST_INTERFACE */ 7142*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_PACKET_AGGR_OVER_HOST_INTERFACE { 7143*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 7144*4882a593Smuzhiyun t_u16 action; 7145*4882a593Smuzhiyun /** 7146*4882a593Smuzhiyun * Host interface aggregation control TLV(s) to be sent in the firmware 7147*4882a593Smuzhiyun * command 7148*4882a593Smuzhiyun * 7149*4882a593Smuzhiyun * TLV_USB_AGGR_PARAM, MrvlIETypes_USBAggrParam_t 7150*4882a593Smuzhiyun */ 7151*4882a593Smuzhiyun t_u8 tlv_buf[1]; 7152*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_PACKET_AGGR_OVER_HOST_INTERFACE; 7153*4882a593Smuzhiyun #endif /* USB */ 7154*4882a593Smuzhiyun 7155*4882a593Smuzhiyun /** HostCmd_CONFIG_LOW_PWR_MODE */ 7156*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_CONFIG_LOW_PWR_MODE { 7157*4882a593Smuzhiyun /** Enable LPM */ 7158*4882a593Smuzhiyun t_u8 enable; 7159*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_CONFIG_LOW_PWR_MODE; 7160*4882a593Smuzhiyun 7161*4882a593Smuzhiyun /** HostCmd_CMD_GET_TSF */ 7162*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_TSF { 7163*4882a593Smuzhiyun /** tsf value*/ 7164*4882a593Smuzhiyun t_u64 tsf; 7165*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_TSF; 7166*4882a593Smuzhiyun /* WLAN_GET_TSF*/ 7167*4882a593Smuzhiyun 7168*4882a593Smuzhiyun typedef struct _HostCmd_DS_DFS_REPEATER_MODE { 7169*4882a593Smuzhiyun /** Set or Get */ 7170*4882a593Smuzhiyun t_u16 action; 7171*4882a593Smuzhiyun /** 1 on or 0 off */ 7172*4882a593Smuzhiyun t_u16 mode; 7173*4882a593Smuzhiyun } HostCmd_DS_DFS_REPEATER_MODE; 7174*4882a593Smuzhiyun 7175*4882a593Smuzhiyun /** HostCmd_DS_BOOT_SLEEP */ 7176*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_BOOT_SLEEP { 7177*4882a593Smuzhiyun /** Set or Get */ 7178*4882a593Smuzhiyun t_u16 action; 7179*4882a593Smuzhiyun /** 1 on or 0 off */ 7180*4882a593Smuzhiyun t_u16 enable; 7181*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_BOOT_SLEEP; 7182*4882a593Smuzhiyun 7183*4882a593Smuzhiyun /** 7184*4882a593Smuzhiyun * @brief 802.11h Local Power Constraint NXP extended TLV 7185*4882a593Smuzhiyun */ 7186*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7187*4882a593Smuzhiyun MrvlIEtypesHeader_t header; /**< NXP TLV header: ID/Len */ 7188*4882a593Smuzhiyun t_u8 chan; /**< Channel local constraint applies to */ 7189*4882a593Smuzhiyun 7190*4882a593Smuzhiyun /** Power constraint included in beacons 7191*4882a593Smuzhiyun * and used by fw to offset 11d info 7192*4882a593Smuzhiyun */ 7193*4882a593Smuzhiyun t_u8 constraint; 7194*4882a593Smuzhiyun 7195*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_LocalPowerConstraint_t; 7196*4882a593Smuzhiyun 7197*4882a593Smuzhiyun /* 7198*4882a593Smuzhiyun * 7199*4882a593Smuzhiyun * Data structures for driver/firmware command processing 7200*4882a593Smuzhiyun * 7201*4882a593Smuzhiyun */ 7202*4882a593Smuzhiyun 7203*4882a593Smuzhiyun /** TPC Info structure sent in CMD_802_11_TPC_INFO command to firmware */ 7204*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7205*4882a593Smuzhiyun /**< Local constraint */ 7206*4882a593Smuzhiyun MrvlIEtypes_LocalPowerConstraint_t local_constraint; 7207*4882a593Smuzhiyun /**< Power Capability */ 7208*4882a593Smuzhiyun MrvlIEtypes_PowerCapability_t power_cap; 7209*4882a593Smuzhiyun 7210*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_TPC_INFO; 7211*4882a593Smuzhiyun 7212*4882a593Smuzhiyun /** TPC Request structure sent in CMD_802_11_TPC_ADAPT_REQ 7213*4882a593Smuzhiyun * command to firmware 7214*4882a593Smuzhiyun */ 7215*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7216*4882a593Smuzhiyun t_u8 dest_mac[MLAN_MAC_ADDR_LENGTH]; /**< Destination STA address */ 7217*4882a593Smuzhiyun t_u16 timeout; /**< Response timeout in ms */ 7218*4882a593Smuzhiyun t_u8 rate_index; /**< IEEE Rate index to send request */ 7219*4882a593Smuzhiyun 7220*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_TpcRequest; 7221*4882a593Smuzhiyun 7222*4882a593Smuzhiyun /** TPC Response structure received from the 7223*4882a593Smuzhiyun * CMD_802_11_TPC_ADAPT_REQ command 7224*4882a593Smuzhiyun */ 7225*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7226*4882a593Smuzhiyun t_u8 tpc_ret_code; /**< Firmware command result status code */ 7227*4882a593Smuzhiyun t_s8 tx_power; /**< Reported TX Power from the TPC Report element */ 7228*4882a593Smuzhiyun t_s8 link_margin; /**< Reported link margin from the TPC Report element 7229*4882a593Smuzhiyun */ 7230*4882a593Smuzhiyun t_s8 rssi; /**< RSSI of the received TPC Report frame */ 7231*4882a593Smuzhiyun 7232*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_TpcResponse; 7233*4882a593Smuzhiyun 7234*4882a593Smuzhiyun /** CMD_802_11_TPC_ADAPT_REQ substruct. 7235*4882a593Smuzhiyun * Union of the TPC request and response 7236*4882a593Smuzhiyun */ 7237*4882a593Smuzhiyun typedef MLAN_PACK_START union { 7238*4882a593Smuzhiyun HostCmd_TpcRequest req; /**< Request struct sent to firmware */ 7239*4882a593Smuzhiyun HostCmd_TpcResponse resp; /**< Response struct received from firmware */ 7240*4882a593Smuzhiyun 7241*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_TPC_ADAPT_REQ; 7242*4882a593Smuzhiyun 7243*4882a593Smuzhiyun /** CMD_802_11_CHAN_SW_ANN firmware command substructure */ 7244*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7245*4882a593Smuzhiyun t_u8 switch_mode; /**< Set to 1 for a quiet switch request, no STA tx */ 7246*4882a593Smuzhiyun t_u8 new_chan; /**< Requested new channel */ 7247*4882a593Smuzhiyun t_u8 switch_count; /**< Number of TBTTs until the switch is to occur */ 7248*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_802_11_CHAN_SW_ANN; 7249*4882a593Smuzhiyun 7250*4882a593Smuzhiyun /** 7251*4882a593Smuzhiyun * @brief Enumeration of measurement types, including max supported 7252*4882a593Smuzhiyun * enum for 11h/11k 7253*4882a593Smuzhiyun */ 7254*4882a593Smuzhiyun typedef MLAN_PACK_START enum _MeasType_t { 7255*4882a593Smuzhiyun WLAN_MEAS_BASIC = 0, /**< 11h: Basic */ 7256*4882a593Smuzhiyun WLAN_MEAS_NUM_TYPES, /**< Number of enumerated measurements */ 7257*4882a593Smuzhiyun WLAN_MEAS_11H_MAX_TYPE = WLAN_MEAS_BASIC, /**< Max 11h measurement */ 7258*4882a593Smuzhiyun 7259*4882a593Smuzhiyun } MLAN_PACK_END MeasType_t; 7260*4882a593Smuzhiyun 7261*4882a593Smuzhiyun /** 7262*4882a593Smuzhiyun * @brief Mode octet of the measurement request element (7.3.2.21) 7263*4882a593Smuzhiyun */ 7264*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7265*4882a593Smuzhiyun #ifdef BIG_ENDIAN_SUPPORT 7266*4882a593Smuzhiyun /**< Reserved */ 7267*4882a593Smuzhiyun t_u8 rsvd5_7 : 3; 7268*4882a593Smuzhiyun /**< 11k: duration spec. for meas. is mandatory */ 7269*4882a593Smuzhiyun t_u8 duration_mandatory : 1; 7270*4882a593Smuzhiyun /**< 11h: en/disable report rcpt. of spec. type */ 7271*4882a593Smuzhiyun t_u8 report : 1; 7272*4882a593Smuzhiyun /**< 11h: en/disable requests of specified type */ 7273*4882a593Smuzhiyun t_u8 request : 1; 7274*4882a593Smuzhiyun /**< 11h: enable report/request bits */ 7275*4882a593Smuzhiyun t_u8 enable : 1; 7276*4882a593Smuzhiyun /**< 11k: series or parallel with previous meas */ 7277*4882a593Smuzhiyun t_u8 parallel : 1; 7278*4882a593Smuzhiyun #else 7279*4882a593Smuzhiyun /**< 11k: series or parallel with previous meas */ 7280*4882a593Smuzhiyun t_u8 parallel : 1; 7281*4882a593Smuzhiyun /**< 11h: enable report/request bits */ 7282*4882a593Smuzhiyun t_u8 enable : 1; 7283*4882a593Smuzhiyun /**< 11h: en/disable requests of specified type */ 7284*4882a593Smuzhiyun t_u8 request : 1; 7285*4882a593Smuzhiyun /**< 11h: en/disable report rcpt. of spec. type */ 7286*4882a593Smuzhiyun t_u8 report : 1; 7287*4882a593Smuzhiyun /**< 11k: duration spec. for meas. is mandatory */ 7288*4882a593Smuzhiyun t_u8 duration_mandatory : 1; 7289*4882a593Smuzhiyun /**< Reserved */ 7290*4882a593Smuzhiyun t_u8 rsvd5_7 : 3; 7291*4882a593Smuzhiyun #endif /* BIG_ENDIAN_SUPPORT */ 7292*4882a593Smuzhiyun 7293*4882a593Smuzhiyun } MLAN_PACK_END MeasReqMode_t; 7294*4882a593Smuzhiyun 7295*4882a593Smuzhiyun /** 7296*4882a593Smuzhiyun * @brief Common measurement request structure (7.3.2.21.1 to 7.3.2.21.3) 7297*4882a593Smuzhiyun */ 7298*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7299*4882a593Smuzhiyun t_u8 channel; /**< Channel to measure */ 7300*4882a593Smuzhiyun t_u64 start_time; /**< TSF Start time of measurement (0 for immediate) 7301*4882a593Smuzhiyun */ 7302*4882a593Smuzhiyun t_u16 duration; /**< TU duration of the measurement */ 7303*4882a593Smuzhiyun 7304*4882a593Smuzhiyun } MLAN_PACK_END MeasReqCommonFormat_t; 7305*4882a593Smuzhiyun 7306*4882a593Smuzhiyun /** 7307*4882a593Smuzhiyun * @brief Basic measurement request structure (7.3.2.21.1) 7308*4882a593Smuzhiyun */ 7309*4882a593Smuzhiyun typedef MeasReqCommonFormat_t MeasReqBasic_t; 7310*4882a593Smuzhiyun 7311*4882a593Smuzhiyun /** 7312*4882a593Smuzhiyun * @brief CCA measurement request structure (7.3.2.21.2) 7313*4882a593Smuzhiyun */ 7314*4882a593Smuzhiyun typedef MeasReqCommonFormat_t MeasReqCCA_t; 7315*4882a593Smuzhiyun 7316*4882a593Smuzhiyun /** 7317*4882a593Smuzhiyun * @brief RPI measurement request structure (7.3.2.21.3) 7318*4882a593Smuzhiyun */ 7319*4882a593Smuzhiyun typedef MeasReqCommonFormat_t MeasReqRPI_t; 7320*4882a593Smuzhiyun 7321*4882a593Smuzhiyun /** 7322*4882a593Smuzhiyun * @brief Union of the availble measurement request types. Passed in the 7323*4882a593Smuzhiyun * driver/firmware interface. 7324*4882a593Smuzhiyun */ 7325*4882a593Smuzhiyun typedef union { 7326*4882a593Smuzhiyun MeasReqBasic_t basic; /**< Basic measurement request */ 7327*4882a593Smuzhiyun MeasReqCCA_t cca; /**< CCA measurement request */ 7328*4882a593Smuzhiyun MeasReqRPI_t rpi; /**< RPI measurement request */ 7329*4882a593Smuzhiyun 7330*4882a593Smuzhiyun } MeasRequest_t; 7331*4882a593Smuzhiyun 7332*4882a593Smuzhiyun /** 7333*4882a593Smuzhiyun * @brief Mode octet of the measurement report element (7.3.2.22) 7334*4882a593Smuzhiyun */ 7335*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7336*4882a593Smuzhiyun #ifdef BIG_ENDIAN_SUPPORT 7337*4882a593Smuzhiyun t_u8 rsvd3_7 : 5; /**< Reserved */ 7338*4882a593Smuzhiyun t_u8 refused : 1; /**< Measurement refused */ 7339*4882a593Smuzhiyun t_u8 incapable : 1; /**< Incapable of performing measurement */ 7340*4882a593Smuzhiyun t_u8 late : 1; /**< Start TSF time missed for measurement */ 7341*4882a593Smuzhiyun #else 7342*4882a593Smuzhiyun t_u8 late : 1; /**< Start TSF time missed for measurement */ 7343*4882a593Smuzhiyun t_u8 incapable : 1; /**< Incapable of performing measurement */ 7344*4882a593Smuzhiyun t_u8 refused : 1; /**< Measurement refused */ 7345*4882a593Smuzhiyun t_u8 rsvd3_7 : 5; /**< Reserved */ 7346*4882a593Smuzhiyun #endif /* BIG_ENDIAN_SUPPORT */ 7347*4882a593Smuzhiyun 7348*4882a593Smuzhiyun } MLAN_PACK_END MeasRptMode_t; 7349*4882a593Smuzhiyun 7350*4882a593Smuzhiyun /** 7351*4882a593Smuzhiyun * @brief Basic measurement report (7.3.2.22.1) 7352*4882a593Smuzhiyun */ 7353*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7354*4882a593Smuzhiyun t_u8 channel; /**< Channel to measured */ 7355*4882a593Smuzhiyun t_u64 start_time; /**< Start time (TSF) of measurement */ 7356*4882a593Smuzhiyun t_u16 duration; /**< Duration of measurement in TUs */ 7357*4882a593Smuzhiyun MeasRptBasicMap_t map; /**< Basic measurement report */ 7358*4882a593Smuzhiyun 7359*4882a593Smuzhiyun } MLAN_PACK_END MeasRptBasic_t; 7360*4882a593Smuzhiyun 7361*4882a593Smuzhiyun /** 7362*4882a593Smuzhiyun * @brief CCA measurement report (7.3.2.22.2) 7363*4882a593Smuzhiyun */ 7364*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7365*4882a593Smuzhiyun t_u8 channel; /**< Channel to measured */ 7366*4882a593Smuzhiyun t_u64 start_time; /**< Start time (TSF) of measurement */ 7367*4882a593Smuzhiyun t_u16 duration; /**< Duration of measurement in TUs */ 7368*4882a593Smuzhiyun t_u8 busy_fraction; /**< Fractional duration CCA indicated chan busy */ 7369*4882a593Smuzhiyun 7370*4882a593Smuzhiyun } MLAN_PACK_END MeasRptCCA_t; 7371*4882a593Smuzhiyun 7372*4882a593Smuzhiyun /** 7373*4882a593Smuzhiyun * @brief RPI measurement report (7.3.2.22.3) 7374*4882a593Smuzhiyun */ 7375*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7376*4882a593Smuzhiyun t_u8 channel; /**< Channel to measured */ 7377*4882a593Smuzhiyun t_u64 start_time; /**< Start time (TSF) of measurement */ 7378*4882a593Smuzhiyun t_u16 duration; /**< Duration of measurement in TUs */ 7379*4882a593Smuzhiyun t_u8 density[8]; /**< RPI Density histogram report */ 7380*4882a593Smuzhiyun 7381*4882a593Smuzhiyun } MLAN_PACK_END MeasRptRPI_t; 7382*4882a593Smuzhiyun 7383*4882a593Smuzhiyun /** 7384*4882a593Smuzhiyun * @brief Union of the availble measurement report types. Passed in the 7385*4882a593Smuzhiyun * driver/firmware interface. 7386*4882a593Smuzhiyun */ 7387*4882a593Smuzhiyun typedef union { 7388*4882a593Smuzhiyun MeasRptBasic_t basic; /**< Basic measurement report */ 7389*4882a593Smuzhiyun MeasRptCCA_t cca; /**< CCA measurement report */ 7390*4882a593Smuzhiyun MeasRptRPI_t rpi; /**< RPI measurement report */ 7391*4882a593Smuzhiyun 7392*4882a593Smuzhiyun } MeasReport_t; 7393*4882a593Smuzhiyun 7394*4882a593Smuzhiyun /** 7395*4882a593Smuzhiyun * @brief Structure passed to firmware to perform a measurement 7396*4882a593Smuzhiyun */ 7397*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7398*4882a593Smuzhiyun t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH]; /**< Reporting STA address */ 7399*4882a593Smuzhiyun t_u8 dialog_token; /**< Measurement dialog toke */ 7400*4882a593Smuzhiyun MeasReqMode_t req_mode; /**< Report mode */ 7401*4882a593Smuzhiyun MeasType_t meas_type; /**< Measurement type */ 7402*4882a593Smuzhiyun MeasRequest_t req; /**< Measurement request data */ 7403*4882a593Smuzhiyun 7404*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MEASUREMENT_REQUEST, 7405*4882a593Smuzhiyun *pHostCmd_DS_MEASUREMENT_REQUEST; 7406*4882a593Smuzhiyun 7407*4882a593Smuzhiyun /** 7408*4882a593Smuzhiyun * @brief Structure passed back from firmware with a measurement report, 7409*4882a593Smuzhiyun * also can be to send a measurement report to another STA 7410*4882a593Smuzhiyun */ 7411*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7412*4882a593Smuzhiyun t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH]; /**< Reporting STA address */ 7413*4882a593Smuzhiyun t_u8 dialog_token; /**< Measurement dialog token */ 7414*4882a593Smuzhiyun MeasRptMode_t rpt_mode; /**< Report mode */ 7415*4882a593Smuzhiyun MeasType_t meas_type; /**< Measurement type */ 7416*4882a593Smuzhiyun MeasReport_t rpt; /**< Measurement report data */ 7417*4882a593Smuzhiyun 7418*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_MEASUREMENT_REPORT, *pHostCmd_DS_MEASUREMENT_REPORT; 7419*4882a593Smuzhiyun 7420*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7421*4882a593Smuzhiyun t_u16 startFreq; 7422*4882a593Smuzhiyun Band_Config_t bandcfg; 7423*4882a593Smuzhiyun t_u8 chanNum; 7424*4882a593Smuzhiyun 7425*4882a593Smuzhiyun } MLAN_PACK_END MrvlChannelDesc_t; 7426*4882a593Smuzhiyun 7427*4882a593Smuzhiyun #ifdef OPCHAN 7428*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7429*4882a593Smuzhiyun MrvlIEtypesHeader_t header; /**< Header */ 7430*4882a593Smuzhiyun 7431*4882a593Smuzhiyun MrvlChannelDesc_t chanDesc; 7432*4882a593Smuzhiyun 7433*4882a593Smuzhiyun t_u16 controlFlags; 7434*4882a593Smuzhiyun t_u16 reserved; 7435*4882a593Smuzhiyun 7436*4882a593Smuzhiyun t_u8 actPower; 7437*4882a593Smuzhiyun t_u8 mdMinPower; 7438*4882a593Smuzhiyun t_u8 mdMaxPower; 7439*4882a593Smuzhiyun t_u8 mdPower; 7440*4882a593Smuzhiyun 7441*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ChanControlDesc_t; 7442*4882a593Smuzhiyun 7443*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7444*4882a593Smuzhiyun MrvlIEtypesHeader_t header; /**< Header */ 7445*4882a593Smuzhiyun 7446*4882a593Smuzhiyun t_u16 chanGroupBitmap; 7447*4882a593Smuzhiyun ChanScanMode_t scanMode; 7448*4882a593Smuzhiyun t_u8 numChan; 7449*4882a593Smuzhiyun 7450*4882a593Smuzhiyun MrvlChannelDesc_t chanDesc[50]; 7451*4882a593Smuzhiyun 7452*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ChanGroupControl_t; 7453*4882a593Smuzhiyun 7454*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7455*4882a593Smuzhiyun t_u16 action; /**< CMD Action Get/Set*/ 7456*4882a593Smuzhiyun 7457*4882a593Smuzhiyun t_u8 tlv_buffer[1]; 7458*4882a593Smuzhiyun 7459*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_OPCHAN_CONFIG; 7460*4882a593Smuzhiyun 7461*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7462*4882a593Smuzhiyun t_u16 action; /**< CMD Action Get/Set*/ 7463*4882a593Smuzhiyun 7464*4882a593Smuzhiyun t_u8 tlv_buffer[1]; 7465*4882a593Smuzhiyun 7466*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_OPCHAN_CHANGROUP_CONFIG; 7467*4882a593Smuzhiyun 7468*4882a593Smuzhiyun #define HostCmd_CMD_OPCHAN_CONFIG 0x00f8 7469*4882a593Smuzhiyun #define HostCmd_CMD_OPCHAN_CHANGROUP_CONFIG 0x00f9 7470*4882a593Smuzhiyun #endif 7471*4882a593Smuzhiyun 7472*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7473*4882a593Smuzhiyun MrvlIEtypesHeader_t Header; /**< Header */ 7474*4882a593Smuzhiyun 7475*4882a593Smuzhiyun MeasRptBasicMap_t map; /**< IEEE 802.11h basic meas report */ 7476*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ChanRpt11hBasic_t; 7477*4882a593Smuzhiyun 7478*4882a593Smuzhiyun /* MrvlIEtypes_ZeroDfsOperation_t */ 7479*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7480*4882a593Smuzhiyun /* header */ 7481*4882a593Smuzhiyun MrvlIEtypesHeader_t Header; 7482*4882a593Smuzhiyun /**< 0-DFS Enable/Disable> */ 7483*4882a593Smuzhiyun t_u8 zero_dfs_enbl; 7484*4882a593Smuzhiyun 7485*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_ZeroDfsOperation_t; 7486*4882a593Smuzhiyun 7487*4882a593Smuzhiyun /* MrvlIEtypes_DfsW53Cfg_t*/ 7488*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7489*4882a593Smuzhiyun /* header */ 7490*4882a593Smuzhiyun MrvlIEtypesHeader_t Header; 7491*4882a593Smuzhiyun /** df53cfg vlue*/ 7492*4882a593Smuzhiyun t_u8 dfs53cfg; 7493*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_DfsW53Cfg_t; 7494*4882a593Smuzhiyun 7495*4882a593Smuzhiyun /* MrvlIEtypes_Rgn_dom_code_t*/ 7496*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7497*4882a593Smuzhiyun /* header */ 7498*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7499*4882a593Smuzhiyun /** Domain Code */ 7500*4882a593Smuzhiyun t_u8 domain_code; 7501*4882a593Smuzhiyun /** Reserved field */ 7502*4882a593Smuzhiyun t_u8 reserved; 7503*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Rgn_dom_code_t; 7504*4882a593Smuzhiyun 7505*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7506*4882a593Smuzhiyun MrvlChannelDesc_t chan_desc; /**< Channel band, number */ 7507*4882a593Smuzhiyun t_u32 millisec_dwell_time; /**< Channel dwell time in milliseconds */ 7508*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CHAN_RPT_REQ; 7509*4882a593Smuzhiyun 7510*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7511*4882a593Smuzhiyun t_u32 cmd_result; /**< Rpt request command result (0 == SUCCESS) */ 7512*4882a593Smuzhiyun t_u64 start_tsf; /**< TSF Measurement started */ 7513*4882a593Smuzhiyun t_u32 duration; /**< Duration of measurement in microsecs */ 7514*4882a593Smuzhiyun t_u8 tlv_buffer[1]; /**< TLV Buffer */ 7515*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CHAN_RPT_RSP; 7516*4882a593Smuzhiyun 7517*4882a593Smuzhiyun /** statistics threshold */ 7518*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7519*4882a593Smuzhiyun /** Header */ 7520*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7521*4882a593Smuzhiyun /** value */ 7522*4882a593Smuzhiyun t_u8 value; 7523*4882a593Smuzhiyun /** reporting frequency */ 7524*4882a593Smuzhiyun t_u8 frequency; 7525*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_BeaconHighRssiThreshold_t, 7526*4882a593Smuzhiyun MrvlIEtypes_BeaconLowRssiThreshold_t, 7527*4882a593Smuzhiyun MrvlIEtypes_BeaconHighSnrThreshold_t, 7528*4882a593Smuzhiyun MrvlIEtypes_BeaconLowSnrThreshold_t, MrvlIEtypes_FailureCount_t, 7529*4882a593Smuzhiyun MrvlIEtypes_DataLowRssiThreshold_t, MrvlIEtypes_DataHighRssiThreshold_t, 7530*4882a593Smuzhiyun MrvlIEtypes_DataLowSnrThreshold_t, MrvlIEtypes_DataHighSnrThreshold_t, 7531*4882a593Smuzhiyun MrvlIETypes_PreBeaconMissed_t, MrvlIEtypes_BeaconsMissed_t; 7532*4882a593Smuzhiyun 7533*4882a593Smuzhiyun /** statistics threshold for LinkQuality */ 7534*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7535*4882a593Smuzhiyun /** Header */ 7536*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7537*4882a593Smuzhiyun /** Link SNR threshold (dB) */ 7538*4882a593Smuzhiyun t_u16 link_snr; 7539*4882a593Smuzhiyun /** Link SNR frequency */ 7540*4882a593Smuzhiyun t_u16 link_snr_freq; 7541*4882a593Smuzhiyun /* Second minimum rate value as per the rate table below */ 7542*4882a593Smuzhiyun t_u16 link_rate; 7543*4882a593Smuzhiyun /* Second minimum rate frequency */ 7544*4882a593Smuzhiyun t_u16 link_rate_freq; 7545*4882a593Smuzhiyun /* Tx latency value (us) */ 7546*4882a593Smuzhiyun t_u16 link_tx_latency; 7547*4882a593Smuzhiyun /* Tx latency frequency */ 7548*4882a593Smuzhiyun t_u16 link_tx_lantency_freq; 7549*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_LinkQualityThreshold_t; 7550*4882a593Smuzhiyun 7551*4882a593Smuzhiyun #ifdef PCIE 7552*4882a593Smuzhiyun /** PCIE dual descriptor for data/event */ 7553*4882a593Smuzhiyun typedef MLAN_PACK_START struct _dual_desc_buf { 7554*4882a593Smuzhiyun /** buf size */ 7555*4882a593Smuzhiyun t_u16 len; 7556*4882a593Smuzhiyun /** buffer descriptor flags */ 7557*4882a593Smuzhiyun t_u16 flags; 7558*4882a593Smuzhiyun /** pkt size */ 7559*4882a593Smuzhiyun t_u16 pkt_size; 7560*4882a593Smuzhiyun /** reserved */ 7561*4882a593Smuzhiyun t_u16 reserved; 7562*4882a593Smuzhiyun /** Physical address of the buffer */ 7563*4882a593Smuzhiyun t_u64 paddr; 7564*4882a593Smuzhiyun } MLAN_PACK_END adma_dual_desc_buf, *padma_dual_desc_buf; 7565*4882a593Smuzhiyun 7566*4882a593Smuzhiyun #if defined(PCIE8997) || defined(PCIE8897) 7567*4882a593Smuzhiyun /** PCIE ring buffer description for DATA */ 7568*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mlan_pcie_data_buf { 7569*4882a593Smuzhiyun /** Buffer descriptor flags */ 7570*4882a593Smuzhiyun t_u16 flags; 7571*4882a593Smuzhiyun /** Offset of fragment/pkt to start of ip header */ 7572*4882a593Smuzhiyun t_u16 offset; 7573*4882a593Smuzhiyun /** Fragment length of the buffer */ 7574*4882a593Smuzhiyun t_u16 frag_len; 7575*4882a593Smuzhiyun /** Length of the buffer */ 7576*4882a593Smuzhiyun t_u16 len; 7577*4882a593Smuzhiyun /** Physical address of the buffer */ 7578*4882a593Smuzhiyun t_u64 paddr; 7579*4882a593Smuzhiyun /** Reserved */ 7580*4882a593Smuzhiyun t_u32 reserved; 7581*4882a593Smuzhiyun } MLAN_PACK_END mlan_pcie_data_buf, *pmlan_pcie_data_buf; 7582*4882a593Smuzhiyun 7583*4882a593Smuzhiyun /** PCIE ring buffer description for EVENT */ 7584*4882a593Smuzhiyun typedef MLAN_PACK_START struct _mlan_pcie_evt_buf { 7585*4882a593Smuzhiyun /** Physical address of the buffer */ 7586*4882a593Smuzhiyun t_u64 paddr; 7587*4882a593Smuzhiyun /** Length of the buffer */ 7588*4882a593Smuzhiyun t_u16 len; 7589*4882a593Smuzhiyun /** Buffer descriptor flags */ 7590*4882a593Smuzhiyun t_u16 flags; 7591*4882a593Smuzhiyun } MLAN_PACK_END mlan_pcie_evt_buf, *pmlan_pcie_evt_buf; 7592*4882a593Smuzhiyun 7593*4882a593Smuzhiyun /** PCIE host buffer configuration */ 7594*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_PCIE_HOST_BUF_DETAILS { 7595*4882a593Smuzhiyun /** TX buffer descriptor ring address */ 7596*4882a593Smuzhiyun t_u32 txbd_addr_lo; 7597*4882a593Smuzhiyun t_u32 txbd_addr_hi; 7598*4882a593Smuzhiyun /** TX buffer descriptor ring count */ 7599*4882a593Smuzhiyun t_u32 txbd_count; 7600*4882a593Smuzhiyun 7601*4882a593Smuzhiyun /** RX buffer descriptor ring address */ 7602*4882a593Smuzhiyun t_u32 rxbd_addr_lo; 7603*4882a593Smuzhiyun t_u32 rxbd_addr_hi; 7604*4882a593Smuzhiyun /** RX buffer descriptor ring count */ 7605*4882a593Smuzhiyun t_u32 rxbd_count; 7606*4882a593Smuzhiyun 7607*4882a593Smuzhiyun /** Event buffer descriptor ring address */ 7608*4882a593Smuzhiyun t_u32 evtbd_addr_lo; 7609*4882a593Smuzhiyun t_u32 evtbd_addr_hi; 7610*4882a593Smuzhiyun /** Event buffer descriptor ring count */ 7611*4882a593Smuzhiyun t_u32 evtbd_count; 7612*4882a593Smuzhiyun } HostCmd_DS_PCIE_HOST_BUF_DETAILS; 7613*4882a593Smuzhiyun #endif 7614*4882a593Smuzhiyun #endif 7615*4882a593Smuzhiyun 7616*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_SENSOR_TEMP { 7617*4882a593Smuzhiyun t_u32 temperature; 7618*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_SENSOR_TEMP; 7619*4882a593Smuzhiyun 7620*4882a593Smuzhiyun #define TLV_TYPE_IPV6_RA_OFFLOAD (PROPRIETARY_TLV_BASE_ID + 0xE6) /** 0x1E6*/ 7621*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7622*4882a593Smuzhiyun MrvlIEtypesHeader_t Header; 7623*4882a593Smuzhiyun t_u8 ipv6_addr[16]; 7624*4882a593Smuzhiyun } MLAN_PACK_END MrvlIETypes_IPv6AddrParamSet_t; 7625*4882a593Smuzhiyun 7626*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_IPV6_RA_OFFLOAD { 7627*4882a593Smuzhiyun /** 0x0000: Get IPv6 RA Offload configuration 7628*4882a593Smuzhiyun * 0x0001: Set IPv6 RA Offload configuration 7629*4882a593Smuzhiyun */ 7630*4882a593Smuzhiyun t_u16 action; 7631*4882a593Smuzhiyun /** 0x00: disable IPv6 RA Offload; 0x01: enable IPv6 RA offload */ 7632*4882a593Smuzhiyun t_u8 enable; 7633*4882a593Smuzhiyun MrvlIETypes_IPv6AddrParamSet_t ipv6_addr_param; 7634*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_IPV6_RA_OFFLOAD; 7635*4882a593Smuzhiyun 7636*4882a593Smuzhiyun #ifdef STA_SUPPORT 7637*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_STA_CONFIGURE { 7638*4882a593Smuzhiyun /** Action Set or get */ 7639*4882a593Smuzhiyun t_u16 action; 7640*4882a593Smuzhiyun /** Tlv buffer */ 7641*4882a593Smuzhiyun t_u8 tlv_buffer[]; 7642*4882a593Smuzhiyun /**MrvlIEtypes_channel_band_t band_channel; */ 7643*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_STA_CONFIGURE; 7644*4882a593Smuzhiyun #endif 7645*4882a593Smuzhiyun 7646*4882a593Smuzhiyun /** HostCmd_DS_AUTO_TX structure */ 7647*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_AUTO_TX { 7648*4882a593Smuzhiyun /** Action Set or get */ 7649*4882a593Smuzhiyun t_u16 action; 7650*4882a593Smuzhiyun /** Tlv buffer */ 7651*4882a593Smuzhiyun t_u8 tlv_buffer[]; 7652*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_AUTO_TX; 7653*4882a593Smuzhiyun 7654*4882a593Smuzhiyun #define OID_CLOUD_KEEP_ALIVE 0 7655*4882a593Smuzhiyun #define EVENT_CLOUD_KEEP_ALIVE_RETRY_FAIL 0x00000085 7656*4882a593Smuzhiyun /** TLV for cloud keep alive control info */ 7657*4882a593Smuzhiyun #define TLV_TYPE_CLOUD_KEEP_ALIVE \ 7658*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x102) /* 0x0100 + 258 */ 7659*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Cloud_Keep_Alive_t { 7660*4882a593Smuzhiyun /** Header */ 7661*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7662*4882a593Smuzhiyun /** ID for cloud keep alive */ 7663*4882a593Smuzhiyun t_u8 keep_alive_id; 7664*4882a593Smuzhiyun /** Enable/disable for this ID */ 7665*4882a593Smuzhiyun t_u8 enable; 7666*4882a593Smuzhiyun /** TLV buffer */ 7667*4882a593Smuzhiyun t_u8 tlv[]; 7668*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Cloud_Keep_Alive_t; 7669*4882a593Smuzhiyun 7670*4882a593Smuzhiyun /** TLV for cloud keep alive control info */ 7671*4882a593Smuzhiyun #define TLV_TYPE_KEEP_ALIVE_CTRL \ 7672*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x103) /* 0x0100 + 259 */ 7673*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Keep_Alive_Ctrl_t { 7674*4882a593Smuzhiyun /** Header */ 7675*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7676*4882a593Smuzhiyun /** period to send keep alive packet */ 7677*4882a593Smuzhiyun t_u32 snd_interval; 7678*4882a593Smuzhiyun /** period to send retry packet */ 7679*4882a593Smuzhiyun t_u16 retry_interval; 7680*4882a593Smuzhiyun /** count to send retry packet */ 7681*4882a593Smuzhiyun t_u16 retry_count; 7682*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Keep_Alive_Ctrl_t; 7683*4882a593Smuzhiyun 7684*4882a593Smuzhiyun /** TLV for cloud keep alive packet */ 7685*4882a593Smuzhiyun #define TLV_TYPE_KEEP_ALIVE_PKT \ 7686*4882a593Smuzhiyun (PROPRIETARY_TLV_BASE_ID + 0x104) /* 0x0100 + 260 */ 7687*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Keep_Alive_Pkt_t { 7688*4882a593Smuzhiyun /** Header */ 7689*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7690*4882a593Smuzhiyun /** Ethernet Header */ 7691*4882a593Smuzhiyun Eth803Hdr_t eth_header; 7692*4882a593Smuzhiyun /** packet buffer*/ 7693*4882a593Smuzhiyun t_u8 ip_packet[]; 7694*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Keep_Alive_Pkt_t; 7695*4882a593Smuzhiyun 7696*4882a593Smuzhiyun /** TLV to indicate firmware only keep probe response while scan */ 7697*4882a593Smuzhiyun #define TLV_TYPE_ONLYPROBERESP (PROPRIETARY_TLV_BASE_ID + 0xE9) /* 0x01E9 */ 7698*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_OnlyProberesp_t { 7699*4882a593Smuzhiyun /** Header */ 7700*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7701*4882a593Smuzhiyun /** only keep probe response */ 7702*4882a593Smuzhiyun t_u8 proberesp_only; 7703*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_OnlyProberesp_t; 7704*4882a593Smuzhiyun 7705*4882a593Smuzhiyun #if defined(DRV_EMBEDDED_AUTHENTICATOR) || defined(DRV_EMBEDDED_SUPPLICANT) 7706*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO 0x025e 7707*4882a593Smuzhiyun 7708*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO_SUBCMD_PRF_HMAC_SHA1 (0x1) 7709*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO_SUBCMD_HMAC_SHA1 (0x2) 7710*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO_SUBCMD_HMAC_SHA256 (0x3) 7711*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO_SUBCMD_SHA256 (0x4) 7712*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO_SUBCMD_RIJNDAEL (0x5) 7713*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO_SUBCMD_RC4 (0x6) 7714*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO_SUBCMD_MD5 (0x7) 7715*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO_SUBCMD_MRVL_F (0x8) 7716*4882a593Smuzhiyun #define HostCmd_CMD_CRYPTO_SUBCMD_SHA256_KDF (0x9) 7717*4882a593Smuzhiyun 7718*4882a593Smuzhiyun #define TLV_TYPE_CRYPTO_KEY (PROPRIETARY_TLV_BASE_ID + 308) 7719*4882a593Smuzhiyun #define TLV_TYPE_CRYPTO_KEY_IV (PROPRIETARY_TLV_BASE_ID + 309) 7720*4882a593Smuzhiyun #define TLV_TYPE_CRYPTO_KEY_PREFIX (PROPRIETARY_TLV_BASE_ID + 310) 7721*4882a593Smuzhiyun #define TLV_TYPE_CRYPTO_KEY_DATA_BLK (PROPRIETARY_TLV_BASE_ID + 311) 7722*4882a593Smuzhiyun 7723*4882a593Smuzhiyun /** MrvlIEParamSet_t */ 7724*4882a593Smuzhiyun typedef MLAN_PACK_START struct { 7725*4882a593Smuzhiyun /** Type */ 7726*4882a593Smuzhiyun t_u16 Type; 7727*4882a593Smuzhiyun /** Length */ 7728*4882a593Smuzhiyun t_u16 Length; 7729*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEParamSet_t; 7730*4882a593Smuzhiyun 7731*4882a593Smuzhiyun /** HostCmd_DS_CRYPTO */ 7732*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CRYPTO { 7733*4882a593Smuzhiyun /** action */ 7734*4882a593Smuzhiyun t_u16 action; 7735*4882a593Smuzhiyun /** subCmdCode */ 7736*4882a593Smuzhiyun t_u8 subCmdCode; 7737*4882a593Smuzhiyun /** subCmd start */ 7738*4882a593Smuzhiyun t_u8 subCmd[]; 7739*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CRYPTO; 7740*4882a593Smuzhiyun 7741*4882a593Smuzhiyun /** subcmd_prf_hmac_sha1 used by prf_hmac_sha1, md5 and sha256_kdf */ 7742*4882a593Smuzhiyun typedef MLAN_PACK_START struct _subcmd_prf_hmac_sha1 { 7743*4882a593Smuzhiyun /** output_len */ 7744*4882a593Smuzhiyun t_u16 output_len; 7745*4882a593Smuzhiyun /** tlv start */ 7746*4882a593Smuzhiyun t_u8 tlv[]; 7747*4882a593Smuzhiyun } MLAN_PACK_END subcmd_prf_hmac_sha1_t, subcmd_md5_t, subcmd_sha256_kdf_t; 7748*4882a593Smuzhiyun 7749*4882a593Smuzhiyun /** subcmd_hmac_sha1 used by hmac_sha1, hmac_sha256, sha256 */ 7750*4882a593Smuzhiyun typedef MLAN_PACK_START struct _subcmd_hmac_sha1 { 7751*4882a593Smuzhiyun /** output_len */ 7752*4882a593Smuzhiyun t_u16 output_len; 7753*4882a593Smuzhiyun /** number of data blocks */ 7754*4882a593Smuzhiyun t_u16 data_blks_nr; 7755*4882a593Smuzhiyun /** tlv start */ 7756*4882a593Smuzhiyun t_u8 tlv[]; 7757*4882a593Smuzhiyun } MLAN_PACK_END subcmd_hmac_sha1_t, subcmd_hmac_sha256_t, subcmd_sha256_t; 7758*4882a593Smuzhiyun 7759*4882a593Smuzhiyun /** subcmd_rijndael, used by rijndael */ 7760*4882a593Smuzhiyun typedef MLAN_PACK_START struct _subcmd_rijndael { 7761*4882a593Smuzhiyun /** output_len */ 7762*4882a593Smuzhiyun t_u16 output_len; 7763*4882a593Smuzhiyun /** sub action code */ 7764*4882a593Smuzhiyun t_u8 sub_action_code; 7765*4882a593Smuzhiyun /** tlv start */ 7766*4882a593Smuzhiyun t_u8 tlv[]; 7767*4882a593Smuzhiyun } MLAN_PACK_END subcmd_rijndael_t; 7768*4882a593Smuzhiyun 7769*4882a593Smuzhiyun /** subcmd_rc4, used by rc4 */ 7770*4882a593Smuzhiyun typedef MLAN_PACK_START struct _subcmd_rc4 { 7771*4882a593Smuzhiyun /** output_len */ 7772*4882a593Smuzhiyun t_u16 output_len; 7773*4882a593Smuzhiyun /** skip bytes */ 7774*4882a593Smuzhiyun t_u16 skip_bytes; 7775*4882a593Smuzhiyun /** tlv start */ 7776*4882a593Smuzhiyun t_u8 tlv[]; 7777*4882a593Smuzhiyun } MLAN_PACK_END subcmd_rc4_t; 7778*4882a593Smuzhiyun 7779*4882a593Smuzhiyun /** subcmd_mrvf_f, used by mrvl_f*/ 7780*4882a593Smuzhiyun typedef MLAN_PACK_START struct _subcmd_mrvf_f { 7781*4882a593Smuzhiyun /** output_len */ 7782*4882a593Smuzhiyun t_u16 output_len; 7783*4882a593Smuzhiyun /** iterations */ 7784*4882a593Smuzhiyun t_u32 iterations; 7785*4882a593Smuzhiyun /** count */ 7786*4882a593Smuzhiyun t_u32 count; 7787*4882a593Smuzhiyun /** tlv start */ 7788*4882a593Smuzhiyun t_u8 tlv[]; 7789*4882a593Smuzhiyun } MLAN_PACK_END subcmd_mrvl_f_t; 7790*4882a593Smuzhiyun 7791*4882a593Smuzhiyun #endif 7792*4882a593Smuzhiyun 7793*4882a593Smuzhiyun #ifdef UAP_SUPPORT 7794*4882a593Smuzhiyun /** action add station */ 7795*4882a593Smuzhiyun #define HostCmd_ACT_ADD_STA 0x1 7796*4882a593Smuzhiyun /** remove station */ 7797*4882a593Smuzhiyun #define HostCmd_ACT_REMOVE_STA 0x0 7798*4882a593Smuzhiyun /** HostCmd_DS_ADD_STATION */ 7799*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_ADD_STATION { 7800*4882a593Smuzhiyun /** 1 -add, 0 --delete */ 7801*4882a593Smuzhiyun t_u16 action; 7802*4882a593Smuzhiyun /** aid */ 7803*4882a593Smuzhiyun t_u16 aid; 7804*4882a593Smuzhiyun /** peer_mac */ 7805*4882a593Smuzhiyun t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH]; 7806*4882a593Smuzhiyun /** Listen Interval */ 7807*4882a593Smuzhiyun int listen_interval; 7808*4882a593Smuzhiyun /** Capability Info */ 7809*4882a593Smuzhiyun t_u16 cap_info; 7810*4882a593Smuzhiyun /** tlv start */ 7811*4882a593Smuzhiyun t_u8 tlv[]; 7812*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_ADD_STATION; 7813*4882a593Smuzhiyun 7814*4882a593Smuzhiyun /** Host Command ID : Add New Station */ 7815*4882a593Smuzhiyun #define HostCmd_CMD_ADD_NEW_STATION 0x025f 7816*4882a593Smuzhiyun /** TLV id: station flag */ 7817*4882a593Smuzhiyun #define TLV_TYPE_UAP_STA_FLAGS (PROPRIETARY_TLV_BASE_ID + 313) 7818*4882a593Smuzhiyun /**MrvlIEtypes_Sta_Flag_t */ 7819*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_StaFlag_t { 7820*4882a593Smuzhiyun /** Header */ 7821*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 7822*4882a593Smuzhiyun /** station flag */ 7823*4882a593Smuzhiyun t_u32 sta_flags; 7824*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_StaFlag_t; 7825*4882a593Smuzhiyun #endif 7826*4882a593Smuzhiyun 7827*4882a593Smuzhiyun /** Host Command ID : _HostCmd_DS_BAND_STEERING */ 7828*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_BAND_STEERING { 7829*4882a593Smuzhiyun /** ACT_GET/ACT_SET */ 7830*4882a593Smuzhiyun t_u8 action; 7831*4882a593Smuzhiyun /** State */ 7832*4882a593Smuzhiyun t_u8 state; 7833*4882a593Smuzhiyun /** probe requests to be blocked on 2g */ 7834*4882a593Smuzhiyun t_u8 block_2g_prb_req; 7835*4882a593Smuzhiyun /** limit the btm request sent to STA at <max_btm_req_allowed>*/ 7836*4882a593Smuzhiyun t_u8 max_btm_req_allowed; 7837*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_BAND_STEERING; 7838*4882a593Smuzhiyun 7839*4882a593Smuzhiyun /** HostCmd_CMD_RX_ABORT_CFG */ 7840*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CMD_RX_ABORT_CFG { 7841*4882a593Smuzhiyun /** Action */ 7842*4882a593Smuzhiyun t_u16 action; 7843*4882a593Smuzhiyun /** Enable/disable rx abort on weak pkt rssi */ 7844*4882a593Smuzhiyun t_u8 enable; 7845*4882a593Smuzhiyun /** rx weak rssi pkt threshold */ 7846*4882a593Smuzhiyun t_s8 rssi_threshold; 7847*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CMD_RX_ABORT_CFG; 7848*4882a593Smuzhiyun /** HostCmd_CMD_RX_ABORT_CFG_EXT */ 7849*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CMD_RX_ABORT_CFG_EXT { 7850*4882a593Smuzhiyun /** Action */ 7851*4882a593Smuzhiyun t_u16 action; 7852*4882a593Smuzhiyun /** Enable/disable dyn rx abort on weak pkt rssi */ 7853*4882a593Smuzhiyun t_u8 enable; 7854*4882a593Smuzhiyun /** specify rssi margin */ 7855*4882a593Smuzhiyun t_s8 rssi_margin; 7856*4882a593Smuzhiyun /** specify ceil rssi threshold */ 7857*4882a593Smuzhiyun t_s8 ceil_rssi_threshold; 7858*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CMD_RX_ABORT_CFG_EXT; 7859*4882a593Smuzhiyun 7860*4882a593Smuzhiyun /** HostCmd_CMD_ARB_CONFIG */ 7861*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CMD_ARB_CONFIG { 7862*4882a593Smuzhiyun /** Action */ 7863*4882a593Smuzhiyun t_u16 action; 7864*4882a593Smuzhiyun /** 0-4 */ 7865*4882a593Smuzhiyun t_u32 arb_mode; 7866*4882a593Smuzhiyun /** 1: use FW enhancement, 0: use FW default */ 7867*4882a593Smuzhiyun t_u32 reserved; 7868*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CMD_ARB_CONFIG; 7869*4882a593Smuzhiyun 7870*4882a593Smuzhiyun /** HostCmd_DS_CMD_TX_AMPDU_PROT_MODE */ 7871*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CMD_TX_AMPDU_PROT_MODE { 7872*4882a593Smuzhiyun /** Action */ 7873*4882a593Smuzhiyun t_u16 action; 7874*4882a593Smuzhiyun /** Prot mode */ 7875*4882a593Smuzhiyun t_u16 mode; 7876*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CMD_TX_AMPDU_PROT_MODE; 7877*4882a593Smuzhiyun 7878*4882a593Smuzhiyun /** HostCmd_DS_CMD_DOT11MC_UNASSOC_FTM_CFG */ 7879*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CMD_DOT11MC_UNASSOC_FTM_CFG { 7880*4882a593Smuzhiyun /** Action */ 7881*4882a593Smuzhiyun t_u16 action; 7882*4882a593Smuzhiyun /** Cfg state */ 7883*4882a593Smuzhiyun t_u16 state; 7884*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CMD_DOT11MC_UNASSOC_FTM_CFG; 7885*4882a593Smuzhiyun 7886*4882a593Smuzhiyun /** HostCmd_CMD_RATE_ADAPT_CFG */ 7887*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CMD_RATE_ADAPT_CFG { 7888*4882a593Smuzhiyun /** Action */ 7889*4882a593Smuzhiyun t_u16 action; 7890*4882a593Smuzhiyun /** SR Rateadapt*/ 7891*4882a593Smuzhiyun t_u8 sr_rateadapt; 7892*4882a593Smuzhiyun /** set low threshold */ 7893*4882a593Smuzhiyun t_u8 ra_low_thresh; 7894*4882a593Smuzhiyun /** set high threshold */ 7895*4882a593Smuzhiyun t_u8 ra_high_thresh; 7896*4882a593Smuzhiyun /** set interval */ 7897*4882a593Smuzhiyun t_u16 ra_interval; 7898*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CMD_RATE_ADAPT_CFG; 7899*4882a593Smuzhiyun 7900*4882a593Smuzhiyun /** HostCmd_CMD_CCK_DESENSE_CFG */ 7901*4882a593Smuzhiyun typedef MLAN_PACK_START struct _HostCmd_DS_CMD_CCK_DESENSE_CFG { 7902*4882a593Smuzhiyun /** Action */ 7903*4882a593Smuzhiyun t_u16 action; 7904*4882a593Smuzhiyun /** cck desense mode: 0:disable 1:normal 2:dynamic */ 7905*4882a593Smuzhiyun t_u16 mode; 7906*4882a593Smuzhiyun /** specify rssi margin */ 7907*4882a593Smuzhiyun t_s8 margin; 7908*4882a593Smuzhiyun /** specify ceil rssi threshold */ 7909*4882a593Smuzhiyun t_s8 ceil_thresh; 7910*4882a593Smuzhiyun /** cck desense "on" interval count */ 7911*4882a593Smuzhiyun t_u8 num_on_intervals; 7912*4882a593Smuzhiyun /** cck desense "off" interval count */ 7913*4882a593Smuzhiyun t_u8 num_off_intervals; 7914*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_CMD_CCK_DESENSE_CFG; 7915*4882a593Smuzhiyun 7916*4882a593Smuzhiyun /** HostCmd_DS_COMMAND */ 7917*4882a593Smuzhiyun typedef struct MLAN_PACK_START _HostCmd_DS_COMMAND { 7918*4882a593Smuzhiyun /** Command Header : Command */ 7919*4882a593Smuzhiyun t_u16 command; 7920*4882a593Smuzhiyun /** Command Header : Size */ 7921*4882a593Smuzhiyun t_u16 size; 7922*4882a593Smuzhiyun /** Command Header : Sequence number */ 7923*4882a593Smuzhiyun t_u16 seq_num; 7924*4882a593Smuzhiyun /** Command Header : Result */ 7925*4882a593Smuzhiyun t_u16 result; 7926*4882a593Smuzhiyun /** Command Body */ 7927*4882a593Smuzhiyun union { 7928*4882a593Smuzhiyun /** Hardware specifications */ 7929*4882a593Smuzhiyun HostCmd_DS_GET_HW_SPEC hw_spec; 7930*4882a593Smuzhiyun #ifdef SDIO 7931*4882a593Smuzhiyun HostCmd_DS_SDIO_SP_RX_AGGR_CFG sdio_rx_aggr; 7932*4882a593Smuzhiyun #endif 7933*4882a593Smuzhiyun /** Cfg data */ 7934*4882a593Smuzhiyun HostCmd_DS_802_11_CFG_DATA cfg_data; 7935*4882a593Smuzhiyun /** MAC control */ 7936*4882a593Smuzhiyun HostCmd_DS_MAC_CONTROL mac_ctrl; 7937*4882a593Smuzhiyun /** MAC address */ 7938*4882a593Smuzhiyun HostCmd_DS_802_11_MAC_ADDRESS mac_addr; 7939*4882a593Smuzhiyun /** MAC muticast address */ 7940*4882a593Smuzhiyun HostCmd_DS_MAC_MULTICAST_ADR mc_addr; 7941*4882a593Smuzhiyun /** Get log */ 7942*4882a593Smuzhiyun HostCmd_DS_802_11_GET_LOG get_log; 7943*4882a593Smuzhiyun /** Get link layer statistic */ 7944*4882a593Smuzhiyun HostCmd_DS_802_11_LINK_STATISTIC get_link_statistic; 7945*4882a593Smuzhiyun /** RSSI information */ 7946*4882a593Smuzhiyun HostCmd_DS_802_11_RSSI_INFO_EXT rssi_info_ext; 7947*4882a593Smuzhiyun /** RSSI information */ 7948*4882a593Smuzhiyun HostCmd_DS_802_11_RSSI_INFO rssi_info; 7949*4882a593Smuzhiyun /** RSSI information response */ 7950*4882a593Smuzhiyun HostCmd_DS_802_11_RSSI_INFO_RSP rssi_info_rsp; 7951*4882a593Smuzhiyun /** SNMP MIB */ 7952*4882a593Smuzhiyun HostCmd_DS_802_11_SNMP_MIB smib; 7953*4882a593Smuzhiyun #ifdef UAP_SUPPORT 7954*4882a593Smuzhiyun /** UAP SNMP MIB */ 7955*4882a593Smuzhiyun HostCmd_DS_UAP_802_11_SNMP_MIB uap_smib; 7956*4882a593Smuzhiyun #endif 7957*4882a593Smuzhiyun /** Radio control */ 7958*4882a593Smuzhiyun HostCmd_DS_802_11_RADIO_CONTROL radio; 7959*4882a593Smuzhiyun /** RF channel */ 7960*4882a593Smuzhiyun HostCmd_DS_802_11_RF_CHANNEL rf_channel; 7961*4882a593Smuzhiyun /** Tx rate query */ 7962*4882a593Smuzhiyun HostCmd_TX_RATE_QUERY tx_rate; 7963*4882a593Smuzhiyun /** Tx rate configuration */ 7964*4882a593Smuzhiyun HostCmd_DS_TX_RATE_CFG tx_rate_cfg; 7965*4882a593Smuzhiyun /** Tx power configuration */ 7966*4882a593Smuzhiyun HostCmd_DS_TXPWR_CFG txp_cfg; 7967*4882a593Smuzhiyun /** RF Tx power configuration */ 7968*4882a593Smuzhiyun HostCmd_DS_802_11_RF_TX_POWER txp; 7969*4882a593Smuzhiyun 7970*4882a593Smuzhiyun /** RF antenna */ 7971*4882a593Smuzhiyun HostCmd_DS_802_11_RF_ANTENNA antenna; 7972*4882a593Smuzhiyun 7973*4882a593Smuzhiyun /** CW Mode: Tx CW Level control */ 7974*4882a593Smuzhiyun HostCmd_DS_CW_MODE_CTRL cwmode; 7975*4882a593Smuzhiyun /** Enhanced power save command */ 7976*4882a593Smuzhiyun HostCmd_DS_802_11_PS_MODE_ENH psmode_enh; 7977*4882a593Smuzhiyun HostCmd_DS_802_11_HS_CFG_ENH opt_hs_cfg; 7978*4882a593Smuzhiyun /** Scan */ 7979*4882a593Smuzhiyun HostCmd_DS_802_11_SCAN scan; 7980*4882a593Smuzhiyun /** Extended Scan */ 7981*4882a593Smuzhiyun HostCmd_DS_802_11_SCAN_EXT ext_scan; 7982*4882a593Smuzhiyun 7983*4882a593Smuzhiyun /** Mgmt frame subtype mask */ 7984*4882a593Smuzhiyun HostCmd_DS_RX_MGMT_IND rx_mgmt_ind; 7985*4882a593Smuzhiyun /** Scan response */ 7986*4882a593Smuzhiyun HostCmd_DS_802_11_SCAN_RSP scan_resp; 7987*4882a593Smuzhiyun 7988*4882a593Smuzhiyun HostCmd_DS_802_11_BG_SCAN_CONFIG bg_scan_config; 7989*4882a593Smuzhiyun HostCmd_DS_802_11_BG_SCAN_QUERY bg_scan_query; 7990*4882a593Smuzhiyun HostCmd_DS_802_11_BG_SCAN_QUERY_RSP bg_scan_query_resp; 7991*4882a593Smuzhiyun HostCmd_DS_SUBSCRIBE_EVENT subscribe_event; 7992*4882a593Smuzhiyun HostCmd_DS_OTP_USER_DATA otp_user_data; 7993*4882a593Smuzhiyun /** Associate */ 7994*4882a593Smuzhiyun HostCmd_DS_802_11_ASSOCIATE associate; 7995*4882a593Smuzhiyun 7996*4882a593Smuzhiyun /** Associate response */ 7997*4882a593Smuzhiyun HostCmd_DS_802_11_ASSOCIATE_RSP associate_rsp; 7998*4882a593Smuzhiyun /** Deauthenticate */ 7999*4882a593Smuzhiyun HostCmd_DS_802_11_DEAUTHENTICATE deauth; 8000*4882a593Smuzhiyun /** Ad-Hoc start */ 8001*4882a593Smuzhiyun HostCmd_DS_802_11_AD_HOC_START adhoc_start; 8002*4882a593Smuzhiyun /** Ad-Hoc start result */ 8003*4882a593Smuzhiyun HostCmd_DS_802_11_AD_HOC_START_RESULT adhoc_start_result; 8004*4882a593Smuzhiyun /** Ad-Hoc join result */ 8005*4882a593Smuzhiyun HostCmd_DS_802_11_AD_HOC_JOIN_RESULT adhoc_join_result; 8006*4882a593Smuzhiyun /** Ad-Hoc join */ 8007*4882a593Smuzhiyun HostCmd_DS_802_11_AD_HOC_JOIN adhoc_join; 8008*4882a593Smuzhiyun /** Domain information */ 8009*4882a593Smuzhiyun HostCmd_DS_802_11D_DOMAIN_INFO domain_info; 8010*4882a593Smuzhiyun /** Domain information response */ 8011*4882a593Smuzhiyun HostCmd_DS_802_11D_DOMAIN_INFO_RSP domain_info_resp; 8012*4882a593Smuzhiyun HostCmd_DS_802_11_TPC_ADAPT_REQ tpc_req; 8013*4882a593Smuzhiyun HostCmd_DS_802_11_TPC_INFO tpc_info; 8014*4882a593Smuzhiyun HostCmd_DS_802_11_CHAN_SW_ANN chan_sw_ann; 8015*4882a593Smuzhiyun HostCmd_DS_CHAN_RPT_REQ chan_rpt_req; 8016*4882a593Smuzhiyun HostCmd_DS_MEASUREMENT_REQUEST meas_req; 8017*4882a593Smuzhiyun HostCmd_DS_MEASUREMENT_REPORT meas_rpt; 8018*4882a593Smuzhiyun /** Add BA request */ 8019*4882a593Smuzhiyun HostCmd_DS_11N_ADDBA_REQ add_ba_req; 8020*4882a593Smuzhiyun /** Add BA response */ 8021*4882a593Smuzhiyun HostCmd_DS_11N_ADDBA_RSP add_ba_rsp; 8022*4882a593Smuzhiyun /** Delete BA entry */ 8023*4882a593Smuzhiyun HostCmd_DS_11N_DELBA del_ba; 8024*4882a593Smuzhiyun /** Tx buffer configuration */ 8025*4882a593Smuzhiyun HostCmd_DS_TXBUF_CFG tx_buf; 8026*4882a593Smuzhiyun /** AMSDU Aggr Ctrl configuration */ 8027*4882a593Smuzhiyun HostCmd_DS_AMSDU_AGGR_CTRL amsdu_aggr_ctrl; 8028*4882a593Smuzhiyun /** 11n configuration */ 8029*4882a593Smuzhiyun HostCmd_DS_11N_CFG htcfg; 8030*4882a593Smuzhiyun /** reject addba req conditions configuration */ 8031*4882a593Smuzhiyun HostCmd_DS_REJECT_ADDBA_REQ rejectaddbareq; 8032*4882a593Smuzhiyun /* RANDYTODO need add more */ 8033*4882a593Smuzhiyun /** HostCmd_DS_11AC_CFG */ 8034*4882a593Smuzhiyun HostCmd_DS_11AC_CFG vhtcfg; 8035*4882a593Smuzhiyun /** HostCmd_DS_11ACTXBUF_CFG*/ 8036*4882a593Smuzhiyun HostCmd_DS_11ACTXBUF_CFG ac_tx_buf; 8037*4882a593Smuzhiyun /** 11n configuration */ 8038*4882a593Smuzhiyun HostCmd_DS_TX_BF_CFG tx_bf_cfg; 8039*4882a593Smuzhiyun /** WMM status get */ 8040*4882a593Smuzhiyun HostCmd_DS_WMM_GET_STATUS get_wmm_status; 8041*4882a593Smuzhiyun /** WMM ADDTS */ 8042*4882a593Smuzhiyun HostCmd_DS_WMM_ADDTS_REQ add_ts; 8043*4882a593Smuzhiyun /** WMM DELTS */ 8044*4882a593Smuzhiyun HostCmd_DS_WMM_DELTS_REQ del_ts; 8045*4882a593Smuzhiyun /** WMM set/get queue config */ 8046*4882a593Smuzhiyun HostCmd_DS_WMM_QUEUE_CONFIG queue_config; 8047*4882a593Smuzhiyun /** WMM param config*/ 8048*4882a593Smuzhiyun HostCmd_DS_WMM_PARAM_CONFIG param_config; 8049*4882a593Smuzhiyun /** WMM on/of/get queue statistics */ 8050*4882a593Smuzhiyun HostCmd_DS_WMM_QUEUE_STATS queue_stats; 8051*4882a593Smuzhiyun /** WMM get traffic stream status */ 8052*4882a593Smuzhiyun HostCmd_DS_WMM_TS_STATUS ts_status; 8053*4882a593Smuzhiyun /** Key material */ 8054*4882a593Smuzhiyun HostCmd_DS_802_11_KEY_MATERIAL key_material; 8055*4882a593Smuzhiyun /** GTK Rekey parameters */ 8056*4882a593Smuzhiyun HostCmd_DS_GTK_REKEY_PARAMS gtk_rekey; 8057*4882a593Smuzhiyun /** E-Supplicant PSK */ 8058*4882a593Smuzhiyun HostCmd_DS_802_11_SUPPLICANT_PMK esupplicant_psk; 8059*4882a593Smuzhiyun /** E-Supplicant profile */ 8060*4882a593Smuzhiyun HostCmd_DS_802_11_SUPPLICANT_PROFILE esupplicant_profile; 8061*4882a593Smuzhiyun /** Extended version */ 8062*4882a593Smuzhiyun HostCmd_DS_VERSION_EXT verext; 8063*4882a593Smuzhiyun /** Adhoc Coalescing */ 8064*4882a593Smuzhiyun HostCmd_DS_802_11_IBSS_STATUS ibss_coalescing; 8065*4882a593Smuzhiyun /** Mgmt IE list configuration */ 8066*4882a593Smuzhiyun HostCmd_DS_MGMT_IE_LIST_CFG mgmt_ie_list; 8067*4882a593Smuzhiyun /** TDLS configuration command */ 8068*4882a593Smuzhiyun HostCmd_DS_TDLS_CONFIG tdls_config_data; 8069*4882a593Smuzhiyun /** TDLS operation command */ 8070*4882a593Smuzhiyun HostCmd_DS_TDLS_OPER tdls_oper_data; 8071*4882a593Smuzhiyun /** System clock configuration */ 8072*4882a593Smuzhiyun HostCmd_DS_ECL_SYSTEM_CLOCK_CONFIG sys_clock_cfg; 8073*4882a593Smuzhiyun /** MAC register access */ 8074*4882a593Smuzhiyun HostCmd_DS_MAC_REG_ACCESS mac_reg; 8075*4882a593Smuzhiyun /** BBP register access */ 8076*4882a593Smuzhiyun HostCmd_DS_BBP_REG_ACCESS bbp_reg; 8077*4882a593Smuzhiyun /** RF register access */ 8078*4882a593Smuzhiyun HostCmd_DS_RF_REG_ACCESS rf_reg; 8079*4882a593Smuzhiyun /** EEPROM register access */ 8080*4882a593Smuzhiyun HostCmd_DS_802_11_EEPROM_ACCESS eeprom; 8081*4882a593Smuzhiyun /** Memory access */ 8082*4882a593Smuzhiyun HostCmd_DS_MEM_ACCESS mem; 8083*4882a593Smuzhiyun /** Target device access */ 8084*4882a593Smuzhiyun HostCmd_DS_TARGET_ACCESS target; 8085*4882a593Smuzhiyun /** BCA register access */ 8086*4882a593Smuzhiyun HostCmd_DS_BCA_REG_ACCESS bca_reg; 8087*4882a593Smuzhiyun /** register access */ 8088*4882a593Smuzhiyun HostCmd_DS_REG_ACCESS reg; 8089*4882a593Smuzhiyun /** Inactivity timeout extend */ 8090*4882a593Smuzhiyun HostCmd_DS_INACTIVITY_TIMEOUT_EXT inactivity_to; 8091*4882a593Smuzhiyun #ifdef UAP_SUPPORT 8092*4882a593Smuzhiyun HostCmd_DS_SYS_CONFIG sys_config; 8093*4882a593Smuzhiyun HostCmd_DS_SYS_INFO sys_info; 8094*4882a593Smuzhiyun HostCmd_DS_STA_DEAUTH sta_deauth; 8095*4882a593Smuzhiyun HostCmd_DS_STA_LIST sta_list; 8096*4882a593Smuzhiyun HostCmd_DS_POWER_MGMT_EXT pm_cfg; 8097*4882a593Smuzhiyun HostCmd_DS_REPORT_MIC report_mic; 8098*4882a593Smuzhiyun HostCmd_DS_UAP_OPER_CTRL uap_oper_ctrl; 8099*4882a593Smuzhiyun #endif /* UAP_SUPPORT */ 8100*4882a593Smuzhiyun HostCmd_DS_TX_RX_HISTOGRAM tx_rx_histogram; 8101*4882a593Smuzhiyun 8102*4882a593Smuzhiyun /** Sleep period command */ 8103*4882a593Smuzhiyun HostCmd_DS_802_11_SLEEP_PERIOD sleep_pd; 8104*4882a593Smuzhiyun /** Sleep params command */ 8105*4882a593Smuzhiyun HostCmd_DS_802_11_SLEEP_PARAMS sleep_param; 8106*4882a593Smuzhiyun 8107*4882a593Smuzhiyun #ifdef SDIO 8108*4882a593Smuzhiyun /** SDIO GPIO interrupt config command */ 8109*4882a593Smuzhiyun HostCmd_DS_SDIO_GPIO_INT_CONFIG sdio_gpio_int; 8110*4882a593Smuzhiyun HostCmd_DS_SDIO_PULL_CTRL sdio_pull_ctl; 8111*4882a593Smuzhiyun #endif 8112*4882a593Smuzhiyun HostCmd_DS_SET_BSS_MODE bss_mode; 8113*4882a593Smuzhiyun HostCmd_DS_802_11_NET_MONITOR net_mon; 8114*4882a593Smuzhiyun HostCmd_DS_CMD_TX_DATA_PAUSE tx_data_pause; 8115*4882a593Smuzhiyun #if defined(PCIE) 8116*4882a593Smuzhiyun #if defined(PCIE8997) || defined(PCIE8897) 8117*4882a593Smuzhiyun HostCmd_DS_PCIE_HOST_BUF_DETAILS pcie_host_spec; 8118*4882a593Smuzhiyun #endif 8119*4882a593Smuzhiyun #endif 8120*4882a593Smuzhiyun HostCmd_DS_REMAIN_ON_CHANNEL remain_on_chan; 8121*4882a593Smuzhiyun #ifdef WIFI_DIRECT_SUPPORT 8122*4882a593Smuzhiyun HostCmd_DS_WIFI_DIRECT_MODE wifi_direct_mode; 8123*4882a593Smuzhiyun HostCmd_DS_WIFI_DIRECT_PARAM_CONFIG p2p_params_config; 8124*4882a593Smuzhiyun #endif 8125*4882a593Smuzhiyun HostCmd_DS_GPIO_TSF_LATCH_PARAM_CONFIG gpio_tsf_latch; 8126*4882a593Smuzhiyun HostCmd_DS_COALESCE_CONFIG coalesce_config; 8127*4882a593Smuzhiyun HostCmd_DS_FW_AUTO_RECONNECT fw_auto_reconnect_cmd; 8128*4882a593Smuzhiyun HostCmd_DS_HS_WAKEUP_REASON hs_wakeup_reason; 8129*4882a593Smuzhiyun HostCmd_DS_PACKET_AGGR_CTRL aggr_ctrl; 8130*4882a593Smuzhiyun #ifdef USB 8131*4882a593Smuzhiyun HostCmd_DS_PACKET_AGGR_OVER_HOST_INTERFACE packet_aggr; 8132*4882a593Smuzhiyun #endif 8133*4882a593Smuzhiyun HostCmd_CONFIG_LOW_PWR_MODE low_pwr_mode_cfg; 8134*4882a593Smuzhiyun HostCmd_DS_TSF tsf; 8135*4882a593Smuzhiyun HostCmd_DS_DFS_REPEATER_MODE dfs_repeater; 8136*4882a593Smuzhiyun #ifdef RX_PACKET_COALESCE 8137*4882a593Smuzhiyun HostCmd_DS_RX_PKT_COAL_CFG rx_pkt_coal_cfg; 8138*4882a593Smuzhiyun #endif 8139*4882a593Smuzhiyun HostCmd_DS_EAPOL_PKT eapol_pkt; 8140*4882a593Smuzhiyun HostCmd_DS_SENSOR_TEMP temp_sensor; 8141*4882a593Smuzhiyun HostCMD_DS_APCMD_ACS_SCAN acs_scan; 8142*4882a593Smuzhiyun HostCmd_DS_MIMO_SWITCH mimo_switch; 8143*4882a593Smuzhiyun HostCmd_DS_IPV6_RA_OFFLOAD ipv6_ra_offload; 8144*4882a593Smuzhiyun #ifdef STA_SUPPORT 8145*4882a593Smuzhiyun HostCmd_DS_STA_CONFIGURE sta_cfg; 8146*4882a593Smuzhiyun #endif 8147*4882a593Smuzhiyun /** GPIO Independent reset configure */ 8148*4882a593Smuzhiyun HostCmd_DS_INDEPENDENT_RESET_CFG ind_rst_cfg; 8149*4882a593Smuzhiyun HostCmd_DS_802_11_PS_INACTIVITY_TIMEOUT ps_inact_tmo; 8150*4882a593Smuzhiyun HostCmd_DS_ROAM_OFFLOAD roam_offload; 8151*4882a593Smuzhiyun HostCmd_DS_CHAN_REGION_CFG reg_cfg; 8152*4882a593Smuzhiyun HostCmd_DS_AUTO_TX auto_tx; 8153*4882a593Smuzhiyun HostCmd_DS_DYN_BW dyn_bw; 8154*4882a593Smuzhiyun HostCmd_DS_802_11_ROBUSTCOEX robustcoexparams; 8155*4882a593Smuzhiyun HostCmd_DS_DMCS_CFG dmcs; 8156*4882a593Smuzhiyun #if defined(PCIE) 8157*4882a593Smuzhiyun HostCmd_DS_SSU_CFG ssu_params; 8158*4882a593Smuzhiyun #endif 8159*4882a593Smuzhiyun HostCmd_DS_CSI_CFG csi_params; 8160*4882a593Smuzhiyun /** boot sleep configure */ 8161*4882a593Smuzhiyun HostCmd_DS_BOOT_SLEEP boot_sleep; 8162*4882a593Smuzhiyun #if defined(DRV_EMBEDDED_AUTHENTICATOR) || defined(DRV_EMBEDDED_SUPPLICANT) 8163*4882a593Smuzhiyun /** crypto cmd */ 8164*4882a593Smuzhiyun HostCmd_DS_CRYPTO crypto_cmd; 8165*4882a593Smuzhiyun #endif 8166*4882a593Smuzhiyun #ifdef UAP_SUPPORT 8167*4882a593Smuzhiyun /** Add station cmd */ 8168*4882a593Smuzhiyun HostCmd_DS_ADD_STATION sta_info; 8169*4882a593Smuzhiyun #endif 8170*4882a593Smuzhiyun /** HostCmd_DS_11AX_CFG */ 8171*4882a593Smuzhiyun HostCmd_DS_11AX_CFG axcfg; 8172*4882a593Smuzhiyun /** HostCmd_DS_11AX_CMD_CFG */ 8173*4882a593Smuzhiyun HostCmd_DS_11AX_CMD_CFG axcmd; 8174*4882a593Smuzhiyun HostCmd_DS_RANGE_EXT range_ext; 8175*4882a593Smuzhiyun /** HostCmd_DS_TWT_CFG */ 8176*4882a593Smuzhiyun HostCmd_DS_TWT_CFG twtcfg; 8177*4882a593Smuzhiyun 8178*4882a593Smuzhiyun HostCmd_DS_CMD_RX_ABORT_CFG rx_abort_cfg; 8179*4882a593Smuzhiyun HostCmd_DS_CMD_RX_ABORT_CFG_EXT rx_abort_cfg_ext; 8180*4882a593Smuzhiyun HostCmd_DS_CMD_TX_AMPDU_PROT_MODE tx_ampdu_prot_mode; 8181*4882a593Smuzhiyun HostCmd_DS_CMD_RATE_ADAPT_CFG rate_adapt_cfg; 8182*4882a593Smuzhiyun HostCmd_DS_CMD_CCK_DESENSE_CFG cck_desense_cfg; 8183*4882a593Smuzhiyun /** trpc_config */ 8184*4882a593Smuzhiyun HostCmd_DS_CHANNEL_TRPC_CONFIG ch_trpc_config; 8185*4882a593Smuzhiyun HostCmd_DS_LOW_POWER_MODE_CFG lpm_cfg; 8186*4882a593Smuzhiyun HostCmd_DS_BAND_STEERING band_steer_info; 8187*4882a593Smuzhiyun HostCmd_DS_BEACON_STUCK_CFG beacon_stuck_cfg; 8188*4882a593Smuzhiyun struct mfg_cmd_generic_cfg mfg_generic_cfg; 8189*4882a593Smuzhiyun struct mfg_cmd_tx_cont mfg_tx_cont; 8190*4882a593Smuzhiyun struct mfg_cmd_tx_frame2 mfg_tx_frame2; 8191*4882a593Smuzhiyun struct mfg_Cmd_HE_TBTx_t mfg_he_power; 8192*4882a593Smuzhiyun HostCmd_DS_CMD_ARB_CONFIG arb_cfg; 8193*4882a593Smuzhiyun HostCmd_DS_CMD_DOT11MC_UNASSOC_FTM_CFG dot11mc_unassoc_ftm_cfg; 8194*4882a593Smuzhiyun HostCmd_DS_HAL_PHY_CFG hal_phy_cfg_params; 8195*4882a593Smuzhiyun HostCmd_DS_IPS_CONFIG ips_cfg; 8196*4882a593Smuzhiyun HostCmd_DS_MC_AGGR_CFG mc_aggr_cfg; 8197*4882a593Smuzhiyun HostCmd_DS_STATS stats; 8198*4882a593Smuzhiyun HostCmd_DS_GET_CH_LOAD ch_load; 8199*4882a593Smuzhiyun } params; 8200*4882a593Smuzhiyun } MLAN_PACK_END HostCmd_DS_COMMAND, *pHostCmd_DS_COMMAND; 8201*4882a593Smuzhiyun 8202*4882a593Smuzhiyun /** PS_CMD_ConfirmSleep */ 8203*4882a593Smuzhiyun typedef MLAN_PACK_START struct _OPT_Confirm_Sleep { 8204*4882a593Smuzhiyun /** Command */ 8205*4882a593Smuzhiyun t_u16 command; 8206*4882a593Smuzhiyun /** Size */ 8207*4882a593Smuzhiyun t_u16 size; 8208*4882a593Smuzhiyun /** Sequence number */ 8209*4882a593Smuzhiyun t_u16 seq_num; 8210*4882a593Smuzhiyun /** Result */ 8211*4882a593Smuzhiyun t_u16 result; 8212*4882a593Smuzhiyun /** Action */ 8213*4882a593Smuzhiyun t_u16 action; 8214*4882a593Smuzhiyun /** Sleep comfirm param definition */ 8215*4882a593Smuzhiyun sleep_confirm_param sleep_cfm; 8216*4882a593Smuzhiyun } MLAN_PACK_END OPT_Confirm_Sleep; 8217*4882a593Smuzhiyun 8218*4882a593Smuzhiyun typedef struct MLAN_PACK_START _opt_sleep_confirm_buffer { 8219*4882a593Smuzhiyun /** Header for interface */ 8220*4882a593Smuzhiyun t_u32 hdr; 8221*4882a593Smuzhiyun /** New power save command used to send 8222*4882a593Smuzhiyun * sleep confirmation to the firmware */ 8223*4882a593Smuzhiyun OPT_Confirm_Sleep ps_cfm_sleep; 8224*4882a593Smuzhiyun } MLAN_PACK_END opt_sleep_confirm_buffer; 8225*4882a593Smuzhiyun 8226*4882a593Smuzhiyun typedef MLAN_PACK_START struct _MrvlIEtypes_Secure_Boot_Uuid_t { 8227*4882a593Smuzhiyun /** Header */ 8228*4882a593Smuzhiyun MrvlIEtypesHeader_t header; 8229*4882a593Smuzhiyun 8230*4882a593Smuzhiyun /** Secure boot uuid lower and higher 8 bytes */ 8231*4882a593Smuzhiyun t_u64 uuid_lo; 8232*4882a593Smuzhiyun t_u64 uuid_hi; 8233*4882a593Smuzhiyun } MLAN_PACK_END MrvlIEtypes_Secure_Boot_Uuid_t; 8234*4882a593Smuzhiyun 8235*4882a593Smuzhiyun /** req host side download vdll block */ 8236*4882a593Smuzhiyun #define VDLL_IND_TYPE_REQ 0 8237*4882a593Smuzhiyun /** notify vdll start offset in firmware image */ 8238*4882a593Smuzhiyun #define VDLL_IND_TYPE_OFFSET 1 8239*4882a593Smuzhiyun /** notify vdll download error: signature error */ 8240*4882a593Smuzhiyun #define VDLL_IND_TYPE_ERR_SIG 2 8241*4882a593Smuzhiyun /** notify vdll download error: ID error */ 8242*4882a593Smuzhiyun #define VDLL_IND_TYPE_ERR_ID 3 8243*4882a593Smuzhiyun 8244*4882a593Smuzhiyun /** vdll indicate event structure */ 8245*4882a593Smuzhiyun typedef MLAN_PACK_START struct _vdll_ind { 8246*4882a593Smuzhiyun /*VDLL ind type*/ 8247*4882a593Smuzhiyun t_u16 type; 8248*4882a593Smuzhiyun /*reserved*/ 8249*4882a593Smuzhiyun t_u16 reserved; 8250*4882a593Smuzhiyun /*indicate the offset downloaded so far*/ 8251*4882a593Smuzhiyun t_u32 offset; 8252*4882a593Smuzhiyun /*VDLL block size*/ 8253*4882a593Smuzhiyun t_u16 block_len; 8254*4882a593Smuzhiyun } MLAN_PACK_END vdll_ind, *pvdll_ind; 8255*4882a593Smuzhiyun #ifdef PRAGMA_PACK 8256*4882a593Smuzhiyun #pragma pack(pop) 8257*4882a593Smuzhiyun #endif 8258*4882a593Smuzhiyun 8259*4882a593Smuzhiyun #endif /* !_MLAN_FW_H_ */ 8260