1 /** @file mlan_ieee.h 2 * 3 * @brief This file contains IEEE information element related 4 * definitions used in MLAN and MOAL module. 5 * 6 * 7 * Copyright 2008-2022 NXP 8 * 9 * This software file (the File) is distributed by NXP 10 * under the terms of the GNU General Public License Version 2, June 1991 11 * (the License). You may use, redistribute and/or modify the File in 12 * accordance with the terms and conditions of the License, a copy of which 13 * is available by writing to the Free Software Foundation, Inc., 14 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the 15 * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 16 * 17 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE 19 * ARE EXPRESSLY DISCLAIMED. The License provides additional details about 20 * this warranty disclaimer. 21 * 22 */ 23 24 /****************************************************** 25 Change log: 26 11/03/2008: initial version 27 ******************************************************/ 28 29 #ifndef _MLAN_IEEE_H_ 30 #define _MLAN_IEEE_H_ 31 32 /** FIX IES size in beacon buffer */ 33 #define WLAN_802_11_FIXED_IE_SIZE 12 34 /** WLAN supported rates */ 35 #define WLAN_SUPPORTED_RATES 14 36 37 /** WLAN supported rates extension */ 38 #define WLAN_SUPPORTED_RATES_EXT 60 39 40 /** Enumeration definition*/ 41 /** WLAN_802_11_NETWORK_TYPE */ 42 typedef enum _WLAN_802_11_NETWORK_TYPE { 43 Wlan802_11FH, 44 Wlan802_11DS, 45 /* Defined as upper bound*/ 46 Wlan802_11NetworkTypeMax 47 } WLAN_802_11_NETWORK_TYPE; 48 49 #ifdef BIG_ENDIAN_SUPPORT 50 /** Frame control: Type Mgmt frame */ 51 #define IEEE80211_FC_MGMT_FRAME_TYPE_MASK 0x3000 52 /** Frame control: SubType Mgmt frame */ 53 #define IEEE80211_GET_FC_MGMT_FRAME_SUBTYPE(fc) (((fc)&0xF000) >> 12) 54 #else 55 /** Frame control: Type Mgmt frame */ 56 #define IEEE80211_FC_MGMT_FRAME_TYPE_MASK 0x000C 57 /** Frame control: SubType Mgmt frame */ 58 #define IEEE80211_GET_FC_MGMT_FRAME_SUBTYPE(fc) (((fc)&0x00F0) >> 4) 59 #endif 60 61 #ifdef PRAGMA_PACK 62 #pragma pack(push, 1) 63 #endif 64 65 /* Reason codes */ 66 #define IEEE_80211_REASONCODE_UNSPECIFIED 1 67 68 typedef enum _IEEEtypes_Ext_ElementId_e { 69 HE_CAPABILITY = 35, 70 HE_OPERATION = 36, 71 HE_6G_CAPABILITY = 59 72 } IEEEtypes_Ext_ElementId_e; 73 74 /** IEEE Type definitions */ 75 typedef MLAN_PACK_START enum _IEEEtypes_ElementId_e { 76 SSID = 0, 77 SUPPORTED_RATES = 1, 78 79 FH_PARAM_SET = 2, 80 DS_PARAM_SET = 3, 81 CF_PARAM_SET = 4, 82 83 IBSS_PARAM_SET = 6, 84 COUNTRY_INFO = 7, 85 POWER_CONSTRAINT = 32, 86 POWER_CAPABILITY = 33, 87 TPC_REQUEST = 34, 88 TPC_REPORT = 35, 89 CHANNEL_SWITCH_ANN = 37, 90 EXTEND_CHANNEL_SWITCH_ANN = 60, 91 QUIET = 40, 92 IBSS_DFS = 41, 93 SUPPORTED_CHANNELS = 36, 94 REGULATORY_CLASS = 59, 95 HT_CAPABILITY = 45, 96 QOS_INFO = 46, 97 HT_OPERATION = 61, 98 MULTI_BSSID = 71, 99 BSSCO_2040 = 72, 100 OVERLAPBSSSCANPARAM = 74, 101 NONTX_BSSID_CAP = 83, 102 MBSSID_INDEX = 85, 103 EXT_CAPABILITY = 127, 104 LINK_ID = 101, 105 /*IEEE802.11r*/ 106 MOBILITY_DOMAIN = 54, 107 FAST_BSS_TRANSITION = 55, 108 TIMEOUT_INTERVAL = 56, 109 RIC = 57, 110 QOS_MAPPING = 110, 111 VHT_CAPABILITY = 191, 112 VHT_OPERATION = 192, 113 EXT_BSS_LOAD = 193, 114 BW_CHANNEL_SWITCH = 194, 115 VHT_TX_POWER_ENV = 195, 116 EXT_POWER_CONSTR = 196, 117 AID_INFO = 197, 118 QUIET_CHAN = 198, 119 OPER_MODE_NTF = 199, 120 121 ERP_INFO = 42, 122 123 EXTENDED_SUPPORTED_RATES = 50, 124 125 VENDOR_SPECIFIC_221 = 221, 126 WMM_IE = VENDOR_SPECIFIC_221, 127 128 WPS_IE = VENDOR_SPECIFIC_221, 129 /* WPA */ 130 WPA_IE = VENDOR_SPECIFIC_221, 131 /* WPA2 */ 132 RSN_IE = 48, 133 VS_IE = VENDOR_SPECIFIC_221, 134 WAPI_IE = 68, 135 FRAGMENT = 242, 136 RSNX_IE = 244, 137 EXTENSION = 255 138 } MLAN_PACK_END IEEEtypes_ElementId_e; 139 140 /** IEEE IE header */ 141 typedef MLAN_PACK_START struct _IEEEtypes_Header_t { 142 /** Element ID */ 143 t_u8 element_id; 144 /** Length */ 145 t_u8 len; 146 } MLAN_PACK_END IEEEtypes_Header_t, *pIEEEtypes_Header_t; 147 148 /** Vendor specific IE header */ 149 typedef MLAN_PACK_START struct _IEEEtypes_VendorHeader_t { 150 /** Element ID */ 151 t_u8 element_id; 152 /** Length */ 153 t_u8 len; 154 /** OUI */ 155 t_u8 oui[3]; 156 /** OUI type */ 157 t_u8 oui_type; 158 /** OUI subtype */ 159 t_u8 oui_subtype; 160 /** Version */ 161 t_u8 version; 162 } MLAN_PACK_END IEEEtypes_VendorHeader_t, *pIEEEtypes_VendorHeader_t; 163 164 /** Vendor specific IE */ 165 typedef MLAN_PACK_START struct _IEEEtypes_VendorSpecific_t { 166 /** Vendor specific IE header */ 167 IEEEtypes_VendorHeader_t vend_hdr; 168 /** IE Max - size of previous fields */ 169 t_u8 data[IEEE_MAX_IE_SIZE - sizeof(IEEEtypes_VendorHeader_t)]; 170 } MLAN_PACK_END IEEEtypes_VendorSpecific_t, *pIEEEtypes_VendorSpecific_t; 171 172 /** IEEE IE */ 173 typedef MLAN_PACK_START struct _IEEEtypes_Generic_t { 174 /** Generic IE header */ 175 IEEEtypes_Header_t ieee_hdr; 176 /** IE Max - size of previous fields */ 177 t_u8 data[IEEE_MAX_IE_SIZE - sizeof(IEEEtypes_Header_t)]; 178 } MLAN_PACK_END IEEEtypes_Generic_t, *pIEEEtypes_Generic_t; 179 180 /**ft capability policy*/ 181 typedef MLAN_PACK_START struct _IEEEtypes_FtCapPolicy_t { 182 #ifdef BIG_ENDIAN_SUPPORT 183 /** Reserved */ 184 t_u8 reserved : 6; 185 /** RIC support */ 186 t_u8 ric : 1; 187 /** FT over the DS capable */ 188 t_u8 ft_over_ds : 1; 189 #else 190 /** FT over the DS capable */ 191 t_u8 ft_over_ds : 1; 192 /** RIC support */ 193 t_u8 ric : 1; 194 /** Reserved */ 195 t_u8 reserved : 6; 196 #endif 197 } MLAN_PACK_END IEEEtypes_FtCapPolicy_t; 198 199 /** Mobility domain IE */ 200 typedef MLAN_PACK_START struct _IEEEtypes_MobilityDomain_t { 201 /** Generic IE header */ 202 IEEEtypes_Header_t ieee_hdr; 203 /** Mobility Domain ID */ 204 t_u16 mdid; 205 /** FT Capability policy */ 206 t_u8 ft_cap; 207 } MLAN_PACK_END IEEEtypes_MobilityDomain_t; 208 209 /**FT MIC Control*/ 210 typedef MLAN_PACK_START struct _IEEEtypes_FT_MICControl_t { 211 /** reserved */ 212 t_u8 reserved; 213 /** element count */ 214 t_u8 element_count; 215 } MLAN_PACK_END IEEEtypes_FT_MICControl_t; 216 217 /** FTIE MIC LEN */ 218 #define FTIE_MIC_LEN 16 219 220 /**FT IE*/ 221 typedef MLAN_PACK_START struct _IEEEtypes_FastBssTransElement_t { 222 /** Generic IE header */ 223 IEEEtypes_Header_t ieee_hdr; 224 /** mic control */ 225 IEEEtypes_FT_MICControl_t mic_control; 226 /** mic */ 227 t_u8 mic[FTIE_MIC_LEN]; 228 /** ANonce */ 229 t_u8 a_nonce[32]; 230 /** SNonce */ 231 t_u8 s_nonce[32]; 232 /** sub element */ 233 t_u8 sub_element[1]; 234 } MLAN_PACK_END IEEEtypes_FastBssTransElement_t; 235 236 /*Category for FT*/ 237 #define FT_CATEGORY 6 238 /** FT ACTION request */ 239 #define FT_ACTION_REQUEST 1 240 /** FT ACTION response */ 241 #define FT_ACTION_RESPONSE 2 242 243 /*FT response and FT ack*/ 244 typedef MLAN_PACK_START struct { 245 /** category */ 246 t_u8 category; 247 /** action */ 248 t_u8 action; 249 /** sta address */ 250 t_u8 sta_addr[MLAN_MAC_ADDR_LENGTH]; 251 /** target ap address */ 252 t_u8 target_ap_addr[MLAN_MAC_ADDR_LENGTH]; 253 /** status code */ 254 t_u16 status_code; 255 /** varible */ 256 t_u8 variable[]; 257 } MLAN_PACK_END IEEEtypes_Ft_action_response; 258 259 /**FT request */ 260 typedef MLAN_PACK_START struct { 261 /** category */ 262 t_u8 category; 263 /** action */ 264 t_u8 action; 265 /** sta address */ 266 t_u8 sta_addr[MLAN_MAC_ADDR_LENGTH]; 267 /** target ap address */ 268 t_u8 target_ap_addr[MLAN_MAC_ADDR_LENGTH]; 269 /** varible */ 270 t_u8 variable[]; 271 } MLAN_PACK_END IEEEtypes_Ft_action_request; 272 273 /** auth frame body*/ 274 typedef MLAN_PACK_START struct { 275 /** auth alg */ 276 t_u16 auth_alg; 277 /** auth transaction */ 278 t_u16 auth_transaction; 279 /** status code */ 280 t_u16 status_code; 281 /** variable */ 282 t_u8 variable[]; 283 } MLAN_PACK_END IEEEtypes_Auth_framebody; 284 285 /** associate request frame */ 286 typedef MLAN_PACK_START struct { 287 t_u16 capab_info; 288 t_u16 listen_interval; 289 /** followed by SSID and Supported rates */ 290 t_u8 variablep[]; 291 } MLAN_PACK_END IEEEtypes_assoc_req; 292 293 /*Mgmt frame*/ 294 typedef MLAN_PACK_START struct { 295 /** frame control */ 296 t_u16 frame_control; 297 /** duration */ 298 t_u16 duration; 299 /** dest address */ 300 t_u8 da[MLAN_MAC_ADDR_LENGTH]; 301 /** source address */ 302 t_u8 sa[MLAN_MAC_ADDR_LENGTH]; 303 /** bssid */ 304 t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 305 /** seq control */ 306 t_u16 seq_ctrl; 307 /** address 4 */ 308 t_u8 addr4[MLAN_MAC_ADDR_LENGTH]; 309 union { 310 IEEEtypes_Auth_framebody auth; 311 IEEEtypes_assoc_req assoc_req; 312 IEEEtypes_Ft_action_response ft_resp; 313 IEEEtypes_Ft_action_request ft_req; 314 } u; 315 } MLAN_PACK_END IEEE80211_MGMT; 316 317 /** TLV header */ 318 typedef MLAN_PACK_START struct _TLV_Generic_t { 319 /** Type */ 320 t_u16 type; 321 /** Length */ 322 t_u16 len; 323 } MLAN_PACK_END TLV_Generic_t, *pTLV_Generic_t; 324 325 /** Capability information mask */ 326 #define CAPINFO_MASK (~(MBIT(15) | MBIT(14) | MBIT(11) | MBIT(9))) 327 328 /** Capability Bit Map*/ 329 #ifdef BIG_ENDIAN_SUPPORT 330 typedef MLAN_PACK_START struct _IEEEtypes_CapInfo_t { 331 t_u8 rsrvd1 : 2; 332 t_u8 dsss_ofdm : 1; 333 t_u8 radio_measurement : 1; 334 t_u8 rsvrd2 : 1; 335 t_u8 short_slot_time : 1; 336 t_u8 rsrvd3 : 1; 337 t_u8 spectrum_mgmt : 1; 338 t_u8 chan_agility : 1; 339 t_u8 pbcc : 1; 340 t_u8 short_preamble : 1; 341 t_u8 privacy : 1; 342 t_u8 cf_poll_rqst : 1; 343 t_u8 cf_pollable : 1; 344 t_u8 ibss : 1; 345 t_u8 ess : 1; 346 } MLAN_PACK_END IEEEtypes_CapInfo_t, *pIEEEtypes_CapInfo_t; 347 #else 348 typedef MLAN_PACK_START struct _IEEEtypes_CapInfo_t { 349 /** Capability Bit Map : ESS */ 350 t_u8 ess : 1; 351 /** Capability Bit Map : IBSS */ 352 t_u8 ibss : 1; 353 /** Capability Bit Map : CF pollable */ 354 t_u8 cf_pollable : 1; 355 /** Capability Bit Map : CF poll request */ 356 t_u8 cf_poll_rqst : 1; 357 /** Capability Bit Map : privacy */ 358 t_u8 privacy : 1; 359 /** Capability Bit Map : Short preamble */ 360 t_u8 short_preamble : 1; 361 /** Capability Bit Map : PBCC */ 362 t_u8 pbcc : 1; 363 /** Capability Bit Map : Channel agility */ 364 t_u8 chan_agility : 1; 365 /** Capability Bit Map : Spectrum management */ 366 t_u8 spectrum_mgmt : 1; 367 /** Capability Bit Map : Reserved */ 368 t_u8 rsrvd3 : 1; 369 /** Capability Bit Map : Short slot time */ 370 t_u8 short_slot_time : 1; 371 /** Capability Bit Map : APSD */ 372 t_u8 Apsd : 1; 373 /** Capability Bit Map : Reserved */ 374 t_u8 rsvrd2 : 1; 375 /** Capability Bit Map : DSS OFDM */ 376 t_u8 dsss_ofdm : 1; 377 /** Capability Bit Map : Reserved */ 378 t_u8 rsrvd1 : 2; 379 } MLAN_PACK_END IEEEtypes_CapInfo_t, *pIEEEtypes_CapInfo_t; 380 #endif /* BIG_ENDIAN_SUPPORT */ 381 382 /** IEEEtypes_Ssid_t */ 383 typedef MLAN_PACK_START struct _IEEEtypes_Ssid_t { 384 /** SSID: Element ID */ 385 t_u8 element_id; 386 /** SSID : Length */ 387 t_u8 len; 388 /** ssid */ 389 t_u8 ssid[MLAN_MAX_SSID_LENGTH]; 390 } MLAN_PACK_END IEEEtypes_Ssid_t, *pIEEEtypes_Ssid_t; 391 392 /** IEEEtypes_CfParamSet_t */ 393 typedef MLAN_PACK_START struct _IEEEtypes_CfParamSet_t { 394 /** CF peremeter : Element ID */ 395 t_u8 element_id; 396 /** CF peremeter : Length */ 397 t_u8 len; 398 /** CF peremeter : Count */ 399 t_u8 cfp_cnt; 400 /** CF peremeter : Period */ 401 t_u8 cfp_period; 402 /** CF peremeter : Maximum duration */ 403 t_u16 cfp_max_duration; 404 /** CF peremeter : Remaining duration */ 405 t_u16 cfp_duration_remaining; 406 } MLAN_PACK_END IEEEtypes_CfParamSet_t, *pIEEEtypes_CfParamSet_t; 407 408 /** IEEEtypes_IbssParamSet_t */ 409 typedef MLAN_PACK_START struct _IEEEtypes_IbssParamSet_t { 410 /** Element ID */ 411 t_u8 element_id; 412 /** Length */ 413 t_u8 len; 414 /** ATIM window value in milliseconds */ 415 t_u16 atim_window; 416 } MLAN_PACK_END IEEEtypes_IbssParamSet_t, *pIEEEtypes_IbssParamSet_t; 417 418 /** IEEEtypes_SsParamSet_t */ 419 typedef MLAN_PACK_START union _IEEEtypes_SsParamSet_t { 420 /** SS parameter : CF parameter set */ 421 IEEEtypes_CfParamSet_t cf_param_set; 422 /** SS parameter : IBSS parameter set */ 423 IEEEtypes_IbssParamSet_t ibss_param_set; 424 } MLAN_PACK_END IEEEtypes_SsParamSet_t, *pIEEEtypes_SsParamSet_t; 425 426 /** IEEEtypes_FhParamSet_t */ 427 typedef MLAN_PACK_START struct _IEEEtypes_FhParamSet_t { 428 /** FH parameter : Element ID */ 429 t_u8 element_id; 430 /** FH parameter : Length */ 431 t_u8 len; 432 /** FH parameter : Dwell time in milliseconds */ 433 t_u16 dwell_time; 434 /** FH parameter : Hop set */ 435 t_u8 hop_set; 436 /** FH parameter : Hop pattern */ 437 t_u8 hop_pattern; 438 /** FH parameter : Hop index */ 439 t_u8 hop_index; 440 } MLAN_PACK_END IEEEtypes_FhParamSet_t, *pIEEEtypes_FhParamSet_t; 441 442 /** IEEEtypes_DsParamSet_t */ 443 typedef MLAN_PACK_START struct _IEEEtypes_DsParamSet_t { 444 /** DS parameter : Element ID */ 445 t_u8 element_id; 446 /** DS parameter : Length */ 447 t_u8 len; 448 /** DS parameter : Current channel */ 449 t_u8 current_chan; 450 } MLAN_PACK_END IEEEtypes_DsParamSet_t, *pIEEEtypes_DsParamSet_t; 451 452 /** IEEEtypes_PhyParamSet_t */ 453 typedef MLAN_PACK_START union _IEEEtypes_PhyParamSet_t { 454 /** FH parameter set */ 455 IEEEtypes_FhParamSet_t fh_param_set; 456 /** DS parameter set */ 457 IEEEtypes_DsParamSet_t ds_param_set; 458 } MLAN_PACK_END IEEEtypes_PhyParamSet_t, *pIEEEtypes_PhyParamSet_t; 459 460 /** IEEEtypes_ERPInfo_t */ 461 typedef MLAN_PACK_START struct _IEEEtypes_ERPInfo_t { 462 /** Element ID */ 463 t_u8 element_id; 464 /** Length */ 465 t_u8 len; 466 /** ERP flags */ 467 t_u8 erp_flags; 468 } MLAN_PACK_END IEEEtypes_ERPInfo_t, *pIEEEtypes_ERPInfo_t; 469 470 /** IEEEtypes_AId_t */ 471 typedef t_u16 IEEEtypes_AId_t; 472 473 /** IEEEtypes_StatusCode_t */ 474 typedef t_u16 IEEEtypes_StatusCode_t; 475 476 /** Fixed size in assoc_resp */ 477 #define ASSOC_RESP_FIXED_SIZE 6 478 479 /** IEEEtypes_SeqCtl_t */ 480 typedef MLAN_PACK_START struct _IEEEtypes_SeqCtl_t { 481 /** Fragment Number */ 482 t_u16 FragNum : 4; 483 /** Sequence Number */ 484 t_u16 SeqNum : 12; 485 } MLAN_PACK_END IEEEtypes_SeqCtl_t; 486 487 /** IEEEtypes_MgmtHdr_t */ 488 typedef MLAN_PACK_START struct _IEEEtypes_MgmtHdr_t { 489 /** FrmCtl*/ 490 t_u16 FrmCtl; 491 /** Duration*/ 492 t_u16 Duration; 493 /** Destination Addr*/ 494 t_u8 DestAddr[6]; 495 /** Source Addr*/ 496 t_u8 SrcAddr[6]; 497 /** BSSID */ 498 t_u8 BssId[6]; 499 /** IEEEtypes_SeqCtl_t */ 500 IEEEtypes_SeqCtl_t SeqCtl; 501 } MLAN_PACK_END IEEEtypes_MgmtHdr_t; 502 503 /** IEEEtypes_AssocRsp_t */ 504 typedef MLAN_PACK_START struct _IEEEtypes_AssocRsp_t { 505 /** Capability information */ 506 IEEEtypes_CapInfo_t capability; 507 /** Association response status code */ 508 IEEEtypes_StatusCode_t status_code; 509 /** Association ID */ 510 IEEEtypes_AId_t a_id; 511 /** IE data buffer */ 512 t_u8 ie_buffer[1]; 513 } MLAN_PACK_END IEEEtypes_AssocRsp_t, *pIEEEtypes_AssocRsp_t; 514 515 /** 802.11 supported rates */ 516 typedef t_u8 WLAN_802_11_RATES[WLAN_SUPPORTED_RATES]; 517 518 /** cipher TKIP */ 519 #define WPA_CIPHER_TKIP 2 520 /** cipher AES */ 521 #define WPA_CIPHER_AES_CCM 4 522 /** AKM: 8021x */ 523 #define RSN_AKM_8021X 1 524 /** AKM: PSK */ 525 #define RSN_AKM_PSK 2 526 /** AKM: PSK SHA256 */ 527 #define RSN_AKM_PSK_SHA256 6 528 529 /** AKM: PSK SHA256 */ 530 #define RSN_AKM_SAE 8 531 /** AKM: PSK SHA256 */ 532 #define RSN_AKM_OWE 18 533 534 #if defined(STA_SUPPORT) 535 /** Pairwise Cipher Suite length */ 536 #define PAIRWISE_CIPHER_SUITE_LEN 4 537 /** AKM Suite length */ 538 #define AKM_SUITE_LEN 4 539 /** MFPC bit in RSN capability */ 540 #define MFPC_BIT 7 541 /** MFPR bit in RSN capability */ 542 #define MFPR_BIT 6 543 /** PMF ORing mask */ 544 #define PMF_MASK 0x00c0 545 #endif 546 547 /** wpa_suite_t */ 548 typedef MLAN_PACK_START struct _wpa_suite_t { 549 /** OUI */ 550 t_u8 oui[3]; 551 /** tyep */ 552 t_u8 type; 553 } MLAN_PACK_END wpa_suite, wpa_suite_mcast_t; 554 555 /** wpa_suite_ucast_t */ 556 typedef MLAN_PACK_START struct { 557 /* count */ 558 t_u16 count; 559 /** wpa_suite list */ 560 wpa_suite list[1]; 561 } MLAN_PACK_END wpa_suite_ucast_t, wpa_suite_auth_key_mgmt_t; 562 563 /** IEEEtypes_Rsn_t */ 564 typedef MLAN_PACK_START struct _IEEEtypes_Rsn_t { 565 /** Rsn : Element ID */ 566 t_u8 element_id; 567 /** Rsn : Length */ 568 t_u8 len; 569 /** Rsn : version */ 570 t_u16 version; 571 /** Rsn : group cipher */ 572 wpa_suite_mcast_t group_cipher; 573 /** Rsn : pairwise cipher */ 574 wpa_suite_ucast_t pairwise_cipher; 575 } MLAN_PACK_END IEEEtypes_Rsn_t, *pIEEEtypes_Rsn_t; 576 577 /** IEEEtypes_Wpa_t */ 578 typedef MLAN_PACK_START struct _IEEEtypes_Wpa_t { 579 /** Wpa : Element ID */ 580 t_u8 element_id; 581 /** Wpa : Length */ 582 t_u8 len; 583 /** Wpa : oui */ 584 t_u8 oui[4]; 585 /** version */ 586 t_u16 version; 587 /** Wpa : group cipher */ 588 wpa_suite_mcast_t group_cipher; 589 /** Wpa : pairwise cipher */ 590 wpa_suite_ucast_t pairwise_cipher; 591 } MLAN_PACK_END IEEEtypes_Wpa_t, *pIEEEtypes_Wpa_t; 592 593 /** Data structure of WMM QoS information */ 594 typedef MLAN_PACK_START struct _IEEEtypes_WmmQosInfo_t { 595 #ifdef BIG_ENDIAN_SUPPORT 596 /** QoS UAPSD */ 597 t_u8 qos_uapsd : 1; 598 /** Reserved */ 599 t_u8 reserved : 3; 600 /** Parameter set count */ 601 t_u8 para_set_count : 4; 602 #else 603 /** Parameter set count */ 604 t_u8 para_set_count : 4; 605 /** Reserved */ 606 t_u8 reserved : 3; 607 /** QoS UAPSD */ 608 t_u8 qos_uapsd : 1; 609 #endif /* BIG_ENDIAN_SUPPORT */ 610 } MLAN_PACK_END IEEEtypes_WmmQosInfo_t, *pIEEEtypes_WmmQosInfo_t; 611 612 /** Data structure of WMM Aci/Aifsn */ 613 typedef MLAN_PACK_START struct _IEEEtypes_WmmAciAifsn_t { 614 #ifdef BIG_ENDIAN_SUPPORT 615 /** Reserved */ 616 t_u8 reserved : 1; 617 /** Aci */ 618 t_u8 aci : 2; 619 /** Acm */ 620 t_u8 acm : 1; 621 /** Aifsn */ 622 t_u8 aifsn : 4; 623 #else 624 /** Aifsn */ 625 t_u8 aifsn : 4; 626 /** Acm */ 627 t_u8 acm : 1; 628 /** Aci */ 629 t_u8 aci : 2; 630 /** Reserved */ 631 t_u8 reserved : 1; 632 #endif /* BIG_ENDIAN_SUPPORT */ 633 } MLAN_PACK_END IEEEtypes_WmmAciAifsn_t, *pIEEEtypes_WmmAciAifsn_t; 634 635 /** Data structure of WMM ECW */ 636 typedef MLAN_PACK_START struct _IEEEtypes_WmmEcw_t { 637 #ifdef BIG_ENDIAN_SUPPORT 638 /** Maximum Ecw */ 639 t_u8 ecw_max : 4; 640 /** Minimum Ecw */ 641 t_u8 ecw_min : 4; 642 #else 643 /** Minimum Ecw */ 644 t_u8 ecw_min : 4; 645 /** Maximum Ecw */ 646 t_u8 ecw_max : 4; 647 #endif /* BIG_ENDIAN_SUPPORT */ 648 } MLAN_PACK_END IEEEtypes_WmmEcw_t, *pIEEEtypes_WmmEcw_t; 649 650 /** Data structure of WMM AC parameters */ 651 typedef MLAN_PACK_START struct _IEEEtypes_WmmAcParameters_t { 652 IEEEtypes_WmmAciAifsn_t aci_aifsn; /**< AciAifSn */ 653 IEEEtypes_WmmEcw_t ecw; /**< Ecw */ 654 t_u16 tx_op_limit; /**< Tx op limit */ 655 } MLAN_PACK_END IEEEtypes_WmmAcParameters_t, *pIEEEtypes_WmmAcParameters_t; 656 657 /** Data structure of WMM Info IE */ 658 typedef MLAN_PACK_START struct _IEEEtypes_WmmInfo_t { 659 /** 660 * WMM Info IE - Vendor Specific Header: 661 * element_id [221/0xdd] 662 * Len [7] 663 * Oui [00:50:f2] 664 * OuiType [2] 665 * OuiSubType [0] 666 * Version [1] 667 */ 668 IEEEtypes_VendorHeader_t vend_hdr; 669 670 /** QoS information */ 671 IEEEtypes_WmmQosInfo_t qos_info; 672 673 } MLAN_PACK_END IEEEtypes_WmmInfo_t, *pIEEEtypes_WmmInfo_t; 674 675 /** Data structure of WMM parameter IE */ 676 typedef MLAN_PACK_START struct _IEEEtypes_WmmParameter_t { 677 /** 678 * WMM Parameter IE - Vendor Specific Header: 679 * element_id [221/0xdd] 680 * Len [24] 681 * Oui [00:50:f2] 682 * OuiType [2] 683 * OuiSubType [1] 684 * Version [1] 685 */ 686 IEEEtypes_VendorHeader_t vend_hdr; 687 688 /** QoS information */ 689 IEEEtypes_WmmQosInfo_t qos_info; 690 /** Reserved */ 691 t_u8 reserved; 692 693 /** AC Parameters Record WMM_AC_BE, WMM_AC_BK, WMM_AC_VI, WMM_AC_VO */ 694 IEEEtypes_WmmAcParameters_t ac_params[MAX_AC_QUEUES]; 695 } MLAN_PACK_END IEEEtypes_WmmParameter_t, *pIEEEtypes_WmmParameter_t; 696 697 /** Enumerator for TSPEC direction */ 698 typedef MLAN_PACK_START enum _IEEEtypes_WMM_TSPEC_TS_Info_Direction_e { 699 700 TSPEC_DIR_UPLINK = 0, 701 TSPEC_DIR_DOWNLINK = 1, 702 /* 2 is a reserved value */ 703 TSPEC_DIR_BIDIRECT = 3, 704 705 } MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_Direction_e; 706 707 /** Enumerator for TSPEC PSB */ 708 typedef MLAN_PACK_START enum _IEEEtypes_WMM_TSPEC_TS_Info_PSB_e { 709 710 TSPEC_PSB_LEGACY = 0, 711 TSPEC_PSB_TRIG = 1, 712 713 } MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_PSB_e; 714 715 /** Enumerator for TSPEC Ack Policy */ 716 typedef MLAN_PACK_START enum _IEEEtypes_WMM_TSPEC_TS_Info_AckPolicy_e { 717 718 TSPEC_ACKPOLICY_NORMAL = 0, 719 TSPEC_ACKPOLICY_NOACK = 1, 720 /* 2 is reserved */ 721 TSPEC_ACKPOLICY_BLOCKACK = 3, 722 723 } MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_AckPolicy_e; 724 725 /** Enumerator for TSPEC Trafffice type */ 726 typedef MLAN_PACK_START enum _IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e { 727 728 TSPEC_TRAFFIC_APERIODIC = 0, 729 TSPEC_TRAFFIC_PERIODIC = 1, 730 731 } MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e; 732 733 /** Data structure of WMM TSPEC information */ 734 typedef MLAN_PACK_START struct { 735 #ifdef BIG_ENDIAN_SUPPORT 736 t_u8 Reserved17_23 : 7; /* ! Reserved */ 737 t_u8 Schedule : 1; 738 IEEEtypes_WMM_TSPEC_TS_Info_AckPolicy_e AckPolicy : 2; 739 t_u8 UserPri : 3; /* ! 802.1d User Priority */ 740 // IEEEtypes_WMM_TSPEC_TS_Info_PSB_e PowerSaveBehavior : 1; /* 741 // !Legacy/Trigg*/ 742 t_u8 PowerSaveBehavior : 1; 743 t_u8 Aggregation : 1; /* ! Reserved */ 744 t_u8 AccessPolicy2 : 1; /* ! */ 745 t_u8 AccessPolicy1 : 1; /* ! */ 746 IEEEtypes_WMM_TSPEC_TS_Info_Direction_e Direction : 2; 747 t_u8 TID : 4; /* ! Unique identifier */ 748 // IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e TrafficType : 1; 749 t_u8 TrafficType : 1; 750 #else 751 // IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e TrafficType : 1; 752 t_u8 TrafficType : 1; 753 t_u8 TID : 4; /* ! Unique identifier */ 754 IEEEtypes_WMM_TSPEC_TS_Info_Direction_e Direction : 2; 755 t_u8 AccessPolicy1 : 1; /* ! */ 756 t_u8 AccessPolicy2 : 1; /* ! */ 757 t_u8 Aggregation : 1; /* ! Reserved */ 758 // IEEEtypes_WMM_TSPEC_TS_Info_PSB_e PowerSaveBehavior : 1; /* ! 759 // Legacy/Trigg*/ 760 t_u8 PowerSaveBehavior : 1; 761 t_u8 UserPri : 3; /* ! 802.1d User Priority */ 762 IEEEtypes_WMM_TSPEC_TS_Info_AckPolicy_e AckPolicy : 2; 763 t_u8 Schedule : 1; 764 t_u8 Reserved17_23 : 7; /* ! Reserved */ 765 #endif 766 } MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_t; 767 768 /** Data structure of WMM TSPEC Nominal Size */ 769 typedef MLAN_PACK_START struct { 770 #ifdef BIG_ENDIAN_SUPPORT 771 t_u16 Fixed : 1; /* ! 1: Fixed size given in Size, 0: Var, size is 772 nominal */ 773 t_u16 Size : 15; /* ! Nominal size in octets */ 774 #else 775 t_u16 Size : 15; /* ! Nominal size in octets */ 776 t_u16 Fixed : 1; /* ! 1: Fixed size given in Size, 0: Var, size is 777 nominal */ 778 #endif 779 } MLAN_PACK_END IEEEtypes_WMM_TSPEC_NomMSDUSize_t; 780 781 /** Data structure of WMM TSPEC SBWA */ 782 typedef MLAN_PACK_START struct { 783 #ifdef BIG_ENDIAN_SUPPORT 784 t_u16 Whole : 3; /* ! Whole portion */ 785 t_u16 Fractional : 13; /* ! Fractional portion */ 786 #else 787 t_u16 Fractional : 13; /* ! Fractional portion */ 788 t_u16 Whole : 3; /* ! Whole portion */ 789 #endif 790 } MLAN_PACK_END IEEEtypes_WMM_TSPEC_SBWA; 791 792 /** Data structure of WMM TSPEC Body */ 793 typedef MLAN_PACK_START struct { 794 IEEEtypes_WMM_TSPEC_TS_Info_t TSInfo; 795 IEEEtypes_WMM_TSPEC_NomMSDUSize_t NomMSDUSize; 796 t_u16 MaximumMSDUSize; 797 t_u32 MinServiceInterval; 798 t_u32 MaxServiceInterval; 799 t_u32 InactivityInterval; 800 t_u32 SuspensionInterval; 801 t_u32 ServiceStartTime; 802 t_u32 MinimumDataRate; 803 t_u32 MeanDataRate; 804 t_u32 PeakDataRate; 805 t_u32 MaxBurstSize; 806 t_u32 DelayBound; 807 t_u32 MinPHYRate; 808 IEEEtypes_WMM_TSPEC_SBWA SurplusBWAllowance; 809 t_u16 MediumTime; 810 } MLAN_PACK_END IEEEtypes_WMM_TSPEC_Body_t; 811 812 /** Data structure of WMM TSPEC all elements */ 813 typedef MLAN_PACK_START struct { 814 t_u8 ElementId; 815 t_u8 Len; 816 t_u8 OuiType[4]; /* 00:50:f2:02 */ 817 t_u8 OuiSubType; /* 01 */ 818 t_u8 Version; 819 820 IEEEtypes_WMM_TSPEC_Body_t TspecBody; 821 822 } MLAN_PACK_END IEEEtypes_WMM_TSPEC_t; 823 824 /** WMM Action Category values */ 825 typedef MLAN_PACK_START enum _IEEEtypes_ActionCategory_e { 826 827 IEEE_MGMT_ACTION_CATEGORY_SPECTRUM_MGMT = 0, 828 IEEE_MGMT_ACTION_CATEGORY_QOS = 1, 829 IEEE_MGMT_ACTION_CATEGORY_DLS = 2, 830 IEEE_MGMT_ACTION_CATEGORY_BLOCK_ACK = 3, 831 IEEE_MGMT_ACTION_CATEGORY_PUBLIC = 4, 832 IEEE_MGMT_ACTION_CATEGORY_RADIO_RSRC = 5, 833 IEEE_MGMT_ACTION_CATEGORY_FAST_BSS_TRANS = 6, 834 IEEE_MGMT_ACTION_CATEGORY_HT = 7, 835 836 IEEE_MGMT_ACTION_CATEGORY_WNM = 10, 837 IEEE_MGMT_ACTION_CATEGORY_UNPROTECT_WNM = 11, 838 839 IEEE_MGMT_ACTION_CATEGORY_WMM_TSPEC = 17 840 841 } MLAN_PACK_END IEEEtypes_ActionCategory_e; 842 843 /** WMM TSPEC operations */ 844 typedef MLAN_PACK_START enum _IEEEtypes_WMM_Tspec_Action_e { 845 846 TSPEC_ACTION_CODE_ADDTS_REQ = 0, 847 TSPEC_ACTION_CODE_ADDTS_RSP = 1, 848 TSPEC_ACTION_CODE_DELTS = 2, 849 850 } MLAN_PACK_END IEEEtypes_WMM_Tspec_Action_e; 851 852 /** WMM TSPEC Category Action Base */ 853 typedef MLAN_PACK_START struct { 854 IEEEtypes_ActionCategory_e category; 855 IEEEtypes_WMM_Tspec_Action_e action; 856 t_u8 dialogToken; 857 858 } MLAN_PACK_END IEEEtypes_WMM_Tspec_Action_Base_Tspec_t; 859 860 /** WMM TSPEC AddTS request structure */ 861 typedef MLAN_PACK_START struct { 862 IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct; 863 t_u8 statusCode; 864 IEEEtypes_WMM_TSPEC_t tspecIE; 865 866 /* Place holder for additional elements after the TSPEC */ 867 t_u8 subElem[256]; 868 869 } MLAN_PACK_END IEEEtypes_Action_WMM_AddTsReq_t; 870 871 /** WMM TSPEC AddTS response structure */ 872 typedef MLAN_PACK_START struct { 873 IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct; 874 t_u8 statusCode; 875 IEEEtypes_WMM_TSPEC_t tspecIE; 876 877 /* Place holder for additional elements after the TSPEC */ 878 t_u8 subElem[256]; 879 880 } MLAN_PACK_END IEEEtypes_Action_WMM_AddTsRsp_t; 881 882 /** WMM TSPEC DelTS structure */ 883 typedef MLAN_PACK_START struct { 884 IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct; 885 t_u8 reasonCode; 886 IEEEtypes_WMM_TSPEC_t tspecIE; 887 888 } MLAN_PACK_END IEEEtypes_Action_WMM_DelTs_t; 889 890 /** union of WMM TSPEC structures */ 891 typedef MLAN_PACK_START union { 892 IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct; 893 894 IEEEtypes_Action_WMM_AddTsReq_t addTsReq; 895 IEEEtypes_Action_WMM_AddTsRsp_t addTsRsp; 896 IEEEtypes_Action_WMM_DelTs_t delTs; 897 898 } MLAN_PACK_END IEEEtypes_Action_WMMAC_t; 899 900 /** union of WMM TSPEC & Action category */ 901 typedef MLAN_PACK_START union { 902 IEEEtypes_ActionCategory_e category; 903 904 IEEEtypes_Action_WMMAC_t wmmAc; 905 906 } MLAN_PACK_END IEEEtypes_ActionFrame_t; 907 908 /** Data structure for subband set */ 909 typedef MLAN_PACK_START struct _IEEEtypes_SubbandSet_t { 910 /** First channel */ 911 t_u8 first_chan; 912 /** Number of channels */ 913 t_u8 no_of_chan; 914 /** Maximum Tx power in dBm */ 915 t_u8 max_tx_pwr; 916 } MLAN_PACK_END IEEEtypes_SubbandSet_t, *pIEEEtypes_SubbandSet_t; 917 918 #ifdef STA_SUPPORT 919 /** Data structure for Country IE */ 920 typedef MLAN_PACK_START struct _IEEEtypes_CountryInfoSet_t { 921 /** Element ID */ 922 t_u8 element_id; 923 /** Length */ 924 t_u8 len; 925 /** Country code */ 926 t_u8 country_code[COUNTRY_CODE_LEN]; 927 /** Set of subbands */ 928 IEEEtypes_SubbandSet_t sub_band[1]; 929 } MLAN_PACK_END IEEEtypes_CountryInfoSet_t, *pIEEEtypes_CountryInfoSet_t; 930 931 /** Data structure for Country IE full set */ 932 typedef MLAN_PACK_START struct _IEEEtypes_CountryInfoFullSet_t { 933 /** Element ID */ 934 t_u8 element_id; 935 /** Length */ 936 t_u8 len; 937 /** Country code */ 938 t_u8 country_code[COUNTRY_CODE_LEN]; 939 /** Set of subbands */ 940 IEEEtypes_SubbandSet_t sub_band[MRVDRV_MAX_SUBBAND_802_11D]; 941 } MLAN_PACK_END IEEEtypes_CountryInfoFullSet_t, 942 *pIEEEtypes_CountryInfoFullSet_t; 943 944 #endif /* STA_SUPPORT */ 945 946 /** Data structure for Link ID */ 947 typedef MLAN_PACK_START struct _IEEEtypes_LinkIDElement_t { 948 /** Element ID */ 949 t_u8 element_id; 950 /** Length */ 951 t_u8 len; 952 /** bssid */ 953 t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 954 /** initial sta address */ 955 t_u8 init_sta[MLAN_MAC_ADDR_LENGTH]; 956 /** respose sta address */ 957 t_u8 resp_sta[MLAN_MAC_ADDR_LENGTH]; 958 } MLAN_PACK_END IEEEtypes_LinkIDElement_t, *pIEEEtypes_LinkIDElement_t; 959 960 /** HT Capabilities Data */ 961 typedef struct MLAN_PACK_START _HTCap_t { 962 /** HT Capabilities Info field */ 963 t_u16 ht_cap_info; 964 /** A-MPDU Parameters field */ 965 t_u8 ampdu_param; 966 /** Supported MCS Set field */ 967 t_u8 supported_mcs_set[16]; 968 /** HT Extended Capabilities field */ 969 t_u16 ht_ext_cap; 970 /** Transmit Beamforming Capabilities field */ 971 t_u32 tx_bf_cap; 972 /** Antenna Selection Capability field */ 973 t_u8 asel; 974 } MLAN_PACK_END HTCap_t, *pHTCap_t; 975 976 /** HT Information Data */ 977 typedef struct MLAN_PACK_START _HTInfo_t { 978 /** Primary channel */ 979 t_u8 pri_chan; 980 /** Field 2 */ 981 t_u8 field2; 982 /** Field 3 */ 983 t_u16 field3; 984 /** Field 4 */ 985 t_u16 field4; 986 /** Bitmap indicating MCSs supported by all HT STAs in the BSS */ 987 t_u8 basic_mcs_set[16]; 988 } MLAN_PACK_END HTInfo_t, *pHTInfo_t; 989 990 /** 20/40 BSS Coexistence Data */ 991 typedef struct MLAN_PACK_START _BSSCo2040_t { 992 /** 20/40 BSS Coexistence value */ 993 t_u8 bss_co_2040_value; 994 } MLAN_PACK_END BSSCo2040_t, *pBSSCo2040_t; 995 996 #define MAX_DSCP_EXCEPTION_NUM 21 997 /** DSCP Range */ 998 typedef struct MLAN_PACK_START _DSCP_Exception_t { 999 /* DSCP value 0 to 63 or ff */ 1000 t_u8 dscp_value; 1001 /* user priority 0-7*/ 1002 t_u8 user_priority; 1003 } MLAN_PACK_END DSCP_Exception_t, *pDSCP_Exception_t; 1004 1005 /** DSCP Range */ 1006 typedef struct MLAN_PACK_START _DSCP_Range_t { 1007 /* DSCP low value */ 1008 t_u8 dscp_low_value; 1009 /* DSCP high value */ 1010 t_u8 dscp_high_value; 1011 } MLAN_PACK_END DSCP_Range_t, *pDSCP_Range_t; 1012 1013 /** Overlapping BSS Scan Parameters Data */ 1014 typedef struct MLAN_PACK_START _OverlapBSSScanParam_t { 1015 /** OBSS Scan Passive Dwell in milliseconds */ 1016 t_u16 obss_scan_passive_dwell; 1017 /** OBSS Scan Active Dwell in milliseconds */ 1018 t_u16 obss_scan_active_dwell; 1019 /** BSS Channel Width Trigger Scan Interval in seconds */ 1020 t_u16 bss_chan_width_trigger_scan_int; 1021 /** OBSS Scan Passive Total Per Channel */ 1022 t_u16 obss_scan_passive_total; 1023 /** OBSS Scan Active Total Per Channel */ 1024 t_u16 obss_scan_active_total; 1025 /** BSS Width Channel Transition Delay Factor */ 1026 t_u16 bss_width_chan_trans_delay; 1027 /** OBSS Scan Activity Threshold */ 1028 t_u16 obss_scan_active_threshold; 1029 } MLAN_PACK_END OBSSScanParam_t, *pOBSSScanParam_t; 1030 1031 /** HT Capabilities IE */ 1032 typedef MLAN_PACK_START struct _IEEEtypes_HTCap_t { 1033 /** Generic IE header */ 1034 IEEEtypes_Header_t ieee_hdr; 1035 /** HTCap struct */ 1036 HTCap_t ht_cap; 1037 } MLAN_PACK_END IEEEtypes_HTCap_t, *pIEEEtypes_HTCap_t; 1038 1039 /** HT Information IE */ 1040 typedef MLAN_PACK_START struct _IEEEtypes_HTInfo_t { 1041 /** Generic IE header */ 1042 IEEEtypes_Header_t ieee_hdr; 1043 /** HTInfo struct */ 1044 HTInfo_t ht_info; 1045 } MLAN_PACK_END IEEEtypes_HTInfo_t, *pIEEEtypes_HTInfo_t; 1046 1047 /** the AP which send the multi_bssid IE */ 1048 #define MULTI_BSSID_AP 1 1049 /** the AP which don't send beacon */ 1050 #define MULTI_BSSID_SUB_AP 2 1051 /** IEEEtypes_NotxBssCap_t */ 1052 typedef MLAN_PACK_START struct _IEEEtypes_NotxBssCap_t { 1053 /** Nontransmitted BSSID Capability: Element ID */ 1054 t_u8 element_id; 1055 /** Nontransmitted BSSID Capability : Length */ 1056 t_u8 len; 1057 /** capability */ 1058 t_u16 cap; 1059 } MLAN_PACK_END IEEEtypes_NotxBssCap_t, *pIEEEtypes_NotxBssCap_t; 1060 1061 /** Multi BSSID IE */ 1062 typedef MLAN_PACK_START struct _IEEEtypes_MultiBSSIDIndex_t { 1063 /** Generic IE header */ 1064 IEEEtypes_Header_t ieee_hdr; 1065 /** BSSID Index */ 1066 t_u8 bssid_index; 1067 /** DTIM Period (Optional, not Present in ProbeRsp) */ 1068 t_u8 dtim_period; 1069 /** DTIM Count (Optional, not Present in ProbeRsp) */ 1070 t_u8 dtim_count; 1071 } MLAN_PACK_END IEEEtypes_MultiBSSIDIndex_t, *pIEEEtypes_MultiBSSIDIndex_t; 1072 1073 /** NonTransmitted BSSID Profile Subelement IE */ 1074 /** SUBID for IEEEtypes_NonTransBSSIDCap_t */ 1075 #define NONTRANS_BSSID_PROFILE_SUBELEM_ID 0 1076 1077 /** NonTransmitted BSSID Capability IE */ 1078 typedef MLAN_PACK_START struct _IEEEtypes_NonTransBSSIDProfile_t { 1079 /** Generic IE header */ 1080 IEEEtypes_Header_t ieee_hdr; 1081 t_u8 profile_data[]; 1082 } MLAN_PACK_END IEEEtypes_NonTransBSSIDProfile_t, 1083 *pIEEEtypes_NonTransBSSIDProfile_t; 1084 1085 /** Multi BSSID IE */ 1086 typedef MLAN_PACK_START struct _IEEEtypes_MultiBSSID_t { 1087 /** Generic IE header */ 1088 IEEEtypes_Header_t ieee_hdr; 1089 /** Max BSSID Indicator */ 1090 t_u8 max_bssid_indicator; 1091 /** Optional Subelement data*/ 1092 t_u8 sub_elem_data[]; 1093 } MLAN_PACK_END IEEEtypes_MultiBSSID_t, *pIEEEtypes_MultiBSSID_t; 1094 /** 20/40 BSS Coexistence IE */ 1095 typedef MLAN_PACK_START struct _IEEEtypes_2040BSSCo_t { 1096 /** Generic IE header */ 1097 IEEEtypes_Header_t ieee_hdr; 1098 /** BSSCo2040_t struct */ 1099 BSSCo2040_t bss_co_2040; 1100 } MLAN_PACK_END IEEEtypes_2040BSSCo_t, *pIEEEtypes_2040BSSCo_t; 1101 1102 /** Extended Capabilities IE */ 1103 typedef MLAN_PACK_START struct _IEEEtypes_ExtCap_t { 1104 /** Generic IE header */ 1105 IEEEtypes_Header_t ieee_hdr; 1106 /** ExtCap_t struct */ 1107 ExtCap_t ext_cap; 1108 } MLAN_PACK_END IEEEtypes_ExtCap_t, *pIEEEtypes_ExtCap_t; 1109 1110 /** Overlapping BSS Scan Parameters IE */ 1111 typedef MLAN_PACK_START struct _IEEEtypes_OverlapBSSScanParam_t { 1112 /** Generic IE header */ 1113 IEEEtypes_Header_t ieee_hdr; 1114 /** OBSSScanParam_t struct */ 1115 OBSSScanParam_t obss_scan_param; 1116 } MLAN_PACK_END IEEEtypes_OverlapBSSScanParam_t, 1117 *pIEEEtypes_OverlapBSSScanParam_t; 1118 1119 /** VHT MCS rate set field, refer to 802.11ac */ 1120 typedef MLAN_PACK_START struct _VHT_MCS_set { 1121 t_u16 rx_mcs_map; 1122 t_u16 rx_max_rate; /* bit 29-31 reserved */ 1123 t_u16 tx_mcs_map; 1124 t_u16 tx_max_rate; /* bit 61-63 reserved */ 1125 } MLAN_PACK_END VHT_MCS_set_t, *pVHT_MCS_set_t; 1126 1127 /** VHT Capabilities info field, reference 802.11ac D1.4 p89 */ 1128 typedef MLAN_PACK_START struct _VHT_capa { 1129 #if 0 1130 #ifdef BIG_ENDIAN_SUPPORT 1131 t_u8 mpdu_max_len:2; 1132 t_u8 chan_width:2; 1133 t_u8 rx_LDPC:1; 1134 t_u8 sgi_80:1; 1135 t_u8 sgi_160:1; 1136 t_u8 tx_STBC:1; 1137 t_u8 rx_STBC:3; 1138 t_u8 SU_beamformer_capa:1; 1139 t_u8 SU_beamformee_capa:1; 1140 t_u8 beamformer_ante_num:3; 1141 t_u8 sounding_dim_num:3; 1142 t_u8 MU_beamformer_capa:1; 1143 t_u8 MU_beamformee_capa:1; 1144 t_u8 VHT_TXOP_ps:1; 1145 t_u8 HTC_VHT_capa:1; 1146 t_u8 max_ampdu_len:3; 1147 t_u8 link_apapt_capa:2; 1148 t_u8 reserved_1:4; 1149 #else 1150 t_u8 reserved_1:4; 1151 t_u8 link_apapt_capa:2; 1152 t_u8 max_ampdu_len:3; 1153 t_u8 HTC_VHT_capa:1; 1154 t_u8 VHT_TXOP_ps:1; 1155 t_u8 MU_beamformee_capa:1; 1156 t_u8 MU_beamformer_capa:1; 1157 t_u8 sounding_dim_num:3; 1158 t_u8 beamformer_ante_num:3; 1159 t_u8 SU_beamformee_capa:1; 1160 t_u8 SU_beamformer_capa:1; 1161 t_u8 rx_STBC:3; 1162 t_u8 tx_STBC:1; 1163 t_u8 sgi_160:1; 1164 t_u8 sgi_80:1; 1165 t_u8 rx_LDPC:1; 1166 t_u8 chan_width:2; 1167 t_u8 mpdu_max_len:2; 1168 #endif /* BIG_ENDIAN_SUPPORT */ 1169 #endif 1170 t_u32 vht_cap_info; 1171 VHT_MCS_set_t mcs_sets; 1172 } MLAN_PACK_END VHT_capa_t, *pVHT_capa_t; 1173 1174 /** VHT Capabilities IE */ 1175 typedef MLAN_PACK_START struct _IEEEtypes_VHTCap_t { 1176 /** Generic IE header */ 1177 IEEEtypes_Header_t ieee_hdr; 1178 VHT_capa_t vht_cap; 1179 } MLAN_PACK_END IEEEtypes_VHTCap_t, *pIEEEtypes_VHTCap_t; 1180 1181 #define VHT_CAP_CHWD_80MHZ 0 1182 #define VHT_CAP_CHWD_160MHZ 1 1183 #define VHT_CAP_CHWD_80_80MHZ 2 1184 1185 /** VHT Operations IE */ 1186 typedef MLAN_PACK_START struct _IEEEtypes_VHTOprat_t { 1187 /** Generic IE header */ 1188 IEEEtypes_Header_t ieee_hdr; 1189 t_u8 chan_width; 1190 t_u8 chan_center_freq_1; 1191 t_u8 chan_center_freq_2; 1192 /** Basic MCS set map, each 2 bits stands for a Nss */ 1193 t_u16 basic_MCS_map; 1194 } MLAN_PACK_END IEEEtypes_VHTOprat_t, *pIEEEtypes_VHTOprat_t; 1195 1196 #define VHT_OPER_CHWD_20_40MHZ 0 1197 #define VHT_OPER_CHWD_80MHZ 1 1198 #define VHT_OPER_CHWD_160MHZ 2 1199 #define VHT_OPER_CHWD_80_80MHZ 3 1200 1201 /** VHT Transmit Power Envelope IE */ 1202 typedef MLAN_PACK_START struct _IEEEtypes_VHTtxpower_t { 1203 /** Generic IE header */ 1204 IEEEtypes_Header_t ieee_hdr; 1205 t_u8 max_tx_power; 1206 t_u8 chan_center_freq; 1207 t_u8 chan_width; 1208 } MLAN_PACK_END IEEEtypes_VHTtxpower_t, *pIEEEtypes_VHTtxpower_t; 1209 1210 /** Extended Power Constraint IE */ 1211 typedef MLAN_PACK_START struct _IEEEtypes_ExtPwerCons_t { 1212 /** Generic IE header */ 1213 IEEEtypes_Header_t ieee_hdr; 1214 /** channel width */ 1215 t_u8 chan_width; 1216 /** local power constraint */ 1217 t_u8 local_power_cons; 1218 } MLAN_PACK_END IEEEtypes_ExtPwerCons_t, *pIEEEtypes_ExtPwerCons_t; 1219 1220 /** Extended BSS Load IE */ 1221 typedef MLAN_PACK_START struct _IEEEtypes_ExtBSSload_t { 1222 /** Generic IE header */ 1223 IEEEtypes_Header_t ieee_hdr; 1224 t_u8 MU_MIMO_capa_count; 1225 t_u8 stream_underutilization; 1226 t_u8 VHT40_util; 1227 t_u8 VHT80_util; 1228 t_u8 VHT160_util; 1229 } MLAN_PACK_END IEEEtypes_ExtBSSload_t, *pIEEEtypes_ExtBSSload_t; 1230 1231 /** Quiet Channel IE */ 1232 typedef MLAN_PACK_START struct _IEEEtypes_QuietChan_t { 1233 /** Generic IE header */ 1234 IEEEtypes_Header_t ieee_hdr; 1235 t_u8 AP_quiet_mode; 1236 t_u8 quiet_count; 1237 t_u8 quiet_period; 1238 t_u16 quiet_dur; 1239 t_u16 quiet_offset; 1240 } MLAN_PACK_END IEEEtypes_QuietChan_t, *pIEEEtypes_QuietChan_t; 1241 1242 /** Wide Bandwidth Channel Switch IE */ 1243 typedef MLAN_PACK_START struct _IEEEtypes_BWSwitch_t { 1244 /** Generic IE header */ 1245 IEEEtypes_Header_t ieee_hdr; 1246 t_u8 new_chan_width; 1247 t_u8 new_chan_center_freq_1; 1248 t_u8 new_chan_center_freq_2; 1249 } MLAN_PACK_END IEEEtypes_BWSwitch_t, *pIEEEtypes_BWSwitch_t; 1250 1251 /** AID IE */ 1252 typedef MLAN_PACK_START struct _IEEEtypes_AID_t { 1253 /** Generic IE header */ 1254 IEEEtypes_Header_t ieee_hdr; 1255 /** AID number */ 1256 t_u16 AID; 1257 } MLAN_PACK_END IEEEtypes_AID_t, *pIEEEtypes_AID_t; 1258 1259 /** Operating Mode Notificaton IE */ 1260 typedef MLAN_PACK_START struct _IEEEtypes_OperModeNtf_t { 1261 /** Generic IE header */ 1262 IEEEtypes_Header_t ieee_hdr; 1263 /** Operating Mode */ 1264 t_u8 oper_mode; 1265 } MLAN_PACK_END IEEEtypes_OperModeNtf_t, *pIEEEtypes_OperModeNtf_t; 1266 1267 typedef MLAN_PACK_START struct _IEEEtypes_Extension_t { 1268 /** Generic IE header */ 1269 IEEEtypes_Header_t ieee_hdr; 1270 /** Element id extension */ 1271 t_u8 ext_id; 1272 /** payload */ 1273 t_u8 data[]; 1274 } MLAN_PACK_END IEEEtypes_Extension_t, *pIEEEtypes_Extension_t; 1275 1276 typedef MLAN_PACK_START struct _IEEEtypes_HeMcsMap_t { 1277 #ifdef BIG_ENDIAN_SUPPORT 1278 /** Max HE-MAC for 8 SS */ 1279 t_u8 max_mcs_8ss : 2; 1280 /** Max HE-MAC for 7 SS */ 1281 t_u8 max_mcs_7ss : 2; 1282 /** Max HE-MAC for 6 SS */ 1283 t_u8 max_mcs_6ss : 2; 1284 /** Max HE-MAC for 5 SS */ 1285 t_u8 max_mcs_5ss : 2; 1286 /** Max HE-MAC for 4 SS */ 1287 t_u8 max_mcs_4ss : 2; 1288 /** Max HE-MAC for 3 SS */ 1289 t_u8 max_mcs_3ss : 2; 1290 /** Max HE-MAC for 2 SS */ 1291 t_u8 max_mcs_2ss : 2; 1292 /** Max HE-MAC for 1 SS */ 1293 t_u8 max_mcs_1ss : 2; 1294 #else 1295 /** Max HE-MAC for 1 SS */ 1296 t_u8 max_mcs_1ss : 2; 1297 /** Max HE-MAC for 2 SS */ 1298 t_u8 max_mcs_2ss : 2; 1299 /** Max HE-MAC for 3 SS */ 1300 t_u8 max_mcs_3ss : 2; 1301 /** Max HE-MAC for 4 SS */ 1302 t_u8 max_mcs_4ss : 2; 1303 /** Max HE-MAC for 5 SS */ 1304 t_u8 max_mcs_5ss : 2; 1305 /** Max HE-MAC for 6 SS */ 1306 t_u8 max_mcs_6ss : 2; 1307 /** Max HE-MAC for 7 SS */ 1308 t_u8 max_mcs_7ss : 2; 1309 /** Max HE-MAC for 8 SS */ 1310 t_u8 max_mcs_8ss : 2; 1311 #endif 1312 } MLAN_PACK_END IEEEtypes_HeMcsMap_t, *pIEEEtypes_HeMcsMap_t; 1313 1314 typedef MLAN_PACK_START struct _IEEEtypes_HeMcsNss_t { 1315 /** HE Rx MCS and NSS Set */ 1316 t_u16 rx_mcs; 1317 /** HE Tx MCS and NSS Set*/ 1318 t_u16 tx_mcs; 1319 } MLAN_PACK_END IEEEtypes_HeMcsNss_t, *pIEEEtypes_HeMcsNss_t; 1320 1321 typedef MLAN_PACK_START struct _IEEEtypes_HECap_t { 1322 /** Generic IE header */ 1323 IEEEtypes_Header_t ieee_hdr; 1324 /** Element id extension */ 1325 t_u8 ext_id; 1326 /** he mac capability info */ 1327 t_u8 he_mac_cap[6]; 1328 /** he phy capability info */ 1329 t_u8 he_phy_cap[11]; 1330 /** he txrx mcs support (for 80 MHz) */ 1331 t_u8 he_txrx_mcs_support[4]; 1332 /** Optional Field, including he_txrx_mcs_support for 160 and 80+80 MHz, 1333 * and PPE Thresholds */ 1334 t_u8 option[28]; 1335 } MLAN_PACK_END IEEEtypes_HECap_t, *pIEEEtypes_HECap_t; 1336 1337 typedef MLAN_PACK_START struct _IEEEtypes_HeOpParam_t { 1338 #ifdef BIG_ENDIAN_SUPPORT 1339 /** Reserved, including 6G Operation Info Pressent (bit17) */ 1340 t_u8 reserved : 6; /* bit 18-23 */ 1341 /* 6g operation info present */ 1342 t_u8 he_6g_op_info_present : 1; /* bit 17 */ 1343 /** ER SU Disable */ 1344 t_u8 er_su_disable : 1; /* bit 16 */ 1345 /** Co-Hosted BSS */ 1346 t_u16 co_located_bss : 1; /* bit 15 */ 1347 /** VHT Operation Info Present */ 1348 t_u16 vht_op_info_present : 1; /* bit 14 */ 1349 /** TXOP Duration RTS Threshold */ 1350 t_u16 txop_dur_rts_threshold : 10; /* bit 4-13 */ 1351 /** TWT Required */ 1352 t_u16 twt_req : 1; /* bit 3 */ 1353 /** Default PE Duration */ 1354 t_u16 default_pe_dur : 3; /* bit 0-2 */ 1355 #else 1356 /** Default PE Duration */ 1357 t_u16 default_pe_dur : 3; /* bit 0-2 */ 1358 /** TWT Required */ 1359 t_u16 twt_req : 1; /* bit 3 */ 1360 /** TXOP Duration RTS Threshold */ 1361 t_u16 txop_dur_rts_threshold : 10; /* bit 4-13 */ 1362 /** VHT Operation Info Present */ 1363 t_u16 vht_op_info_present : 1; /* bit 14 */ 1364 /** Co-Hosted BSS */ 1365 t_u16 co_located_bss : 1; /* bit 15 */ 1366 /** ER SU Disable */ 1367 t_u8 er_su_disable : 1; /* bit 16 */ 1368 /* 6g operation info present */ 1369 t_u8 he_6g_op_info_present : 1; /* bit 17 */ 1370 /** Reserved bit 18-23 */ 1371 t_u8 reserved : 6; /* bit 18-23 */ 1372 #endif 1373 } MLAN_PACK_END IEEEtypes_HeOpParam_t; 1374 1375 typedef MLAN_PACK_START struct _IEEEtypes_HeBssColorInfo_t { 1376 #ifdef BIG_ENDIAN_SUPPORT 1377 /** BSS Color Disabled */ 1378 t_u8 bss_color_disabled : 1; /* bit 7 */ 1379 /** Partial BSS Color */ 1380 t_u8 partial_bss_color : 1; /* bit 6 */ 1381 /** BSS Color */ 1382 t_u8 bss_color : 6; /* bit 0-5 */ 1383 #else 1384 /** BSS Color */ 1385 t_u8 bss_color : 6; /* bit 0-5 */ 1386 /** Partial BSS Color */ 1387 t_u8 partial_bss_color : 1; /* bit 6 */ 1388 /** BSS Color Disabled */ 1389 t_u8 bss_color_disabled : 1; /* bit 7 */ 1390 #endif 1391 } MLAN_PACK_END IEEEtypes_HeBssColorInfo_t; 1392 1393 typedef MLAN_PACK_START struct _IEEEtypes_HeOp_t { 1394 /** Generic IE header */ 1395 IEEEtypes_Header_t ieee_hdr; 1396 /** Element id extension */ 1397 t_u8 ext_id; 1398 /** HE Operation Parameters */ 1399 IEEEtypes_HeOpParam_t he_op_param; 1400 /** BSS Color Info */ 1401 IEEEtypes_HeBssColorInfo_t bss_color_info; 1402 /** Basic HE-MCS and NSS Set */ 1403 IEEEtypes_HeMcsMap_t basic_he_mcs_nss; 1404 /** Optional Field, including VHT Operation Info Max Co-Hosted BSSID 1405 * Indicator, and 6Ghz Operation Info */ 1406 t_u8 option[9]; 1407 } MLAN_PACK_END IEEEtypes_HeOp_t; 1408 1409 /** default channel switch count */ 1410 #define DEF_CHAN_SWITCH_COUNT 5 1411 1412 /* IEEE Channel Switch Announcement Element (7.3.2.20) */ 1413 /** 1414 * Provided in beacons and probe responses. Used to advertise when 1415 * and to which channel it is changing to. Only starting STAs in 1416 * an IBSS and APs are allowed to originate a chan switch element. 1417 */ 1418 typedef MLAN_PACK_START struct { 1419 t_u8 element_id; /**< IEEE Element ID = 37 */ 1420 t_u8 len; /**< Element length after id and len */ 1421 t_u8 chan_switch_mode; /**< STA should not transmit any frames if 1 */ 1422 t_u8 new_channel_num; /**< Channel # that AP/IBSS is moving to */ 1423 t_u8 chan_switch_count; /**< # of TBTTs before channel switch */ 1424 1425 } MLAN_PACK_END IEEEtypes_ChanSwitchAnn_t; 1426 1427 /** data structure for extended channel switch */ 1428 typedef MLAN_PACK_START struct { 1429 /** IEEE element ID = 60 */ 1430 t_u8 element_id; 1431 /** Element length after id and len, set to 4 */ 1432 t_u8 len; 1433 /** STA should not transmit any frames if 1 */ 1434 t_u8 chan_switch_mode; 1435 /** Operate class # that AP/IBSS is moving to */ 1436 t_u8 new_oper_class; 1437 /** Channel # that AP/IBSS is moving to */ 1438 t_u8 new_channel_num; 1439 /** of TBTTs before channel switch */ 1440 t_u8 chan_switch_count; 1441 } MLAN_PACK_END IEEEtypes_ExtChanSwitchAnn_t; 1442 1443 /** Maximum number of subbands in the IEEEtypes_SupportedChannels_t structure */ 1444 #define WLAN_11H_MAX_SUBBANDS 6 1445 /** Maximum number of DFS channels configured in IEEEtypes_IBSS_DFS_t */ 1446 #define WLAN_11H_MAX_IBSS_DFS_CHANNELS 25 1447 1448 /** IEEE Power Constraint element (7.3.2.15) */ 1449 typedef MLAN_PACK_START struct { 1450 t_u8 element_id; /**< IEEE Element ID = 32 */ 1451 t_u8 len; /**< Element length after id and len */ 1452 t_u8 local_constraint; /**< Local power constraint applied to 11d 1453 chan info */ 1454 } MLAN_PACK_END IEEEtypes_PowerConstraint_t; 1455 1456 /** IEEE Power Capability element (7.3.2.16) */ 1457 typedef MLAN_PACK_START struct { 1458 t_u8 element_id; /**< IEEE Element ID = 33 */ 1459 t_u8 len; /**< Element length after id and len */ 1460 t_s8 min_tx_power_capability; /**< Minimum Transmit power (dBm) */ 1461 t_s8 max_tx_power_capability; /**< Maximum Transmit power (dBm) */ 1462 } MLAN_PACK_END IEEEtypes_PowerCapability_t; 1463 1464 /** IEEE TPC Report element (7.3.2.18) */ 1465 typedef MLAN_PACK_START struct { 1466 t_u8 element_id; /**< IEEE Element ID = 35 */ 1467 t_u8 len; /**< Element length after id and len */ 1468 t_s8 tx_power; /**< Max power used to transmit the TPC Report frame 1469 (dBm) */ 1470 t_s8 link_margin; /**< Link margin when TPC Request received (dB) */ 1471 } MLAN_PACK_END IEEEtypes_TPCReport_t; 1472 1473 /* IEEE Supported Channel sub-band description (7.3.2.19) */ 1474 /** 1475 * Sub-band description used in the supported channels element. 1476 */ 1477 typedef MLAN_PACK_START struct { 1478 t_u8 start_chan; /**< Starting channel in the subband */ 1479 t_u8 num_chans; /**< Number of channels in the subband */ 1480 1481 } MLAN_PACK_END IEEEtypes_SupportChan_Subband_t; 1482 1483 /* IEEE Supported Channel element (7.3.2.19) */ 1484 /** 1485 * Sent in association requests. Details the sub-bands and number 1486 * of channels supported in each subband 1487 */ 1488 typedef MLAN_PACK_START struct { 1489 t_u8 element_id; /**< IEEE Element ID = 36 */ 1490 t_u8 len; /**< Element length after id and len */ 1491 1492 /** Configured sub-bands information in the element */ 1493 IEEEtypes_SupportChan_Subband_t subband[WLAN_11H_MAX_SUBBANDS]; 1494 1495 } MLAN_PACK_END IEEEtypes_SupportedChannels_t; 1496 1497 /* IEEE Wide Bandwidth Channel Switch Element */ 1498 /** 1499 * Provided in beacons and probe responses. Used to advertise when 1500 * and to which channel it is changing to. Only starting STAs in 1501 * an IBSS and APs are allowed to originate a wide bandwidth chan 1502 * switch element. 1503 */ 1504 typedef MLAN_PACK_START struct { 1505 /** Generic IE header IEEE Element ID = 194*/ 1506 IEEEtypes_Header_t ieee_hdr; 1507 t_u8 new_channel_width; 1508 t_u8 new_channel_center_freq0; 1509 t_u8 new_channel_center_freq1; 1510 } MLAN_PACK_END IEEEtypes_WideBWChanSwitch_t; 1511 1512 /* IEEE VHT Transmit Power Envelope Element */ 1513 /** 1514 * Provided in beacons and probe responses. Used to advertise the max 1515 * TX power in sepeate bandwidth and as a sub element of Channel Switch 1516 * Wrapper IE. 1517 */ 1518 typedef MLAN_PACK_START struct { 1519 /** Generic IE header IEEE Element ID = 195*/ 1520 IEEEtypes_Header_t ieee_hdr; 1521 t_u8 tpc_info; /**< Transmit Power Information>*/ 1522 t_u8 local_max_tp_20mhz; /**< Local Maximum Transmit Power for 20 MHZ>*/ 1523 t_u8 local_max_tp_40mhz; /**< Local Maximum Transmit Power for 40 MHZ>*/ 1524 t_u8 local_max_tp_80mhz; /**< Local Maximum Transmit Power for 80 MHZ>*/ 1525 t_u8 local_max_tp_160mhz_80_80mhz; /**< Local Maximum Transmit Power for 1526 160/80+80 MHZ>*/ 1527 } MLAN_PACK_END IEEEtypes_VhtTpcEnvelope_t; 1528 1529 /* IEEE Quiet Period Element (7.3.2.23) */ 1530 /** 1531 * Provided in beacons and probe responses. Indicates times during 1532 * which the STA should not be transmitting data. Only starting STAs in 1533 * an IBSS and APs are allowed to originate a quiet element. 1534 */ 1535 typedef MLAN_PACK_START struct { 1536 t_u8 element_id; /**< IEEE Element ID = 40 */ 1537 t_u8 len; /**< Element length after id and len */ 1538 t_u8 quiet_count; /**< Number of TBTTs until beacon with the quiet 1539 period */ 1540 t_u8 quiet_period; /**< Regular quiet period, # of TBTTS between periods 1541 */ 1542 t_u16 quiet_duration; /**< Duration of the quiet period in TUs */ 1543 t_u16 quiet_offset; /**< Offset in TUs from the TBTT for the quiet 1544 period */ 1545 1546 } MLAN_PACK_END IEEEtypes_Quiet_t; 1547 1548 /** 1549 *** @brief Map octet of the basic measurement report (7.3.2.22.1) 1550 **/ 1551 typedef MLAN_PACK_START struct { 1552 #ifdef BIG_ENDIAN_SUPPORT 1553 /**< Reserved */ 1554 t_u8 rsvd5_7 : 3; 1555 /**< Channel is unmeasured */ 1556 t_u8 unmeasured : 1; 1557 /**< Radar detected on channel */ 1558 t_u8 radar : 1; 1559 /**< Unidentified signal found on channel */ 1560 t_u8 unidentified_sig : 1; 1561 /**< OFDM preamble detected on channel */ 1562 t_u8 ofdm_preamble : 1; 1563 /**< At least one valid MPDU received on channel */ 1564 t_u8 bss : 1; 1565 #else 1566 /**< At least one valid MPDU received on channel */ 1567 t_u8 bss : 1; 1568 /**< OFDM preamble detected on channel */ 1569 t_u8 ofdm_preamble : 1; 1570 /**< Unidentified signal found on channel */ 1571 t_u8 unidentified_sig : 1; 1572 /**< Radar detected on channel */ 1573 t_u8 radar : 1; 1574 /**< Channel is unmeasured */ 1575 t_u8 unmeasured : 1; 1576 /**< Reserved */ 1577 t_u8 rsvd5_7 : 3; 1578 #endif /* BIG_ENDIAN_SUPPORT */ 1579 1580 } MLAN_PACK_END MeasRptBasicMap_t; 1581 1582 /* IEEE DFS Channel Map field (7.3.2.24) */ 1583 /** 1584 * Used to list supported channels and provide a octet "map" field which 1585 * contains a basic measurement report for that channel in the 1586 * IEEEtypes_IBSS_DFS_t element 1587 */ 1588 typedef MLAN_PACK_START struct { 1589 t_u8 channel_number; /**< Channel number */ 1590 MeasRptBasicMap_t rpt_map; /**< Basic measurement report for the channel 1591 */ 1592 1593 } MLAN_PACK_END IEEEtypes_ChannelMap_t; 1594 1595 /* IEEE IBSS DFS Element (7.3.2.24) */ 1596 /** 1597 * IBSS DFS element included in ad hoc beacons and probe responses. 1598 * Provides information regarding the IBSS DFS Owner as well as the 1599 * originating STAs supported channels and basic measurement results. 1600 */ 1601 typedef MLAN_PACK_START struct { 1602 t_u8 element_id; /**< IEEE Element ID = 41 */ 1603 t_u8 len; /**< Element length after id and len */ 1604 t_u8 dfs_owner[MLAN_MAC_ADDR_LENGTH]; /**< DFS Owner STA Address */ 1605 t_u8 dfs_recovery_interval; /**< DFS Recovery time in TBTTs */ 1606 1607 /** Variable length map field, one Map entry for each supported channel 1608 */ 1609 IEEEtypes_ChannelMap_t channel_map[WLAN_11H_MAX_IBSS_DFS_CHANNELS]; 1610 1611 } MLAN_PACK_END IEEEtypes_IBSS_DFS_t; 1612 1613 /* 802.11h BSS information kept for each BSSID received in scan results */ 1614 /** 1615 * IEEE BSS information needed from scan results for later processing in 1616 * join commands 1617 */ 1618 typedef struct { 1619 t_u8 sensed_11h; /**< Capability bit set or 11h IE found in this BSS */ 1620 1621 IEEEtypes_PowerConstraint_t power_constraint; /**< Power Constraint IE 1622 */ 1623 IEEEtypes_PowerCapability_t power_capability; /**< Power Capability IE 1624 */ 1625 IEEEtypes_TPCReport_t tpc_report; /**< TPC Report IE */ 1626 IEEEtypes_ChanSwitchAnn_t chan_switch_ann; /**< Channel Switch 1627 Announcement IE */ 1628 IEEEtypes_Quiet_t quiet; /**< Quiet IE */ 1629 IEEEtypes_IBSS_DFS_t ibss_dfs; /**< IBSS DFS Element IE */ 1630 1631 } wlan_11h_bss_info_t; 1632 1633 /** Ethernet packet type for TDLS */ 1634 #define MLAN_ETHER_PKT_TYPE_TDLS_ACTION (0x890D) 1635 1636 /*802.11z TDLS action frame type and strcuct */ 1637 typedef MLAN_PACK_START struct { 1638 /*link indentifier ie =101*/ 1639 t_u8 element_id; 1640 /*len = 18*/ 1641 t_u8 len; 1642 /** bssid */ 1643 t_u8 bssid[MLAN_MAC_ADDR_LENGTH]; 1644 /** init sta mac address */ 1645 t_u8 init_sta[MLAN_MAC_ADDR_LENGTH]; 1646 /** resp sta mac address */ 1647 t_u8 resp_sta[MLAN_MAC_ADDR_LENGTH]; 1648 } MLAN_PACK_END IEEEtypes_tdls_linkie; 1649 1650 /** action code for tdls setup request */ 1651 #define TDLS_SETUP_REQUEST 0 1652 /** action code for tdls setup response */ 1653 #define TDLS_SETUP_RESPONSE 1 1654 /** action code for tdls setup confirm */ 1655 #define TDLS_SETUP_CONFIRM 2 1656 /** action code for tdls tear down */ 1657 #define TDLS_TEARDOWN 3 1658 /** action code for tdls traffic indication */ 1659 #define TDLS_PEER_TRAFFIC_INDICATION 4 1660 /** action code for tdls channel switch request */ 1661 #define TDLS_CHANNEL_SWITCH_REQUEST 5 1662 /** action code for tdls channel switch response */ 1663 #define TDLS_CHANNEL_SWITCH_RESPONSE 6 1664 /** action code for tdls psm request */ 1665 #define TDLS_PEER_PSM_REQUEST 7 1666 /** action code for tdls psm response */ 1667 #define TDLS_PEER_PSM_RESPONSE 8 1668 /** action code for tdls traffic response */ 1669 #define TDLS_PEER_TRAFFIC_RESPONSE 9 1670 /** action code for tdls discovery request */ 1671 #define TDLS_DISCOVERY_REQUEST 10 1672 /** action code for TDLS discovery response */ 1673 #define TDLS_DISCOVERY_RESPONSE 14 1674 /** category public */ 1675 #define CATEGORY_PUBLIC 4 1676 1677 /** action code for 20/40 BSS Coexsitence Management frame */ 1678 #define BSS_20_40_COEX 0 1679 1680 #ifdef STA_SUPPORT 1681 /** Macro for maximum size of scan response buffer */ 1682 #define MAX_SCAN_RSP_BUF (16 * 1024) 1683 1684 /** Maximum number of channels that can be sent in user scan config */ 1685 #define WLAN_USER_SCAN_CHAN_MAX 50 1686 /** Maximum length of SSID list */ 1687 #define MRVDRV_MAX_SSID_LIST_LENGTH 10 1688 1689 /** Maximum length of BSSID list */ 1690 #define MAX_BSSID_FILTER_LIST 5 1691 1692 /** Scan all the channels in specified band */ 1693 #define BAND_SPECIFIED 0x80 1694 1695 /** 1696 * IOCTL SSID List sub-structure sent in wlan_ioctl_user_scan_cfg 1697 * 1698 * Used to specify SSID specific filters as well as SSID pattern matching 1699 * filters for scan result processing in firmware. 1700 */ 1701 typedef MLAN_PACK_START struct _wlan_user_scan_ssid { 1702 /** SSID */ 1703 t_u8 ssid[MLAN_MAX_SSID_LENGTH + 1]; 1704 /** Maximum length of SSID */ 1705 t_u8 max_len; 1706 } MLAN_PACK_END wlan_user_scan_ssid; 1707 1708 /** 1709 * @brief IOCTL channel sub-structure sent in wlan_ioctl_user_scan_cfg 1710 * 1711 * Multiple instances of this structure are included in the IOCTL command 1712 * to configure a instance of a scan on the specific channel. 1713 */ 1714 typedef MLAN_PACK_START struct _wlan_user_scan_chan { 1715 /** Channel Number to scan */ 1716 t_u8 chan_number; 1717 /** Radio type: 'B/G' Band = 0, 'A' Band = 1 */ 1718 t_u8 radio_type; 1719 /** Scan type: Active = 1, Passive = 2 */ 1720 t_u8 scan_type; 1721 /** Reserved */ 1722 t_u8 reserved; 1723 /** Scan duration in milliseconds; if 0 default used */ 1724 t_u32 scan_time; 1725 } MLAN_PACK_END wlan_user_scan_chan; 1726 1727 /** channel statictics */ 1728 typedef MLAN_PACK_START struct _ChanStatistics_t { 1729 /** channle number */ 1730 t_u8 chan_num; 1731 /** band info */ 1732 Band_Config_t bandcfg; 1733 /** flags */ 1734 t_u8 flags; 1735 /** noise */ 1736 t_s8 noise; 1737 /** total network */ 1738 t_u16 total_networks; 1739 /** scan duration */ 1740 t_u16 cca_scan_duration; 1741 /** busy duration */ 1742 t_u16 cca_busy_duration; 1743 /** min rss */ 1744 t_u8 min_rss; 1745 /** max rssi */ 1746 t_u8 max_rss; 1747 } MLAN_PACK_END ChanStatistics_t; 1748 1749 /** Enhance ext scan type defination */ 1750 typedef enum _MLAN_EXT_SCAN_TYPE { 1751 EXT_SCAN_DEFAULT, 1752 EXT_SCAN_ENHANCE, 1753 EXT_SCAN_CANCEL, 1754 } MLAN_EXT_SCAN_TYPE; 1755 1756 /** 1757 * Input structure to configure an immediate scan cmd to firmware 1758 * 1759 * Specifies a number of parameters to be used in general for the scan 1760 * as well as a channel list (wlan_user_scan_chan) for each scan period 1761 * desired. 1762 */ 1763 typedef MLAN_PACK_START struct { 1764 /** 1765 * Flag set to keep the previous scan table intact 1766 * 1767 * If set, the scan results will accumulate, replacing any previous 1768 * matched entries for a BSS with the new scan data 1769 */ 1770 t_u8 keep_previous_scan; 1771 /** 1772 * BSS mode to be sent in the firmware command 1773 * 1774 * Field can be used to restrict the types of networks returned in the 1775 * scan. Valid settings are: 1776 * 1777 * - MLAN_SCAN_MODE_BSS (infrastructure) 1778 * - MLAN_SCAN_MODE_IBSS (adhoc) 1779 * - MLAN_SCAN_MODE_ANY (unrestricted, adhoc and infrastructure) 1780 */ 1781 t_u8 bss_mode; 1782 /** 1783 * Configure the number of probe requests for active chan scans 1784 */ 1785 t_u8 num_probes; 1786 /** 1787 * @brief ssid filter flag 1788 */ 1789 t_u8 ssid_filter; 1790 /** 1791 * @brief BSSID filter sent in the firmware command to limit the 1792 * results 1793 */ 1794 t_u8 specific_bssid[MLAN_MAC_ADDR_LENGTH]; 1795 /** 1796 * SSID filter list used in the to limit the scan results 1797 */ 1798 wlan_user_scan_ssid ssid_list[MRVDRV_MAX_SSID_LIST_LENGTH]; 1799 /** 1800 * Variable number (fixed maximum) of channels to scan up 1801 */ 1802 wlan_user_scan_chan chan_list[WLAN_USER_SCAN_CHAN_MAX]; 1803 /** scan channel gap */ 1804 t_u16 scan_chan_gap; 1805 /** scan type: 0 legacy, 1: enhance scan*/ 1806 t_u8 ext_scan_type; 1807 /** flag to filer only probe response */ 1808 t_u8 proberesp_only; 1809 t_u8 random_mac[MLAN_MAC_ADDR_LENGTH]; 1810 /** Number of BSSIDs to be filtered */ 1811 t_u8 bssid_num; 1812 /** BSSID filter list used in the to limit the scan results */ 1813 mlan_802_11_mac_addr bssid_list[MAX_BSSID_FILTER_LIST]; 1814 /** use scan setting from scan_cfg only */ 1815 t_u8 scan_cfg_only; 1816 } MLAN_PACK_END wlan_user_scan_cfg; 1817 1818 /** Default scan interval in millisecond*/ 1819 #define DEFAULT_BGSCAN_INTERVAL 30000 1820 1821 /** action get all, except pps/uapsd config */ 1822 #define BG_SCAN_ACT_GET 0x0000 1823 /** action set all, except pps/uapsd config */ 1824 #define BG_SCAN_ACT_SET 0x0001 1825 /** action get pps/uapsd config */ 1826 #define BG_SCAN_ACT_GET_PPS_UAPSD 0x0100 1827 /** action set pps/uapsd config */ 1828 #define BG_SCAN_ACT_SET_PPS_UAPSD 0x0101 1829 /** action set all */ 1830 #define BG_SCAN_ACT_SET_ALL 0xff01 1831 /** ssid match */ 1832 #define BG_SCAN_SSID_MATCH 0x0001 1833 /** ssid match and RSSI exceeded */ 1834 #define BG_SCAN_SSID_RSSI_MATCH 0x0004 1835 /**wait for all channel scan to complete to report scan result*/ 1836 #define BG_SCAN_WAIT_ALL_CHAN_DONE 0x80000000 1837 /** Maximum number of channels that can be sent in bg scan config */ 1838 #define CHAN_MAX_24G 14 1839 #define CHAN_MAX_5G 24 1840 #define CHAN_MAX_UNII4 3 1841 #define WLAN_BG_SCAN_CHAN_MAX (CHAN_MAX_24G + CHAN_MAX_5G + CHAN_MAX_UNII4) 1842 1843 /** Enumeration definition */ 1844 /** EES MODE */ 1845 typedef enum { 1846 /** EES MODE: LOW */ 1847 EES_MODE_LOW = 0, 1848 /** EES MODE: MID */ 1849 EES_MODE_MID, 1850 /** EES MODE: HIGH */ 1851 EES_MODE_HIGH, 1852 /** EES MODE: OFF */ 1853 EES_MODE_OFF, 1854 /** EES MODE: LOOP */ 1855 EES_MODE_LOOP = 15, 1856 } ees_modes; 1857 1858 /** EES Maximum SSID */ 1859 #define EES_MAX_SSIDS 2 1860 1861 /** ees_ssid_config */ 1862 typedef MLAN_PACK_START struct { 1863 /** SSID */ 1864 t_u8 ssid[MLAN_MAX_SSID_LENGTH + 1]; 1865 /** Maximum length of SSID */ 1866 t_u8 max_len; 1867 /** PairCipher */ 1868 t_u8 pair_cipher; 1869 /** GroupCipher */ 1870 t_u8 group_cipher; 1871 } MLAN_PACK_END ees_ssid_config; 1872 1873 /** 1874 * Input structure to configure bs scan cmd to firmware 1875 */ 1876 typedef MLAN_PACK_START struct { 1877 /** action */ 1878 t_u16 action; 1879 /** enable/disable */ 1880 t_u8 enable; 1881 /** BSS type: 1882 * MLAN_SCAN_MODE_BSS (infrastructure) 1883 * MLAN_SCAN_MODE_IBSS (adhoc) 1884 * MLAN_SCAN_MODE_ANY (unrestricted, adhoc and infrastructure) 1885 */ 1886 t_u8 bss_type; 1887 /** number of channel scanned during each scan */ 1888 t_u8 chan_per_scan; 1889 /** interval between consecutive scan */ 1890 t_u32 scan_interval; 1891 /** bit 0: ssid match bit 1: ssid match and SNR exceeded 1892 * bit 2: ssid match and RSSI exceeded 1893 * bit 31: wait for all channel scan to complete to report scan result 1894 */ 1895 t_u32 report_condition; 1896 /* Configure the number of probe requests for active chan scans */ 1897 t_u8 num_probes; 1898 /** RSSI threshold */ 1899 t_u8 rssi_threshold; 1900 /** SNR threshold */ 1901 t_u8 snr_threshold; 1902 /** repeat count */ 1903 t_u16 repeat_count; 1904 /** start later flag */ 1905 t_u16 start_later; 1906 /** SSID filter list used in the to limit the scan results */ 1907 wlan_user_scan_ssid ssid_list[MRVDRV_MAX_SSID_LIST_LENGTH]; 1908 /** Variable number (fixed maximum) of channels to scan up */ 1909 wlan_user_scan_chan chan_list[WLAN_BG_SCAN_CHAN_MAX]; 1910 /** scan channel gap */ 1911 t_u16 scan_chan_gap; 1912 /** Enable EES configuration */ 1913 t_u8 config_ees; 1914 /** EES scan mode */ 1915 t_u16 ees_mode; 1916 /** EES report condition */ 1917 t_u16 report_cond; 1918 /** EES High Period scan interval */ 1919 t_u16 high_period; 1920 /** EES High Period scan count */ 1921 t_u16 high_period_count; 1922 /** EES Medium Period scan interval */ 1923 t_u16 mid_period; 1924 /** EES Medium Period scan count */ 1925 t_u16 mid_period_count; 1926 /** EES Low Period scan interval */ 1927 t_u16 low_period; 1928 /** EES Low Period scan count */ 1929 t_u16 low_period_count; 1930 /** Number of networks in the list */ 1931 t_u8 network_count; 1932 /** Maximum number of connection count */ 1933 t_u8 max_conn_count; 1934 /** Black List Exp */ 1935 t_u8 black_list_exp; 1936 /** Array of ees config struct */ 1937 ees_ssid_config ees_ssid_cfg[EES_MAX_SSIDS]; 1938 t_u8 random_mac[MLAN_MAC_ADDR_LENGTH]; 1939 } MLAN_PACK_END wlan_bgscan_cfg; 1940 #endif /* STA_SUPPORT */ 1941 1942 #ifdef PRAGMA_PACK 1943 #pragma pack(pop) 1944 #endif 1945 1946 /** BSSDescriptor_t 1947 * Structure used to store information for beacon/probe response 1948 */ 1949 typedef struct _BSSDescriptor_t { 1950 /** MAC address */ 1951 mlan_802_11_mac_addr mac_address; 1952 1953 /** SSID */ 1954 mlan_802_11_ssid ssid; 1955 1956 /** WEP encryption requirement */ 1957 t_u32 privacy; 1958 1959 /** Receive signal strength in dBm */ 1960 t_s32 rssi; 1961 /** channel load */ 1962 t_u8 chan_load; 1963 /** Channel */ 1964 t_u32 channel; 1965 1966 /** Freq */ 1967 t_u32 freq; 1968 1969 /** Beacon period */ 1970 t_u16 beacon_period; 1971 1972 /** ATIM window */ 1973 t_u32 atim_window; 1974 1975 /** ERP flags */ 1976 t_u8 erp_flags; 1977 1978 /** Type of network in use */ 1979 WLAN_802_11_NETWORK_TYPE network_type_use; 1980 1981 /** Network infrastructure mode */ 1982 t_u32 bss_mode; 1983 1984 /** Network supported rates */ 1985 WLAN_802_11_RATES supported_rates; 1986 1987 /** Supported data rates */ 1988 t_u8 data_rates[WLAN_SUPPORTED_RATES]; 1989 1990 /** Current channel bandwidth 1991 * 0 : 20MHZ 1992 * 1 : 40MHZ 1993 * 2 : 80MHZ 1994 * 3 : 160MHZ 1995 */ 1996 t_u8 curr_bandwidth; 1997 1998 /** Network band. 1999 * BAND_B(0x01): 'b' band 2000 * BAND_G(0x02): 'g' band 2001 * BAND_A(0X04): 'a' band 2002 */ 2003 t_u16 bss_band; 2004 2005 /** TSF timestamp from the current firmware TSF */ 2006 t_u64 network_tsf; 2007 2008 /** TSF value included in the beacon/probe response */ 2009 t_u8 time_stamp[8]; 2010 2011 /** PHY parameter set */ 2012 IEEEtypes_PhyParamSet_t phy_param_set; 2013 2014 /** SS parameter set */ 2015 IEEEtypes_SsParamSet_t ss_param_set; 2016 2017 /** Capability information */ 2018 IEEEtypes_CapInfo_t cap_info; 2019 2020 /** WMM IE */ 2021 IEEEtypes_WmmParameter_t wmm_ie; 2022 2023 /** 802.11h BSS information */ 2024 wlan_11h_bss_info_t wlan_11h_bss_info; 2025 2026 /** Indicate disabling 11n when associate with AP */ 2027 t_u8 disable_11n; 2028 /** 802.11n BSS information */ 2029 /** HT Capabilities IE */ 2030 IEEEtypes_HTCap_t *pht_cap; 2031 /** HT Capabilities Offset */ 2032 t_u16 ht_cap_offset; 2033 /** HT Information IE */ 2034 IEEEtypes_HTInfo_t *pht_info; 2035 /** HT Information Offset */ 2036 t_u16 ht_info_offset; 2037 /** Flag to indicate this is multi_bssid_ap */ 2038 t_u8 multi_bssid_ap; 2039 /** the mac address of multi-bssid AP */ 2040 mlan_802_11_mac_addr multi_bssid_ap_addr; 2041 /** 20/40 BSS Coexistence IE */ 2042 IEEEtypes_2040BSSCo_t *pbss_co_2040; 2043 /** 20/40 BSS Coexistence Offset */ 2044 t_u16 bss_co_2040_offset; 2045 /** Extended Capabilities IE */ 2046 IEEEtypes_ExtCap_t *pext_cap; 2047 /** Extended Capabilities Offset */ 2048 t_u16 ext_cap_offset; 2049 /** Overlapping BSS Scan Parameters IE */ 2050 IEEEtypes_OverlapBSSScanParam_t *poverlap_bss_scan_param; 2051 /** Overlapping BSS Scan Parameters Offset */ 2052 t_u16 overlap_bss_offset; 2053 2054 /** VHT Capabilities IE */ 2055 IEEEtypes_VHTCap_t *pvht_cap; 2056 /** VHT Capabilities IE offset */ 2057 t_u16 vht_cap_offset; 2058 /** VHT Operations IE */ 2059 IEEEtypes_VHTOprat_t *pvht_oprat; 2060 /** VHT Operations IE offset */ 2061 t_u16 vht_oprat_offset; 2062 /** VHT Transmit Power Envelope IE */ 2063 IEEEtypes_VHTtxpower_t *pvht_txpower; 2064 /** VHT Transmit Power Envelope IE offset */ 2065 t_u16 vht_txpower_offset; 2066 /** Extended Power Constraint IE */ 2067 IEEEtypes_ExtPwerCons_t *pext_pwer; 2068 /** Extended Power Constraint IE offset */ 2069 t_u16 ext_pwer_offset; 2070 /** Extended BSS Load IE */ 2071 IEEEtypes_ExtBSSload_t *pext_bssload; 2072 /** Extended BSS Load IE offset */ 2073 t_u16 ext_bssload_offset; 2074 /** Quiet Channel IE */ 2075 IEEEtypes_QuietChan_t *pquiet_chan; 2076 /** Quiet Channel IE offset */ 2077 t_u16 quiet_chan_offset; 2078 /** Operating Mode Notification IE */ 2079 IEEEtypes_OperModeNtf_t *poper_mode; 2080 /** Operating Mode Notification IE offset */ 2081 t_u16 oper_mode_offset; 2082 /** HE Capability IE */ 2083 IEEEtypes_HECap_t *phe_cap; 2084 /** HE Capability IE offset */ 2085 t_u16 he_cap_offset; 2086 /** HE operation IE */ 2087 IEEEtypes_Extension_t *phe_oprat; 2088 /** HE operation IE offset */ 2089 t_u16 he_oprat_offset; 2090 #ifdef STA_SUPPORT 2091 /** Country information set */ 2092 IEEEtypes_CountryInfoFullSet_t country_info; 2093 #endif /* STA_SUPPORT */ 2094 2095 /** WPA IE */ 2096 IEEEtypes_VendorSpecific_t *pwpa_ie; 2097 /** WPA IE offset in the beacon buffer */ 2098 t_u16 wpa_offset; 2099 /** RSN IE */ 2100 IEEEtypes_Generic_t *prsn_ie; 2101 /** RSN IE offset in the beacon buffer */ 2102 t_u16 rsn_offset; 2103 /** RSNX IE */ 2104 IEEEtypes_Generic_t *prsnx_ie; 2105 /** RSNX IE offset in the beacon buffer */ 2106 t_u16 rsnx_offset; 2107 #ifdef STA_SUPPORT 2108 /** WAPI IE */ 2109 IEEEtypes_Generic_t *pwapi_ie; 2110 /** WAPI IE offset in the beacon buffer */ 2111 t_u16 wapi_offset; 2112 #endif 2113 /* Hotspot 2.0 OSEN AKM IE*/ 2114 IEEEtypes_Generic_t *posen_ie; 2115 /** osen IE offset in the beacon buffer */ 2116 t_u16 osen_offset; 2117 /* Mobility domain IE */ 2118 IEEEtypes_MobilityDomain_t *pmd_ie; 2119 /** Mobility domain IE offset in the beacon buffer */ 2120 t_u16 md_offset; 2121 2122 /** Pointer to the returned scan response */ 2123 t_u8 *pbeacon_buf; 2124 /** Length of the stored scan response */ 2125 t_u32 beacon_buf_size; 2126 /** Max allocated size for updated scan response */ 2127 t_u32 beacon_buf_size_max; 2128 /** scan age in secs */ 2129 t_u32 age_in_secs; 2130 } BSSDescriptor_t, *pBSSDescriptor_t; 2131 2132 #endif /* !_MLAN_IEEE_H_ */ 2133