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