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