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