xref: /wlan-dirver/qcacld-3.0/core/mac/src/include/dot11f.h (revision 63d7e2a202b3cd37d6c1c20a39582b297a267b6b)
1 /*
2  * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef DOT11F_H
20 #define DOT11F_H
21 /*
22  * \file dot11f.h
23  *
24  * \brief Structures, function prototypes & definitions
25  * for working with 802.11 Frames
26  *
27  *
28  * This file was automatically generated by 'framesc'
29  * Mon May 10 16:27:34 2021 from the following file(s):
30  *
31  * dot11f.frms
32  *
33  * PLEASE DON'T EDIT THIS FILE BY HAND!
34  *
35  * Instead, please update the input files & re-run
36  * 'framesc'  For more information on 'framesc' & the
37  * frames language,  run 'framesc --help'.
38  *
39  */
40 
41 typedef uint32_t tDOT11F_U64[2];
42 
43 #if defined (_MSC_VER)
44 #pragma warning (disable:4214)	/* nonstandard extension used */
45 #endif /* Microsoft C/C++             bit field types other than int */
46 
47 #if !defined __must_check
48 #define __must_check
49 #endif
50 
51 #if !defined unlikely
52 #define unlikely(x)    (x)
53 #endif
54 
55 /*
56  * Frames Return Codes:
57  *
58  * Success is indicated by a return value of zero.  Failure is indicated
59  * by the presence of the high bit.  Warnings encountered in the course
60  * of a successful parse are indicated by various bits in the lower 31
61  * being turned on.
62  *
63  * For instance, a return value of 0x0000000a would indicate that the
64  * parse succeeded, but that a mandatory IE wasn't present, and some IE
65  * was found to be corrupt.
66  *
67  *
68  */
69 
70 #define DOT11F_PARSE_SUCCESS         (0x00000000)
71 #define DOT11F_UNKNOWN_IES           (0x00000001)
72 #define DOT11F_MANDATORY_IE_MISSING  (0x00000002)
73 #define DOT11F_INCOMPLETE_IE         (0x00000004)
74 #define DOT11F_SKIPPED_BAD_IE        (0x00000008)
75 #define DOT11F_LAST_IE_TOO_LONG      (0x00000010)
76 #define DOT11F_DUPLICATE_IE          (0x00000020)
77 #define DOT11F_BAD_FIXED_VALUE       (0x00000040)
78 #define DOT11F_INCOMPLETE_TLV        (0x00000080)
79 #define DOT11F_INVALID_TLV_LENGTH    (0x00000100)
80 #define DOT11F_SKIPPED_BAD_TLV       (0x00000200)
81 #define DOT11F_UNKNOWN_TLVS          (0x00000400)
82 #define DOT11F_LAST_TLV_TOO_LONG     (0x00000800)
83 #define DOT11F_MANDATORY_TLV_MISSING (0x00001000)
84 #define DOT11F_INTERNAL_ERROR        (0x10000001)
85 #define DOT11F_MISSING_FIXED_FIELD   (0x10000002)
86 #define DOT11F_BAD_INPUT_BUFFER      (0x10000003)
87 #define DOT11F_BAD_OUTPUT_BUFFER     (0x10000004)
88 #define DOT11F_BUFFER_OVERFLOW       (0x10000005)
89 #define DOT11F_FAILED(code)          ((code) & 0x10000000)
90 #define DOT11F_SUCCEEDED(code)       ((code) == 0)
91 #define DOT11F_WARNED(code)          (!DOT11F_SUCCEEDED(code) && !DOT11F_FAILED(code))
92 
93 /*********************************************************************
94  * Fixed Fields                                                      *
95  ********************************************************************/
96 
97 typedef struct sDot11fFfAID {
98 	uint16_t associd;
99 } tDot11fFfAID;
100 
101 #define DOT11F_FF_AID_LEN (2)
102 
103 void dot11f_unpack_ff_AID(tpAniSirGlobal, uint8_t *, tDot11fFfAID *);
104 
105 void dot11f_pack_ff_aid(tpAniSirGlobal, tDot11fFfAID *, uint8_t *);
106 
107 typedef struct sDot11fFfAction {
108 	uint8_t action;
109 } tDot11fFfAction;
110 
111 #define DOT11F_FF_ACTION_LEN (1)
112 
113 void dot11f_unpack_ff_action(tpAniSirGlobal, uint8_t *, tDot11fFfAction *);
114 
115 void dot11f_pack_ff_action(tpAniSirGlobal, tDot11fFfAction *, uint8_t *);
116 
117 typedef struct sDot11fFfAuthAlgo {
118 	uint16_t algo;
119 } tDot11fFfAuthAlgo;
120 
121 #define DOT11F_FF_AUTHALGO_LEN (2)
122 
123 void dot11f_unpack_ff_AuthAlgo(tpAniSirGlobal, uint8_t *,
124 			       tDot11fFfAuthAlgo *);
125 
126 void dot11f_pack_ff_auth_algo(tpAniSirGlobal, tDot11fFfAuthAlgo *, uint8_t *);
127 
128 typedef struct sDot11fFfAuthSeqNo {
129 	uint16_t no;
130 } tDot11fFfAuthSeqNo;
131 
132 #define DOT11F_FF_AUTHSEQNO_LEN (2)
133 
134 void dot11f_unpack_ff_AuthSeqNo(tpAniSirGlobal, uint8_t *,
135 				tDot11fFfAuthSeqNo *);
136 
137 void dot11f_pack_ff_auth_seq_no(tpAniSirGlobal, tDot11fFfAuthSeqNo *,
138 			      uint8_t *);
139 
140 typedef struct sDot11fFfBeaconInterval {
141 	uint16_t interval;
142 } tDot11fFfBeaconInterval;
143 
144 #define DOT11F_FF_BEACONINTERVAL_LEN (2)
145 
146 void dot11f_unpack_ff_BeaconInterval(tpAniSirGlobal, uint8_t *,
147 				     tDot11fFfBeaconInterval *);
148 
149 void dot11f_pack_ff_beacon_interval(tpAniSirGlobal, tDot11fFfBeaconInterval *,
150 				   uint8_t *);
151 
152 typedef struct sDot11fFfCapabilities {
153 	uint16_t             ess:1;
154 	uint16_t            ibss:1;
155 	uint16_t      cfPollable:1;
156 	uint16_t       cfPollReq:1;
157 	uint16_t         privacy:1;
158 	uint16_t   shortPreamble:1;
159 	uint16_t            pbcc:1;
160 	uint16_t  channelAgility:1;
161 	uint16_t     spectrumMgt:1;
162 	uint16_t             qos:1;
163 	uint16_t   shortSlotTime:1;
164 	uint16_t            apsd:1;
165 	uint16_t             rrm:1;
166 	uint16_t        dsssOfdm:1;
167 	uint16_t       delayedBA:1;
168 	uint16_t     immediateBA:1;
169 } tDot11fFfCapabilities;
170 
171 #define DOT11F_FF_CAPABILITIES_LEN (2)
172 
173 void dot11f_unpack_ff_capabilities(tpAniSirGlobal, uint8_t *,
174 				   tDot11fFfCapabilities *);
175 
176 void dot11f_pack_ff_capabilities(tpAniSirGlobal, tDot11fFfCapabilities *,
177 				 uint8_t *);
178 
179 #define CAPABILITIES_ESS_OFFSET            0
180 #define CAPABILITIES_ESS_WIDTH             1
181 #define CAPABILITIES_IBSS_OFFSET           1
182 #define CAPABILITIES_IBSS_WIDTH            1
183 #define CAPABILITIES_CFPOLLABLE_OFFSET     2
184 #define CAPABILITIES_CFPOLLABLE_WIDTH      1
185 #define CAPABILITIES_CFPOLLREQ_OFFSET      3
186 #define CAPABILITIES_CFPOLLREQ_WIDTH       1
187 #define CAPABILITIES_PRIVACY_OFFSET        4
188 #define CAPABILITIES_PRIVACY_WIDTH         1
189 #define CAPABILITIES_SHORTPREAMBLE_OFFSET  5
190 #define CAPABILITIES_SHORTPREAMBLE_WIDTH   1
191 #define CAPABILITIES_PBCC_OFFSET           6
192 #define CAPABILITIES_PBCC_WIDTH            1
193 #define CAPABILITIES_CHANNELAGILITY_OFFSET 7
194 #define CAPABILITIES_CHANNELAGILITY_WIDTH  1
195 #define CAPABILITIES_SPECTRUMMGT_OFFSET    8
196 #define CAPABILITIES_SPECTRUMMGT_WIDTH     1
197 #define CAPABILITIES_QOS_OFFSET            9
198 #define CAPABILITIES_QOS_WIDTH             1
199 #define CAPABILITIES_SHORTSLOTTIME_OFFSET  10
200 #define CAPABILITIES_SHORTSLOTTIME_WIDTH   1
201 #define CAPABILITIES_APSD_OFFSET           11
202 #define CAPABILITIES_APSD_WIDTH            1
203 #define CAPABILITIES_RRM_OFFSET            12
204 #define CAPABILITIES_RRM_WIDTH             1
205 #define CAPABILITIES_DSSSOFDM_OFFSET       13
206 #define CAPABILITIES_DSSSOFDM_WIDTH        1
207 #define CAPABILITIES_DELAYEDBA_OFFSET      14
208 #define CAPABILITIES_DELAYEDBA_WIDTH       1
209 #define CAPABILITIES_IMMEDIATEBA_OFFSET    15
210 #define CAPABILITIES_IMMEDIATEBA_WIDTH     1
211 
212 typedef struct sDot11fFfCategory {
213 	uint8_t category;
214 } tDot11fFfCategory;
215 
216 #define DOT11F_FF_CATEGORY_LEN (1)
217 
218 void dot11f_unpack_ff_category(tpAniSirGlobal, uint8_t *,
219 			       tDot11fFfCategory *);
220 
221 void dot11f_pack_ff_category(tpAniSirGlobal, tDot11fFfCategory *, uint8_t *);
222 
223 typedef struct sDot11fFfCurrentAPAddress {
224 	uint8_t mac[6];
225 } tDot11fFfCurrentAPAddress;
226 
227 #define DOT11F_FF_CURRENTAPADDRESS_LEN (6)
228 
229 void dot11f_unpack_ff_current_ap_address(tpAniSirGlobal, uint8_t *,
230 				       tDot11fFfCurrentAPAddress *);
231 
232 void dot11f_pack_ff_current_ap_address(tpAniSirGlobal,
233 				     tDot11fFfCurrentAPAddress *,
234 				     uint8_t *);
235 
236 
237 typedef struct sDot11fFfDialogToken {
238 	uint8_t token;
239 } tDot11fFfDialogToken;
240 
241 #define DOT11F_FF_DIALOGTOKEN_LEN (1)
242 
243 void dot11f_unpack_ff_dialog_token(tpAniSirGlobal, uint8_t *,
244 				  tDot11fFfDialogToken *);
245 
246 void dot11f_pack_ff_dialog_token(tpAniSirGlobal, tDot11fFfDialogToken *,
247 				uint8_t *);
248 
249 typedef struct sDot11fFfLinkMargin {
250 	uint8_t linkMargin;
251 } tDot11fFfLinkMargin;
252 
253 #define DOT11F_FF_LINKMARGIN_LEN (1)
254 
255 void dot11f_unpack_ff_link_margin(tpAniSirGlobal, uint8_t *,
256 				 tDot11fFfLinkMargin *);
257 
258 void dot11f_pack_ff_link_margin(tpAniSirGlobal, tDot11fFfLinkMargin *,
259 			       uint8_t *);
260 
261 typedef struct sDot11fFfListenInterval {
262 	uint16_t interval;
263 } tDot11fFfListenInterval;
264 
265 #define DOT11F_FF_LISTENINTERVAL_LEN (2)
266 
267 void dot11f_unpack_ff_ListenInterval(tpAniSirGlobal, uint8_t *,
268 				     tDot11fFfListenInterval *);
269 
270 void dot11f_pack_ff_listen_interval(tpAniSirGlobal, tDot11fFfListenInterval *,
271 				   uint8_t *);
272 
273 typedef struct sDot11fFfMaxTxPower {
274 	uint8_t maxTxPower;
275 } tDot11fFfMaxTxPower;
276 
277 #define DOT11F_FF_MAXTXPOWER_LEN (1)
278 
279 void dot11f_unpack_ff_max_tx_power(tpAniSirGlobal, uint8_t *,
280 				 tDot11fFfMaxTxPower *);
281 
282 void dot11f_pack_ff_max_tx_power(tpAniSirGlobal, tDot11fFfMaxTxPower *,
283 			       uint8_t *);
284 
285 typedef struct sDot11fFfNumOfRepetitions {
286 	uint16_t repetitions;
287 } tDot11fFfNumOfRepetitions;
288 
289 #define DOT11F_FF_NUMOFREPETITIONS_LEN (2)
290 
291 void dot11f_unpack_ff_num_of_repetitions(tpAniSirGlobal, uint8_t *,
292 				       tDot11fFfNumOfRepetitions *);
293 
294 void dot11f_pack_ff_num_of_repetitions(tpAniSirGlobal,
295 				     tDot11fFfNumOfRepetitions *,
296 				     uint8_t *);
297 
298 
299 typedef struct sDot11fFfOperatingMode {
300 	uint8_t  chanWidth:2;
301 	uint8_t   reserved:2;
302 	uint8_t      rxNSS:3;
303 	uint8_t  rxNSSType:1;
304 } tDot11fFfOperatingMode;
305 
306 #define DOT11F_FF_OPERATINGMODE_LEN (1)
307 
308 void dot11f_unpack_ff_operating_mode(tpAniSirGlobal, uint8_t *,
309 				    tDot11fFfOperatingMode *);
310 
311 void dot11f_pack_ff_operating_mode(tpAniSirGlobal, tDot11fFfOperatingMode *,
312 				  uint8_t *);
313 
314 #define OPERATINGMODE_CHANWIDTH_OFFSET 0
315 #define OPERATINGMODE_CHANWIDTH_WIDTH  2
316 #define OPERATINGMODE_RESERVED_OFFSET  2
317 #define OPERATINGMODE_RESERVED_WIDTH   2
318 #define OPERATINGMODE_RXNSS_OFFSET     4
319 #define OPERATINGMODE_RXNSS_WIDTH      3
320 #define OPERATINGMODE_RXNSSTYPE_OFFSET 7
321 #define OPERATINGMODE_RXNSSTYPE_WIDTH  1
322 
323 typedef struct sDot11fFfRCPI {
324 	uint8_t rcpi;
325 } tDot11fFfRCPI;
326 
327 #define DOT11F_FF_RCPI_LEN (1)
328 
329 void dot11f_unpack_ff_rcpi(tpAniSirGlobal, uint8_t *, tDot11fFfRCPI *);
330 
331 void dot11f_pack_ff_rcpi(tpAniSirGlobal, tDot11fFfRCPI *, uint8_t *);
332 
333 typedef struct sDot11fFfRSNI {
334 	uint8_t rsni;
335 } tDot11fFfRSNI;
336 
337 #define DOT11F_FF_RSNI_LEN (1)
338 
339 void dot11f_unpack_ff_rsni(tpAniSirGlobal, uint8_t *, tDot11fFfRSNI *);
340 
341 void dot11f_pack_ff_rsni(tpAniSirGlobal, tDot11fFfRSNI *, uint8_t *);
342 
343 typedef struct sDot11fFfReason {
344 	uint16_t code;
345 } tDot11fFfReason;
346 
347 #define DOT11F_FF_REASON_LEN (2)
348 
349 void dot11f_unpack_ff_Reason(tpAniSirGlobal, uint8_t *, tDot11fFfReason *);
350 
351 void dot11f_pack_ff_reason(tpAniSirGlobal, tDot11fFfReason *, uint8_t *);
352 
353 typedef struct sDot11fFfRxAntennaId {
354 	uint8_t antennaId;
355 } tDot11fFfRxAntennaId;
356 
357 #define DOT11F_FF_RXANTENNAID_LEN (1)
358 
359 void dot11f_unpack_ff_rx_antenna_id(tpAniSirGlobal, uint8_t *,
360 				  tDot11fFfRxAntennaId *);
361 
362 void dot11f_pack_ff_rx_antenna_id(tpAniSirGlobal, tDot11fFfRxAntennaId *,
363 				uint8_t *);
364 
365 typedef struct sDot11fFfSMPowerModeSet {
366 	uint8_t  PowerSave_En:1;
367 	uint8_t          Mode:1;
368 	uint8_t      reserved:6;
369 } tDot11fFfSMPowerModeSet;
370 
371 #define DOT11F_FF_SMPOWERMODESET_LEN (1)
372 
373 void dot11f_unpack_ff_sm_power_mode_set(tpAniSirGlobal, uint8_t *,
374 				     tDot11fFfSMPowerModeSet *);
375 
376 void dot11f_pack_ff_sm_power_mode_set(tpAniSirGlobal, tDot11fFfSMPowerModeSet *,
377 				   uint8_t *);
378 
379 #define SMPOWERMODESET_POWERSAVE_EN_OFFSET 0
380 #define SMPOWERMODESET_POWERSAVE_EN_WIDTH  1
381 #define SMPOWERMODESET_MODE_OFFSET         1
382 #define SMPOWERMODESET_MODE_WIDTH          1
383 #define SMPOWERMODESET_RESERVED_OFFSET     2
384 #define SMPOWERMODESET_RESERVED_WIDTH      6
385 
386 typedef struct sDot11fFfStatus {
387 	uint16_t status;
388 } tDot11fFfStatus;
389 
390 #define DOT11F_FF_STATUS_LEN (2)
391 
392 void dot11f_unpack_ff_Status(tpAniSirGlobal, uint8_t *, tDot11fFfStatus *);
393 
394 void dot11f_pack_ff_status(tpAniSirGlobal, tDot11fFfStatus *, uint8_t *);
395 
396 typedef struct sDot11fFfStatusCode {
397 	uint8_t statusCode;
398 } tDot11fFfStatusCode;
399 
400 #define DOT11F_FF_STATUSCODE_LEN (1)
401 
402 void dot11f_unpack_ff_status_code(tpAniSirGlobal, uint8_t *,
403 				 tDot11fFfStatusCode *);
404 
405 void dot11f_pack_ff_status_code(tpAniSirGlobal, tDot11fFfStatusCode *,
406 			       uint8_t *);
407 
408 typedef struct sDot11fFfTPCEleID {
409 	uint8_t TPCId;
410 } tDot11fFfTPCEleID;
411 
412 #define DOT11F_FF_TPCELEID_LEN (1)
413 
414 void dot11f_unpack_ff_tpc_ele_id(tpAniSirGlobal, uint8_t *,
415 			       tDot11fFfTPCEleID *);
416 
417 void dot11f_pack_ff_tpc_ele_id(tpAniSirGlobal, tDot11fFfTPCEleID *, uint8_t *);
418 
419 typedef struct sDot11fFfTPCEleLen {
420 	uint8_t TPCLen;
421 } tDot11fFfTPCEleLen;
422 
423 #define DOT11F_FF_TPCELELEN_LEN (1)
424 
425 void dot11f_unpack_ff_tpc_ele_len(tpAniSirGlobal, uint8_t *,
426 				tDot11fFfTPCEleLen *);
427 
428 void dot11f_pack_ff_tpc_ele_len(tpAniSirGlobal, tDot11fFfTPCEleLen *,
429 			      uint8_t *);
430 
431 typedef struct sDot11fFfTSInfo {
432 	uint32_t    traffic_type:1;
433 	uint32_t            tsid:4;
434 	uint32_t       direction:2;
435 	uint32_t   access_policy:2;
436 	uint32_t     aggregation:1;
437 	uint32_t             psb:1;
438 	uint32_t   user_priority:3;
439 	uint32_t  tsinfo_ack_pol:2;
440 	uint32_t        schedule:1;
441 	uint32_t          unused:15;
442 } tDot11fFfTSInfo;
443 
444 #define DOT11F_FF_TSINFO_LEN (3)
445 
446 void dot11f_unpack_ff_ts_info(tpAniSirGlobal, uint8_t *, tDot11fFfTSInfo *);
447 
448 void dot11f_pack_ff_ts_info(tpAniSirGlobal, tDot11fFfTSInfo *, uint8_t *);
449 
450 #define TSINFO_TRAFFIC_TYPE_OFFSET   0
451 #define TSINFO_TRAFFIC_TYPE_WIDTH    1
452 #define TSINFO_TSID_OFFSET           1
453 #define TSINFO_TSID_WIDTH            4
454 #define TSINFO_DIRECTION_OFFSET      5
455 #define TSINFO_DIRECTION_WIDTH       2
456 #define TSINFO_ACCESS_POLICY_OFFSET  7
457 #define TSINFO_ACCESS_POLICY_WIDTH   2
458 #define TSINFO_AGGREGATION_OFFSET    9
459 #define TSINFO_AGGREGATION_WIDTH     1
460 #define TSINFO_PSB_OFFSET            10
461 #define TSINFO_PSB_WIDTH             1
462 #define TSINFO_USER_PRIORITY_OFFSET  11
463 #define TSINFO_USER_PRIORITY_WIDTH   3
464 #define TSINFO_TSINFO_ACK_POL_OFFSET 14
465 #define TSINFO_TSINFO_ACK_POL_WIDTH  2
466 #define TSINFO_SCHEDULE_OFFSET       16
467 #define TSINFO_SCHEDULE_WIDTH        1
468 #define TSINFO_UNUSED_OFFSET         17
469 #define TSINFO_UNUSED_WIDTH          15
470 
471 typedef struct sDot11fFfTimeStamp {
472 	tDOT11F_U64 timestamp;
473 } tDot11fFfTimeStamp;
474 
475 #define DOT11F_FF_TIMESTAMP_LEN (8)
476 
477 void dot11f_unpack_ff_time_stamp(tpAniSirGlobal, uint8_t *,
478 				tDot11fFfTimeStamp *);
479 
480 void dot11f_pack_ff_time_stamp(tpAniSirGlobal, tDot11fFfTimeStamp *,
481 			      uint8_t *);
482 
483 typedef struct sDot11fFfTransactionId {
484 	uint8_t transId[2];
485 } tDot11fFfTransactionId;
486 
487 #define DOT11F_FF_TRANSACTIONID_LEN (2)
488 
489 void dot11f_unpack_ff_transaction_id(tpAniSirGlobal, uint8_t *,
490 				    tDot11fFfTransactionId *);
491 
492 void dot11f_pack_ff_transaction_id(tpAniSirGlobal, tDot11fFfTransactionId *,
493 				  uint8_t *);
494 
495 typedef struct sDot11fFfTxAntennaId {
496 	uint8_t antennaId;
497 } tDot11fFfTxAntennaId;
498 
499 #define DOT11F_FF_TXANTENNAID_LEN (1)
500 
501 void dot11f_unpack_ff_tx_antenna_id(tpAniSirGlobal, uint8_t *,
502 				  tDot11fFfTxAntennaId *);
503 
504 void dot11f_pack_ff_tx_antenna_id(tpAniSirGlobal, tDot11fFfTxAntennaId *,
505 				uint8_t *);
506 
507 typedef struct sDot11fFfTxPower {
508 	uint8_t txPower;
509 } tDot11fFfTxPower;
510 
511 #define DOT11F_FF_TXPOWER_LEN (1)
512 
513 void dot11f_unpack_ff_tx_power(tpAniSirGlobal, uint8_t *,
514 			      tDot11fFfTxPower *);
515 
516 void dot11f_pack_ff_tx_power(tpAniSirGlobal, tDot11fFfTxPower *, uint8_t *);
517 
518 typedef struct sDot11fFfVhtMembershipStatusArray {
519 	uint8_t membershipStatusArray[8];
520 } tDot11fFfVhtMembershipStatusArray;
521 
522 #define DOT11F_FF_VHTMEMBERSHIPSTATUSARRAY_LEN (8)
523 
524 void dot11f_unpack_ff_vht_membership_status_array(tpAniSirGlobal, uint8_t *,
525 					       tDot11fFfVhtMembershipStatusArray *);
526 
527 void dot11f_pack_ff_vht_membership_status_array(tpAniSirGlobal,
528 					     tDot11fFfVhtMembershipStatusArray *,
529 					     uint8_t *);
530 
531 
532 typedef struct sDot11fFfVhtUserPositionArray {
533 	uint8_t userPositionArray[16];
534 } tDot11fFfVhtUserPositionArray;
535 
536 #define DOT11F_FF_VHTUSERPOSITIONARRAY_LEN (16)
537 
538 void dot11f_unpack_ff_vht_user_position_array(tpAniSirGlobal, uint8_t *,
539 					   tDot11fFfVhtUserPositionArray *);
540 
541 void dot11f_pack_ff_vht_user_position_array(tpAniSirGlobal,
542 					 tDot11fFfVhtUserPositionArray *,
543 					 uint8_t *);
544 
545 
546 typedef struct sDot11fFfaddba_param_set {
547 	uint16_t  amsdu_supp:1;
548 	uint16_t      policy:1;
549 	uint16_t         tid:4;
550 	uint16_t   buff_size:10;
551 } tDot11fFfaddba_param_set;
552 
553 #define DOT11F_FF_ADDBA_PARAM_SET_LEN (2)
554 
555 void dot11f_unpack_ff_addba_param_set(tpAniSirGlobal, uint8_t *,
556 				      tDot11fFfaddba_param_set *);
557 
558 void dot11f_pack_ff_addba_param_set(tpAniSirGlobal, tDot11fFfaddba_param_set *,
559 				    uint8_t *);
560 
561 #define ADDBA_PARAM_SET_AMSDU_SUPP_OFFSET 0
562 #define ADDBA_PARAM_SET_AMSDU_SUPP_WIDTH  1
563 #define ADDBA_PARAM_SET_POLICY_OFFSET     1
564 #define ADDBA_PARAM_SET_POLICY_WIDTH      1
565 #define ADDBA_PARAM_SET_TID_OFFSET        2
566 #define ADDBA_PARAM_SET_TID_WIDTH         4
567 #define ADDBA_PARAM_SET_BUFF_SIZE_OFFSET  6
568 #define ADDBA_PARAM_SET_BUFF_SIZE_WIDTH   10
569 
570 typedef struct sDot11fFfba_start_seq_ctrl {
571 	uint16_t  frag_number:4;
572 	uint16_t          ssn:12;
573 } tDot11fFfba_start_seq_ctrl;
574 
575 #define DOT11F_FF_BA_START_SEQ_CTRL_LEN (2)
576 
577 void dot11f_unpack_ff_ba_start_seq_ctrl(tpAniSirGlobal, uint8_t *,
578 					tDot11fFfba_start_seq_ctrl *);
579 
580 void dot11f_pack_ff_ba_start_seq_ctrl(tpAniSirGlobal,
581 				      tDot11fFfba_start_seq_ctrl *,
582 				      uint8_t *);
583 
584 
585 #define BA_START_SEQ_CTRL_FRAG_NUMBER_OFFSET 0
586 #define BA_START_SEQ_CTRL_FRAG_NUMBER_WIDTH  4
587 #define BA_START_SEQ_CTRL_SSN_OFFSET         4
588 #define BA_START_SEQ_CTRL_SSN_WIDTH          12
589 
590 typedef struct sDot11fFfba_timeout {
591 	uint16_t timeout;
592 } tDot11fFfba_timeout;
593 
594 #define DOT11F_FF_BA_TIMEOUT_LEN (2)
595 
596 void dot11f_unpack_ff_ba_timeout(tpAniSirGlobal, uint8_t *,
597 				 tDot11fFfba_timeout *);
598 
599 void dot11f_pack_ff_ba_timeout(tpAniSirGlobal, tDot11fFfba_timeout *,
600 			       uint8_t *);
601 
602 typedef struct sDot11fFfdelba_param_set {
603 	uint16_t   reserved:11;
604 	uint16_t  initiator:1;
605 	uint16_t        tid:4;
606 } tDot11fFfdelba_param_set;
607 
608 #define DOT11F_FF_DELBA_PARAM_SET_LEN (2)
609 
610 void dot11f_unpack_ff_delba_param_set(tpAniSirGlobal, uint8_t *,
611 				      tDot11fFfdelba_param_set *);
612 
613 void dot11f_pack_ff_delba_param_set(tpAniSirGlobal, tDot11fFfdelba_param_set *,
614 				    uint8_t *);
615 
616 #define DELBA_PARAM_SET_RESERVED_OFFSET  0
617 #define DELBA_PARAM_SET_RESERVED_WIDTH   11
618 #define DELBA_PARAM_SET_INITIATOR_OFFSET 11
619 #define DELBA_PARAM_SET_INITIATOR_WIDTH  1
620 #define DELBA_PARAM_SET_TID_OFFSET       12
621 #define DELBA_PARAM_SET_TID_WIDTH        4
622 
623 typedef struct sDot11fFfext_chan_switch_ann_action {
624 	uint32_t   switch_mode:8;
625 	uint32_t      op_class:8;
626 	uint32_t   new_channel:8;
627 	uint32_t  switch_count:8;
628 } tDot11fFfext_chan_switch_ann_action;
629 
630 #define DOT11F_FF_EXT_CHAN_SWITCH_ANN_ACTION_LEN (4)
631 
632 void dot11f_unpack_ff_ext_chan_switch_ann_action(tpAniSirGlobal, uint8_t *,
633 						 tDot11fFfext_chan_switch_ann_action *);
634 
635 void dot11f_pack_ff_ext_chan_switch_ann_action(tpAniSirGlobal,
636 					       tDot11fFfext_chan_switch_ann_action *,
637 					       uint8_t *);
638 
639 
640 #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_OFFSET  0
641 #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_WIDTH   8
642 #define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_OFFSET     8
643 #define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_WIDTH      8
644 #define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_OFFSET  16
645 #define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_WIDTH   8
646 #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_OFFSET 24
647 #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_WIDTH  8
648 
649 typedef struct sDot11fFfp2p_action_oui {
650 	uint8_t oui_data[4];
651 } tDot11fFfp2p_action_oui;
652 
653 #define DOT11F_FF_P2P_ACTION_OUI_LEN (4)
654 
655 void dot11f_unpack_ff_p2p_action_oui(tpAniSirGlobal, uint8_t *,
656 				     tDot11fFfp2p_action_oui *);
657 
658 void dot11f_pack_ff_p2p_action_oui(tpAniSirGlobal, tDot11fFfp2p_action_oui *,
659 				   uint8_t *);
660 
661 typedef struct sDot11fFfp2p_action_subtype {
662 	uint8_t subtype;
663 } tDot11fFfp2p_action_subtype;
664 
665 #define DOT11F_FF_P2P_ACTION_SUBTYPE_LEN (1)
666 
667 void dot11f_unpack_ff_p2p_action_subtype(tpAniSirGlobal, uint8_t *,
668 					 tDot11fFfp2p_action_subtype *);
669 
670 void dot11f_pack_ff_p2p_action_subtype(tpAniSirGlobal,
671 				       tDot11fFfp2p_action_subtype *,
672 				       uint8_t *);
673 
674 
675 typedef struct sDot11fFfvendor_action_subtype {
676 	uint8_t subtype;
677 } tDot11fFfvendor_action_subtype;
678 
679 #define DOT11F_FF_VENDOR_ACTION_SUBTYPE_LEN (1)
680 
681 void dot11f_unpack_ff_vendor_action_subtype(tpAniSirGlobal, uint8_t *,
682 					    tDot11fFfvendor_action_subtype *);
683 
684 void dot11f_pack_ff_vendor_action_subtype(tpAniSirGlobal,
685 					  tDot11fFfvendor_action_subtype *,
686 					  uint8_t *);
687 
688 
689 typedef struct sDot11fFfvendor_oui {
690 	uint8_t oui_data[3];
691 } tDot11fFfvendor_oui;
692 
693 #define DOT11F_FF_VENDOR_OUI_LEN (3)
694 
695 void dot11f_unpack_ff_vendor_oui(tpAniSirGlobal, uint8_t *,
696 				 tDot11fFfvendor_oui *);
697 
698 void dot11f_pack_ff_vendor_oui(tpAniSirGlobal, tDot11fFfvendor_oui *,
699 			       uint8_t *);
700 
701 /*********************************************************************
702  * TLVs                                                              *
703  ********************************************************************/
704 
705 
706 /* ID 1 (0x0001) */
707 typedef struct sDot11fTLVAuthorizedMACs {
708 	uint8_t             present;
709 	uint8_t             mac[6];
710 } tDot11fTLVAuthorizedMACs;
711 
712 #define DOT11F_TLV_AUTHORIZEDMACS (1)
713 
714 /* N.B. These #defines do *not* include the ID & length */
715 #define DOT11F_TLV_AUTHORIZEDMACS_MIN_LEN (6)
716 
717 #define DOT11F_TLV_AUTHORIZEDMACS_MAX_LEN (6)
718 
719 #ifdef __cplusplus
720 extern "C" {
721 #endif /* C++ */
722 uint32_t dot11f_unpack_tlv_authorized_ma_cs(
723 	tpAniSirGlobal,
724 	uint8_t *,
725 	uint16_t,
726 	tDot11fTLVAuthorizedMACs*);
727 
728 uint32_t dot11f_pack_tlv_authorized_ma_cs(
729 	tpAniSirGlobal,
730 	tDot11fTLVAuthorizedMACs *,
731 	uint8_t *,
732 	uint32_t,
733 	uint32_t*);
734 
735 uint32_t dot11f_get_packed_tlv_AuthorizedMACs(
736 	tpAniSirGlobal,
737 	tDot11fTLVAuthorizedMACs *,
738 	uint32_t*);
739 
740 #ifdef __cplusplus
741 }; /* End extern "C". */
742 #endif /* C++ */
743 
744 /* ID 3 (0x0003) */
745 typedef struct sDot11fTLVRequestToEnroll {
746 	uint8_t             present;
747 	uint8_t             req;
748 } tDot11fTLVRequestToEnroll;
749 
750 #define DOT11F_TLV_REQUESTTOENROLL (3)
751 
752 /* N.B. These #defines do *not* include the ID & length */
753 #define DOT11F_TLV_REQUESTTOENROLL_MIN_LEN (1)
754 
755 #define DOT11F_TLV_REQUESTTOENROLL_MAX_LEN (1)
756 
757 #ifdef __cplusplus
758 extern "C" {
759 #endif /* C++ */
760 uint32_t dot11f_unpack_tlv_RequestToEnroll(
761 	tpAniSirGlobal,
762 	uint8_t *,
763 	uint16_t,
764 	tDot11fTLVRequestToEnroll*);
765 
766 uint32_t dot11f_pack_tlv_request_to_enroll(
767 	tpAniSirGlobal,
768 	tDot11fTLVRequestToEnroll *,
769 	uint8_t *,
770 	uint32_t,
771 	uint32_t*);
772 
773 uint32_t dot11f_get_packed_tlv_RequestToEnroll(
774 	tpAniSirGlobal,
775 	tDot11fTLVRequestToEnroll *,
776 	uint32_t*);
777 
778 #ifdef __cplusplus
779 }; /* End extern "C". */
780 #endif /* C++ */
781 
782 /* ID 0 (0x0000) */
783 typedef struct sDot11fTLVVersion2 {
784 	uint8_t             present;
785 	uint8_t                minor:4;
786 	uint8_t                major:4;
787 } tDot11fTLVVersion2;
788 
789 #define DOT11F_TLV_VERSION2 (0)
790 
791 /* N.B. These #defines do *not* include the ID & length */
792 #define DOT11F_TLV_VERSION2_MIN_LEN (1)
793 
794 #define DOT11F_TLV_VERSION2_MAX_LEN (1)
795 
796 #ifdef __cplusplus
797 extern "C" {
798 #endif /* C++ */
799 uint32_t dot11f_unpack_tlv_version2(
800 	tpAniSirGlobal,
801 	uint8_t *,
802 	uint16_t,
803 	tDot11fTLVVersion2*);
804 
805 uint32_t dot11f_pack_tlv_version2(
806 	tpAniSirGlobal,
807 	tDot11fTLVVersion2 *,
808 	uint8_t *,
809 	uint32_t,
810 	uint32_t*);
811 
812 uint32_t dot11f_get_packed_tlv_Version2(
813 	tpAniSirGlobal,
814 	tDot11fTLVVersion2 *,
815 	uint32_t*);
816 
817 #ifdef __cplusplus
818 }; /* End extern "C". */
819 #endif /* C++ */
820 
821 /* ID 4183 (0x1057) */
822 typedef struct sDot11fTLVAPSetupLocked {
823 	uint8_t             present;
824 	uint8_t             fLocked;
825 } tDot11fTLVAPSetupLocked;
826 
827 #define DOT11F_TLV_APSETUPLOCKED (4183)
828 
829 /* N.B. These #defines do *not* include the ID & length */
830 #define DOT11F_TLV_APSETUPLOCKED_MIN_LEN (3)
831 
832 #define DOT11F_TLV_APSETUPLOCKED_MAX_LEN (3)
833 
834 #ifdef __cplusplus
835 extern "C" {
836 #endif /* C++ */
837 uint32_t dot11f_unpack_tlv_APSetupLocked(
838 	tpAniSirGlobal,
839 	uint8_t *,
840 	uint16_t,
841 	tDot11fTLVAPSetupLocked*);
842 
843 uint32_t dot11f_pack_tlv_ap_setup_locked(
844 	tpAniSirGlobal,
845 	tDot11fTLVAPSetupLocked *,
846 	uint8_t *,
847 	uint32_t,
848 	uint32_t*);
849 
850 uint32_t dot11f_get_packed_tlv_APSetupLocked(
851 	tpAniSirGlobal,
852 	tDot11fTLVAPSetupLocked *,
853 	uint32_t*);
854 
855 #ifdef __cplusplus
856 }; /* End extern "C". */
857 #endif /* C++ */
858 
859 /* ID 4098 (0x1002) */
860 typedef struct sDot11fTLVAssociationState {
861 	uint8_t             present;
862 	uint16_t            state;
863 } tDot11fTLVAssociationState;
864 
865 #define DOT11F_TLV_ASSOCIATIONSTATE (4098)
866 
867 /* N.B. These #defines do *not* include the ID & length */
868 #define DOT11F_TLV_ASSOCIATIONSTATE_MIN_LEN (4)
869 
870 #define DOT11F_TLV_ASSOCIATIONSTATE_MAX_LEN (4)
871 
872 #ifdef __cplusplus
873 extern "C" {
874 #endif /* C++ */
875 uint32_t dot11f_unpack_tlv_AssociationState(
876 	tpAniSirGlobal,
877 	uint8_t *,
878 	uint16_t,
879 	tDot11fTLVAssociationState*);
880 
881 uint32_t dot11f_pack_tlv_association_state(
882 	tpAniSirGlobal,
883 	tDot11fTLVAssociationState *,
884 	uint8_t *,
885 	uint32_t,
886 	uint32_t*);
887 
888 uint32_t dot11f_get_packed_tlv_AssociationState(
889 	tpAniSirGlobal,
890 	tDot11fTLVAssociationState *,
891 	uint32_t*);
892 
893 #ifdef __cplusplus
894 }; /* End extern "C". */
895 #endif /* C++ */
896 
897 /* ID 4104 (0x1008) */
898 typedef struct sDot11fTLVConfigMethods {
899 	uint8_t             present;
900 	uint16_t            methods;
901 } tDot11fTLVConfigMethods;
902 
903 #define DOT11F_TLV_CONFIGMETHODS (4104)
904 
905 /* N.B. These #defines do *not* include the ID & length */
906 #define DOT11F_TLV_CONFIGMETHODS_MIN_LEN (4)
907 
908 #define DOT11F_TLV_CONFIGMETHODS_MAX_LEN (4)
909 
910 #ifdef __cplusplus
911 extern "C" {
912 #endif /* C++ */
913 uint32_t dot11f_unpack_tlv_ConfigMethods(
914 	tpAniSirGlobal,
915 	uint8_t *,
916 	uint16_t,
917 	tDot11fTLVConfigMethods*);
918 
919 uint32_t dot11f_pack_tlv_config_methods(
920 	tpAniSirGlobal,
921 	tDot11fTLVConfigMethods *,
922 	uint8_t *,
923 	uint32_t,
924 	uint32_t*);
925 
926 uint32_t dot11f_get_packed_tlv_ConfigMethods(
927 	tpAniSirGlobal,
928 	tDot11fTLVConfigMethods *,
929 	uint32_t*);
930 
931 #ifdef __cplusplus
932 }; /* End extern "C". */
933 #endif /* C++ */
934 
935 /* ID 4105 (0x1009) */
936 typedef struct sDot11fTLVConfigurationError {
937 	uint8_t             present;
938 	uint16_t            error;
939 } tDot11fTLVConfigurationError;
940 
941 #define DOT11F_TLV_CONFIGURATIONERROR (4105)
942 
943 /* N.B. These #defines do *not* include the ID & length */
944 #define DOT11F_TLV_CONFIGURATIONERROR_MIN_LEN (4)
945 
946 #define DOT11F_TLV_CONFIGURATIONERROR_MAX_LEN (4)
947 
948 #ifdef __cplusplus
949 extern "C" {
950 #endif /* C++ */
951 uint32_t dot11f_unpack_tlv_ConfigurationError(
952 	tpAniSirGlobal,
953 	uint8_t *,
954 	uint16_t,
955 	tDot11fTLVConfigurationError*);
956 
957 uint32_t dot11f_pack_tlv_configuration_error(
958 	tpAniSirGlobal,
959 	tDot11fTLVConfigurationError *,
960 	uint8_t *,
961 	uint32_t,
962 	uint32_t*);
963 
964 uint32_t dot11f_get_packed_tlv_ConfigurationError(
965 	tpAniSirGlobal,
966 	tDot11fTLVConfigurationError *,
967 	uint32_t*);
968 
969 #ifdef __cplusplus
970 }; /* End extern "C". */
971 #endif /* C++ */
972 
973 /* ID 4113 (0x1011) */
974 typedef struct sDot11fTLVDeviceName {
975 	uint8_t             present;
976 	uint8_t             num_text;
977 	uint8_t             text[32];
978 } tDot11fTLVDeviceName;
979 
980 #define DOT11F_TLV_DEVICENAME (4113)
981 
982 /* N.B. These #defines do *not* include the ID & length */
983 #define DOT11F_TLV_DEVICENAME_MIN_LEN (2)
984 
985 #define DOT11F_TLV_DEVICENAME_MAX_LEN (34)
986 
987 #ifdef __cplusplus
988 extern "C" {
989 #endif /* C++ */
990 uint32_t dot11f_unpack_tlv_device_name(
991 	tpAniSirGlobal,
992 	uint8_t *,
993 	uint16_t,
994 	tDot11fTLVDeviceName*);
995 
996 uint32_t dot11f_pack_tlv_device_name(
997 	tpAniSirGlobal,
998 	tDot11fTLVDeviceName *,
999 	uint8_t *,
1000 	uint32_t,
1001 	uint32_t*);
1002 
1003 uint32_t dot11f_get_packed_tlv_DeviceName(
1004 	tpAniSirGlobal,
1005 	tDot11fTLVDeviceName *,
1006 	uint32_t*);
1007 
1008 #ifdef __cplusplus
1009 }; /* End extern "C". */
1010 #endif /* C++ */
1011 
1012 /* ID 4114 (0x1012) */
1013 typedef struct sDot11fTLVDevicePasswordID {
1014 	uint8_t             present;
1015 	uint16_t            id;
1016 } tDot11fTLVDevicePasswordID;
1017 
1018 #define DOT11F_TLV_DEVICEPASSWORDID (4114)
1019 
1020 /* N.B. These #defines do *not* include the ID & length */
1021 #define DOT11F_TLV_DEVICEPASSWORDID_MIN_LEN (4)
1022 
1023 #define DOT11F_TLV_DEVICEPASSWORDID_MAX_LEN (4)
1024 
1025 #ifdef __cplusplus
1026 extern "C" {
1027 #endif /* C++ */
1028 uint32_t dot11f_unpack_tlv_DevicePasswordID(
1029 	tpAniSirGlobal,
1030 	uint8_t *,
1031 	uint16_t,
1032 	tDot11fTLVDevicePasswordID*);
1033 
1034 uint32_t dot11f_pack_tlv_device_password_id(
1035 	tpAniSirGlobal,
1036 	tDot11fTLVDevicePasswordID *,
1037 	uint8_t *,
1038 	uint32_t,
1039 	uint32_t*);
1040 
1041 uint32_t dot11f_get_packed_tlv_DevicePasswordID(
1042 	tpAniSirGlobal,
1043 	tDot11fTLVDevicePasswordID *,
1044 	uint32_t*);
1045 
1046 #ifdef __cplusplus
1047 }; /* End extern "C". */
1048 #endif /* C++ */
1049 
1050 /* ID 8 (0x0008) */
1051 typedef struct sDot11fTLVExtendedListenTiming {
1052 	uint8_t             present;
1053 	uint16_t            availibilityPeriod;
1054 	uint16_t            availibilityInterval;
1055 } tDot11fTLVExtendedListenTiming;
1056 
1057 #define DOT11F_TLV_EXTENDEDLISTENTIMING (8)
1058 
1059 /* N.B. These #defines do *not* include the ID & length */
1060 #define DOT11F_TLV_EXTENDEDLISTENTIMING_MIN_LEN (5)
1061 
1062 #define DOT11F_TLV_EXTENDEDLISTENTIMING_MAX_LEN (5)
1063 
1064 #ifdef __cplusplus
1065 extern "C" {
1066 #endif /* C++ */
1067 uint32_t dot11f_unpack_tlv_extended_listen_timing(
1068 	tpAniSirGlobal,
1069 	uint8_t *,
1070 	uint16_t,
1071 	tDot11fTLVExtendedListenTiming*);
1072 
1073 uint32_t dot11f_pack_tlv_extended_listen_timing(
1074 	tpAniSirGlobal,
1075 	tDot11fTLVExtendedListenTiming *,
1076 	uint8_t *,
1077 	uint32_t,
1078 	uint32_t*);
1079 
1080 uint32_t dot11f_get_packed_tlv_ExtendedListenTiming(
1081 	tpAniSirGlobal,
1082 	tDot11fTLVExtendedListenTiming *,
1083 	uint32_t*);
1084 
1085 #ifdef __cplusplus
1086 }; /* End extern "C". */
1087 #endif /* C++ */
1088 
1089 /* ID 6 (0x0006) */
1090 typedef struct sDot11fTLVListenChannel {
1091 	uint8_t             present;
1092 	uint8_t             countryString[3];
1093 	uint8_t             regulatoryClass;
1094 	uint8_t             channel;
1095 } tDot11fTLVListenChannel;
1096 
1097 #define DOT11F_TLV_LISTENCHANNEL (6)
1098 
1099 /* N.B. These #defines do *not* include the ID & length */
1100 #define DOT11F_TLV_LISTENCHANNEL_MIN_LEN (6)
1101 
1102 #define DOT11F_TLV_LISTENCHANNEL_MAX_LEN (6)
1103 
1104 #ifdef __cplusplus
1105 extern "C" {
1106 #endif /* C++ */
1107 uint32_t dot11f_unpack_tlv_listen_channel(
1108 	tpAniSirGlobal,
1109 	uint8_t *,
1110 	uint16_t,
1111 	tDot11fTLVListenChannel*);
1112 
1113 uint32_t dot11f_pack_tlv_listen_channel(
1114 	tpAniSirGlobal,
1115 	tDot11fTLVListenChannel *,
1116 	uint8_t *,
1117 	uint32_t,
1118 	uint32_t*);
1119 
1120 uint32_t dot11f_get_packed_tlv_ListenChannel(
1121 	tpAniSirGlobal,
1122 	tDot11fTLVListenChannel *,
1123 	uint32_t*);
1124 
1125 #ifdef __cplusplus
1126 }; /* End extern "C". */
1127 #endif /* C++ */
1128 
1129 /* ID 4129 (0x1021) */
1130 typedef struct sDot11fTLVManufacturer {
1131 	uint8_t             present;
1132 	uint8_t             num_name;
1133 	uint8_t             name[64];
1134 } tDot11fTLVManufacturer;
1135 
1136 #define DOT11F_TLV_MANUFACTURER (4129)
1137 
1138 /* N.B. These #defines do *not* include the ID & length */
1139 #define DOT11F_TLV_MANUFACTURER_MIN_LEN (2)
1140 
1141 #define DOT11F_TLV_MANUFACTURER_MAX_LEN (66)
1142 
1143 #ifdef __cplusplus
1144 extern "C" {
1145 #endif /* C++ */
1146 uint32_t dot11f_unpack_tlv_manufacturer(
1147 	tpAniSirGlobal,
1148 	uint8_t *,
1149 	uint16_t,
1150 	tDot11fTLVManufacturer*);
1151 
1152 uint32_t dot11f_pack_tlv_manufacturer(
1153 	tpAniSirGlobal,
1154 	tDot11fTLVManufacturer *,
1155 	uint8_t *,
1156 	uint32_t,
1157 	uint32_t*);
1158 
1159 uint32_t dot11f_get_packed_tlv_Manufacturer(
1160 	tpAniSirGlobal,
1161 	tDot11fTLVManufacturer *,
1162 	uint32_t*);
1163 
1164 #ifdef __cplusplus
1165 }; /* End extern "C". */
1166 #endif /* C++ */
1167 
1168 /* ID 1 (0x0001) */
1169 typedef struct sDot11fTLVMinorReasonCode {
1170 	uint8_t             present;
1171 	uint8_t             minorReasonCode;
1172 } tDot11fTLVMinorReasonCode;
1173 
1174 #define DOT11F_TLV_MINORREASONCODE (1)
1175 
1176 /* N.B. These #defines do *not* include the ID & length */
1177 #define DOT11F_TLV_MINORREASONCODE_MIN_LEN (2)
1178 
1179 #define DOT11F_TLV_MINORREASONCODE_MAX_LEN (2)
1180 
1181 #ifdef __cplusplus
1182 extern "C" {
1183 #endif /* C++ */
1184 uint32_t dot11f_unpack_tlv_MinorReasonCode(
1185 	tpAniSirGlobal,
1186 	uint8_t *,
1187 	uint16_t,
1188 	tDot11fTLVMinorReasonCode*);
1189 
1190 uint32_t dot11f_pack_tlv_minor_reason_code(
1191 	tpAniSirGlobal,
1192 	tDot11fTLVMinorReasonCode *,
1193 	uint8_t *,
1194 	uint32_t,
1195 	uint32_t*);
1196 
1197 uint32_t dot11f_get_packed_tlv_MinorReasonCode(
1198 	tpAniSirGlobal,
1199 	tDot11fTLVMinorReasonCode *,
1200 	uint32_t*);
1201 
1202 #ifdef __cplusplus
1203 }; /* End extern "C". */
1204 #endif /* C++ */
1205 
1206 /* ID 4131 (0x1023) */
1207 typedef struct sDot11fTLVModelName {
1208 	uint8_t             present;
1209 	uint8_t             num_text;
1210 	uint8_t             text[32];
1211 } tDot11fTLVModelName;
1212 
1213 #define DOT11F_TLV_MODELNAME (4131)
1214 
1215 /* N.B. These #defines do *not* include the ID & length */
1216 #define DOT11F_TLV_MODELNAME_MIN_LEN (2)
1217 
1218 #define DOT11F_TLV_MODELNAME_MAX_LEN (34)
1219 
1220 #ifdef __cplusplus
1221 extern "C" {
1222 #endif /* C++ */
1223 uint32_t dot11f_unpack_tlv_model_name(
1224 	tpAniSirGlobal,
1225 	uint8_t *,
1226 	uint16_t,
1227 	tDot11fTLVModelName*);
1228 
1229 uint32_t dot11f_pack_tlv_model_name(
1230 	tpAniSirGlobal,
1231 	tDot11fTLVModelName *,
1232 	uint8_t *,
1233 	uint32_t,
1234 	uint32_t*);
1235 
1236 uint32_t dot11f_get_packed_tlv_ModelName(
1237 	tpAniSirGlobal,
1238 	tDot11fTLVModelName *,
1239 	uint32_t*);
1240 
1241 #ifdef __cplusplus
1242 }; /* End extern "C". */
1243 #endif /* C++ */
1244 
1245 /* ID 4132 (0x1024) */
1246 typedef struct sDot11fTLVModelNumber {
1247 	uint8_t             present;
1248 	uint8_t             num_text;
1249 	uint8_t             text[32];
1250 } tDot11fTLVModelNumber;
1251 
1252 #define DOT11F_TLV_MODELNUMBER (4132)
1253 
1254 /* N.B. These #defines do *not* include the ID & length */
1255 #define DOT11F_TLV_MODELNUMBER_MIN_LEN (2)
1256 
1257 #define DOT11F_TLV_MODELNUMBER_MAX_LEN (34)
1258 
1259 #ifdef __cplusplus
1260 extern "C" {
1261 #endif /* C++ */
1262 uint32_t dot11f_unpack_tlv_model_number(
1263 	tpAniSirGlobal,
1264 	uint8_t *,
1265 	uint16_t,
1266 	tDot11fTLVModelNumber*);
1267 
1268 uint32_t dot11f_pack_tlv_model_number(
1269 	tpAniSirGlobal,
1270 	tDot11fTLVModelNumber *,
1271 	uint8_t *,
1272 	uint32_t,
1273 	uint32_t*);
1274 
1275 uint32_t dot11f_get_packed_tlv_ModelNumber(
1276 	tpAniSirGlobal,
1277 	tDot11fTLVModelNumber *,
1278 	uint32_t*);
1279 
1280 #ifdef __cplusplus
1281 }; /* End extern "C". */
1282 #endif /* C++ */
1283 
1284 /* ID 12 (0x000c) */
1285 typedef struct sDot11fTLVNoticeOfAbsence {
1286 	uint8_t             present;
1287 	uint8_t             index;
1288 	uint8_t             CTSWindowOppPS;
1289 	uint8_t             num_NoADesc;
1290 	uint8_t             NoADesc[36];
1291 } tDot11fTLVNoticeOfAbsence;
1292 
1293 #define DOT11F_TLV_NOTICEOFABSENCE (12)
1294 
1295 /* N.B. These #defines do *not* include the ID & length */
1296 #define DOT11F_TLV_NOTICEOFABSENCE_MIN_LEN (3)
1297 
1298 #define DOT11F_TLV_NOTICEOFABSENCE_MAX_LEN (39)
1299 
1300 #ifdef __cplusplus
1301 extern "C" {
1302 #endif /* C++ */
1303 uint32_t dot11f_unpack_tlv_notice_of_absence(
1304 	tpAniSirGlobal,
1305 	uint8_t *,
1306 	uint16_t,
1307 	tDot11fTLVNoticeOfAbsence*);
1308 
1309 uint32_t dot11f_pack_tlv_notice_of_absence(
1310 	tpAniSirGlobal,
1311 	tDot11fTLVNoticeOfAbsence *,
1312 	uint8_t *,
1313 	uint32_t,
1314 	uint32_t*);
1315 
1316 uint32_t dot11f_get_packed_tlv_NoticeOfAbsence(
1317 	tpAniSirGlobal,
1318 	tDot11fTLVNoticeOfAbsence *,
1319 	uint32_t*);
1320 
1321 #ifdef __cplusplus
1322 }; /* End extern "C". */
1323 #endif /* C++ */
1324 
1325 /* ID 17 (0x0011) */
1326 typedef struct sDot11fTLVOperatingChannel {
1327 	uint8_t             present;
1328 	uint8_t             countryString[3];
1329 	uint8_t             regulatoryClass;
1330 	uint8_t             channel;
1331 } tDot11fTLVOperatingChannel;
1332 
1333 #define DOT11F_TLV_OPERATINGCHANNEL (17)
1334 
1335 /* N.B. These #defines do *not* include the ID & length */
1336 #define DOT11F_TLV_OPERATINGCHANNEL_MIN_LEN (6)
1337 
1338 #define DOT11F_TLV_OPERATINGCHANNEL_MAX_LEN (6)
1339 
1340 #ifdef __cplusplus
1341 extern "C" {
1342 #endif /* C++ */
1343 uint32_t dot11f_unpack_tlv_operating_channel(
1344 	tpAniSirGlobal,
1345 	uint8_t *,
1346 	uint16_t,
1347 	tDot11fTLVOperatingChannel*);
1348 
1349 uint32_t dot11f_pack_tlv_operating_channel(
1350 	tpAniSirGlobal,
1351 	tDot11fTLVOperatingChannel *,
1352 	uint8_t *,
1353 	uint32_t,
1354 	uint32_t*);
1355 
1356 uint32_t dot11f_get_packed_tlv_OperatingChannel(
1357 	tpAniSirGlobal,
1358 	tDot11fTLVOperatingChannel *,
1359 	uint32_t*);
1360 
1361 #ifdef __cplusplus
1362 }; /* End extern "C". */
1363 #endif /* C++ */
1364 
1365 /* ID 2 (0x0002) */
1366 typedef struct sDot11fTLVP2PCapability {
1367 	uint8_t             present;
1368 	uint8_t             deviceCapability;
1369 	uint8_t             groupCapability;
1370 } tDot11fTLVP2PCapability;
1371 
1372 #define DOT11F_TLV_P2PCAPABILITY (2)
1373 
1374 /* N.B. These #defines do *not* include the ID & length */
1375 #define DOT11F_TLV_P2PCAPABILITY_MIN_LEN (3)
1376 
1377 #define DOT11F_TLV_P2PCAPABILITY_MAX_LEN (3)
1378 
1379 #ifdef __cplusplus
1380 extern "C" {
1381 #endif /* C++ */
1382 uint32_t dot11f_unpack_tlv_p2_p_capability(
1383 	tpAniSirGlobal,
1384 	uint8_t *,
1385 	uint16_t,
1386 	tDot11fTLVP2PCapability*);
1387 
1388 uint32_t dot11f_pack_tlv_p2_p_capability(
1389 	tpAniSirGlobal,
1390 	tDot11fTLVP2PCapability *,
1391 	uint8_t *,
1392 	uint32_t,
1393 	uint32_t*);
1394 
1395 uint32_t dot11f_get_packed_tlv_P2PCapability(
1396 	tpAniSirGlobal,
1397 	tDot11fTLVP2PCapability *,
1398 	uint32_t*);
1399 
1400 #ifdef __cplusplus
1401 }; /* End extern "C". */
1402 #endif /* C++ */
1403 
1404 /* ID 3 (0x0003) */
1405 typedef struct sDot11fTLVP2PDeviceId {
1406 	uint8_t             present;
1407 	uint8_t             P2PDeviceAddress[6];
1408 } tDot11fTLVP2PDeviceId;
1409 
1410 #define DOT11F_TLV_P2PDEVICEID (3)
1411 
1412 /* N.B. These #defines do *not* include the ID & length */
1413 #define DOT11F_TLV_P2PDEVICEID_MIN_LEN (7)
1414 
1415 #define DOT11F_TLV_P2PDEVICEID_MAX_LEN (7)
1416 
1417 #ifdef __cplusplus
1418 extern "C" {
1419 #endif /* C++ */
1420 uint32_t dot11f_unpack_tlv_p2_p_device_id(
1421 	tpAniSirGlobal,
1422 	uint8_t *,
1423 	uint16_t,
1424 	tDot11fTLVP2PDeviceId*);
1425 
1426 uint32_t dot11f_pack_tlv_p2_p_device_id(
1427 	tpAniSirGlobal,
1428 	tDot11fTLVP2PDeviceId *,
1429 	uint8_t *,
1430 	uint32_t,
1431 	uint32_t*);
1432 
1433 uint32_t dot11f_get_packed_tlv_P2PDeviceId(
1434 	tpAniSirGlobal,
1435 	tDot11fTLVP2PDeviceId *,
1436 	uint32_t*);
1437 
1438 #ifdef __cplusplus
1439 }; /* End extern "C". */
1440 #endif /* C++ */
1441 
1442 /* ID 13 (0x000d) */
1443 typedef struct sDot11fTLVP2PDeviceInfo {
1444 	uint8_t                     present;
1445 	uint8_t                     P2PDeviceAddress[6];
1446 	uint16_t                    configMethod;
1447 	uint8_t                     primaryDeviceType[8];
1448 	tDot11fTLVDeviceName        DeviceName;
1449 } tDot11fTLVP2PDeviceInfo;
1450 
1451 #define DOT11F_TLV_P2PDEVICEINFO (13)
1452 
1453 /* N.B. These #defines do *not* include the ID & length */
1454 #define DOT11F_TLV_P2PDEVICEINFO_MIN_LEN (17)
1455 
1456 #define DOT11F_TLV_P2PDEVICEINFO_MAX_LEN (53)
1457 
1458 #ifdef __cplusplus
1459 extern "C" {
1460 #endif /* C++ */
1461 uint32_t dot11f_unpack_tlv_p2_p_device_info(
1462 	tpAniSirGlobal,
1463 	uint8_t *,
1464 	uint16_t,
1465 	tDot11fTLVP2PDeviceInfo*);
1466 
1467 uint32_t dot11f_pack_tlv_p2_p_device_info(
1468 	tpAniSirGlobal,
1469 	tDot11fTLVP2PDeviceInfo *,
1470 	uint8_t *,
1471 	uint32_t,
1472 	uint32_t*);
1473 
1474 uint32_t dot11f_get_packed_tlv_P2PDeviceInfo(
1475 	tpAniSirGlobal,
1476 	tDot11fTLVP2PDeviceInfo *,
1477 	uint32_t*);
1478 
1479 #ifdef __cplusplus
1480 }; /* End extern "C". */
1481 #endif /* C++ */
1482 
1483 /* ID 14 (0x000e) */
1484 typedef struct sDot11fTLVP2PGroupInfo {
1485 	uint8_t             present;
1486 	uint8_t             num_P2PClientInfoDesc;
1487 	uint8_t             P2PClientInfoDesc[1024];
1488 } tDot11fTLVP2PGroupInfo;
1489 
1490 #define DOT11F_TLV_P2PGROUPINFO (14)
1491 
1492 /* N.B. These #defines do *not* include the ID & length */
1493 #define DOT11F_TLV_P2PGROUPINFO_MIN_LEN (1)
1494 
1495 #define DOT11F_TLV_P2PGROUPINFO_MAX_LEN (1025)
1496 
1497 #ifdef __cplusplus
1498 extern "C" {
1499 #endif /* C++ */
1500 uint32_t dot11f_unpack_tlv_p2_p_group_info(
1501 	tpAniSirGlobal,
1502 	uint8_t *,
1503 	uint16_t,
1504 	tDot11fTLVP2PGroupInfo*);
1505 
1506 uint32_t dot11f_pack_tlv_p2_p_group_info(
1507 	tpAniSirGlobal,
1508 	tDot11fTLVP2PGroupInfo *,
1509 	uint8_t *,
1510 	uint32_t,
1511 	uint32_t*);
1512 
1513 uint32_t dot11f_get_packed_tlv_P2PGroupInfo(
1514 	tpAniSirGlobal,
1515 	tDot11fTLVP2PGroupInfo *,
1516 	uint32_t*);
1517 
1518 #ifdef __cplusplus
1519 }; /* End extern "C". */
1520 #endif /* C++ */
1521 
1522 /* ID 0 (0x0000) */
1523 typedef struct sDot11fTLVP2PStatus {
1524 	uint8_t             present;
1525 	uint8_t             status;
1526 } tDot11fTLVP2PStatus;
1527 
1528 #define DOT11F_TLV_P2PSTATUS (0)
1529 
1530 /* N.B. These #defines do *not* include the ID & length */
1531 #define DOT11F_TLV_P2PSTATUS_MIN_LEN (2)
1532 
1533 #define DOT11F_TLV_P2PSTATUS_MAX_LEN (2)
1534 
1535 #ifdef __cplusplus
1536 extern "C" {
1537 #endif /* C++ */
1538 uint32_t dot11f_unpack_tlv_P2PStatus(
1539 	tpAniSirGlobal,
1540 	uint8_t *,
1541 	uint16_t,
1542 	tDot11fTLVP2PStatus*);
1543 
1544 uint32_t dot11f_pack_tlv_p2_p_status(
1545 	tpAniSirGlobal,
1546 	tDot11fTLVP2PStatus *,
1547 	uint8_t *,
1548 	uint32_t,
1549 	uint32_t*);
1550 
1551 uint32_t dot11f_get_packed_tlv_P2PStatus(
1552 	tpAniSirGlobal,
1553 	tDot11fTLVP2PStatus *,
1554 	uint32_t*);
1555 
1556 #ifdef __cplusplus
1557 }; /* End extern "C". */
1558 #endif /* C++ */
1559 
1560 /* ID 4180 (0x1054) */
1561 typedef struct sDot11fTLVPrimaryDeviceType {
1562 	uint8_t             present;
1563 	uint16_t            primary_category;
1564 	uint8_t             oui[4];
1565 	uint16_t            sub_category;
1566 } tDot11fTLVPrimaryDeviceType;
1567 
1568 #define DOT11F_TLV_PRIMARYDEVICETYPE (4180)
1569 
1570 /* N.B. These #defines do *not* include the ID & length */
1571 #define DOT11F_TLV_PRIMARYDEVICETYPE_MIN_LEN (10)
1572 
1573 #define DOT11F_TLV_PRIMARYDEVICETYPE_MAX_LEN (10)
1574 
1575 #ifdef __cplusplus
1576 extern "C" {
1577 #endif /* C++ */
1578 uint32_t dot11f_unpack_tlv_primary_device_type(
1579 	tpAniSirGlobal,
1580 	uint8_t *,
1581 	uint16_t,
1582 	tDot11fTLVPrimaryDeviceType*);
1583 
1584 uint32_t dot11f_pack_tlv_primary_device_type(
1585 	tpAniSirGlobal,
1586 	tDot11fTLVPrimaryDeviceType *,
1587 	uint8_t *,
1588 	uint32_t,
1589 	uint32_t*);
1590 
1591 uint32_t dot11f_get_packed_tlv_PrimaryDeviceType(
1592 	tpAniSirGlobal,
1593 	tDot11fTLVPrimaryDeviceType *,
1594 	uint32_t*);
1595 
1596 #ifdef __cplusplus
1597 }; /* End extern "C". */
1598 #endif /* C++ */
1599 
1600 /* ID 4156 (0x103c) */
1601 typedef struct sDot11fTLVRFBands {
1602 	uint8_t             present;
1603 	uint8_t             bands;
1604 } tDot11fTLVRFBands;
1605 
1606 #define DOT11F_TLV_RFBANDS (4156)
1607 
1608 /* N.B. These #defines do *not* include the ID & length */
1609 #define DOT11F_TLV_RFBANDS_MIN_LEN (3)
1610 
1611 #define DOT11F_TLV_RFBANDS_MAX_LEN (3)
1612 
1613 #ifdef __cplusplus
1614 extern "C" {
1615 #endif /* C++ */
1616 uint32_t dot11f_unpack_tlv_RFBands(
1617 	tpAniSirGlobal,
1618 	uint8_t *,
1619 	uint16_t,
1620 	tDot11fTLVRFBands*);
1621 
1622 uint32_t dot11f_pack_tlv_rf_bands(
1623 	tpAniSirGlobal,
1624 	tDot11fTLVRFBands *,
1625 	uint8_t *,
1626 	uint32_t,
1627 	uint32_t*);
1628 
1629 uint32_t dot11f_get_packed_tlv_RFBands(
1630 	tpAniSirGlobal,
1631 	tDot11fTLVRFBands *,
1632 	uint32_t*);
1633 
1634 #ifdef __cplusplus
1635 }; /* End extern "C". */
1636 #endif /* C++ */
1637 
1638 /* ID 4202 (0x106a) */
1639 typedef struct sDot11fTLVRequestDeviceType {
1640 	uint8_t             present;
1641 	uint16_t            primary_category;
1642 	uint8_t             oui[4];
1643 	uint16_t            sub_category;
1644 } tDot11fTLVRequestDeviceType;
1645 
1646 #define DOT11F_TLV_REQUESTDEVICETYPE (4202)
1647 
1648 /* N.B. These #defines do *not* include the ID & length */
1649 #define DOT11F_TLV_REQUESTDEVICETYPE_MIN_LEN (10)
1650 
1651 #define DOT11F_TLV_REQUESTDEVICETYPE_MAX_LEN (10)
1652 
1653 #ifdef __cplusplus
1654 extern "C" {
1655 #endif /* C++ */
1656 uint32_t dot11f_unpack_tlv_request_device_type(
1657 	tpAniSirGlobal,
1658 	uint8_t *,
1659 	uint16_t,
1660 	tDot11fTLVRequestDeviceType*);
1661 
1662 uint32_t dot11f_pack_tlv_request_device_type(
1663 	tpAniSirGlobal,
1664 	tDot11fTLVRequestDeviceType *,
1665 	uint8_t *,
1666 	uint32_t,
1667 	uint32_t*);
1668 
1669 uint32_t dot11f_get_packed_tlv_RequestDeviceType(
1670 	tpAniSirGlobal,
1671 	tDot11fTLVRequestDeviceType *,
1672 	uint32_t*);
1673 
1674 #ifdef __cplusplus
1675 }; /* End extern "C". */
1676 #endif /* C++ */
1677 
1678 /* ID 4154 (0x103a) */
1679 typedef struct sDot11fTLVRequestType {
1680 	uint8_t             present;
1681 	uint8_t             reqType;
1682 } tDot11fTLVRequestType;
1683 
1684 #define DOT11F_TLV_REQUESTTYPE (4154)
1685 
1686 /* N.B. These #defines do *not* include the ID & length */
1687 #define DOT11F_TLV_REQUESTTYPE_MIN_LEN (3)
1688 
1689 #define DOT11F_TLV_REQUESTTYPE_MAX_LEN (3)
1690 
1691 #ifdef __cplusplus
1692 extern "C" {
1693 #endif /* C++ */
1694 uint32_t dot11f_unpack_tlv_RequestType(
1695 	tpAniSirGlobal,
1696 	uint8_t *,
1697 	uint16_t,
1698 	tDot11fTLVRequestType*);
1699 
1700 uint32_t dot11f_pack_tlv_request_type(
1701 	tpAniSirGlobal,
1702 	tDot11fTLVRequestType *,
1703 	uint8_t *,
1704 	uint32_t,
1705 	uint32_t*);
1706 
1707 uint32_t dot11f_get_packed_tlv_RequestType(
1708 	tpAniSirGlobal,
1709 	tDot11fTLVRequestType *,
1710 	uint32_t*);
1711 
1712 #ifdef __cplusplus
1713 }; /* End extern "C". */
1714 #endif /* C++ */
1715 
1716 /* ID 4155 (0x103b) */
1717 typedef struct sDot11fTLVResponseType {
1718 	uint8_t             present;
1719 	uint8_t             resType;
1720 } tDot11fTLVResponseType;
1721 
1722 #define DOT11F_TLV_RESPONSETYPE (4155)
1723 
1724 /* N.B. These #defines do *not* include the ID & length */
1725 #define DOT11F_TLV_RESPONSETYPE_MIN_LEN (3)
1726 
1727 #define DOT11F_TLV_RESPONSETYPE_MAX_LEN (3)
1728 
1729 #ifdef __cplusplus
1730 extern "C" {
1731 #endif /* C++ */
1732 uint32_t dot11f_unpack_tlv_ResponseType(
1733 	tpAniSirGlobal,
1734 	uint8_t *,
1735 	uint16_t,
1736 	tDot11fTLVResponseType*);
1737 
1738 uint32_t dot11f_pack_tlv_response_type(
1739 	tpAniSirGlobal,
1740 	tDot11fTLVResponseType *,
1741 	uint8_t *,
1742 	uint32_t,
1743 	uint32_t*);
1744 
1745 uint32_t dot11f_get_packed_tlv_ResponseType(
1746 	tpAniSirGlobal,
1747 	tDot11fTLVResponseType *,
1748 	uint32_t*);
1749 
1750 #ifdef __cplusplus
1751 }; /* End extern "C". */
1752 #endif /* C++ */
1753 
1754 /* ID 4161 (0x1041) */
1755 typedef struct sDot11fTLVSelectedRegistrar {
1756 	uint8_t             present;
1757 	uint8_t             selected;
1758 } tDot11fTLVSelectedRegistrar;
1759 
1760 #define DOT11F_TLV_SELECTEDREGISTRAR (4161)
1761 
1762 /* N.B. These #defines do *not* include the ID & length */
1763 #define DOT11F_TLV_SELECTEDREGISTRAR_MIN_LEN (3)
1764 
1765 #define DOT11F_TLV_SELECTEDREGISTRAR_MAX_LEN (3)
1766 
1767 #ifdef __cplusplus
1768 extern "C" {
1769 #endif /* C++ */
1770 uint32_t dot11f_unpack_tlv_SelectedRegistrar(
1771 	tpAniSirGlobal,
1772 	uint8_t *,
1773 	uint16_t,
1774 	tDot11fTLVSelectedRegistrar*);
1775 
1776 uint32_t dot11f_pack_tlv_selected_registrar(
1777 	tpAniSirGlobal,
1778 	tDot11fTLVSelectedRegistrar *,
1779 	uint8_t *,
1780 	uint32_t,
1781 	uint32_t*);
1782 
1783 uint32_t dot11f_get_packed_tlv_SelectedRegistrar(
1784 	tpAniSirGlobal,
1785 	tDot11fTLVSelectedRegistrar *,
1786 	uint32_t*);
1787 
1788 #ifdef __cplusplus
1789 }; /* End extern "C". */
1790 #endif /* C++ */
1791 
1792 /* ID 4179 (0x1053) */
1793 typedef struct sDot11fTLVSelectedRegistrarConfigMethods {
1794 	uint8_t             present;
1795 	uint16_t            methods;
1796 } tDot11fTLVSelectedRegistrarConfigMethods;
1797 
1798 #define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS (4179)
1799 
1800 /* N.B. These #defines do *not* include the ID & length */
1801 #define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MIN_LEN (4)
1802 
1803 #define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MAX_LEN (4)
1804 
1805 #ifdef __cplusplus
1806 extern "C" {
1807 #endif /* C++ */
1808 uint32_t dot11f_unpack_tlv_SelectedRegistrarConfigMethods(
1809 	tpAniSirGlobal,
1810 	uint8_t *,
1811 	uint16_t,
1812 	tDot11fTLVSelectedRegistrarConfigMethods*);
1813 
1814 uint32_t dot11f_pack_tlv_selected_registrar_config_methods(
1815 	tpAniSirGlobal,
1816 	tDot11fTLVSelectedRegistrarConfigMethods *,
1817 	uint8_t *,
1818 	uint32_t,
1819 	uint32_t*);
1820 
1821 uint32_t dot11f_get_packed_tlv_SelectedRegistrarConfigMethods(
1822 	tpAniSirGlobal,
1823 	tDot11fTLVSelectedRegistrarConfigMethods *,
1824 	uint32_t*);
1825 
1826 #ifdef __cplusplus
1827 }; /* End extern "C". */
1828 #endif /* C++ */
1829 
1830 /* ID 4162 (0x1042) */
1831 typedef struct sDot11fTLVSerialNumber {
1832 	uint8_t             present;
1833 	uint8_t             num_text;
1834 	uint8_t             text[32];
1835 } tDot11fTLVSerialNumber;
1836 
1837 #define DOT11F_TLV_SERIALNUMBER (4162)
1838 
1839 /* N.B. These #defines do *not* include the ID & length */
1840 #define DOT11F_TLV_SERIALNUMBER_MIN_LEN (2)
1841 
1842 #define DOT11F_TLV_SERIALNUMBER_MAX_LEN (34)
1843 
1844 #ifdef __cplusplus
1845 extern "C" {
1846 #endif /* C++ */
1847 uint32_t dot11f_unpack_tlv_serial_number(
1848 	tpAniSirGlobal,
1849 	uint8_t *,
1850 	uint16_t,
1851 	tDot11fTLVSerialNumber*);
1852 
1853 uint32_t dot11f_pack_tlv_serial_number(
1854 	tpAniSirGlobal,
1855 	tDot11fTLVSerialNumber *,
1856 	uint8_t *,
1857 	uint32_t,
1858 	uint32_t*);
1859 
1860 uint32_t dot11f_get_packed_tlv_SerialNumber(
1861 	tpAniSirGlobal,
1862 	tDot11fTLVSerialNumber *,
1863 	uint32_t*);
1864 
1865 #ifdef __cplusplus
1866 }; /* End extern "C". */
1867 #endif /* C++ */
1868 
1869 /* ID 4167 (0x1047) */
1870 typedef struct sDot11fTLVUUID_E {
1871 	uint8_t             present;
1872 	uint8_t             uuid[16];
1873 } tDot11fTLVUUID_E;
1874 
1875 #define DOT11F_TLV_UUID_E (4167)
1876 
1877 /* N.B. These #defines do *not* include the ID & length */
1878 #define DOT11F_TLV_UUID_E_MIN_LEN (18)
1879 
1880 #define DOT11F_TLV_UUID_E_MAX_LEN (18)
1881 
1882 #ifdef __cplusplus
1883 extern "C" {
1884 #endif /* C++ */
1885 uint32_t dot11f_unpack_tlv_uuid_e(
1886 	tpAniSirGlobal,
1887 	uint8_t *,
1888 	uint16_t,
1889 	tDot11fTLVUUID_E*);
1890 
1891 uint32_t dot11f_pack_tlv_uuid_e(
1892 	tpAniSirGlobal,
1893 	tDot11fTLVUUID_E *,
1894 	uint8_t *,
1895 	uint32_t,
1896 	uint32_t*);
1897 
1898 uint32_t dot11f_get_packed_tlv_UUID_E(
1899 	tpAniSirGlobal,
1900 	tDot11fTLVUUID_E *,
1901 	uint32_t*);
1902 
1903 #ifdef __cplusplus
1904 }; /* End extern "C". */
1905 #endif /* C++ */
1906 
1907 /* ID 4168 (0x1048) */
1908 typedef struct sDot11fTLVUUID_R {
1909 	uint8_t             present;
1910 	uint8_t             uuid[16];
1911 } tDot11fTLVUUID_R;
1912 
1913 #define DOT11F_TLV_UUID_R (4168)
1914 
1915 /* N.B. These #defines do *not* include the ID & length */
1916 #define DOT11F_TLV_UUID_R_MIN_LEN (18)
1917 
1918 #define DOT11F_TLV_UUID_R_MAX_LEN (18)
1919 
1920 #ifdef __cplusplus
1921 extern "C" {
1922 #endif /* C++ */
1923 uint32_t dot11f_unpack_tlv_uuid_r(
1924 	tpAniSirGlobal,
1925 	uint8_t *,
1926 	uint16_t,
1927 	tDot11fTLVUUID_R*);
1928 
1929 uint32_t dot11f_pack_tlv_uuid_r(
1930 	tpAniSirGlobal,
1931 	tDot11fTLVUUID_R *,
1932 	uint8_t *,
1933 	uint32_t,
1934 	uint32_t*);
1935 
1936 uint32_t dot11f_get_packed_tlv_UUID_R(
1937 	tpAniSirGlobal,
1938 	tDot11fTLVUUID_R *,
1939 	uint32_t*);
1940 
1941 #ifdef __cplusplus
1942 }; /* End extern "C". */
1943 #endif /* C++ */
1944 
1945 /* ID 4169 (0x1049) */
1946 typedef struct sDot11fTLVVendorExtension {
1947 	uint8_t                          present;
1948 	uint8_t                          vendorId[3];
1949 	tDot11fTLVVersion2               Version2;
1950 	tDot11fTLVAuthorizedMACs         AuthorizedMACs;
1951 	tDot11fTLVRequestToEnroll        RequestToEnroll;
1952 } tDot11fTLVVendorExtension;
1953 
1954 #define DOT11F_TLV_VENDOREXTENSION (4169)
1955 
1956 /* N.B. These #defines do *not* include the ID & length */
1957 #define DOT11F_TLV_VENDOREXTENSION_MIN_LEN (5)
1958 
1959 #define DOT11F_TLV_VENDOREXTENSION_MAX_LEN (19)
1960 
1961 #ifdef __cplusplus
1962 extern "C" {
1963 #endif /* C++ */
1964 uint32_t dot11f_unpack_tlv_vendor_extension(
1965 	tpAniSirGlobal,
1966 	uint8_t *,
1967 	uint16_t,
1968 	tDot11fTLVVendorExtension*);
1969 
1970 uint32_t dot11f_pack_tlv_vendor_extension(
1971 	tpAniSirGlobal,
1972 	tDot11fTLVVendorExtension *,
1973 	uint8_t *,
1974 	uint32_t,
1975 	uint32_t*);
1976 
1977 uint32_t dot11f_get_packed_tlv_VendorExtension(
1978 	tpAniSirGlobal,
1979 	tDot11fTLVVendorExtension *,
1980 	uint32_t*);
1981 
1982 #ifdef __cplusplus
1983 }; /* End extern "C". */
1984 #endif /* C++ */
1985 
1986 /* ID 4170 (0x104a) */
1987 typedef struct sDot11fTLVVersion {
1988 	uint8_t             present;
1989 	uint8_t                minor:4;
1990 	uint8_t                major:4;
1991 } tDot11fTLVVersion;
1992 
1993 #define DOT11F_TLV_VERSION (4170)
1994 
1995 /* N.B. These #defines do *not* include the ID & length */
1996 #define DOT11F_TLV_VERSION_MIN_LEN (3)
1997 
1998 #define DOT11F_TLV_VERSION_MAX_LEN (3)
1999 
2000 #ifdef __cplusplus
2001 extern "C" {
2002 #endif /* C++ */
2003 uint32_t dot11f_unpack_tlv_version(
2004 	tpAniSirGlobal,
2005 	uint8_t *,
2006 	uint16_t,
2007 	tDot11fTLVVersion*);
2008 
2009 uint32_t dot11f_pack_tlv_version(
2010 	tpAniSirGlobal,
2011 	tDot11fTLVVersion *,
2012 	uint8_t *,
2013 	uint32_t,
2014 	uint32_t*);
2015 
2016 uint32_t dot11f_get_packed_tlv_Version(
2017 	tpAniSirGlobal,
2018 	tDot11fTLVVersion *,
2019 	uint32_t*);
2020 
2021 #ifdef __cplusplus
2022 }; /* End extern "C". */
2023 #endif /* C++ */
2024 
2025 /* ID 4164 (0x1044) */
2026 typedef struct sDot11fTLVWPSState {
2027 	uint8_t             present;
2028 	uint8_t             state;
2029 } tDot11fTLVWPSState;
2030 
2031 #define DOT11F_TLV_WPSSTATE (4164)
2032 
2033 /* N.B. These #defines do *not* include the ID & length */
2034 #define DOT11F_TLV_WPSSTATE_MIN_LEN (3)
2035 
2036 #define DOT11F_TLV_WPSSTATE_MAX_LEN (3)
2037 
2038 #ifdef __cplusplus
2039 extern "C" {
2040 #endif /* C++ */
2041 uint32_t dot11f_unpack_tlv_WPSState(
2042 	tpAniSirGlobal,
2043 	uint8_t *,
2044 	uint16_t,
2045 	tDot11fTLVWPSState*);
2046 
2047 uint32_t dot11f_pack_tlv_wps_state(
2048 	tpAniSirGlobal,
2049 	tDot11fTLVWPSState *,
2050 	uint8_t *,
2051 	uint32_t,
2052 	uint32_t*);
2053 
2054 uint32_t dot11f_get_packed_tlv_WPSState(
2055 	tpAniSirGlobal,
2056 	tDot11fTLVWPSState *,
2057 	uint32_t*);
2058 
2059 #ifdef __cplusplus
2060 }; /* End extern "C". */
2061 #endif /* C++ */
2062 
2063 /* ID 4 (0x0004) */
2064 typedef struct sDot11fTLVassoc_disallowed {
2065 	uint8_t             present;
2066 	uint8_t             reason_code;
2067 } tDot11fTLVassoc_disallowed;
2068 
2069 #define DOT11F_TLV_ASSOC_DISALLOWED (4)
2070 
2071 /* N.B. These #defines do *not* include the ID & length */
2072 #define DOT11F_TLV_ASSOC_DISALLOWED_MIN_LEN (1)
2073 
2074 #define DOT11F_TLV_ASSOC_DISALLOWED_MAX_LEN (1)
2075 
2076 #ifdef __cplusplus
2077 extern "C" {
2078 #endif /* C++ */
2079 uint32_t dot11f_unpack_tlv_assoc_disallowed(
2080 	tpAniSirGlobal,
2081 	uint8_t *,
2082 	uint16_t,
2083 	tDot11fTLVassoc_disallowed*);
2084 
2085 uint32_t dot11f_pack_tlv_assoc_disallowed(
2086 	tpAniSirGlobal,
2087 	tDot11fTLVassoc_disallowed *,
2088 	uint8_t *,
2089 	uint32_t,
2090 	uint32_t*);
2091 
2092 uint32_t dot11f_get_packed_tlv_assoc_disallowed(
2093 	tpAniSirGlobal,
2094 	tDot11fTLVassoc_disallowed *,
2095 	uint32_t*);
2096 
2097 #ifdef __cplusplus
2098 }; /* End extern "C". */
2099 #endif /* C++ */
2100 
2101 /* ID 8 (0x0008) */
2102 typedef struct sDot11fTLVassoc_retry_delay {
2103 	uint8_t             present;
2104 	uint16_t            delay;
2105 } tDot11fTLVassoc_retry_delay;
2106 
2107 #define DOT11F_TLV_ASSOC_RETRY_DELAY (8)
2108 
2109 /* N.B. These #defines do *not* include the ID & length */
2110 #define DOT11F_TLV_ASSOC_RETRY_DELAY_MIN_LEN (2)
2111 
2112 #define DOT11F_TLV_ASSOC_RETRY_DELAY_MAX_LEN (2)
2113 
2114 #ifdef __cplusplus
2115 extern "C" {
2116 #endif /* C++ */
2117 uint32_t dot11f_unpack_tlv_assoc_retry_delay(
2118 	tpAniSirGlobal,
2119 	uint8_t *,
2120 	uint16_t,
2121 	tDot11fTLVassoc_retry_delay*);
2122 
2123 uint32_t dot11f_pack_tlv_assoc_retry_delay(
2124 	tpAniSirGlobal,
2125 	tDot11fTLVassoc_retry_delay *,
2126 	uint8_t *,
2127 	uint32_t,
2128 	uint32_t*);
2129 
2130 uint32_t dot11f_get_packed_tlv_assoc_retry_delay(
2131 	tpAniSirGlobal,
2132 	tDot11fTLVassoc_retry_delay *,
2133 	uint32_t*);
2134 
2135 #ifdef __cplusplus
2136 }; /* End extern "C". */
2137 #endif /* C++ */
2138 
2139 /* ID 3 (0x0003) */
2140 typedef struct sDot11fTLVcellular_data_cap {
2141 	uint8_t             present;
2142 	uint8_t             cellular_connectivity;
2143 } tDot11fTLVcellular_data_cap;
2144 
2145 #define DOT11F_TLV_CELLULAR_DATA_CAP (3)
2146 
2147 /* N.B. These #defines do *not* include the ID & length */
2148 #define DOT11F_TLV_CELLULAR_DATA_CAP_MIN_LEN (1)
2149 
2150 #define DOT11F_TLV_CELLULAR_DATA_CAP_MAX_LEN (1)
2151 
2152 #ifdef __cplusplus
2153 extern "C" {
2154 #endif /* C++ */
2155 uint32_t dot11f_unpack_tlv_cellular_data_cap(
2156 	tpAniSirGlobal,
2157 	uint8_t *,
2158 	uint16_t,
2159 	tDot11fTLVcellular_data_cap*);
2160 
2161 uint32_t dot11f_pack_tlv_cellular_data_cap(
2162 	tpAniSirGlobal,
2163 	tDot11fTLVcellular_data_cap *,
2164 	uint8_t *,
2165 	uint32_t,
2166 	uint32_t*);
2167 
2168 uint32_t dot11f_get_packed_tlv_cellular_data_cap(
2169 	tpAniSirGlobal,
2170 	tDot11fTLVcellular_data_cap *,
2171 	uint32_t*);
2172 
2173 #ifdef __cplusplus
2174 }; /* End extern "C". */
2175 #endif /* C++ */
2176 
2177 /* ID 5 (0x0005) */
2178 typedef struct sDot11fTLVcellular_data_con_pref {
2179 	uint8_t             present;
2180 	uint8_t             cellular_preference;
2181 } tDot11fTLVcellular_data_con_pref;
2182 
2183 #define DOT11F_TLV_CELLULAR_DATA_CON_PREF (5)
2184 
2185 /* N.B. These #defines do *not* include the ID & length */
2186 #define DOT11F_TLV_CELLULAR_DATA_CON_PREF_MIN_LEN (1)
2187 
2188 #define DOT11F_TLV_CELLULAR_DATA_CON_PREF_MAX_LEN (1)
2189 
2190 #ifdef __cplusplus
2191 extern "C" {
2192 #endif /* C++ */
2193 uint32_t dot11f_unpack_tlv_cellular_data_con_pref(
2194 	tpAniSirGlobal,
2195 	uint8_t *,
2196 	uint16_t,
2197 	tDot11fTLVcellular_data_con_pref*);
2198 
2199 uint32_t dot11f_pack_tlv_cellular_data_con_pref(
2200 	tpAniSirGlobal,
2201 	tDot11fTLVcellular_data_con_pref *,
2202 	uint8_t *,
2203 	uint32_t,
2204 	uint32_t*);
2205 
2206 uint32_t dot11f_get_packed_tlv_cellular_data_con_pref(
2207 	tpAniSirGlobal,
2208 	tDot11fTLVcellular_data_con_pref *,
2209 	uint32_t*);
2210 
2211 #ifdef __cplusplus
2212 }; /* End extern "C". */
2213 #endif /* C++ */
2214 
2215 /* ID 4 (0x0004) */
2216 typedef struct sDot11fTLVhe_2xltf_160mhz_supp {
2217 	uint8_t             present;
2218 	uint8_t             he_2xltf_160MHz_supp;
2219 } tDot11fTLVhe_2xltf_160mhz_supp;
2220 
2221 #define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP (4)
2222 
2223 /* N.B. These #defines do *not* include the ID & length */
2224 #define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP_MIN_LEN (1)
2225 
2226 #define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP_MAX_LEN (1)
2227 
2228 #ifdef __cplusplus
2229 extern "C" {
2230 #endif /* C++ */
2231 uint32_t dot11f_unpack_tlv_he_2xltf_160mhz_supp(
2232 	tpAniSirGlobal,
2233 	uint8_t *,
2234 	uint16_t,
2235 	tDot11fTLVhe_2xltf_160mhz_supp*);
2236 
2237 uint32_t dot11f_pack_tlv_he_2xltf_160mhz_supp(
2238 	tpAniSirGlobal,
2239 	tDot11fTLVhe_2xltf_160mhz_supp *,
2240 	uint8_t *,
2241 	uint32_t,
2242 	uint32_t*);
2243 
2244 uint32_t dot11f_get_packed_tlv_he_2xltf_160mhz_supp(
2245 	tpAniSirGlobal,
2246 	tDot11fTLVhe_2xltf_160mhz_supp *,
2247 	uint32_t*);
2248 
2249 #ifdef __cplusplus
2250 }; /* End extern "C". */
2251 #endif /* C++ */
2252 
2253 /* ID 3 (0x0003) */
2254 typedef struct sDot11fTLVhe_400ns_sgi_attr {
2255 	uint8_t             present;
2256 	uint8_t             he_ltf1x_400ns_sgi;
2257 	uint8_t             he_ltf2x_400ns_sgi;
2258 	uint8_t             he_ltf4x_400ns_sgi;
2259 } tDot11fTLVhe_400ns_sgi_attr;
2260 
2261 #define DOT11F_TLV_HE_400NS_SGI_ATTR (3)
2262 
2263 /* N.B. These #defines do *not* include the ID & length */
2264 #define DOT11F_TLV_HE_400NS_SGI_ATTR_MIN_LEN (3)
2265 
2266 #define DOT11F_TLV_HE_400NS_SGI_ATTR_MAX_LEN (3)
2267 
2268 #ifdef __cplusplus
2269 extern "C" {
2270 #endif /* C++ */
2271 uint32_t dot11f_unpack_tlv_he_400ns_sgi_attr(
2272 	tpAniSirGlobal,
2273 	uint8_t *,
2274 	uint16_t,
2275 	tDot11fTLVhe_400ns_sgi_attr*);
2276 
2277 uint32_t dot11f_pack_tlv_he_400ns_sgi_attr(
2278 	tpAniSirGlobal,
2279 	tDot11fTLVhe_400ns_sgi_attr *,
2280 	uint8_t *,
2281 	uint32_t,
2282 	uint32_t*);
2283 
2284 uint32_t dot11f_get_packed_tlv_he_400ns_sgi_attr(
2285 	tpAniSirGlobal,
2286 	tDot11fTLVhe_400ns_sgi_attr *,
2287 	uint32_t*);
2288 
2289 #ifdef __cplusplus
2290 }; /* End extern "C". */
2291 #endif /* C++ */
2292 
2293 /* ID 8 (0x0008) */
2294 typedef struct sDot11fTLVhe_dl_mumimo_attr {
2295 	uint8_t             present;
2296 	uint8_t             he_dl_mumimo_supp;
2297 } tDot11fTLVhe_dl_mumimo_attr;
2298 
2299 #define DOT11F_TLV_HE_DL_MUMIMO_ATTR (8)
2300 
2301 /* N.B. These #defines do *not* include the ID & length */
2302 #define DOT11F_TLV_HE_DL_MUMIMO_ATTR_MIN_LEN (1)
2303 
2304 #define DOT11F_TLV_HE_DL_MUMIMO_ATTR_MAX_LEN (1)
2305 
2306 #ifdef __cplusplus
2307 extern "C" {
2308 #endif /* C++ */
2309 uint32_t dot11f_unpack_tlv_he_dl_mumimo_attr(
2310 	tpAniSirGlobal,
2311 	uint8_t *,
2312 	uint16_t,
2313 	tDot11fTLVhe_dl_mumimo_attr*);
2314 
2315 uint32_t dot11f_pack_tlv_he_dl_mumimo_attr(
2316 	tpAniSirGlobal,
2317 	tDot11fTLVhe_dl_mumimo_attr *,
2318 	uint8_t *,
2319 	uint32_t,
2320 	uint32_t*);
2321 
2322 uint32_t dot11f_get_packed_tlv_he_dl_mumimo_attr(
2323 	tpAniSirGlobal,
2324 	tDot11fTLVhe_dl_mumimo_attr *,
2325 	uint32_t*);
2326 
2327 #ifdef __cplusplus
2328 }; /* End extern "C". */
2329 #endif /* C++ */
2330 
2331 /* ID 5 (0x0005) */
2332 typedef struct sDot11fTLVhe_dl_ofdma_attr {
2333 	uint8_t             present;
2334 	uint8_t             he_dl_ofdma_supp;
2335 } tDot11fTLVhe_dl_ofdma_attr;
2336 
2337 #define DOT11F_TLV_HE_DL_OFDMA_ATTR (5)
2338 
2339 /* N.B. These #defines do *not* include the ID & length */
2340 #define DOT11F_TLV_HE_DL_OFDMA_ATTR_MIN_LEN (1)
2341 
2342 #define DOT11F_TLV_HE_DL_OFDMA_ATTR_MAX_LEN (1)
2343 
2344 #ifdef __cplusplus
2345 extern "C" {
2346 #endif /* C++ */
2347 uint32_t dot11f_unpack_tlv_he_dl_ofdma_attr(
2348 	tpAniSirGlobal,
2349 	uint8_t *,
2350 	uint16_t,
2351 	tDot11fTLVhe_dl_ofdma_attr*);
2352 
2353 uint32_t dot11f_pack_tlv_he_dl_ofdma_attr(
2354 	tpAniSirGlobal,
2355 	tDot11fTLVhe_dl_ofdma_attr *,
2356 	uint8_t *,
2357 	uint32_t,
2358 	uint32_t*);
2359 
2360 uint32_t dot11f_get_packed_tlv_he_dl_ofdma_attr(
2361 	tpAniSirGlobal,
2362 	tDot11fTLVhe_dl_ofdma_attr *,
2363 	uint32_t*);
2364 
2365 #ifdef __cplusplus
2366 }; /* End extern "C". */
2367 #endif /* C++ */
2368 
2369 /* ID 9 (0x0009) */
2370 typedef struct sDot11fTLVhe_mcs13_attr {
2371 	uint8_t             present;
2372 	uint8_t             he_mcs_12_13_supp_80;
2373 	uint8_t             he_mcs_12_13_supp_160;
2374 } tDot11fTLVhe_mcs13_attr;
2375 
2376 #define DOT11F_TLV_HE_MCS13_ATTR (9)
2377 
2378 /* N.B. These #defines do *not* include the ID & length */
2379 #define DOT11F_TLV_HE_MCS13_ATTR_MIN_LEN (2)
2380 
2381 #define DOT11F_TLV_HE_MCS13_ATTR_MAX_LEN (2)
2382 
2383 #ifdef __cplusplus
2384 extern "C" {
2385 #endif /* C++ */
2386 uint32_t dot11f_unpack_tlv_he_mcs13_attr(
2387 	tpAniSirGlobal,
2388 	uint8_t *,
2389 	uint16_t,
2390 	tDot11fTLVhe_mcs13_attr*);
2391 
2392 uint32_t dot11f_pack_tlv_he_mcs13_attr(
2393 	tpAniSirGlobal,
2394 	tDot11fTLVhe_mcs13_attr *,
2395 	uint8_t *,
2396 	uint32_t,
2397 	uint32_t*);
2398 
2399 uint32_t dot11f_get_packed_tlv_he_mcs13_attr(
2400 	tpAniSirGlobal,
2401 	tDot11fTLVhe_mcs13_attr *,
2402 	uint32_t*);
2403 
2404 #ifdef __cplusplus
2405 }; /* End extern "C". */
2406 #endif /* C++ */
2407 
2408 /* ID 1 (0x0001) */
2409 typedef struct sDot11fTLVmbo_ap_cap {
2410 	uint8_t             present;
2411 	uint8_t             mbo_cap_ind;
2412 } tDot11fTLVmbo_ap_cap;
2413 
2414 #define DOT11F_TLV_MBO_AP_CAP (1)
2415 
2416 /* N.B. These #defines do *not* include the ID & length */
2417 #define DOT11F_TLV_MBO_AP_CAP_MIN_LEN (1)
2418 
2419 #define DOT11F_TLV_MBO_AP_CAP_MAX_LEN (1)
2420 
2421 #ifdef __cplusplus
2422 extern "C" {
2423 #endif /* C++ */
2424 uint32_t dot11f_unpack_tlv_mbo_ap_cap(
2425 	tpAniSirGlobal,
2426 	uint8_t *,
2427 	uint16_t,
2428 	tDot11fTLVmbo_ap_cap*);
2429 
2430 uint32_t dot11f_pack_tlv_mbo_ap_cap(
2431 	tpAniSirGlobal,
2432 	tDot11fTLVmbo_ap_cap *,
2433 	uint8_t *,
2434 	uint32_t,
2435 	uint32_t*);
2436 
2437 uint32_t dot11f_get_packed_tlv_mbo_ap_cap(
2438 	tpAniSirGlobal,
2439 	tDot11fTLVmbo_ap_cap *,
2440 	uint32_t*);
2441 
2442 #ifdef __cplusplus
2443 }; /* End extern "C". */
2444 #endif /* C++ */
2445 
2446 /* ID 2 (0x0002) */
2447 typedef struct sDot11fTLVnon_prefferd_chan_rep {
2448 	uint8_t             present;
2449 	uint8_t             oper_class;
2450 	uint8_t             num_channel_report;
2451 	uint8_t             channel_report[254];
2452 } tDot11fTLVnon_prefferd_chan_rep;
2453 
2454 #define DOT11F_TLV_NON_PREFFERD_CHAN_REP (2)
2455 
2456 /* N.B. These #defines do *not* include the ID & length */
2457 #define DOT11F_TLV_NON_PREFFERD_CHAN_REP_MIN_LEN (4)
2458 
2459 #define DOT11F_TLV_NON_PREFFERD_CHAN_REP_MAX_LEN (255)
2460 
2461 #ifdef __cplusplus
2462 extern "C" {
2463 #endif /* C++ */
2464 uint32_t dot11f_unpack_tlv_non_prefferd_chan_rep(
2465 	tpAniSirGlobal,
2466 	uint8_t *,
2467 	uint16_t,
2468 	tDot11fTLVnon_prefferd_chan_rep*);
2469 
2470 uint32_t dot11f_pack_tlv_non_prefferd_chan_rep(
2471 	tpAniSirGlobal,
2472 	tDot11fTLVnon_prefferd_chan_rep *,
2473 	uint8_t *,
2474 	uint32_t,
2475 	uint32_t*);
2476 
2477 uint32_t dot11f_get_packed_tlv_non_prefferd_chan_rep(
2478 	tpAniSirGlobal,
2479 	tDot11fTLVnon_prefferd_chan_rep *,
2480 	uint32_t*);
2481 
2482 #ifdef __cplusplus
2483 }; /* End extern "C". */
2484 #endif /* C++ */
2485 
2486 /* ID 101 (0x0065) */
2487 typedef struct sDot11fTLVoce_cap {
2488 	uint8_t             present;
2489 	uint8_t          oce_release:3;
2490 	uint8_t          is_sta_cfon:1;
2491 	uint8_t   non_oce_ap_present:1;
2492 	uint8_t             reserved:3;
2493 } tDot11fTLVoce_cap;
2494 
2495 #define DOT11F_TLV_OCE_CAP (101)
2496 
2497 /* N.B. These #defines do *not* include the ID & length */
2498 #define DOT11F_TLV_OCE_CAP_MIN_LEN (1)
2499 
2500 #define DOT11F_TLV_OCE_CAP_MAX_LEN (1)
2501 
2502 #ifdef __cplusplus
2503 extern "C" {
2504 #endif /* C++ */
2505 uint32_t dot11f_unpack_tlv_oce_cap(
2506 	tpAniSirGlobal,
2507 	uint8_t *,
2508 	uint16_t,
2509 	tDot11fTLVoce_cap*);
2510 
2511 uint32_t dot11f_pack_tlv_oce_cap(
2512 	tpAniSirGlobal,
2513 	tDot11fTLVoce_cap *,
2514 	uint8_t *,
2515 	uint32_t,
2516 	uint32_t*);
2517 
2518 uint32_t dot11f_get_packed_tlv_oce_cap(
2519 	tpAniSirGlobal,
2520 	tDot11fTLVoce_cap *,
2521 	uint32_t*);
2522 
2523 #ifdef __cplusplus
2524 }; /* End extern "C". */
2525 #endif /* C++ */
2526 
2527 /* ID 1 (0x0001) */
2528 typedef struct sDot11fTLVqcn_version {
2529 	uint8_t             present;
2530 	uint8_t             version;
2531 	uint8_t             sub_version;
2532 } tDot11fTLVqcn_version;
2533 
2534 #define DOT11F_TLV_QCN_VERSION (1)
2535 
2536 /* N.B. These #defines do *not* include the ID & length */
2537 #define DOT11F_TLV_QCN_VERSION_MIN_LEN (2)
2538 
2539 #define DOT11F_TLV_QCN_VERSION_MAX_LEN (2)
2540 
2541 #ifdef __cplusplus
2542 extern "C" {
2543 #endif /* C++ */
2544 uint32_t dot11f_unpack_tlv_qcn_version(
2545 	tpAniSirGlobal,
2546 	uint8_t *,
2547 	uint16_t,
2548 	tDot11fTLVqcn_version*);
2549 
2550 uint32_t dot11f_pack_tlv_qcn_version(
2551 	tpAniSirGlobal,
2552 	tDot11fTLVqcn_version *,
2553 	uint8_t *,
2554 	uint32_t,
2555 	uint32_t*);
2556 
2557 uint32_t dot11f_get_packed_tlv_qcn_version(
2558 	tpAniSirGlobal,
2559 	tDot11fTLVqcn_version *,
2560 	uint32_t*);
2561 
2562 #ifdef __cplusplus
2563 }; /* End extern "C". */
2564 #endif /* C++ */
2565 
2566 /* ID 103 (0x0067) */
2567 typedef struct sDot11fTLVreduced_wan_metrics {
2568 	uint8_t             present;
2569 	uint8_t      downlink_av_cap:4;
2570 	uint8_t        uplink_av_cap:4;
2571 } tDot11fTLVreduced_wan_metrics;
2572 
2573 #define DOT11F_TLV_REDUCED_WAN_METRICS (103)
2574 
2575 /* N.B. These #defines do *not* include the ID & length */
2576 #define DOT11F_TLV_REDUCED_WAN_METRICS_MIN_LEN (1)
2577 
2578 #define DOT11F_TLV_REDUCED_WAN_METRICS_MAX_LEN (1)
2579 
2580 #ifdef __cplusplus
2581 extern "C" {
2582 #endif /* C++ */
2583 uint32_t dot11f_unpack_tlv_reduced_wan_metrics(
2584 	tpAniSirGlobal,
2585 	uint8_t *,
2586 	uint16_t,
2587 	tDot11fTLVreduced_wan_metrics*);
2588 
2589 uint32_t dot11f_pack_tlv_reduced_wan_metrics(
2590 	tpAniSirGlobal,
2591 	tDot11fTLVreduced_wan_metrics *,
2592 	uint8_t *,
2593 	uint32_t,
2594 	uint32_t*);
2595 
2596 uint32_t dot11f_get_packed_tlv_reduced_wan_metrics(
2597 	tpAniSirGlobal,
2598 	tDot11fTLVreduced_wan_metrics *,
2599 	uint32_t*);
2600 
2601 #ifdef __cplusplus
2602 }; /* End extern "C". */
2603 #endif /* C++ */
2604 
2605 /* ID 102 (0x0066) */
2606 typedef struct sDot11fTLVrssi_assoc_rej {
2607 	uint8_t             present;
2608 	uint8_t             delta_rssi;
2609 	uint8_t             retry_delay;
2610 } tDot11fTLVrssi_assoc_rej;
2611 
2612 #define DOT11F_TLV_RSSI_ASSOC_REJ (102)
2613 
2614 /* N.B. These #defines do *not* include the ID & length */
2615 #define DOT11F_TLV_RSSI_ASSOC_REJ_MIN_LEN (2)
2616 
2617 #define DOT11F_TLV_RSSI_ASSOC_REJ_MAX_LEN (2)
2618 
2619 #ifdef __cplusplus
2620 extern "C" {
2621 #endif /* C++ */
2622 uint32_t dot11f_unpack_tlv_rssi_assoc_rej(
2623 	tpAniSirGlobal,
2624 	uint8_t *,
2625 	uint16_t,
2626 	tDot11fTLVrssi_assoc_rej*);
2627 
2628 uint32_t dot11f_pack_tlv_rssi_assoc_rej(
2629 	tpAniSirGlobal,
2630 	tDot11fTLVrssi_assoc_rej *,
2631 	uint8_t *,
2632 	uint32_t,
2633 	uint32_t*);
2634 
2635 uint32_t dot11f_get_packed_tlv_rssi_assoc_rej(
2636 	tpAniSirGlobal,
2637 	tDot11fTLVrssi_assoc_rej *,
2638 	uint32_t*);
2639 
2640 #ifdef __cplusplus
2641 }; /* End extern "C". */
2642 #endif /* C++ */
2643 
2644 /* ID 6 (0x0006) */
2645 typedef struct sDot11fTLVtrans_reasonp_attr {
2646 	uint8_t             present;
2647 	uint8_t             transition_reasonp;
2648 } tDot11fTLVtrans_reasonp_attr;
2649 
2650 #define DOT11F_TLV_TRANS_REASONP_ATTR (6)
2651 
2652 /* N.B. These #defines do *not* include the ID & length */
2653 #define DOT11F_TLV_TRANS_REASONP_ATTR_MIN_LEN (1)
2654 
2655 #define DOT11F_TLV_TRANS_REASONP_ATTR_MAX_LEN (1)
2656 
2657 #ifdef __cplusplus
2658 extern "C" {
2659 #endif /* C++ */
2660 uint32_t dot11f_unpack_tlv_trans_reasonp_attr(
2661 	tpAniSirGlobal,
2662 	uint8_t *,
2663 	uint16_t,
2664 	tDot11fTLVtrans_reasonp_attr*);
2665 
2666 uint32_t dot11f_pack_tlv_trans_reasonp_attr(
2667 	tpAniSirGlobal,
2668 	tDot11fTLVtrans_reasonp_attr *,
2669 	uint8_t *,
2670 	uint32_t,
2671 	uint32_t*);
2672 
2673 uint32_t dot11f_get_packed_tlv_trans_reasonp_attr(
2674 	tpAniSirGlobal,
2675 	tDot11fTLVtrans_reasonp_attr *,
2676 	uint32_t*);
2677 
2678 #ifdef __cplusplus
2679 }; /* End extern "C". */
2680 #endif /* C++ */
2681 
2682 /* ID 7 (0x0007) */
2683 typedef struct sDot11fTLVtrans_rejectp_attr {
2684 	uint8_t             present;
2685 	uint8_t             transition_rejp;
2686 } tDot11fTLVtrans_rejectp_attr;
2687 
2688 #define DOT11F_TLV_TRANS_REJECTP_ATTR (7)
2689 
2690 /* N.B. These #defines do *not* include the ID & length */
2691 #define DOT11F_TLV_TRANS_REJECTP_ATTR_MIN_LEN (1)
2692 
2693 #define DOT11F_TLV_TRANS_REJECTP_ATTR_MAX_LEN (1)
2694 
2695 #ifdef __cplusplus
2696 extern "C" {
2697 #endif /* C++ */
2698 uint32_t dot11f_unpack_tlv_trans_rejectp_attr(
2699 	tpAniSirGlobal,
2700 	uint8_t *,
2701 	uint16_t,
2702 	tDot11fTLVtrans_rejectp_attr*);
2703 
2704 uint32_t dot11f_pack_tlv_trans_rejectp_attr(
2705 	tpAniSirGlobal,
2706 	tDot11fTLVtrans_rejectp_attr *,
2707 	uint8_t *,
2708 	uint32_t,
2709 	uint32_t*);
2710 
2711 uint32_t dot11f_get_packed_tlv_trans_rejectp_attr(
2712 	tpAniSirGlobal,
2713 	tDot11fTLVtrans_rejectp_attr *,
2714 	uint32_t*);
2715 
2716 #ifdef __cplusplus
2717 }; /* End extern "C". */
2718 #endif /* C++ */
2719 
2720 /* ID 6 (0x0006) */
2721 typedef struct sDot11fTLVtransition_reason {
2722 	uint8_t             present;
2723 	uint8_t             transition_reason_code;
2724 } tDot11fTLVtransition_reason;
2725 
2726 #define DOT11F_TLV_TRANSITION_REASON (6)
2727 
2728 /* N.B. These #defines do *not* include the ID & length */
2729 #define DOT11F_TLV_TRANSITION_REASON_MIN_LEN (1)
2730 
2731 #define DOT11F_TLV_TRANSITION_REASON_MAX_LEN (1)
2732 
2733 #ifdef __cplusplus
2734 extern "C" {
2735 #endif /* C++ */
2736 uint32_t dot11f_unpack_tlv_transition_reason(
2737 	tpAniSirGlobal,
2738 	uint8_t *,
2739 	uint16_t,
2740 	tDot11fTLVtransition_reason*);
2741 
2742 uint32_t dot11f_pack_tlv_transition_reason(
2743 	tpAniSirGlobal,
2744 	tDot11fTLVtransition_reason *,
2745 	uint8_t *,
2746 	uint32_t,
2747 	uint32_t*);
2748 
2749 uint32_t dot11f_get_packed_tlv_transition_reason(
2750 	tpAniSirGlobal,
2751 	tDot11fTLVtransition_reason *,
2752 	uint32_t*);
2753 
2754 #ifdef __cplusplus
2755 }; /* End extern "C". */
2756 #endif /* C++ */
2757 
2758 /* ID 7 (0x0007) */
2759 typedef struct sDot11fTLVtransition_reject_reason {
2760 	uint8_t             present;
2761 	uint8_t             transition_reject_code;
2762 } tDot11fTLVtransition_reject_reason;
2763 
2764 #define DOT11F_TLV_TRANSITION_REJECT_REASON (7)
2765 
2766 /* N.B. These #defines do *not* include the ID & length */
2767 #define DOT11F_TLV_TRANSITION_REJECT_REASON_MIN_LEN (1)
2768 
2769 #define DOT11F_TLV_TRANSITION_REJECT_REASON_MAX_LEN (1)
2770 
2771 #ifdef __cplusplus
2772 extern "C" {
2773 #endif /* C++ */
2774 uint32_t dot11f_unpack_tlv_transition_reject_reason(
2775 	tpAniSirGlobal,
2776 	uint8_t *,
2777 	uint16_t,
2778 	tDot11fTLVtransition_reject_reason*);
2779 
2780 uint32_t dot11f_pack_tlv_transition_reject_reason(
2781 	tpAniSirGlobal,
2782 	tDot11fTLVtransition_reject_reason *,
2783 	uint8_t *,
2784 	uint32_t,
2785 	uint32_t*);
2786 
2787 uint32_t dot11f_get_packed_tlv_transition_reject_reason(
2788 	tpAniSirGlobal,
2789 	tDot11fTLVtransition_reject_reason *,
2790 	uint32_t*);
2791 
2792 #ifdef __cplusplus
2793 }; /* End extern "C". */
2794 #endif /* C++ */
2795 
2796 /* ID 2 (0x0002) */
2797 typedef struct sDot11fTLVvht_mcs11_attr {
2798 	uint8_t             present;
2799 	uint8_t             vht_mcs_10_11_supp;
2800 } tDot11fTLVvht_mcs11_attr;
2801 
2802 #define DOT11F_TLV_VHT_MCS11_ATTR (2)
2803 
2804 /* N.B. These #defines do *not* include the ID & length */
2805 #define DOT11F_TLV_VHT_MCS11_ATTR_MIN_LEN (1)
2806 
2807 #define DOT11F_TLV_VHT_MCS11_ATTR_MAX_LEN (1)
2808 
2809 #ifdef __cplusplus
2810 extern "C" {
2811 #endif /* C++ */
2812 uint32_t dot11f_unpack_tlv_vht_mcs11_attr(
2813 	tpAniSirGlobal,
2814 	uint8_t *,
2815 	uint16_t,
2816 	tDot11fTLVvht_mcs11_attr*);
2817 
2818 uint32_t dot11f_pack_tlv_vht_mcs11_attr(
2819 	tpAniSirGlobal,
2820 	tDot11fTLVvht_mcs11_attr *,
2821 	uint8_t *,
2822 	uint32_t,
2823 	uint32_t*);
2824 
2825 uint32_t dot11f_get_packed_tlv_vht_mcs11_attr(
2826 	tpAniSirGlobal,
2827 	tDot11fTLVvht_mcs11_attr *,
2828 	uint32_t*);
2829 
2830 #ifdef __cplusplus
2831 }; /* End extern "C". */
2832 #endif /* C++ */
2833 
2834 /* ID 16 (0x0010) */
2835 typedef struct sDot11fTLVP2PInterface {
2836 	uint8_t             present;
2837 	uint8_t             P2PDeviceAddress[6];
2838 } tDot11fTLVP2PInterface;
2839 
2840 #define DOT11F_TLV_P2PINTERFACE (16)
2841 
2842 /* N.B. These #defines do *not* include the ID & length */
2843 #define DOT11F_TLV_P2PINTERFACE_MIN_LEN (7)
2844 
2845 #define DOT11F_TLV_P2PINTERFACE_MAX_LEN (7)
2846 
2847 #ifdef __cplusplus
2848 extern "C" {
2849 #endif /* C++ */
2850 uint32_t dot11f_unpack_tlv_p2_p_interface(
2851 	tpAniSirGlobal,
2852 	uint8_t *,
2853 	uint16_t,
2854 	tDot11fTLVP2PInterface*);
2855 
2856 uint32_t dot11f_pack_tlv_p2_p_interface(
2857 	tpAniSirGlobal,
2858 	tDot11fTLVP2PInterface *,
2859 	uint8_t *,
2860 	uint32_t,
2861 	uint32_t*);
2862 
2863 uint32_t dot11f_get_packed_tlv_P2PInterface(
2864 	tpAniSirGlobal,
2865 	tDot11fTLVP2PInterface *,
2866 	uint32_t*);
2867 
2868 #ifdef __cplusplus
2869 }; /* End extern "C". */
2870 #endif /* C++ */
2871 
2872 /* ID 10 (0x000a) */
2873 typedef struct sDot11fTLVP2PManageability {
2874 	uint8_t             present;
2875 	uint8_t             manageability;
2876 } tDot11fTLVP2PManageability;
2877 
2878 #define DOT11F_TLV_P2PMANAGEABILITY (10)
2879 
2880 /* N.B. These #defines do *not* include the ID & length */
2881 #define DOT11F_TLV_P2PMANAGEABILITY_MIN_LEN (2)
2882 
2883 #define DOT11F_TLV_P2PMANAGEABILITY_MAX_LEN (2)
2884 
2885 #ifdef __cplusplus
2886 extern "C" {
2887 #endif /* C++ */
2888 uint32_t dot11f_unpack_tlv_P2PManageability(
2889 	tpAniSirGlobal,
2890 	uint8_t *,
2891 	uint16_t,
2892 	tDot11fTLVP2PManageability*);
2893 
2894 uint32_t dot11f_pack_tlv_p2_p_manageability(
2895 	tpAniSirGlobal,
2896 	tDot11fTLVP2PManageability *,
2897 	uint8_t *,
2898 	uint32_t,
2899 	uint32_t*);
2900 
2901 uint32_t dot11f_get_packed_tlv_P2PManageability(
2902 	tpAniSirGlobal,
2903 	tDot11fTLVP2PManageability *,
2904 	uint32_t*);
2905 
2906 #ifdef __cplusplus
2907 }; /* End extern "C". */
2908 #endif /* C++ */
2909 /*********************************************************************
2910  * Information Elements                                              *
2911  ********************************************************************/
2912 
2913 
2914 /* EID 2 (0x02) */
2915 typedef struct sDot11fIEGTK {
2916 	uint8_t             present;
2917 	uint16_t                keyId:2;
2918 	uint16_t             reserved:14;
2919 	uint8_t             keyLength;
2920 	uint8_t             RSC[8];
2921 	uint8_t             num_key;
2922 	uint8_t             key[32];
2923 } tDot11fIEGTK;
2924 
2925 #define DOT11F_EID_GTK (2)
2926 
2927 /* N.B. These #defines do *not* include the EID & length */
2928 #define DOT11F_IE_GTK_MIN_LEN (16)
2929 
2930 #define DOT11F_IE_GTK_MAX_LEN (43)
2931 
2932 #ifdef __cplusplus
2933 extern "C" {
2934 #endif /* C++ */
2935 __must_check uint32_t dot11f_unpack_ie_gtk(
2936 	tpAniSirGlobal,
2937 	uint8_t *,
2938 	uint8_t,
2939 	tDot11fIEGTK*,
2940 	bool);
2941 
2942 uint32_t dot11f_pack_ie_gtk(
2943 	tpAniSirGlobal,
2944 	tDot11fIEGTK *,
2945 	uint8_t *,
2946 	uint32_t,
2947 	uint32_t*);
2948 
2949 uint32_t dot11f_get_packed_ie_GTK(
2950 	tpAniSirGlobal,
2951 	tDot11fIEGTK *,
2952 	uint32_t*);
2953 
2954 #ifdef __cplusplus
2955 }; /* End extern "C". */
2956 #endif /* C++ */
2957 
2958 /* EID 4 (0x04) */
2959 typedef struct sDot11fIEIGTK {
2960 	uint8_t             present;
2961 	uint8_t             keyID[2];
2962 	uint8_t             IPN[6];
2963 	uint8_t             keyLength;
2964 	uint8_t             key[24];
2965 } tDot11fIEIGTK;
2966 
2967 #define DOT11F_EID_IGTK (4)
2968 
2969 /* N.B. These #defines do *not* include the EID & length */
2970 #define DOT11F_IE_IGTK_MIN_LEN (33)
2971 
2972 #define DOT11F_IE_IGTK_MAX_LEN (33)
2973 
2974 #ifdef __cplusplus
2975 extern "C" {
2976 #endif /* C++ */
2977 __must_check uint32_t dot11f_unpack_ie_igtk(
2978 	tpAniSirGlobal,
2979 	uint8_t *,
2980 	uint8_t,
2981 	tDot11fIEIGTK*,
2982 	bool);
2983 
2984 uint32_t dot11f_pack_ie_igtk(
2985 	tpAniSirGlobal,
2986 	tDot11fIEIGTK *,
2987 	uint8_t *,
2988 	uint32_t,
2989 	uint32_t*);
2990 
2991 uint32_t dot11f_get_packed_ie_IGTK(
2992 	tpAniSirGlobal,
2993 	tDot11fIEIGTK *,
2994 	uint32_t*);
2995 
2996 #ifdef __cplusplus
2997 }; /* End extern "C". */
2998 #endif /* C++ */
2999 
3000 /* EID 3 (0x03) */
3001 typedef struct sDot11fIER0KH_ID {
3002 	uint8_t             present;
3003 	uint8_t             num_PMK_R0_ID;
3004 	uint8_t             PMK_R0_ID[48];
3005 } tDot11fIER0KH_ID;
3006 
3007 #define DOT11F_EID_R0KH_ID (3)
3008 
3009 /* N.B. These #defines do *not* include the EID & length */
3010 #define DOT11F_IE_R0KH_ID_MIN_LEN (1)
3011 
3012 #define DOT11F_IE_R0KH_ID_MAX_LEN (48)
3013 
3014 #ifdef __cplusplus
3015 extern "C" {
3016 #endif /* C++ */
3017 __must_check uint32_t dot11f_unpack_ie_r0_kh_id(
3018 	tpAniSirGlobal,
3019 	uint8_t *,
3020 	uint8_t,
3021 	tDot11fIER0KH_ID*,
3022 	bool);
3023 
3024 uint32_t dot11f_pack_ie_r0_kh_id(
3025 	tpAniSirGlobal,
3026 	tDot11fIER0KH_ID *,
3027 	uint8_t *,
3028 	uint32_t,
3029 	uint32_t*);
3030 
3031 uint32_t dot11f_get_packed_ie_R0KH_ID(
3032 	tpAniSirGlobal,
3033 	tDot11fIER0KH_ID *,
3034 	uint32_t*);
3035 
3036 #ifdef __cplusplus
3037 }; /* End extern "C". */
3038 #endif /* C++ */
3039 
3040 /* EID 1 (0x01) */
3041 typedef struct sDot11fIER1KH_ID {
3042 	uint8_t             present;
3043 	uint8_t             PMK_R1_ID[6];
3044 } tDot11fIER1KH_ID;
3045 
3046 #define DOT11F_EID_R1KH_ID (1)
3047 
3048 /* N.B. These #defines do *not* include the EID & length */
3049 #define DOT11F_IE_R1KH_ID_MIN_LEN (6)
3050 
3051 #define DOT11F_IE_R1KH_ID_MAX_LEN (6)
3052 
3053 #ifdef __cplusplus
3054 extern "C" {
3055 #endif /* C++ */
3056 __must_check uint32_t dot11f_unpack_ie_r1_kh_id(
3057 	tpAniSirGlobal,
3058 	uint8_t *,
3059 	uint8_t,
3060 	tDot11fIER1KH_ID*,
3061 	bool);
3062 
3063 uint32_t dot11f_pack_ie_r1_kh_id(
3064 	tpAniSirGlobal,
3065 	tDot11fIER1KH_ID *,
3066 	uint8_t *,
3067 	uint32_t,
3068 	uint32_t*);
3069 
3070 uint32_t dot11f_get_packed_ie_R1KH_ID(
3071 	tpAniSirGlobal,
3072 	tDot11fIER1KH_ID *,
3073 	uint32_t*);
3074 
3075 #ifdef __cplusplus
3076 }; /* End extern "C". */
3077 #endif /* C++ */
3078 
3079 /* EID 51 (0x33) */
3080 typedef struct sDot11fIEAPChannelReport {
3081 	uint8_t             present;
3082 	uint8_t             regulatoryClass;
3083 	uint8_t             num_channelList;
3084 	uint8_t             channelList[50];
3085 } tDot11fIEAPChannelReport;
3086 
3087 #define DOT11F_EID_APCHANNELREPORT (51)
3088 
3089 /* N.B. These #defines do *not* include the EID & length */
3090 #define DOT11F_IE_APCHANNELREPORT_MIN_LEN (1)
3091 
3092 #define DOT11F_IE_APCHANNELREPORT_MAX_LEN (51)
3093 
3094 #ifdef __cplusplus
3095 extern "C" {
3096 #endif /* C++ */
3097 __must_check uint32_t dot11f_unpack_ie_ap_channel_report(
3098 	tpAniSirGlobal,
3099 	uint8_t *,
3100 	uint8_t,
3101 	tDot11fIEAPChannelReport*,
3102 	bool);
3103 
3104 uint32_t dot11f_pack_ie_ap_channel_report(
3105 	tpAniSirGlobal,
3106 	tDot11fIEAPChannelReport *,
3107 	uint8_t *,
3108 	uint32_t,
3109 	uint32_t*);
3110 
3111 uint32_t dot11f_get_packed_ie_APChannelReport(
3112 	tpAniSirGlobal,
3113 	tDot11fIEAPChannelReport *,
3114 	uint32_t*);
3115 
3116 #ifdef __cplusplus
3117 }; /* End extern "C". */
3118 #endif /* C++ */
3119 
3120 /* EID 2 (0x02) */
3121 typedef struct sDot11fIEBcnReportingDetail {
3122 	uint8_t             present;
3123 	uint8_t             reportingDetail;
3124 } tDot11fIEBcnReportingDetail;
3125 
3126 #define DOT11F_EID_BCNREPORTINGDETAIL (2)
3127 
3128 /* N.B. These #defines do *not* include the EID & length */
3129 #define DOT11F_IE_BCNREPORTINGDETAIL_MIN_LEN (1)
3130 
3131 #define DOT11F_IE_BCNREPORTINGDETAIL_MAX_LEN (1)
3132 
3133 #ifdef __cplusplus
3134 extern "C" {
3135 #endif /* C++ */
3136 __must_check uint32_t dot11f_unpack_ie_bcn_reporting_detail(
3137 	tpAniSirGlobal,
3138 	uint8_t *,
3139 	uint8_t,
3140 	tDot11fIEBcnReportingDetail*,
3141 	bool);
3142 
3143 uint32_t dot11f_pack_ie_bcn_reporting_detail(
3144 	tpAniSirGlobal,
3145 	tDot11fIEBcnReportingDetail *,
3146 	uint8_t *,
3147 	uint32_t,
3148 	uint32_t*);
3149 
3150 uint32_t dot11f_get_packed_ie_BcnReportingDetail(
3151 	tpAniSirGlobal,
3152 	tDot11fIEBcnReportingDetail *,
3153 	uint32_t*);
3154 
3155 #ifdef __cplusplus
3156 }; /* End extern "C". */
3157 #endif /* C++ */
3158 
3159 /* EID 1 (0x01) */
3160 typedef struct sDot11fIEBeaconReportFrmBody {
3161 	uint8_t             present;
3162 	uint8_t             num_reportedFields;
3163 	uint8_t             reportedFields[224];
3164 } tDot11fIEBeaconReportFrmBody;
3165 
3166 #define DOT11F_EID_BEACONREPORTFRMBODY (1)
3167 
3168 /* N.B. These #defines do *not* include the EID & length */
3169 #define DOT11F_IE_BEACONREPORTFRMBODY_MIN_LEN (0)
3170 
3171 #define DOT11F_IE_BEACONREPORTFRMBODY_MAX_LEN (224)
3172 
3173 #ifdef __cplusplus
3174 extern "C" {
3175 #endif /* C++ */
3176 __must_check uint32_t dot11f_unpack_ie_beacon_report_frm_body(
3177 	tpAniSirGlobal,
3178 	uint8_t *,
3179 	uint8_t,
3180 	tDot11fIEBeaconReportFrmBody*,
3181 	bool);
3182 
3183 uint32_t dot11f_pack_ie_beacon_report_frm_body(
3184 	tpAniSirGlobal,
3185 	tDot11fIEBeaconReportFrmBody *,
3186 	uint8_t *,
3187 	uint32_t,
3188 	uint32_t*);
3189 
3190 uint32_t dot11f_get_packed_ie_BeaconReportFrmBody(
3191 	tpAniSirGlobal,
3192 	tDot11fIEBeaconReportFrmBody *,
3193 	uint32_t*);
3194 
3195 #ifdef __cplusplus
3196 }; /* End extern "C". */
3197 #endif /* C++ */
3198 
3199 /* EID 1 (0x01) */
3200 typedef struct sDot11fIEBeaconReporting {
3201 	uint8_t             present;
3202 	uint8_t             reportingCondition;
3203 	uint8_t             threshold;
3204 } tDot11fIEBeaconReporting;
3205 
3206 #define DOT11F_EID_BEACONREPORTING (1)
3207 
3208 /* N.B. These #defines do *not* include the EID & length */
3209 #define DOT11F_IE_BEACONREPORTING_MIN_LEN (2)
3210 
3211 #define DOT11F_IE_BEACONREPORTING_MAX_LEN (2)
3212 
3213 #ifdef __cplusplus
3214 extern "C" {
3215 #endif /* C++ */
3216 __must_check uint32_t dot11f_unpack_ie_beacon_reporting(
3217 	tpAniSirGlobal,
3218 	uint8_t *,
3219 	uint8_t,
3220 	tDot11fIEBeaconReporting*,
3221 	bool);
3222 
3223 uint32_t dot11f_pack_ie_beacon_reporting(
3224 	tpAniSirGlobal,
3225 	tDot11fIEBeaconReporting *,
3226 	uint8_t *,
3227 	uint32_t,
3228 	uint32_t*);
3229 
3230 uint32_t dot11f_get_packed_ie_BeaconReporting(
3231 	tpAniSirGlobal,
3232 	tDot11fIEBeaconReporting *,
3233 	uint32_t*);
3234 
3235 #ifdef __cplusplus
3236 }; /* End extern "C". */
3237 #endif /* C++ */
3238 
3239 /* EID 2 (0x02) */
3240 typedef struct sDot11fIECondensedCountryStr {
3241 	uint8_t             present;
3242 	uint8_t             countryStr[2];
3243 } tDot11fIECondensedCountryStr;
3244 
3245 #define DOT11F_EID_CONDENSEDCOUNTRYSTR (2)
3246 
3247 /* N.B. These #defines do *not* include the EID & length */
3248 #define DOT11F_IE_CONDENSEDCOUNTRYSTR_MIN_LEN (2)
3249 
3250 #define DOT11F_IE_CONDENSEDCOUNTRYSTR_MAX_LEN (2)
3251 
3252 #ifdef __cplusplus
3253 extern "C" {
3254 #endif /* C++ */
3255 __must_check uint32_t dot11f_unpack_ie_condensed_country_str(
3256 	tpAniSirGlobal,
3257 	uint8_t *,
3258 	uint8_t,
3259 	tDot11fIECondensedCountryStr*,
3260 	bool);
3261 
3262 uint32_t dot11f_pack_ie_condensed_country_str(
3263 	tpAniSirGlobal,
3264 	tDot11fIECondensedCountryStr *,
3265 	uint8_t *,
3266 	uint32_t,
3267 	uint32_t*);
3268 
3269 uint32_t dot11f_get_packed_ie_CondensedCountryStr(
3270 	tpAniSirGlobal,
3271 	tDot11fIECondensedCountryStr *,
3272 	uint32_t*);
3273 
3274 #ifdef __cplusplus
3275 }; /* End extern "C". */
3276 #endif /* C++ */
3277 
3278 /* EID 66 (0x42) */
3279 typedef struct sDot11fIEMeasurementPilot {
3280 	uint8_t             present;
3281 	uint8_t             measurementPilot;
3282 	uint8_t             num_vendorSpecific;
3283 	uint8_t             vendorSpecific[255];
3284 } tDot11fIEMeasurementPilot;
3285 
3286 #define DOT11F_EID_MEASUREMENTPILOT (66)
3287 
3288 /* N.B. These #defines do *not* include the EID & length */
3289 #define DOT11F_IE_MEASUREMENTPILOT_MIN_LEN (1)
3290 
3291 #define DOT11F_IE_MEASUREMENTPILOT_MAX_LEN (256)
3292 
3293 #ifdef __cplusplus
3294 extern "C" {
3295 #endif /* C++ */
3296 __must_check uint32_t dot11f_unpack_ie_measurement_pilot(
3297 	tpAniSirGlobal,
3298 	uint8_t *,
3299 	uint8_t,
3300 	tDot11fIEMeasurementPilot*,
3301 	bool);
3302 
3303 uint32_t dot11f_pack_ie_measurement_pilot(
3304 	tpAniSirGlobal,
3305 	tDot11fIEMeasurementPilot *,
3306 	uint8_t *,
3307 	uint32_t,
3308 	uint32_t*);
3309 
3310 uint32_t dot11f_get_packed_ie_MeasurementPilot(
3311 	tpAniSirGlobal,
3312 	tDot11fIEMeasurementPilot *,
3313 	uint32_t*);
3314 
3315 #ifdef __cplusplus
3316 }; /* End extern "C". */
3317 #endif /* C++ */
3318 
3319 /* EID 71 (0x47) */
3320 typedef struct sDot11fIEMultiBssid {
3321 	uint8_t             present;
3322 	uint8_t             maxBSSIDIndicator;
3323 	uint8_t             num_vendorSpecific;
3324 	uint8_t             vendorSpecific[255];
3325 } tDot11fIEMultiBssid;
3326 
3327 #define DOT11F_EID_MULTIBSSID (71)
3328 
3329 /* N.B. These #defines do *not* include the EID & length */
3330 #define DOT11F_IE_MULTIBSSID_MIN_LEN (1)
3331 
3332 #define DOT11F_IE_MULTIBSSID_MAX_LEN (256)
3333 
3334 #ifdef __cplusplus
3335 extern "C" {
3336 #endif /* C++ */
3337 __must_check uint32_t dot11f_unpack_ie_multi_bssid(
3338 	tpAniSirGlobal,
3339 	uint8_t *,
3340 	uint8_t,
3341 	tDot11fIEMultiBssid*,
3342 	bool);
3343 
3344 uint32_t dot11f_pack_ie_multi_bssid(
3345 	tpAniSirGlobal,
3346 	tDot11fIEMultiBssid *,
3347 	uint8_t *,
3348 	uint32_t,
3349 	uint32_t*);
3350 
3351 uint32_t dot11f_get_packed_ie_MultiBssid(
3352 	tpAniSirGlobal,
3353 	tDot11fIEMultiBssid *,
3354 	uint32_t*);
3355 
3356 #ifdef __cplusplus
3357 }; /* End extern "C". */
3358 #endif /* C++ */
3359 
3360 /* EID 57 (0x39) */
3361 typedef struct sDot11fIERICData {
3362 	uint8_t             present;
3363 	uint8_t             Identifier;
3364 	uint8_t             resourceDescCount;
3365 	uint16_t            statusCode;
3366 } tDot11fIERICData;
3367 
3368 #define DOT11F_EID_RICDATA (57)
3369 
3370 /* N.B. These #defines do *not* include the EID & length */
3371 #define DOT11F_IE_RICDATA_MIN_LEN (4)
3372 
3373 #define DOT11F_IE_RICDATA_MAX_LEN (4)
3374 
3375 #ifdef __cplusplus
3376 extern "C" {
3377 #endif /* C++ */
3378 __must_check uint32_t dot11f_unpack_ie_ric_data(
3379 	tpAniSirGlobal,
3380 	uint8_t *,
3381 	uint8_t,
3382 	tDot11fIERICData*,
3383 	bool);
3384 
3385 uint32_t dot11f_pack_ie_ric_data(
3386 	tpAniSirGlobal,
3387 	tDot11fIERICData *,
3388 	uint8_t *,
3389 	uint32_t,
3390 	uint32_t*);
3391 
3392 uint32_t dot11f_get_packed_ie_RICData(
3393 	tpAniSirGlobal,
3394 	tDot11fIERICData *,
3395 	uint32_t*);
3396 
3397 #ifdef __cplusplus
3398 }; /* End extern "C". */
3399 #endif /* C++ */
3400 
3401 /* EID 75 (0x4b) */
3402 typedef struct sDot11fIERICDescriptor {
3403 	uint8_t             present;
3404 	uint8_t             resourceType;
3405 	uint8_t             num_variableData;
3406 	uint8_t             variableData[255];
3407 } tDot11fIERICDescriptor;
3408 
3409 #define DOT11F_EID_RICDESCRIPTOR (75)
3410 
3411 /* N.B. These #defines do *not* include the EID & length */
3412 #define DOT11F_IE_RICDESCRIPTOR_MIN_LEN (1)
3413 
3414 #define DOT11F_IE_RICDESCRIPTOR_MAX_LEN (256)
3415 
3416 #ifdef __cplusplus
3417 extern "C" {
3418 #endif /* C++ */
3419 __must_check uint32_t dot11f_unpack_ie_ric_descriptor(
3420 	tpAniSirGlobal,
3421 	uint8_t *,
3422 	uint8_t,
3423 	tDot11fIERICDescriptor*,
3424 	bool);
3425 
3426 uint32_t dot11f_pack_ie_ric_descriptor(
3427 	tpAniSirGlobal,
3428 	tDot11fIERICDescriptor *,
3429 	uint8_t *,
3430 	uint32_t,
3431 	uint32_t*);
3432 
3433 uint32_t dot11f_get_packed_ie_RICDescriptor(
3434 	tpAniSirGlobal,
3435 	tDot11fIERICDescriptor *,
3436 	uint32_t*);
3437 
3438 #ifdef __cplusplus
3439 }; /* End extern "C". */
3440 #endif /* C++ */
3441 
3442 /* EID 70 (0x46) */
3443 typedef struct sDot11fIERRMEnabledCap {
3444 	uint8_t             present;
3445 	uint8_t      LinkMeasurement:1;
3446 	uint8_t          NeighborRpt:1;
3447 	uint8_t             parallel:1;
3448 	uint8_t             repeated:1;
3449 	uint8_t        BeaconPassive:1;
3450 	uint8_t         BeaconActive:1;
3451 	uint8_t          BeaconTable:1;
3452 	uint8_t        BeaconRepCond:1;
3453 	uint8_t     FrameMeasurement:1;
3454 	uint8_t          ChannelLoad:1;
3455 	uint8_t       NoiseHistogram:1;
3456 	uint8_t           statistics:1;
3457 	uint8_t       LCIMeasurement:1;
3458 	uint8_t           LCIAzimuth:1;
3459 	uint8_t        TCMCapability:1;
3460 	uint8_t         triggeredTCM:1;
3461 	uint8_t         APChanReport:1;
3462 	uint8_t        RRMMIBEnabled:1;
3463 	uint8_t     operatingChanMax:3;
3464 	uint8_t   nonOperatinChanMax:3;
3465 	uint8_t     MeasurementPilot:3;
3466 	uint8_t MeasurementPilotEnabled:1;
3467 	uint8_t    NeighborTSFOffset:1;
3468 	uint8_t      RCPIMeasurement:1;
3469 	uint8_t      RSNIMeasurement:1;
3470 	uint8_t    BssAvgAccessDelay:1;
3471 	uint8_t    BSSAvailAdmission:1;
3472 	uint8_t   AntennaInformation:1;
3473 	uint8_t   fine_time_meas_rpt:1;
3474 	uint8_t       lci_capability:1;
3475 	uint8_t             reserved:4;
3476 } tDot11fIERRMEnabledCap;
3477 
3478 #define DOT11F_EID_RRMENABLEDCAP (70)
3479 
3480 /* N.B. These #defines do *not* include the EID & length */
3481 #define DOT11F_IE_RRMENABLEDCAP_MIN_LEN (5)
3482 
3483 #define DOT11F_IE_RRMENABLEDCAP_MAX_LEN (5)
3484 
3485 #ifdef __cplusplus
3486 extern "C" {
3487 #endif /* C++ */
3488 __must_check uint32_t dot11f_unpack_ie_rrm_enabled_cap(
3489 	tpAniSirGlobal,
3490 	uint8_t *,
3491 	uint8_t,
3492 	tDot11fIERRMEnabledCap*,
3493 	bool);
3494 
3495 uint32_t dot11f_pack_ie_rrm_enabled_cap(
3496 	tpAniSirGlobal,
3497 	tDot11fIERRMEnabledCap *,
3498 	uint8_t *,
3499 	uint32_t,
3500 	uint32_t*);
3501 
3502 uint32_t dot11f_get_packed_ie_RRMEnabledCap(
3503 	tpAniSirGlobal,
3504 	tDot11fIERRMEnabledCap *,
3505 	uint32_t*);
3506 
3507 #ifdef __cplusplus
3508 }; /* End extern "C". */
3509 #endif /* C++ */
3510 
3511 /* EID 10 (0x0a) */
3512 typedef struct sDot11fIERequestedInfo {
3513 	uint8_t             present;
3514 	uint8_t             num_requested_eids;
3515 	uint8_t             requested_eids[255];
3516 } tDot11fIERequestedInfo;
3517 
3518 #define DOT11F_EID_REQUESTEDINFO (10)
3519 
3520 /* N.B. These #defines do *not* include the EID & length */
3521 #define DOT11F_IE_REQUESTEDINFO_MIN_LEN (0)
3522 
3523 #define DOT11F_IE_REQUESTEDINFO_MAX_LEN (255)
3524 
3525 #ifdef __cplusplus
3526 extern "C" {
3527 #endif /* C++ */
3528 __must_check uint32_t dot11f_unpack_ie_requested_info(
3529 	tpAniSirGlobal,
3530 	uint8_t *,
3531 	uint8_t,
3532 	tDot11fIERequestedInfo*,
3533 	bool);
3534 
3535 uint32_t dot11f_pack_ie_requested_info(
3536 	tpAniSirGlobal,
3537 	tDot11fIERequestedInfo *,
3538 	uint8_t *,
3539 	uint32_t,
3540 	uint32_t*);
3541 
3542 uint32_t dot11f_get_packed_ie_RequestedInfo(
3543 	tpAniSirGlobal,
3544 	tDot11fIERequestedInfo *,
3545 	uint32_t*);
3546 
3547 #ifdef __cplusplus
3548 }; /* End extern "C". */
3549 #endif /* C++ */
3550 
3551 /* EID 0 (0x00) */
3552 typedef struct sDot11fIESSID {
3553 	uint8_t             present;
3554 	uint8_t             num_ssid;
3555 	uint8_t             ssid[32];
3556 } tDot11fIESSID;
3557 
3558 #define DOT11F_EID_SSID (0)
3559 
3560 /* N.B. These #defines do *not* include the EID & length */
3561 #define DOT11F_IE_SSID_MIN_LEN (0)
3562 
3563 #define DOT11F_IE_SSID_MAX_LEN (32)
3564 
3565 #ifdef __cplusplus
3566 extern "C" {
3567 #endif /* C++ */
3568 __must_check uint32_t dot11f_unpack_ie_ssid(
3569 	tpAniSirGlobal,
3570 	uint8_t *,
3571 	uint8_t,
3572 	tDot11fIESSID*,
3573 	bool);
3574 
3575 uint32_t dot11f_pack_ie_ssid(
3576 	tpAniSirGlobal,
3577 	tDot11fIESSID *,
3578 	uint8_t *,
3579 	uint32_t,
3580 	uint32_t*);
3581 
3582 uint32_t dot11f_get_packed_ie_SSID(
3583 	tpAniSirGlobal,
3584 	tDot11fIESSID *,
3585 	uint32_t*);
3586 
3587 #ifdef __cplusplus
3588 }; /* End extern "C". */
3589 #endif /* C++ */
3590 
3591 /* EID 15 (0x0f) */
3592 typedef struct sDot11fIESchedule {
3593 	uint8_t             present;
3594 	uint16_t          aggregation:1;
3595 	uint16_t                 tsid:4;
3596 	uint16_t            direction:2;
3597 	uint16_t             reserved:9;
3598 	uint32_t            service_start_time;
3599 	uint32_t            service_interval;
3600 	uint16_t            max_service_dur;
3601 	uint16_t            spec_interval;
3602 } tDot11fIESchedule;
3603 
3604 #define DOT11F_EID_SCHEDULE (15)
3605 
3606 /* N.B. These #defines do *not* include the EID & length */
3607 #define DOT11F_IE_SCHEDULE_MIN_LEN (14)
3608 
3609 #define DOT11F_IE_SCHEDULE_MAX_LEN (14)
3610 
3611 #ifdef __cplusplus
3612 extern "C" {
3613 #endif /* C++ */
3614 __must_check uint32_t dot11f_unpack_ie_schedule(
3615 	tpAniSirGlobal,
3616 	uint8_t *,
3617 	uint8_t,
3618 	tDot11fIESchedule*,
3619 	bool);
3620 
3621 uint32_t dot11f_pack_ie_schedule(
3622 	tpAniSirGlobal,
3623 	tDot11fIESchedule *,
3624 	uint8_t *,
3625 	uint32_t,
3626 	uint32_t*);
3627 
3628 uint32_t dot11f_get_packed_ie_Schedule(
3629 	tpAniSirGlobal,
3630 	tDot11fIESchedule *,
3631 	uint32_t*);
3632 
3633 #ifdef __cplusplus
3634 }; /* End extern "C". */
3635 #endif /* C++ */
3636 
3637 /* EID 14 (0x0e) */
3638 typedef struct sDot11fIETCLAS {
3639 	uint8_t             present;
3640 	uint8_t             user_priority;
3641 	uint8_t             classifier_type;
3642 	uint8_t             classifier_mask;
3643 	union {
3644 		struct {
3645 			uint8_t source[6];
3646 			uint8_t dest[6];
3647 			uint16_t type;
3648 		} EthParams; /* classifier_type = 0 */
3649 		struct {
3650 			uint8_t version;
3651 			union {
3652 				struct {
3653 					uint8_t source[4];
3654 					uint8_t dest[4];
3655 					uint16_t src_port;
3656 					uint16_t dest_port;
3657 					uint8_t DSCP;
3658 					uint8_t proto;
3659 					uint8_t reserved;
3660 				} IpV4Params; /* version = 4 */
3661 				struct {
3662 					uint8_t source[16];
3663 					uint8_t dest[16];
3664 					uint16_t src_port;
3665 					uint16_t dest_port;
3666 					uint8_t flow_label[3];
3667 				} IpV6Params; /* version = 6 */
3668 			} params;
3669 		} IpParams; /* classifier_type = 1 */
3670 		struct {
3671 			uint16_t tag_type;
3672 		} Params8021dq; /* classifier_type = 2 */
3673 	} info;
3674 } tDot11fIETCLAS;
3675 
3676 #define DOT11F_EID_TCLAS (14)
3677 
3678 /* N.B. These #defines do *not* include the EID & length */
3679 #define DOT11F_IE_TCLAS_MIN_LEN (5)
3680 
3681 #define DOT11F_IE_TCLAS_MAX_LEN (43)
3682 
3683 #ifdef __cplusplus
3684 extern "C" {
3685 #endif /* C++ */
3686 __must_check uint32_t dot11f_unpack_ie_tclas(
3687 	tpAniSirGlobal,
3688 	uint8_t *,
3689 	uint8_t,
3690 	tDot11fIETCLAS*,
3691 	bool);
3692 
3693 uint32_t dot11f_pack_ie_tclas(
3694 	tpAniSirGlobal,
3695 	tDot11fIETCLAS *,
3696 	uint8_t *,
3697 	uint32_t,
3698 	uint32_t*);
3699 
3700 uint32_t dot11f_get_packed_ietclas(
3701 	tpAniSirGlobal,
3702 	tDot11fIETCLAS *,
3703 	uint32_t*);
3704 
3705 #ifdef __cplusplus
3706 }; /* End extern "C". */
3707 #endif /* C++ */
3708 
3709 /* EID 44 (0x2c) */
3710 typedef struct sDot11fIETCLASSPROC {
3711 	uint8_t             present;
3712 	uint8_t             processing;
3713 } tDot11fIETCLASSPROC;
3714 
3715 #define DOT11F_EID_TCLASSPROC (44)
3716 
3717 /* N.B. These #defines do *not* include the EID & length */
3718 #define DOT11F_IE_TCLASSPROC_MIN_LEN (1)
3719 
3720 #define DOT11F_IE_TCLASSPROC_MAX_LEN (1)
3721 
3722 #ifdef __cplusplus
3723 extern "C" {
3724 #endif /* C++ */
3725 __must_check uint32_t dot11f_unpack_ie_tclasSPROC(
3726 	tpAniSirGlobal,
3727 	uint8_t *,
3728 	uint8_t,
3729 	tDot11fIETCLASSPROC*,
3730 	bool);
3731 
3732 uint32_t dot11f_pack_ie_tclassproc(
3733 	tpAniSirGlobal,
3734 	tDot11fIETCLASSPROC *,
3735 	uint8_t *,
3736 	uint32_t,
3737 	uint32_t*);
3738 
3739 uint32_t dot11f_get_packed_ietclasSPROC(
3740 	tpAniSirGlobal,
3741 	tDot11fIETCLASSPROC *,
3742 	uint32_t*);
3743 
3744 #ifdef __cplusplus
3745 }; /* End extern "C". */
3746 #endif /* C++ */
3747 
3748 /* EID 43 (0x2b) */
3749 typedef struct sDot11fIETSDelay {
3750 	uint8_t             present;
3751 	uint32_t            delay;
3752 } tDot11fIETSDelay;
3753 
3754 #define DOT11F_EID_TSDELAY (43)
3755 
3756 /* N.B. These #defines do *not* include the EID & length */
3757 #define DOT11F_IE_TSDELAY_MIN_LEN (4)
3758 
3759 #define DOT11F_IE_TSDELAY_MAX_LEN (4)
3760 
3761 #ifdef __cplusplus
3762 extern "C" {
3763 #endif /* C++ */
3764 __must_check uint32_t dot11f_unpack_ie_ts_delay(
3765 	tpAniSirGlobal,
3766 	uint8_t *,
3767 	uint8_t,
3768 	tDot11fIETSDelay*,
3769 	bool);
3770 
3771 uint32_t dot11f_pack_ie_ts_delay(
3772 	tpAniSirGlobal,
3773 	tDot11fIETSDelay *,
3774 	uint8_t *,
3775 	uint32_t,
3776 	uint32_t*);
3777 
3778 uint32_t dot11f_get_packed_ie_TSDelay(
3779 	tpAniSirGlobal,
3780 	tDot11fIETSDelay *,
3781 	uint32_t*);
3782 
3783 #ifdef __cplusplus
3784 }; /* End extern "C". */
3785 #endif /* C++ */
3786 
3787 /* EID 1 (0x01) */
3788 typedef struct sDot11fIETSFInfo {
3789 	uint8_t             present;
3790 	uint16_t            TsfOffset;
3791 	uint16_t            BeaconIntvl;
3792 } tDot11fIETSFInfo;
3793 
3794 #define DOT11F_EID_TSFINFO (1)
3795 
3796 /* N.B. These #defines do *not* include the EID & length */
3797 #define DOT11F_IE_TSFINFO_MIN_LEN (4)
3798 
3799 #define DOT11F_IE_TSFINFO_MAX_LEN (4)
3800 
3801 #ifdef __cplusplus
3802 extern "C" {
3803 #endif /* C++ */
3804 __must_check uint32_t dot11f_unpack_ie_tsf_info(
3805 	tpAniSirGlobal,
3806 	uint8_t *,
3807 	uint8_t,
3808 	tDot11fIETSFInfo*,
3809 	bool);
3810 
3811 uint32_t dot11f_pack_ie_tsf_info(
3812 	tpAniSirGlobal,
3813 	tDot11fIETSFInfo *,
3814 	uint8_t *,
3815 	uint32_t,
3816 	uint32_t*);
3817 
3818 uint32_t dot11f_get_packed_ie_TSFInfo(
3819 	tpAniSirGlobal,
3820 	tDot11fIETSFInfo *,
3821 	uint32_t*);
3822 
3823 #ifdef __cplusplus
3824 }; /* End extern "C". */
3825 #endif /* C++ */
3826 
3827 /* EID 13 (0x0d) */
3828 typedef struct sDot11fIETSPEC {
3829 	uint8_t             present;
3830 	uint16_t         traffic_type:1;
3831 	uint16_t                 tsid:4;
3832 	uint16_t            direction:2;
3833 	uint16_t        access_policy:2;
3834 	uint16_t          aggregation:1;
3835 	uint16_t                  psb:1;
3836 	uint16_t        user_priority:3;
3837 	uint16_t       tsinfo_ack_pol:2;
3838 	uint8_t             schedule:1;
3839 	uint8_t               unused:7;
3840 	uint16_t                 size:15;
3841 	uint16_t                fixed:1;
3842 	uint16_t            max_msdu_size;
3843 	uint32_t            min_service_int;
3844 	uint32_t            max_service_int;
3845 	uint32_t            inactivity_int;
3846 	uint32_t            suspension_int;
3847 	uint32_t            service_start_time;
3848 	uint32_t            min_data_rate;
3849 	uint32_t            mean_data_rate;
3850 	uint32_t            peak_data_rate;
3851 	uint32_t            burst_size;
3852 	uint32_t            delay_bound;
3853 	uint32_t            min_phy_rate;
3854 	uint16_t            surplus_bw_allowance;
3855 	uint16_t            medium_time;
3856 } tDot11fIETSPEC;
3857 
3858 #define DOT11F_EID_TSPEC (13)
3859 
3860 /* N.B. These #defines do *not* include the EID & length */
3861 #define DOT11F_IE_TSPEC_MIN_LEN (55)
3862 
3863 #define DOT11F_IE_TSPEC_MAX_LEN (55)
3864 
3865 #ifdef __cplusplus
3866 extern "C" {
3867 #endif /* C++ */
3868 __must_check uint32_t dot11f_unpack_ie_tspec(
3869 	tpAniSirGlobal,
3870 	uint8_t *,
3871 	uint8_t,
3872 	tDot11fIETSPEC*,
3873 	bool);
3874 
3875 uint32_t dot11f_pack_ie_tspec(
3876 	tpAniSirGlobal,
3877 	tDot11fIETSPEC *,
3878 	uint8_t *,
3879 	uint32_t,
3880 	uint32_t*);
3881 
3882 uint32_t dot11f_get_packed_ie_TSPEC(
3883 	tpAniSirGlobal,
3884 	tDot11fIETSPEC *,
3885 	uint32_t*);
3886 
3887 #ifdef __cplusplus
3888 }; /* End extern "C". */
3889 #endif /* C++ */
3890 
3891 /* EID 191 (0xbf) */
3892 typedef struct sDot11fIEVHTCaps {
3893 	uint8_t             present;
3894 	uint32_t           maxMPDULen:2;
3895 	uint32_t supportedChannelWidthSet:2;
3896 	uint32_t        ldpcCodingCap:1;
3897 	uint32_t         shortGI80MHz:1;
3898 	uint32_t shortGI160and80plus80MHz:1;
3899 	uint32_t               txSTBC:1;
3900 	uint32_t               rxSTBC:3;
3901 	uint32_t      suBeamFormerCap:1;
3902 	uint32_t      suBeamformeeCap:1;
3903 	uint32_t csnofBeamformerAntSup:3;
3904 	uint32_t       numSoundingDim:3;
3905 	uint32_t      muBeamformerCap:1;
3906 	uint32_t      muBeamformeeCap:1;
3907 	uint32_t            vhtTXOPPS:1;
3908 	uint32_t            htcVHTCap:1;
3909 	uint32_t       maxAMPDULenExp:3;
3910 	uint32_t      vhtLinkAdaptCap:2;
3911 	uint32_t         rxAntPattern:1;
3912 	uint32_t         txAntPattern:1;
3913 	uint32_t extended_nss_bw_supp:2;
3914 	uint16_t            rxMCSMap;
3915 	uint16_t    rxHighSupDataRate:13;
3916 	uint16_t       max_nsts_total:3;
3917 	uint16_t            txMCSMap;
3918 	uint16_t        txSupDataRate:13;
3919 	uint16_t vht_extended_nss_bw_cap:1;
3920 	uint16_t             reserved:2;
3921 } tDot11fIEVHTCaps;
3922 
3923 #define DOT11F_EID_VHTCAPS (191)
3924 
3925 /* N.B. These #defines do *not* include the EID & length */
3926 #define DOT11F_IE_VHTCAPS_MIN_LEN (12)
3927 
3928 #define DOT11F_IE_VHTCAPS_MAX_LEN (12)
3929 
3930 #ifdef __cplusplus
3931 extern "C" {
3932 #endif /* C++ */
3933 __must_check uint32_t dot11f_unpack_ie_vht_caps(
3934 	tpAniSirGlobal,
3935 	uint8_t *,
3936 	uint8_t,
3937 	tDot11fIEVHTCaps*,
3938 	bool);
3939 
3940 uint32_t dot11f_pack_ie_vht_caps(
3941 	tpAniSirGlobal,
3942 	tDot11fIEVHTCaps *,
3943 	uint8_t *,
3944 	uint32_t,
3945 	uint32_t*);
3946 
3947 uint32_t dot11f_get_packed_ie_VHTCaps(
3948 	tpAniSirGlobal,
3949 	tDot11fIEVHTCaps *,
3950 	uint32_t*);
3951 
3952 #ifdef __cplusplus
3953 }; /* End extern "C". */
3954 #endif /* C++ */
3955 
3956 /* EID 192 (0xc0) */
3957 typedef struct sDot11fIEVHTOperation {
3958 	uint8_t             present;
3959 	uint8_t             chanWidth;
3960 	uint8_t             chan_center_freq_seg0;
3961 	uint8_t             chan_center_freq_seg1;
3962 	uint16_t            basicMCSSet;
3963 } tDot11fIEVHTOperation;
3964 
3965 #define DOT11F_EID_VHTOPERATION (192)
3966 
3967 /* N.B. These #defines do *not* include the EID & length */
3968 #define DOT11F_IE_VHTOPERATION_MIN_LEN (5)
3969 
3970 #define DOT11F_IE_VHTOPERATION_MAX_LEN (5)
3971 
3972 #ifdef __cplusplus
3973 extern "C" {
3974 #endif /* C++ */
3975 __must_check uint32_t dot11f_unpack_ie_vht_operation(
3976 	tpAniSirGlobal,
3977 	uint8_t *,
3978 	uint8_t,
3979 	tDot11fIEVHTOperation*,
3980 	bool);
3981 
3982 uint32_t dot11f_pack_ie_vht_operation(
3983 	tpAniSirGlobal,
3984 	tDot11fIEVHTOperation *,
3985 	uint8_t *,
3986 	uint32_t,
3987 	uint32_t*);
3988 
3989 uint32_t dot11f_get_packed_ie_VHTOperation(
3990 	tpAniSirGlobal,
3991 	tDot11fIEVHTOperation *,
3992 	uint32_t*);
3993 
3994 #ifdef __cplusplus
3995 }; /* End extern "C". */
3996 #endif /* C++ */
3997 
3998 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x09} */
3999 typedef struct sDot11fIEWMMSchedule {
4000 	uint8_t             present;
4001 	uint8_t             version /* Must be 1! */;
4002 	uint16_t          aggregation:1;
4003 	uint16_t                 tsid:4;
4004 	uint16_t            direction:2;
4005 	uint16_t             reserved:9;
4006 	uint32_t            service_start_time;
4007 	uint32_t            service_interval;
4008 	uint16_t            max_service_dur;
4009 	uint16_t            spec_interval;
4010 } tDot11fIEWMMSchedule;
4011 
4012 #define DOT11F_EID_WMMSCHEDULE (221)
4013 
4014 /* N.B. These #defines do *not* include the EID & length */
4015 #define DOT11F_IE_WMMSCHEDULE_MIN_LEN (20)
4016 
4017 #define DOT11F_IE_WMMSCHEDULE_MAX_LEN (20)
4018 
4019 #ifdef __cplusplus
4020 extern "C" {
4021 #endif /* C++ */
4022 __must_check uint32_t dot11f_unpack_ie_wmm_schedule(
4023 	tpAniSirGlobal,
4024 	uint8_t *,
4025 	uint8_t,
4026 	tDot11fIEWMMSchedule*,
4027 	bool);
4028 
4029 uint32_t dot11f_pack_ie_wmm_schedule(
4030 	tpAniSirGlobal,
4031 	tDot11fIEWMMSchedule *,
4032 	uint8_t *,
4033 	uint32_t,
4034 	uint32_t*);
4035 
4036 uint32_t dot11f_get_packed_ie_WMMSchedule(
4037 	tpAniSirGlobal,
4038 	tDot11fIEWMMSchedule *,
4039 	uint32_t*);
4040 
4041 #ifdef __cplusplus
4042 }; /* End extern "C". */
4043 #endif /* C++ */
4044 
4045 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x06} */
4046 typedef struct sDot11fIEWMMTCLAS {
4047 	uint8_t             present;
4048 	uint8_t             version /* Must be 1! */;
4049 	uint8_t             user_priority;
4050 	uint8_t             classifier_type;
4051 	uint8_t             classifier_mask;
4052 	union {
4053 		struct {
4054 			uint8_t source[6];
4055 			uint8_t dest[6];
4056 			uint16_t type;
4057 		} EthParams; /* classifier_type = 0 */
4058 		struct {
4059 			uint8_t version;
4060 			union {
4061 				struct {
4062 					uint8_t source[4];
4063 					uint8_t dest[4];
4064 					uint16_t src_port;
4065 					uint16_t dest_port;
4066 					uint8_t DSCP;
4067 					uint8_t proto;
4068 					uint8_t reserved;
4069 				} IpV4Params; /* version = 4 */
4070 				struct {
4071 					uint8_t source[16];
4072 					uint8_t dest[16];
4073 					uint16_t src_port;
4074 					uint16_t dest_port;
4075 					uint8_t flow_label[3];
4076 				} IpV6Params; /* version = 6 */
4077 			} params;
4078 		} IpParams; /* classifier_type = 1 */
4079 		struct {
4080 			uint16_t tag_type;
4081 		} Params8021dq; /* classifier_type = 2 */
4082 	} info;
4083 } tDot11fIEWMMTCLAS;
4084 
4085 #define DOT11F_EID_WMMTCLAS (221)
4086 
4087 /* N.B. These #defines do *not* include the EID & length */
4088 #define DOT11F_IE_WMMTCLAS_MIN_LEN (11)
4089 
4090 #define DOT11F_IE_WMMTCLAS_MAX_LEN (49)
4091 
4092 #ifdef __cplusplus
4093 extern "C" {
4094 #endif /* C++ */
4095 __must_check uint32_t dot11f_unpack_ie_wmmtclas(
4096 	tpAniSirGlobal,
4097 	uint8_t *,
4098 	uint8_t,
4099 	tDot11fIEWMMTCLAS*,
4100 	bool);
4101 
4102 uint32_t dot11f_pack_ie_wmmtclas(
4103 	tpAniSirGlobal,
4104 	tDot11fIEWMMTCLAS *,
4105 	uint8_t *,
4106 	uint32_t,
4107 	uint32_t*);
4108 
4109 uint32_t dot11f_get_packed_iewmmtclas(
4110 	tpAniSirGlobal,
4111 	tDot11fIEWMMTCLAS *,
4112 	uint32_t*);
4113 
4114 #ifdef __cplusplus
4115 }; /* End extern "C". */
4116 #endif /* C++ */
4117 
4118 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x07} */
4119 typedef struct sDot11fIEWMMTCLASPROC {
4120 	uint8_t             present;
4121 	uint8_t             version /* Must be 1! */;
4122 	uint8_t             processing;
4123 } tDot11fIEWMMTCLASPROC;
4124 
4125 #define DOT11F_EID_WMMTCLASPROC (221)
4126 
4127 /* N.B. These #defines do *not* include the EID & length */
4128 #define DOT11F_IE_WMMTCLASPROC_MIN_LEN (7)
4129 
4130 #define DOT11F_IE_WMMTCLASPROC_MAX_LEN (7)
4131 
4132 #ifdef __cplusplus
4133 extern "C" {
4134 #endif /* C++ */
4135 __must_check uint32_t dot11f_unpack_ie_wmmtclasproc(
4136 	tpAniSirGlobal,
4137 	uint8_t *,
4138 	uint8_t,
4139 	tDot11fIEWMMTCLASPROC*,
4140 	bool);
4141 
4142 uint32_t dot11f_pack_ie_wmmtclasproc(
4143 	tpAniSirGlobal,
4144 	tDot11fIEWMMTCLASPROC *,
4145 	uint8_t *,
4146 	uint32_t,
4147 	uint32_t*);
4148 
4149 uint32_t dot11f_get_packed_iewmmtclasPROC(
4150 	tpAniSirGlobal,
4151 	tDot11fIEWMMTCLASPROC *,
4152 	uint32_t*);
4153 
4154 #ifdef __cplusplus
4155 }; /* End extern "C". */
4156 #endif /* C++ */
4157 
4158 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x08} */
4159 typedef struct sDot11fIEWMMTSDelay {
4160 	uint8_t             present;
4161 	uint8_t             version /* Must be 1! */;
4162 	uint32_t            delay;
4163 } tDot11fIEWMMTSDelay;
4164 
4165 #define DOT11F_EID_WMMTSDELAY (221)
4166 
4167 /* N.B. These #defines do *not* include the EID & length */
4168 #define DOT11F_IE_WMMTSDELAY_MIN_LEN (10)
4169 
4170 #define DOT11F_IE_WMMTSDELAY_MAX_LEN (10)
4171 
4172 #ifdef __cplusplus
4173 extern "C" {
4174 #endif /* C++ */
4175 __must_check uint32_t dot11f_unpack_ie_wmmts_delay(
4176 	tpAniSirGlobal,
4177 	uint8_t *,
4178 	uint8_t,
4179 	tDot11fIEWMMTSDelay*,
4180 	bool);
4181 
4182 uint32_t dot11f_pack_ie_wmmts_delay(
4183 	tpAniSirGlobal,
4184 	tDot11fIEWMMTSDelay *,
4185 	uint8_t *,
4186 	uint32_t,
4187 	uint32_t*);
4188 
4189 uint32_t dot11f_get_packed_ie_WMMTSDelay(
4190 	tpAniSirGlobal,
4191 	tDot11fIEWMMTSDelay *,
4192 	uint32_t*);
4193 
4194 #ifdef __cplusplus
4195 }; /* End extern "C". */
4196 #endif /* C++ */
4197 
4198 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x02} */
4199 typedef struct sDot11fIEWMMTSPEC {
4200 	uint8_t             present;
4201 	uint8_t             version /* Must be 1! */;
4202 	uint16_t         traffic_type:1;
4203 	uint16_t                 tsid:4;
4204 	uint16_t            direction:2;
4205 	uint16_t        access_policy:2;
4206 	uint16_t          aggregation:1;
4207 	uint16_t                  psb:1;
4208 	uint16_t        user_priority:3;
4209 	uint16_t       tsinfo_ack_pol:2;
4210 	uint8_t          tsinfo_rsvd:7;
4211 	uint8_t      burst_size_defn:1;
4212 	uint16_t                 size:15;
4213 	uint16_t                fixed:1;
4214 	uint16_t            max_msdu_size;
4215 	uint32_t            min_service_int;
4216 	uint32_t            max_service_int;
4217 	uint32_t            inactivity_int;
4218 	uint32_t            suspension_int;
4219 	uint32_t            service_start_time;
4220 	uint32_t            min_data_rate;
4221 	uint32_t            mean_data_rate;
4222 	uint32_t            peak_data_rate;
4223 	uint32_t            burst_size;
4224 	uint32_t            delay_bound;
4225 	uint32_t            min_phy_rate;
4226 	uint16_t            surplus_bw_allowance;
4227 	uint16_t            medium_time;
4228 } tDot11fIEWMMTSPEC;
4229 
4230 #define DOT11F_EID_WMMTSPEC (221)
4231 
4232 /* N.B. These #defines do *not* include the EID & length */
4233 #define DOT11F_IE_WMMTSPEC_MIN_LEN (61)
4234 
4235 #define DOT11F_IE_WMMTSPEC_MAX_LEN (61)
4236 
4237 #ifdef __cplusplus
4238 extern "C" {
4239 #endif /* C++ */
4240 __must_check uint32_t dot11f_unpack_ie_wmmtspec(
4241 	tpAniSirGlobal,
4242 	uint8_t *,
4243 	uint8_t,
4244 	tDot11fIEWMMTSPEC*,
4245 	bool);
4246 
4247 uint32_t dot11f_pack_ie_wmmtspec(
4248 	tpAniSirGlobal,
4249 	tDot11fIEWMMTSPEC *,
4250 	uint8_t *,
4251 	uint32_t,
4252 	uint32_t*);
4253 
4254 uint32_t dot11f_get_packed_ie_WMMTSPEC(
4255 	tpAniSirGlobal,
4256 	tDot11fIEWMMTSPEC *,
4257 	uint32_t*);
4258 
4259 #ifdef __cplusplus
4260 }; /* End extern "C". */
4261 #endif /* C++ */
4262 
4263 /* EID 194 (0xc2) */
4264 typedef struct sDot11fIEWiderBWChanSwitchAnn {
4265 	uint8_t             present;
4266 	uint8_t             newChanWidth;
4267 	uint8_t             newCenterChanFreq0;
4268 	uint8_t             newCenterChanFreq1;
4269 } tDot11fIEWiderBWChanSwitchAnn;
4270 
4271 #define DOT11F_EID_WIDERBWCHANSWITCHANN (194)
4272 
4273 /* N.B. These #defines do *not* include the EID & length */
4274 #define DOT11F_IE_WIDERBWCHANSWITCHANN_MIN_LEN (3)
4275 
4276 #define DOT11F_IE_WIDERBWCHANSWITCHANN_MAX_LEN (3)
4277 
4278 #ifdef __cplusplus
4279 extern "C" {
4280 #endif /* C++ */
4281 __must_check uint32_t dot11f_unpack_ie_wider_bw_chan_switch_ann(
4282 	tpAniSirGlobal,
4283 	uint8_t *,
4284 	uint8_t,
4285 	tDot11fIEWiderBWChanSwitchAnn*,
4286 	bool);
4287 
4288 uint32_t dot11f_pack_ie_wider_bw_chan_switch_ann(
4289 	tpAniSirGlobal,
4290 	tDot11fIEWiderBWChanSwitchAnn *,
4291 	uint8_t *,
4292 	uint32_t,
4293 	uint32_t*);
4294 
4295 uint32_t dot11f_get_packed_ie_WiderBWChanSwitchAnn(
4296 	tpAniSirGlobal,
4297 	tDot11fIEWiderBWChanSwitchAnn *,
4298 	uint32_t*);
4299 
4300 #ifdef __cplusplus
4301 }; /* End extern "C". */
4302 #endif /* C++ */
4303 
4304 /* EID 1 (0x01) */
4305 typedef struct sDot11fIEazimuth_req {
4306 	uint8_t             present;
4307 	uint8_t             request;
4308 } tDot11fIEazimuth_req;
4309 
4310 #define DOT11F_EID_AZIMUTH_REQ (1)
4311 
4312 /* N.B. These #defines do *not* include the EID & length */
4313 #define DOT11F_IE_AZIMUTH_REQ_MIN_LEN (1)
4314 
4315 #define DOT11F_IE_AZIMUTH_REQ_MAX_LEN (1)
4316 
4317 #ifdef __cplusplus
4318 extern "C" {
4319 #endif /* C++ */
4320 __must_check uint32_t dot11f_unpack_ie_azimuth_req(
4321 	tpAniSirGlobal,
4322 	uint8_t *,
4323 	uint8_t,
4324 	tDot11fIEazimuth_req*,
4325 	bool);
4326 
4327 uint32_t dot11f_pack_ie_azimuth_req(
4328 	tpAniSirGlobal,
4329 	tDot11fIEazimuth_req *,
4330 	uint8_t *,
4331 	uint32_t,
4332 	uint32_t*);
4333 
4334 uint32_t dot11f_get_packed_ie_azimuth_req(
4335 	tpAniSirGlobal,
4336 	tDot11fIEazimuth_req *,
4337 	uint32_t*);
4338 
4339 #ifdef __cplusplus
4340 }; /* End extern "C". */
4341 #endif /* C++ */
4342 
4343 /* EID 2 (0x02) */
4344 typedef struct sDot11fIEbeacon_report_frm_body_fragment_id {
4345 	uint8_t             present;
4346 	uint16_t     beacon_report_id:8;
4347 	uint16_t   fragment_id_number:7;
4348 	uint16_t       more_fragments:1;
4349 } tDot11fIEbeacon_report_frm_body_fragment_id;
4350 
4351 #define DOT11F_EID_BEACON_REPORT_FRM_BODY_FRAGMENT_ID (2)
4352 
4353 /* N.B. These #defines do *not* include the EID & length */
4354 #define DOT11F_IE_BEACON_REPORT_FRM_BODY_FRAGMENT_ID_MIN_LEN (2)
4355 
4356 #define DOT11F_IE_BEACON_REPORT_FRM_BODY_FRAGMENT_ID_MAX_LEN (2)
4357 
4358 #ifdef __cplusplus
4359 extern "C" {
4360 #endif /* C++ */
4361 __must_check uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id(
4362 	tpAniSirGlobal,
4363 	uint8_t *,
4364 	uint8_t,
4365 	tDot11fIEbeacon_report_frm_body_fragment_id*,
4366 	bool);
4367 
4368 uint32_t dot11f_pack_ie_beacon_report_frm_body_fragment_id(
4369 	tpAniSirGlobal,
4370 	tDot11fIEbeacon_report_frm_body_fragment_id *,
4371 	uint8_t *,
4372 	uint32_t,
4373 	uint32_t*);
4374 
4375 uint32_t dot11f_get_packed_ie_beacon_report_frm_body_fragment_id(
4376 	tpAniSirGlobal,
4377 	tDot11fIEbeacon_report_frm_body_fragment_id *,
4378 	uint32_t*);
4379 
4380 #ifdef __cplusplus
4381 }; /* End extern "C". */
4382 #endif /* C++ */
4383 
4384 /* EID 164 (0xa4) */
4385 typedef struct sDot11fIElast_beacon_report_indication {
4386 	uint8_t             present;
4387 	uint8_t             last_fragment;
4388 } tDot11fIElast_beacon_report_indication;
4389 
4390 #define DOT11F_EID_LAST_BEACON_REPORT_INDICATION (164)
4391 
4392 /* N.B. These #defines do *not* include the EID & length */
4393 #define DOT11F_IE_LAST_BEACON_REPORT_INDICATION_MIN_LEN (1)
4394 
4395 #define DOT11F_IE_LAST_BEACON_REPORT_INDICATION_MAX_LEN (1)
4396 
4397 #ifdef __cplusplus
4398 extern "C" {
4399 #endif /* C++ */
4400 __must_check uint32_t dot11f_unpack_ie_last_beacon_report_indication(
4401 	tpAniSirGlobal,
4402 	uint8_t *,
4403 	uint8_t,
4404 	tDot11fIElast_beacon_report_indication*,
4405 	bool);
4406 
4407 uint32_t dot11f_pack_ie_last_beacon_report_indication(
4408 	tpAniSirGlobal,
4409 	tDot11fIElast_beacon_report_indication *,
4410 	uint8_t *,
4411 	uint32_t,
4412 	uint32_t*);
4413 
4414 uint32_t dot11f_get_packed_ie_last_beacon_report_indication(
4415 	tpAniSirGlobal,
4416 	tDot11fIElast_beacon_report_indication *,
4417 	uint32_t*);
4418 
4419 #ifdef __cplusplus
4420 }; /* End extern "C". */
4421 #endif /* C++ */
4422 
4423 /* EID 4 (0x04) */
4424 typedef struct sDot11fIEmax_age {
4425 	uint8_t             present;
4426 	uint16_t            max_age;
4427 } tDot11fIEmax_age;
4428 
4429 #define DOT11F_EID_MAX_AGE (4)
4430 
4431 /* N.B. These #defines do *not* include the EID & length */
4432 #define DOT11F_IE_MAX_AGE_MIN_LEN (2)
4433 
4434 #define DOT11F_IE_MAX_AGE_MAX_LEN (2)
4435 
4436 #ifdef __cplusplus
4437 extern "C" {
4438 #endif /* C++ */
4439 __must_check uint32_t dot11f_unpack_ie_max_age(
4440 	tpAniSirGlobal,
4441 	uint8_t *,
4442 	uint8_t,
4443 	tDot11fIEmax_age*,
4444 	bool);
4445 
4446 uint32_t dot11f_pack_ie_max_age(
4447 	tpAniSirGlobal,
4448 	tDot11fIEmax_age *,
4449 	uint8_t *,
4450 	uint32_t,
4451 	uint32_t*);
4452 
4453 uint32_t dot11f_get_packed_ie_max_age(
4454 	tpAniSirGlobal,
4455 	tDot11fIEmax_age *,
4456 	uint32_t*);
4457 
4458 #ifdef __cplusplus
4459 }; /* End extern "C". */
4460 #endif /* C++ */
4461 
4462 /* EID 76 (0x4c) */
4463 typedef struct sDot11fIEmscs_status {
4464 	uint8_t             present;
4465 	uint8_t             status_code;
4466 } tDot11fIEmscs_status;
4467 
4468 #define DOT11F_EID_MSCS_STATUS (76)
4469 
4470 /* N.B. These #defines do *not* include the EID & length */
4471 #define DOT11F_IE_MSCS_STATUS_MIN_LEN (1)
4472 
4473 #define DOT11F_IE_MSCS_STATUS_MAX_LEN (1)
4474 
4475 #ifdef __cplusplus
4476 extern "C" {
4477 #endif /* C++ */
4478 __must_check uint32_t dot11f_unpack_ie_mscs_status(
4479 	tpAniSirGlobal,
4480 	uint8_t *,
4481 	uint8_t,
4482 	tDot11fIEmscs_status*,
4483 	bool);
4484 
4485 uint32_t dot11f_pack_ie_mscs_status(
4486 	tpAniSirGlobal,
4487 	tDot11fIEmscs_status *,
4488 	uint8_t *,
4489 	uint32_t,
4490 	uint32_t*);
4491 
4492 uint32_t dot11f_get_packed_ie_mscs_status(
4493 	tpAniSirGlobal,
4494 	tDot11fIEmscs_status *,
4495 	uint32_t*);
4496 
4497 #ifdef __cplusplus
4498 }; /* End extern "C". */
4499 #endif /* C++ */
4500 
4501 /* EID 52 (0x34) */
4502 typedef struct sDot11fIEneighbor_rpt {
4503 	uint8_t                             present;
4504 	uint8_t                             bssid[6];
4505 	uint8_t                       APReachability:2;
4506 	uint8_t                             Security:1;
4507 	uint8_t                             KeyScope:1;
4508 	uint8_t                          SpecMgmtCap:1;
4509 	uint8_t                               QosCap:1;
4510 	uint8_t                                 apsd:1;
4511 	uint8_t                                  rrm:1;
4512 	uint8_t                            DelayedBA:1;
4513 	uint8_t                                ImmBA:1;
4514 	uint8_t                       MobilityDomain:1;
4515 	uint8_t                             reserved:5;
4516 	uint16_t                            reserved1;
4517 	uint8_t                             regulatoryClass;
4518 	uint8_t                             channel;
4519 	uint8_t                             PhyType;
4520 	tDot11fIETSFInfo                    TSFInfo;
4521 	tDot11fIECondensedCountryStr        CondensedCountryStr;
4522 	tDot11fIEMeasurementPilot           MeasurementPilot;
4523 	tDot11fIERRMEnabledCap              RRMEnabledCap;
4524 	tDot11fIEMultiBssid                 MultiBssid;
4525 } tDot11fIEneighbor_rpt;
4526 
4527 #define DOT11F_EID_NEIGHBOR_RPT (52)
4528 
4529 /* N.B. These #defines do *not* include the EID & length */
4530 #define DOT11F_IE_NEIGHBOR_RPT_MIN_LEN (13)
4531 
4532 #define DOT11F_IE_NEIGHBOR_RPT_MAX_LEN (546)
4533 
4534 #ifdef __cplusplus
4535 extern "C" {
4536 #endif /* C++ */
4537 __must_check uint32_t dot11f_unpack_ie_neighbor_rpt(
4538 	tpAniSirGlobal,
4539 	uint8_t *,
4540 	uint8_t,
4541 	tDot11fIEneighbor_rpt*,
4542 	bool);
4543 
4544 uint32_t dot11f_pack_ie_neighbor_rpt(
4545 	tpAniSirGlobal,
4546 	tDot11fIEneighbor_rpt *,
4547 	uint8_t *,
4548 	uint32_t,
4549 	uint32_t*);
4550 
4551 uint32_t dot11f_get_packed_ie_neighbor_rpt(
4552 	tpAniSirGlobal,
4553 	tDot11fIEneighbor_rpt *,
4554 	uint32_t*);
4555 
4556 #ifdef __cplusplus
4557 }; /* End extern "C". */
4558 #endif /* C++ */
4559 
4560 /* EID 2 (0x02) */
4561 typedef struct sDot11fIEreq_mac_addr {
4562 	uint8_t             present;
4563 	uint8_t             addr[6];
4564 } tDot11fIEreq_mac_addr;
4565 
4566 #define DOT11F_EID_REQ_MAC_ADDR (2)
4567 
4568 /* N.B. These #defines do *not* include the EID & length */
4569 #define DOT11F_IE_REQ_MAC_ADDR_MIN_LEN (6)
4570 
4571 #define DOT11F_IE_REQ_MAC_ADDR_MAX_LEN (6)
4572 
4573 #ifdef __cplusplus
4574 extern "C" {
4575 #endif /* C++ */
4576 __must_check uint32_t dot11f_unpack_ie_req_mac_addr(
4577 	tpAniSirGlobal,
4578 	uint8_t *,
4579 	uint8_t,
4580 	tDot11fIEreq_mac_addr*,
4581 	bool);
4582 
4583 uint32_t dot11f_pack_ie_req_mac_addr(
4584 	tpAniSirGlobal,
4585 	tDot11fIEreq_mac_addr *,
4586 	uint8_t *,
4587 	uint32_t,
4588 	uint32_t*);
4589 
4590 uint32_t dot11f_get_packed_ie_req_mac_addr(
4591 	tpAniSirGlobal,
4592 	tDot11fIEreq_mac_addr *,
4593 	uint32_t*);
4594 
4595 #ifdef __cplusplus
4596 }; /* End extern "C". */
4597 #endif /* C++ */
4598 
4599 /* EID 255 (0xff) Extended EID 89 (0x59) */
4600 typedef struct sDot11fIEtclas_mask {
4601 	uint8_t             present;
4602 	uint8_t             classifier_type;
4603 	uint8_t             classifier_mask;
4604 	union {
4605 		struct {
4606 			uint8_t reserved[16];
4607 		} ip_param; /* classifier_type = 4 */
4608 	} info;
4609 } tDot11fIEtclas_mask;
4610 
4611 #define DOT11F_EID_TCLAS_MASK (255)
4612 
4613 /* N.B. These #defines do *not* include the EID & length */
4614 #define DOT11F_IE_TCLAS_MASK_MIN_LEN (18)
4615 
4616 #define DOT11F_IE_TCLAS_MASK_MAX_LEN (18)
4617 
4618 #ifdef __cplusplus
4619 extern "C" {
4620 #endif /* C++ */
4621 __must_check uint32_t dot11f_unpack_ie_tclas_mask(
4622 	tpAniSirGlobal,
4623 	uint8_t *,
4624 	uint8_t,
4625 	tDot11fIEtclas_mask*,
4626 	bool);
4627 
4628 uint32_t dot11f_pack_ie_tclas_mask(
4629 	tpAniSirGlobal,
4630 	tDot11fIEtclas_mask *,
4631 	uint8_t *,
4632 	uint32_t,
4633 	uint32_t*);
4634 
4635 uint32_t dot11f_get_packed_ie_tclas_mask(
4636 	tpAniSirGlobal,
4637 	tDot11fIEtclas_mask *,
4638 	uint32_t*);
4639 
4640 #ifdef __cplusplus
4641 }; /* End extern "C". */
4642 #endif /* C++ */
4643 
4644 /* EID 3 (0x03) */
4645 typedef struct sDot11fIEtgt_mac_addr {
4646 	uint8_t             present;
4647 	uint8_t             addr[6];
4648 } tDot11fIEtgt_mac_addr;
4649 
4650 #define DOT11F_EID_TGT_MAC_ADDR (3)
4651 
4652 /* N.B. These #defines do *not* include the EID & length */
4653 #define DOT11F_IE_TGT_MAC_ADDR_MIN_LEN (6)
4654 
4655 #define DOT11F_IE_TGT_MAC_ADDR_MAX_LEN (6)
4656 
4657 #ifdef __cplusplus
4658 extern "C" {
4659 #endif /* C++ */
4660 __must_check uint32_t dot11f_unpack_ie_tgt_mac_addr(
4661 	tpAniSirGlobal,
4662 	uint8_t *,
4663 	uint8_t,
4664 	tDot11fIEtgt_mac_addr*,
4665 	bool);
4666 
4667 uint32_t dot11f_pack_ie_tgt_mac_addr(
4668 	tpAniSirGlobal,
4669 	tDot11fIEtgt_mac_addr *,
4670 	uint8_t *,
4671 	uint32_t,
4672 	uint32_t*);
4673 
4674 uint32_t dot11f_get_packed_ie_tgt_mac_addr(
4675 	tpAniSirGlobal,
4676 	tDot11fIEtgt_mac_addr *,
4677 	uint32_t*);
4678 
4679 #ifdef __cplusplus
4680 }; /* End extern "C". */
4681 #endif /* C++ */
4682 
4683 /* EID 195 (0xc3) */
4684 typedef struct sDot11fIEtransmit_power_env {
4685 	uint8_t             present;
4686 	uint8_t     max_tx_pwr_count:3;
4687 	uint8_t max_tx_pwr_interpret:3;
4688 	uint8_t  max_tx_pwr_category:2;
4689 	uint8_t             num_tx_power;
4690 	uint8_t             tx_power[8];
4691 } tDot11fIEtransmit_power_env;
4692 
4693 #define DOT11F_EID_TRANSMIT_POWER_ENV (195)
4694 
4695 /* N.B. These #defines do *not* include the EID & length */
4696 #define DOT11F_IE_TRANSMIT_POWER_ENV_MIN_LEN (2)
4697 
4698 #define DOT11F_IE_TRANSMIT_POWER_ENV_MAX_LEN (9)
4699 
4700 #ifdef __cplusplus
4701 extern "C" {
4702 #endif /* C++ */
4703 __must_check uint32_t dot11f_unpack_ie_transmit_power_env(
4704 	tpAniSirGlobal,
4705 	uint8_t *,
4706 	uint8_t,
4707 	tDot11fIEtransmit_power_env*,
4708 	bool);
4709 
4710 uint32_t dot11f_pack_ie_transmit_power_env(
4711 	tpAniSirGlobal,
4712 	tDot11fIEtransmit_power_env *,
4713 	uint8_t *,
4714 	uint32_t,
4715 	uint32_t*);
4716 
4717 uint32_t dot11f_get_packed_ie_transmit_power_env(
4718 	tpAniSirGlobal,
4719 	tDot11fIEtransmit_power_env *,
4720 	uint32_t*);
4721 
4722 #ifdef __cplusplus
4723 }; /* End extern "C". */
4724 #endif /* C++ */
4725 
4726 /* EID 197 (0xc5) */
4727 typedef struct sDot11fIEAID {
4728 	uint8_t             present;
4729 	uint16_t            assocId;
4730 } tDot11fIEAID;
4731 
4732 #define DOT11F_EID_AID (197)
4733 
4734 /* N.B. These #defines do *not* include the EID & length */
4735 #define DOT11F_IE_AID_MIN_LEN (2)
4736 
4737 #define DOT11F_IE_AID_MAX_LEN (2)
4738 
4739 #ifdef __cplusplus
4740 extern "C" {
4741 #endif /* C++ */
4742 __must_check uint32_t dot11f_unpack_ie_aid(
4743 	tpAniSirGlobal,
4744 	uint8_t *,
4745 	uint8_t,
4746 	tDot11fIEAID*,
4747 	bool);
4748 
4749 uint32_t dot11f_pack_ie_aid(
4750 	tpAniSirGlobal,
4751 	tDot11fIEAID *,
4752 	uint8_t *,
4753 	uint32_t,
4754 	uint32_t*);
4755 
4756 uint32_t dot11f_get_packed_ie_AID(
4757 	tpAniSirGlobal,
4758 	tDot11fIEAID *,
4759 	uint32_t*);
4760 
4761 #ifdef __cplusplus
4762 }; /* End extern "C". */
4763 #endif /* C++ */
4764 
4765 /* EID 4 (0x04) */
4766 typedef struct sDot11fIECFParams {
4767 	uint8_t             present;
4768 	uint8_t             cfp_count;
4769 	uint8_t             cfp_period;
4770 	uint16_t            cfp_maxduration;
4771 	uint16_t            cfp_durremaining;
4772 } tDot11fIECFParams;
4773 
4774 #define DOT11F_EID_CFPARAMS (4)
4775 
4776 /* N.B. These #defines do *not* include the EID & length */
4777 #define DOT11F_IE_CFPARAMS_MIN_LEN (6)
4778 
4779 #define DOT11F_IE_CFPARAMS_MAX_LEN (6)
4780 
4781 #ifdef __cplusplus
4782 extern "C" {
4783 #endif /* C++ */
4784 __must_check uint32_t dot11f_unpack_ie_cf_params(
4785 	tpAniSirGlobal,
4786 	uint8_t *,
4787 	uint8_t,
4788 	tDot11fIECFParams*,
4789 	bool);
4790 
4791 uint32_t dot11f_pack_ie_cf_params(
4792 	tpAniSirGlobal,
4793 	tDot11fIECFParams *,
4794 	uint8_t *,
4795 	uint32_t,
4796 	uint32_t*);
4797 
4798 uint32_t dot11f_get_packed_ie_CFParams(
4799 	tpAniSirGlobal,
4800 	tDot11fIECFParams *,
4801 	uint32_t*);
4802 
4803 #ifdef __cplusplus
4804 }; /* End extern "C". */
4805 #endif /* C++ */
4806 
4807 /* EID 16 (0x10) */
4808 typedef struct sDot11fIEChallengeText {
4809 	uint8_t             present;
4810 	uint8_t             num_text;
4811 	uint8_t             text[253];
4812 } tDot11fIEChallengeText;
4813 
4814 #define DOT11F_EID_CHALLENGETEXT (16)
4815 
4816 /* N.B. These #defines do *not* include the EID & length */
4817 #define DOT11F_IE_CHALLENGETEXT_MIN_LEN (1)
4818 
4819 #define DOT11F_IE_CHALLENGETEXT_MAX_LEN (253)
4820 
4821 #ifdef __cplusplus
4822 extern "C" {
4823 #endif /* C++ */
4824 __must_check uint32_t dot11f_unpack_ie_challenge_text(
4825 	tpAniSirGlobal,
4826 	uint8_t *,
4827 	uint8_t,
4828 	tDot11fIEChallengeText*,
4829 	bool);
4830 
4831 uint32_t dot11f_pack_ie_challenge_text(
4832 	tpAniSirGlobal,
4833 	tDot11fIEChallengeText *,
4834 	uint8_t *,
4835 	uint32_t,
4836 	uint32_t*);
4837 
4838 uint32_t dot11f_get_packed_ie_ChallengeText(
4839 	tpAniSirGlobal,
4840 	tDot11fIEChallengeText *,
4841 	uint32_t*);
4842 
4843 #ifdef __cplusplus
4844 }; /* End extern "C". */
4845 #endif /* C++ */
4846 
4847 /* EID 37 (0x25) */
4848 typedef struct sDot11fIEChanSwitchAnn {
4849 	uint8_t             present;
4850 	uint8_t             switchMode;
4851 	uint8_t             newChannel;
4852 	uint8_t             switchCount;
4853 } tDot11fIEChanSwitchAnn;
4854 
4855 #define DOT11F_EID_CHANSWITCHANN (37)
4856 
4857 /* N.B. These #defines do *not* include the EID & length */
4858 #define DOT11F_IE_CHANSWITCHANN_MIN_LEN (3)
4859 
4860 #define DOT11F_IE_CHANSWITCHANN_MAX_LEN (3)
4861 
4862 #ifdef __cplusplus
4863 extern "C" {
4864 #endif /* C++ */
4865 __must_check uint32_t dot11f_unpack_ie_chan_switch_ann(
4866 	tpAniSirGlobal,
4867 	uint8_t *,
4868 	uint8_t,
4869 	tDot11fIEChanSwitchAnn*,
4870 	bool);
4871 
4872 uint32_t dot11f_pack_ie_chan_switch_ann(
4873 	tpAniSirGlobal,
4874 	tDot11fIEChanSwitchAnn *,
4875 	uint8_t *,
4876 	uint32_t,
4877 	uint32_t*);
4878 
4879 uint32_t dot11f_get_packed_ie_ChanSwitchAnn(
4880 	tpAniSirGlobal,
4881 	tDot11fIEChanSwitchAnn *,
4882 	uint32_t*);
4883 
4884 #ifdef __cplusplus
4885 }; /* End extern "C". */
4886 #endif /* C++ */
4887 
4888 /* EID 196 (0xc4) */
4889 typedef struct sDot11fIEChannelSwitchWrapper {
4890 	uint8_t                              present;
4891 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
4892 	tDot11fIEtransmit_power_env          transmit_power_env;
4893 } tDot11fIEChannelSwitchWrapper;
4894 
4895 #define DOT11F_EID_CHANNELSWITCHWRAPPER (196)
4896 
4897 /* N.B. These #defines do *not* include the EID & length */
4898 #define DOT11F_IE_CHANNELSWITCHWRAPPER_MIN_LEN (0)
4899 
4900 #define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (16)
4901 
4902 #ifdef __cplusplus
4903 extern "C" {
4904 #endif /* C++ */
4905 __must_check uint32_t dot11f_unpack_ie_channel_switch_wrapper(
4906 	tpAniSirGlobal,
4907 	uint8_t *,
4908 	uint8_t,
4909 	tDot11fIEChannelSwitchWrapper*,
4910 	bool);
4911 
4912 uint32_t dot11f_pack_ie_channel_switch_wrapper(
4913 	tpAniSirGlobal,
4914 	tDot11fIEChannelSwitchWrapper *,
4915 	uint8_t *,
4916 	uint32_t,
4917 	uint32_t*);
4918 
4919 uint32_t dot11f_get_packed_ie_channel_switch_wrapper(
4920 	tpAniSirGlobal,
4921 	tDot11fIEChannelSwitchWrapper *,
4922 	uint32_t*);
4923 
4924 #ifdef __cplusplus
4925 }; /* End extern "C". */
4926 #endif /* C++ */
4927 
4928 /* EID 7 (0x07) */
4929 typedef struct sDot11fIECountry {
4930 	uint8_t             present;
4931 	uint8_t             country[3];
4932 	uint8_t             first_triplet[3];
4933 	uint8_t             num_more_triplets;
4934 	uint8_t             more_triplets[80][3];
4935 } tDot11fIECountry;
4936 
4937 #define DOT11F_EID_COUNTRY (7)
4938 
4939 /* N.B. These #defines do *not* include the EID & length */
4940 #define DOT11F_IE_COUNTRY_MIN_LEN (6)
4941 
4942 #define DOT11F_IE_COUNTRY_MAX_LEN (246)
4943 
4944 #ifdef __cplusplus
4945 extern "C" {
4946 #endif /* C++ */
4947 __must_check uint32_t dot11f_unpack_ie_country(
4948 	tpAniSirGlobal,
4949 	uint8_t *,
4950 	uint8_t,
4951 	tDot11fIECountry*,
4952 	bool);
4953 
4954 uint32_t dot11f_pack_ie_country(
4955 	tpAniSirGlobal,
4956 	tDot11fIECountry *,
4957 	uint8_t *,
4958 	uint32_t,
4959 	uint32_t*);
4960 
4961 uint32_t dot11f_get_packed_ie_country(
4962 	tpAniSirGlobal,
4963 	tDot11fIECountry *,
4964 	uint32_t*);
4965 
4966 #ifdef __cplusplus
4967 }; /* End extern "C". */
4968 #endif /* C++ */
4969 
4970 /* EID 3 (0x03) */
4971 typedef struct sDot11fIEDSParams {
4972 	uint8_t             present;
4973 	uint8_t             curr_channel;
4974 } tDot11fIEDSParams;
4975 
4976 #define DOT11F_EID_DSPARAMS (3)
4977 
4978 /* N.B. These #defines do *not* include the EID & length */
4979 #define DOT11F_IE_DSPARAMS_MIN_LEN (1)
4980 
4981 #define DOT11F_IE_DSPARAMS_MAX_LEN (1)
4982 
4983 #ifdef __cplusplus
4984 extern "C" {
4985 #endif /* C++ */
4986 __must_check uint32_t dot11f_unpack_ie_DSParams(
4987 	tpAniSirGlobal,
4988 	uint8_t *,
4989 	uint8_t,
4990 	tDot11fIEDSParams*,
4991 	bool);
4992 
4993 uint32_t dot11f_pack_ie_ds_params(
4994 	tpAniSirGlobal,
4995 	tDot11fIEDSParams *,
4996 	uint8_t *,
4997 	uint32_t,
4998 	uint32_t*);
4999 
5000 uint32_t dot11f_get_packed_ie_DSParams(
5001 	tpAniSirGlobal,
5002 	tDot11fIEDSParams *,
5003 	uint32_t*);
5004 
5005 #ifdef __cplusplus
5006 }; /* End extern "C". */
5007 #endif /* C++ */
5008 
5009 /* EID 12 (0x0c) */
5010 typedef struct sDot11fIEEDCAParamSet {
5011 	uint8_t             present;
5012 	uint8_t             qos;
5013 	uint8_t             reserved;
5014 	uint8_t           acbe_aifsn:4;
5015 	uint8_t             acbe_acm:1;
5016 	uint8_t             acbe_aci:2;
5017 	uint8_t              unused1:1;
5018 	uint8_t          acbe_acwmin:4;
5019 	uint8_t          acbe_acwmax:4;
5020 	uint16_t            acbe_txoplimit;
5021 	uint8_t           acbk_aifsn:4;
5022 	uint8_t             acbk_acm:1;
5023 	uint8_t             acbk_aci:2;
5024 	uint8_t              unused2:1;
5025 	uint8_t          acbk_acwmin:4;
5026 	uint8_t          acbk_acwmax:4;
5027 	uint16_t            acbk_txoplimit;
5028 	uint8_t           acvi_aifsn:4;
5029 	uint8_t             acvi_acm:1;
5030 	uint8_t             acvi_aci:2;
5031 	uint8_t              unused3:1;
5032 	uint8_t          acvi_acwmin:4;
5033 	uint8_t          acvi_acwmax:4;
5034 	uint16_t            acvi_txoplimit;
5035 	uint8_t           acvo_aifsn:4;
5036 	uint8_t             acvo_acm:1;
5037 	uint8_t             acvo_aci:2;
5038 	uint8_t              unused4:1;
5039 	uint8_t          acvo_acwmin:4;
5040 	uint8_t          acvo_acwmax:4;
5041 	uint16_t            acvo_txoplimit;
5042 } tDot11fIEEDCAParamSet;
5043 
5044 #define DOT11F_EID_EDCAPARAMSET (12)
5045 
5046 /* N.B. These #defines do *not* include the EID & length */
5047 #define DOT11F_IE_EDCAPARAMSET_MIN_LEN (18)
5048 
5049 #define DOT11F_IE_EDCAPARAMSET_MAX_LEN (18)
5050 
5051 #ifdef __cplusplus
5052 extern "C" {
5053 #endif /* C++ */
5054 __must_check uint32_t dot11f_unpack_ie_edca_param_set(
5055 	tpAniSirGlobal,
5056 	uint8_t *,
5057 	uint8_t,
5058 	tDot11fIEEDCAParamSet*,
5059 	bool);
5060 
5061 uint32_t dot11f_pack_ie_edca_param_set(
5062 	tpAniSirGlobal,
5063 	tDot11fIEEDCAParamSet *,
5064 	uint8_t *,
5065 	uint32_t,
5066 	uint32_t*);
5067 
5068 uint32_t dot11f_get_packed_ie_EDCAParamSet(
5069 	tpAniSirGlobal,
5070 	tDot11fIEEDCAParamSet *,
5071 	uint32_t*);
5072 
5073 #ifdef __cplusplus
5074 }; /* End extern "C". */
5075 #endif /* C++ */
5076 
5077 /* EID 42 (0x2a) */
5078 typedef struct sDot11fIEERPInfo {
5079 	uint8_t             present;
5080 	uint8_t      non_erp_present:1;
5081 	uint8_t             use_prot:1;
5082 	uint8_t      barker_preamble:1;
5083 	uint8_t               unused:5;
5084 } tDot11fIEERPInfo;
5085 
5086 #define DOT11F_EID_ERPINFO (42)
5087 
5088 /* N.B. These #defines do *not* include the EID & length */
5089 #define DOT11F_IE_ERPINFO_MIN_LEN (1)
5090 
5091 #define DOT11F_IE_ERPINFO_MAX_LEN (1)
5092 
5093 #ifdef __cplusplus
5094 extern "C" {
5095 #endif /* C++ */
5096 __must_check uint32_t dot11f_unpack_ie_erp_info(
5097 	tpAniSirGlobal,
5098 	uint8_t *,
5099 	uint8_t,
5100 	tDot11fIEERPInfo*,
5101 	bool);
5102 
5103 uint32_t dot11f_pack_ie_erp_info(
5104 	tpAniSirGlobal,
5105 	tDot11fIEERPInfo *,
5106 	uint8_t *,
5107 	uint32_t,
5108 	uint32_t*);
5109 
5110 uint32_t dot11f_get_packed_ie_ERPInfo(
5111 	tpAniSirGlobal,
5112 	tDot11fIEERPInfo *,
5113 	uint32_t*);
5114 
5115 #ifdef __cplusplus
5116 }; /* End extern "C". */
5117 #endif /* C++ */
5118 
5119 /* EID 156 (0x9c) {OUI 0x00, 0x40, 0x96, 0x00} */
5120 typedef struct sDot11fIEESECckmOpaque {
5121 	uint8_t             present;
5122 	uint8_t             num_data;
5123 	uint8_t             data[20];
5124 } tDot11fIEESECckmOpaque;
5125 
5126 #define DOT11F_EID_ESECCKMOPAQUE (156)
5127 
5128 /* N.B. These #defines do *not* include the EID & length */
5129 #define DOT11F_IE_ESECCKMOPAQUE_MIN_LEN (10)
5130 
5131 #define DOT11F_IE_ESECCKMOPAQUE_MAX_LEN (24)
5132 
5133 #ifdef __cplusplus
5134 extern "C" {
5135 #endif /* C++ */
5136 __must_check uint32_t dot11f_unpack_ie_ese_cckm_opaque(
5137 	tpAniSirGlobal,
5138 	uint8_t *,
5139 	uint8_t,
5140 	tDot11fIEESECckmOpaque*,
5141 	bool);
5142 
5143 uint32_t dot11f_pack_ie_ese_cckm_opaque(
5144 	tpAniSirGlobal,
5145 	tDot11fIEESECckmOpaque *,
5146 	uint8_t *,
5147 	uint32_t,
5148 	uint32_t*);
5149 
5150 uint32_t dot11f_get_packed_ie_ESECckmOpaque(
5151 	tpAniSirGlobal,
5152 	tDot11fIEESECckmOpaque *,
5153 	uint32_t*);
5154 
5155 #ifdef __cplusplus
5156 }; /* End extern "C". */
5157 #endif /* C++ */
5158 
5159 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x01} */
5160 typedef struct sDot11fIEESERadMgmtCap {
5161 	uint8_t             present;
5162 	uint8_t             mgmt_state;
5163 	uint8_t          mbssid_mask:3;
5164 	uint8_t             reserved:5;
5165 } tDot11fIEESERadMgmtCap;
5166 
5167 #define DOT11F_EID_ESERADMGMTCAP (221)
5168 
5169 /* N.B. These #defines do *not* include the EID & length */
5170 #define DOT11F_IE_ESERADMGMTCAP_MIN_LEN (6)
5171 
5172 #define DOT11F_IE_ESERADMGMTCAP_MAX_LEN (6)
5173 
5174 #ifdef __cplusplus
5175 extern "C" {
5176 #endif /* C++ */
5177 __must_check uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(
5178 	tpAniSirGlobal,
5179 	uint8_t *,
5180 	uint8_t,
5181 	tDot11fIEESERadMgmtCap*,
5182 	bool);
5183 
5184 uint32_t dot11f_pack_ie_ese_rad_mgmt_cap(
5185 	tpAniSirGlobal,
5186 	tDot11fIEESERadMgmtCap *,
5187 	uint8_t *,
5188 	uint32_t,
5189 	uint32_t*);
5190 
5191 uint32_t dot11f_get_packed_ie_ESERadMgmtCap(
5192 	tpAniSirGlobal,
5193 	tDot11fIEESERadMgmtCap *,
5194 	uint32_t*);
5195 
5196 #ifdef __cplusplus
5197 }; /* End extern "C". */
5198 #endif /* C++ */
5199 
5200 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x07} */
5201 typedef struct sDot11fIEESETrafStrmMet {
5202 	uint8_t             present;
5203 	uint8_t             tsid;
5204 	uint8_t             state;
5205 	uint16_t            msmt_interval;
5206 } tDot11fIEESETrafStrmMet;
5207 
5208 #define DOT11F_EID_ESETRAFSTRMMET (221)
5209 
5210 /* N.B. These #defines do *not* include the EID & length */
5211 #define DOT11F_IE_ESETRAFSTRMMET_MIN_LEN (8)
5212 
5213 #define DOT11F_IE_ESETRAFSTRMMET_MAX_LEN (8)
5214 
5215 #ifdef __cplusplus
5216 extern "C" {
5217 #endif /* C++ */
5218 __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_met(
5219 	tpAniSirGlobal,
5220 	uint8_t *,
5221 	uint8_t,
5222 	tDot11fIEESETrafStrmMet*,
5223 	bool);
5224 
5225 uint32_t dot11f_pack_ie_ese_traf_strm_met(
5226 	tpAniSirGlobal,
5227 	tDot11fIEESETrafStrmMet *,
5228 	uint8_t *,
5229 	uint32_t,
5230 	uint32_t*);
5231 
5232 uint32_t dot11f_get_packed_ie_ESETrafStrmMet(
5233 	tpAniSirGlobal,
5234 	tDot11fIEESETrafStrmMet *,
5235 	uint32_t*);
5236 
5237 #ifdef __cplusplus
5238 }; /* End extern "C". */
5239 #endif /* C++ */
5240 
5241 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x08} */
5242 typedef struct sDot11fIEESETrafStrmRateSet {
5243 	uint8_t             present;
5244 	uint8_t             tsid;
5245 	uint8_t             num_tsrates;
5246 	uint8_t             tsrates[8];
5247 } tDot11fIEESETrafStrmRateSet;
5248 
5249 #define DOT11F_EID_ESETRAFSTRMRATESET (221)
5250 
5251 /* N.B. These #defines do *not* include the EID & length */
5252 #define DOT11F_IE_ESETRAFSTRMRATESET_MIN_LEN (5)
5253 
5254 #define DOT11F_IE_ESETRAFSTRMRATESET_MAX_LEN (13)
5255 
5256 #ifdef __cplusplus
5257 extern "C" {
5258 #endif /* C++ */
5259 __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(
5260 	tpAniSirGlobal,
5261 	uint8_t *,
5262 	uint8_t,
5263 	tDot11fIEESETrafStrmRateSet*,
5264 	bool);
5265 
5266 uint32_t dot11f_pack_ie_ese_traf_strm_rate_set(
5267 	tpAniSirGlobal,
5268 	tDot11fIEESETrafStrmRateSet *,
5269 	uint8_t *,
5270 	uint32_t,
5271 	uint32_t*);
5272 
5273 uint32_t dot11f_get_packed_ie_ESETrafStrmRateSet(
5274 	tpAniSirGlobal,
5275 	tDot11fIEESETrafStrmRateSet *,
5276 	uint32_t*);
5277 
5278 #ifdef __cplusplus
5279 }; /* End extern "C". */
5280 #endif /* C++ */
5281 
5282 /* EID 150 (0x96) {OUI 0x00, 0x40, 0x96, 0x00} */
5283 typedef struct sDot11fIEESETxmitPower {
5284 	uint8_t             present;
5285 	uint8_t             power_limit;
5286 	uint8_t             reserved;
5287 } tDot11fIEESETxmitPower;
5288 
5289 #define DOT11F_EID_ESETXMITPOWER (150)
5290 
5291 /* N.B. These #defines do *not* include the EID & length */
5292 #define DOT11F_IE_ESETXMITPOWER_MIN_LEN (6)
5293 
5294 #define DOT11F_IE_ESETXMITPOWER_MAX_LEN (6)
5295 
5296 #ifdef __cplusplus
5297 extern "C" {
5298 #endif /* C++ */
5299 __must_check uint32_t dot11f_unpack_ie_ese_txmit_power(
5300 	tpAniSirGlobal,
5301 	uint8_t *,
5302 	uint8_t,
5303 	tDot11fIEESETxmitPower*,
5304 	bool);
5305 
5306 uint32_t dot11f_pack_ie_ese_txmit_power(
5307 	tpAniSirGlobal,
5308 	tDot11fIEESETxmitPower *,
5309 	uint8_t *,
5310 	uint32_t,
5311 	uint32_t*);
5312 
5313 uint32_t dot11f_get_packed_ie_ESETxmitPower(
5314 	tpAniSirGlobal,
5315 	tDot11fIEESETxmitPower *,
5316 	uint32_t*);
5317 
5318 #ifdef __cplusplus
5319 }; /* End extern "C". */
5320 #endif /* C++ */
5321 
5322 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x03} */
5323 typedef struct sDot11fIEESEVersion {
5324 	uint8_t             present;
5325 	uint8_t             version;
5326 } tDot11fIEESEVersion;
5327 
5328 #define DOT11F_EID_ESEVERSION (221)
5329 
5330 /* N.B. These #defines do *not* include the EID & length */
5331 #define DOT11F_IE_ESEVERSION_MIN_LEN (5)
5332 
5333 #define DOT11F_IE_ESEVERSION_MAX_LEN (5)
5334 
5335 #ifdef __cplusplus
5336 extern "C" {
5337 #endif /* C++ */
5338 __must_check uint32_t dot11f_unpack_ie_ese_version(
5339 	tpAniSirGlobal,
5340 	uint8_t *,
5341 	uint8_t,
5342 	tDot11fIEESEVersion*,
5343 	bool);
5344 
5345 uint32_t dot11f_pack_ie_ese_version(
5346 	tpAniSirGlobal,
5347 	tDot11fIEESEVersion *,
5348 	uint8_t *,
5349 	uint32_t,
5350 	uint32_t*);
5351 
5352 uint32_t dot11f_get_packed_ie_ESEVersion(
5353 	tpAniSirGlobal,
5354 	tDot11fIEESEVersion *,
5355 	uint32_t*);
5356 
5357 #ifdef __cplusplus
5358 }; /* End extern "C". */
5359 #endif /* C++ */
5360 
5361 /* EID 127 (0x7f) */
5362 typedef struct sDot11fIEExtCap {
5363 	uint8_t             present;
5364 	uint8_t             num_bytes;
5365 	uint8_t             bytes[15];
5366 } tDot11fIEExtCap;
5367 
5368 #define DOT11F_EID_EXTCAP (127)
5369 
5370 /* N.B. These #defines do *not* include the EID & length */
5371 #define DOT11F_IE_EXTCAP_MIN_LEN (1)
5372 
5373 #define DOT11F_IE_EXTCAP_MAX_LEN (15)
5374 
5375 #ifdef __cplusplus
5376 extern "C" {
5377 #endif /* C++ */
5378 __must_check uint32_t dot11f_unpack_ie_ext_cap(
5379 	tpAniSirGlobal,
5380 	uint8_t *,
5381 	uint8_t,
5382 	tDot11fIEExtCap*,
5383 	bool);
5384 
5385 uint32_t dot11f_pack_ie_ext_cap(
5386 	tpAniSirGlobal,
5387 	tDot11fIEExtCap *,
5388 	uint8_t *,
5389 	uint32_t,
5390 	uint32_t*);
5391 
5392 uint32_t dot11f_get_packed_ie_ExtCap(
5393 	tpAniSirGlobal,
5394 	tDot11fIEExtCap *,
5395 	uint32_t*);
5396 
5397 #ifdef __cplusplus
5398 }; /* End extern "C". */
5399 #endif /* C++ */
5400 
5401 /* EID 50 (0x32) */
5402 typedef struct sDot11fIEExtSuppRates {
5403 	uint8_t             present;
5404 	uint8_t             num_rates;
5405 	uint8_t             rates[12];
5406 } tDot11fIEExtSuppRates;
5407 
5408 #define DOT11F_EID_EXTSUPPRATES (50)
5409 
5410 /* N.B. These #defines do *not* include the EID & length */
5411 #define DOT11F_IE_EXTSUPPRATES_MIN_LEN (1)
5412 
5413 #define DOT11F_IE_EXTSUPPRATES_MAX_LEN (12)
5414 
5415 #ifdef __cplusplus
5416 extern "C" {
5417 #endif /* C++ */
5418 __must_check uint32_t dot11f_unpack_ie_ext_supp_rates(
5419 	tpAniSirGlobal,
5420 	uint8_t *,
5421 	uint8_t,
5422 	tDot11fIEExtSuppRates*,
5423 	bool);
5424 
5425 uint32_t dot11f_pack_ie_ext_supp_rates(
5426 	tpAniSirGlobal,
5427 	tDot11fIEExtSuppRates *,
5428 	uint8_t *,
5429 	uint32_t,
5430 	uint32_t*);
5431 
5432 uint32_t dot11f_get_packed_ie_ExtSuppRates(
5433 	tpAniSirGlobal,
5434 	tDot11fIEExtSuppRates *,
5435 	uint32_t*);
5436 
5437 #ifdef __cplusplus
5438 }; /* End extern "C". */
5439 #endif /* C++ */
5440 
5441 /* EID 2 (0x02) */
5442 typedef struct sDot11fIEFHParamSet {
5443 	uint8_t             present;
5444 	uint16_t            dwell_time;
5445 	uint8_t             hop_set;
5446 	uint8_t             hop_pattern;
5447 	uint8_t             hop_index;
5448 } tDot11fIEFHParamSet;
5449 
5450 #define DOT11F_EID_FHPARAMSET (2)
5451 
5452 /* N.B. These #defines do *not* include the EID & length */
5453 #define DOT11F_IE_FHPARAMSET_MIN_LEN (5)
5454 
5455 #define DOT11F_IE_FHPARAMSET_MAX_LEN (5)
5456 
5457 #ifdef __cplusplus
5458 extern "C" {
5459 #endif /* C++ */
5460 __must_check uint32_t dot11f_unpack_ie_fh_param_set(
5461 	tpAniSirGlobal,
5462 	uint8_t *,
5463 	uint8_t,
5464 	tDot11fIEFHParamSet*,
5465 	bool);
5466 
5467 uint32_t dot11f_pack_ie_fh_param_set(
5468 	tpAniSirGlobal,
5469 	tDot11fIEFHParamSet *,
5470 	uint8_t *,
5471 	uint32_t,
5472 	uint32_t*);
5473 
5474 uint32_t dot11f_get_packed_ie_FHParamSet(
5475 	tpAniSirGlobal,
5476 	tDot11fIEFHParamSet *,
5477 	uint32_t*);
5478 
5479 #ifdef __cplusplus
5480 }; /* End extern "C". */
5481 #endif /* C++ */
5482 
5483 /* EID 8 (0x08) */
5484 typedef struct sDot11fIEFHParams {
5485 	uint8_t             present;
5486 	uint8_t             radix;
5487 	uint8_t             nchannels;
5488 } tDot11fIEFHParams;
5489 
5490 #define DOT11F_EID_FHPARAMS (8)
5491 
5492 /* N.B. These #defines do *not* include the EID & length */
5493 #define DOT11F_IE_FHPARAMS_MIN_LEN (2)
5494 
5495 #define DOT11F_IE_FHPARAMS_MAX_LEN (2)
5496 
5497 #ifdef __cplusplus
5498 extern "C" {
5499 #endif /* C++ */
5500 __must_check uint32_t dot11f_unpack_ie_fh_params(
5501 	tpAniSirGlobal,
5502 	uint8_t *,
5503 	uint8_t,
5504 	tDot11fIEFHParams*,
5505 	bool);
5506 
5507 uint32_t dot11f_pack_ie_fh_params(
5508 	tpAniSirGlobal,
5509 	tDot11fIEFHParams *,
5510 	uint8_t *,
5511 	uint32_t,
5512 	uint32_t*);
5513 
5514 uint32_t dot11f_get_packed_ie_FHParams(
5515 	tpAniSirGlobal,
5516 	tDot11fIEFHParams *,
5517 	uint32_t*);
5518 
5519 #ifdef __cplusplus
5520 }; /* End extern "C". */
5521 #endif /* C++ */
5522 
5523 /* EID 9 (0x09) */
5524 typedef struct sDot11fIEFHPattTable {
5525 	uint8_t             present;
5526 	uint8_t             flag;
5527 	uint8_t             nsets;
5528 	uint8_t             modulus;
5529 	uint8_t             offset;
5530 	uint8_t             num_randtable;
5531 	uint8_t             randtable[251];
5532 } tDot11fIEFHPattTable;
5533 
5534 #define DOT11F_EID_FHPATTTABLE (9)
5535 
5536 /* N.B. These #defines do *not* include the EID & length */
5537 #define DOT11F_IE_FHPATTTABLE_MIN_LEN (4)
5538 
5539 #define DOT11F_IE_FHPATTTABLE_MAX_LEN (255)
5540 
5541 #ifdef __cplusplus
5542 extern "C" {
5543 #endif /* C++ */
5544 __must_check uint32_t dot11f_unpack_ie_fh_patt_table(
5545 	tpAniSirGlobal,
5546 	uint8_t *,
5547 	uint8_t,
5548 	tDot11fIEFHPattTable*,
5549 	bool);
5550 
5551 uint32_t dot11f_pack_ie_fh_patt_table(
5552 	tpAniSirGlobal,
5553 	tDot11fIEFHPattTable *,
5554 	uint8_t *,
5555 	uint32_t,
5556 	uint32_t*);
5557 
5558 uint32_t dot11f_get_packed_ie_FHPattTable(
5559 	tpAniSirGlobal,
5560 	tDot11fIEFHPattTable *,
5561 	uint32_t*);
5562 
5563 #ifdef __cplusplus
5564 }; /* End extern "C". */
5565 #endif /* C++ */
5566 
5567 /* EID 55 (0x37) */
5568 typedef struct sDot11fIEFTInfo {
5569 	uint8_t                 present;
5570 	uint16_t                 reserved:8;
5571 	uint16_t                  IECount:8;
5572 	uint8_t                 MIC[16];
5573 	uint8_t                 Anonce[32];
5574 	uint8_t                 Snonce[32];
5575 	tDot11fIER1KH_ID        R1KH_ID;
5576 	tDot11fIEGTK            GTK;
5577 	tDot11fIER0KH_ID        R0KH_ID;
5578 	tDot11fIEIGTK           IGTK;
5579 } tDot11fIEFTInfo;
5580 
5581 #define DOT11F_EID_FTINFO (55)
5582 
5583 /* N.B. These #defines do *not* include the EID & length */
5584 #define DOT11F_IE_FTINFO_MIN_LEN (82)
5585 
5586 #define DOT11F_IE_FTINFO_MAX_LEN (220)
5587 
5588 #ifdef __cplusplus
5589 extern "C" {
5590 #endif /* C++ */
5591 __must_check uint32_t dot11f_unpack_ie_ft_info(
5592 	tpAniSirGlobal,
5593 	uint8_t *,
5594 	uint8_t,
5595 	tDot11fIEFTInfo*,
5596 	bool);
5597 
5598 uint32_t dot11f_pack_ie_ft_info(
5599 	tpAniSirGlobal,
5600 	tDot11fIEFTInfo *,
5601 	uint8_t *,
5602 	uint32_t,
5603 	uint32_t*);
5604 
5605 uint32_t dot11f_get_packed_ieft_info(
5606 	tpAniSirGlobal,
5607 	tDot11fIEFTInfo *,
5608 	uint32_t*);
5609 
5610 #ifdef __cplusplus
5611 }; /* End extern "C". */
5612 #endif /* C++ */
5613 
5614 /* EID 45 (0x2d) */
5615 typedef struct sDot11fIEHTCaps {
5616 	uint8_t             present;
5617 	uint16_t         advCodingCap:1;
5618 	uint16_t supportedChannelWidthSet:1;
5619 	uint16_t        mimoPowerSave:2;
5620 	uint16_t           greenField:1;
5621 	uint16_t         shortGI20MHz:1;
5622 	uint16_t         shortGI40MHz:1;
5623 	uint16_t               txSTBC:1;
5624 	uint16_t               rxSTBC:2;
5625 	uint16_t            delayedBA:1;
5626 	uint16_t     maximalAMSDUsize:1;
5627 	uint16_t     dsssCckMode40MHz:1;
5628 	uint16_t                 psmp:1;
5629 	uint16_t     stbcControlFrame:1;
5630 	uint16_t   lsigTXOPProtection:1;
5631 	uint8_t     maxRxAMPDUFactor:2;
5632 	uint8_t          mpduDensity:3;
5633 	uint8_t            reserved1:3;
5634 	uint8_t             supportedMCSSet[16];
5635 	uint16_t                  pco:1;
5636 	uint16_t       transitionTime:2;
5637 	uint16_t            reserved2:5;
5638 	uint16_t          mcsFeedback:2;
5639 	uint16_t            reserved3:6;
5640 	uint32_t                 txBF:1;
5641 	uint32_t  rxStaggeredSounding:1;
5642 	uint32_t  txStaggeredSounding:1;
5643 	uint32_t                rxZLF:1;
5644 	uint32_t                txZLF:1;
5645 	uint32_t         implicitTxBF:1;
5646 	uint32_t          calibration:2;
5647 	uint32_t      explicitCSITxBF:1;
5648 	uint32_t explicitUncompressedSteeringMatrix:1;
5649 	uint32_t explicitBFCSIFeedback:3;
5650 	uint32_t explicitUncompressedSteeringMatrixFeedback:3;
5651 	uint32_t explicitCompressedSteeringMatrixFeedback:3;
5652 	uint32_t     csiNumBFAntennae:2;
5653 	uint32_t uncompressedSteeringMatrixBFAntennae:2;
5654 	uint32_t compressedSteeringMatrixBFAntennae:2;
5655 	uint32_t            reserved4:7;
5656 	uint8_t     antennaSelection:1;
5657 	uint8_t explicitCSIFeedbackTx:1;
5658 	uint8_t antennaIndicesFeedbackTx:1;
5659 	uint8_t  explicitCSIFeedback:1;
5660 	uint8_t antennaIndicesFeedback:1;
5661 	uint8_t                 rxAS:1;
5662 	uint8_t      txSoundingPPDUs:1;
5663 	uint8_t            reserved5:1;
5664 	uint8_t             num_rsvd;
5665 	uint8_t             rsvd[32];
5666 } tDot11fIEHTCaps;
5667 
5668 #define DOT11F_EID_HTCAPS (45)
5669 
5670 /* N.B. These #defines do *not* include the EID & length */
5671 #define DOT11F_IE_HTCAPS_MIN_LEN (26)
5672 
5673 #define DOT11F_IE_HTCAPS_MAX_LEN (58)
5674 
5675 #ifdef __cplusplus
5676 extern "C" {
5677 #endif /* C++ */
5678 __must_check uint32_t dot11f_unpack_ie_ht_caps(
5679 	tpAniSirGlobal,
5680 	uint8_t *,
5681 	uint8_t,
5682 	tDot11fIEHTCaps*,
5683 	bool);
5684 
5685 uint32_t dot11f_pack_ie_ht_caps(
5686 	tpAniSirGlobal,
5687 	tDot11fIEHTCaps *,
5688 	uint8_t *,
5689 	uint32_t,
5690 	uint32_t*);
5691 
5692 uint32_t dot11f_get_packed_ie_HTCaps(
5693 	tpAniSirGlobal,
5694 	tDot11fIEHTCaps *,
5695 	uint32_t*);
5696 
5697 #ifdef __cplusplus
5698 }; /* End extern "C". */
5699 #endif /* C++ */
5700 
5701 /* EID 61 (0x3d) */
5702 typedef struct sDot11fIEHTInfo {
5703 	uint8_t             present;
5704 	uint8_t             primaryChannel;
5705 	uint8_t secondaryChannelOffset:2;
5706 	uint8_t recommendedTxWidthSet:1;
5707 	uint8_t             rifsMode:1;
5708 	uint8_t controlledAccessOnly:1;
5709 	uint8_t serviceIntervalGranularity:3;
5710 	uint16_t               opMode:2;
5711 	uint16_t  nonGFDevicesPresent:1;
5712 	uint16_t   transmitBurstLimit:1;
5713 	uint16_t  obssNonHTStaPresent:1;
5714 	uint16_t chan_center_freq_seg2:8;
5715 	uint16_t             reserved:3;
5716 	uint16_t         basicSTBCMCS:7;
5717 	uint16_t    dualCTSProtection:1;
5718 	uint16_t      secondaryBeacon:1;
5719 	uint16_t lsigTXOPProtectionFullSupport:1;
5720 	uint16_t            pcoActive:1;
5721 	uint16_t             pcoPhase:1;
5722 	uint16_t            reserved2:4;
5723 	uint8_t             basicMCSSet[16];
5724 	uint8_t             num_rsvd;
5725 	uint8_t             rsvd[32];
5726 } tDot11fIEHTInfo;
5727 
5728 #define DOT11F_EID_HTINFO (61)
5729 
5730 /* N.B. These #defines do *not* include the EID & length */
5731 #define DOT11F_IE_HTINFO_MIN_LEN (22)
5732 
5733 #define DOT11F_IE_HTINFO_MAX_LEN (54)
5734 
5735 #ifdef __cplusplus
5736 extern "C" {
5737 #endif /* C++ */
5738 __must_check uint32_t dot11f_unpack_ie_ht_info(
5739 	tpAniSirGlobal,
5740 	uint8_t *,
5741 	uint8_t,
5742 	tDot11fIEHTInfo*,
5743 	bool);
5744 
5745 uint32_t dot11f_pack_ie_ht_info(
5746 	tpAniSirGlobal,
5747 	tDot11fIEHTInfo *,
5748 	uint8_t *,
5749 	uint32_t,
5750 	uint32_t*);
5751 
5752 uint32_t dot11f_get_packed_ie_HTInfo(
5753 	tpAniSirGlobal,
5754 	tDot11fIEHTInfo *,
5755 	uint32_t*);
5756 
5757 #ifdef __cplusplus
5758 }; /* End extern "C". */
5759 #endif /* C++ */
5760 
5761 /* EID 101 (0x65) */
5762 typedef struct sDot11fIELinkIdentifier {
5763 	uint8_t             present;
5764 	uint8_t             bssid[6];
5765 	uint8_t             InitStaAddr[6];
5766 	uint8_t             RespStaAddr[6];
5767 } tDot11fIELinkIdentifier;
5768 
5769 #define DOT11F_EID_LINKIDENTIFIER (101)
5770 
5771 /* N.B. These #defines do *not* include the EID & length */
5772 #define DOT11F_IE_LINKIDENTIFIER_MIN_LEN (18)
5773 
5774 #define DOT11F_IE_LINKIDENTIFIER_MAX_LEN (18)
5775 
5776 #ifdef __cplusplus
5777 extern "C" {
5778 #endif /* C++ */
5779 __must_check uint32_t dot11f_unpack_ie_link_identifier(
5780 	tpAniSirGlobal,
5781 	uint8_t *,
5782 	uint8_t,
5783 	tDot11fIELinkIdentifier*,
5784 	bool);
5785 
5786 uint32_t dot11f_pack_ie_link_identifier(
5787 	tpAniSirGlobal,
5788 	tDot11fIELinkIdentifier *,
5789 	uint8_t *,
5790 	uint32_t,
5791 	uint32_t*);
5792 
5793 uint32_t dot11f_get_packed_ie_LinkIdentifier(
5794 	tpAniSirGlobal,
5795 	tDot11fIELinkIdentifier *,
5796 	uint32_t*);
5797 
5798 #ifdef __cplusplus
5799 }; /* End extern "C". */
5800 #endif /* C++ */
5801 
5802 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x16} (Multi-IE) */
5803 typedef struct sDot11fIEMBO_IE {
5804 	uint8_t             present;
5805 	tDot11fTLVmbo_ap_cap mbo_ap_cap;
5806 	tDot11fTLVnon_prefferd_chan_rep non_prefferd_chan_rep;
5807 	tDot11fTLVcellular_data_cap cellular_data_cap;
5808 	tDot11fTLVassoc_disallowed assoc_disallowed;
5809 	tDot11fTLVcellular_data_con_pref cellular_data_con_pref;
5810 	tDot11fTLVtransition_reason transition_reason;
5811 	tDot11fTLVtransition_reject_reason transition_reject_reason;
5812 	tDot11fTLVassoc_retry_delay assoc_retry_delay;
5813 	tDot11fTLVoce_cap   oce_cap;
5814 	tDot11fTLVrssi_assoc_rej rssi_assoc_rej;
5815 	tDot11fTLVreduced_wan_metrics reduced_wan_metrics;
5816 } tDot11fIEMBO_IE;
5817 
5818 #define DOT11F_EID_MBO_IE (221)
5819 
5820 /* N.B. These #defines do *not* include the EID & length */
5821 #define DOT11F_IE_MBO_IE_MIN_LEN (4)
5822 
5823 #define DOT11F_IE_MBO_IE_MAX_LEN (293)
5824 
5825 #ifdef __cplusplus
5826 extern "C" {
5827 #endif /* C++ */
5828 __must_check uint32_t dot11f_unpack_ie_MBO_IE(
5829 	tpAniSirGlobal,
5830 	uint8_t *,
5831 	uint8_t,
5832 	tDot11fIEMBO_IE*,
5833 	bool);
5834 
5835 uint32_t dot11f_pack_ie_MBO_IE(
5836 	tpAniSirGlobal,
5837 	tDot11fIEMBO_IE *,
5838 	uint8_t *,
5839 	uint32_t,
5840 	uint32_t*);
5841 
5842 uint32_t dot11f_get_packed_ie_MBO_IE(
5843 	tpAniSirGlobal,
5844 	tDot11fIEMBO_IE *,
5845 	uint32_t*);
5846 
5847 #ifdef __cplusplus
5848 }; /* End extern "C". */
5849 #endif /* C++ */
5850 
5851 /* EID 39 (0x27) */
5852 typedef struct sDot11fIEMeasurementReport {
5853 	uint8_t             present;
5854 	uint8_t             token;
5855 	uint8_t                 late:1;
5856 	uint8_t            incapable:1;
5857 	uint8_t              refused:1;
5858 	uint8_t               unused:5;
5859 	uint8_t             type;
5860 	union {
5861 		struct {
5862 			uint8_t channel;
5863 			tDOT11F_U64 meas_start_time;
5864 			uint16_t meas_duration;
5865 			uint8_t            bss:1;
5866 			uint8_t  ofdm_preamble:1;
5867 			uint8_t    unid_signal:1;
5868 			uint8_t          rader:1;
5869 			uint8_t     unmeasured:1;
5870 			uint8_t         unused:3;
5871 		} Basic; /* type = 0 */
5872 		struct {
5873 			uint8_t channel;
5874 			tDOT11F_U64 meas_start_time;
5875 			uint16_t meas_duration;
5876 			uint8_t cca_busy_fraction;
5877 		} CCA; /* type = 1 */
5878 		struct {
5879 			uint8_t channel;
5880 			tDOT11F_U64 meas_start_time;
5881 			uint16_t meas_duration;
5882 			uint8_t rpi0_density;
5883 			uint8_t rpi1_density;
5884 			uint8_t rpi2_density;
5885 			uint8_t rpi3_density;
5886 			uint8_t rpi4_density;
5887 			uint8_t rpi5_density;
5888 			uint8_t rpi6_density;
5889 			uint8_t rpi7_density;
5890 		} RPIHistogram; /* type = 2 */
5891 		struct {
5892 			uint8_t regClass;
5893 			uint8_t channel;
5894 			tDOT11F_U64 meas_start_time;
5895 			uint16_t meas_duration;
5896 			uint8_t        condensed_PHY:7;
5897 			uint8_t  reported_frame_type:1;
5898 			uint8_t RCPI;
5899 			uint8_t RSNI;
5900 			uint8_t BSSID[6];
5901 			uint8_t antenna_id;
5902 			uint32_t parent_TSF;
5903 	tDot11fIEBeaconReportFrmBody BeaconReportFrmBody;
5904 	tDot11fIEbeacon_report_frm_body_fragment_id beacon_report_frm_body_fragment_id;
5905 	tDot11fIElast_beacon_report_indication last_beacon_report_indication;
5906 		} Beacon; /* type = 5 */
5907 	} report;
5908 } tDot11fIEMeasurementReport;
5909 
5910 #define DOT11F_EID_MEASUREMENTREPORT (39)
5911 
5912 /* N.B. These #defines do *not* include the EID & length */
5913 #define DOT11F_IE_MEASUREMENTREPORT_MIN_LEN (3)
5914 
5915 #define DOT11F_IE_MEASUREMENTREPORT_MAX_LEN (29)
5916 
5917 #ifdef __cplusplus
5918 extern "C" {
5919 #endif /* C++ */
5920 __must_check uint32_t dot11f_unpack_ie_measurement_report(
5921 	tpAniSirGlobal,
5922 	uint8_t *,
5923 	uint8_t,
5924 	tDot11fIEMeasurementReport*,
5925 	bool);
5926 
5927 uint32_t dot11f_pack_ie_measurement_report(
5928 	tpAniSirGlobal,
5929 	tDot11fIEMeasurementReport *,
5930 	uint8_t *,
5931 	uint32_t,
5932 	uint32_t*);
5933 
5934 uint32_t dot11f_get_packed_ie_measurement_report(
5935 	tpAniSirGlobal,
5936 	tDot11fIEMeasurementReport *,
5937 	uint32_t*);
5938 
5939 #ifdef __cplusplus
5940 }; /* End extern "C". */
5941 #endif /* C++ */
5942 
5943 /* EID 38 (0x26) */
5944 typedef struct sDot11fIEMeasurementRequest {
5945 	uint8_t             present;
5946 	uint8_t             measurement_token;
5947 	uint8_t             parallel:1;
5948 	uint8_t               enable:1;
5949 	uint8_t              request:1;
5950 	uint8_t               report:1;
5951 	uint8_t    durationMandatory:1;
5952 	uint8_t               unused:3;
5953 	uint8_t             measurement_type;
5954 	union {
5955 		struct {
5956 			uint8_t channel_no;
5957 			uint8_t meas_start_time[8];
5958 			uint16_t meas_duration;
5959 		} Basic; /* measurement_type = 0 */
5960 		struct {
5961 			uint8_t channel_no;
5962 			uint8_t meas_start_time[8];
5963 			uint16_t meas_duration;
5964 		} CCA; /* measurement_type = 1 */
5965 		struct {
5966 			uint8_t channel_no;
5967 			uint8_t meas_start_time[8];
5968 			uint16_t meas_duration;
5969 		} RPIHistogram; /* measurement_type = 2 */
5970 		struct {
5971 			uint8_t regClass;
5972 			uint8_t channel;
5973 			uint16_t randomization;
5974 			uint16_t meas_duration;
5975 			uint8_t meas_mode;
5976 			uint8_t BSSID[6];
5977 	tDot11fIESSID SSID;
5978 	tDot11fIEBeaconReporting BeaconReporting;
5979 	tDot11fIEBcnReportingDetail BcnReportingDetail;
5980 	tDot11fIERequestedInfo RequestedInfo;
5981 	uint16_t num_APChannelReport;
5982 	tDot11fIEAPChannelReport APChannelReport[2];
5983 	tDot11fIElast_beacon_report_indication last_beacon_report_indication;
5984 		} Beacon; /* measurement_type = 5 */
5985 		struct {
5986 			uint8_t loc_subject;
5987 	tDot11fIEazimuth_req azimuth_req;
5988 	tDot11fIEreq_mac_addr req_mac_addr;
5989 	tDot11fIEtgt_mac_addr tgt_mac_addr;
5990 	tDot11fIEmax_age max_age;
5991 		} lci; /* measurement_type = 8 */
5992 		struct {
5993 			uint16_t random_interval;
5994 			uint8_t min_ap_count;
5995 	tDot11fIEneighbor_rpt neighbor_rpt;
5996 	tDot11fIEmax_age max_age;
5997 		} ftmrr; /* measurement_type = 16 */
5998 	} measurement_request;
5999 } tDot11fIEMeasurementRequest;
6000 
6001 #define DOT11F_EID_MEASUREMENTREQUEST (38)
6002 
6003 /* N.B. These #defines do *not* include the EID & length */
6004 #define DOT11F_IE_MEASUREMENTREQUEST_MIN_LEN (4)
6005 
6006 #define DOT11F_IE_MEASUREMENTREQUEST_MAX_LEN (16)
6007 
6008 #ifdef __cplusplus
6009 extern "C" {
6010 #endif /* C++ */
6011 __must_check uint32_t dot11f_unpack_ie_measurement_request(
6012 	tpAniSirGlobal,
6013 	uint8_t *,
6014 	uint8_t,
6015 	tDot11fIEMeasurementRequest*,
6016 	bool);
6017 
6018 uint32_t dot11f_pack_ie_measurement_request(
6019 	tpAniSirGlobal,
6020 	tDot11fIEMeasurementRequest *,
6021 	uint8_t *,
6022 	uint32_t,
6023 	uint32_t*);
6024 
6025 uint32_t dot11f_get_packed_ie_measurement_request(
6026 	tpAniSirGlobal,
6027 	tDot11fIEMeasurementRequest *,
6028 	uint32_t*);
6029 
6030 #ifdef __cplusplus
6031 }; /* End extern "C". */
6032 #endif /* C++ */
6033 
6034 /* EID 54 (0x36) */
6035 typedef struct sDot11fIEMobilityDomain {
6036 	uint8_t             present;
6037 	uint16_t            MDID;
6038 	uint8_t            overDSCap:1;
6039 	uint8_t       resourceReqCap:1;
6040 	uint8_t             reserved:6;
6041 } tDot11fIEMobilityDomain;
6042 
6043 #define DOT11F_EID_MOBILITYDOMAIN (54)
6044 
6045 /* N.B. These #defines do *not* include the EID & length */
6046 #define DOT11F_IE_MOBILITYDOMAIN_MIN_LEN (3)
6047 
6048 #define DOT11F_IE_MOBILITYDOMAIN_MAX_LEN (3)
6049 
6050 #ifdef __cplusplus
6051 extern "C" {
6052 #endif /* C++ */
6053 __must_check uint32_t dot11f_unpack_ie_mobility_domain(
6054 	tpAniSirGlobal,
6055 	uint8_t *,
6056 	uint8_t,
6057 	tDot11fIEMobilityDomain*,
6058 	bool);
6059 
6060 uint32_t dot11f_pack_ie_mobility_domain(
6061 	tpAniSirGlobal,
6062 	tDot11fIEMobilityDomain *,
6063 	uint8_t *,
6064 	uint32_t,
6065 	uint32_t*);
6066 
6067 uint32_t dot11f_get_packed_ie_MobilityDomain(
6068 	tpAniSirGlobal,
6069 	tDot11fIEMobilityDomain *,
6070 	uint32_t*);
6071 
6072 #ifdef __cplusplus
6073 }; /* End extern "C". */
6074 #endif /* C++ */
6075 
6076 /* EID 52 (0x34) */
6077 typedef struct sDot11fIENeighborReport {
6078 	uint8_t                             present;
6079 	uint8_t                             bssid[6];
6080 	uint8_t                       APReachability:2;
6081 	uint8_t                             Security:1;
6082 	uint8_t                             KeyScope:1;
6083 	uint8_t                          SpecMgmtCap:1;
6084 	uint8_t                               QosCap:1;
6085 	uint8_t                                 apsd:1;
6086 	uint8_t                                  rrm:1;
6087 	uint8_t                            DelayedBA:1;
6088 	uint8_t                                ImmBA:1;
6089 	uint8_t                       MobilityDomain:1;
6090 	uint8_t                             reserved:5;
6091 	uint16_t                            reserved1;
6092 	uint8_t                             regulatoryClass;
6093 	uint8_t                             channel;
6094 	uint8_t                             PhyType;
6095 	tDot11fIETSFInfo                    TSFInfo;
6096 	tDot11fIECondensedCountryStr        CondensedCountryStr;
6097 	tDot11fIEMeasurementPilot           MeasurementPilot;
6098 	tDot11fIERRMEnabledCap              RRMEnabledCap;
6099 	tDot11fIEMultiBssid                 MultiBssid;
6100 } tDot11fIENeighborReport;
6101 
6102 #define DOT11F_EID_NEIGHBORREPORT (52)
6103 
6104 /* N.B. These #defines do *not* include the EID & length */
6105 #define DOT11F_IE_NEIGHBORREPORT_MIN_LEN (13)
6106 
6107 #define DOT11F_IE_NEIGHBORREPORT_MAX_LEN (546)
6108 
6109 #ifdef __cplusplus
6110 extern "C" {
6111 #endif /* C++ */
6112 __must_check uint32_t dot11f_unpack_ie_neighbor_report(
6113 	tpAniSirGlobal,
6114 	uint8_t *,
6115 	uint8_t,
6116 	tDot11fIENeighborReport*,
6117 	bool);
6118 
6119 uint32_t dot11f_pack_ie_neighbor_report(
6120 	tpAniSirGlobal,
6121 	tDot11fIENeighborReport *,
6122 	uint8_t *,
6123 	uint32_t,
6124 	uint32_t*);
6125 
6126 uint32_t dot11f_get_packed_ie_neighbor_report(
6127 	tpAniSirGlobal,
6128 	tDot11fIENeighborReport *,
6129 	uint32_t*);
6130 
6131 #ifdef __cplusplus
6132 }; /* End extern "C". */
6133 #endif /* C++ */
6134 
6135 /* EID 74 (0x4a) */
6136 typedef struct sDot11fIEOBSSScanParameters {
6137 	uint8_t             present;
6138 	uint16_t            obssScanPassiveDwell;
6139 	uint16_t            obssScanActiveDwell;
6140 	uint16_t            bssChannelWidthTriggerScanInterval;
6141 	uint16_t            obssScanPassiveTotalPerChannel;
6142 	uint16_t            obssScanActiveTotalPerChannel;
6143 	uint16_t            bssWidthChannelTransitionDelayFactor;
6144 	uint16_t            obssScanActivityThreshold;
6145 } tDot11fIEOBSSScanParameters;
6146 
6147 #define DOT11F_EID_OBSSSCANPARAMETERS (74)
6148 
6149 /* N.B. These #defines do *not* include the EID & length */
6150 #define DOT11F_IE_OBSSSCANPARAMETERS_MIN_LEN (14)
6151 
6152 #define DOT11F_IE_OBSSSCANPARAMETERS_MAX_LEN (14)
6153 
6154 #ifdef __cplusplus
6155 extern "C" {
6156 #endif /* C++ */
6157 __must_check uint32_t dot11f_unpack_ie_obss_scan_parameters(
6158 	tpAniSirGlobal,
6159 	uint8_t *,
6160 	uint8_t,
6161 	tDot11fIEOBSSScanParameters*,
6162 	bool);
6163 
6164 uint32_t dot11f_pack_ie_obss_scan_parameters(
6165 	tpAniSirGlobal,
6166 	tDot11fIEOBSSScanParameters *,
6167 	uint8_t *,
6168 	uint32_t,
6169 	uint32_t*);
6170 
6171 uint32_t dot11f_get_packed_ie_OBSSScanParameters(
6172 	tpAniSirGlobal,
6173 	tDot11fIEOBSSScanParameters *,
6174 	uint32_t*);
6175 
6176 #ifdef __cplusplus
6177 }; /* End extern "C". */
6178 #endif /* C++ */
6179 
6180 /* EID 199 (0xc7) */
6181 typedef struct sDot11fIEOperatingMode {
6182 	uint8_t             present;
6183 	uint8_t            chanWidth:2;
6184 	uint8_t   vht_160_80p80_supp:1;
6185 	uint8_t              no_ldpc:1;
6186 	uint8_t                rxNSS:3;
6187 	uint8_t            rxNSSType:1;
6188 } tDot11fIEOperatingMode;
6189 
6190 #define DOT11F_EID_OPERATINGMODE (199)
6191 
6192 /* N.B. These #defines do *not* include the EID & length */
6193 #define DOT11F_IE_OPERATINGMODE_MIN_LEN (1)
6194 
6195 #define DOT11F_IE_OPERATINGMODE_MAX_LEN (1)
6196 
6197 #ifdef __cplusplus
6198 extern "C" {
6199 #endif /* C++ */
6200 __must_check uint32_t dot11f_unpack_ie_operating_mode(
6201 	tpAniSirGlobal,
6202 	uint8_t *,
6203 	uint8_t,
6204 	tDot11fIEOperatingMode*,
6205 	bool);
6206 
6207 uint32_t dot11f_pack_ie_operating_mode(
6208 	tpAniSirGlobal,
6209 	tDot11fIEOperatingMode *,
6210 	uint8_t *,
6211 	uint32_t,
6212 	uint32_t*);
6213 
6214 uint32_t dot11f_get_packed_ie_OperatingMode(
6215 	tpAniSirGlobal,
6216 	tDot11fIEOperatingMode *,
6217 	uint32_t*);
6218 
6219 #ifdef __cplusplus
6220 }; /* End extern "C". */
6221 #endif /* C++ */
6222 
6223 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6224 typedef struct sDot11fIEP2PAssocReq {
6225 	uint8_t             present;
6226 	tDot11fTLVP2PCapability P2PCapability;
6227 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6228 	tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6229 } tDot11fIEP2PAssocReq;
6230 
6231 #define DOT11F_EID_P2PASSOCREQ (221)
6232 
6233 /* N.B. These #defines do *not* include the EID & length */
6234 #define DOT11F_IE_P2PASSOCREQ_MIN_LEN (4)
6235 
6236 #define DOT11F_IE_P2PASSOCREQ_MAX_LEN (71)
6237 
6238 #ifdef __cplusplus
6239 extern "C" {
6240 #endif /* C++ */
6241 __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_req(
6242 	tpAniSirGlobal,
6243 	uint8_t *,
6244 	uint8_t,
6245 	tDot11fIEP2PAssocReq*,
6246 	bool);
6247 
6248 uint32_t dot11f_pack_ie_p2_p_assoc_req(
6249 	tpAniSirGlobal,
6250 	tDot11fIEP2PAssocReq *,
6251 	uint8_t *,
6252 	uint32_t,
6253 	uint32_t*);
6254 
6255 uint32_t dot11f_get_packed_iep2_p_assoc_req(
6256 	tpAniSirGlobal,
6257 	tDot11fIEP2PAssocReq *,
6258 	uint32_t*);
6259 
6260 #ifdef __cplusplus
6261 }; /* End extern "C". */
6262 #endif /* C++ */
6263 
6264 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6265 typedef struct sDot11fIEP2PAssocRes {
6266 	uint8_t             present;
6267 	tDot11fTLVP2PStatus P2PStatus;
6268 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6269 } tDot11fIEP2PAssocRes;
6270 
6271 #define DOT11F_EID_P2PASSOCRES (221)
6272 
6273 /* N.B. These #defines do *not* include the EID & length */
6274 #define DOT11F_IE_P2PASSOCRES_MIN_LEN (4)
6275 
6276 #define DOT11F_IE_P2PASSOCRES_MAX_LEN (15)
6277 
6278 #ifdef __cplusplus
6279 extern "C" {
6280 #endif /* C++ */
6281 __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_res(
6282 	tpAniSirGlobal,
6283 	uint8_t *,
6284 	uint8_t,
6285 	tDot11fIEP2PAssocRes*,
6286 	bool);
6287 
6288 uint32_t dot11f_pack_ie_p2_p_assoc_res(
6289 	tpAniSirGlobal,
6290 	tDot11fIEP2PAssocRes *,
6291 	uint8_t *,
6292 	uint32_t,
6293 	uint32_t*);
6294 
6295 uint32_t dot11f_get_packed_iep2_p_assoc_res(
6296 	tpAniSirGlobal,
6297 	tDot11fIEP2PAssocRes *,
6298 	uint32_t*);
6299 
6300 #ifdef __cplusplus
6301 }; /* End extern "C". */
6302 #endif /* C++ */
6303 
6304 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6305 typedef struct sDot11fIEP2PBeacon {
6306 	uint8_t             present;
6307 	tDot11fTLVP2PCapability P2PCapability;
6308 	tDot11fTLVP2PDeviceId P2PDeviceId;
6309 	tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6310 } tDot11fIEP2PBeacon;
6311 
6312 #define DOT11F_EID_P2PBEACON (221)
6313 
6314 /* N.B. These #defines do *not* include the EID & length */
6315 #define DOT11F_IE_P2PBEACON_MIN_LEN (4)
6316 
6317 #define DOT11F_IE_P2PBEACON_MAX_LEN (59)
6318 
6319 #ifdef __cplusplus
6320 extern "C" {
6321 #endif /* C++ */
6322 __must_check uint32_t dot11f_unpack_ie_p2_p_beacon(
6323 	tpAniSirGlobal,
6324 	uint8_t *,
6325 	uint8_t,
6326 	tDot11fIEP2PBeacon*,
6327 	bool);
6328 
6329 uint32_t dot11f_pack_ie_p2_p_beacon(
6330 	tpAniSirGlobal,
6331 	tDot11fIEP2PBeacon *,
6332 	uint8_t *,
6333 	uint32_t,
6334 	uint32_t*);
6335 
6336 uint32_t dot11f_get_packed_iep2_p_beacon(
6337 	tpAniSirGlobal,
6338 	tDot11fIEP2PBeacon *,
6339 	uint32_t*);
6340 
6341 #ifdef __cplusplus
6342 }; /* End extern "C". */
6343 #endif /* C++ */
6344 
6345 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6346 typedef struct sDot11fIEP2PBeaconProbeRes {
6347 	uint8_t             present;
6348 	tDot11fTLVP2PCapability P2PCapability;
6349 	tDot11fTLVP2PDeviceId P2PDeviceId;
6350 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6351 	tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6352 	tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6353 	tDot11fTLVP2PGroupInfo P2PGroupInfo;
6354 } tDot11fIEP2PBeaconProbeRes;
6355 
6356 #define DOT11F_EID_P2PBEACONPROBERES (221)
6357 
6358 /* N.B. These #defines do *not* include the EID & length */
6359 #define DOT11F_IE_P2PBEACONPROBERES_MIN_LEN (4)
6360 
6361 #define DOT11F_IE_P2PBEACONPROBERES_MAX_LEN (1148)
6362 
6363 #ifdef __cplusplus
6364 extern "C" {
6365 #endif /* C++ */
6366 __must_check uint32_t dot11f_unpack_ie_p2_p_beacon_probe_res(
6367 	tpAniSirGlobal,
6368 	uint8_t *,
6369 	uint8_t,
6370 	tDot11fIEP2PBeaconProbeRes*,
6371 	bool);
6372 
6373 uint32_t dot11f_pack_ie_p2_p_beacon_probe_res(
6374 	tpAniSirGlobal,
6375 	tDot11fIEP2PBeaconProbeRes *,
6376 	uint8_t *,
6377 	uint32_t,
6378 	uint32_t*);
6379 
6380 uint32_t dot11f_get_packed_iep2_p_beacon_probe_res(
6381 	tpAniSirGlobal,
6382 	tDot11fIEP2PBeaconProbeRes *,
6383 	uint32_t*);
6384 
6385 #ifdef __cplusplus
6386 }; /* End extern "C". */
6387 #endif /* C++ */
6388 
6389 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6390 typedef struct sDot11fIEP2PDeAuth {
6391 	uint8_t             present;
6392 	tDot11fTLVMinorReasonCode MinorReasonCode;
6393 } tDot11fIEP2PDeAuth;
6394 
6395 #define DOT11F_EID_P2PDEAUTH (221)
6396 
6397 /* N.B. These #defines do *not* include the EID & length */
6398 #define DOT11F_IE_P2PDEAUTH_MIN_LEN (4)
6399 
6400 #define DOT11F_IE_P2PDEAUTH_MAX_LEN (8)
6401 
6402 #ifdef __cplusplus
6403 extern "C" {
6404 #endif /* C++ */
6405 __must_check uint32_t dot11f_unpack_ie_p2_p_de_auth(
6406 	tpAniSirGlobal,
6407 	uint8_t *,
6408 	uint8_t,
6409 	tDot11fIEP2PDeAuth*,
6410 	bool);
6411 
6412 uint32_t dot11f_pack_ie_p2_p_de_auth(
6413 	tpAniSirGlobal,
6414 	tDot11fIEP2PDeAuth *,
6415 	uint8_t *,
6416 	uint32_t,
6417 	uint32_t*);
6418 
6419 uint32_t dot11f_get_packed_iep2_p_de_auth(
6420 	tpAniSirGlobal,
6421 	tDot11fIEP2PDeAuth *,
6422 	uint32_t*);
6423 
6424 #ifdef __cplusplus
6425 }; /* End extern "C". */
6426 #endif /* C++ */
6427 
6428 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6429 typedef struct sDot11fIEP2PDisAssoc {
6430 	uint8_t             present;
6431 	tDot11fTLVMinorReasonCode MinorReasonCode;
6432 } tDot11fIEP2PDisAssoc;
6433 
6434 #define DOT11F_EID_P2PDISASSOC (221)
6435 
6436 /* N.B. These #defines do *not* include the EID & length */
6437 #define DOT11F_IE_P2PDISASSOC_MIN_LEN (4)
6438 
6439 #define DOT11F_IE_P2PDISASSOC_MAX_LEN (8)
6440 
6441 #ifdef __cplusplus
6442 extern "C" {
6443 #endif /* C++ */
6444 __must_check uint32_t dot11f_unpack_ie_p2_p_dis_assoc(
6445 	tpAniSirGlobal,
6446 	uint8_t *,
6447 	uint8_t,
6448 	tDot11fIEP2PDisAssoc*,
6449 	bool);
6450 
6451 uint32_t dot11f_pack_ie_p2_p_dis_assoc(
6452 	tpAniSirGlobal,
6453 	tDot11fIEP2PDisAssoc *,
6454 	uint8_t *,
6455 	uint32_t,
6456 	uint32_t*);
6457 
6458 uint32_t dot11f_get_packed_iep2_p_dis_assoc(
6459 	tpAniSirGlobal,
6460 	tDot11fIEP2PDisAssoc *,
6461 	uint32_t*);
6462 
6463 #ifdef __cplusplus
6464 }; /* End extern "C". */
6465 #endif /* C++ */
6466 
6467 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} */
6468 typedef struct sDot11fIEP2PIEOpaque {
6469 	uint8_t             present;
6470 	uint8_t             num_data;
6471 	uint8_t             data[249];
6472 } tDot11fIEP2PIEOpaque;
6473 
6474 #define DOT11F_EID_P2PIEOPAQUE (221)
6475 
6476 /* N.B. These #defines do *not* include the EID & length */
6477 #define DOT11F_IE_P2PIEOPAQUE_MIN_LEN (6)
6478 
6479 #define DOT11F_IE_P2PIEOPAQUE_MAX_LEN (253)
6480 
6481 #ifdef __cplusplus
6482 extern "C" {
6483 #endif /* C++ */
6484 __must_check uint32_t dot11f_unpack_ie_p2_pie_opaque(
6485 	tpAniSirGlobal,
6486 	uint8_t *,
6487 	uint8_t,
6488 	tDot11fIEP2PIEOpaque*,
6489 	bool);
6490 
6491 uint32_t dot11f_pack_ie_p2_pie_opaque(
6492 	tpAniSirGlobal,
6493 	tDot11fIEP2PIEOpaque *,
6494 	uint8_t *,
6495 	uint32_t,
6496 	uint32_t*);
6497 
6498 uint32_t dot11f_get_packed_ie_P2PIEOpaque(
6499 	tpAniSirGlobal,
6500 	tDot11fIEP2PIEOpaque *,
6501 	uint32_t*);
6502 
6503 #ifdef __cplusplus
6504 }; /* End extern "C". */
6505 #endif /* C++ */
6506 
6507 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6508 typedef struct sDot11fIEP2PProbeReq {
6509 	uint8_t             present;
6510 	tDot11fTLVP2PCapability P2PCapability;
6511 	tDot11fTLVP2PDeviceId P2PDeviceId;
6512 	tDot11fTLVListenChannel ListenChannel;
6513 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6514 	tDot11fTLVOperatingChannel OperatingChannel;
6515 } tDot11fIEP2PProbeReq;
6516 
6517 #define DOT11F_EID_P2PPROBEREQ (221)
6518 
6519 /* N.B. These #defines do *not* include the EID & length */
6520 #define DOT11F_IE_P2PPROBEREQ_MIN_LEN (4)
6521 
6522 #define DOT11F_IE_P2PPROBEREQ_MAX_LEN (41)
6523 
6524 #ifdef __cplusplus
6525 extern "C" {
6526 #endif /* C++ */
6527 __must_check uint32_t dot11f_unpack_ie_p2_p_probe_req(
6528 	tpAniSirGlobal,
6529 	uint8_t *,
6530 	uint8_t,
6531 	tDot11fIEP2PProbeReq*,
6532 	bool);
6533 
6534 uint32_t dot11f_pack_ie_p2_p_probe_req(
6535 	tpAniSirGlobal,
6536 	tDot11fIEP2PProbeReq *,
6537 	uint8_t *,
6538 	uint32_t,
6539 	uint32_t*);
6540 
6541 uint32_t dot11f_get_packed_iep2_p_probe_req(
6542 	tpAniSirGlobal,
6543 	tDot11fIEP2PProbeReq *,
6544 	uint32_t*);
6545 
6546 #ifdef __cplusplus
6547 }; /* End extern "C". */
6548 #endif /* C++ */
6549 
6550 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6551 typedef struct sDot11fIEP2PProbeRes {
6552 	uint8_t             present;
6553 	tDot11fTLVP2PCapability P2PCapability;
6554 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6555 	tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6556 	tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6557 	tDot11fTLVP2PGroupInfo P2PGroupInfo;
6558 } tDot11fIEP2PProbeRes;
6559 
6560 #define DOT11F_EID_P2PPROBERES (221)
6561 
6562 /* N.B. These #defines do *not* include the EID & length */
6563 #define DOT11F_IE_P2PPROBERES_MIN_LEN (4)
6564 
6565 #define DOT11F_IE_P2PPROBERES_MAX_LEN (1139)
6566 
6567 #ifdef __cplusplus
6568 extern "C" {
6569 #endif /* C++ */
6570 __must_check uint32_t dot11f_unpack_ie_p2_p_probe_res(
6571 	tpAniSirGlobal,
6572 	uint8_t *,
6573 	uint8_t,
6574 	tDot11fIEP2PProbeRes*,
6575 	bool);
6576 
6577 uint32_t dot11f_pack_ie_p2_p_probe_res(
6578 	tpAniSirGlobal,
6579 	tDot11fIEP2PProbeRes *,
6580 	uint8_t *,
6581 	uint32_t,
6582 	uint32_t*);
6583 
6584 uint32_t dot11f_get_packed_iep2_p_probe_res(
6585 	tpAniSirGlobal,
6586 	tDot11fIEP2PProbeRes *,
6587 	uint32_t*);
6588 
6589 #ifdef __cplusplus
6590 }; /* End extern "C". */
6591 #endif /* C++ */
6592 
6593 /* EID 105 (0x69) */
6594 typedef struct sDot11fIEPTIControl {
6595 	uint8_t             present;
6596 	uint8_t             tid;
6597 	uint16_t            sequence_control;
6598 } tDot11fIEPTIControl;
6599 
6600 #define DOT11F_EID_PTICONTROL (105)
6601 
6602 /* N.B. These #defines do *not* include the EID & length */
6603 #define DOT11F_IE_PTICONTROL_MIN_LEN (3)
6604 
6605 #define DOT11F_IE_PTICONTROL_MAX_LEN (3)
6606 
6607 #ifdef __cplusplus
6608 extern "C" {
6609 #endif /* C++ */
6610 __must_check uint32_t dot11f_unpack_ie_pti_control(
6611 	tpAniSirGlobal,
6612 	uint8_t *,
6613 	uint8_t,
6614 	tDot11fIEPTIControl*,
6615 	bool);
6616 
6617 uint32_t dot11f_pack_ie_pti_control(
6618 	tpAniSirGlobal,
6619 	tDot11fIEPTIControl *,
6620 	uint8_t *,
6621 	uint32_t,
6622 	uint32_t*);
6623 
6624 uint32_t dot11f_get_packed_ie_PTIControl(
6625 	tpAniSirGlobal,
6626 	tDot11fIEPTIControl *,
6627 	uint32_t*);
6628 
6629 #ifdef __cplusplus
6630 }; /* End extern "C". */
6631 #endif /* C++ */
6632 
6633 /* EID 106 (0x6a) */
6634 typedef struct sDot11fIEPUBufferStatus {
6635 	uint8_t             present;
6636 	uint8_t   ac_bk_traffic_aval:1;
6637 	uint8_t   ac_be_traffic_aval:1;
6638 	uint8_t   ac_vi_traffic_aval:1;
6639 	uint8_t   ac_vo_traffic_aval:1;
6640 	uint8_t             reserved:4;
6641 } tDot11fIEPUBufferStatus;
6642 
6643 #define DOT11F_EID_PUBUFFERSTATUS (106)
6644 
6645 /* N.B. These #defines do *not* include the EID & length */
6646 #define DOT11F_IE_PUBUFFERSTATUS_MIN_LEN (1)
6647 
6648 #define DOT11F_IE_PUBUFFERSTATUS_MAX_LEN (1)
6649 
6650 #ifdef __cplusplus
6651 extern "C" {
6652 #endif /* C++ */
6653 __must_check uint32_t dot11f_unpack_ie_pu_buffer_status(
6654 	tpAniSirGlobal,
6655 	uint8_t *,
6656 	uint8_t,
6657 	tDot11fIEPUBufferStatus*,
6658 	bool);
6659 
6660 uint32_t dot11f_pack_ie_pu_buffer_status(
6661 	tpAniSirGlobal,
6662 	tDot11fIEPUBufferStatus *,
6663 	uint8_t *,
6664 	uint32_t,
6665 	uint32_t*);
6666 
6667 uint32_t dot11f_get_packed_ie_PUBufferStatus(
6668 	tpAniSirGlobal,
6669 	tDot11fIEPUBufferStatus *,
6670 	uint32_t*);
6671 
6672 #ifdef __cplusplus
6673 }; /* End extern "C". */
6674 #endif /* C++ */
6675 
6676 /* EID 33 (0x21) */
6677 typedef struct sDot11fIEPowerCaps {
6678 	uint8_t             present;
6679 	uint8_t             minTxPower;
6680 	uint8_t             maxTxPower;
6681 } tDot11fIEPowerCaps;
6682 
6683 #define DOT11F_EID_POWERCAPS (33)
6684 
6685 /* N.B. These #defines do *not* include the EID & length */
6686 #define DOT11F_IE_POWERCAPS_MIN_LEN (2)
6687 
6688 #define DOT11F_IE_POWERCAPS_MAX_LEN (2)
6689 
6690 #ifdef __cplusplus
6691 extern "C" {
6692 #endif /* C++ */
6693 __must_check uint32_t dot11f_unpack_ie_power_caps(
6694 	tpAniSirGlobal,
6695 	uint8_t *,
6696 	uint8_t,
6697 	tDot11fIEPowerCaps*,
6698 	bool);
6699 
6700 uint32_t dot11f_pack_ie_power_caps(
6701 	tpAniSirGlobal,
6702 	tDot11fIEPowerCaps *,
6703 	uint8_t *,
6704 	uint32_t,
6705 	uint32_t*);
6706 
6707 uint32_t dot11f_get_packed_ie_PowerCaps(
6708 	tpAniSirGlobal,
6709 	tDot11fIEPowerCaps *,
6710 	uint32_t*);
6711 
6712 #ifdef __cplusplus
6713 }; /* End extern "C". */
6714 #endif /* C++ */
6715 
6716 /* EID 32 (0x20) */
6717 typedef struct sDot11fIEPowerConstraints {
6718 	uint8_t             present;
6719 	uint8_t             localPowerConstraints;
6720 } tDot11fIEPowerConstraints;
6721 
6722 #define DOT11F_EID_POWERCONSTRAINTS (32)
6723 
6724 /* N.B. These #defines do *not* include the EID & length */
6725 #define DOT11F_IE_POWERCONSTRAINTS_MIN_LEN (1)
6726 
6727 #define DOT11F_IE_POWERCONSTRAINTS_MAX_LEN (1)
6728 
6729 #ifdef __cplusplus
6730 extern "C" {
6731 #endif /* C++ */
6732 __must_check uint32_t dot11f_unpack_ie_power_constraints(
6733 	tpAniSirGlobal,
6734 	uint8_t *,
6735 	uint8_t,
6736 	tDot11fIEPowerConstraints*,
6737 	bool);
6738 
6739 uint32_t dot11f_pack_ie_power_constraints(
6740 	tpAniSirGlobal,
6741 	tDot11fIEPowerConstraints *,
6742 	uint8_t *,
6743 	uint32_t,
6744 	uint32_t*);
6745 
6746 uint32_t dot11f_get_packed_ie_PowerConstraints(
6747 	tpAniSirGlobal,
6748 	tDot11fIEPowerConstraints *,
6749 	uint32_t*);
6750 
6751 #ifdef __cplusplus
6752 }; /* End extern "C". */
6753 #endif /* C++ */
6754 
6755 /* EID 11 (0x0b) */
6756 typedef struct sDot11fIEQBSSLoad {
6757 	uint8_t             present;
6758 	uint16_t            stacount;
6759 	uint8_t             chautil;
6760 	uint16_t            avail;
6761 } tDot11fIEQBSSLoad;
6762 
6763 #define DOT11F_EID_QBSSLOAD (11)
6764 
6765 /* N.B. These #defines do *not* include the EID & length */
6766 #define DOT11F_IE_QBSSLOAD_MIN_LEN (5)
6767 
6768 #define DOT11F_IE_QBSSLOAD_MAX_LEN (5)
6769 
6770 #ifdef __cplusplus
6771 extern "C" {
6772 #endif /* C++ */
6773 __must_check uint32_t dot11f_unpack_ie_qbss_load(
6774 	tpAniSirGlobal,
6775 	uint8_t *,
6776 	uint8_t,
6777 	tDot11fIEQBSSLoad*,
6778 	bool);
6779 
6780 uint32_t dot11f_pack_ie_qbss_load(
6781 	tpAniSirGlobal,
6782 	tDot11fIEQBSSLoad *,
6783 	uint8_t *,
6784 	uint32_t,
6785 	uint32_t*);
6786 
6787 uint32_t dot11f_get_packed_ie_QBSSLoad(
6788 	tpAniSirGlobal,
6789 	tDot11fIEQBSSLoad *,
6790 	uint32_t*);
6791 
6792 #ifdef __cplusplus
6793 }; /* End extern "C". */
6794 #endif /* C++ */
6795 
6796 /* EID 221 (0xdd) {OUI 0x00, 0xa0, 0xc6} */
6797 typedef struct sDot11fIEQComVendorIE {
6798 	uint8_t             present;
6799 	uint8_t             type;
6800 	uint8_t             channel;
6801 } tDot11fIEQComVendorIE;
6802 
6803 #define DOT11F_EID_QCOMVENDORIE (221)
6804 
6805 /* N.B. These #defines do *not* include the EID & length */
6806 #define DOT11F_IE_QCOMVENDORIE_MIN_LEN (5)
6807 
6808 #define DOT11F_IE_QCOMVENDORIE_MAX_LEN (5)
6809 
6810 #ifdef __cplusplus
6811 extern "C" {
6812 #endif /* C++ */
6813 __must_check uint32_t dot11f_unpack_ie_QComVendorIE(
6814 	tpAniSirGlobal,
6815 	uint8_t *,
6816 	uint8_t,
6817 	tDot11fIEQComVendorIE*,
6818 	bool);
6819 
6820 uint32_t dot11f_pack_ie_QComVendorIE(
6821 	tpAniSirGlobal,
6822 	tDot11fIEQComVendorIE *,
6823 	uint8_t *,
6824 	uint32_t,
6825 	uint32_t*);
6826 
6827 uint32_t dot11f_get_packed_ie_QComVendorIE(
6828 	tpAniSirGlobal,
6829 	tDot11fIEQComVendorIE *,
6830 	uint32_t*);
6831 
6832 #ifdef __cplusplus
6833 }; /* End extern "C". */
6834 #endif /* C++ */
6835 
6836 /* EID 46 (0x2e) */
6837 typedef struct sDot11fIEQOSCapsAp {
6838 	uint8_t             present;
6839 	uint8_t                count:4;
6840 	uint8_t                 qack:1;
6841 	uint8_t                 qreq:1;
6842 	uint8_t              txopreq:1;
6843 	uint8_t             reserved:1;
6844 } tDot11fIEQOSCapsAp;
6845 
6846 #define DOT11F_EID_QOSCAPSAP (46)
6847 
6848 /* N.B. These #defines do *not* include the EID & length */
6849 #define DOT11F_IE_QOSCAPSAP_MIN_LEN (1)
6850 
6851 #define DOT11F_IE_QOSCAPSAP_MAX_LEN (1)
6852 
6853 #ifdef __cplusplus
6854 extern "C" {
6855 #endif /* C++ */
6856 __must_check uint32_t dot11f_unpack_ie_qos_caps_ap(
6857 	tpAniSirGlobal,
6858 	uint8_t *,
6859 	uint8_t,
6860 	tDot11fIEQOSCapsAp*,
6861 	bool);
6862 
6863 uint32_t dot11f_pack_ie_qos_caps_ap(
6864 	tpAniSirGlobal,
6865 	tDot11fIEQOSCapsAp *,
6866 	uint8_t *,
6867 	uint32_t,
6868 	uint32_t*);
6869 
6870 uint32_t dot11f_get_packed_ie_QOSCapsAp(
6871 	tpAniSirGlobal,
6872 	tDot11fIEQOSCapsAp *,
6873 	uint32_t*);
6874 
6875 #ifdef __cplusplus
6876 }; /* End extern "C". */
6877 #endif /* C++ */
6878 
6879 /* EID 46 (0x2e) */
6880 typedef struct sDot11fIEQOSCapsStation {
6881 	uint8_t             present;
6882 	uint8_t           acvo_uapsd:1;
6883 	uint8_t           acvi_uapsd:1;
6884 	uint8_t           acbk_uapsd:1;
6885 	uint8_t           acbe_uapsd:1;
6886 	uint8_t                 qack:1;
6887 	uint8_t        max_sp_length:2;
6888 	uint8_t        more_data_ack:1;
6889 } tDot11fIEQOSCapsStation;
6890 
6891 #define DOT11F_EID_QOSCAPSSTATION (46)
6892 
6893 /* N.B. These #defines do *not* include the EID & length */
6894 #define DOT11F_IE_QOSCAPSSTATION_MIN_LEN (1)
6895 
6896 #define DOT11F_IE_QOSCAPSSTATION_MAX_LEN (1)
6897 
6898 #ifdef __cplusplus
6899 extern "C" {
6900 #endif /* C++ */
6901 __must_check uint32_t dot11f_unpack_ie_qos_caps_station(
6902 	tpAniSirGlobal,
6903 	uint8_t *,
6904 	uint8_t,
6905 	tDot11fIEQOSCapsStation*,
6906 	bool);
6907 
6908 uint32_t dot11f_pack_ie_qos_caps_station(
6909 	tpAniSirGlobal,
6910 	tDot11fIEQOSCapsStation *,
6911 	uint8_t *,
6912 	uint32_t,
6913 	uint32_t*);
6914 
6915 uint32_t dot11f_get_packed_ie_QOSCapsStation(
6916 	tpAniSirGlobal,
6917 	tDot11fIEQOSCapsStation *,
6918 	uint32_t*);
6919 
6920 #ifdef __cplusplus
6921 }; /* End extern "C". */
6922 #endif /* C++ */
6923 
6924 /* EID 110 (0x6e) */
6925 typedef struct sDot11fIEQosMapSet {
6926 	uint8_t             present;
6927 	uint8_t             num_dscp_exceptions;
6928 	uint8_t             dscp_exceptions[58];
6929 } tDot11fIEQosMapSet;
6930 
6931 #define DOT11F_EID_QOSMAPSET (110)
6932 
6933 /* N.B. These #defines do *not* include the EID & length */
6934 #define DOT11F_IE_QOSMAPSET_MIN_LEN (16)
6935 
6936 #define DOT11F_IE_QOSMAPSET_MAX_LEN (58)
6937 
6938 #ifdef __cplusplus
6939 extern "C" {
6940 #endif /* C++ */
6941 __must_check uint32_t dot11f_unpack_ie_qos_map_set(
6942 	tpAniSirGlobal,
6943 	uint8_t *,
6944 	uint8_t,
6945 	tDot11fIEQosMapSet*,
6946 	bool);
6947 
6948 uint32_t dot11f_pack_ie_qos_map_set(
6949 	tpAniSirGlobal,
6950 	tDot11fIEQosMapSet *,
6951 	uint8_t *,
6952 	uint32_t,
6953 	uint32_t*);
6954 
6955 uint32_t dot11f_get_packed_ie_QosMapSet(
6956 	tpAniSirGlobal,
6957 	tDot11fIEQosMapSet *,
6958 	uint32_t*);
6959 
6960 #ifdef __cplusplus
6961 }; /* End extern "C". */
6962 #endif /* C++ */
6963 
6964 /* EID 40 (0x28) */
6965 typedef struct sDot11fIEQuiet {
6966 	uint8_t             present;
6967 	uint8_t             count;
6968 	uint8_t             period;
6969 	uint16_t            duration;
6970 	uint16_t            offset;
6971 } tDot11fIEQuiet;
6972 
6973 #define DOT11F_EID_QUIET (40)
6974 
6975 /* N.B. These #defines do *not* include the EID & length */
6976 #define DOT11F_IE_QUIET_MIN_LEN (6)
6977 
6978 #define DOT11F_IE_QUIET_MAX_LEN (6)
6979 
6980 #ifdef __cplusplus
6981 extern "C" {
6982 #endif /* C++ */
6983 __must_check uint32_t dot11f_unpack_ie_quiet(
6984 	tpAniSirGlobal,
6985 	uint8_t *,
6986 	uint8_t,
6987 	tDot11fIEQuiet*,
6988 	bool);
6989 
6990 uint32_t dot11f_pack_ie_quiet(
6991 	tpAniSirGlobal,
6992 	tDot11fIEQuiet *,
6993 	uint8_t *,
6994 	uint32_t,
6995 	uint32_t*);
6996 
6997 uint32_t dot11f_get_packed_ie_Quiet(
6998 	tpAniSirGlobal,
6999 	tDot11fIEQuiet *,
7000 	uint32_t*);
7001 
7002 #ifdef __cplusplus
7003 }; /* End extern "C". */
7004 #endif /* C++ */
7005 
7006 /* EID 53 (0x35) */
7007 typedef struct sDot11fIERCPIIE {
7008 	uint8_t             present;
7009 	uint8_t             rcpi;
7010 } tDot11fIERCPIIE;
7011 
7012 #define DOT11F_EID_RCPIIE (53)
7013 
7014 /* N.B. These #defines do *not* include the EID & length */
7015 #define DOT11F_IE_RCPIIE_MIN_LEN (1)
7016 
7017 #define DOT11F_IE_RCPIIE_MAX_LEN (1)
7018 
7019 #ifdef __cplusplus
7020 extern "C" {
7021 #endif /* C++ */
7022 __must_check uint32_t dot11f_unpack_ie_rcpiie(
7023 	tpAniSirGlobal,
7024 	uint8_t *,
7025 	uint8_t,
7026 	tDot11fIERCPIIE*,
7027 	bool);
7028 
7029 uint32_t dot11f_pack_ie_rcpiie(
7030 	tpAniSirGlobal,
7031 	tDot11fIERCPIIE *,
7032 	uint8_t *,
7033 	uint32_t,
7034 	uint32_t*);
7035 
7036 uint32_t dot11f_get_packed_ie_RCPIIE(
7037 	tpAniSirGlobal,
7038 	tDot11fIERCPIIE *,
7039 	uint32_t*);
7040 
7041 #ifdef __cplusplus
7042 }; /* End extern "C". */
7043 #endif /* C++ */
7044 
7045 /* EID 57 (0x39) */
7046 typedef struct sDot11fIERICDataDesc {
7047 	uint8_t                       present;
7048 	tDot11fIERICData              RICData;
7049 	tDot11fIERICDescriptor        RICDescriptor;
7050 	tDot11fIETSPEC                TSPEC;
7051 	uint16_t                      num_TCLAS;
7052 	tDot11fIETCLAS                TCLAS[2];
7053 	tDot11fIETCLASSPROC           TCLASSPROC;
7054 	tDot11fIETSDelay              TSDelay;
7055 	tDot11fIESchedule             Schedule;
7056 	tDot11fIEWMMTSPEC             WMMTSPEC;
7057 	uint16_t                      num_WMMTCLAS;
7058 	tDot11fIEWMMTCLAS             WMMTCLAS[2];
7059 	tDot11fIEWMMTCLASPROC         WMMTCLASPROC;
7060 	tDot11fIEWMMTSDelay           WMMTSDelay;
7061 	tDot11fIEWMMSchedule          WMMSchedule;
7062 } tDot11fIERICDataDesc;
7063 
7064 #define DOT11F_EID_RICDATADESC (57)
7065 
7066 /* N.B. These #defines do *not* include the EID & length */
7067 #define DOT11F_IE_RICDATADESC_MIN_LEN (0)
7068 
7069 #define DOT11F_IE_RICDATADESC_MAX_LEN (548)
7070 
7071 #ifdef __cplusplus
7072 extern "C" {
7073 #endif /* C++ */
7074 __must_check uint32_t dot11f_unpack_ie_ric_data_desc(
7075 	tpAniSirGlobal,
7076 	uint8_t *,
7077 	uint8_t,
7078 	tDot11fIERICDataDesc*,
7079 	bool);
7080 
7081 uint32_t dot11f_pack_ie_ric_data_desc(
7082 	tpAniSirGlobal,
7083 	tDot11fIERICDataDesc *,
7084 	uint8_t *,
7085 	uint32_t,
7086 	uint32_t*);
7087 
7088 uint32_t dot11f_get_packed_ieric_data_desc(
7089 	tpAniSirGlobal,
7090 	tDot11fIERICDataDesc *,
7091 	uint32_t*);
7092 
7093 #ifdef __cplusplus
7094 }; /* End extern "C". */
7095 #endif /* C++ */
7096 
7097 /* EID 48 (0x30) */
7098 typedef struct sDot11fIERSN {
7099 	uint8_t             present;
7100 	uint16_t            version /* Must be 1! */;
7101 	uint8_t             gp_cipher_suite_present;
7102 	uint8_t             gp_cipher_suite[4];
7103 	uint16_t            pwise_cipher_suite_count;
7104 	uint8_t             pwise_cipher_suites[6][4];
7105 	uint16_t            akm_suite_cnt;
7106 	uint8_t             akm_suite[6][4];
7107 	uint8_t             RSN_Cap_present;
7108 	uint8_t             RSN_Cap[2];
7109 	uint16_t            pmkid_count;
7110 	uint8_t             pmkid[4][16];
7111 	uint8_t             gp_mgmt_cipher_suite_present;
7112 	uint8_t             gp_mgmt_cipher_suite[4];
7113 } tDot11fIERSN;
7114 
7115 #define DOT11F_EID_RSN (48)
7116 
7117 /* N.B. These #defines do *not* include the EID & length */
7118 #define DOT11F_IE_RSN_MIN_LEN (2)
7119 
7120 #define DOT11F_IE_RSN_MAX_LEN (130)
7121 
7122 #ifdef __cplusplus
7123 extern "C" {
7124 #endif /* C++ */
7125 __must_check uint32_t dot11f_unpack_ie_rsn(
7126 	tpAniSirGlobal,
7127 	uint8_t *,
7128 	uint8_t,
7129 	tDot11fIERSN*,
7130 	bool);
7131 
7132 uint32_t dot11f_pack_ie_rsn(
7133 	tpAniSirGlobal,
7134 	tDot11fIERSN *,
7135 	uint8_t *,
7136 	uint32_t,
7137 	uint32_t*);
7138 
7139 uint32_t dot11f_get_packed_iersn(
7140 	tpAniSirGlobal,
7141 	tDot11fIERSN *,
7142 	uint32_t*);
7143 
7144 #ifdef __cplusplus
7145 }; /* End extern "C". */
7146 #endif /* C++ */
7147 
7148 /* EID 65 (0x41) */
7149 typedef struct sDot11fIERSNIIE {
7150 	uint8_t             present;
7151 	uint8_t             rsni;
7152 } tDot11fIERSNIIE;
7153 
7154 #define DOT11F_EID_RSNIIE (65)
7155 
7156 /* N.B. These #defines do *not* include the EID & length */
7157 #define DOT11F_IE_RSNIIE_MIN_LEN (1)
7158 
7159 #define DOT11F_IE_RSNIIE_MAX_LEN (1)
7160 
7161 #ifdef __cplusplus
7162 extern "C" {
7163 #endif /* C++ */
7164 __must_check uint32_t dot11f_unpack_ie_rsniie(
7165 	tpAniSirGlobal,
7166 	uint8_t *,
7167 	uint8_t,
7168 	tDot11fIERSNIIE*,
7169 	bool);
7170 
7171 uint32_t dot11f_pack_ie_rsniie(
7172 	tpAniSirGlobal,
7173 	tDot11fIERSNIIE *,
7174 	uint8_t *,
7175 	uint32_t,
7176 	uint32_t*);
7177 
7178 uint32_t dot11f_get_packed_iersnIIE(
7179 	tpAniSirGlobal,
7180 	tDot11fIERSNIIE *,
7181 	uint32_t*);
7182 
7183 #ifdef __cplusplus
7184 }; /* End extern "C". */
7185 #endif /* C++ */
7186 
7187 /* EID 48 (0x30) */
7188 typedef struct sDot11fIERSNOpaque {
7189 	uint8_t             present;
7190 	uint8_t             num_data;
7191 	uint8_t             data[253];
7192 } tDot11fIERSNOpaque;
7193 
7194 #define DOT11F_EID_RSNOPAQUE (48)
7195 
7196 /* N.B. These #defines do *not* include the EID & length */
7197 #define DOT11F_IE_RSNOPAQUE_MIN_LEN (0)
7198 
7199 #define DOT11F_IE_RSNOPAQUE_MAX_LEN (253)
7200 
7201 #ifdef __cplusplus
7202 extern "C" {
7203 #endif /* C++ */
7204 __must_check uint32_t dot11f_unpack_ie_rsn_opaque(
7205 	tpAniSirGlobal,
7206 	uint8_t *,
7207 	uint8_t,
7208 	tDot11fIERSNOpaque*,
7209 	bool);
7210 
7211 uint32_t dot11f_pack_ie_rsn_opaque(
7212 	tpAniSirGlobal,
7213 	tDot11fIERSNOpaque *,
7214 	uint8_t *,
7215 	uint32_t,
7216 	uint32_t*);
7217 
7218 uint32_t dot11f_get_packed_iersnOpaque(
7219 	tpAniSirGlobal,
7220 	tDot11fIERSNOpaque *,
7221 	uint32_t*);
7222 
7223 #ifdef __cplusplus
7224 }; /* End extern "C". */
7225 #endif /* C++ */
7226 
7227 /* EID 36 (0x24) */
7228 typedef struct sDot11fIESuppChannels {
7229 	uint8_t             present;
7230 	uint8_t             num_bands;
7231 	uint8_t             bands[48][2];
7232 } tDot11fIESuppChannels;
7233 
7234 #define DOT11F_EID_SUPPCHANNELS (36)
7235 
7236 /* N.B. These #defines do *not* include the EID & length */
7237 #define DOT11F_IE_SUPPCHANNELS_MIN_LEN (0)
7238 
7239 #define DOT11F_IE_SUPPCHANNELS_MAX_LEN (96)
7240 
7241 #ifdef __cplusplus
7242 extern "C" {
7243 #endif /* C++ */
7244 __must_check uint32_t dot11f_unpack_ie_supp_channels(
7245 	tpAniSirGlobal,
7246 	uint8_t *,
7247 	uint8_t,
7248 	tDot11fIESuppChannels*,
7249 	bool);
7250 
7251 uint32_t dot11f_pack_ie_supp_channels(
7252 	tpAniSirGlobal,
7253 	tDot11fIESuppChannels *,
7254 	uint8_t *,
7255 	uint32_t,
7256 	uint32_t*);
7257 
7258 uint32_t dot11f_get_packed_ie_SuppChannels(
7259 	tpAniSirGlobal,
7260 	tDot11fIESuppChannels *,
7261 	uint32_t*);
7262 
7263 #ifdef __cplusplus
7264 }; /* End extern "C". */
7265 #endif /* C++ */
7266 
7267 /* EID 59 (0x3b) */
7268 typedef struct sDot11fIESuppOperatingClasses {
7269 	uint8_t             present;
7270 	uint8_t             num_classes;
7271 	uint8_t             classes[32];
7272 } tDot11fIESuppOperatingClasses;
7273 
7274 #define DOT11F_EID_SUPPOPERATINGCLASSES (59)
7275 
7276 /* N.B. These #defines do *not* include the EID & length */
7277 #define DOT11F_IE_SUPPOPERATINGCLASSES_MIN_LEN (1)
7278 
7279 #define DOT11F_IE_SUPPOPERATINGCLASSES_MAX_LEN (32)
7280 
7281 #ifdef __cplusplus
7282 extern "C" {
7283 #endif /* C++ */
7284 __must_check uint32_t dot11f_unpack_ie_supp_operating_classes(
7285 	tpAniSirGlobal,
7286 	uint8_t *,
7287 	uint8_t,
7288 	tDot11fIESuppOperatingClasses*,
7289 	bool);
7290 
7291 uint32_t dot11f_pack_ie_supp_operating_classes(
7292 	tpAniSirGlobal,
7293 	tDot11fIESuppOperatingClasses *,
7294 	uint8_t *,
7295 	uint32_t,
7296 	uint32_t*);
7297 
7298 uint32_t dot11f_get_packed_ie_SuppOperatingClasses(
7299 	tpAniSirGlobal,
7300 	tDot11fIESuppOperatingClasses *,
7301 	uint32_t*);
7302 
7303 #ifdef __cplusplus
7304 }; /* End extern "C". */
7305 #endif /* C++ */
7306 
7307 /* EID 1 (0x01) */
7308 typedef struct sDot11fIESuppRates {
7309 	uint8_t             present;
7310 	uint8_t             num_rates;
7311 	uint8_t             rates[12];
7312 } tDot11fIESuppRates;
7313 
7314 #define DOT11F_EID_SUPPRATES (1)
7315 
7316 /* N.B. These #defines do *not* include the EID & length */
7317 #define DOT11F_IE_SUPPRATES_MIN_LEN (0)
7318 
7319 #define DOT11F_IE_SUPPRATES_MAX_LEN (12)
7320 
7321 #define DOT11F_IS_BG_RATE(_x)  (((_x) == 02) || \
7322 				((_x) == 04) || \
7323 				((_x) == 11) || \
7324 				((_x) == 22) || \
7325 				((_x) == 12) || \
7326 				((_x) == 18) || \
7327 				((_x) == 24) || \
7328 				((_x) == 36) || \
7329 				((_x) == 48) || \
7330 				((_x) == 72) || \
7331 				((_x) == 96) || \
7332 				((_x) == 108))
7333 
7334 #ifdef __cplusplus
7335 extern "C" {
7336 #endif /* C++ */
7337 __must_check uint32_t dot11f_unpack_ie_supp_rates(
7338 	tpAniSirGlobal,
7339 	uint8_t *,
7340 	uint8_t,
7341 	tDot11fIESuppRates*,
7342 	bool);
7343 
7344 uint32_t dot11f_pack_ie_supp_rates(
7345 	tpAniSirGlobal,
7346 	tDot11fIESuppRates *,
7347 	uint8_t *,
7348 	uint32_t,
7349 	uint32_t*);
7350 
7351 uint32_t dot11f_get_packed_ie_SuppRates(
7352 	tpAniSirGlobal,
7353 	tDot11fIESuppRates *,
7354 	uint32_t*);
7355 
7356 #ifdef __cplusplus
7357 }; /* End extern "C". */
7358 #endif /* C++ */
7359 
7360 /* EID 5 (0x05) */
7361 typedef struct sDot11fIETIM {
7362 	uint8_t             present;
7363 	uint8_t             dtim_count;
7364 	uint8_t             dtim_period;
7365 	uint8_t             bmpctl;
7366 	uint8_t             num_vbmp;
7367 	uint8_t             vbmp[251];
7368 } tDot11fIETIM;
7369 
7370 #define DOT11F_EID_TIM (5)
7371 
7372 /* N.B. These #defines do *not* include the EID & length */
7373 #define DOT11F_IE_TIM_MIN_LEN (4)
7374 
7375 #define DOT11F_IE_TIM_MAX_LEN (254)
7376 
7377 #ifdef __cplusplus
7378 extern "C" {
7379 #endif /* C++ */
7380 __must_check uint32_t dot11f_unpack_ie_tim(
7381 	tpAniSirGlobal,
7382 	uint8_t *,
7383 	uint8_t,
7384 	tDot11fIETIM*,
7385 	bool);
7386 
7387 uint32_t dot11f_pack_ie_tim(
7388 	tpAniSirGlobal,
7389 	tDot11fIETIM *,
7390 	uint8_t *,
7391 	uint32_t,
7392 	uint32_t*);
7393 
7394 uint32_t dot11f_get_packed_ie_TIM(
7395 	tpAniSirGlobal,
7396 	tDot11fIETIM *,
7397 	uint32_t*);
7398 
7399 #ifdef __cplusplus
7400 }; /* End extern "C". */
7401 #endif /* C++ */
7402 
7403 /* EID 35 (0x23) */
7404 typedef struct sDot11fIETPCReport {
7405 	uint8_t             present;
7406 	uint8_t             tx_power;
7407 	uint8_t             link_margin;
7408 } tDot11fIETPCReport;
7409 
7410 #define DOT11F_EID_TPCREPORT (35)
7411 
7412 /* N.B. These #defines do *not* include the EID & length */
7413 #define DOT11F_IE_TPCREPORT_MIN_LEN (2)
7414 
7415 #define DOT11F_IE_TPCREPORT_MAX_LEN (2)
7416 
7417 #ifdef __cplusplus
7418 extern "C" {
7419 #endif /* C++ */
7420 __must_check uint32_t dot11f_unpack_ie_tpc_report(
7421 	tpAniSirGlobal,
7422 	uint8_t *,
7423 	uint8_t,
7424 	tDot11fIETPCReport*,
7425 	bool);
7426 
7427 uint32_t dot11f_pack_ie_tpc_report(
7428 	tpAniSirGlobal,
7429 	tDot11fIETPCReport *,
7430 	uint8_t *,
7431 	uint32_t,
7432 	uint32_t*);
7433 
7434 uint32_t dot11f_get_packed_ie_TPCReport(
7435 	tpAniSirGlobal,
7436 	tDot11fIETPCReport *,
7437 	uint32_t*);
7438 
7439 #ifdef __cplusplus
7440 }; /* End extern "C". */
7441 #endif /* C++ */
7442 
7443 /* EID 34 (0x22) */
7444 typedef struct sDot11fIETPCRequest {
7445 	uint8_t             present;
7446 } tDot11fIETPCRequest;
7447 
7448 #define DOT11F_EID_TPCREQUEST (34)
7449 
7450 /* N.B. These #defines do *not* include the EID & length */
7451 #define DOT11F_IE_TPCREQUEST_MIN_LEN (0)
7452 
7453 #define DOT11F_IE_TPCREQUEST_MAX_LEN (0)
7454 
7455 #ifdef __cplusplus
7456 extern "C" {
7457 #endif /* C++ */
7458 __must_check uint32_t dot11f_unpack_ie_tpc_request(
7459 	tpAniSirGlobal,
7460 	uint8_t *,
7461 	uint8_t,
7462 	tDot11fIETPCRequest*,
7463 	bool);
7464 
7465 uint32_t dot11f_pack_ie_tpc_request(
7466 	tpAniSirGlobal,
7467 	tDot11fIETPCRequest *,
7468 	uint8_t *,
7469 	uint32_t,
7470 	uint32_t*);
7471 
7472 uint32_t dot11f_get_packed_ie_TPCRequest(
7473 	tpAniSirGlobal,
7474 	tDot11fIETPCRequest *,
7475 	uint32_t*);
7476 
7477 #ifdef __cplusplus
7478 }; /* End extern "C". */
7479 #endif /* C++ */
7480 
7481 /* EID 69 (0x45) */
7482 typedef struct sDot11fIETimeAdvertisement {
7483 	uint8_t             present;
7484 	uint8_t             timing_capabilities;
7485 	uint8_t             time_value[10];
7486 	uint8_t             time_error[5];
7487 } tDot11fIETimeAdvertisement;
7488 
7489 #define DOT11F_EID_TIMEADVERTISEMENT (69)
7490 
7491 /* N.B. These #defines do *not* include the EID & length */
7492 #define DOT11F_IE_TIMEADVERTISEMENT_MIN_LEN (16)
7493 
7494 #define DOT11F_IE_TIMEADVERTISEMENT_MAX_LEN (16)
7495 
7496 #ifdef __cplusplus
7497 extern "C" {
7498 #endif /* C++ */
7499 __must_check uint32_t dot11f_unpack_ie_time_advertisement(
7500 	tpAniSirGlobal,
7501 	uint8_t *,
7502 	uint8_t,
7503 	tDot11fIETimeAdvertisement*,
7504 	bool);
7505 
7506 uint32_t dot11f_pack_ie_time_advertisement(
7507 	tpAniSirGlobal,
7508 	tDot11fIETimeAdvertisement *,
7509 	uint8_t *,
7510 	uint32_t,
7511 	uint32_t*);
7512 
7513 uint32_t dot11f_get_packed_ie_time_advertisement(
7514 	tpAniSirGlobal,
7515 	tDot11fIETimeAdvertisement *,
7516 	uint32_t*);
7517 
7518 #ifdef __cplusplus
7519 }; /* End extern "C". */
7520 #endif /* C++ */
7521 
7522 /* EID 56 (0x38) */
7523 typedef struct sDot11fIETimeoutInterval {
7524 	uint8_t             present;
7525 	uint8_t             timeoutType;
7526 	uint32_t            timeoutValue;
7527 } tDot11fIETimeoutInterval;
7528 
7529 #define DOT11F_EID_TIMEOUTINTERVAL (56)
7530 
7531 /* N.B. These #defines do *not* include the EID & length */
7532 #define DOT11F_IE_TIMEOUTINTERVAL_MIN_LEN (5)
7533 
7534 #define DOT11F_IE_TIMEOUTINTERVAL_MAX_LEN (5)
7535 
7536 #ifdef __cplusplus
7537 extern "C" {
7538 #endif /* C++ */
7539 __must_check uint32_t dot11f_unpack_ie_timeout_interval(
7540 	tpAniSirGlobal,
7541 	uint8_t *,
7542 	uint8_t,
7543 	tDot11fIETimeoutInterval*,
7544 	bool);
7545 
7546 uint32_t dot11f_pack_ie_timeout_interval(
7547 	tpAniSirGlobal,
7548 	tDot11fIETimeoutInterval *,
7549 	uint8_t *,
7550 	uint32_t,
7551 	uint32_t*);
7552 
7553 uint32_t dot11f_get_packed_ie_TimeoutInterval(
7554 	tpAniSirGlobal,
7555 	tDot11fIETimeoutInterval *,
7556 	uint32_t*);
7557 
7558 #ifdef __cplusplus
7559 }; /* End extern "C". */
7560 #endif /* C++ */
7561 
7562 /* EID 193 (0xc1) */
7563 typedef struct sDot11fIEVHTExtBssLoad {
7564 	uint8_t             present;
7565 	uint8_t             muMIMOCapStaCount;
7566 	uint8_t             ssUnderUtil;
7567 	uint8_t             FortyMHzUtil;
7568 	uint8_t             EightyMHzUtil;
7569 	uint8_t             OneSixtyMHzUtil;
7570 } tDot11fIEVHTExtBssLoad;
7571 
7572 #define DOT11F_EID_VHTEXTBSSLOAD (193)
7573 
7574 /* N.B. These #defines do *not* include the EID & length */
7575 #define DOT11F_IE_VHTEXTBSSLOAD_MIN_LEN (5)
7576 
7577 #define DOT11F_IE_VHTEXTBSSLOAD_MAX_LEN (5)
7578 
7579 #ifdef __cplusplus
7580 extern "C" {
7581 #endif /* C++ */
7582 __must_check uint32_t dot11f_unpack_ie_vht_ext_bss_load(
7583 	tpAniSirGlobal,
7584 	uint8_t *,
7585 	uint8_t,
7586 	tDot11fIEVHTExtBssLoad*,
7587 	bool);
7588 
7589 uint32_t dot11f_pack_ie_vht_ext_bss_load(
7590 	tpAniSirGlobal,
7591 	tDot11fIEVHTExtBssLoad *,
7592 	uint8_t *,
7593 	uint32_t,
7594 	uint32_t*);
7595 
7596 uint32_t dot11f_get_packed_ie_VHTExtBssLoad(
7597 	tpAniSirGlobal,
7598 	tDot11fIEVHTExtBssLoad *,
7599 	uint32_t*);
7600 
7601 #ifdef __cplusplus
7602 }; /* End extern "C". */
7603 #endif /* C++ */
7604 
7605 /* EID 221 (0xdd) {OUI 0x00, 0x10, 0x18} */
7606 typedef struct sDot11fIEVendor1IE {
7607 	uint8_t             present;
7608 } tDot11fIEVendor1IE;
7609 
7610 #define DOT11F_EID_VENDOR1IE (221)
7611 
7612 /* N.B. These #defines do *not* include the EID & length */
7613 #define DOT11F_IE_VENDOR1IE_MIN_LEN (3)
7614 
7615 #define DOT11F_IE_VENDOR1IE_MAX_LEN (3)
7616 
7617 #ifdef __cplusplus
7618 extern "C" {
7619 #endif /* C++ */
7620 __must_check uint32_t dot11f_unpack_ie_vendor1_ie(
7621 	tpAniSirGlobal,
7622 	uint8_t *,
7623 	uint8_t,
7624 	tDot11fIEVendor1IE*,
7625 	bool);
7626 
7627 uint32_t dot11f_pack_ie_vendor1_ie(
7628 	tpAniSirGlobal,
7629 	tDot11fIEVendor1IE *,
7630 	uint8_t *,
7631 	uint32_t,
7632 	uint32_t*);
7633 
7634 uint32_t dot11f_get_packed_ie_Vendor1IE(
7635 	tpAniSirGlobal,
7636 	tDot11fIEVendor1IE *,
7637 	uint32_t*);
7638 
7639 #ifdef __cplusplus
7640 }; /* End extern "C". */
7641 #endif /* C++ */
7642 
7643 /* EID 221 (0xdd) {OUI 0x00, 0x16, 0x32} */
7644 typedef struct sDot11fIEVendor3IE {
7645 	uint8_t             present;
7646 } tDot11fIEVendor3IE;
7647 
7648 #define DOT11F_EID_VENDOR3IE (221)
7649 
7650 /* N.B. These #defines do *not* include the EID & length */
7651 #define DOT11F_IE_VENDOR3IE_MIN_LEN (3)
7652 
7653 #define DOT11F_IE_VENDOR3IE_MAX_LEN (3)
7654 
7655 #ifdef __cplusplus
7656 extern "C" {
7657 #endif /* C++ */
7658 __must_check uint32_t dot11f_unpack_ie_vendor3_ie(
7659 	tpAniSirGlobal,
7660 	uint8_t *,
7661 	uint8_t,
7662 	tDot11fIEVendor3IE*,
7663 	bool);
7664 
7665 uint32_t dot11f_pack_ie_vendor3_ie(
7666 	tpAniSirGlobal,
7667 	tDot11fIEVendor3IE *,
7668 	uint8_t *,
7669 	uint32_t,
7670 	uint32_t*);
7671 
7672 uint32_t dot11f_get_packed_ie_Vendor3IE(
7673 	tpAniSirGlobal,
7674 	tDot11fIEVendor3IE *,
7675 	uint32_t*);
7676 
7677 #ifdef __cplusplus
7678 }; /* End extern "C". */
7679 #endif /* C++ */
7680 
7681 /* EID 68 (0x44) */
7682 typedef struct sDot11fIEWAPI {
7683 	uint8_t             present;
7684 	uint16_t            version /* Must be 1! */;
7685 	uint16_t            akm_suite_count;
7686 	uint8_t             akm_suites[4][4];
7687 	uint16_t            unicast_cipher_suite_count;
7688 	uint8_t             unicast_cipher_suites[4][4];
7689 	uint8_t             multicast_cipher_suite[4];
7690 	uint16_t              preauth:1;
7691 	uint16_t             reserved:15;
7692 	uint16_t            bkid_count;
7693 	uint8_t             bkid[4][16];
7694 } tDot11fIEWAPI;
7695 
7696 #define DOT11F_EID_WAPI (68)
7697 
7698 /* N.B. These #defines do *not* include the EID & length */
7699 #define DOT11F_IE_WAPI_MIN_LEN (12)
7700 
7701 #define DOT11F_IE_WAPI_MAX_LEN (110)
7702 
7703 #ifdef __cplusplus
7704 extern "C" {
7705 #endif /* C++ */
7706 __must_check uint32_t dot11f_unpack_ie_wapi(
7707 	tpAniSirGlobal,
7708 	uint8_t *,
7709 	uint8_t,
7710 	tDot11fIEWAPI*,
7711 	bool);
7712 
7713 uint32_t dot11f_pack_ie_wapi(
7714 	tpAniSirGlobal,
7715 	tDot11fIEWAPI *,
7716 	uint8_t *,
7717 	uint32_t,
7718 	uint32_t*);
7719 
7720 uint32_t dot11f_get_packed_iewapi(
7721 	tpAniSirGlobal,
7722 	tDot11fIEWAPI *,
7723 	uint32_t*);
7724 
7725 #ifdef __cplusplus
7726 }; /* End extern "C". */
7727 #endif /* C++ */
7728 
7729 /* EID 68 (0x44) */
7730 typedef struct sDot11fIEWAPIOpaque {
7731 	uint8_t             present;
7732 	uint8_t             num_data;
7733 	uint8_t             data[253];
7734 } tDot11fIEWAPIOpaque;
7735 
7736 #define DOT11F_EID_WAPIOPAQUE (68)
7737 
7738 /* N.B. These #defines do *not* include the EID & length */
7739 #define DOT11F_IE_WAPIOPAQUE_MIN_LEN (6)
7740 
7741 #define DOT11F_IE_WAPIOPAQUE_MAX_LEN (253)
7742 
7743 #ifdef __cplusplus
7744 extern "C" {
7745 #endif /* C++ */
7746 __must_check uint32_t dot11f_unpack_ie_wapi_opaque(
7747 	tpAniSirGlobal,
7748 	uint8_t *,
7749 	uint8_t,
7750 	tDot11fIEWAPIOpaque*,
7751 	bool);
7752 
7753 uint32_t dot11f_pack_ie_wapi_opaque(
7754 	tpAniSirGlobal,
7755 	tDot11fIEWAPIOpaque *,
7756 	uint8_t *,
7757 	uint32_t,
7758 	uint32_t*);
7759 
7760 uint32_t dot11f_get_packed_iewapiOpaque(
7761 	tpAniSirGlobal,
7762 	tDot11fIEWAPIOpaque *,
7763 	uint32_t*);
7764 
7765 #ifdef __cplusplus
7766 }; /* End extern "C". */
7767 #endif /* C++ */
7768 
7769 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x08, 0x00} */
7770 typedef struct sDot11fIEWFATPC {
7771 	uint8_t             present;
7772 	uint8_t             txPower;
7773 	uint8_t             linkMargin;
7774 } tDot11fIEWFATPC;
7775 
7776 #define DOT11F_EID_WFATPC (221)
7777 
7778 /* N.B. These #defines do *not* include the EID & length */
7779 #define DOT11F_IE_WFATPC_MIN_LEN (7)
7780 
7781 #define DOT11F_IE_WFATPC_MAX_LEN (7)
7782 
7783 #ifdef __cplusplus
7784 extern "C" {
7785 #endif /* C++ */
7786 __must_check uint32_t dot11f_unpack_ie_wfatpc(
7787 	tpAniSirGlobal,
7788 	uint8_t *,
7789 	uint8_t,
7790 	tDot11fIEWFATPC*,
7791 	bool);
7792 
7793 uint32_t dot11f_pack_ie_wfatpc(
7794 	tpAniSirGlobal,
7795 	tDot11fIEWFATPC *,
7796 	uint8_t *,
7797 	uint32_t,
7798 	uint32_t*);
7799 
7800 uint32_t dot11f_get_packed_ie_WFATPC(
7801 	tpAniSirGlobal,
7802 	tDot11fIEWFATPC *,
7803 	uint32_t*);
7804 
7805 #ifdef __cplusplus
7806 }; /* End extern "C". */
7807 #endif /* C++ */
7808 
7809 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x0a} */
7810 typedef struct sDot11fIEWFDIEOpaque {
7811 	uint8_t             present;
7812 	uint8_t             num_data;
7813 	uint8_t             data[249];
7814 } tDot11fIEWFDIEOpaque;
7815 
7816 #define DOT11F_EID_WFDIEOPAQUE (221)
7817 
7818 /* N.B. These #defines do *not* include the EID & length */
7819 #define DOT11F_IE_WFDIEOPAQUE_MIN_LEN (6)
7820 
7821 #define DOT11F_IE_WFDIEOPAQUE_MAX_LEN (253)
7822 
7823 #ifdef __cplusplus
7824 extern "C" {
7825 #endif /* C++ */
7826 __must_check uint32_t dot11f_unpack_ie_wfdie_opaque(
7827 	tpAniSirGlobal,
7828 	uint8_t *,
7829 	uint8_t,
7830 	tDot11fIEWFDIEOpaque*,
7831 	bool);
7832 
7833 uint32_t dot11f_pack_ie_wfdie_opaque(
7834 	tpAniSirGlobal,
7835 	tDot11fIEWFDIEOpaque *,
7836 	uint8_t *,
7837 	uint32_t,
7838 	uint32_t*);
7839 
7840 uint32_t dot11f_get_packed_ie_WFDIEOpaque(
7841 	tpAniSirGlobal,
7842 	tDot11fIEWFDIEOpaque *,
7843 	uint32_t*);
7844 
7845 #ifdef __cplusplus
7846 }; /* End extern "C". */
7847 #endif /* C++ */
7848 
7849 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05} */
7850 typedef struct sDot11fIEWMMCaps {
7851 	uint8_t             present;
7852 	uint8_t             version /* Must be 1! */;
7853 	uint8_t             reserved:4;
7854 	uint8_t                 qack:1;
7855 	uint8_t        queue_request:1;
7856 	uint8_t         txop_request:1;
7857 	uint8_t             more_ack:1;
7858 } tDot11fIEWMMCaps;
7859 
7860 #define DOT11F_EID_WMMCAPS (221)
7861 
7862 /* N.B. These #defines do *not* include the EID & length */
7863 #define DOT11F_IE_WMMCAPS_MIN_LEN (7)
7864 
7865 #define DOT11F_IE_WMMCAPS_MAX_LEN (7)
7866 
7867 #ifdef __cplusplus
7868 extern "C" {
7869 #endif /* C++ */
7870 __must_check uint32_t dot11f_unpack_ie_wmm_caps(
7871 	tpAniSirGlobal,
7872 	uint8_t *,
7873 	uint8_t,
7874 	tDot11fIEWMMCaps*,
7875 	bool);
7876 
7877 uint32_t dot11f_pack_ie_wmm_caps(
7878 	tpAniSirGlobal,
7879 	tDot11fIEWMMCaps *,
7880 	uint8_t *,
7881 	uint32_t,
7882 	uint32_t*);
7883 
7884 uint32_t dot11f_get_packed_ie_WMMCaps(
7885 	tpAniSirGlobal,
7886 	tDot11fIEWMMCaps *,
7887 	uint32_t*);
7888 
7889 #ifdef __cplusplus
7890 }; /* End extern "C". */
7891 #endif /* C++ */
7892 
7893 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
7894 typedef struct sDot11fIEWMMInfoAp {
7895 	uint8_t             present;
7896 	uint8_t             version;
7897 	uint8_t      param_set_count:4;
7898 	uint8_t             reserved:3;
7899 	uint8_t                uapsd:1;
7900 } tDot11fIEWMMInfoAp;
7901 
7902 #define DOT11F_EID_WMMINFOAP (221)
7903 
7904 /* N.B. These #defines do *not* include the EID & length */
7905 #define DOT11F_IE_WMMINFOAP_MIN_LEN (7)
7906 
7907 #define DOT11F_IE_WMMINFOAP_MAX_LEN (7)
7908 
7909 #ifdef __cplusplus
7910 extern "C" {
7911 #endif /* C++ */
7912 __must_check uint32_t dot11f_unpack_ie_wmm_info_ap(
7913 	tpAniSirGlobal,
7914 	uint8_t *,
7915 	uint8_t,
7916 	tDot11fIEWMMInfoAp*,
7917 	bool);
7918 
7919 uint32_t dot11f_pack_ie_wmm_info_ap(
7920 	tpAniSirGlobal,
7921 	tDot11fIEWMMInfoAp *,
7922 	uint8_t *,
7923 	uint32_t,
7924 	uint32_t*);
7925 
7926 uint32_t dot11f_get_packed_ie_WMMInfoAp(
7927 	tpAniSirGlobal,
7928 	tDot11fIEWMMInfoAp *,
7929 	uint32_t*);
7930 
7931 #ifdef __cplusplus
7932 }; /* End extern "C". */
7933 #endif /* C++ */
7934 
7935 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
7936 typedef struct sDot11fIEWMMInfoStation {
7937 	uint8_t             present;
7938 	uint8_t             version;
7939 	uint8_t           acvo_uapsd:1;
7940 	uint8_t           acvi_uapsd:1;
7941 	uint8_t           acbk_uapsd:1;
7942 	uint8_t           acbe_uapsd:1;
7943 	uint8_t            reserved1:1;
7944 	uint8_t        max_sp_length:2;
7945 	uint8_t            reserved2:1;
7946 } tDot11fIEWMMInfoStation;
7947 
7948 #define DOT11F_EID_WMMINFOSTATION (221)
7949 
7950 /* N.B. These #defines do *not* include the EID & length */
7951 #define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7)
7952 
7953 #define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7)
7954 
7955 #ifdef __cplusplus
7956 extern "C" {
7957 #endif /* C++ */
7958 __must_check uint32_t dot11f_unpack_ie_wmm_info_station(
7959 	tpAniSirGlobal,
7960 	uint8_t *,
7961 	uint8_t,
7962 	tDot11fIEWMMInfoStation*,
7963 	bool);
7964 
7965 uint32_t dot11f_pack_ie_wmm_info_station(
7966 	tpAniSirGlobal,
7967 	tDot11fIEWMMInfoStation *,
7968 	uint8_t *,
7969 	uint32_t,
7970 	uint32_t*);
7971 
7972 uint32_t dot11f_get_packed_ie_WMMInfoStation(
7973 	tpAniSirGlobal,
7974 	tDot11fIEWMMInfoStation *,
7975 	uint32_t*);
7976 
7977 #ifdef __cplusplus
7978 }; /* End extern "C". */
7979 #endif /* C++ */
7980 
7981 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01} */
7982 typedef struct sDot11fIEWMMParams {
7983 	uint8_t             present;
7984 	uint8_t             version /* Must be 1! */;
7985 	uint8_t             qosInfo;
7986 	uint8_t             reserved2;
7987 	uint8_t           acbe_aifsn:4;
7988 	uint8_t             acbe_acm:1;
7989 	uint8_t             acbe_aci:2;
7990 	uint8_t              unused1:1;
7991 	uint8_t          acbe_acwmin:4;
7992 	uint8_t          acbe_acwmax:4;
7993 	uint16_t            acbe_txoplimit;
7994 	uint8_t           acbk_aifsn:4;
7995 	uint8_t             acbk_acm:1;
7996 	uint8_t             acbk_aci:2;
7997 	uint8_t              unused2:1;
7998 	uint8_t          acbk_acwmin:4;
7999 	uint8_t          acbk_acwmax:4;
8000 	uint16_t            acbk_txoplimit;
8001 	uint8_t           acvi_aifsn:4;
8002 	uint8_t             acvi_acm:1;
8003 	uint8_t             acvi_aci:2;
8004 	uint8_t              unused3:1;
8005 	uint8_t          acvi_acwmin:4;
8006 	uint8_t          acvi_acwmax:4;
8007 	uint16_t            acvi_txoplimit;
8008 	uint8_t           acvo_aifsn:4;
8009 	uint8_t             acvo_acm:1;
8010 	uint8_t             acvo_aci:2;
8011 	uint8_t              unused4:1;
8012 	uint8_t          acvo_acwmin:4;
8013 	uint8_t          acvo_acwmax:4;
8014 	uint16_t            acvo_txoplimit;
8015 } tDot11fIEWMMParams;
8016 
8017 #define DOT11F_EID_WMMPARAMS (221)
8018 
8019 /* N.B. These #defines do *not* include the EID & length */
8020 #define DOT11F_IE_WMMPARAMS_MIN_LEN (24)
8021 
8022 #define DOT11F_IE_WMMPARAMS_MAX_LEN (24)
8023 
8024 #ifdef __cplusplus
8025 extern "C" {
8026 #endif /* C++ */
8027 __must_check uint32_t dot11f_unpack_ie_wmm_params(
8028 	tpAniSirGlobal,
8029 	uint8_t *,
8030 	uint8_t,
8031 	tDot11fIEWMMParams*,
8032 	bool);
8033 
8034 uint32_t dot11f_pack_ie_wmm_params(
8035 	tpAniSirGlobal,
8036 	tDot11fIEWMMParams *,
8037 	uint8_t *,
8038 	uint32_t,
8039 	uint32_t*);
8040 
8041 uint32_t dot11f_get_packed_ie_WMMParams(
8042 	tpAniSirGlobal,
8043 	tDot11fIEWMMParams *,
8044 	uint32_t*);
8045 
8046 #ifdef __cplusplus
8047 }; /* End extern "C". */
8048 #endif /* C++ */
8049 
8050 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */
8051 typedef struct sDot11fIEWPA {
8052 	uint8_t             present;
8053 	uint16_t            version /* Must be 1! */;
8054 	/* field added to fix the bug in dot11fPackIEWPA */
8055 	uint8_t             multicast_cipher_present;
8056 	uint8_t             multicast_cipher[4];
8057 	uint16_t            unicast_cipher_count;
8058 	uint8_t             unicast_ciphers[4][4];
8059 	uint16_t            auth_suite_count;
8060 	uint8_t             auth_suites[4][4];
8061 	uint16_t            caps;
8062 } tDot11fIEWPA;
8063 
8064 #define DOT11F_EID_WPA (221)
8065 
8066 /* N.B. These #defines do *not* include the EID & length */
8067 #define DOT11F_IE_WPA_MIN_LEN (6)
8068 
8069 #define DOT11F_IE_WPA_MAX_LEN (48)
8070 
8071 #ifdef __cplusplus
8072 extern "C" {
8073 #endif /* C++ */
8074 __must_check uint32_t dot11f_unpack_ie_wpa(
8075 	tpAniSirGlobal,
8076 	uint8_t *,
8077 	uint8_t,
8078 	tDot11fIEWPA*,
8079 	bool);
8080 
8081 uint32_t dot11f_pack_ie_wpa(
8082 	tpAniSirGlobal,
8083 	tDot11fIEWPA *,
8084 	uint8_t *,
8085 	uint32_t,
8086 	uint32_t*);
8087 
8088 uint32_t dot11f_get_packed_iewpa(
8089 	tpAniSirGlobal,
8090 	tDot11fIEWPA *,
8091 	uint32_t*);
8092 
8093 #ifdef __cplusplus
8094 }; /* End extern "C". */
8095 #endif /* C++ */
8096 
8097 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */
8098 typedef struct sDot11fIEWPAOpaque {
8099 	uint8_t             present;
8100 	uint8_t             num_data;
8101 	uint8_t             data[249];
8102 } tDot11fIEWPAOpaque;
8103 
8104 #define DOT11F_EID_WPAOPAQUE (221)
8105 
8106 /* N.B. These #defines do *not* include the EID & length */
8107 #define DOT11F_IE_WPAOPAQUE_MIN_LEN (6)
8108 
8109 #define DOT11F_IE_WPAOPAQUE_MAX_LEN (253)
8110 
8111 #ifdef __cplusplus
8112 extern "C" {
8113 #endif /* C++ */
8114 __must_check uint32_t dot11f_unpack_ie_wpa_opaque(
8115 	tpAniSirGlobal,
8116 	uint8_t *,
8117 	uint8_t,
8118 	tDot11fIEWPAOpaque*,
8119 	bool);
8120 
8121 uint32_t dot11f_pack_ie_wpa_opaque(
8122 	tpAniSirGlobal,
8123 	tDot11fIEWPAOpaque *,
8124 	uint8_t *,
8125 	uint32_t,
8126 	uint32_t*);
8127 
8128 uint32_t dot11f_get_packed_iewpaOpaque(
8129 	tpAniSirGlobal,
8130 	tDot11fIEWPAOpaque *,
8131 	uint32_t*);
8132 
8133 #ifdef __cplusplus
8134 }; /* End extern "C". */
8135 #endif /* C++ */
8136 
8137 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8138 typedef struct sDot11fIEWSC {
8139 	uint8_t             present;
8140 	tDot11fTLVVersion   Version;
8141 	tDot11fTLVWPSState  WPSState;
8142 	tDot11fTLVAPSetupLocked APSetupLocked;
8143 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8144 	tDot11fTLVUUID_E    UUID_E;
8145 	tDot11fTLVUUID_R    UUID_R;
8146 	tDot11fTLVRFBands   RFBands;
8147 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8148 	tDot11fTLVConfigMethods ConfigMethods;
8149 	tDot11fTLVAssociationState AssociationState;
8150 	tDot11fTLVConfigurationError ConfigurationError;
8151 	tDot11fTLVManufacturer Manufacturer;
8152 	tDot11fTLVModelName ModelName;
8153 	tDot11fTLVModelNumber ModelNumber;
8154 	tDot11fTLVSerialNumber SerialNumber;
8155 	tDot11fTLVDeviceName DeviceName;
8156 	tDot11fTLVDevicePasswordID DevicePasswordID;
8157 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8158 	tDot11fTLVRequestType RequestType;
8159 	tDot11fTLVResponseType ResponseType;
8160 	tDot11fTLVVendorExtension VendorExtension;
8161 	tDot11fTLVRequestDeviceType RequestDeviceType;
8162 } tDot11fIEWSC;
8163 
8164 #define DOT11F_EID_WSC (221)
8165 
8166 /* N.B. These #defines do *not* include the EID & length */
8167 #define DOT11F_IE_WSC_MIN_LEN (4)
8168 
8169 #define DOT11F_IE_WSC_MAX_LEN (366)
8170 
8171 #ifdef __cplusplus
8172 extern "C" {
8173 #endif /* C++ */
8174 __must_check uint32_t dot11f_unpack_ie_wsc(
8175 	tpAniSirGlobal,
8176 	uint8_t *,
8177 	uint8_t,
8178 	tDot11fIEWSC*,
8179 	bool);
8180 
8181 uint32_t dot11f_pack_ie_wsc(
8182 	tpAniSirGlobal,
8183 	tDot11fIEWSC *,
8184 	uint8_t *,
8185 	uint32_t,
8186 	uint32_t*);
8187 
8188 uint32_t dot11f_get_packed_iewsc(
8189 	tpAniSirGlobal,
8190 	tDot11fIEWSC *,
8191 	uint32_t*);
8192 
8193 #ifdef __cplusplus
8194 }; /* End extern "C". */
8195 #endif /* C++ */
8196 
8197 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8198 typedef struct sDot11fIEWscAssocReq {
8199 	uint8_t             present;
8200 	tDot11fTLVVersion   Version;
8201 	tDot11fTLVRequestType RequestType;
8202 	tDot11fTLVVendorExtension VendorExtension;
8203 } tDot11fIEWscAssocReq;
8204 
8205 #define DOT11F_EID_WSCASSOCREQ (221)
8206 
8207 /* N.B. These #defines do *not* include the EID & length */
8208 #define DOT11F_IE_WSCASSOCREQ_MIN_LEN (4)
8209 
8210 #define DOT11F_IE_WSCASSOCREQ_MAX_LEN (35)
8211 
8212 #ifdef __cplusplus
8213 extern "C" {
8214 #endif /* C++ */
8215 __must_check uint32_t dot11f_unpack_ie_wsc_assoc_req(
8216 	tpAniSirGlobal,
8217 	uint8_t *,
8218 	uint8_t,
8219 	tDot11fIEWscAssocReq*,
8220 	bool);
8221 
8222 uint32_t dot11f_pack_ie_wsc_assoc_req(
8223 	tpAniSirGlobal,
8224 	tDot11fIEWscAssocReq *,
8225 	uint8_t *,
8226 	uint32_t,
8227 	uint32_t*);
8228 
8229 uint32_t dot11f_get_packed_ie_wsc_assoc_req(
8230 	tpAniSirGlobal,
8231 	tDot11fIEWscAssocReq *,
8232 	uint32_t*);
8233 
8234 #ifdef __cplusplus
8235 }; /* End extern "C". */
8236 #endif /* C++ */
8237 
8238 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8239 typedef struct sDot11fIEWscAssocRes {
8240 	uint8_t             present;
8241 	tDot11fTLVVersion   Version;
8242 	tDot11fTLVResponseType ResponseType;
8243 	tDot11fTLVVendorExtension VendorExtension;
8244 } tDot11fIEWscAssocRes;
8245 
8246 #define DOT11F_EID_WSCASSOCRES (221)
8247 
8248 /* N.B. These #defines do *not* include the EID & length */
8249 #define DOT11F_IE_WSCASSOCRES_MIN_LEN (4)
8250 
8251 #define DOT11F_IE_WSCASSOCRES_MAX_LEN (35)
8252 
8253 #ifdef __cplusplus
8254 extern "C" {
8255 #endif /* C++ */
8256 __must_check uint32_t dot11f_unpack_ie_wsc_assoc_res(
8257 	tpAniSirGlobal,
8258 	uint8_t *,
8259 	uint8_t,
8260 	tDot11fIEWscAssocRes*,
8261 	bool);
8262 
8263 uint32_t dot11f_pack_ie_wsc_assoc_res(
8264 	tpAniSirGlobal,
8265 	tDot11fIEWscAssocRes *,
8266 	uint8_t *,
8267 	uint32_t,
8268 	uint32_t*);
8269 
8270 uint32_t dot11f_get_packed_ie_wsc_assoc_res(
8271 	tpAniSirGlobal,
8272 	tDot11fIEWscAssocRes *,
8273 	uint32_t*);
8274 
8275 #ifdef __cplusplus
8276 }; /* End extern "C". */
8277 #endif /* C++ */
8278 
8279 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8280 typedef struct sDot11fIEWscBeacon {
8281 	uint8_t             present;
8282 	tDot11fTLVVersion   Version;
8283 	tDot11fTLVWPSState  WPSState;
8284 	tDot11fTLVAPSetupLocked APSetupLocked;
8285 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8286 	tDot11fTLVDevicePasswordID DevicePasswordID;
8287 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8288 	tDot11fTLVUUID_E    UUID_E;
8289 	tDot11fTLVRFBands   RFBands;
8290 	tDot11fTLVVendorExtension VendorExtension;
8291 } tDot11fIEWscBeacon;
8292 
8293 #define DOT11F_EID_WSCBEACON (221)
8294 
8295 /* N.B. These #defines do *not* include the EID & length */
8296 #define DOT11F_IE_WSCBEACON_MIN_LEN (4)
8297 
8298 #define DOT11F_IE_WSCBEACON_MAX_LEN (82)
8299 
8300 #ifdef __cplusplus
8301 extern "C" {
8302 #endif /* C++ */
8303 __must_check uint32_t dot11f_unpack_ie_wsc_beacon(
8304 	tpAniSirGlobal,
8305 	uint8_t *,
8306 	uint8_t,
8307 	tDot11fIEWscBeacon*,
8308 	bool);
8309 
8310 uint32_t dot11f_pack_ie_wsc_beacon(
8311 	tpAniSirGlobal,
8312 	tDot11fIEWscBeacon *,
8313 	uint8_t *,
8314 	uint32_t,
8315 	uint32_t*);
8316 
8317 uint32_t dot11f_get_packed_ie_wsc_beacon(
8318 	tpAniSirGlobal,
8319 	tDot11fIEWscBeacon *,
8320 	uint32_t*);
8321 
8322 #ifdef __cplusplus
8323 }; /* End extern "C". */
8324 #endif /* C++ */
8325 
8326 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8327 typedef struct sDot11fIEWscBeaconProbeRes {
8328 	uint8_t             present;
8329 	tDot11fTLVVersion   Version;
8330 	tDot11fTLVWPSState  WPSState;
8331 	tDot11fTLVAPSetupLocked APSetupLocked;
8332 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8333 	tDot11fTLVDevicePasswordID DevicePasswordID;
8334 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8335 	tDot11fTLVResponseType ResponseType;
8336 	tDot11fTLVUUID_E    UUID_E;
8337 	tDot11fTLVManufacturer Manufacturer;
8338 	tDot11fTLVModelName ModelName;
8339 	tDot11fTLVModelNumber ModelNumber;
8340 	tDot11fTLVSerialNumber SerialNumber;
8341 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8342 	tDot11fTLVDeviceName DeviceName;
8343 	tDot11fTLVConfigMethods ConfigMethods;
8344 	tDot11fTLVRFBands   RFBands;
8345 	tDot11fTLVVendorExtension VendorExtension;
8346 } tDot11fIEWscBeaconProbeRes;
8347 
8348 #define DOT11F_EID_WSCBEACONPROBERES (221)
8349 
8350 /* N.B. These #defines do *not* include the EID & length */
8351 #define DOT11F_IE_WSCBEACONPROBERES_MIN_LEN (4)
8352 
8353 #define DOT11F_IE_WSCBEACONPROBERES_MAX_LEN (317)
8354 
8355 #ifdef __cplusplus
8356 extern "C" {
8357 #endif /* C++ */
8358 __must_check uint32_t dot11f_unpack_ie_wsc_beacon_probe_res(
8359 	tpAniSirGlobal,
8360 	uint8_t *,
8361 	uint8_t,
8362 	tDot11fIEWscBeaconProbeRes*,
8363 	bool);
8364 
8365 uint32_t dot11f_pack_ie_wsc_beacon_probe_res(
8366 	tpAniSirGlobal,
8367 	tDot11fIEWscBeaconProbeRes *,
8368 	uint8_t *,
8369 	uint32_t,
8370 	uint32_t*);
8371 
8372 uint32_t dot11f_get_packed_ie_wsc_beacon_probe_res(
8373 	tpAniSirGlobal,
8374 	tDot11fIEWscBeaconProbeRes *,
8375 	uint32_t*);
8376 
8377 #ifdef __cplusplus
8378 }; /* End extern "C". */
8379 #endif /* C++ */
8380 
8381 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} */
8382 typedef struct sDot11fIEWscIEOpaque {
8383 	uint8_t             present;
8384 	uint8_t             num_data;
8385 	uint8_t             data[249];
8386 } tDot11fIEWscIEOpaque;
8387 
8388 #define DOT11F_EID_WSCIEOPAQUE (221)
8389 
8390 /* N.B. These #defines do *not* include the EID & length */
8391 #define DOT11F_IE_WSCIEOPAQUE_MIN_LEN (6)
8392 
8393 #define DOT11F_IE_WSCIEOPAQUE_MAX_LEN (253)
8394 
8395 #ifdef __cplusplus
8396 extern "C" {
8397 #endif /* C++ */
8398 __must_check uint32_t dot11f_unpack_ie_wsc_ie_opaque(
8399 	tpAniSirGlobal,
8400 	uint8_t *,
8401 	uint8_t,
8402 	tDot11fIEWscIEOpaque*,
8403 	bool);
8404 
8405 uint32_t dot11f_pack_ie_wsc_ie_opaque(
8406 	tpAniSirGlobal,
8407 	tDot11fIEWscIEOpaque *,
8408 	uint8_t *,
8409 	uint32_t,
8410 	uint32_t*);
8411 
8412 uint32_t dot11f_get_packed_ie_WscIEOpaque(
8413 	tpAniSirGlobal,
8414 	tDot11fIEWscIEOpaque *,
8415 	uint32_t*);
8416 
8417 #ifdef __cplusplus
8418 }; /* End extern "C". */
8419 #endif /* C++ */
8420 
8421 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8422 typedef struct sDot11fIEWscProbeReq {
8423 	uint8_t             present;
8424 	tDot11fTLVVersion   Version;
8425 	tDot11fTLVRequestType RequestType;
8426 	tDot11fTLVConfigMethods ConfigMethods;
8427 	tDot11fTLVUUID_E    UUID_E;
8428 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8429 	tDot11fTLVRFBands   RFBands;
8430 	tDot11fTLVAssociationState AssociationState;
8431 	tDot11fTLVConfigurationError ConfigurationError;
8432 	tDot11fTLVDevicePasswordID DevicePasswordID;
8433 	tDot11fTLVManufacturer Manufacturer;
8434 	tDot11fTLVModelName ModelName;
8435 	tDot11fTLVModelNumber ModelNumber;
8436 	tDot11fTLVDeviceName DeviceName;
8437 	tDot11fTLVVendorExtension VendorExtension;
8438 	tDot11fTLVRequestDeviceType RequestDeviceType;
8439 } tDot11fIEWscProbeReq;
8440 
8441 #define DOT11F_EID_WSCPROBEREQ (221)
8442 
8443 /* N.B. These #defines do *not* include the EID & length */
8444 #define DOT11F_IE_WSCPROBEREQ_MIN_LEN (4)
8445 
8446 #define DOT11F_IE_WSCPROBEREQ_MAX_LEN (284)
8447 
8448 #ifdef __cplusplus
8449 extern "C" {
8450 #endif /* C++ */
8451 __must_check uint32_t dot11f_unpack_ie_wsc_probe_req(
8452 	tpAniSirGlobal,
8453 	uint8_t *,
8454 	uint8_t,
8455 	tDot11fIEWscProbeReq*,
8456 	bool);
8457 
8458 uint32_t dot11f_pack_ie_wsc_probe_req(
8459 	tpAniSirGlobal,
8460 	tDot11fIEWscProbeReq *,
8461 	uint8_t *,
8462 	uint32_t,
8463 	uint32_t*);
8464 
8465 uint32_t dot11f_get_packed_ie_wsc_probe_req(
8466 	tpAniSirGlobal,
8467 	tDot11fIEWscProbeReq *,
8468 	uint32_t*);
8469 
8470 #ifdef __cplusplus
8471 }; /* End extern "C". */
8472 #endif /* C++ */
8473 
8474 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8475 typedef struct sDot11fIEWscProbeRes {
8476 	uint8_t             present;
8477 	tDot11fTLVVersion   Version;
8478 	tDot11fTLVWPSState  WPSState;
8479 	tDot11fTLVAPSetupLocked APSetupLocked;
8480 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8481 	tDot11fTLVDevicePasswordID DevicePasswordID;
8482 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8483 	tDot11fTLVResponseType ResponseType;
8484 	tDot11fTLVUUID_E    UUID_E;
8485 	tDot11fTLVManufacturer Manufacturer;
8486 	tDot11fTLVModelName ModelName;
8487 	tDot11fTLVModelNumber ModelNumber;
8488 	tDot11fTLVSerialNumber SerialNumber;
8489 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8490 	tDot11fTLVDeviceName DeviceName;
8491 	tDot11fTLVConfigMethods ConfigMethods;
8492 	tDot11fTLVRFBands   RFBands;
8493 	tDot11fTLVVendorExtension VendorExtension;
8494 } tDot11fIEWscProbeRes;
8495 
8496 #define DOT11F_EID_WSCPROBERES (221)
8497 
8498 /* N.B. These #defines do *not* include the EID & length */
8499 #define DOT11F_IE_WSCPROBERES_MIN_LEN (4)
8500 
8501 #define DOT11F_IE_WSCPROBERES_MAX_LEN (317)
8502 
8503 #ifdef __cplusplus
8504 extern "C" {
8505 #endif /* C++ */
8506 __must_check uint32_t dot11f_unpack_ie_wsc_probe_res(
8507 	tpAniSirGlobal,
8508 	uint8_t *,
8509 	uint8_t,
8510 	tDot11fIEWscProbeRes*,
8511 	bool);
8512 
8513 uint32_t dot11f_pack_ie_wsc_probe_res(
8514 	tpAniSirGlobal,
8515 	tDot11fIEWscProbeRes *,
8516 	uint8_t *,
8517 	uint32_t,
8518 	uint32_t*);
8519 
8520 uint32_t dot11f_get_packed_ie_wsc_probe_res(
8521 	tpAniSirGlobal,
8522 	tDot11fIEWscProbeRes *,
8523 	uint32_t*);
8524 
8525 #ifdef __cplusplus
8526 }; /* End extern "C". */
8527 #endif /* C++ */
8528 
8529 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8530 typedef struct sDot11fIEWscReassocRes {
8531 	uint8_t             present;
8532 	tDot11fTLVVersion   Version;
8533 	tDot11fTLVResponseType ResponseType;
8534 	tDot11fTLVVendorExtension VendorExtension;
8535 } tDot11fIEWscReassocRes;
8536 
8537 #define DOT11F_EID_WSCREASSOCRES (221)
8538 
8539 /* N.B. These #defines do *not* include the EID & length */
8540 #define DOT11F_IE_WSCREASSOCRES_MIN_LEN (4)
8541 
8542 #define DOT11F_IE_WSCREASSOCRES_MAX_LEN (35)
8543 
8544 #ifdef __cplusplus
8545 extern "C" {
8546 #endif /* C++ */
8547 __must_check uint32_t dot11f_unpack_ie_wsc_reassoc_res(
8548 	tpAniSirGlobal,
8549 	uint8_t *,
8550 	uint8_t,
8551 	tDot11fIEWscReassocRes*,
8552 	bool);
8553 
8554 uint32_t dot11f_pack_ie_wsc_reassoc_res(
8555 	tpAniSirGlobal,
8556 	tDot11fIEWscReassocRes *,
8557 	uint8_t *,
8558 	uint32_t,
8559 	uint32_t*);
8560 
8561 uint32_t dot11f_get_packed_ie_wsc_reassoc_res(
8562 	tpAniSirGlobal,
8563 	tDot11fIEWscReassocRes *,
8564 	uint32_t*);
8565 
8566 #ifdef __cplusplus
8567 }; /* End extern "C". */
8568 #endif /* C++ */
8569 
8570 /* EID 159 (0x9f) */
8571 typedef struct sDot11fIEaddba_extn_element {
8572 	uint8_t             present;
8573 	uint8_t     no_fragmentation:1;
8574 	uint8_t    he_frag_operation:2;
8575 	uint8_t             reserved:5;
8576 } tDot11fIEaddba_extn_element;
8577 
8578 #define DOT11F_EID_ADDBA_EXTN_ELEMENT (159)
8579 
8580 /* N.B. These #defines do *not* include the EID & length */
8581 #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MIN_LEN (1)
8582 
8583 #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MAX_LEN (1)
8584 
8585 #ifdef __cplusplus
8586 extern "C" {
8587 #endif /* C++ */
8588 __must_check uint32_t dot11f_unpack_ie_addba_extn_element(
8589 	tpAniSirGlobal,
8590 	uint8_t *,
8591 	uint8_t,
8592 	tDot11fIEaddba_extn_element*,
8593 	bool);
8594 
8595 uint32_t dot11f_pack_ie_addba_extn_element(
8596 	tpAniSirGlobal,
8597 	tDot11fIEaddba_extn_element *,
8598 	uint8_t *,
8599 	uint32_t,
8600 	uint32_t*);
8601 
8602 uint32_t dot11f_get_packed_ie_addba_extn_element(
8603 	tpAniSirGlobal,
8604 	tDot11fIEaddba_extn_element *,
8605 	uint32_t*);
8606 
8607 #ifdef __cplusplus
8608 }; /* End extern "C". */
8609 #endif /* C++ */
8610 
8611 /* EID 255 (0xff) Extended EID 42 (0x2a) */
8612 typedef struct sDot11fIEbss_color_change {
8613 	uint8_t             present;
8614 	uint8_t             countdown;
8615 	uint8_t            new_color:6;
8616 	uint8_t             reserved:2;
8617 } tDot11fIEbss_color_change;
8618 
8619 #define DOT11F_EID_BSS_COLOR_CHANGE (255)
8620 
8621 /* N.B. These #defines do *not* include the EID & length */
8622 #define DOT11F_IE_BSS_COLOR_CHANGE_MIN_LEN (2)
8623 
8624 #define DOT11F_IE_BSS_COLOR_CHANGE_MAX_LEN (2)
8625 
8626 #ifdef __cplusplus
8627 extern "C" {
8628 #endif /* C++ */
8629 __must_check uint32_t dot11f_unpack_ie_bss_color_change(
8630 	tpAniSirGlobal,
8631 	uint8_t *,
8632 	uint8_t,
8633 	tDot11fIEbss_color_change*,
8634 	bool);
8635 
8636 uint32_t dot11f_pack_ie_bss_color_change(
8637 	tpAniSirGlobal,
8638 	tDot11fIEbss_color_change *,
8639 	uint8_t *,
8640 	uint32_t,
8641 	uint32_t*);
8642 
8643 uint32_t dot11f_get_packed_ie_bss_color_change(
8644 	tpAniSirGlobal,
8645 	tDot11fIEbss_color_change *,
8646 	uint32_t*);
8647 
8648 #ifdef __cplusplus
8649 }; /* End extern "C". */
8650 #endif /* C++ */
8651 
8652 /* EID 90 (0x5a) */
8653 typedef struct sDot11fIEbss_max_idle_period {
8654 	uint8_t             present;
8655 	uint16_t            max_idle_period;
8656 	uint8_t prot_keep_alive_reqd:1;
8657 	uint8_t             reserved:7;
8658 } tDot11fIEbss_max_idle_period;
8659 
8660 #define DOT11F_EID_BSS_MAX_IDLE_PERIOD (90)
8661 
8662 /* N.B. These #defines do *not* include the EID & length */
8663 #define DOT11F_IE_BSS_MAX_IDLE_PERIOD_MIN_LEN (3)
8664 
8665 #define DOT11F_IE_BSS_MAX_IDLE_PERIOD_MAX_LEN (3)
8666 
8667 #ifdef __cplusplus
8668 extern "C" {
8669 #endif /* C++ */
8670 __must_check uint32_t dot11f_unpack_ie_bss_max_idle_period(
8671 	tpAniSirGlobal,
8672 	uint8_t *,
8673 	uint8_t,
8674 	tDot11fIEbss_max_idle_period*,
8675 	bool);
8676 
8677 uint32_t dot11f_pack_ie_bss_max_idle_period(
8678 	tpAniSirGlobal,
8679 	tDot11fIEbss_max_idle_period *,
8680 	uint8_t *,
8681 	uint32_t,
8682 	uint32_t*);
8683 
8684 uint32_t dot11f_get_packed_ie_bss_max_idle_period(
8685 	tpAniSirGlobal,
8686 	tDot11fIEbss_max_idle_period *,
8687 	uint32_t*);
8688 
8689 #ifdef __cplusplus
8690 }; /* End extern "C". */
8691 #endif /* C++ */
8692 
8693 /* EID 255 (0xff) Extended EID 88 (0x58) */
8694 typedef struct sDot11fIEdecriptor_element {
8695 	uint8_t                     present;
8696 	uint8_t                     request_type;
8697 	uint16_t                    user_priority_control;
8698 	uint32_t                    stream_timeout;
8699 	tDot11fIEtclas_mask         tclas_mask;
8700 	tDot11fIEmscs_status        mscs_status;
8701 } tDot11fIEdecriptor_element;
8702 
8703 #define DOT11F_EID_DECRIPTOR_ELEMENT (255)
8704 
8705 /* N.B. These #defines do *not* include the EID & length */
8706 #define DOT11F_IE_DECRIPTOR_ELEMENT_MIN_LEN (7)
8707 
8708 #define DOT11F_IE_DECRIPTOR_ELEMENT_MAX_LEN (30)
8709 
8710 #ifdef __cplusplus
8711 extern "C" {
8712 #endif /* C++ */
8713 __must_check uint32_t dot11f_unpack_ie_decriptor_element(
8714 	tpAniSirGlobal,
8715 	uint8_t *,
8716 	uint8_t,
8717 	tDot11fIEdecriptor_element*,
8718 	bool);
8719 
8720 uint32_t dot11f_pack_ie_decriptor_element(
8721 	tpAniSirGlobal,
8722 	tDot11fIEdecriptor_element *,
8723 	uint8_t *,
8724 	uint32_t,
8725 	uint32_t*);
8726 
8727 uint32_t dot11f_get_packed_ie_decriptor_element(
8728 	tpAniSirGlobal,
8729 	tDot11fIEdecriptor_element *,
8730 	uint32_t*);
8731 
8732 #ifdef __cplusplus
8733 }; /* End extern "C". */
8734 #endif /* C++ */
8735 
8736 /* EID 255 (0xff) Extended EID 32 (0x20) */
8737 typedef struct sDot11fIEdh_parameter_element {
8738 	uint8_t             present;
8739 	uint8_t             group[2];
8740 	uint8_t             num_public_key;
8741 	uint8_t             public_key[255];
8742 } tDot11fIEdh_parameter_element;
8743 
8744 #define DOT11F_EID_DH_PARAMETER_ELEMENT (255)
8745 
8746 /* N.B. These #defines do *not* include the EID & length */
8747 #define DOT11F_IE_DH_PARAMETER_ELEMENT_MIN_LEN (2)
8748 
8749 #define DOT11F_IE_DH_PARAMETER_ELEMENT_MAX_LEN (257)
8750 
8751 #ifdef __cplusplus
8752 extern "C" {
8753 #endif /* C++ */
8754 __must_check uint32_t dot11f_unpack_ie_dh_parameter_element(
8755 	tpAniSirGlobal,
8756 	uint8_t *,
8757 	uint8_t,
8758 	tDot11fIEdh_parameter_element*,
8759 	bool);
8760 
8761 uint32_t dot11f_pack_ie_dh_parameter_element(
8762 	tpAniSirGlobal,
8763 	tDot11fIEdh_parameter_element *,
8764 	uint8_t *,
8765 	uint32_t,
8766 	uint32_t*);
8767 
8768 uint32_t dot11f_get_packed_ie_dh_parameter_element(
8769 	tpAniSirGlobal,
8770 	tDot11fIEdh_parameter_element *,
8771 	uint32_t*);
8772 
8773 #ifdef __cplusplus
8774 }; /* End extern "C". */
8775 #endif /* C++ */
8776 
8777 /* EID 255 (0xff) Extended EID 253 (0xfd) */
8778 typedef struct sDot11fIEeht_cap {
8779 	uint8_t             present;
8780 	uint8_t             eht_mac_cap[6];
8781 	uint8_t             phy_cap_bytes[11];
8782 	uint8_t             reserved:1;
8783 	uint8_t supported_ch_width_set:7;
8784 	uint16_t            rx_mcs_map;
8785 	uint16_t            tx_mcs_map;
8786 } tDot11fIEeht_cap;
8787 
8788 #define DOT11F_EID_EHT_CAP (255)
8789 
8790 /* N.B. These #defines do *not* include the EID & length */
8791 #define DOT11F_IE_EHT_CAP_MIN_LEN (22)
8792 
8793 #define DOT11F_IE_EHT_CAP_MAX_LEN (22)
8794 
8795 #ifdef __cplusplus
8796 extern "C" {
8797 #endif /* C++ */
8798 __must_check uint32_t dot11f_unpack_ie_eht_cap(
8799 	tpAniSirGlobal,
8800 	uint8_t *,
8801 	uint8_t,
8802 	tDot11fIEeht_cap*,
8803 	bool);
8804 
8805 uint32_t dot11f_pack_ie_eht_cap(
8806 	tpAniSirGlobal,
8807 	tDot11fIEeht_cap *,
8808 	uint8_t *,
8809 	uint32_t,
8810 	uint32_t*);
8811 
8812 uint32_t dot11f_get_packed_ie_eht_cap(
8813 	tpAniSirGlobal,
8814 	tDot11fIEeht_cap *,
8815 	uint32_t*);
8816 
8817 #ifdef __cplusplus
8818 }; /* End extern "C". */
8819 #endif /* C++ */
8820 
8821 /* EID 255 (0xff) Extended EID 254 (0xfe) */
8822 typedef struct sDot11fIEeht_op {
8823 	uint8_t             present;
8824 	uint8_t             basic_mcs_nss_set[2];
8825 	uint8_t             primary_channel;
8826 	uint8_t                width:3;
8827 	uint8_t             reserved:5;
8828 	uint8_t             chan_freq_seg0;
8829 	uint8_t             chan_freq_seg1;
8830 	uint8_t             minimum_rate;
8831 } tDot11fIEeht_op;
8832 
8833 #define DOT11F_EID_EHT_OP (255)
8834 
8835 /* N.B. These #defines do *not* include the EID & length */
8836 #define DOT11F_IE_EHT_OP_MIN_LEN (7)
8837 
8838 #define DOT11F_IE_EHT_OP_MAX_LEN (7)
8839 
8840 #ifdef __cplusplus
8841 extern "C" {
8842 #endif /* C++ */
8843 __must_check uint32_t dot11f_unpack_ie_eht_op(
8844 	tpAniSirGlobal,
8845 	uint8_t *,
8846 	uint8_t,
8847 	tDot11fIEeht_op*,
8848 	bool);
8849 
8850 uint32_t dot11f_pack_ie_eht_op(
8851 	tpAniSirGlobal,
8852 	tDot11fIEeht_op *,
8853 	uint8_t *,
8854 	uint32_t,
8855 	uint32_t*);
8856 
8857 uint32_t dot11f_get_packed_ie_eht_op(
8858 	tpAniSirGlobal,
8859 	tDot11fIEeht_op *,
8860 	uint32_t*);
8861 
8862 #ifdef __cplusplus
8863 }; /* End extern "C". */
8864 #endif /* C++ */
8865 
8866 /* EID 255 (0xff) Extended EID 11 (0x0b) */
8867 typedef struct sDot11fIEesp_information {
8868 	uint8_t             present;
8869 	uint8_t             num_data;
8870 	uint8_t             data[96];
8871 } tDot11fIEesp_information;
8872 
8873 #define DOT11F_EID_ESP_INFORMATION (255)
8874 
8875 /* N.B. These #defines do *not* include the EID & length */
8876 #define DOT11F_IE_ESP_INFORMATION_MIN_LEN (0)
8877 
8878 #define DOT11F_IE_ESP_INFORMATION_MAX_LEN (96)
8879 
8880 #ifdef __cplusplus
8881 extern "C" {
8882 #endif /* C++ */
8883 __must_check uint32_t dot11f_unpack_ie_esp_information(
8884 	tpAniSirGlobal,
8885 	uint8_t *,
8886 	uint8_t,
8887 	tDot11fIEesp_information*,
8888 	bool);
8889 
8890 uint32_t dot11f_pack_ie_esp_information(
8891 	tpAniSirGlobal,
8892 	tDot11fIEesp_information *,
8893 	uint8_t *,
8894 	uint32_t,
8895 	uint32_t*);
8896 
8897 uint32_t dot11f_get_packed_ie_esp_information(
8898 	tpAniSirGlobal,
8899 	tDot11fIEesp_information *,
8900 	uint32_t*);
8901 
8902 #ifdef __cplusplus
8903 }; /* End extern "C". */
8904 #endif /* C++ */
8905 
8906 /* EID 60 (0x3c) */
8907 typedef struct sDot11fIEext_chan_switch_ann {
8908 	uint8_t             present;
8909 	uint8_t             switch_mode;
8910 	uint8_t             new_reg_class;
8911 	uint8_t             new_channel;
8912 	uint8_t             switch_count;
8913 } tDot11fIEext_chan_switch_ann;
8914 
8915 #define DOT11F_EID_EXT_CHAN_SWITCH_ANN (60)
8916 
8917 /* N.B. These #defines do *not* include the EID & length */
8918 #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MIN_LEN (4)
8919 
8920 #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MAX_LEN (4)
8921 
8922 #ifdef __cplusplus
8923 extern "C" {
8924 #endif /* C++ */
8925 __must_check uint32_t dot11f_unpack_ie_ext_chan_switch_ann(
8926 	tpAniSirGlobal,
8927 	uint8_t *,
8928 	uint8_t,
8929 	tDot11fIEext_chan_switch_ann*,
8930 	bool);
8931 
8932 uint32_t dot11f_pack_ie_ext_chan_switch_ann(
8933 	tpAniSirGlobal,
8934 	tDot11fIEext_chan_switch_ann *,
8935 	uint8_t *,
8936 	uint32_t,
8937 	uint32_t*);
8938 
8939 uint32_t dot11f_get_packed_ie_ext_chan_switch_ann(
8940 	tpAniSirGlobal,
8941 	tDot11fIEext_chan_switch_ann *,
8942 	uint32_t*);
8943 
8944 #ifdef __cplusplus
8945 }; /* End extern "C". */
8946 #endif /* C++ */
8947 
8948 /* EID 255 (0xff) Extended EID 1 (0x01) */
8949 typedef struct sDot11fIEfils_assoc_delay_info {
8950 	uint8_t             present;
8951 	uint8_t             assoc_delay_info;
8952 } tDot11fIEfils_assoc_delay_info;
8953 
8954 #define DOT11F_EID_FILS_ASSOC_DELAY_INFO (255)
8955 
8956 /* N.B. These #defines do *not* include the EID & length */
8957 #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MIN_LEN (1)
8958 
8959 #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MAX_LEN (1)
8960 
8961 #ifdef __cplusplus
8962 extern "C" {
8963 #endif /* C++ */
8964 __must_check uint32_t dot11f_unpack_ie_fils_assoc_delay_info(
8965 	tpAniSirGlobal,
8966 	uint8_t *,
8967 	uint8_t,
8968 	tDot11fIEfils_assoc_delay_info*,
8969 	bool);
8970 
8971 uint32_t dot11f_pack_ie_fils_assoc_delay_info(
8972 	tpAniSirGlobal,
8973 	tDot11fIEfils_assoc_delay_info *,
8974 	uint8_t *,
8975 	uint32_t,
8976 	uint32_t*);
8977 
8978 uint32_t dot11f_get_packed_ie_fils_assoc_delay_info(
8979 	tpAniSirGlobal,
8980 	tDot11fIEfils_assoc_delay_info *,
8981 	uint32_t*);
8982 
8983 #ifdef __cplusplus
8984 }; /* End extern "C". */
8985 #endif /* C++ */
8986 
8987 /* EID 255 (0xff) Extended EID 5 (0x05) */
8988 typedef struct sDot11fIEfils_hlp_container {
8989 	uint8_t             present;
8990 	uint8_t             dest_mac[6];
8991 	uint8_t             src_mac[6];
8992 	uint8_t             num_hlp_packet;
8993 	uint8_t             hlp_packet[255];
8994 } tDot11fIEfils_hlp_container;
8995 
8996 #define DOT11F_EID_FILS_HLP_CONTAINER (255)
8997 
8998 /* N.B. These #defines do *not* include the EID & length */
8999 #define DOT11F_IE_FILS_HLP_CONTAINER_MIN_LEN (12)
9000 
9001 #define DOT11F_IE_FILS_HLP_CONTAINER_MAX_LEN (267)
9002 
9003 #ifdef __cplusplus
9004 extern "C" {
9005 #endif /* C++ */
9006 __must_check uint32_t dot11f_unpack_ie_fils_hlp_container(
9007 	tpAniSirGlobal,
9008 	uint8_t *,
9009 	uint8_t,
9010 	tDot11fIEfils_hlp_container*,
9011 	bool);
9012 
9013 uint32_t dot11f_pack_ie_fils_hlp_container(
9014 	tpAniSirGlobal,
9015 	tDot11fIEfils_hlp_container *,
9016 	uint8_t *,
9017 	uint32_t,
9018 	uint32_t*);
9019 
9020 uint32_t dot11f_get_packed_ie_fils_hlp_container(
9021 	tpAniSirGlobal,
9022 	tDot11fIEfils_hlp_container *,
9023 	uint32_t*);
9024 
9025 #ifdef __cplusplus
9026 }; /* End extern "C". */
9027 #endif /* C++ */
9028 
9029 /* EID 240 (0xf0) */
9030 typedef struct sDot11fIEfils_indication {
9031 	uint8_t             present;
9032 	uint16_t public_key_identifiers_cnt:3;
9033 	uint16_t realm_identifiers_cnt:3;
9034 	uint16_t is_ip_config_supported:1;
9035 	uint16_t  is_cache_id_present:1;
9036 	uint16_t    is_hessid_present:1;
9037 	uint16_t is_fils_sk_auth_supported:1;
9038 	uint16_t is_fils_sk_auth_pfs_supported:1;
9039 	uint16_t is_pk_auth_supported:1;
9040 	uint16_t             reserved:4;
9041 	uint8_t             num_variable_data;
9042 	uint8_t             variable_data[255];
9043 } tDot11fIEfils_indication;
9044 
9045 #define DOT11F_EID_FILS_INDICATION (240)
9046 
9047 /* N.B. These #defines do *not* include the EID & length */
9048 #define DOT11F_IE_FILS_INDICATION_MIN_LEN (4)
9049 
9050 #define DOT11F_IE_FILS_INDICATION_MAX_LEN (257)
9051 
9052 #ifdef __cplusplus
9053 extern "C" {
9054 #endif /* C++ */
9055 __must_check uint32_t dot11f_unpack_ie_fils_indication(
9056 	tpAniSirGlobal,
9057 	uint8_t *,
9058 	uint8_t,
9059 	tDot11fIEfils_indication*,
9060 	bool);
9061 
9062 uint32_t dot11f_pack_ie_fils_indication(
9063 	tpAniSirGlobal,
9064 	tDot11fIEfils_indication *,
9065 	uint8_t *,
9066 	uint32_t,
9067 	uint32_t*);
9068 
9069 uint32_t dot11f_get_packed_ie_fils_indication(
9070 	tpAniSirGlobal,
9071 	tDot11fIEfils_indication *,
9072 	uint32_t*);
9073 
9074 #ifdef __cplusplus
9075 }; /* End extern "C". */
9076 #endif /* C++ */
9077 
9078 /* EID 255 (0xff) Extended EID 7 (0x07) */
9079 typedef struct sDot11fIEfils_kde {
9080 	uint8_t             present;
9081 	uint8_t             key_rsc[8];
9082 	uint8_t             num_kde_list;
9083 	uint8_t             kde_list[255];
9084 } tDot11fIEfils_kde;
9085 
9086 #define DOT11F_EID_FILS_KDE (255)
9087 
9088 /* N.B. These #defines do *not* include the EID & length */
9089 #define DOT11F_IE_FILS_KDE_MIN_LEN (8)
9090 
9091 #define DOT11F_IE_FILS_KDE_MAX_LEN (263)
9092 
9093 #ifdef __cplusplus
9094 extern "C" {
9095 #endif /* C++ */
9096 __must_check uint32_t dot11f_unpack_ie_fils_kde(
9097 	tpAniSirGlobal,
9098 	uint8_t *,
9099 	uint8_t,
9100 	tDot11fIEfils_kde*,
9101 	bool);
9102 
9103 uint32_t dot11f_pack_ie_fils_kde(
9104 	tpAniSirGlobal,
9105 	tDot11fIEfils_kde *,
9106 	uint8_t *,
9107 	uint32_t,
9108 	uint32_t*);
9109 
9110 uint32_t dot11f_get_packed_ie_fils_kde(
9111 	tpAniSirGlobal,
9112 	tDot11fIEfils_kde *,
9113 	uint32_t*);
9114 
9115 #ifdef __cplusplus
9116 }; /* End extern "C". */
9117 #endif /* C++ */
9118 
9119 /* EID 255 (0xff) Extended EID 3 (0x03) */
9120 typedef struct sDot11fIEfils_key_confirmation {
9121 	uint8_t             present;
9122 	uint8_t             num_key_auth;
9123 	uint8_t             key_auth[255];
9124 } tDot11fIEfils_key_confirmation;
9125 
9126 #define DOT11F_EID_FILS_KEY_CONFIRMATION (255)
9127 
9128 /* N.B. These #defines do *not* include the EID & length */
9129 #define DOT11F_IE_FILS_KEY_CONFIRMATION_MIN_LEN (0)
9130 
9131 #define DOT11F_IE_FILS_KEY_CONFIRMATION_MAX_LEN (255)
9132 
9133 #ifdef __cplusplus
9134 extern "C" {
9135 #endif /* C++ */
9136 __must_check uint32_t dot11f_unpack_ie_fils_key_confirmation(
9137 	tpAniSirGlobal,
9138 	uint8_t *,
9139 	uint8_t,
9140 	tDot11fIEfils_key_confirmation*,
9141 	bool);
9142 
9143 uint32_t dot11f_pack_ie_fils_key_confirmation(
9144 	tpAniSirGlobal,
9145 	tDot11fIEfils_key_confirmation *,
9146 	uint8_t *,
9147 	uint32_t,
9148 	uint32_t*);
9149 
9150 uint32_t dot11f_get_packed_ie_fils_key_confirmation(
9151 	tpAniSirGlobal,
9152 	tDot11fIEfils_key_confirmation *,
9153 	uint32_t*);
9154 
9155 #ifdef __cplusplus
9156 }; /* End extern "C". */
9157 #endif /* C++ */
9158 
9159 /* EID 255 (0xff) Extended EID 13 (0x0d) */
9160 typedef struct sDot11fIEfils_nonce {
9161 	uint8_t             present;
9162 	uint8_t             nonce[16];
9163 } tDot11fIEfils_nonce;
9164 
9165 #define DOT11F_EID_FILS_NONCE (255)
9166 
9167 /* N.B. These #defines do *not* include the EID & length */
9168 #define DOT11F_IE_FILS_NONCE_MIN_LEN (16)
9169 
9170 #define DOT11F_IE_FILS_NONCE_MAX_LEN (16)
9171 
9172 #ifdef __cplusplus
9173 extern "C" {
9174 #endif /* C++ */
9175 __must_check uint32_t dot11f_unpack_ie_fils_nonce(
9176 	tpAniSirGlobal,
9177 	uint8_t *,
9178 	uint8_t,
9179 	tDot11fIEfils_nonce*,
9180 	bool);
9181 
9182 uint32_t dot11f_pack_ie_fils_nonce(
9183 	tpAniSirGlobal,
9184 	tDot11fIEfils_nonce *,
9185 	uint8_t *,
9186 	uint32_t,
9187 	uint32_t*);
9188 
9189 uint32_t dot11f_get_packed_ie_fils_nonce(
9190 	tpAniSirGlobal,
9191 	tDot11fIEfils_nonce *,
9192 	uint32_t*);
9193 
9194 #ifdef __cplusplus
9195 }; /* End extern "C". */
9196 #endif /* C++ */
9197 
9198 /* EID 255 (0xff) Extended EID 12 (0x0c) */
9199 typedef struct sDot11fIEfils_public_key {
9200 	uint8_t             present;
9201 	uint8_t             key_type;
9202 	uint8_t             num_public_key;
9203 	uint8_t             public_key[255];
9204 } tDot11fIEfils_public_key;
9205 
9206 #define DOT11F_EID_FILS_PUBLIC_KEY (255)
9207 
9208 /* N.B. These #defines do *not* include the EID & length */
9209 #define DOT11F_IE_FILS_PUBLIC_KEY_MIN_LEN (1)
9210 
9211 #define DOT11F_IE_FILS_PUBLIC_KEY_MAX_LEN (256)
9212 
9213 #ifdef __cplusplus
9214 extern "C" {
9215 #endif /* C++ */
9216 __must_check uint32_t dot11f_unpack_ie_fils_public_key(
9217 	tpAniSirGlobal,
9218 	uint8_t *,
9219 	uint8_t,
9220 	tDot11fIEfils_public_key*,
9221 	bool);
9222 
9223 uint32_t dot11f_pack_ie_fils_public_key(
9224 	tpAniSirGlobal,
9225 	tDot11fIEfils_public_key *,
9226 	uint8_t *,
9227 	uint32_t,
9228 	uint32_t*);
9229 
9230 uint32_t dot11f_get_packed_ie_fils_public_key(
9231 	tpAniSirGlobal,
9232 	tDot11fIEfils_public_key *,
9233 	uint32_t*);
9234 
9235 #ifdef __cplusplus
9236 }; /* End extern "C". */
9237 #endif /* C++ */
9238 
9239 /* EID 255 (0xff) Extended EID 4 (0x04) */
9240 typedef struct sDot11fIEfils_session {
9241 	uint8_t             present;
9242 	uint8_t             session[8];
9243 } tDot11fIEfils_session;
9244 
9245 #define DOT11F_EID_FILS_SESSION (255)
9246 
9247 /* N.B. These #defines do *not* include the EID & length */
9248 #define DOT11F_IE_FILS_SESSION_MIN_LEN (8)
9249 
9250 #define DOT11F_IE_FILS_SESSION_MAX_LEN (8)
9251 
9252 #ifdef __cplusplus
9253 extern "C" {
9254 #endif /* C++ */
9255 __must_check uint32_t dot11f_unpack_ie_fils_session(
9256 	tpAniSirGlobal,
9257 	uint8_t *,
9258 	uint8_t,
9259 	tDot11fIEfils_session*,
9260 	bool);
9261 
9262 uint32_t dot11f_pack_ie_fils_session(
9263 	tpAniSirGlobal,
9264 	tDot11fIEfils_session *,
9265 	uint8_t *,
9266 	uint32_t,
9267 	uint32_t*);
9268 
9269 uint32_t dot11f_get_packed_ie_fils_session(
9270 	tpAniSirGlobal,
9271 	tDot11fIEfils_session *,
9272 	uint32_t*);
9273 
9274 #ifdef __cplusplus
9275 }; /* End extern "C". */
9276 #endif /* C++ */
9277 
9278 /* EID 255 (0xff) Extended EID 8 (0x08) */
9279 typedef struct sDot11fIEfils_wrapped_data {
9280 	uint8_t             present;
9281 	uint8_t             num_wrapped_data;
9282 	uint8_t             wrapped_data[255];
9283 } tDot11fIEfils_wrapped_data;
9284 
9285 #define DOT11F_EID_FILS_WRAPPED_DATA (255)
9286 
9287 /* N.B. These #defines do *not* include the EID & length */
9288 #define DOT11F_IE_FILS_WRAPPED_DATA_MIN_LEN (0)
9289 
9290 #define DOT11F_IE_FILS_WRAPPED_DATA_MAX_LEN (255)
9291 
9292 #ifdef __cplusplus
9293 extern "C" {
9294 #endif /* C++ */
9295 __must_check uint32_t dot11f_unpack_ie_fils_wrapped_data(
9296 	tpAniSirGlobal,
9297 	uint8_t *,
9298 	uint8_t,
9299 	tDot11fIEfils_wrapped_data*,
9300 	bool);
9301 
9302 uint32_t dot11f_pack_ie_fils_wrapped_data(
9303 	tpAniSirGlobal,
9304 	tDot11fIEfils_wrapped_data *,
9305 	uint8_t *,
9306 	uint32_t,
9307 	uint32_t*);
9308 
9309 uint32_t dot11f_get_packed_ie_fils_wrapped_data(
9310 	tpAniSirGlobal,
9311 	tDot11fIEfils_wrapped_data *,
9312 	uint32_t*);
9313 
9314 #ifdef __cplusplus
9315 }; /* End extern "C". */
9316 #endif /* C++ */
9317 
9318 /* EID 242 (0xf2) */
9319 typedef struct sDot11fIEfragment_ie {
9320 	uint8_t             present;
9321 	uint8_t             num_data;
9322 	uint8_t             data[255];
9323 } tDot11fIEfragment_ie;
9324 
9325 #define DOT11F_EID_FRAGMENT_IE (242)
9326 
9327 /* N.B. These #defines do *not* include the EID & length */
9328 #define DOT11F_IE_FRAGMENT_IE_MIN_LEN (0)
9329 
9330 #define DOT11F_IE_FRAGMENT_IE_MAX_LEN (255)
9331 
9332 #ifdef __cplusplus
9333 extern "C" {
9334 #endif /* C++ */
9335 __must_check uint32_t dot11f_unpack_ie_fragment_ie(
9336 	tpAniSirGlobal,
9337 	uint8_t *,
9338 	uint8_t,
9339 	tDot11fIEfragment_ie*,
9340 	bool);
9341 
9342 uint32_t dot11f_pack_ie_fragment_ie(
9343 	tpAniSirGlobal,
9344 	tDot11fIEfragment_ie *,
9345 	uint8_t *,
9346 	uint32_t,
9347 	uint32_t*);
9348 
9349 uint32_t dot11f_get_packed_ie_fragment_ie(
9350 	tpAniSirGlobal,
9351 	tDot11fIEfragment_ie *,
9352 	uint32_t*);
9353 
9354 #ifdef __cplusplus
9355 }; /* End extern "C". */
9356 #endif /* C++ */
9357 
9358 /* EID 255 (0xff) Extended EID 59 (0x3b) */
9359 typedef struct sDot11fIEhe_6ghz_band_cap {
9360 	uint8_t             present;
9361 	uint16_t min_mpdu_start_spacing:3;
9362 	uint16_t    max_ampdu_len_exp:3;
9363 	uint16_t         max_mpdu_len:3;
9364 	uint16_t          sm_pow_save:2;
9365 	uint16_t         rd_responder:1;
9366 	uint16_t rx_ant_pattern_consistency:1;
9367 	uint16_t tx_ant_pattern_consistency:1;
9368 	uint16_t             reserved:2;
9369 } tDot11fIEhe_6ghz_band_cap;
9370 
9371 #define DOT11F_EID_HE_6GHZ_BAND_CAP (255)
9372 
9373 /* N.B. These #defines do *not* include the EID & length */
9374 #define DOT11F_IE_HE_6GHZ_BAND_CAP_MIN_LEN (2)
9375 
9376 #define DOT11F_IE_HE_6GHZ_BAND_CAP_MAX_LEN (2)
9377 
9378 #ifdef __cplusplus
9379 extern "C" {
9380 #endif /* C++ */
9381 __must_check uint32_t dot11f_unpack_ie_he_6ghz_band_cap(
9382 	tpAniSirGlobal,
9383 	uint8_t *,
9384 	uint8_t,
9385 	tDot11fIEhe_6ghz_band_cap*,
9386 	bool);
9387 
9388 uint32_t dot11f_pack_ie_he_6ghz_band_cap(
9389 	tpAniSirGlobal,
9390 	tDot11fIEhe_6ghz_band_cap *,
9391 	uint8_t *,
9392 	uint32_t,
9393 	uint32_t*);
9394 
9395 uint32_t dot11f_get_packed_ie_he_6ghz_band_cap(
9396 	tpAniSirGlobal,
9397 	tDot11fIEhe_6ghz_band_cap *,
9398 	uint32_t*);
9399 
9400 #ifdef __cplusplus
9401 }; /* End extern "C". */
9402 #endif /* C++ */
9403 
9404 /* EID 255 (0xff) Extended EID 35 (0x23) */
9405 typedef struct sDot11fIEhe_cap {
9406 	uint8_t             present;
9407 	uint32_t               htc_he:1;
9408 	uint32_t          twt_request:1;
9409 	uint32_t        twt_responder:1;
9410 	uint32_t        fragmentation:2;
9411 	uint32_t max_num_frag_msdu_amsdu_exp:3;
9412 	uint32_t        min_frag_size:2;
9413 	uint32_t  trigger_frm_mac_pad:2;
9414 	uint32_t multi_tid_aggr_rx_supp:3;
9415 	uint32_t   he_link_adaptation:2;
9416 	uint32_t              all_ack:1;
9417 	uint32_t      trigd_rsp_sched:1;
9418 	uint32_t                a_bsr:1;
9419 	uint32_t        broadcast_twt:1;
9420 	uint32_t      ba_32bit_bitmap:1;
9421 	uint32_t           mu_cascade:1;
9422 	uint32_t ack_enabled_multitid:1;
9423 	uint32_t             reserved:1;
9424 	uint32_t           omi_a_ctrl:1;
9425 	uint32_t             ofdma_ra:1;
9426 	uint32_t max_ampdu_len_exp_ext:2;
9427 	uint32_t           amsdu_frag:1;
9428 	uint32_t       flex_twt_sched:1;
9429 	uint32_t        rx_ctrl_frame:1;
9430 	uint16_t      bsrp_ampdu_aggr:1;
9431 	uint16_t                  qtp:1;
9432 	uint16_t                a_bqr:1;
9433 	uint16_t spatial_reuse_param_rspder:1;
9434 	uint16_t    ndp_feedback_supp:1;
9435 	uint16_t             ops_supp:1;
9436 	uint16_t       amsdu_in_ampdu:1;
9437 	uint16_t multi_tid_aggr_tx_supp:3;
9438 	uint16_t he_sub_ch_sel_tx_supp:1;
9439 	uint16_t ul_2x996_tone_ru_supp:1;
9440 	uint16_t om_ctrl_ul_mu_data_dis_rx:1;
9441 	uint16_t      he_dynamic_smps:1;
9442 	uint16_t punctured_sounding_supp:1;
9443 	uint16_t ht_vht_trg_frm_rx_supp:1;
9444 	uint32_t            reserved2:1;
9445 	uint32_t         chan_width_0:1;
9446 	uint32_t         chan_width_1:1;
9447 	uint32_t         chan_width_2:1;
9448 	uint32_t         chan_width_3:1;
9449 	uint32_t         chan_width_4:1;
9450 	uint32_t         chan_width_5:1;
9451 	uint32_t         chan_width_6:1;
9452 	uint32_t  rx_pream_puncturing:4;
9453 	uint32_t         device_class:1;
9454 	uint32_t          ldpc_coding:1;
9455 	uint32_t he_1x_ltf_800_gi_ppdu:1;
9456 	uint32_t midamble_tx_rx_max_nsts:2;
9457 	uint32_t he_4x_ltf_3200_gi_ndp:1;
9458 	uint32_t tb_ppdu_tx_stbc_lt_80mhz:1;
9459 	uint32_t     rx_stbc_lt_80mhz:1;
9460 	uint32_t              doppler:2;
9461 	uint32_t                ul_mu:2;
9462 	uint32_t           dcm_enc_tx:3;
9463 	uint32_t           dcm_enc_rx:3;
9464 	uint32_t             ul_he_mu:1;
9465 	uint32_t        su_beamformer:1;
9466 	uint32_t        su_beamformee:1;
9467 	uint32_t        mu_beamformer:1;
9468 	uint32_t       bfee_sts_lt_80:3;
9469 	uint32_t       bfee_sts_gt_80:3;
9470 	uint32_t   num_sounding_lt_80:3;
9471 	uint32_t   num_sounding_gt_80:3;
9472 	uint32_t   su_feedback_tone16:1;
9473 	uint32_t   mu_feedback_tone16:1;
9474 	uint32_t          codebook_su:1;
9475 	uint32_t          codebook_mu:1;
9476 	uint32_t beamforming_feedback:3;
9477 	uint32_t        he_er_su_ppdu:1;
9478 	uint32_t   dl_mu_mimo_part_bw:1;
9479 	uint32_t         ppet_present:1;
9480 	uint32_t                  srp:1;
9481 	uint32_t          power_boost:1;
9482 	uint32_t     he_ltf_800_gi_4x:1;
9483 	uint32_t               max_nc:3;
9484 	uint32_t tb_ppdu_tx_stbc_gt_80mhz:1;
9485 	uint32_t     rx_stbc_gt_80mhz:1;
9486 	uint16_t  er_he_ltf_800_gi_4x:1;
9487 	uint16_t he_ppdu_20_in_40Mhz_2G:1;
9488 	uint16_t he_ppdu_20_in_160_80p80Mhz:1;
9489 	uint16_t he_ppdu_80_in_160_80p80Mhz:1;
9490 	uint16_t      er_1x_he_ltf_gi:1;
9491 	uint16_t midamble_tx_rx_1x_he_ltf:1;
9492 	uint16_t           dcm_max_bw:2;
9493 	uint16_t longer_than_16_he_sigb_ofdm_sym:1;
9494 	uint16_t non_trig_cqi_feedback:1;
9495 	uint16_t tx_1024_qam_lt_242_tone_ru:1;
9496 	uint16_t rx_1024_qam_lt_242_tone_ru:1;
9497 	uint16_t rx_full_bw_su_he_mu_compress_sigb:1;
9498 	uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1;
9499 	uint16_t            reserved3:2;
9500 	uint8_t             reserved4;
9501 	uint16_t            rx_he_mcs_map_lt_80;
9502 	uint16_t            tx_he_mcs_map_lt_80;
9503 	uint8_t             rx_he_mcs_map_160[1][2];
9504 	uint8_t             tx_he_mcs_map_160[1][2];
9505 	uint8_t             rx_he_mcs_map_80_80[1][2];
9506 	uint8_t             tx_he_mcs_map_80_80[1][2];
9507 	union {
9508 		struct {
9509 			uint8_t num_ppe_th;
9510 			uint8_t ppe_th[25];
9511 		} ppe_threshold; /* ppet_present = 1 */
9512 	} ppet;
9513 } tDot11fIEhe_cap;
9514 
9515 #define DOT11F_EID_HE_CAP (255)
9516 
9517 /* N.B. These #defines do *not* include the EID & length */
9518 #define DOT11F_IE_HE_CAP_MIN_LEN (21)
9519 
9520 #define DOT11F_IE_HE_CAP_MAX_LEN (54)
9521 
9522 #ifdef __cplusplus
9523 extern "C" {
9524 #endif /* C++ */
9525 __must_check uint32_t dot11f_unpack_ie_he_cap(
9526 	tpAniSirGlobal,
9527 	uint8_t *,
9528 	uint8_t,
9529 	tDot11fIEhe_cap*,
9530 	bool);
9531 
9532 uint32_t dot11f_pack_ie_he_cap(
9533 	tpAniSirGlobal,
9534 	tDot11fIEhe_cap *,
9535 	uint8_t *,
9536 	uint32_t,
9537 	uint32_t*);
9538 
9539 uint32_t dot11f_get_packed_ie_he_cap(
9540 	tpAniSirGlobal,
9541 	tDot11fIEhe_cap *,
9542 	uint32_t*);
9543 
9544 #ifdef __cplusplus
9545 }; /* End extern "C". */
9546 #endif /* C++ */
9547 
9548 /* EID 255 (0xff) Extended EID 36 (0x24) */
9549 typedef struct sDot11fIEhe_op {
9550 	uint8_t             present;
9551 	uint16_t           default_pe:3;
9552 	uint16_t         twt_required:1;
9553 	uint16_t   txop_rts_threshold:10;
9554 	uint16_t     vht_oper_present:1;
9555 	uint16_t       co_located_bss:1;
9556 	uint8_t        er_su_disable:1;
9557 	uint8_t oper_info_6g_present:1;
9558 	uint8_t            reserved2:6;
9559 	uint8_t            bss_color:6;
9560 	uint8_t      partial_bss_col:1;
9561 	uint8_t     bss_col_disabled:1;
9562 	uint8_t             basic_mcs_nss[2];
9563 	union {
9564 		struct {
9565 			uint8_t chan_width;
9566 			uint8_t center_freq_seg0;
9567 			uint8_t center_freq_seg1;
9568 		} info; /* vht_oper_present = 1 */
9569 	} vht_oper;
9570 	union {
9571 		struct {
9572 			uint8_t data;
9573 		} info; /* co_located_bss = 1 */
9574 	} maxbssid_ind;
9575 	union {
9576 		struct {
9577 			uint8_t primary_ch;
9578 			uint8_t  ch_width:2;
9579 			uint8_t  dup_bcon:1;
9580 			uint8_t  reg_info:3;
9581 			uint8_t  reserved:2;
9582 			uint8_t center_freq_seg0;
9583 			uint8_t center_freq_seg1;
9584 			uint8_t min_rate;
9585 		} info; /* oper_info_6g_present = 1 */
9586 	} oper_info_6g;
9587 } tDot11fIEhe_op;
9588 
9589 #define DOT11F_EID_HE_OP (255)
9590 
9591 /* N.B. These #defines do *not* include the EID & length */
9592 #define DOT11F_IE_HE_OP_MIN_LEN (6)
9593 
9594 #define DOT11F_IE_HE_OP_MAX_LEN (15)
9595 
9596 #ifdef __cplusplus
9597 extern "C" {
9598 #endif /* C++ */
9599 __must_check uint32_t dot11f_unpack_ie_he_op(
9600 	tpAniSirGlobal,
9601 	uint8_t *,
9602 	uint8_t,
9603 	tDot11fIEhe_op*,
9604 	bool);
9605 
9606 uint32_t dot11f_pack_ie_he_op(
9607 	tpAniSirGlobal,
9608 	tDot11fIEhe_op *,
9609 	uint8_t *,
9610 	uint32_t,
9611 	uint32_t*);
9612 
9613 uint32_t dot11f_get_packed_ie_he_op(
9614 	tpAniSirGlobal,
9615 	tDot11fIEhe_op *,
9616 	uint32_t*);
9617 
9618 #ifdef __cplusplus
9619 }; /* End extern "C". */
9620 #endif /* C++ */
9621 
9622 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x10} */
9623 typedef struct sDot11fIEhs20vendor_ie {
9624 	uint8_t             present;
9625 	uint8_t             dgaf_dis:1;
9626 	uint8_t        hs_id_present:2;
9627 	uint8_t             reserved:1;
9628 	uint8_t          release_num:4;
9629 	union {
9630 		struct {
9631 			uint16_t pps_mo_id;
9632 		} pps_mo; /* hs_id_present = 1 */
9633 		struct {
9634 			uint16_t anqp_domain_id;
9635 		} anqp_domain; /* hs_id_present = 2 */
9636 	} hs_id;
9637 } tDot11fIEhs20vendor_ie;
9638 
9639 #define DOT11F_EID_HS20VENDOR_IE (221)
9640 
9641 /* N.B. These #defines do *not* include the EID & length */
9642 #define DOT11F_IE_HS20VENDOR_IE_MIN_LEN (5)
9643 
9644 #define DOT11F_IE_HS20VENDOR_IE_MAX_LEN (7)
9645 
9646 #ifdef __cplusplus
9647 extern "C" {
9648 #endif /* C++ */
9649 __must_check uint32_t dot11f_unpack_ie_hs20vendor_ie(
9650 	tpAniSirGlobal,
9651 	uint8_t *,
9652 	uint8_t,
9653 	tDot11fIEhs20vendor_ie*,
9654 	bool);
9655 
9656 uint32_t dot11f_pack_ie_hs20vendor_ie(
9657 	tpAniSirGlobal,
9658 	tDot11fIEhs20vendor_ie *,
9659 	uint8_t *,
9660 	uint32_t,
9661 	uint32_t*);
9662 
9663 uint32_t dot11f_get_packed_ie_hs20vendor_ie(
9664 	tpAniSirGlobal,
9665 	tDot11fIEhs20vendor_ie *,
9666 	uint32_t*);
9667 
9668 #ifdef __cplusplus
9669 }; /* End extern "C". */
9670 #endif /* C++ */
9671 
9672 /* EID 72 (0x48) */
9673 typedef struct sDot11fIEht2040_bss_coexistence {
9674 	uint8_t             present;
9675 	uint8_t         info_request:1;
9676 	uint8_t forty_mhz_intolerant:1;
9677 	uint8_t twenty_mhz_bsswidth_req:1;
9678 	uint8_t obss_scan_exemption_req:1;
9679 	uint8_t obss_scan_exemption_grant:1;
9680 	uint8_t               unused:3;
9681 } tDot11fIEht2040_bss_coexistence;
9682 
9683 #define DOT11F_EID_HT2040_BSS_COEXISTENCE (72)
9684 
9685 /* N.B. These #defines do *not* include the EID & length */
9686 #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MIN_LEN (1)
9687 
9688 #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MAX_LEN (1)
9689 
9690 #ifdef __cplusplus
9691 extern "C" {
9692 #endif /* C++ */
9693 __must_check uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(
9694 	tpAniSirGlobal,
9695 	uint8_t *,
9696 	uint8_t,
9697 	tDot11fIEht2040_bss_coexistence*,
9698 	bool);
9699 
9700 uint32_t dot11f_pack_ie_ht2040_bss_coexistence(
9701 	tpAniSirGlobal,
9702 	tDot11fIEht2040_bss_coexistence *,
9703 	uint8_t *,
9704 	uint32_t,
9705 	uint32_t*);
9706 
9707 uint32_t dot11f_get_packed_ie_ht2040_bss_coexistence(
9708 	tpAniSirGlobal,
9709 	tDot11fIEht2040_bss_coexistence *,
9710 	uint32_t*);
9711 
9712 #ifdef __cplusplus
9713 }; /* End extern "C". */
9714 #endif /* C++ */
9715 
9716 /* EID 73 (0x49) */
9717 typedef struct sDot11fIEht2040_bss_intolerant_report {
9718 	uint8_t             present;
9719 	uint8_t             operating_class;
9720 	uint8_t             num_channel_list;
9721 	uint8_t             channel_list[50];
9722 } tDot11fIEht2040_bss_intolerant_report;
9723 
9724 #define DOT11F_EID_HT2040_BSS_INTOLERANT_REPORT (73)
9725 
9726 /* N.B. These #defines do *not* include the EID & length */
9727 #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MIN_LEN (1)
9728 
9729 #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MAX_LEN (51)
9730 
9731 #ifdef __cplusplus
9732 extern "C" {
9733 #endif /* C++ */
9734 __must_check uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(
9735 	tpAniSirGlobal,
9736 	uint8_t *,
9737 	uint8_t,
9738 	tDot11fIEht2040_bss_intolerant_report*,
9739 	bool);
9740 
9741 uint32_t dot11f_pack_ie_ht2040_bss_intolerant_report(
9742 	tpAniSirGlobal,
9743 	tDot11fIEht2040_bss_intolerant_report *,
9744 	uint8_t *,
9745 	uint32_t,
9746 	uint32_t*);
9747 
9748 uint32_t dot11f_get_packed_ie_ht2040_bss_intolerant_report(
9749 	tpAniSirGlobal,
9750 	tDot11fIEht2040_bss_intolerant_report *,
9751 	uint32_t*);
9752 
9753 #ifdef __cplusplus
9754 }; /* End extern "C". */
9755 #endif /* C++ */
9756 
9757 /* EID 255 (0xff) Extended EID 52 (0x34) */
9758 typedef struct sDot11fIEmax_chan_switch_time {
9759 	uint8_t             present;
9760 	uint8_t             switch_time[3];
9761 } tDot11fIEmax_chan_switch_time;
9762 
9763 #define DOT11F_EID_MAX_CHAN_SWITCH_TIME (255)
9764 
9765 /* N.B. These #defines do *not* include the EID & length */
9766 #define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MIN_LEN (3)
9767 
9768 #define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MAX_LEN (3)
9769 
9770 #ifdef __cplusplus
9771 extern "C" {
9772 #endif /* C++ */
9773 __must_check uint32_t dot11f_unpack_ie_max_chan_switch_time(
9774 	tpAniSirGlobal,
9775 	uint8_t *,
9776 	uint8_t,
9777 	tDot11fIEmax_chan_switch_time*,
9778 	bool);
9779 
9780 uint32_t dot11f_pack_ie_max_chan_switch_time(
9781 	tpAniSirGlobal,
9782 	tDot11fIEmax_chan_switch_time *,
9783 	uint8_t *,
9784 	uint32_t,
9785 	uint32_t*);
9786 
9787 uint32_t dot11f_get_packed_ie_max_chan_switch_time(
9788 	tpAniSirGlobal,
9789 	tDot11fIEmax_chan_switch_time *,
9790 	uint32_t*);
9791 
9792 #ifdef __cplusplus
9793 }; /* End extern "C". */
9794 #endif /* C++ */
9795 
9796 /* EID 255 (0xff) Extended EID 38 (0x26) */
9797 typedef struct sDot11fIEmu_edca_param_set {
9798 	uint8_t             present;
9799 	uint8_t             qos;
9800 	uint8_t           acbe_aifsn:4;
9801 	uint8_t             acbe_acm:1;
9802 	uint8_t             acbe_aci:2;
9803 	uint8_t              unused1:1;
9804 	uint8_t          acbe_acwmin:4;
9805 	uint8_t          acbe_acwmax:4;
9806 	uint8_t             acbe_muedca_timer;
9807 	uint8_t           acbk_aifsn:4;
9808 	uint8_t             acbk_acm:1;
9809 	uint8_t             acbk_aci:2;
9810 	uint8_t              unused2:1;
9811 	uint8_t          acbk_acwmin:4;
9812 	uint8_t          acbk_acwmax:4;
9813 	uint8_t             acbk_muedca_timer;
9814 	uint8_t           acvi_aifsn:4;
9815 	uint8_t             acvi_acm:1;
9816 	uint8_t             acvi_aci:2;
9817 	uint8_t              unused3:1;
9818 	uint8_t          acvi_acwmin:4;
9819 	uint8_t          acvi_acwmax:4;
9820 	uint8_t             acvi_muedca_timer;
9821 	uint8_t           acvo_aifsn:4;
9822 	uint8_t             acvo_acm:1;
9823 	uint8_t             acvo_aci:2;
9824 	uint8_t              unused4:1;
9825 	uint8_t          acvo_acwmin:4;
9826 	uint8_t          acvo_acwmax:4;
9827 	uint8_t             acvo_muedca_timer;
9828 } tDot11fIEmu_edca_param_set;
9829 
9830 #define DOT11F_EID_MU_EDCA_PARAM_SET (255)
9831 
9832 /* N.B. These #defines do *not* include the EID & length */
9833 #define DOT11F_IE_MU_EDCA_PARAM_SET_MIN_LEN (13)
9834 
9835 #define DOT11F_IE_MU_EDCA_PARAM_SET_MAX_LEN (13)
9836 
9837 #ifdef __cplusplus
9838 extern "C" {
9839 #endif /* C++ */
9840 __must_check uint32_t dot11f_unpack_ie_mu_edca_param_set(
9841 	tpAniSirGlobal,
9842 	uint8_t *,
9843 	uint8_t,
9844 	tDot11fIEmu_edca_param_set*,
9845 	bool);
9846 
9847 uint32_t dot11f_pack_ie_mu_edca_param_set(
9848 	tpAniSirGlobal,
9849 	tDot11fIEmu_edca_param_set *,
9850 	uint8_t *,
9851 	uint32_t,
9852 	uint32_t*);
9853 
9854 uint32_t dot11f_get_packed_ie_mu_edca_param_set(
9855 	tpAniSirGlobal,
9856 	tDot11fIEmu_edca_param_set *,
9857 	uint32_t*);
9858 
9859 #ifdef __cplusplus
9860 }; /* End extern "C". */
9861 #endif /* C++ */
9862 
9863 /* EID 255 (0xff) Extended EID 54 (0x36) */
9864 typedef struct sDot11fIEoci {
9865 	uint8_t             present;
9866 	uint8_t             op_class;
9867 	uint8_t             prim_ch_num;
9868 	uint8_t             freq_seg_1_ch_num;
9869 } tDot11fIEoci;
9870 
9871 #define DOT11F_EID_OCI (255)
9872 
9873 /* N.B. These #defines do *not* include the EID & length */
9874 #define DOT11F_IE_OCI_MIN_LEN (3)
9875 
9876 #define DOT11F_IE_OCI_MAX_LEN (3)
9877 
9878 #ifdef __cplusplus
9879 extern "C" {
9880 #endif /* C++ */
9881 __must_check uint32_t dot11f_unpack_ie_oci(
9882 	tpAniSirGlobal,
9883 	uint8_t *,
9884 	uint8_t,
9885 	tDot11fIEoci*,
9886 	bool);
9887 
9888 uint32_t dot11f_pack_ie_oci(
9889 	tpAniSirGlobal,
9890 	tDot11fIEoci *,
9891 	uint8_t *,
9892 	uint32_t,
9893 	uint32_t*);
9894 
9895 uint32_t dot11f_get_packed_ie_oci(
9896 	tpAniSirGlobal,
9897 	tDot11fIEoci *,
9898 	uint32_t*);
9899 
9900 #ifdef __cplusplus
9901 }; /* End extern "C". */
9902 #endif /* C++ */
9903 
9904 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x12} */
9905 typedef struct sDot11fIEosen_ie {
9906 	uint8_t             present;
9907 	uint8_t             num_data;
9908 	uint8_t             data[255];
9909 } tDot11fIEosen_ie;
9910 
9911 #define DOT11F_EID_OSEN_IE (221)
9912 
9913 /* N.B. These #defines do *not* include the EID & length */
9914 #define DOT11F_IE_OSEN_IE_MIN_LEN (4)
9915 
9916 #define DOT11F_IE_OSEN_IE_MAX_LEN (259)
9917 
9918 #ifdef __cplusplus
9919 extern "C" {
9920 #endif /* C++ */
9921 __must_check uint32_t dot11f_unpack_ie_osen_ie(
9922 	tpAniSirGlobal,
9923 	uint8_t *,
9924 	uint8_t,
9925 	tDot11fIEosen_ie*,
9926 	bool);
9927 
9928 uint32_t dot11f_pack_ie_osen_ie(
9929 	tpAniSirGlobal,
9930 	tDot11fIEosen_ie *,
9931 	uint8_t *,
9932 	uint32_t,
9933 	uint32_t*);
9934 
9935 uint32_t dot11f_get_packed_ie_osen_ie(
9936 	tpAniSirGlobal,
9937 	tDot11fIEosen_ie *,
9938 	uint32_t*);
9939 
9940 #ifdef __cplusplus
9941 }; /* End extern "C". */
9942 #endif /* C++ */
9943 
9944 /* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} (Multi-IE) */
9945 typedef struct sDot11fIEqcn_ie {
9946 	uint8_t             present;
9947 	tDot11fTLVqcn_version qcn_version;
9948 	tDot11fTLVvht_mcs11_attr vht_mcs11_attr;
9949 	tDot11fTLVhe_400ns_sgi_attr he_400ns_sgi_attr;
9950 	tDot11fTLVhe_2xltf_160mhz_supp he_2xltf_160mhz_supp;
9951 	tDot11fTLVhe_dl_ofdma_attr he_dl_ofdma_attr;
9952 	tDot11fTLVtrans_reasonp_attr trans_reasonp_attr;
9953 	tDot11fTLVtrans_rejectp_attr trans_rejectp_attr;
9954 	tDot11fTLVhe_dl_mumimo_attr he_dl_mumimo_attr;
9955 	tDot11fTLVhe_mcs13_attr he_mcs13_attr;
9956 } tDot11fIEqcn_ie;
9957 
9958 #define DOT11F_EID_QCN_IE (221)
9959 
9960 /* N.B. These #defines do *not* include the EID & length */
9961 #define DOT11F_IE_QCN_IE_MIN_LEN (4)
9962 
9963 #define DOT11F_IE_QCN_IE_MAX_LEN (35)
9964 
9965 #ifdef __cplusplus
9966 extern "C" {
9967 #endif /* C++ */
9968 __must_check uint32_t dot11f_unpack_ie_qcn_ie(
9969 	tpAniSirGlobal,
9970 	uint8_t *,
9971 	uint8_t,
9972 	tDot11fIEqcn_ie*,
9973 	bool);
9974 
9975 uint32_t dot11f_pack_ie_qcn_ie(
9976 	tpAniSirGlobal,
9977 	tDot11fIEqcn_ie *,
9978 	uint8_t *,
9979 	uint32_t,
9980 	uint32_t*);
9981 
9982 uint32_t dot11f_get_packed_ie_qcn_ie(
9983 	tpAniSirGlobal,
9984 	tDot11fIEqcn_ie *,
9985 	uint32_t*);
9986 
9987 #ifdef __cplusplus
9988 }; /* End extern "C". */
9989 #endif /* C++ */
9990 
9991 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x1d} */
9992 typedef struct sDot11fIEroaming_consortium_sel {
9993 	uint8_t             present;
9994 	uint8_t             num_data;
9995 	uint8_t             data[255];
9996 } tDot11fIEroaming_consortium_sel;
9997 
9998 #define DOT11F_EID_ROAMING_CONSORTIUM_SEL (221)
9999 
10000 /* N.B. These #defines do *not* include the EID & length */
10001 #define DOT11F_IE_ROAMING_CONSORTIUM_SEL_MIN_LEN (4)
10002 
10003 #define DOT11F_IE_ROAMING_CONSORTIUM_SEL_MAX_LEN (259)
10004 
10005 #ifdef __cplusplus
10006 extern "C" {
10007 #endif /* C++ */
10008 __must_check uint32_t dot11f_unpack_ie_roaming_consortium_sel(
10009 	tpAniSirGlobal,
10010 	uint8_t *,
10011 	uint8_t,
10012 	tDot11fIEroaming_consortium_sel*,
10013 	bool);
10014 
10015 uint32_t dot11f_pack_ie_roaming_consortium_sel(
10016 	tpAniSirGlobal,
10017 	tDot11fIEroaming_consortium_sel *,
10018 	uint8_t *,
10019 	uint32_t,
10020 	uint32_t*);
10021 
10022 uint32_t dot11f_get_packed_ie_roaming_consortium_sel(
10023 	tpAniSirGlobal,
10024 	tDot11fIEroaming_consortium_sel *,
10025 	uint32_t*);
10026 
10027 #ifdef __cplusplus
10028 }; /* End extern "C". */
10029 #endif /* C++ */
10030 
10031 /* EID 62 (0x3e) */
10032 typedef struct sDot11fIEsec_chan_offset_ele {
10033 	uint8_t             present;
10034 	uint8_t             secondaryChannelOffset;
10035 } tDot11fIEsec_chan_offset_ele;
10036 
10037 #define DOT11F_EID_SEC_CHAN_OFFSET_ELE (62)
10038 
10039 /* N.B. These #defines do *not* include the EID & length */
10040 #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MIN_LEN (1)
10041 
10042 #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MAX_LEN (1)
10043 
10044 #ifdef __cplusplus
10045 extern "C" {
10046 #endif /* C++ */
10047 __must_check uint32_t dot11f_unpack_ie_sec_chan_offset_ele(
10048 	tpAniSirGlobal,
10049 	uint8_t *,
10050 	uint8_t,
10051 	tDot11fIEsec_chan_offset_ele*,
10052 	bool);
10053 
10054 uint32_t dot11f_pack_ie_sec_chan_offset_ele(
10055 	tpAniSirGlobal,
10056 	tDot11fIEsec_chan_offset_ele *,
10057 	uint8_t *,
10058 	uint32_t,
10059 	uint32_t*);
10060 
10061 uint32_t dot11f_get_packed_ie_sec_chan_offset_ele(
10062 	tpAniSirGlobal,
10063 	tDot11fIEsec_chan_offset_ele *,
10064 	uint32_t*);
10065 
10066 #ifdef __cplusplus
10067 }; /* End extern "C". */
10068 #endif /* C++ */
10069 
10070 /* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c, 0x04} */
10071 typedef struct sDot11fIEvendor_vht_ie {
10072 	uint8_t                      present;
10073 	uint8_t                      sub_type;
10074 	tDot11fIEVHTCaps             VHTCaps;
10075 	tDot11fIEVHTOperation        VHTOperation;
10076 } tDot11fIEvendor_vht_ie;
10077 
10078 #define DOT11F_EID_VENDOR_VHT_IE (221)
10079 
10080 /* N.B. These #defines do *not* include the EID & length */
10081 #define DOT11F_IE_VENDOR_VHT_IE_MIN_LEN (5)
10082 
10083 #define DOT11F_IE_VENDOR_VHT_IE_MAX_LEN (26)
10084 
10085 #ifdef __cplusplus
10086 extern "C" {
10087 #endif /* C++ */
10088 __must_check uint32_t dot11f_unpack_ie_vendor_vht_ie(
10089 	tpAniSirGlobal,
10090 	uint8_t *,
10091 	uint8_t,
10092 	tDot11fIEvendor_vht_ie*,
10093 	bool);
10094 
10095 uint32_t dot11f_pack_ie_vendor_vht_ie(
10096 	tpAniSirGlobal,
10097 	tDot11fIEvendor_vht_ie *,
10098 	uint8_t *,
10099 	uint32_t,
10100 	uint32_t*);
10101 
10102 uint32_t dot11f_get_packed_ie_vendor_vht_ie(
10103 	tpAniSirGlobal,
10104 	tDot11fIEvendor_vht_ie *,
10105 	uint32_t*);
10106 
10107 #ifdef __cplusplus
10108 }; /* End extern "C". */
10109 #endif /* C++ */
10110 /************************************************************************
10111  * Frames
10112  **********************************************************************/
10113 
10114 typedef struct sDot11fAddTSRequest{
10115 	tDot11fFfCategory                  Category;
10116 	tDot11fFfAction                    Action;
10117 	tDot11fFfDialogToken               DialogToken;
10118 	tDot11fIETSPEC                     TSPEC;
10119 	uint16_t                           num_TCLAS;
10120 	tDot11fIETCLAS                     TCLAS[2];
10121 	tDot11fIETCLASSPROC                TCLASSPROC;
10122 	tDot11fIEWMMTSPEC                  WMMTSPEC;
10123 	uint16_t                           num_WMMTCLAS;
10124 	tDot11fIEWMMTCLAS                  WMMTCLAS[2];
10125 	tDot11fIEWMMTCLASPROC              WMMTCLASPROC;
10126 	tDot11fIEESETrafStrmRateSet        ESETrafStrmRateSet;
10127 } tDot11fAddTSRequest;
10128 
10129 #define DOT11F_ADDTSREQUEST (1)
10130 
10131 #ifdef __cplusplus
10132 extern "C" {
10133 #endif /* C++ */
10134 
10135 uint32_t dot11f_unpack_add_ts_request(tpAniSirGlobal pCtx,
10136 	uint8_t *pBuf, uint32_t nBuf,
10137 	tDot11fAddTSRequest * pFrm, bool append_ie);
10138 uint32_t dot11f_pack_add_ts_request(tpAniSirGlobal pCtx,
10139 	tDot11fAddTSRequest *pFrm, uint8_t *pBuf,
10140 	uint32_t nBuf, uint32_t *pnConsumed);
10141 uint32_t dot11f_get_packed_add_ts_request_size(tpAniSirGlobal pCtx,
10142 	tDot11fAddTSRequest *pFrm,
10143 	uint32_t *pnNeeded);
10144 
10145 #ifdef __cplusplus
10146 } /* End extern "C". */
10147 #endif /* C++ */
10148 
10149 typedef struct sDot11fAddTSResponse{
10150 	tDot11fFfCategory              Category;
10151 	tDot11fFfAction                Action;
10152 	tDot11fFfDialogToken           DialogToken;
10153 	tDot11fFfStatus                Status;
10154 	tDot11fIETSDelay               TSDelay;
10155 	tDot11fIETSPEC                 TSPEC;
10156 	uint16_t                       num_TCLAS;
10157 	tDot11fIETCLAS                 TCLAS[2];
10158 	tDot11fIETCLASSPROC            TCLASSPROC;
10159 	tDot11fIESchedule              Schedule;
10160 	tDot11fIEWMMTSDelay            WMMTSDelay;
10161 	tDot11fIEWMMSchedule           WMMSchedule;
10162 	tDot11fIEWMMTSPEC              WMMTSPEC;
10163 	uint16_t                       num_WMMTCLAS;
10164 	tDot11fIEWMMTCLAS              WMMTCLAS[2];
10165 	tDot11fIEWMMTCLASPROC          WMMTCLASPROC;
10166 	tDot11fIEESETrafStrmMet        ESETrafStrmMet;
10167 } tDot11fAddTSResponse;
10168 
10169 #define DOT11F_ADDTSRESPONSE (2)
10170 
10171 #ifdef __cplusplus
10172 extern "C" {
10173 #endif /* C++ */
10174 
10175 uint32_t dot11f_unpack_add_ts_response(tpAniSirGlobal pCtx,
10176 	uint8_t *pBuf, uint32_t nBuf,
10177 	tDot11fAddTSResponse * pFrm, bool append_ie);
10178 uint32_t dot11f_pack_add_ts_response(tpAniSirGlobal pCtx,
10179 	tDot11fAddTSResponse *pFrm, uint8_t *pBuf,
10180 	uint32_t nBuf, uint32_t *pnConsumed);
10181 uint32_t dot11f_get_packed_add_ts_response_size(tpAniSirGlobal pCtx,
10182 	tDot11fAddTSResponse *pFrm,
10183 	uint32_t *pnNeeded);
10184 
10185 #ifdef __cplusplus
10186 } /* End extern "C". */
10187 #endif /* C++ */
10188 
10189 typedef struct sDot11fAssocRequest{
10190 	tDot11fFfCapabilities                  Capabilities;
10191 	tDot11fFfListenInterval                ListenInterval;
10192 	tDot11fIESSID                          SSID;
10193 	tDot11fIESuppRates                     SuppRates;
10194 	tDot11fIEOperatingMode                 OperatingMode;
10195 	tDot11fIEPowerCaps                     PowerCaps;
10196 	tDot11fIESuppChannels                  SuppChannels;
10197 	tDot11fIEHTCaps                        HTCaps;
10198 	tDot11fIEQOSCapsStation                QOSCapsStation;
10199 	tDot11fIERSNOpaque                     RSNOpaque;
10200 	tDot11fIEExtSuppRates                  ExtSuppRates;
10201 	tDot11fIEMobilityDomain                MobilityDomain;
10202 	tDot11fIEFTInfo                        FTInfo;
10203 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
10204 	tDot11fIEWAPIOpaque                    WAPIOpaque;
10205 	tDot11fIEWAPI                          WAPI;
10206 	tDot11fIERRMEnabledCap                 RRMEnabledCap;
10207 	tDot11fIEbss_max_idle_period           bss_max_idle_period;
10208 	tDot11fIEQosMapSet                     QosMapSet;
10209 	tDot11fIEExtCap                        ExtCap;
10210 	tDot11fIEVHTCaps                       VHTCaps;
10211 	tDot11fIEfils_session                  fils_session;
10212 	tDot11fIEfils_public_key               fils_public_key;
10213 	tDot11fIEfils_key_confirmation         fils_key_confirmation;
10214 	tDot11fIEfils_hlp_container            fils_hlp_container;
10215 	tDot11fIEfragment_ie                   fragment_ie;
10216 	tDot11fIEdh_parameter_element          dh_parameter_element;
10217 	tDot11fIEWPAOpaque                     WPAOpaque;
10218 	tDot11fIEWMMCaps                       WMMCaps;
10219 	tDot11fIEWMMInfoStation                WMMInfoStation;
10220 	tDot11fIEWscIEOpaque                   WscIEOpaque;
10221 	tDot11fIEESERadMgmtCap                 ESERadMgmtCap;
10222 	tDot11fIEESEVersion                    ESEVersion;
10223 	tDot11fIEP2PIEOpaque                   P2PIEOpaque;
10224 	tDot11fIEWFDIEOpaque                   WFDIEOpaque;
10225 	tDot11fIEvendor_vht_ie                 vendor_vht_ie;
10226 	tDot11fIEhs20vendor_ie                 hs20vendor_ie;
10227 	tDot11fIEqcn_ie                        qcn_ie;
10228 	tDot11fIEhe_cap                        he_cap;
10229 	tDot11fIEhe_6ghz_band_cap              he_6ghz_band_cap;
10230 	tDot11fIEosen_ie                       osen_ie;
10231 	tDot11fIEroaming_consortium_sel        roaming_consortium_sel;
10232 	tDot11fIEeht_cap                       eht_cap;
10233 } tDot11fAssocRequest;
10234 
10235 #define DOT11F_ASSOCREQUEST (3)
10236 
10237 #ifdef __cplusplus
10238 extern "C" {
10239 #endif /* C++ */
10240 
10241 uint32_t dot11f_unpack_assoc_request(tpAniSirGlobal pCtx,
10242 	uint8_t *pBuf, uint32_t nBuf,
10243 	tDot11fAssocRequest * pFrm, bool append_ie);
10244 uint32_t dot11f_pack_assoc_request(tpAniSirGlobal pCtx,
10245 	tDot11fAssocRequest *pFrm, uint8_t *pBuf,
10246 	uint32_t nBuf, uint32_t *pnConsumed);
10247 uint32_t dot11f_get_packed_assoc_request_size(tpAniSirGlobal pCtx,
10248 	tDot11fAssocRequest *pFrm,
10249 	uint32_t *pnNeeded);
10250 
10251 #ifdef __cplusplus
10252 } /* End extern "C". */
10253 #endif /* C++ */
10254 
10255 typedef struct sDot11fAssocResponse{
10256 	tDot11fFfCapabilities                 Capabilities;
10257 	tDot11fFfStatus                       Status;
10258 	tDot11fFfAID                          AID;
10259 	tDot11fIESuppRates                    SuppRates;
10260 	tDot11fIEExtSuppRates                 ExtSuppRates;
10261 	tDot11fIEEDCAParamSet                 EDCAParamSet;
10262 	tDot11fIERCPIIE                       RCPIIE;
10263 	tDot11fIERSNIIE                       RSNIIE;
10264 	tDot11fIERRMEnabledCap                RRMEnabledCap;
10265 	tDot11fIEMobilityDomain               MobilityDomain;
10266 	tDot11fIEFTInfo                       FTInfo;
10267 	uint16_t                              num_RICDataDesc;
10268 	tDot11fIERICDataDesc                  RICDataDesc[2];
10269 	tDot11fIEbss_max_idle_period          bss_max_idle_period;
10270 	tDot11fIEWPA                          WPA;
10271 	tDot11fIETimeoutInterval              TimeoutInterval;
10272 	tDot11fIEHTCaps                       HTCaps;
10273 	tDot11fIEHTInfo                       HTInfo;
10274 	tDot11fIEWMMParams                    WMMParams;
10275 	tDot11fIEWMMCaps                      WMMCaps;
10276 	tDot11fIEESERadMgmtCap                ESERadMgmtCap;
10277 	tDot11fIEESETrafStrmMet               ESETrafStrmMet;
10278 	tDot11fIEESETxmitPower                ESETxmitPower;
10279 	uint16_t                              num_WMMTSPEC;
10280 	tDot11fIEWMMTSPEC                     WMMTSPEC[4];
10281 	tDot11fIEWscAssocRes                  WscAssocRes;
10282 	tDot11fIEP2PAssocRes                  P2PAssocRes;
10283 	tDot11fIEVHTCaps                      VHTCaps;
10284 	tDot11fIEVHTOperation                 VHTOperation;
10285 	tDot11fIEExtCap                       ExtCap;
10286 	tDot11fIEOBSSScanParameters           OBSSScanParameters;
10287 	tDot11fIEQosMapSet                    QosMapSet;
10288 	tDot11fIEfils_session                 fils_session;
10289 	tDot11fIEfils_public_key              fils_public_key;
10290 	tDot11fIEfils_key_confirmation        fils_key_confirmation;
10291 	tDot11fIEfils_hlp_container           fils_hlp_container;
10292 	tDot11fIEfragment_ie                  fragment_ie;
10293 	tDot11fIEfils_kde                     fils_kde;
10294 	tDot11fIEvendor_vht_ie                vendor_vht_ie;
10295 	tDot11fIEqcn_ie                       qcn_ie;
10296 	tDot11fIEhe_cap                       he_cap;
10297 	tDot11fIEhe_op                        he_op;
10298 	tDot11fIEhe_6ghz_band_cap             he_6ghz_band_cap;
10299 	tDot11fIEbss_color_change             bss_color_change;
10300 	tDot11fIEmu_edca_param_set            mu_edca_param_set;
10301 	tDot11fIEMBO_IE                       MBO_IE;
10302 	tDot11fIEeht_cap                      eht_cap;
10303 	tDot11fIEeht_op                       eht_op;
10304 } tDot11fAssocResponse;
10305 
10306 #define DOT11F_ASSOCRESPONSE (4)
10307 
10308 #ifdef __cplusplus
10309 extern "C" {
10310 #endif /* C++ */
10311 
10312 uint32_t dot11f_unpack_assoc_response(tpAniSirGlobal pCtx,
10313 	uint8_t *pBuf, uint32_t nBuf,
10314 	tDot11fAssocResponse * pFrm, bool append_ie);
10315 uint32_t dot11f_pack_assoc_response(tpAniSirGlobal pCtx,
10316 	tDot11fAssocResponse *pFrm, uint8_t *pBuf,
10317 	uint32_t nBuf, uint32_t *pnConsumed);
10318 uint32_t dot11f_get_packed_assoc_response_size(tpAniSirGlobal pCtx,
10319 	tDot11fAssocResponse *pFrm,
10320 	uint32_t *pnNeeded);
10321 
10322 #ifdef __cplusplus
10323 } /* End extern "C". */
10324 #endif /* C++ */
10325 
10326 typedef struct sDot11fAuthentication{
10327 	tDot11fFfAuthAlgo                     AuthAlgo;
10328 	tDot11fFfAuthSeqNo                    AuthSeqNo;
10329 	tDot11fFfStatus                       Status;
10330 	tDot11fIEChallengeText                ChallengeText;
10331 	tDot11fIERSNOpaque                    RSNOpaque;
10332 	tDot11fIEMobilityDomain               MobilityDomain;
10333 	tDot11fIEFTInfo                       FTInfo;
10334 	tDot11fIETimeoutInterval              TimeoutInterval;
10335 	uint16_t                              num_RICDataDesc;
10336 	tDot11fIERICDataDesc                  RICDataDesc[2];
10337 	tDot11fIEfils_nonce                   fils_nonce;
10338 	tDot11fIEfils_session                 fils_session;
10339 	tDot11fIEfils_wrapped_data            fils_wrapped_data;
10340 	tDot11fIEfils_assoc_delay_info        fils_assoc_delay_info;
10341 } tDot11fAuthentication;
10342 
10343 #define DOT11F_AUTHENTICATION (5)
10344 
10345 #ifdef __cplusplus
10346 extern "C" {
10347 #endif /* C++ */
10348 
10349 uint32_t dot11f_unpack_authentication(tpAniSirGlobal pCtx,
10350 	uint8_t *pBuf, uint32_t nBuf,
10351 	tDot11fAuthentication * pFrm, bool append_ie);
10352 uint32_t dot11f_pack_authentication(tpAniSirGlobal pCtx,
10353 	tDot11fAuthentication *pFrm, uint8_t *pBuf,
10354 	uint32_t nBuf, uint32_t *pnConsumed);
10355 uint32_t dot11f_get_packed_authentication_size(tpAniSirGlobal pCtx,
10356 	tDot11fAuthentication *pFrm,
10357 	uint32_t *pnNeeded);
10358 
10359 #ifdef __cplusplus
10360 } /* End extern "C". */
10361 #endif /* C++ */
10362 
10363 typedef struct sDot11fBeacon{
10364 	tDot11fFfTimeStamp                   TimeStamp;
10365 	tDot11fFfBeaconInterval              BeaconInterval;
10366 	tDot11fFfCapabilities                Capabilities;
10367 	tDot11fIESSID                        SSID;
10368 	tDot11fIESuppRates                   SuppRates;
10369 	tDot11fIEFHParamSet                  FHParamSet;
10370 	tDot11fIEDSParams                    DSParams;
10371 	tDot11fIECFParams                    CFParams;
10372 	tDot11fIETIM                         TIM;
10373 	tDot11fIECountry                     Country;
10374 	tDot11fIEFHParams                    FHParams;
10375 	tDot11fIEFHPattTable                 FHPattTable;
10376 	tDot11fIEPowerConstraints            PowerConstraints;
10377 	tDot11fIEChanSwitchAnn               ChanSwitchAnn;
10378 	tDot11fIEext_chan_switch_ann         ext_chan_switch_ann;
10379 	tDot11fIESuppOperatingClasses        SuppOperatingClasses;
10380 	tDot11fIEQuiet                       Quiet;
10381 	tDot11fIETPCReport                   TPCReport;
10382 	tDot11fIEERPInfo                     ERPInfo;
10383 	tDot11fIEExtSuppRates                ExtSuppRates;
10384 	tDot11fIERSN                         RSN;
10385 	tDot11fIEQBSSLoad                    QBSSLoad;
10386 	tDot11fIEEDCAParamSet                EDCAParamSet;
10387 	tDot11fIEQOSCapsAp                   QOSCapsAp;
10388 	tDot11fIEAPChannelReport             APChannelReport;
10389 	tDot11fIERRMEnabledCap               RRMEnabledCap;
10390 	tDot11fIEMobilityDomain              MobilityDomain;
10391 	tDot11fIEWPA                         WPA;
10392 	tDot11fIEHTCaps                      HTCaps;
10393 	tDot11fIEHTInfo                      HTInfo;
10394 	tDot11fIEsec_chan_offset_ele         sec_chan_offset_ele;
10395 	tDot11fIEWMMInfoAp                   WMMInfoAp;
10396 	tDot11fIEWMMParams                   WMMParams;
10397 	tDot11fIEWMMCaps                     WMMCaps;
10398 	tDot11fIEWAPI                        WAPI;
10399 	tDot11fIEESERadMgmtCap               ESERadMgmtCap;
10400 	tDot11fIEESETrafStrmMet              ESETrafStrmMet;
10401 	tDot11fIEESETxmitPower               ESETxmitPower;
10402 	tDot11fIEWscBeacon                   WscBeacon;
10403 	tDot11fIEP2PBeacon                   P2PBeacon;
10404 	tDot11fIEVHTCaps                     VHTCaps;
10405 	tDot11fIEVHTOperation                VHTOperation;
10406 	uint16_t                             num_transmit_power_env;
10407 	tDot11fIEtransmit_power_env          transmit_power_env[8];
10408 	tDot11fIEVHTExtBssLoad               VHTExtBssLoad;
10409 	tDot11fIEExtCap                      ExtCap;
10410 	tDot11fIEOperatingMode               OperatingMode;
10411 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
10412 	tDot11fIEOBSSScanParameters          OBSSScanParameters;
10413 	tDot11fIEfils_indication             fils_indication;
10414 	tDot11fIEVendor1IE                   Vendor1IE;
10415 	tDot11fIEvendor_vht_ie               vendor_vht_ie;
10416 	tDot11fIEVendor3IE                   Vendor3IE;
10417 	tDot11fIEhs20vendor_ie               hs20vendor_ie;
10418 	tDot11fIEChannelSwitchWrapper        ChannelSwitchWrapper;
10419 	tDot11fIEQComVendorIE                QComVendorIE;
10420 	tDot11fIEESEVersion                  ESEVersion;
10421 	tDot11fIEMBO_IE                      MBO_IE;
10422 	tDot11fIEqcn_ie                      qcn_ie;
10423 	tDot11fIEhe_cap                      he_cap;
10424 	tDot11fIEhe_op                       he_op;
10425 	tDot11fIEhe_6ghz_band_cap            he_6ghz_band_cap;
10426 	tDot11fIEbss_color_change            bss_color_change;
10427 	tDot11fIEmu_edca_param_set           mu_edca_param_set;
10428 	tDot11fIEesp_information             esp_information;
10429 	tDot11fIEeht_cap                     eht_cap;
10430 	tDot11fIEeht_op                      eht_op;
10431 	tDot11fIEmax_chan_switch_time        max_chan_switch_time;
10432 } tDot11fBeacon;
10433 
10434 #define DOT11F_BEACON (6)
10435 
10436 #ifdef __cplusplus
10437 extern "C" {
10438 #endif /* C++ */
10439 
10440 uint32_t dot11f_unpack_beacon(tpAniSirGlobal pCtx,
10441 	uint8_t *pBuf, uint32_t nBuf,
10442 	tDot11fBeacon * pFrm, bool append_ie);
10443 uint32_t dot11f_pack_beacon(tpAniSirGlobal pCtx,
10444 	tDot11fBeacon *pFrm, uint8_t *pBuf,
10445 	uint32_t nBuf, uint32_t *pnConsumed);
10446 uint32_t dot11f_get_packed_beacon_size(tpAniSirGlobal pCtx,
10447 	tDot11fBeacon *pFrm,
10448 	uint32_t *pnNeeded);
10449 
10450 #ifdef __cplusplus
10451 } /* End extern "C". */
10452 #endif /* C++ */
10453 
10454 typedef struct sDot11fBeacon1{
10455 	tDot11fFfTimeStamp             TimeStamp;
10456 	tDot11fFfBeaconInterval        BeaconInterval;
10457 	tDot11fFfCapabilities          Capabilities;
10458 	tDot11fIESSID                  SSID;
10459 	tDot11fIESuppRates             SuppRates;
10460 	tDot11fIEDSParams              DSParams;
10461 } tDot11fBeacon1;
10462 
10463 #define DOT11F_BEACON1 (7)
10464 
10465 #ifdef __cplusplus
10466 extern "C" {
10467 #endif /* C++ */
10468 
10469 uint32_t dot11f_unpack_beacon1(tpAniSirGlobal pCtx,
10470 	uint8_t *pBuf, uint32_t nBuf,
10471 	tDot11fBeacon1 * pFrm, bool append_ie);
10472 uint32_t dot11f_pack_beacon1(tpAniSirGlobal pCtx,
10473 	tDot11fBeacon1 *pFrm, uint8_t *pBuf,
10474 	uint32_t nBuf, uint32_t *pnConsumed);
10475 uint32_t dot11f_get_packed_beacon1_size(tpAniSirGlobal pCtx,
10476 	tDot11fBeacon1 *pFrm,
10477 	uint32_t *pnNeeded);
10478 
10479 #ifdef __cplusplus
10480 } /* End extern "C". */
10481 #endif /* C++ */
10482 
10483 typedef struct sDot11fBeacon2{
10484 	tDot11fIECountry                     Country;
10485 	tDot11fIEPowerConstraints            PowerConstraints;
10486 	tDot11fIEChanSwitchAnn               ChanSwitchAnn;
10487 	tDot11fIEext_chan_switch_ann         ext_chan_switch_ann;
10488 	tDot11fIESuppOperatingClasses        SuppOperatingClasses;
10489 	tDot11fIEQuiet                       Quiet;
10490 	tDot11fIETPCReport                   TPCReport;
10491 	tDot11fIEERPInfo                     ERPInfo;
10492 	tDot11fIEExtSuppRates                ExtSuppRates;
10493 	tDot11fIERSNOpaque                   RSNOpaque;
10494 	tDot11fIEEDCAParamSet                EDCAParamSet;
10495 	tDot11fIEAPChannelReport             APChannelReport;
10496 	tDot11fIERRMEnabledCap               RRMEnabledCap;
10497 	tDot11fIEMobilityDomain              MobilityDomain;
10498 	tDot11fIEWPA                         WPA;
10499 	tDot11fIEHTCaps                      HTCaps;
10500 	tDot11fIEHTInfo                      HTInfo;
10501 	tDot11fIEsec_chan_offset_ele         sec_chan_offset_ele;
10502 	tDot11fIEWMMInfoAp                   WMMInfoAp;
10503 	tDot11fIEWMMParams                   WMMParams;
10504 	tDot11fIEWMMCaps                     WMMCaps;
10505 	tDot11fIEWscBeacon                   WscBeacon;
10506 	tDot11fIEWAPI                        WAPI;
10507 	tDot11fIEESERadMgmtCap               ESERadMgmtCap;
10508 	tDot11fIEESETrafStrmMet              ESETrafStrmMet;
10509 	tDot11fIEESETxmitPower               ESETxmitPower;
10510 	tDot11fIEP2PBeacon                   P2PBeacon;
10511 	tDot11fIEVHTCaps                     VHTCaps;
10512 	tDot11fIEVHTOperation                VHTOperation;
10513 	uint16_t                             num_transmit_power_env;
10514 	tDot11fIEtransmit_power_env          transmit_power_env[8];
10515 	tDot11fIEChannelSwitchWrapper        ChannelSwitchWrapper;
10516 	tDot11fIEVHTExtBssLoad               VHTExtBssLoad;
10517 	tDot11fIEExtCap                      ExtCap;
10518 	tDot11fIEOperatingMode               OperatingMode;
10519 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
10520 	tDot11fIEOBSSScanParameters          OBSSScanParameters;
10521 	tDot11fIEfils_indication             fils_indication;
10522 	tDot11fIEVendor1IE                   Vendor1IE;
10523 	tDot11fIEvendor_vht_ie               vendor_vht_ie;
10524 	tDot11fIEVendor3IE                   Vendor3IE;
10525 	tDot11fIEhs20vendor_ie               hs20vendor_ie;
10526 	tDot11fIEQComVendorIE                QComVendorIE;
10527 	tDot11fIEESEVersion                  ESEVersion;
10528 	tDot11fIEqcn_ie                      qcn_ie;
10529 	tDot11fIEhe_cap                      he_cap;
10530 	tDot11fIEhe_op                       he_op;
10531 	tDot11fIEhe_6ghz_band_cap            he_6ghz_band_cap;
10532 	tDot11fIEbss_color_change            bss_color_change;
10533 	tDot11fIEmu_edca_param_set           mu_edca_param_set;
10534 	tDot11fIEesp_information             esp_information;
10535 	tDot11fIEeht_cap                     eht_cap;
10536 	tDot11fIEeht_op                      eht_op;
10537 	tDot11fIEmax_chan_switch_time        max_chan_switch_time;
10538 } tDot11fBeacon2;
10539 
10540 #define DOT11F_BEACON2 (8)
10541 
10542 #ifdef __cplusplus
10543 extern "C" {
10544 #endif /* C++ */
10545 
10546 uint32_t dot11f_unpack_beacon2(tpAniSirGlobal pCtx,
10547 	uint8_t *pBuf, uint32_t nBuf,
10548 	tDot11fBeacon2 * pFrm, bool append_ie);
10549 uint32_t dot11f_pack_beacon2(tpAniSirGlobal pCtx,
10550 	tDot11fBeacon2 *pFrm, uint8_t *pBuf,
10551 	uint32_t nBuf, uint32_t *pnConsumed);
10552 uint32_t dot11f_get_packed_beacon2_size(tpAniSirGlobal pCtx,
10553 	tDot11fBeacon2 *pFrm,
10554 	uint32_t *pnNeeded);
10555 
10556 #ifdef __cplusplus
10557 } /* End extern "C". */
10558 #endif /* C++ */
10559 
10560 typedef struct sDot11fBeaconIEs{
10561 	tDot11fIESSID                        SSID;
10562 	tDot11fIESuppRates                   SuppRates;
10563 	tDot11fIEFHParamSet                  FHParamSet;
10564 	tDot11fIEDSParams                    DSParams;
10565 	tDot11fIECFParams                    CFParams;
10566 	tDot11fIETIM                         TIM;
10567 	tDot11fIECountry                     Country;
10568 	tDot11fIEFHParams                    FHParams;
10569 	tDot11fIEFHPattTable                 FHPattTable;
10570 	tDot11fIEPowerConstraints            PowerConstraints;
10571 	tDot11fIEChanSwitchAnn               ChanSwitchAnn;
10572 	tDot11fIEext_chan_switch_ann         ext_chan_switch_ann;
10573 	tDot11fIESuppOperatingClasses        SuppOperatingClasses;
10574 	tDot11fIEQuiet                       Quiet;
10575 	tDot11fIETPCReport                   TPCReport;
10576 	tDot11fIEERPInfo                     ERPInfo;
10577 	tDot11fIEExtSuppRates                ExtSuppRates;
10578 	tDot11fIERSN                         RSN;
10579 	tDot11fIEQBSSLoad                    QBSSLoad;
10580 	tDot11fIEEDCAParamSet                EDCAParamSet;
10581 	tDot11fIEQOSCapsAp                   QOSCapsAp;
10582 	tDot11fIEAPChannelReport             APChannelReport;
10583 	tDot11fIERRMEnabledCap               RRMEnabledCap;
10584 	tDot11fIEMobilityDomain              MobilityDomain;
10585 	tDot11fIEWPA                         WPA;
10586 	tDot11fIEHTCaps                      HTCaps;
10587 	tDot11fIEHTInfo                      HTInfo;
10588 	tDot11fIEsec_chan_offset_ele         sec_chan_offset_ele;
10589 	tDot11fIEWMMInfoAp                   WMMInfoAp;
10590 	tDot11fIEWMMParams                   WMMParams;
10591 	tDot11fIEWMMCaps                     WMMCaps;
10592 	tDot11fIEWAPI                        WAPI;
10593 	tDot11fIEESEVersion                  ESEVersion;
10594 	tDot11fIEESERadMgmtCap               ESERadMgmtCap;
10595 	tDot11fIEESETrafStrmMet              ESETrafStrmMet;
10596 	tDot11fIEESETxmitPower               ESETxmitPower;
10597 	tDot11fIEWscBeaconProbeRes           WscBeaconProbeRes;
10598 	tDot11fIEP2PBeaconProbeRes           P2PBeaconProbeRes;
10599 	tDot11fIEVHTCaps                     VHTCaps;
10600 	tDot11fIEVHTOperation                VHTOperation;
10601 	uint16_t                             num_transmit_power_env;
10602 	tDot11fIEtransmit_power_env          transmit_power_env[8];
10603 	tDot11fIEVHTExtBssLoad               VHTExtBssLoad;
10604 	tDot11fIEExtCap                      ExtCap;
10605 	tDot11fIEOperatingMode               OperatingMode;
10606 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
10607 	tDot11fIEOBSSScanParameters          OBSSScanParameters;
10608 	tDot11fIEfils_indication             fils_indication;
10609 	tDot11fIEVendor1IE                   Vendor1IE;
10610 	tDot11fIEvendor_vht_ie               vendor_vht_ie;
10611 	tDot11fIEVendor3IE                   Vendor3IE;
10612 	tDot11fIEhs20vendor_ie               hs20vendor_ie;
10613 	tDot11fIEChannelSwitchWrapper        ChannelSwitchWrapper;
10614 	tDot11fIEQComVendorIE                QComVendorIE;
10615 	tDot11fIEMBO_IE                      MBO_IE;
10616 	tDot11fIEqcn_ie                      qcn_ie;
10617 	tDot11fIEhe_cap                      he_cap;
10618 	tDot11fIEhe_op                       he_op;
10619 	tDot11fIEhe_6ghz_band_cap            he_6ghz_band_cap;
10620 	tDot11fIEbss_color_change            bss_color_change;
10621 	tDot11fIEmu_edca_param_set           mu_edca_param_set;
10622 	tDot11fIEesp_information             esp_information;
10623 	tDot11fIEeht_cap                     eht_cap;
10624 	tDot11fIEeht_op                      eht_op;
10625 	tDot11fIEmax_chan_switch_time        max_chan_switch_time;
10626 } tDot11fBeaconIEs;
10627 
10628 #define DOT11F_BEACONIES (9)
10629 
10630 #ifdef __cplusplus
10631 extern "C" {
10632 #endif /* C++ */
10633 
10634 uint32_t dot11f_unpack_beacon_i_es(tpAniSirGlobal pCtx,
10635 	uint8_t *pBuf, uint32_t nBuf,
10636 	tDot11fBeaconIEs * pFrm, bool append_ie);
10637 uint32_t dot11f_pack_beacon_i_es(tpAniSirGlobal pCtx,
10638 	tDot11fBeaconIEs *pFrm, uint8_t *pBuf,
10639 	uint32_t nBuf, uint32_t *pnConsumed);
10640 uint32_t dot11f_get_packed_beacon_i_es_size(tpAniSirGlobal pCtx,
10641 	tDot11fBeaconIEs *pFrm,
10642 	uint32_t *pnNeeded);
10643 
10644 #ifdef __cplusplus
10645 } /* End extern "C". */
10646 #endif /* C++ */
10647 
10648 typedef struct sDot11fChannelSwitch{
10649 	tDot11fFfCategory                    Category;
10650 	tDot11fFfAction                      Action;
10651 	tDot11fIEChanSwitchAnn               ChanSwitchAnn;
10652 	tDot11fIEsec_chan_offset_ele         sec_chan_offset_ele;
10653 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
10654 } tDot11fChannelSwitch;
10655 
10656 #define DOT11F_CHANNELSWITCH (10)
10657 
10658 #ifdef __cplusplus
10659 extern "C" {
10660 #endif /* C++ */
10661 
10662 uint32_t dot11f_unpack_channel_switch(tpAniSirGlobal pCtx,
10663 	uint8_t *pBuf, uint32_t nBuf,
10664 	tDot11fChannelSwitch * pFrm, bool append_ie);
10665 uint32_t dot11f_pack_channel_switch(tpAniSirGlobal pCtx,
10666 	tDot11fChannelSwitch *pFrm, uint8_t *pBuf,
10667 	uint32_t nBuf, uint32_t *pnConsumed);
10668 uint32_t dot11f_get_packed_channel_switch_size(tpAniSirGlobal pCtx,
10669 	tDot11fChannelSwitch *pFrm,
10670 	uint32_t *pnNeeded);
10671 
10672 #ifdef __cplusplus
10673 } /* End extern "C". */
10674 #endif /* C++ */
10675 
10676 typedef struct sDot11fDeAuth{
10677 	tDot11fFfReason           Reason;
10678 	tDot11fIEP2PDeAuth        P2PDeAuth;
10679 } tDot11fDeAuth;
10680 
10681 #define DOT11F_DEAUTH (11)
10682 
10683 #ifdef __cplusplus
10684 extern "C" {
10685 #endif /* C++ */
10686 
10687 uint32_t dot11f_unpack_de_auth(tpAniSirGlobal pCtx,
10688 	uint8_t *pBuf, uint32_t nBuf,
10689 	tDot11fDeAuth * pFrm, bool append_ie);
10690 uint32_t dot11f_pack_de_auth(tpAniSirGlobal pCtx,
10691 	tDot11fDeAuth *pFrm, uint8_t *pBuf,
10692 	uint32_t nBuf, uint32_t *pnConsumed);
10693 uint32_t dot11f_get_packed_de_auth_size(tpAniSirGlobal pCtx,
10694 	tDot11fDeAuth *pFrm,
10695 	uint32_t *pnNeeded);
10696 
10697 #ifdef __cplusplus
10698 } /* End extern "C". */
10699 #endif /* C++ */
10700 
10701 typedef struct sDot11fDelTS{
10702 	tDot11fFfCategory        Category;
10703 	tDot11fFfAction          Action;
10704 	tDot11fFfTSInfo          TSInfo;
10705 	tDot11fFfReason          Reason;
10706 } tDot11fDelTS;
10707 
10708 #define DOT11F_DELTS (12)
10709 
10710 #ifdef __cplusplus
10711 extern "C" {
10712 #endif /* C++ */
10713 
10714 uint32_t dot11f_unpack_del_ts(tpAniSirGlobal pCtx,
10715 	uint8_t *pBuf, uint32_t nBuf,
10716 	tDot11fDelTS * pFrm, bool append_ie);
10717 uint32_t dot11f_pack_del_ts(tpAniSirGlobal pCtx,
10718 	tDot11fDelTS *pFrm, uint8_t *pBuf,
10719 	uint32_t nBuf, uint32_t *pnConsumed);
10720 uint32_t dot11f_get_packed_del_ts_size(tpAniSirGlobal pCtx,
10721 	tDot11fDelTS *pFrm,
10722 	uint32_t *pnNeeded);
10723 
10724 #ifdef __cplusplus
10725 } /* End extern "C". */
10726 #endif /* C++ */
10727 
10728 typedef struct sDot11fDisassociation{
10729 	tDot11fFfReason             Reason;
10730 	tDot11fIEP2PDisAssoc        P2PDisAssoc;
10731 } tDot11fDisassociation;
10732 
10733 #define DOT11F_DISASSOCIATION (13)
10734 
10735 #ifdef __cplusplus
10736 extern "C" {
10737 #endif /* C++ */
10738 
10739 uint32_t dot11f_unpack_disassociation(tpAniSirGlobal pCtx,
10740 	uint8_t *pBuf, uint32_t nBuf,
10741 	tDot11fDisassociation * pFrm, bool append_ie);
10742 uint32_t dot11f_pack_disassociation(tpAniSirGlobal pCtx,
10743 	tDot11fDisassociation *pFrm, uint8_t *pBuf,
10744 	uint32_t nBuf, uint32_t *pnConsumed);
10745 uint32_t dot11f_get_packed_disassociation_size(tpAniSirGlobal pCtx,
10746 	tDot11fDisassociation *pFrm,
10747 	uint32_t *pnNeeded);
10748 
10749 #ifdef __cplusplus
10750 } /* End extern "C". */
10751 #endif /* C++ */
10752 
10753 typedef struct sDot11fLinkMeasurementReport{
10754 	tDot11fFfCategory           Category;
10755 	tDot11fFfAction             Action;
10756 	tDot11fFfDialogToken        DialogToken;
10757 	tDot11fFfTPCEleID           TPCEleID;
10758 	tDot11fFfTPCEleLen          TPCEleLen;
10759 	tDot11fFfTxPower            TxPower;
10760 	tDot11fFfLinkMargin         LinkMargin;
10761 	tDot11fFfRxAntennaId        RxAntennaId;
10762 	tDot11fFfTxAntennaId        TxAntennaId;
10763 	tDot11fFfRCPI               RCPI;
10764 	tDot11fFfRSNI               RSNI;
10765 } tDot11fLinkMeasurementReport;
10766 
10767 #define DOT11F_LINKMEASUREMENTREPORT (14)
10768 
10769 #ifdef __cplusplus
10770 extern "C" {
10771 #endif /* C++ */
10772 
10773 uint32_t dot11f_unpack_link_measurement_report(tpAniSirGlobal pCtx,
10774 	uint8_t *pBuf, uint32_t nBuf,
10775 	tDot11fLinkMeasurementReport * pFrm, bool append_ie);
10776 uint32_t dot11f_pack_link_measurement_report(tpAniSirGlobal pCtx,
10777 	tDot11fLinkMeasurementReport *pFrm, uint8_t *pBuf,
10778 	uint32_t nBuf, uint32_t *pnConsumed);
10779 uint32_t dot11f_get_packed_link_measurement_report_size(tpAniSirGlobal pCtx,
10780 	tDot11fLinkMeasurementReport *pFrm,
10781 	uint32_t *pnNeeded);
10782 
10783 #ifdef __cplusplus
10784 } /* End extern "C". */
10785 #endif /* C++ */
10786 
10787 typedef struct sDot11fLinkMeasurementRequest{
10788 	tDot11fFfCategory           Category;
10789 	tDot11fFfAction             Action;
10790 	tDot11fFfDialogToken        DialogToken;
10791 	tDot11fFfTxPower            TxPower;
10792 	tDot11fFfMaxTxPower         MaxTxPower;
10793 } tDot11fLinkMeasurementRequest;
10794 
10795 #define DOT11F_LINKMEASUREMENTREQUEST (15)
10796 
10797 #ifdef __cplusplus
10798 extern "C" {
10799 #endif /* C++ */
10800 
10801 uint32_t dot11f_unpack_link_measurement_request(tpAniSirGlobal pCtx,
10802 	uint8_t *pBuf, uint32_t nBuf,
10803 	tDot11fLinkMeasurementRequest * pFrm, bool append_ie);
10804 uint32_t dot11f_pack_link_measurement_request(tpAniSirGlobal pCtx,
10805 	tDot11fLinkMeasurementRequest *pFrm, uint8_t *pBuf,
10806 	uint32_t nBuf, uint32_t *pnConsumed);
10807 uint32_t dot11f_get_packed_link_measurement_request_size(tpAniSirGlobal pCtx,
10808 	tDot11fLinkMeasurementRequest *pFrm,
10809 	uint32_t *pnNeeded);
10810 
10811 #ifdef __cplusplus
10812 } /* End extern "C". */
10813 #endif /* C++ */
10814 
10815 typedef struct sDot11fMeasurementReport{
10816 	tDot11fFfCategory                 Category;
10817 	tDot11fFfAction                   Action;
10818 	tDot11fFfDialogToken              DialogToken;
10819 	tDot11fIEMeasurementReport        MeasurementReport;
10820 } tDot11fMeasurementReport;
10821 
10822 #define DOT11F_MEASUREMENTREPORT (16)
10823 
10824 #ifdef __cplusplus
10825 extern "C" {
10826 #endif /* C++ */
10827 
10828 uint32_t dot11f_unpack_measurement_report(tpAniSirGlobal pCtx,
10829 	uint8_t *pBuf, uint32_t nBuf,
10830 	tDot11fMeasurementReport * pFrm, bool append_ie);
10831 uint32_t dot11f_pack_measurement_report(tpAniSirGlobal pCtx,
10832 	tDot11fMeasurementReport *pFrm, uint8_t *pBuf,
10833 	uint32_t nBuf, uint32_t *pnConsumed);
10834 uint32_t dot11f_get_packed_measurement_report_size(tpAniSirGlobal pCtx,
10835 	tDot11fMeasurementReport *pFrm,
10836 	uint32_t *pnNeeded);
10837 
10838 #ifdef __cplusplus
10839 } /* End extern "C". */
10840 #endif /* C++ */
10841 
10842 typedef struct sDot11fMeasurementRequest{
10843 	tDot11fFfCategory                  Category;
10844 	tDot11fFfAction                    Action;
10845 	tDot11fFfDialogToken               DialogToken;
10846 	uint16_t                           num_MeasurementRequest;
10847 	tDot11fIEMeasurementRequest        MeasurementRequest[4];
10848 } tDot11fMeasurementRequest;
10849 
10850 #define DOT11F_MEASUREMENTREQUEST (17)
10851 
10852 #ifdef __cplusplus
10853 extern "C" {
10854 #endif /* C++ */
10855 
10856 uint32_t dot11f_unpack_measurement_request(tpAniSirGlobal pCtx,
10857 	uint8_t *pBuf, uint32_t nBuf,
10858 	tDot11fMeasurementRequest * pFrm, bool append_ie);
10859 uint32_t dot11f_pack_measurement_request(tpAniSirGlobal pCtx,
10860 	tDot11fMeasurementRequest *pFrm, uint8_t *pBuf,
10861 	uint32_t nBuf, uint32_t *pnConsumed);
10862 uint32_t dot11f_get_packed_measurement_request_size(tpAniSirGlobal pCtx,
10863 	tDot11fMeasurementRequest *pFrm,
10864 	uint32_t *pnNeeded);
10865 
10866 #ifdef __cplusplus
10867 } /* End extern "C". */
10868 #endif /* C++ */
10869 
10870 typedef struct sDot11fNeighborReportRequest{
10871 	tDot11fFfCategory           Category;
10872 	tDot11fFfAction             Action;
10873 	tDot11fFfDialogToken        DialogToken;
10874 	tDot11fIESSID               SSID;
10875 } tDot11fNeighborReportRequest;
10876 
10877 #define DOT11F_NEIGHBORREPORTREQUEST (18)
10878 
10879 #ifdef __cplusplus
10880 extern "C" {
10881 #endif /* C++ */
10882 
10883 uint32_t dot11f_unpack_neighbor_report_request(tpAniSirGlobal pCtx,
10884 	uint8_t *pBuf, uint32_t nBuf,
10885 	tDot11fNeighborReportRequest * pFrm, bool append_ie);
10886 uint32_t dot11f_pack_neighbor_report_request(tpAniSirGlobal pCtx,
10887 	tDot11fNeighborReportRequest *pFrm, uint8_t *pBuf,
10888 	uint32_t nBuf, uint32_t *pnConsumed);
10889 uint32_t dot11f_get_packed_neighbor_report_request_size(tpAniSirGlobal pCtx,
10890 	tDot11fNeighborReportRequest *pFrm,
10891 	uint32_t *pnNeeded);
10892 
10893 #ifdef __cplusplus
10894 } /* End extern "C". */
10895 #endif /* C++ */
10896 
10897 typedef struct sDot11fNeighborReportResponse{
10898 	tDot11fFfCategory              Category;
10899 	tDot11fFfAction                Action;
10900 	tDot11fFfDialogToken           DialogToken;
10901 	uint16_t                       num_NeighborReport;
10902 	tDot11fIENeighborReport        NeighborReport[15];
10903 } tDot11fNeighborReportResponse;
10904 
10905 #define DOT11F_NEIGHBORREPORTRESPONSE (19)
10906 
10907 #ifdef __cplusplus
10908 extern "C" {
10909 #endif /* C++ */
10910 
10911 uint32_t dot11f_unpack_neighbor_report_response(tpAniSirGlobal pCtx,
10912 	uint8_t *pBuf, uint32_t nBuf,
10913 	tDot11fNeighborReportResponse * pFrm, bool append_ie);
10914 uint32_t dot11f_pack_neighbor_report_response(tpAniSirGlobal pCtx,
10915 	tDot11fNeighborReportResponse *pFrm, uint8_t *pBuf,
10916 	uint32_t nBuf, uint32_t *pnConsumed);
10917 uint32_t dot11f_get_packed_neighbor_report_response_size(tpAniSirGlobal pCtx,
10918 	tDot11fNeighborReportResponse *pFrm,
10919 	uint32_t *pnNeeded);
10920 
10921 #ifdef __cplusplus
10922 } /* End extern "C". */
10923 #endif /* C++ */
10924 
10925 typedef struct sDot11fOperatingMode{
10926 	tDot11fFfCategory             Category;
10927 	tDot11fFfAction               Action;
10928 	tDot11fFfOperatingMode        OperatingMode;
10929 } tDot11fOperatingMode;
10930 
10931 #define DOT11F_OPERATINGMODE (20)
10932 
10933 #ifdef __cplusplus
10934 extern "C" {
10935 #endif /* C++ */
10936 
10937 uint32_t dot11f_unpack_operating_mode(tpAniSirGlobal pCtx,
10938 	uint8_t *pBuf, uint32_t nBuf,
10939 	tDot11fOperatingMode * pFrm, bool append_ie);
10940 uint32_t dot11f_pack_operating_mode(tpAniSirGlobal pCtx,
10941 	tDot11fOperatingMode *pFrm, uint8_t *pBuf,
10942 	uint32_t nBuf, uint32_t *pnConsumed);
10943 uint32_t dot11f_get_packed_operating_mode_size(tpAniSirGlobal pCtx,
10944 	tDot11fOperatingMode *pFrm,
10945 	uint32_t *pnNeeded);
10946 
10947 #ifdef __cplusplus
10948 } /* End extern "C". */
10949 #endif /* C++ */
10950 
10951 typedef struct sDot11fProbeRequest{
10952 	tDot11fIESSID                    SSID;
10953 	tDot11fIESuppRates               SuppRates;
10954 	tDot11fIERequestedInfo           RequestedInfo;
10955 	tDot11fIEExtSuppRates            ExtSuppRates;
10956 	tDot11fIEDSParams                DSParams;
10957 	tDot11fIEHTCaps                  HTCaps;
10958 	tDot11fIEWscProbeReq             WscProbeReq;
10959 	tDot11fIEWFATPC                  WFATPC;
10960 	tDot11fIEP2PProbeReq             P2PProbeReq;
10961 	tDot11fIEVHTCaps                 VHTCaps;
10962 	tDot11fIEExtCap                  ExtCap;
10963 	tDot11fIEqcn_ie                  qcn_ie;
10964 	tDot11fIEhe_cap                  he_cap;
10965 	tDot11fIEhe_6ghz_band_cap        he_6ghz_band_cap;
10966 	tDot11fIEeht_cap                 eht_cap;
10967 } tDot11fProbeRequest;
10968 
10969 #define DOT11F_PROBEREQUEST (21)
10970 
10971 #ifdef __cplusplus
10972 extern "C" {
10973 #endif /* C++ */
10974 
10975 uint32_t dot11f_unpack_probe_request(tpAniSirGlobal pCtx,
10976 	uint8_t *pBuf, uint32_t nBuf,
10977 	tDot11fProbeRequest * pFrm, bool append_ie);
10978 uint32_t dot11f_pack_probe_request(tpAniSirGlobal pCtx,
10979 	tDot11fProbeRequest *pFrm, uint8_t *pBuf,
10980 	uint32_t nBuf, uint32_t *pnConsumed);
10981 uint32_t dot11f_get_packed_probe_request_size(tpAniSirGlobal pCtx,
10982 	tDot11fProbeRequest *pFrm,
10983 	uint32_t *pnNeeded);
10984 
10985 #ifdef __cplusplus
10986 } /* End extern "C". */
10987 #endif /* C++ */
10988 
10989 typedef struct sDot11fProbeResponse{
10990 	tDot11fFfTimeStamp                   TimeStamp;
10991 	tDot11fFfBeaconInterval              BeaconInterval;
10992 	tDot11fFfCapabilities                Capabilities;
10993 	tDot11fIESSID                        SSID;
10994 	tDot11fIESuppRates                   SuppRates;
10995 	tDot11fIEFHParamSet                  FHParamSet;
10996 	tDot11fIEDSParams                    DSParams;
10997 	tDot11fIECFParams                    CFParams;
10998 	tDot11fIECountry                     Country;
10999 	tDot11fIEFHParams                    FHParams;
11000 	tDot11fIEFHPattTable                 FHPattTable;
11001 	tDot11fIEPowerConstraints            PowerConstraints;
11002 	tDot11fIEChanSwitchAnn               ChanSwitchAnn;
11003 	tDot11fIEext_chan_switch_ann         ext_chan_switch_ann;
11004 	tDot11fIESuppOperatingClasses        SuppOperatingClasses;
11005 	tDot11fIEQuiet                       Quiet;
11006 	tDot11fIETPCReport                   TPCReport;
11007 	tDot11fIEERPInfo                     ERPInfo;
11008 	tDot11fIEExtSuppRates                ExtSuppRates;
11009 	tDot11fIERSNOpaque                   RSNOpaque;
11010 	tDot11fIEQBSSLoad                    QBSSLoad;
11011 	tDot11fIEEDCAParamSet                EDCAParamSet;
11012 	tDot11fIERRMEnabledCap               RRMEnabledCap;
11013 	tDot11fIEAPChannelReport             APChannelReport;
11014 	tDot11fIEMobilityDomain              MobilityDomain;
11015 	tDot11fIEWPA                         WPA;
11016 	tDot11fIEHTCaps                      HTCaps;
11017 	tDot11fIEHTInfo                      HTInfo;
11018 	tDot11fIEsec_chan_offset_ele         sec_chan_offset_ele;
11019 	tDot11fIEWMMInfoAp                   WMMInfoAp;
11020 	tDot11fIEWMMParams                   WMMParams;
11021 	tDot11fIEWMMCaps                     WMMCaps;
11022 	tDot11fIEWAPI                        WAPI;
11023 	tDot11fIEESERadMgmtCap               ESERadMgmtCap;
11024 	tDot11fIEESETrafStrmMet              ESETrafStrmMet;
11025 	tDot11fIEESETxmitPower               ESETxmitPower;
11026 	tDot11fIEWscProbeRes                 WscProbeRes;
11027 	tDot11fIEP2PProbeRes                 P2PProbeRes;
11028 	tDot11fIEVHTCaps                     VHTCaps;
11029 	tDot11fIEVHTOperation                VHTOperation;
11030 	uint16_t                             num_transmit_power_env;
11031 	tDot11fIEtransmit_power_env          transmit_power_env[8];
11032 	tDot11fIEChannelSwitchWrapper        ChannelSwitchWrapper;
11033 	tDot11fIEVHTExtBssLoad               VHTExtBssLoad;
11034 	tDot11fIEExtCap                      ExtCap;
11035 	tDot11fIEOBSSScanParameters          OBSSScanParameters;
11036 	tDot11fIEfils_indication             fils_indication;
11037 	tDot11fIEVendor1IE                   Vendor1IE;
11038 	tDot11fIEvendor_vht_ie               vendor_vht_ie;
11039 	tDot11fIEVendor3IE                   Vendor3IE;
11040 	tDot11fIEhs20vendor_ie               hs20vendor_ie;
11041 	tDot11fIEQComVendorIE                QComVendorIE;
11042 	tDot11fIEESEVersion                  ESEVersion;
11043 	tDot11fIEMBO_IE                      MBO_IE;
11044 	tDot11fIEqcn_ie                      qcn_ie;
11045 	tDot11fIEhe_cap                      he_cap;
11046 	tDot11fIEhe_op                       he_op;
11047 	tDot11fIEhe_6ghz_band_cap            he_6ghz_band_cap;
11048 	tDot11fIEbss_color_change            bss_color_change;
11049 	tDot11fIEmu_edca_param_set           mu_edca_param_set;
11050 	tDot11fIEesp_information             esp_information;
11051 	tDot11fIEeht_cap                     eht_cap;
11052 	tDot11fIEeht_op                      eht_op;
11053 	tDot11fIEmax_chan_switch_time        max_chan_switch_time;
11054 } tDot11fProbeResponse;
11055 
11056 #define DOT11F_PROBERESPONSE (22)
11057 
11058 #ifdef __cplusplus
11059 extern "C" {
11060 #endif /* C++ */
11061 
11062 uint32_t dot11f_unpack_probe_response(tpAniSirGlobal pCtx,
11063 	uint8_t *pBuf, uint32_t nBuf,
11064 	tDot11fProbeResponse * pFrm, bool append_ie);
11065 uint32_t dot11f_pack_probe_response(tpAniSirGlobal pCtx,
11066 	tDot11fProbeResponse *pFrm, uint8_t *pBuf,
11067 	uint32_t nBuf, uint32_t *pnConsumed);
11068 uint32_t dot11f_get_packed_probe_response_size(tpAniSirGlobal pCtx,
11069 	tDot11fProbeResponse *pFrm,
11070 	uint32_t *pnNeeded);
11071 
11072 #ifdef __cplusplus
11073 } /* End extern "C". */
11074 #endif /* C++ */
11075 
11076 typedef struct sDot11fQosMapConfigure{
11077 	tDot11fFfCategory         Category;
11078 	tDot11fFfAction           Action;
11079 	tDot11fIEQosMapSet        QosMapSet;
11080 } tDot11fQosMapConfigure;
11081 
11082 #define DOT11F_QOSMAPCONFIGURE (23)
11083 
11084 #ifdef __cplusplus
11085 extern "C" {
11086 #endif /* C++ */
11087 
11088 uint32_t dot11f_unpack_qos_map_configure(tpAniSirGlobal pCtx,
11089 	uint8_t *pBuf, uint32_t nBuf,
11090 	tDot11fQosMapConfigure * pFrm, bool append_ie);
11091 uint32_t dot11f_pack_qos_map_configure(tpAniSirGlobal pCtx,
11092 	tDot11fQosMapConfigure *pFrm, uint8_t *pBuf,
11093 	uint32_t nBuf, uint32_t *pnConsumed);
11094 uint32_t dot11f_get_packed_qos_map_configure_size(tpAniSirGlobal pCtx,
11095 	tDot11fQosMapConfigure *pFrm,
11096 	uint32_t *pnNeeded);
11097 
11098 #ifdef __cplusplus
11099 } /* End extern "C". */
11100 #endif /* C++ */
11101 
11102 typedef struct sDot11fRadioMeasurementReport{
11103 	tDot11fFfCategory                 Category;
11104 	tDot11fFfAction                   Action;
11105 	tDot11fFfDialogToken              DialogToken;
11106 	uint16_t                          num_MeasurementReport;
11107 	tDot11fIEMeasurementReport        MeasurementReport[1];
11108 } tDot11fRadioMeasurementReport;
11109 
11110 #define DOT11F_RADIOMEASUREMENTREPORT (24)
11111 
11112 #ifdef __cplusplus
11113 extern "C" {
11114 #endif /* C++ */
11115 
11116 uint32_t dot11f_unpack_radio_measurement_report(tpAniSirGlobal pCtx,
11117 	uint8_t *pBuf, uint32_t nBuf,
11118 	tDot11fRadioMeasurementReport * pFrm, bool append_ie);
11119 uint32_t dot11f_pack_radio_measurement_report(tpAniSirGlobal pCtx,
11120 	tDot11fRadioMeasurementReport *pFrm, uint8_t *pBuf,
11121 	uint32_t nBuf, uint32_t *pnConsumed);
11122 uint32_t dot11f_get_packed_radio_measurement_report_size(tpAniSirGlobal pCtx,
11123 	tDot11fRadioMeasurementReport *pFrm,
11124 	uint32_t *pnNeeded);
11125 
11126 #ifdef __cplusplus
11127 } /* End extern "C". */
11128 #endif /* C++ */
11129 
11130 typedef struct sDot11fRadioMeasurementRequest{
11131 	tDot11fFfCategory                  Category;
11132 	tDot11fFfAction                    Action;
11133 	tDot11fFfDialogToken               DialogToken;
11134 	tDot11fFfNumOfRepetitions          NumOfRepetitions;
11135 	uint16_t                           num_MeasurementRequest;
11136 	tDot11fIEMeasurementRequest        MeasurementRequest[5];
11137 } tDot11fRadioMeasurementRequest;
11138 
11139 #define DOT11F_RADIOMEASUREMENTREQUEST (25)
11140 
11141 #ifdef __cplusplus
11142 extern "C" {
11143 #endif /* C++ */
11144 
11145 uint32_t dot11f_unpack_radio_measurement_request(tpAniSirGlobal pCtx,
11146 	uint8_t *pBuf, uint32_t nBuf,
11147 	tDot11fRadioMeasurementRequest * pFrm, bool append_ie);
11148 uint32_t dot11f_pack_radio_measurement_request(tpAniSirGlobal pCtx,
11149 	tDot11fRadioMeasurementRequest *pFrm, uint8_t *pBuf,
11150 	uint32_t nBuf, uint32_t *pnConsumed);
11151 uint32_t dot11f_get_packed_radio_measurement_request_size(tpAniSirGlobal pCtx,
11152 	tDot11fRadioMeasurementRequest *pFrm,
11153 	uint32_t *pnNeeded);
11154 
11155 #ifdef __cplusplus
11156 } /* End extern "C". */
11157 #endif /* C++ */
11158 
11159 typedef struct sDot11fReAssocRequest{
11160 	tDot11fFfCapabilities                Capabilities;
11161 	tDot11fFfListenInterval              ListenInterval;
11162 	tDot11fFfCurrentAPAddress            CurrentAPAddress;
11163 	tDot11fIESSID                        SSID;
11164 	tDot11fIESuppRates                   SuppRates;
11165 	tDot11fIEExtSuppRates                ExtSuppRates;
11166 	tDot11fIEPowerCaps                   PowerCaps;
11167 	tDot11fIESuppChannels                SuppChannels;
11168 	tDot11fIERSNOpaque                   RSNOpaque;
11169 	tDot11fIEQOSCapsStation              QOSCapsStation;
11170 	tDot11fIERRMEnabledCap               RRMEnabledCap;
11171 	tDot11fIEMobilityDomain              MobilityDomain;
11172 	tDot11fIEFTInfo                      FTInfo;
11173 	uint16_t                             num_RICDataDesc;
11174 	tDot11fIERICDataDesc                 RICDataDesc[2];
11175 	tDot11fIEbss_max_idle_period         bss_max_idle_period;
11176 	tDot11fIESuppOperatingClasses        SuppOperatingClasses;
11177 	tDot11fIEWPAOpaque                   WPAOpaque;
11178 	tDot11fIEHTCaps                      HTCaps;
11179 	tDot11fIEWMMCaps                     WMMCaps;
11180 	tDot11fIEWMMInfoStation              WMMInfoStation;
11181 	tDot11fIEWscIEOpaque                 WscIEOpaque;
11182 	tDot11fIEWAPIOpaque                  WAPIOpaque;
11183 	tDot11fIEWAPI                        WAPI;
11184 	tDot11fIEESERadMgmtCap               ESERadMgmtCap;
11185 	tDot11fIEESEVersion                  ESEVersion;
11186 	tDot11fIEESECckmOpaque               ESECckmOpaque;
11187 	uint16_t                             num_WMMTSPEC;
11188 	tDot11fIEWMMTSPEC                    WMMTSPEC[4];
11189 	tDot11fIEESETrafStrmRateSet          ESETrafStrmRateSet;
11190 	tDot11fIEP2PIEOpaque                 P2PIEOpaque;
11191 	tDot11fIEWFDIEOpaque                 WFDIEOpaque;
11192 	tDot11fIEVHTCaps                     VHTCaps;
11193 	tDot11fIEExtCap                      ExtCap;
11194 	tDot11fIEOperatingMode               OperatingMode;
11195 	tDot11fIEQosMapSet                   QosMapSet;
11196 	tDot11fIEvendor_vht_ie               vendor_vht_ie;
11197 	tDot11fIEhs20vendor_ie               hs20vendor_ie;
11198 	tDot11fIEhe_cap                      he_cap;
11199 	tDot11fIEhe_6ghz_band_cap            he_6ghz_band_cap;
11200 	tDot11fIEeht_cap                     eht_cap;
11201 } tDot11fReAssocRequest;
11202 
11203 #define DOT11F_REASSOCREQUEST (26)
11204 
11205 #ifdef __cplusplus
11206 extern "C" {
11207 #endif /* C++ */
11208 
11209 uint32_t dot11f_unpack_re_assoc_request(tpAniSirGlobal pCtx,
11210 	uint8_t *pBuf, uint32_t nBuf,
11211 	tDot11fReAssocRequest * pFrm, bool append_ie);
11212 uint32_t dot11f_pack_re_assoc_request(tpAniSirGlobal pCtx,
11213 	tDot11fReAssocRequest *pFrm, uint8_t *pBuf,
11214 	uint32_t nBuf, uint32_t *pnConsumed);
11215 uint32_t dot11f_get_packed_re_assoc_request_size(tpAniSirGlobal pCtx,
11216 	tDot11fReAssocRequest *pFrm,
11217 	uint32_t *pnNeeded);
11218 
11219 #ifdef __cplusplus
11220 } /* End extern "C". */
11221 #endif /* C++ */
11222 
11223 typedef struct sDot11fReAssocResponse{
11224 	tDot11fFfCapabilities               Capabilities;
11225 	tDot11fFfStatus                     Status;
11226 	tDot11fFfAID                        AID;
11227 	tDot11fIESuppRates                  SuppRates;
11228 	tDot11fIEExtSuppRates               ExtSuppRates;
11229 	tDot11fIEEDCAParamSet               EDCAParamSet;
11230 	tDot11fIERCPIIE                     RCPIIE;
11231 	tDot11fIERSNIIE                     RSNIIE;
11232 	tDot11fIERRMEnabledCap              RRMEnabledCap;
11233 	tDot11fIERSNOpaque                  RSNOpaque;
11234 	tDot11fIEMobilityDomain             MobilityDomain;
11235 	tDot11fIEFTInfo                     FTInfo;
11236 	uint16_t                            num_RICDataDesc;
11237 	tDot11fIERICDataDesc                RICDataDesc[2];
11238 	tDot11fIEbss_max_idle_period        bss_max_idle_period;
11239 	tDot11fIEWPA                        WPA;
11240 	tDot11fIETimeoutInterval            TimeoutInterval;
11241 	tDot11fIEHTCaps                     HTCaps;
11242 	tDot11fIEHTInfo                     HTInfo;
11243 	tDot11fIEWMMParams                  WMMParams;
11244 	tDot11fIEESERadMgmtCap              ESERadMgmtCap;
11245 	tDot11fIEESETrafStrmMet             ESETrafStrmMet;
11246 	tDot11fIEESETxmitPower              ESETxmitPower;
11247 	uint16_t                            num_WMMTSPEC;
11248 	tDot11fIEWMMTSPEC                   WMMTSPEC[4];
11249 	tDot11fIEESETrafStrmRateSet         ESETrafStrmRateSet;
11250 	tDot11fIEWscReassocRes              WscReassocRes;
11251 	tDot11fIEP2PAssocRes                P2PAssocRes;
11252 	tDot11fIEVHTCaps                    VHTCaps;
11253 	tDot11fIEVHTOperation               VHTOperation;
11254 	tDot11fIEExtCap                     ExtCap;
11255 	tDot11fIEOBSSScanParameters         OBSSScanParameters;
11256 	tDot11fIEQosMapSet                  QosMapSet;
11257 	tDot11fIEvendor_vht_ie              vendor_vht_ie;
11258 	tDot11fIEhe_cap                     he_cap;
11259 	tDot11fIEhe_op                      he_op;
11260 	tDot11fIEhe_6ghz_band_cap           he_6ghz_band_cap;
11261 	tDot11fIEbss_color_change           bss_color_change;
11262 	tDot11fIEmu_edca_param_set          mu_edca_param_set;
11263 	tDot11fIEMBO_IE                     MBO_IE;
11264 	tDot11fIEeht_cap                    eht_cap;
11265 	tDot11fIEeht_op                     eht_op;
11266 } tDot11fReAssocResponse;
11267 
11268 #define DOT11F_REASSOCRESPONSE (27)
11269 
11270 #ifdef __cplusplus
11271 extern "C" {
11272 #endif /* C++ */
11273 
11274 uint32_t dot11f_unpack_re_assoc_response(tpAniSirGlobal pCtx,
11275 	uint8_t *pBuf, uint32_t nBuf,
11276 	tDot11fReAssocResponse * pFrm, bool append_ie);
11277 uint32_t dot11f_pack_re_assoc_response(tpAniSirGlobal pCtx,
11278 	tDot11fReAssocResponse *pFrm, uint8_t *pBuf,
11279 	uint32_t nBuf, uint32_t *pnConsumed);
11280 uint32_t dot11f_get_packed_re_assoc_response_size(tpAniSirGlobal pCtx,
11281 	tDot11fReAssocResponse *pFrm,
11282 	uint32_t *pnNeeded);
11283 
11284 #ifdef __cplusplus
11285 } /* End extern "C". */
11286 #endif /* C++ */
11287 
11288 typedef struct sDot11fSMPowerSave{
11289 	tDot11fFfCategory              Category;
11290 	tDot11fFfAction                Action;
11291 	tDot11fFfSMPowerModeSet        SMPowerModeSet;
11292 } tDot11fSMPowerSave;
11293 
11294 #define DOT11F_SMPOWERSAVE (28)
11295 
11296 #ifdef __cplusplus
11297 extern "C" {
11298 #endif /* C++ */
11299 
11300 uint32_t dot11f_unpack_sm_power_save(tpAniSirGlobal pCtx,
11301 	uint8_t *pBuf, uint32_t nBuf,
11302 	tDot11fSMPowerSave * pFrm, bool append_ie);
11303 uint32_t dot11f_pack_sm_power_save(tpAniSirGlobal pCtx,
11304 	tDot11fSMPowerSave *pFrm, uint8_t *pBuf,
11305 	uint32_t nBuf, uint32_t *pnConsumed);
11306 uint32_t dot11f_get_packed_sm_power_save_size(tpAniSirGlobal pCtx,
11307 	tDot11fSMPowerSave *pFrm,
11308 	uint32_t *pnNeeded);
11309 
11310 #ifdef __cplusplus
11311 } /* End extern "C". */
11312 #endif /* C++ */
11313 
11314 typedef struct sDot11fSaQueryReq{
11315 	tDot11fFfCategory             Category;
11316 	tDot11fFfAction               Action;
11317 	tDot11fFfTransactionId        TransactionId;
11318 	tDot11fIEoci                  oci;
11319 } tDot11fSaQueryReq;
11320 
11321 #define DOT11F_SAQUERYREQ (29)
11322 
11323 #ifdef __cplusplus
11324 extern "C" {
11325 #endif /* C++ */
11326 
11327 uint32_t dot11f_unpack_sa_query_req(tpAniSirGlobal pCtx,
11328 	uint8_t *pBuf, uint32_t nBuf,
11329 	tDot11fSaQueryReq * pFrm, bool append_ie);
11330 uint32_t dot11f_pack_sa_query_req(tpAniSirGlobal pCtx,
11331 	tDot11fSaQueryReq *pFrm, uint8_t *pBuf,
11332 	uint32_t nBuf, uint32_t *pnConsumed);
11333 uint32_t dot11f_get_packed_sa_query_req_size(tpAniSirGlobal pCtx,
11334 	tDot11fSaQueryReq *pFrm,
11335 	uint32_t *pnNeeded);
11336 
11337 #ifdef __cplusplus
11338 } /* End extern "C". */
11339 #endif /* C++ */
11340 
11341 typedef struct sDot11fSaQueryRsp{
11342 	tDot11fFfCategory             Category;
11343 	tDot11fFfAction               Action;
11344 	tDot11fFfTransactionId        TransactionId;
11345 	tDot11fIEoci                  oci;
11346 } tDot11fSaQueryRsp;
11347 
11348 #define DOT11F_SAQUERYRSP (30)
11349 
11350 #ifdef __cplusplus
11351 extern "C" {
11352 #endif /* C++ */
11353 
11354 uint32_t dot11f_unpack_sa_query_rsp(tpAniSirGlobal pCtx,
11355 	uint8_t *pBuf, uint32_t nBuf,
11356 	tDot11fSaQueryRsp * pFrm, bool append_ie);
11357 uint32_t dot11f_pack_sa_query_rsp(tpAniSirGlobal pCtx,
11358 	tDot11fSaQueryRsp *pFrm, uint8_t *pBuf,
11359 	uint32_t nBuf, uint32_t *pnConsumed);
11360 uint32_t dot11f_get_packed_sa_query_rsp_size(tpAniSirGlobal pCtx,
11361 	tDot11fSaQueryRsp *pFrm,
11362 	uint32_t *pnNeeded);
11363 
11364 #ifdef __cplusplus
11365 } /* End extern "C". */
11366 #endif /* C++ */
11367 
11368 typedef struct sDot11fTDLSDisReq{
11369 	tDot11fFfCategory              Category;
11370 	tDot11fFfAction                Action;
11371 	tDot11fFfDialogToken           DialogToken;
11372 	tDot11fIELinkIdentifier        LinkIdentifier;
11373 } tDot11fTDLSDisReq;
11374 
11375 #define DOT11F_TDLSDISREQ (31)
11376 
11377 #ifdef __cplusplus
11378 extern "C" {
11379 #endif /* C++ */
11380 
11381 uint32_t dot11f_unpack_tdls_dis_req(tpAniSirGlobal pCtx,
11382 	uint8_t *pBuf, uint32_t nBuf,
11383 	tDot11fTDLSDisReq * pFrm, bool append_ie);
11384 uint32_t dot11f_pack_tdls_dis_req(tpAniSirGlobal pCtx,
11385 	tDot11fTDLSDisReq *pFrm, uint8_t *pBuf,
11386 	uint32_t nBuf, uint32_t *pnConsumed);
11387 uint32_t dot11f_get_packed_tdls_dis_req_size(tpAniSirGlobal pCtx,
11388 	tDot11fTDLSDisReq *pFrm,
11389 	uint32_t *pnNeeded);
11390 
11391 #ifdef __cplusplus
11392 } /* End extern "C". */
11393 #endif /* C++ */
11394 
11395 typedef struct sDot11fTDLSDisRsp{
11396 	tDot11fFfCategory                      Category;
11397 	tDot11fFfAction                        Action;
11398 	tDot11fFfDialogToken                   DialogToken;
11399 	tDot11fFfCapabilities                  Capabilities;
11400 	tDot11fIESuppRates                     SuppRates;
11401 	tDot11fIEExtSuppRates                  ExtSuppRates;
11402 	tDot11fIESuppChannels                  SuppChannels;
11403 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
11404 	tDot11fIERSN                           RSN;
11405 	tDot11fIEExtCap                        ExtCap;
11406 	tDot11fIEFTInfo                        FTInfo;
11407 	tDot11fIETimeoutInterval               TimeoutInterval;
11408 	tDot11fIERICData                       RICData;
11409 	tDot11fIEHTCaps                        HTCaps;
11410 	tDot11fIEht2040_bss_coexistence        ht2040_bss_coexistence;
11411 	tDot11fIELinkIdentifier                LinkIdentifier;
11412 	tDot11fIEVHTCaps                       VHTCaps;
11413 	tDot11fIEhe_cap                        he_cap;
11414 } tDot11fTDLSDisRsp;
11415 
11416 #define DOT11F_TDLSDISRSP (32)
11417 
11418 #ifdef __cplusplus
11419 extern "C" {
11420 #endif /* C++ */
11421 
11422 uint32_t dot11f_unpack_tdls_dis_rsp(tpAniSirGlobal pCtx,
11423 	uint8_t *pBuf, uint32_t nBuf,
11424 	tDot11fTDLSDisRsp * pFrm, bool append_ie);
11425 uint32_t dot11f_pack_tdls_dis_rsp(tpAniSirGlobal pCtx,
11426 	tDot11fTDLSDisRsp *pFrm, uint8_t *pBuf,
11427 	uint32_t nBuf, uint32_t *pnConsumed);
11428 uint32_t dot11f_get_packed_tdls_dis_rsp_size(tpAniSirGlobal pCtx,
11429 	tDot11fTDLSDisRsp *pFrm,
11430 	uint32_t *pnNeeded);
11431 
11432 #ifdef __cplusplus
11433 } /* End extern "C". */
11434 #endif /* C++ */
11435 
11436 typedef struct sDot11fTDLSPeerTrafficInd{
11437 	tDot11fFfCategory              Category;
11438 	tDot11fFfAction                Action;
11439 	tDot11fFfDialogToken           DialogToken;
11440 	tDot11fIELinkIdentifier        LinkIdentifier;
11441 	tDot11fIEPTIControl            PTIControl;
11442 	tDot11fIEPUBufferStatus        PUBufferStatus;
11443 } tDot11fTDLSPeerTrafficInd;
11444 
11445 #define DOT11F_TDLSPEERTRAFFICIND (33)
11446 
11447 #ifdef __cplusplus
11448 extern "C" {
11449 #endif /* C++ */
11450 
11451 uint32_t dot11f_unpack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx,
11452 	uint8_t *pBuf, uint32_t nBuf,
11453 	tDot11fTDLSPeerTrafficInd * pFrm, bool append_ie);
11454 uint32_t dot11f_pack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx,
11455 	tDot11fTDLSPeerTrafficInd *pFrm, uint8_t *pBuf,
11456 	uint32_t nBuf, uint32_t *pnConsumed);
11457 uint32_t dot11f_get_packed_tdls_peer_traffic_ind_size(tpAniSirGlobal pCtx,
11458 	tDot11fTDLSPeerTrafficInd *pFrm,
11459 	uint32_t *pnNeeded);
11460 
11461 #ifdef __cplusplus
11462 } /* End extern "C". */
11463 #endif /* C++ */
11464 
11465 typedef struct sDot11fTDLSPeerTrafficRsp{
11466 	tDot11fFfCategory              Category;
11467 	tDot11fFfAction                Action;
11468 	tDot11fFfDialogToken           DialogToken;
11469 	tDot11fIELinkIdentifier        LinkIdentifier;
11470 } tDot11fTDLSPeerTrafficRsp;
11471 
11472 #define DOT11F_TDLSPEERTRAFFICRSP (34)
11473 
11474 #ifdef __cplusplus
11475 extern "C" {
11476 #endif /* C++ */
11477 
11478 uint32_t dot11f_unpack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx,
11479 	uint8_t *pBuf, uint32_t nBuf,
11480 	tDot11fTDLSPeerTrafficRsp * pFrm, bool append_ie);
11481 uint32_t dot11f_pack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx,
11482 	tDot11fTDLSPeerTrafficRsp *pFrm, uint8_t *pBuf,
11483 	uint32_t nBuf, uint32_t *pnConsumed);
11484 uint32_t dot11f_get_packed_tdls_peer_traffic_rsp_size(tpAniSirGlobal pCtx,
11485 	tDot11fTDLSPeerTrafficRsp *pFrm,
11486 	uint32_t *pnNeeded);
11487 
11488 #ifdef __cplusplus
11489 } /* End extern "C". */
11490 #endif /* C++ */
11491 
11492 typedef struct sDot11fTDLSSetupCnf{
11493 	tDot11fFfCategory               Category;
11494 	tDot11fFfAction                 Action;
11495 	tDot11fFfStatus                 Status;
11496 	tDot11fFfDialogToken            DialogToken;
11497 	tDot11fIERSN                    RSN;
11498 	tDot11fIEEDCAParamSet           EDCAParamSet;
11499 	tDot11fIEFTInfo                 FTInfo;
11500 	tDot11fIETimeoutInterval        TimeoutInterval;
11501 	tDot11fIEHTInfo                 HTInfo;
11502 	tDot11fIELinkIdentifier         LinkIdentifier;
11503 	tDot11fIEWMMParams              WMMParams;
11504 	tDot11fIEVHTOperation           VHTOperation;
11505 	tDot11fIEOperatingMode          OperatingMode;
11506 	tDot11fIEhe_op                  he_op;
11507 } tDot11fTDLSSetupCnf;
11508 
11509 #define DOT11F_TDLSSETUPCNF (35)
11510 
11511 #ifdef __cplusplus
11512 extern "C" {
11513 #endif /* C++ */
11514 
11515 uint32_t dot11f_unpack_tdls_setup_cnf(tpAniSirGlobal pCtx,
11516 	uint8_t *pBuf, uint32_t nBuf,
11517 	tDot11fTDLSSetupCnf * pFrm, bool append_ie);
11518 uint32_t dot11f_pack_tdls_setup_cnf(tpAniSirGlobal pCtx,
11519 	tDot11fTDLSSetupCnf *pFrm, uint8_t *pBuf,
11520 	uint32_t nBuf, uint32_t *pnConsumed);
11521 uint32_t dot11f_get_packed_tdls_setup_cnf_size(tpAniSirGlobal pCtx,
11522 	tDot11fTDLSSetupCnf *pFrm,
11523 	uint32_t *pnNeeded);
11524 
11525 #ifdef __cplusplus
11526 } /* End extern "C". */
11527 #endif /* C++ */
11528 
11529 typedef struct sDot11fTDLSSetupReq{
11530 	tDot11fFfCategory                      Category;
11531 	tDot11fFfAction                        Action;
11532 	tDot11fFfDialogToken                   DialogToken;
11533 	tDot11fFfCapabilities                  Capabilities;
11534 	tDot11fIESuppRates                     SuppRates;
11535 	tDot11fIECountry                       Country;
11536 	tDot11fIEExtSuppRates                  ExtSuppRates;
11537 	tDot11fIESuppChannels                  SuppChannels;
11538 	tDot11fIERSN                           RSN;
11539 	tDot11fIEExtCap                        ExtCap;
11540 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
11541 	tDot11fIEQOSCapsStation                QOSCapsStation;
11542 	tDot11fIEFTInfo                        FTInfo;
11543 	tDot11fIETimeoutInterval               TimeoutInterval;
11544 	tDot11fIERICData                       RICData;
11545 	tDot11fIEHTCaps                        HTCaps;
11546 	tDot11fIEht2040_bss_coexistence        ht2040_bss_coexistence;
11547 	tDot11fIELinkIdentifier                LinkIdentifier;
11548 	tDot11fIEWMMInfoStation                WMMInfoStation;
11549 	tDot11fIEAID                           AID;
11550 	tDot11fIEVHTCaps                       VHTCaps;
11551 	tDot11fIEhe_cap                        he_cap;
11552 } tDot11fTDLSSetupReq;
11553 
11554 #define DOT11F_TDLSSETUPREQ (36)
11555 
11556 #ifdef __cplusplus
11557 extern "C" {
11558 #endif /* C++ */
11559 
11560 uint32_t dot11f_unpack_tdls_setup_req(tpAniSirGlobal pCtx,
11561 	uint8_t *pBuf, uint32_t nBuf,
11562 	tDot11fTDLSSetupReq * pFrm, bool append_ie);
11563 uint32_t dot11f_pack_tdls_setup_req(tpAniSirGlobal pCtx,
11564 	tDot11fTDLSSetupReq *pFrm, uint8_t *pBuf,
11565 	uint32_t nBuf, uint32_t *pnConsumed);
11566 uint32_t dot11f_get_packed_tdls_setup_req_size(tpAniSirGlobal pCtx,
11567 	tDot11fTDLSSetupReq *pFrm,
11568 	uint32_t *pnNeeded);
11569 
11570 #ifdef __cplusplus
11571 } /* End extern "C". */
11572 #endif /* C++ */
11573 
11574 typedef struct sDot11fTDLSSetupRsp{
11575 	tDot11fFfCategory                      Category;
11576 	tDot11fFfAction                        Action;
11577 	tDot11fFfStatus                        Status;
11578 	tDot11fFfDialogToken                   DialogToken;
11579 	tDot11fFfCapabilities                  Capabilities;
11580 	tDot11fIESuppRates                     SuppRates;
11581 	tDot11fIECountry                       Country;
11582 	tDot11fIEExtSuppRates                  ExtSuppRates;
11583 	tDot11fIESuppChannels                  SuppChannels;
11584 	tDot11fIERSN                           RSN;
11585 	tDot11fIEExtCap                        ExtCap;
11586 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
11587 	tDot11fIEQOSCapsStation                QOSCapsStation;
11588 	tDot11fIEFTInfo                        FTInfo;
11589 	tDot11fIETimeoutInterval               TimeoutInterval;
11590 	tDot11fIERICData                       RICData;
11591 	tDot11fIEHTCaps                        HTCaps;
11592 	tDot11fIEht2040_bss_coexistence        ht2040_bss_coexistence;
11593 	tDot11fIELinkIdentifier                LinkIdentifier;
11594 	tDot11fIEWMMInfoStation                WMMInfoStation;
11595 	tDot11fIEAID                           AID;
11596 	tDot11fIEVHTCaps                       VHTCaps;
11597 	tDot11fIEOperatingMode                 OperatingMode;
11598 	tDot11fIEhe_cap                        he_cap;
11599 } tDot11fTDLSSetupRsp;
11600 
11601 #define DOT11F_TDLSSETUPRSP (37)
11602 
11603 #ifdef __cplusplus
11604 extern "C" {
11605 #endif /* C++ */
11606 
11607 uint32_t dot11f_unpack_tdls_setup_rsp(tpAniSirGlobal pCtx,
11608 	uint8_t *pBuf, uint32_t nBuf,
11609 	tDot11fTDLSSetupRsp * pFrm, bool append_ie);
11610 uint32_t dot11f_pack_tdls_setup_rsp(tpAniSirGlobal pCtx,
11611 	tDot11fTDLSSetupRsp *pFrm, uint8_t *pBuf,
11612 	uint32_t nBuf, uint32_t *pnConsumed);
11613 uint32_t dot11f_get_packed_tdls_setup_rsp_size(tpAniSirGlobal pCtx,
11614 	tDot11fTDLSSetupRsp *pFrm,
11615 	uint32_t *pnNeeded);
11616 
11617 #ifdef __cplusplus
11618 } /* End extern "C". */
11619 #endif /* C++ */
11620 
11621 typedef struct sDot11fTDLSTeardown{
11622 	tDot11fFfCategory              Category;
11623 	tDot11fFfAction                Action;
11624 	tDot11fFfReason                Reason;
11625 	tDot11fIEFTInfo                FTInfo;
11626 	tDot11fIELinkIdentifier        LinkIdentifier;
11627 } tDot11fTDLSTeardown;
11628 
11629 #define DOT11F_TDLSTEARDOWN (38)
11630 
11631 #ifdef __cplusplus
11632 extern "C" {
11633 #endif /* C++ */
11634 
11635 uint32_t dot11f_unpack_tdls_teardown(tpAniSirGlobal pCtx,
11636 	uint8_t *pBuf, uint32_t nBuf,
11637 	tDot11fTDLSTeardown * pFrm, bool append_ie);
11638 uint32_t dot11f_pack_tdls_teardown(tpAniSirGlobal pCtx,
11639 	tDot11fTDLSTeardown *pFrm, uint8_t *pBuf,
11640 	uint32_t nBuf, uint32_t *pnConsumed);
11641 uint32_t dot11f_get_packed_tdls_teardown_size(tpAniSirGlobal pCtx,
11642 	tDot11fTDLSTeardown *pFrm,
11643 	uint32_t *pnNeeded);
11644 
11645 #ifdef __cplusplus
11646 } /* End extern "C". */
11647 #endif /* C++ */
11648 
11649 typedef struct sDot11fTPCReport{
11650 	tDot11fFfCategory           Category;
11651 	tDot11fFfAction             Action;
11652 	tDot11fFfDialogToken        DialogToken;
11653 	tDot11fIETPCReport          TPCReport;
11654 } tDot11fTPCReport;
11655 
11656 #define DOT11F_TPCREPORT (39)
11657 
11658 #ifdef __cplusplus
11659 extern "C" {
11660 #endif /* C++ */
11661 
11662 uint32_t dot11f_unpack_tpc_report(tpAniSirGlobal pCtx,
11663 	uint8_t *pBuf, uint32_t nBuf,
11664 	tDot11fTPCReport * pFrm, bool append_ie);
11665 uint32_t dot11f_pack_tpc_report(tpAniSirGlobal pCtx,
11666 	tDot11fTPCReport *pFrm, uint8_t *pBuf,
11667 	uint32_t nBuf, uint32_t *pnConsumed);
11668 uint32_t dot11f_get_packed_tpc_report_size(tpAniSirGlobal pCtx,
11669 	tDot11fTPCReport *pFrm,
11670 	uint32_t *pnNeeded);
11671 
11672 #ifdef __cplusplus
11673 } /* End extern "C". */
11674 #endif /* C++ */
11675 
11676 typedef struct sDot11fTPCRequest{
11677 	tDot11fFfCategory           Category;
11678 	tDot11fFfAction             Action;
11679 	tDot11fFfDialogToken        DialogToken;
11680 	tDot11fIETPCRequest         TPCRequest;
11681 } tDot11fTPCRequest;
11682 
11683 #define DOT11F_TPCREQUEST (40)
11684 
11685 #ifdef __cplusplus
11686 extern "C" {
11687 #endif /* C++ */
11688 
11689 uint32_t dot11f_unpack_tpc_request(tpAniSirGlobal pCtx,
11690 	uint8_t *pBuf, uint32_t nBuf,
11691 	tDot11fTPCRequest * pFrm, bool append_ie);
11692 uint32_t dot11f_pack_tpc_request(tpAniSirGlobal pCtx,
11693 	tDot11fTPCRequest *pFrm, uint8_t *pBuf,
11694 	uint32_t nBuf, uint32_t *pnConsumed);
11695 uint32_t dot11f_get_packed_tpc_request_size(tpAniSirGlobal pCtx,
11696 	tDot11fTPCRequest *pFrm,
11697 	uint32_t *pnNeeded);
11698 
11699 #ifdef __cplusplus
11700 } /* End extern "C". */
11701 #endif /* C++ */
11702 
11703 typedef struct sDot11fTimingAdvertisementFrame{
11704 	tDot11fFfTimeStamp                TimeStamp;
11705 	tDot11fFfCapabilities             Capabilities;
11706 	tDot11fIECountry                  Country;
11707 	tDot11fIEPowerConstraints         PowerConstraints;
11708 	tDot11fIETimeAdvertisement        TimeAdvertisement;
11709 	tDot11fIEExtCap                   ExtCap;
11710 	tDot11fIEVendor1IE                Vendor1IE;
11711 	tDot11fIEVendor3IE                Vendor3IE;
11712 } tDot11fTimingAdvertisementFrame;
11713 
11714 #define DOT11F_TIMINGADVERTISEMENTFRAME (41)
11715 
11716 #ifdef __cplusplus
11717 extern "C" {
11718 #endif /* C++ */
11719 
11720 uint32_t dot11f_unpack_timing_advertisement_frame(tpAniSirGlobal pCtx,
11721 	uint8_t *pBuf, uint32_t nBuf,
11722 	tDot11fTimingAdvertisementFrame * pFrm, bool append_ie);
11723 uint32_t dot11f_pack_timing_advertisement_frame(tpAniSirGlobal pCtx,
11724 	tDot11fTimingAdvertisementFrame *pFrm, uint8_t *pBuf,
11725 	uint32_t nBuf, uint32_t *pnConsumed);
11726 uint32_t dot11f_get_packed_timing_advertisement_frame_size(tpAniSirGlobal pCtx,
11727 	tDot11fTimingAdvertisementFrame *pFrm,
11728 	uint32_t *pnNeeded);
11729 
11730 #ifdef __cplusplus
11731 } /* End extern "C". */
11732 #endif /* C++ */
11733 
11734 typedef struct sDot11fVHTGidManagementActionFrame{
11735 	tDot11fFfCategory                        Category;
11736 	tDot11fFfAction                          Action;
11737 	tDot11fFfVhtMembershipStatusArray        VhtMembershipStatusArray;
11738 	tDot11fFfVhtUserPositionArray            VhtUserPositionArray;
11739 } tDot11fVHTGidManagementActionFrame;
11740 
11741 #define DOT11F_VHTGIDMANAGEMENTACTIONFRAME (42)
11742 
11743 #ifdef __cplusplus
11744 extern "C" {
11745 #endif /* C++ */
11746 
11747 uint32_t dot11f_unpack_vht_gid_management_action_frame(tpAniSirGlobal pCtx,
11748 	uint8_t *pBuf, uint32_t nBuf,
11749 	tDot11fVHTGidManagementActionFrame * pFrm, bool append_ie);
11750 uint32_t dot11f_pack_vht_gid_management_action_frame(tpAniSirGlobal pCtx,
11751 	tDot11fVHTGidManagementActionFrame *pFrm, uint8_t *pBuf,
11752 	uint32_t nBuf, uint32_t *pnConsumed);
11753 uint32_t dot11f_get_packed_vht_gid_management_action_frame_size(tpAniSirGlobal pCtx,
11754 	tDot11fVHTGidManagementActionFrame *pFrm,
11755 	uint32_t *pnNeeded);
11756 
11757 #ifdef __cplusplus
11758 } /* End extern "C". */
11759 #endif /* C++ */
11760 
11761 typedef struct sDot11fWMMAddTSRequest{
11762 	tDot11fFfCategory                  Category;
11763 	tDot11fFfAction                    Action;
11764 	tDot11fFfDialogToken               DialogToken;
11765 	tDot11fFfStatusCode                StatusCode;
11766 	tDot11fIEWMMTSPEC                  WMMTSPEC;
11767 	tDot11fIEESETrafStrmRateSet        ESETrafStrmRateSet;
11768 } tDot11fWMMAddTSRequest;
11769 
11770 #define DOT11F_WMMADDTSREQUEST (43)
11771 
11772 #ifdef __cplusplus
11773 extern "C" {
11774 #endif /* C++ */
11775 
11776 uint32_t dot11f_unpack_wmm_add_ts_request(tpAniSirGlobal pCtx,
11777 	uint8_t *pBuf, uint32_t nBuf,
11778 	tDot11fWMMAddTSRequest * pFrm, bool append_ie);
11779 uint32_t dot11f_pack_wmm_add_ts_request(tpAniSirGlobal pCtx,
11780 	tDot11fWMMAddTSRequest *pFrm, uint8_t *pBuf,
11781 	uint32_t nBuf, uint32_t *pnConsumed);
11782 uint32_t dot11f_get_packed_wmm_add_ts_request_size(tpAniSirGlobal pCtx,
11783 	tDot11fWMMAddTSRequest *pFrm,
11784 	uint32_t *pnNeeded);
11785 
11786 #ifdef __cplusplus
11787 } /* End extern "C". */
11788 #endif /* C++ */
11789 
11790 typedef struct sDot11fWMMAddTSResponse{
11791 	tDot11fFfCategory              Category;
11792 	tDot11fFfAction                Action;
11793 	tDot11fFfDialogToken           DialogToken;
11794 	tDot11fFfStatusCode            StatusCode;
11795 	tDot11fIEWMMTSPEC              WMMTSPEC;
11796 	tDot11fIEESETrafStrmMet        ESETrafStrmMet;
11797 } tDot11fWMMAddTSResponse;
11798 
11799 #define DOT11F_WMMADDTSRESPONSE (44)
11800 
11801 #ifdef __cplusplus
11802 extern "C" {
11803 #endif /* C++ */
11804 
11805 uint32_t dot11f_unpack_wmm_add_ts_response(tpAniSirGlobal pCtx,
11806 	uint8_t *pBuf, uint32_t nBuf,
11807 	tDot11fWMMAddTSResponse * pFrm, bool append_ie);
11808 uint32_t dot11f_pack_wmm_add_ts_response(tpAniSirGlobal pCtx,
11809 	tDot11fWMMAddTSResponse *pFrm, uint8_t *pBuf,
11810 	uint32_t nBuf, uint32_t *pnConsumed);
11811 uint32_t dot11f_get_packed_wmm_add_ts_response_size(tpAniSirGlobal pCtx,
11812 	tDot11fWMMAddTSResponse *pFrm,
11813 	uint32_t *pnNeeded);
11814 
11815 #ifdef __cplusplus
11816 } /* End extern "C". */
11817 #endif /* C++ */
11818 
11819 typedef struct sDot11fWMMDelTS{
11820 	tDot11fFfCategory           Category;
11821 	tDot11fFfAction             Action;
11822 	tDot11fFfDialogToken        DialogToken;
11823 	tDot11fFfStatusCode         StatusCode;
11824 	tDot11fIEWMMTSPEC           WMMTSPEC;
11825 } tDot11fWMMDelTS;
11826 
11827 #define DOT11F_WMMDELTS (45)
11828 
11829 #ifdef __cplusplus
11830 extern "C" {
11831 #endif /* C++ */
11832 
11833 uint32_t dot11f_unpack_wmm_del_ts(tpAniSirGlobal pCtx,
11834 	uint8_t *pBuf, uint32_t nBuf,
11835 	tDot11fWMMDelTS * pFrm, bool append_ie);
11836 uint32_t dot11f_pack_wmm_del_ts(tpAniSirGlobal pCtx,
11837 	tDot11fWMMDelTS *pFrm, uint8_t *pBuf,
11838 	uint32_t nBuf, uint32_t *pnConsumed);
11839 uint32_t dot11f_get_packed_wmm_del_ts_size(tpAniSirGlobal pCtx,
11840 	tDot11fWMMDelTS *pFrm,
11841 	uint32_t *pnNeeded);
11842 
11843 #ifdef __cplusplus
11844 } /* End extern "C". */
11845 #endif /* C++ */
11846 
11847 typedef struct sDot11faddba_req{
11848 	tDot11fFfCategory                  Category;
11849 	tDot11fFfAction                    Action;
11850 	tDot11fFfDialogToken               DialogToken;
11851 	tDot11fFfaddba_param_set           addba_param_set;
11852 	tDot11fFfba_timeout                ba_timeout;
11853 	tDot11fFfba_start_seq_ctrl         ba_start_seq_ctrl;
11854 	tDot11fIEaddba_extn_element        addba_extn_element;
11855 } tDot11faddba_req;
11856 
11857 #define DOT11F_ADDBA_REQ (46)
11858 
11859 #ifdef __cplusplus
11860 extern "C" {
11861 #endif /* C++ */
11862 
11863 uint32_t dot11f_unpack_addba_req(tpAniSirGlobal pCtx,
11864 	uint8_t *pBuf, uint32_t nBuf,
11865 	tDot11faddba_req * pFrm, bool append_ie);
11866 uint32_t dot11f_pack_addba_req(tpAniSirGlobal pCtx,
11867 	tDot11faddba_req *pFrm, uint8_t *pBuf,
11868 	uint32_t nBuf, uint32_t *pnConsumed);
11869 uint32_t dot11f_get_packed_addba_req_size(tpAniSirGlobal pCtx,
11870 	tDot11faddba_req *pFrm,
11871 	uint32_t *pnNeeded);
11872 
11873 #ifdef __cplusplus
11874 } /* End extern "C". */
11875 #endif /* C++ */
11876 
11877 typedef struct sDot11faddba_rsp{
11878 	tDot11fFfCategory                  Category;
11879 	tDot11fFfAction                    Action;
11880 	tDot11fFfDialogToken               DialogToken;
11881 	tDot11fFfStatus                    Status;
11882 	tDot11fFfaddba_param_set           addba_param_set;
11883 	tDot11fFfba_timeout                ba_timeout;
11884 	tDot11fIEaddba_extn_element        addba_extn_element;
11885 } tDot11faddba_rsp;
11886 
11887 #define DOT11F_ADDBA_RSP (47)
11888 
11889 #ifdef __cplusplus
11890 extern "C" {
11891 #endif /* C++ */
11892 
11893 uint32_t dot11f_unpack_addba_rsp(tpAniSirGlobal pCtx,
11894 	uint8_t *pBuf, uint32_t nBuf,
11895 	tDot11faddba_rsp * pFrm, bool append_ie);
11896 uint32_t dot11f_pack_addba_rsp(tpAniSirGlobal pCtx,
11897 	tDot11faddba_rsp *pFrm, uint8_t *pBuf,
11898 	uint32_t nBuf, uint32_t *pnConsumed);
11899 uint32_t dot11f_get_packed_addba_rsp_size(tpAniSirGlobal pCtx,
11900 	tDot11faddba_rsp *pFrm,
11901 	uint32_t *pnNeeded);
11902 
11903 #ifdef __cplusplus
11904 } /* End extern "C". */
11905 #endif /* C++ */
11906 
11907 typedef struct sDot11fdelba_req{
11908 	tDot11fFfCategory               Category;
11909 	tDot11fFfAction                 Action;
11910 	tDot11fFfdelba_param_set        delba_param_set;
11911 	tDot11fFfReason                 Reason;
11912 } tDot11fdelba_req;
11913 
11914 #define DOT11F_DELBA_REQ (48)
11915 
11916 #ifdef __cplusplus
11917 extern "C" {
11918 #endif /* C++ */
11919 
11920 uint32_t dot11f_unpack_delba_req(tpAniSirGlobal pCtx,
11921 	uint8_t *pBuf, uint32_t nBuf,
11922 	tDot11fdelba_req * pFrm, bool append_ie);
11923 uint32_t dot11f_pack_delba_req(tpAniSirGlobal pCtx,
11924 	tDot11fdelba_req *pFrm, uint8_t *pBuf,
11925 	uint32_t nBuf, uint32_t *pnConsumed);
11926 uint32_t dot11f_get_packed_delba_req_size(tpAniSirGlobal pCtx,
11927 	tDot11fdelba_req *pFrm,
11928 	uint32_t *pnNeeded);
11929 
11930 #ifdef __cplusplus
11931 } /* End extern "C". */
11932 #endif /* C++ */
11933 
11934 typedef struct sDot11fext_channel_switch_action_frame{
11935 	tDot11fFfCategory                          Category;
11936 	tDot11fFfAction                            Action;
11937 	tDot11fFfext_chan_switch_ann_action        ext_chan_switch_ann_action;
11938 	tDot11fIEWiderBWChanSwitchAnn              WiderBWChanSwitchAnn;
11939 } tDot11fext_channel_switch_action_frame;
11940 
11941 #define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME (49)
11942 
11943 #ifdef __cplusplus
11944 extern "C" {
11945 #endif /* C++ */
11946 
11947 uint32_t dot11f_unpack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx,
11948 	uint8_t *pBuf, uint32_t nBuf,
11949 	tDot11fext_channel_switch_action_frame * pFrm, bool append_ie);
11950 uint32_t dot11f_pack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx,
11951 	tDot11fext_channel_switch_action_frame *pFrm, uint8_t *pBuf,
11952 	uint32_t nBuf, uint32_t *pnConsumed);
11953 uint32_t dot11f_get_packed_ext_channel_switch_action_frame_size(tpAniSirGlobal pCtx,
11954 	tDot11fext_channel_switch_action_frame *pFrm,
11955 	uint32_t *pnNeeded);
11956 
11957 #ifdef __cplusplus
11958 } /* End extern "C". */
11959 #endif /* C++ */
11960 
11961 typedef struct sDot11fht2040_bss_coexistence_mgmt_action_frame{
11962 	tDot11fFfCategory                            Category;
11963 	tDot11fFfAction                              Action;
11964 	tDot11fIEht2040_bss_coexistence              ht2040_bss_coexistence;
11965 	tDot11fIEht2040_bss_intolerant_report        ht2040_bss_intolerant_report;
11966 } tDot11fht2040_bss_coexistence_mgmt_action_frame;
11967 
11968 #define DOT11F_HT2040_BSS_COEXISTENCE_MGMT_ACTION_FRAME (50)
11969 
11970 #ifdef __cplusplus
11971 extern "C" {
11972 #endif /* C++ */
11973 
11974 uint32_t dot11f_unpack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx,
11975 	uint8_t *pBuf, uint32_t nBuf,
11976 	tDot11fht2040_bss_coexistence_mgmt_action_frame * pFrm, bool append_ie);
11977 uint32_t dot11f_pack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx,
11978 	tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm, uint8_t *pBuf,
11979 	uint32_t nBuf, uint32_t *pnConsumed);
11980 uint32_t dot11f_get_packed_ht2040_bss_coexistence_mgmt_action_frameSize(tpAniSirGlobal pCtx,
11981 	tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm,
11982 	uint32_t *pnNeeded);
11983 
11984 #ifdef __cplusplus
11985 } /* End extern "C". */
11986 #endif /* C++ */
11987 
11988 typedef struct sDot11fmscs_request_action_frame{
11989 	tDot11fFfCategory                 Category;
11990 	tDot11fFfAction                   Action;
11991 	tDot11fFfDialogToken              DialogToken;
11992 	tDot11fIEdecriptor_element        decriptor_element;
11993 } tDot11fmscs_request_action_frame;
11994 
11995 #define DOT11F_MSCS_REQUEST_ACTION_FRAME (51)
11996 
11997 #ifdef __cplusplus
11998 extern "C" {
11999 #endif /* C++ */
12000 
12001 uint32_t dot11f_unpack_mscs_request_action_frame(tpAniSirGlobal pCtx,
12002 	uint8_t *pBuf, uint32_t nBuf,
12003 	tDot11fmscs_request_action_frame * pFrm, bool append_ie);
12004 uint32_t dot11f_pack_mscs_request_action_frame(tpAniSirGlobal pCtx,
12005 	tDot11fmscs_request_action_frame *pFrm, uint8_t *pBuf,
12006 	uint32_t nBuf, uint32_t *pnConsumed);
12007 uint32_t dot11f_get_packed_mscs_request_action_frameSize(tpAniSirGlobal pCtx,
12008 	tDot11fmscs_request_action_frame *pFrm,
12009 	uint32_t *pnNeeded);
12010 
12011 #ifdef __cplusplus
12012 } /* End extern "C". */
12013 #endif /* C++ */
12014 
12015 typedef struct sDot11fp2p_oper_chan_change_confirm{
12016 	tDot11fFfCategory                  Category;
12017 	tDot11fFfp2p_action_oui            p2p_action_oui;
12018 	tDot11fFfp2p_action_subtype        p2p_action_subtype;
12019 	tDot11fFfDialogToken               DialogToken;
12020 	tDot11fIEHTCaps                    HTCaps;
12021 	tDot11fIEVHTCaps                   VHTCaps;
12022 	tDot11fIEOperatingMode             OperatingMode;
12023 } tDot11fp2p_oper_chan_change_confirm;
12024 
12025 #define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (52)
12026 
12027 #ifdef __cplusplus
12028 extern "C" {
12029 #endif /* C++ */
12030 
12031 uint32_t dot11f_unpack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx,
12032 	uint8_t *pBuf, uint32_t nBuf,
12033 	tDot11fp2p_oper_chan_change_confirm * pFrm, bool append_ie);
12034 uint32_t dot11f_pack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx,
12035 	tDot11fp2p_oper_chan_change_confirm *pFrm, uint8_t *pBuf,
12036 	uint32_t nBuf, uint32_t *pnConsumed);
12037 uint32_t dot11f_get_packed_p2p_oper_chan_change_confirmSize(tpAniSirGlobal pCtx,
12038 	tDot11fp2p_oper_chan_change_confirm *pFrm,
12039 	uint32_t *pnNeeded);
12040 
12041 #ifdef __cplusplus
12042 } /* End extern "C". */
12043 #endif /* C++ */
12044 
12045 typedef struct sDot11fvendor_action_frame{
12046 	tDot11fFfCategory                     Category;
12047 	tDot11fFfvendor_oui                   vendor_oui;
12048 	tDot11fFfvendor_action_subtype        vendor_action_subtype;
12049 } tDot11fvendor_action_frame;
12050 
12051 #define DOT11F_VENDOR_ACTION_FRAME (53)
12052 
12053 #ifdef __cplusplus
12054 extern "C" {
12055 #endif /* C++ */
12056 
12057 uint32_t dot11f_unpack_vendor_action_frame(tpAniSirGlobal pCtx,
12058 	uint8_t *pBuf, uint32_t nBuf,
12059 	tDot11fvendor_action_frame * pFrm, bool append_ie);
12060 uint32_t dot11f_pack_vendor_action_frame(tpAniSirGlobal pCtx,
12061 	tDot11fvendor_action_frame *pFrm, uint8_t *pBuf,
12062 	uint32_t nBuf, uint32_t *pnConsumed);
12063 uint32_t dot11f_get_packed_vendor_action_frameSize(tpAniSirGlobal pCtx,
12064 	tDot11fvendor_action_frame *pFrm,
12065 	uint32_t *pnNeeded);
12066 
12067 #ifdef __cplusplus
12068 } /* End extern "C". */
12069 #endif /* C++ */
12070 
12071 #endif /* DOT11F_H */
12072