xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/nxp/mlinux/mlan_ieee.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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