xref: /wlan-dirver/qcacld-3.0/core/mac/src/include/dot11f.h (revision a4715adff446403c8635800dda08025c59945475)
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 } tDot11fIEtransmit_power_env;
4951 
4952 #define DOT11F_EID_TRANSMIT_POWER_ENV (195)
4953 
4954 /* N.B. These #defines do *not* include the EID & length */
4955 #define DOT11F_IE_TRANSMIT_POWER_ENV_MIN_LEN (2)
4956 
4957 #define DOT11F_IE_TRANSMIT_POWER_ENV_MAX_LEN (9)
4958 
4959 #ifdef __cplusplus
4960 extern "C" {
4961 #endif /* C++ */
4962 __must_check uint32_t dot11f_unpack_ie_transmit_power_env(
4963 	tpAniSirGlobal,
4964 	uint8_t *,
4965 	uint8_t,
4966 	tDot11fIEtransmit_power_env*,
4967 	bool);
4968 
4969 uint32_t dot11f_pack_ie_transmit_power_env(
4970 	tpAniSirGlobal,
4971 	tDot11fIEtransmit_power_env *,
4972 	uint8_t *,
4973 	uint32_t,
4974 	uint32_t*);
4975 
4976 uint32_t dot11f_get_packed_ie_transmit_power_env(
4977 	tpAniSirGlobal,
4978 	tDot11fIEtransmit_power_env *,
4979 	uint32_t*);
4980 
4981 #ifdef __cplusplus
4982 }; /* End extern "C". */
4983 #endif /* C++ */
4984 
4985 /* EID 163 (0xa3) */
4986 typedef struct sDot11fIEwide_bw_chan_switch {
4987 	uint8_t             present;
4988 	uint8_t             new_chan_width;
4989 	uint8_t             new_center_chan_freq0;
4990 	uint8_t             new_center_chan_freq1;
4991 } tDot11fIEwide_bw_chan_switch;
4992 
4993 #define DOT11F_EID_WIDE_BW_CHAN_SWITCH (163)
4994 
4995 /* N.B. These #defines do *not* include the EID & length */
4996 #define DOT11F_IE_WIDE_BW_CHAN_SWITCH_MIN_LEN (3)
4997 
4998 #define DOT11F_IE_WIDE_BW_CHAN_SWITCH_MAX_LEN (3)
4999 
5000 #ifdef __cplusplus
5001 extern "C" {
5002 #endif /* C++ */
5003 __must_check uint32_t dot11f_unpack_ie_wide_bw_chan_switch(
5004 	tpAniSirGlobal,
5005 	uint8_t *,
5006 	uint8_t,
5007 	tDot11fIEwide_bw_chan_switch*,
5008 	bool);
5009 
5010 uint32_t dot11f_pack_ie_wide_bw_chan_switch(
5011 	tpAniSirGlobal,
5012 	tDot11fIEwide_bw_chan_switch *,
5013 	uint8_t *,
5014 	uint32_t,
5015 	uint32_t*);
5016 
5017 uint32_t dot11f_get_packed_ie_wide_bw_chan_switch(
5018 	tpAniSirGlobal,
5019 	tDot11fIEwide_bw_chan_switch *,
5020 	uint32_t*);
5021 
5022 #ifdef __cplusplus
5023 }; /* End extern "C". */
5024 #endif /* C++ */
5025 
5026 /* EID 197 (0xc5) */
5027 typedef struct sDot11fIEAID {
5028 	uint8_t             present;
5029 	uint16_t            assocId;
5030 } tDot11fIEAID;
5031 
5032 #define DOT11F_EID_AID (197)
5033 
5034 /* N.B. These #defines do *not* include the EID & length */
5035 #define DOT11F_IE_AID_MIN_LEN (2)
5036 
5037 #define DOT11F_IE_AID_MAX_LEN (2)
5038 
5039 #ifdef __cplusplus
5040 extern "C" {
5041 #endif /* C++ */
5042 __must_check uint32_t dot11f_unpack_ie_aid(
5043 	tpAniSirGlobal,
5044 	uint8_t *,
5045 	uint8_t,
5046 	tDot11fIEAID*,
5047 	bool);
5048 
5049 uint32_t dot11f_pack_ie_aid(
5050 	tpAniSirGlobal,
5051 	tDot11fIEAID *,
5052 	uint8_t *,
5053 	uint32_t,
5054 	uint32_t*);
5055 
5056 uint32_t dot11f_get_packed_ie_AID(
5057 	tpAniSirGlobal,
5058 	tDot11fIEAID *,
5059 	uint32_t*);
5060 
5061 #ifdef __cplusplus
5062 }; /* End extern "C". */
5063 #endif /* C++ */
5064 
5065 /* EID 4 (0x04) */
5066 typedef struct sDot11fIECFParams {
5067 	uint8_t             present;
5068 	uint8_t             cfp_count;
5069 	uint8_t             cfp_period;
5070 	uint16_t            cfp_maxduration;
5071 	uint16_t            cfp_durremaining;
5072 } tDot11fIECFParams;
5073 
5074 #define DOT11F_EID_CFPARAMS (4)
5075 
5076 /* N.B. These #defines do *not* include the EID & length */
5077 #define DOT11F_IE_CFPARAMS_MIN_LEN (6)
5078 
5079 #define DOT11F_IE_CFPARAMS_MAX_LEN (6)
5080 
5081 #ifdef __cplusplus
5082 extern "C" {
5083 #endif /* C++ */
5084 __must_check uint32_t dot11f_unpack_ie_cf_params(
5085 	tpAniSirGlobal,
5086 	uint8_t *,
5087 	uint8_t,
5088 	tDot11fIECFParams*,
5089 	bool);
5090 
5091 uint32_t dot11f_pack_ie_cf_params(
5092 	tpAniSirGlobal,
5093 	tDot11fIECFParams *,
5094 	uint8_t *,
5095 	uint32_t,
5096 	uint32_t*);
5097 
5098 uint32_t dot11f_get_packed_ie_CFParams(
5099 	tpAniSirGlobal,
5100 	tDot11fIECFParams *,
5101 	uint32_t*);
5102 
5103 #ifdef __cplusplus
5104 }; /* End extern "C". */
5105 #endif /* C++ */
5106 
5107 /* EID 16 (0x10) */
5108 typedef struct sDot11fIEChallengeText {
5109 	uint8_t             present;
5110 	uint8_t             num_text;
5111 	uint8_t             text[253];
5112 } tDot11fIEChallengeText;
5113 
5114 #define DOT11F_EID_CHALLENGETEXT (16)
5115 
5116 /* N.B. These #defines do *not* include the EID & length */
5117 #define DOT11F_IE_CHALLENGETEXT_MIN_LEN (1)
5118 
5119 #define DOT11F_IE_CHALLENGETEXT_MAX_LEN (253)
5120 
5121 #ifdef __cplusplus
5122 extern "C" {
5123 #endif /* C++ */
5124 __must_check uint32_t dot11f_unpack_ie_challenge_text(
5125 	tpAniSirGlobal,
5126 	uint8_t *,
5127 	uint8_t,
5128 	tDot11fIEChallengeText*,
5129 	bool);
5130 
5131 uint32_t dot11f_pack_ie_challenge_text(
5132 	tpAniSirGlobal,
5133 	tDot11fIEChallengeText *,
5134 	uint8_t *,
5135 	uint32_t,
5136 	uint32_t*);
5137 
5138 uint32_t dot11f_get_packed_ie_ChallengeText(
5139 	tpAniSirGlobal,
5140 	tDot11fIEChallengeText *,
5141 	uint32_t*);
5142 
5143 #ifdef __cplusplus
5144 }; /* End extern "C". */
5145 #endif /* C++ */
5146 
5147 /* EID 37 (0x25) */
5148 typedef struct sDot11fIEChanSwitchAnn {
5149 	uint8_t             present;
5150 	uint8_t             switchMode;
5151 	uint8_t             newChannel;
5152 	uint8_t             switchCount;
5153 } tDot11fIEChanSwitchAnn;
5154 
5155 #define DOT11F_EID_CHANSWITCHANN (37)
5156 
5157 /* N.B. These #defines do *not* include the EID & length */
5158 #define DOT11F_IE_CHANSWITCHANN_MIN_LEN (3)
5159 
5160 #define DOT11F_IE_CHANSWITCHANN_MAX_LEN (3)
5161 
5162 #ifdef __cplusplus
5163 extern "C" {
5164 #endif /* C++ */
5165 __must_check uint32_t dot11f_unpack_ie_chan_switch_ann(
5166 	tpAniSirGlobal,
5167 	uint8_t *,
5168 	uint8_t,
5169 	tDot11fIEChanSwitchAnn*,
5170 	bool);
5171 
5172 uint32_t dot11f_pack_ie_chan_switch_ann(
5173 	tpAniSirGlobal,
5174 	tDot11fIEChanSwitchAnn *,
5175 	uint8_t *,
5176 	uint32_t,
5177 	uint32_t*);
5178 
5179 uint32_t dot11f_get_packed_ie_ChanSwitchAnn(
5180 	tpAniSirGlobal,
5181 	tDot11fIEChanSwitchAnn *,
5182 	uint32_t*);
5183 
5184 #ifdef __cplusplus
5185 }; /* End extern "C". */
5186 #endif /* C++ */
5187 
5188 /* EID 196 (0xc4) */
5189 typedef struct sDot11fIEChannelSwitchWrapper {
5190 	uint8_t                              present;
5191 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
5192 	tDot11fIEtransmit_power_env          transmit_power_env;
5193 	tDot11fIEbw_ind_element              bw_ind_element;
5194 } tDot11fIEChannelSwitchWrapper;
5195 
5196 #define DOT11F_EID_CHANNELSWITCHWRAPPER (196)
5197 
5198 /* N.B. These #defines do *not* include the EID & length */
5199 #define DOT11F_IE_CHANNELSWITCHWRAPPER_MIN_LEN (0)
5200 
5201 #define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (24)
5202 
5203 #ifdef __cplusplus
5204 extern "C" {
5205 #endif /* C++ */
5206 __must_check uint32_t dot11f_unpack_ie_channel_switch_wrapper(
5207 	tpAniSirGlobal,
5208 	uint8_t *,
5209 	uint8_t,
5210 	tDot11fIEChannelSwitchWrapper*,
5211 	bool);
5212 
5213 uint32_t dot11f_pack_ie_channel_switch_wrapper(
5214 	tpAniSirGlobal,
5215 	tDot11fIEChannelSwitchWrapper *,
5216 	uint8_t *,
5217 	uint32_t,
5218 	uint32_t*);
5219 
5220 uint32_t dot11f_get_packed_ie_channel_switch_wrapper(
5221 	tpAniSirGlobal,
5222 	tDot11fIEChannelSwitchWrapper *,
5223 	uint32_t*);
5224 
5225 #ifdef __cplusplus
5226 }; /* End extern "C". */
5227 #endif /* C++ */
5228 
5229 /* EID 7 (0x07) */
5230 typedef struct sDot11fIECountry {
5231 	uint8_t             present;
5232 	uint8_t             country[3];
5233 	uint8_t             first_triplet[3];
5234 	uint8_t             num_more_triplets;
5235 	uint8_t             more_triplets[80][3];
5236 } tDot11fIECountry;
5237 
5238 #define DOT11F_EID_COUNTRY (7)
5239 
5240 /* N.B. These #defines do *not* include the EID & length */
5241 #define DOT11F_IE_COUNTRY_MIN_LEN (6)
5242 
5243 #define DOT11F_IE_COUNTRY_MAX_LEN (246)
5244 
5245 #ifdef __cplusplus
5246 extern "C" {
5247 #endif /* C++ */
5248 __must_check uint32_t dot11f_unpack_ie_country(
5249 	tpAniSirGlobal,
5250 	uint8_t *,
5251 	uint8_t,
5252 	tDot11fIECountry*,
5253 	bool);
5254 
5255 uint32_t dot11f_pack_ie_country(
5256 	tpAniSirGlobal,
5257 	tDot11fIECountry *,
5258 	uint8_t *,
5259 	uint32_t,
5260 	uint32_t*);
5261 
5262 uint32_t dot11f_get_packed_ie_country(
5263 	tpAniSirGlobal,
5264 	tDot11fIECountry *,
5265 	uint32_t*);
5266 
5267 #ifdef __cplusplus
5268 }; /* End extern "C". */
5269 #endif /* C++ */
5270 
5271 /* EID 3 (0x03) */
5272 typedef struct sDot11fIEDSParams {
5273 	uint8_t             present;
5274 	uint8_t             curr_channel;
5275 } tDot11fIEDSParams;
5276 
5277 #define DOT11F_EID_DSPARAMS (3)
5278 
5279 /* N.B. These #defines do *not* include the EID & length */
5280 #define DOT11F_IE_DSPARAMS_MIN_LEN (1)
5281 
5282 #define DOT11F_IE_DSPARAMS_MAX_LEN (1)
5283 
5284 #ifdef __cplusplus
5285 extern "C" {
5286 #endif /* C++ */
5287 __must_check uint32_t dot11f_unpack_ie_DSParams(
5288 	tpAniSirGlobal,
5289 	uint8_t *,
5290 	uint8_t,
5291 	tDot11fIEDSParams*,
5292 	bool);
5293 
5294 uint32_t dot11f_pack_ie_ds_params(
5295 	tpAniSirGlobal,
5296 	tDot11fIEDSParams *,
5297 	uint8_t *,
5298 	uint32_t,
5299 	uint32_t*);
5300 
5301 uint32_t dot11f_get_packed_ie_DSParams(
5302 	tpAniSirGlobal,
5303 	tDot11fIEDSParams *,
5304 	uint32_t*);
5305 
5306 #ifdef __cplusplus
5307 }; /* End extern "C". */
5308 #endif /* C++ */
5309 
5310 /* EID 12 (0x0c) */
5311 typedef struct sDot11fIEEDCAParamSet {
5312 	uint8_t             present;
5313 	uint8_t             qos;
5314 	uint8_t             reserved;
5315 	uint8_t           acbe_aifsn:4;
5316 	uint8_t             acbe_acm:1;
5317 	uint8_t             acbe_aci:2;
5318 	uint8_t              unused1:1;
5319 	uint8_t          acbe_acwmin:4;
5320 	uint8_t          acbe_acwmax:4;
5321 	uint16_t            acbe_txoplimit;
5322 	uint8_t           acbk_aifsn:4;
5323 	uint8_t             acbk_acm:1;
5324 	uint8_t             acbk_aci:2;
5325 	uint8_t              unused2:1;
5326 	uint8_t          acbk_acwmin:4;
5327 	uint8_t          acbk_acwmax:4;
5328 	uint16_t            acbk_txoplimit;
5329 	uint8_t           acvi_aifsn:4;
5330 	uint8_t             acvi_acm:1;
5331 	uint8_t             acvi_aci:2;
5332 	uint8_t              unused3:1;
5333 	uint8_t          acvi_acwmin:4;
5334 	uint8_t          acvi_acwmax:4;
5335 	uint16_t            acvi_txoplimit;
5336 	uint8_t           acvo_aifsn:4;
5337 	uint8_t             acvo_acm:1;
5338 	uint8_t             acvo_aci:2;
5339 	uint8_t              unused4:1;
5340 	uint8_t          acvo_acwmin:4;
5341 	uint8_t          acvo_acwmax:4;
5342 	uint16_t            acvo_txoplimit;
5343 } tDot11fIEEDCAParamSet;
5344 
5345 #define DOT11F_EID_EDCAPARAMSET (12)
5346 
5347 /* N.B. These #defines do *not* include the EID & length */
5348 #define DOT11F_IE_EDCAPARAMSET_MIN_LEN (18)
5349 
5350 #define DOT11F_IE_EDCAPARAMSET_MAX_LEN (18)
5351 
5352 #ifdef __cplusplus
5353 extern "C" {
5354 #endif /* C++ */
5355 __must_check uint32_t dot11f_unpack_ie_edca_param_set(
5356 	tpAniSirGlobal,
5357 	uint8_t *,
5358 	uint8_t,
5359 	tDot11fIEEDCAParamSet*,
5360 	bool);
5361 
5362 uint32_t dot11f_pack_ie_edca_param_set(
5363 	tpAniSirGlobal,
5364 	tDot11fIEEDCAParamSet *,
5365 	uint8_t *,
5366 	uint32_t,
5367 	uint32_t*);
5368 
5369 uint32_t dot11f_get_packed_ie_EDCAParamSet(
5370 	tpAniSirGlobal,
5371 	tDot11fIEEDCAParamSet *,
5372 	uint32_t*);
5373 
5374 #ifdef __cplusplus
5375 }; /* End extern "C". */
5376 #endif /* C++ */
5377 
5378 /* EID 42 (0x2a) */
5379 typedef struct sDot11fIEERPInfo {
5380 	uint8_t             present;
5381 	uint8_t      non_erp_present:1;
5382 	uint8_t             use_prot:1;
5383 	uint8_t      barker_preamble:1;
5384 	uint8_t               unused:5;
5385 } tDot11fIEERPInfo;
5386 
5387 #define DOT11F_EID_ERPINFO (42)
5388 
5389 /* N.B. These #defines do *not* include the EID & length */
5390 #define DOT11F_IE_ERPINFO_MIN_LEN (1)
5391 
5392 #define DOT11F_IE_ERPINFO_MAX_LEN (1)
5393 
5394 #ifdef __cplusplus
5395 extern "C" {
5396 #endif /* C++ */
5397 __must_check uint32_t dot11f_unpack_ie_erp_info(
5398 	tpAniSirGlobal,
5399 	uint8_t *,
5400 	uint8_t,
5401 	tDot11fIEERPInfo*,
5402 	bool);
5403 
5404 uint32_t dot11f_pack_ie_erp_info(
5405 	tpAniSirGlobal,
5406 	tDot11fIEERPInfo *,
5407 	uint8_t *,
5408 	uint32_t,
5409 	uint32_t*);
5410 
5411 uint32_t dot11f_get_packed_ie_ERPInfo(
5412 	tpAniSirGlobal,
5413 	tDot11fIEERPInfo *,
5414 	uint32_t*);
5415 
5416 #ifdef __cplusplus
5417 }; /* End extern "C". */
5418 #endif /* C++ */
5419 
5420 /* EID 156 (0x9c) {OUI 0x00, 0x40, 0x96, 0x00} */
5421 typedef struct sDot11fIEESECckmOpaque {
5422 	uint8_t             present;
5423 	uint8_t             num_data;
5424 	uint8_t             data[20];
5425 } tDot11fIEESECckmOpaque;
5426 
5427 #define DOT11F_EID_ESECCKMOPAQUE (156)
5428 
5429 /* N.B. These #defines do *not* include the EID & length */
5430 #define DOT11F_IE_ESECCKMOPAQUE_MIN_LEN (10)
5431 
5432 #define DOT11F_IE_ESECCKMOPAQUE_MAX_LEN (24)
5433 
5434 #ifdef __cplusplus
5435 extern "C" {
5436 #endif /* C++ */
5437 __must_check uint32_t dot11f_unpack_ie_ese_cckm_opaque(
5438 	tpAniSirGlobal,
5439 	uint8_t *,
5440 	uint8_t,
5441 	tDot11fIEESECckmOpaque*,
5442 	bool);
5443 
5444 uint32_t dot11f_pack_ie_ese_cckm_opaque(
5445 	tpAniSirGlobal,
5446 	tDot11fIEESECckmOpaque *,
5447 	uint8_t *,
5448 	uint32_t,
5449 	uint32_t*);
5450 
5451 uint32_t dot11f_get_packed_ie_ESECckmOpaque(
5452 	tpAniSirGlobal,
5453 	tDot11fIEESECckmOpaque *,
5454 	uint32_t*);
5455 
5456 #ifdef __cplusplus
5457 }; /* End extern "C". */
5458 #endif /* C++ */
5459 
5460 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x01} */
5461 typedef struct sDot11fIEESERadMgmtCap {
5462 	uint8_t             present;
5463 	uint8_t             mgmt_state;
5464 	uint8_t          mbssid_mask:3;
5465 	uint8_t             reserved:5;
5466 } tDot11fIEESERadMgmtCap;
5467 
5468 #define DOT11F_EID_ESERADMGMTCAP (221)
5469 
5470 /* N.B. These #defines do *not* include the EID & length */
5471 #define DOT11F_IE_ESERADMGMTCAP_MIN_LEN (6)
5472 
5473 #define DOT11F_IE_ESERADMGMTCAP_MAX_LEN (6)
5474 
5475 #ifdef __cplusplus
5476 extern "C" {
5477 #endif /* C++ */
5478 __must_check uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(
5479 	tpAniSirGlobal,
5480 	uint8_t *,
5481 	uint8_t,
5482 	tDot11fIEESERadMgmtCap*,
5483 	bool);
5484 
5485 uint32_t dot11f_pack_ie_ese_rad_mgmt_cap(
5486 	tpAniSirGlobal,
5487 	tDot11fIEESERadMgmtCap *,
5488 	uint8_t *,
5489 	uint32_t,
5490 	uint32_t*);
5491 
5492 uint32_t dot11f_get_packed_ie_ESERadMgmtCap(
5493 	tpAniSirGlobal,
5494 	tDot11fIEESERadMgmtCap *,
5495 	uint32_t*);
5496 
5497 #ifdef __cplusplus
5498 }; /* End extern "C". */
5499 #endif /* C++ */
5500 
5501 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x07} */
5502 typedef struct sDot11fIEESETrafStrmMet {
5503 	uint8_t             present;
5504 	uint8_t             tsid;
5505 	uint8_t             state;
5506 	uint16_t            msmt_interval;
5507 } tDot11fIEESETrafStrmMet;
5508 
5509 #define DOT11F_EID_ESETRAFSTRMMET (221)
5510 
5511 /* N.B. These #defines do *not* include the EID & length */
5512 #define DOT11F_IE_ESETRAFSTRMMET_MIN_LEN (8)
5513 
5514 #define DOT11F_IE_ESETRAFSTRMMET_MAX_LEN (8)
5515 
5516 #ifdef __cplusplus
5517 extern "C" {
5518 #endif /* C++ */
5519 __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_met(
5520 	tpAniSirGlobal,
5521 	uint8_t *,
5522 	uint8_t,
5523 	tDot11fIEESETrafStrmMet*,
5524 	bool);
5525 
5526 uint32_t dot11f_pack_ie_ese_traf_strm_met(
5527 	tpAniSirGlobal,
5528 	tDot11fIEESETrafStrmMet *,
5529 	uint8_t *,
5530 	uint32_t,
5531 	uint32_t*);
5532 
5533 uint32_t dot11f_get_packed_ie_ESETrafStrmMet(
5534 	tpAniSirGlobal,
5535 	tDot11fIEESETrafStrmMet *,
5536 	uint32_t*);
5537 
5538 #ifdef __cplusplus
5539 }; /* End extern "C". */
5540 #endif /* C++ */
5541 
5542 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x08} */
5543 typedef struct sDot11fIEESETrafStrmRateSet {
5544 	uint8_t             present;
5545 	uint8_t             tsid;
5546 	uint8_t             num_tsrates;
5547 	uint8_t             tsrates[8];
5548 } tDot11fIEESETrafStrmRateSet;
5549 
5550 #define DOT11F_EID_ESETRAFSTRMRATESET (221)
5551 
5552 /* N.B. These #defines do *not* include the EID & length */
5553 #define DOT11F_IE_ESETRAFSTRMRATESET_MIN_LEN (5)
5554 
5555 #define DOT11F_IE_ESETRAFSTRMRATESET_MAX_LEN (13)
5556 
5557 #ifdef __cplusplus
5558 extern "C" {
5559 #endif /* C++ */
5560 __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(
5561 	tpAniSirGlobal,
5562 	uint8_t *,
5563 	uint8_t,
5564 	tDot11fIEESETrafStrmRateSet*,
5565 	bool);
5566 
5567 uint32_t dot11f_pack_ie_ese_traf_strm_rate_set(
5568 	tpAniSirGlobal,
5569 	tDot11fIEESETrafStrmRateSet *,
5570 	uint8_t *,
5571 	uint32_t,
5572 	uint32_t*);
5573 
5574 uint32_t dot11f_get_packed_ie_ESETrafStrmRateSet(
5575 	tpAniSirGlobal,
5576 	tDot11fIEESETrafStrmRateSet *,
5577 	uint32_t*);
5578 
5579 #ifdef __cplusplus
5580 }; /* End extern "C". */
5581 #endif /* C++ */
5582 
5583 /* EID 150 (0x96) {OUI 0x00, 0x40, 0x96, 0x00} */
5584 typedef struct sDot11fIEESETxmitPower {
5585 	uint8_t             present;
5586 	uint8_t             power_limit;
5587 	uint8_t             reserved;
5588 } tDot11fIEESETxmitPower;
5589 
5590 #define DOT11F_EID_ESETXMITPOWER (150)
5591 
5592 /* N.B. These #defines do *not* include the EID & length */
5593 #define DOT11F_IE_ESETXMITPOWER_MIN_LEN (6)
5594 
5595 #define DOT11F_IE_ESETXMITPOWER_MAX_LEN (6)
5596 
5597 #ifdef __cplusplus
5598 extern "C" {
5599 #endif /* C++ */
5600 __must_check uint32_t dot11f_unpack_ie_ese_txmit_power(
5601 	tpAniSirGlobal,
5602 	uint8_t *,
5603 	uint8_t,
5604 	tDot11fIEESETxmitPower*,
5605 	bool);
5606 
5607 uint32_t dot11f_pack_ie_ese_txmit_power(
5608 	tpAniSirGlobal,
5609 	tDot11fIEESETxmitPower *,
5610 	uint8_t *,
5611 	uint32_t,
5612 	uint32_t*);
5613 
5614 uint32_t dot11f_get_packed_ie_ESETxmitPower(
5615 	tpAniSirGlobal,
5616 	tDot11fIEESETxmitPower *,
5617 	uint32_t*);
5618 
5619 #ifdef __cplusplus
5620 }; /* End extern "C". */
5621 #endif /* C++ */
5622 
5623 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x03} */
5624 typedef struct sDot11fIEESEVersion {
5625 	uint8_t             present;
5626 	uint8_t             version;
5627 } tDot11fIEESEVersion;
5628 
5629 #define DOT11F_EID_ESEVERSION (221)
5630 
5631 /* N.B. These #defines do *not* include the EID & length */
5632 #define DOT11F_IE_ESEVERSION_MIN_LEN (5)
5633 
5634 #define DOT11F_IE_ESEVERSION_MAX_LEN (5)
5635 
5636 #ifdef __cplusplus
5637 extern "C" {
5638 #endif /* C++ */
5639 __must_check uint32_t dot11f_unpack_ie_ese_version(
5640 	tpAniSirGlobal,
5641 	uint8_t *,
5642 	uint8_t,
5643 	tDot11fIEESEVersion*,
5644 	bool);
5645 
5646 uint32_t dot11f_pack_ie_ese_version(
5647 	tpAniSirGlobal,
5648 	tDot11fIEESEVersion *,
5649 	uint8_t *,
5650 	uint32_t,
5651 	uint32_t*);
5652 
5653 uint32_t dot11f_get_packed_ie_ESEVersion(
5654 	tpAniSirGlobal,
5655 	tDot11fIEESEVersion *,
5656 	uint32_t*);
5657 
5658 #ifdef __cplusplus
5659 }; /* End extern "C". */
5660 #endif /* C++ */
5661 
5662 /* EID 127 (0x7f) */
5663 typedef struct sDot11fIEExtCap {
5664 	uint8_t             present;
5665 	uint8_t             num_bytes;
5666 	uint8_t             bytes[15];
5667 } tDot11fIEExtCap;
5668 
5669 #define DOT11F_EID_EXTCAP (127)
5670 
5671 /* N.B. These #defines do *not* include the EID & length */
5672 #define DOT11F_IE_EXTCAP_MIN_LEN (1)
5673 
5674 #define DOT11F_IE_EXTCAP_MAX_LEN (15)
5675 
5676 #ifdef __cplusplus
5677 extern "C" {
5678 #endif /* C++ */
5679 __must_check uint32_t dot11f_unpack_ie_ext_cap(
5680 	tpAniSirGlobal,
5681 	uint8_t *,
5682 	uint8_t,
5683 	tDot11fIEExtCap*,
5684 	bool);
5685 
5686 uint32_t dot11f_pack_ie_ext_cap(
5687 	tpAniSirGlobal,
5688 	tDot11fIEExtCap *,
5689 	uint8_t *,
5690 	uint32_t,
5691 	uint32_t*);
5692 
5693 uint32_t dot11f_get_packed_ie_ExtCap(
5694 	tpAniSirGlobal,
5695 	tDot11fIEExtCap *,
5696 	uint32_t*);
5697 
5698 #ifdef __cplusplus
5699 }; /* End extern "C". */
5700 #endif /* C++ */
5701 
5702 /* EID 50 (0x32) */
5703 typedef struct sDot11fIEExtSuppRates {
5704 	uint8_t             present;
5705 	uint8_t             num_rates;
5706 	uint8_t             rates[12];
5707 } tDot11fIEExtSuppRates;
5708 
5709 #define DOT11F_EID_EXTSUPPRATES (50)
5710 
5711 /* N.B. These #defines do *not* include the EID & length */
5712 #define DOT11F_IE_EXTSUPPRATES_MIN_LEN (1)
5713 
5714 #define DOT11F_IE_EXTSUPPRATES_MAX_LEN (12)
5715 
5716 #ifdef __cplusplus
5717 extern "C" {
5718 #endif /* C++ */
5719 __must_check uint32_t dot11f_unpack_ie_ext_supp_rates(
5720 	tpAniSirGlobal,
5721 	uint8_t *,
5722 	uint8_t,
5723 	tDot11fIEExtSuppRates*,
5724 	bool);
5725 
5726 uint32_t dot11f_pack_ie_ext_supp_rates(
5727 	tpAniSirGlobal,
5728 	tDot11fIEExtSuppRates *,
5729 	uint8_t *,
5730 	uint32_t,
5731 	uint32_t*);
5732 
5733 uint32_t dot11f_get_packed_ie_ExtSuppRates(
5734 	tpAniSirGlobal,
5735 	tDot11fIEExtSuppRates *,
5736 	uint32_t*);
5737 
5738 #ifdef __cplusplus
5739 }; /* End extern "C". */
5740 #endif /* C++ */
5741 
5742 /* EID 2 (0x02) */
5743 typedef struct sDot11fIEFHParamSet {
5744 	uint8_t             present;
5745 	uint16_t            dwell_time;
5746 	uint8_t             hop_set;
5747 	uint8_t             hop_pattern;
5748 	uint8_t             hop_index;
5749 } tDot11fIEFHParamSet;
5750 
5751 #define DOT11F_EID_FHPARAMSET (2)
5752 
5753 /* N.B. These #defines do *not* include the EID & length */
5754 #define DOT11F_IE_FHPARAMSET_MIN_LEN (5)
5755 
5756 #define DOT11F_IE_FHPARAMSET_MAX_LEN (5)
5757 
5758 #ifdef __cplusplus
5759 extern "C" {
5760 #endif /* C++ */
5761 __must_check uint32_t dot11f_unpack_ie_fh_param_set(
5762 	tpAniSirGlobal,
5763 	uint8_t *,
5764 	uint8_t,
5765 	tDot11fIEFHParamSet*,
5766 	bool);
5767 
5768 uint32_t dot11f_pack_ie_fh_param_set(
5769 	tpAniSirGlobal,
5770 	tDot11fIEFHParamSet *,
5771 	uint8_t *,
5772 	uint32_t,
5773 	uint32_t*);
5774 
5775 uint32_t dot11f_get_packed_ie_FHParamSet(
5776 	tpAniSirGlobal,
5777 	tDot11fIEFHParamSet *,
5778 	uint32_t*);
5779 
5780 #ifdef __cplusplus
5781 }; /* End extern "C". */
5782 #endif /* C++ */
5783 
5784 /* EID 8 (0x08) */
5785 typedef struct sDot11fIEFHParams {
5786 	uint8_t             present;
5787 	uint8_t             radix;
5788 	uint8_t             nchannels;
5789 } tDot11fIEFHParams;
5790 
5791 #define DOT11F_EID_FHPARAMS (8)
5792 
5793 /* N.B. These #defines do *not* include the EID & length */
5794 #define DOT11F_IE_FHPARAMS_MIN_LEN (2)
5795 
5796 #define DOT11F_IE_FHPARAMS_MAX_LEN (2)
5797 
5798 #ifdef __cplusplus
5799 extern "C" {
5800 #endif /* C++ */
5801 __must_check uint32_t dot11f_unpack_ie_fh_params(
5802 	tpAniSirGlobal,
5803 	uint8_t *,
5804 	uint8_t,
5805 	tDot11fIEFHParams*,
5806 	bool);
5807 
5808 uint32_t dot11f_pack_ie_fh_params(
5809 	tpAniSirGlobal,
5810 	tDot11fIEFHParams *,
5811 	uint8_t *,
5812 	uint32_t,
5813 	uint32_t*);
5814 
5815 uint32_t dot11f_get_packed_ie_FHParams(
5816 	tpAniSirGlobal,
5817 	tDot11fIEFHParams *,
5818 	uint32_t*);
5819 
5820 #ifdef __cplusplus
5821 }; /* End extern "C". */
5822 #endif /* C++ */
5823 
5824 /* EID 9 (0x09) */
5825 typedef struct sDot11fIEFHPattTable {
5826 	uint8_t             present;
5827 	uint8_t             flag;
5828 	uint8_t             nsets;
5829 	uint8_t             modulus;
5830 	uint8_t             offset;
5831 	uint8_t             num_randtable;
5832 	uint8_t             randtable[251];
5833 } tDot11fIEFHPattTable;
5834 
5835 #define DOT11F_EID_FHPATTTABLE (9)
5836 
5837 /* N.B. These #defines do *not* include the EID & length */
5838 #define DOT11F_IE_FHPATTTABLE_MIN_LEN (4)
5839 
5840 #define DOT11F_IE_FHPATTTABLE_MAX_LEN (255)
5841 
5842 #ifdef __cplusplus
5843 extern "C" {
5844 #endif /* C++ */
5845 __must_check uint32_t dot11f_unpack_ie_fh_patt_table(
5846 	tpAniSirGlobal,
5847 	uint8_t *,
5848 	uint8_t,
5849 	tDot11fIEFHPattTable*,
5850 	bool);
5851 
5852 uint32_t dot11f_pack_ie_fh_patt_table(
5853 	tpAniSirGlobal,
5854 	tDot11fIEFHPattTable *,
5855 	uint8_t *,
5856 	uint32_t,
5857 	uint32_t*);
5858 
5859 uint32_t dot11f_get_packed_ie_FHPattTable(
5860 	tpAniSirGlobal,
5861 	tDot11fIEFHPattTable *,
5862 	uint32_t*);
5863 
5864 #ifdef __cplusplus
5865 }; /* End extern "C". */
5866 #endif /* C++ */
5867 
5868 /* EID 55 (0x37) */
5869 typedef struct sDot11fIEFTInfo {
5870 	uint8_t                 present;
5871 	uint16_t                 reserved:8;
5872 	uint16_t                  IECount:8;
5873 	uint8_t                 MIC[16];
5874 	uint8_t                 Anonce[32];
5875 	uint8_t                 Snonce[32];
5876 	tDot11fIER1KH_ID        R1KH_ID;
5877 	tDot11fIEGTK            GTK;
5878 	tDot11fIER0KH_ID        R0KH_ID;
5879 	tDot11fIEIGTK           IGTK;
5880 } tDot11fIEFTInfo;
5881 
5882 #define DOT11F_EID_FTINFO (55)
5883 
5884 /* N.B. These #defines do *not* include the EID & length */
5885 #define DOT11F_IE_FTINFO_MIN_LEN (82)
5886 
5887 #define DOT11F_IE_FTINFO_MAX_LEN (220)
5888 
5889 #ifdef __cplusplus
5890 extern "C" {
5891 #endif /* C++ */
5892 __must_check uint32_t dot11f_unpack_ie_ft_info(
5893 	tpAniSirGlobal,
5894 	uint8_t *,
5895 	uint8_t,
5896 	tDot11fIEFTInfo*,
5897 	bool);
5898 
5899 uint32_t dot11f_pack_ie_ft_info(
5900 	tpAniSirGlobal,
5901 	tDot11fIEFTInfo *,
5902 	uint8_t *,
5903 	uint32_t,
5904 	uint32_t*);
5905 
5906 uint32_t dot11f_get_packed_ieft_info(
5907 	tpAniSirGlobal,
5908 	tDot11fIEFTInfo *,
5909 	uint32_t*);
5910 
5911 #ifdef __cplusplus
5912 }; /* End extern "C". */
5913 #endif /* C++ */
5914 
5915 /* EID 45 (0x2d) */
5916 typedef struct sDot11fIEHTCaps {
5917 	uint8_t             present;
5918 	uint16_t         advCodingCap:1;
5919 	uint16_t supportedChannelWidthSet:1;
5920 	uint16_t        mimoPowerSave:2;
5921 	uint16_t           greenField:1;
5922 	uint16_t         shortGI20MHz:1;
5923 	uint16_t         shortGI40MHz:1;
5924 	uint16_t               txSTBC:1;
5925 	uint16_t               rxSTBC:2;
5926 	uint16_t            delayedBA:1;
5927 	uint16_t     maximalAMSDUsize:1;
5928 	uint16_t     dsssCckMode40MHz:1;
5929 	uint16_t                 psmp:1;
5930 	uint16_t     stbcControlFrame:1;
5931 	uint16_t   lsigTXOPProtection:1;
5932 	uint8_t     maxRxAMPDUFactor:2;
5933 	uint8_t          mpduDensity:3;
5934 	uint8_t            reserved1:3;
5935 	uint8_t             supportedMCSSet[16];
5936 	uint16_t                  pco:1;
5937 	uint16_t       transitionTime:2;
5938 	uint16_t            reserved2:5;
5939 	uint16_t          mcsFeedback:2;
5940 	uint16_t            reserved3:6;
5941 	uint32_t                 txBF:1;
5942 	uint32_t  rxStaggeredSounding:1;
5943 	uint32_t  txStaggeredSounding:1;
5944 	uint32_t                rxZLF:1;
5945 	uint32_t                txZLF:1;
5946 	uint32_t         implicitTxBF:1;
5947 	uint32_t          calibration:2;
5948 	uint32_t      explicitCSITxBF:1;
5949 	uint32_t explicitUncompressedSteeringMatrix:1;
5950 	uint32_t explicitBFCSIFeedback:3;
5951 	uint32_t explicitUncompressedSteeringMatrixFeedback:3;
5952 	uint32_t explicitCompressedSteeringMatrixFeedback:3;
5953 	uint32_t     csiNumBFAntennae:2;
5954 	uint32_t uncompressedSteeringMatrixBFAntennae:2;
5955 	uint32_t compressedSteeringMatrixBFAntennae:2;
5956 	uint32_t            reserved4:7;
5957 	uint8_t     antennaSelection:1;
5958 	uint8_t explicitCSIFeedbackTx:1;
5959 	uint8_t antennaIndicesFeedbackTx:1;
5960 	uint8_t  explicitCSIFeedback:1;
5961 	uint8_t antennaIndicesFeedback:1;
5962 	uint8_t                 rxAS:1;
5963 	uint8_t      txSoundingPPDUs:1;
5964 	uint8_t            reserved5:1;
5965 	uint8_t             num_rsvd;
5966 	uint8_t             rsvd[32];
5967 } tDot11fIEHTCaps;
5968 
5969 #define DOT11F_EID_HTCAPS (45)
5970 
5971 /* N.B. These #defines do *not* include the EID & length */
5972 #define DOT11F_IE_HTCAPS_MIN_LEN (26)
5973 
5974 #define DOT11F_IE_HTCAPS_MAX_LEN (58)
5975 
5976 #ifdef __cplusplus
5977 extern "C" {
5978 #endif /* C++ */
5979 __must_check uint32_t dot11f_unpack_ie_ht_caps(
5980 	tpAniSirGlobal,
5981 	uint8_t *,
5982 	uint8_t,
5983 	tDot11fIEHTCaps*,
5984 	bool);
5985 
5986 uint32_t dot11f_pack_ie_ht_caps(
5987 	tpAniSirGlobal,
5988 	tDot11fIEHTCaps *,
5989 	uint8_t *,
5990 	uint32_t,
5991 	uint32_t*);
5992 
5993 uint32_t dot11f_get_packed_ie_HTCaps(
5994 	tpAniSirGlobal,
5995 	tDot11fIEHTCaps *,
5996 	uint32_t*);
5997 
5998 #ifdef __cplusplus
5999 }; /* End extern "C". */
6000 #endif /* C++ */
6001 
6002 /* EID 61 (0x3d) */
6003 typedef struct sDot11fIEHTInfo {
6004 	uint8_t             present;
6005 	uint8_t             primaryChannel;
6006 	uint8_t secondaryChannelOffset:2;
6007 	uint8_t recommendedTxWidthSet:1;
6008 	uint8_t             rifsMode:1;
6009 	uint8_t controlledAccessOnly:1;
6010 	uint8_t serviceIntervalGranularity:3;
6011 	uint16_t               opMode:2;
6012 	uint16_t  nonGFDevicesPresent:1;
6013 	uint16_t   transmitBurstLimit:1;
6014 	uint16_t  obssNonHTStaPresent:1;
6015 	uint16_t chan_center_freq_seg2:8;
6016 	uint16_t             reserved:3;
6017 	uint16_t         basicSTBCMCS:7;
6018 	uint16_t    dualCTSProtection:1;
6019 	uint16_t      secondaryBeacon:1;
6020 	uint16_t lsigTXOPProtectionFullSupport:1;
6021 	uint16_t            pcoActive:1;
6022 	uint16_t             pcoPhase:1;
6023 	uint16_t            reserved2:4;
6024 	uint8_t             basicMCSSet[16];
6025 	uint8_t             num_rsvd;
6026 	uint8_t             rsvd[32];
6027 } tDot11fIEHTInfo;
6028 
6029 #define DOT11F_EID_HTINFO (61)
6030 
6031 /* N.B. These #defines do *not* include the EID & length */
6032 #define DOT11F_IE_HTINFO_MIN_LEN (22)
6033 
6034 #define DOT11F_IE_HTINFO_MAX_LEN (54)
6035 
6036 #ifdef __cplusplus
6037 extern "C" {
6038 #endif /* C++ */
6039 __must_check uint32_t dot11f_unpack_ie_ht_info(
6040 	tpAniSirGlobal,
6041 	uint8_t *,
6042 	uint8_t,
6043 	tDot11fIEHTInfo*,
6044 	bool);
6045 
6046 uint32_t dot11f_pack_ie_ht_info(
6047 	tpAniSirGlobal,
6048 	tDot11fIEHTInfo *,
6049 	uint8_t *,
6050 	uint32_t,
6051 	uint32_t*);
6052 
6053 uint32_t dot11f_get_packed_ie_HTInfo(
6054 	tpAniSirGlobal,
6055 	tDot11fIEHTInfo *,
6056 	uint32_t*);
6057 
6058 #ifdef __cplusplus
6059 }; /* End extern "C". */
6060 #endif /* C++ */
6061 
6062 /* EID 101 (0x65) */
6063 typedef struct sDot11fIELinkIdentifier {
6064 	uint8_t             present;
6065 	uint8_t             bssid[6];
6066 	uint8_t             InitStaAddr[6];
6067 	uint8_t             RespStaAddr[6];
6068 } tDot11fIELinkIdentifier;
6069 
6070 #define DOT11F_EID_LINKIDENTIFIER (101)
6071 
6072 /* N.B. These #defines do *not* include the EID & length */
6073 #define DOT11F_IE_LINKIDENTIFIER_MIN_LEN (18)
6074 
6075 #define DOT11F_IE_LINKIDENTIFIER_MAX_LEN (18)
6076 
6077 #ifdef __cplusplus
6078 extern "C" {
6079 #endif /* C++ */
6080 __must_check uint32_t dot11f_unpack_ie_link_identifier(
6081 	tpAniSirGlobal,
6082 	uint8_t *,
6083 	uint8_t,
6084 	tDot11fIELinkIdentifier*,
6085 	bool);
6086 
6087 uint32_t dot11f_pack_ie_link_identifier(
6088 	tpAniSirGlobal,
6089 	tDot11fIELinkIdentifier *,
6090 	uint8_t *,
6091 	uint32_t,
6092 	uint32_t*);
6093 
6094 uint32_t dot11f_get_packed_ie_LinkIdentifier(
6095 	tpAniSirGlobal,
6096 	tDot11fIELinkIdentifier *,
6097 	uint32_t*);
6098 
6099 #ifdef __cplusplus
6100 }; /* End extern "C". */
6101 #endif /* C++ */
6102 
6103 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x16} (Multi-IE) */
6104 typedef struct sDot11fIEMBO_IE {
6105 	uint8_t             present;
6106 	tDot11fTLVmbo_ap_cap mbo_ap_cap;
6107 	tDot11fTLVnon_prefferd_chan_rep non_prefferd_chan_rep;
6108 	tDot11fTLVcellular_data_cap cellular_data_cap;
6109 	tDot11fTLVassoc_disallowed assoc_disallowed;
6110 	tDot11fTLVcellular_data_con_pref cellular_data_con_pref;
6111 	tDot11fTLVtransition_reason transition_reason;
6112 	tDot11fTLVtransition_reject_reason transition_reject_reason;
6113 	tDot11fTLVassoc_retry_delay assoc_retry_delay;
6114 	tDot11fTLVoce_cap   oce_cap;
6115 	tDot11fTLVrssi_assoc_rej rssi_assoc_rej;
6116 	tDot11fTLVreduced_wan_metrics reduced_wan_metrics;
6117 } tDot11fIEMBO_IE;
6118 
6119 #define DOT11F_EID_MBO_IE (221)
6120 
6121 /* N.B. These #defines do *not* include the EID & length */
6122 #define DOT11F_IE_MBO_IE_MIN_LEN (4)
6123 
6124 #define DOT11F_IE_MBO_IE_MAX_LEN (293)
6125 
6126 #ifdef __cplusplus
6127 extern "C" {
6128 #endif /* C++ */
6129 __must_check uint32_t dot11f_unpack_ie_MBO_IE(
6130 	tpAniSirGlobal,
6131 	uint8_t *,
6132 	uint8_t,
6133 	tDot11fIEMBO_IE*,
6134 	bool);
6135 
6136 uint32_t dot11f_pack_ie_MBO_IE(
6137 	tpAniSirGlobal,
6138 	tDot11fIEMBO_IE *,
6139 	uint8_t *,
6140 	uint32_t,
6141 	uint32_t*);
6142 
6143 uint32_t dot11f_get_packed_ie_MBO_IE(
6144 	tpAniSirGlobal,
6145 	tDot11fIEMBO_IE *,
6146 	uint32_t*);
6147 
6148 #ifdef __cplusplus
6149 }; /* End extern "C". */
6150 #endif /* C++ */
6151 
6152 /* EID 39 (0x27) */
6153 typedef struct sDot11fIEMeasurementReport {
6154 	uint8_t             present;
6155 	uint8_t             token;
6156 	uint8_t                 late:1;
6157 	uint8_t            incapable:1;
6158 	uint8_t              refused:1;
6159 	uint8_t               unused:5;
6160 	uint8_t             type;
6161 	union {
6162 		struct {
6163 			uint8_t channel;
6164 			tDOT11F_U64 meas_start_time;
6165 			uint16_t meas_duration;
6166 			uint8_t            bss:1;
6167 			uint8_t  ofdm_preamble:1;
6168 			uint8_t    unid_signal:1;
6169 			uint8_t          rader:1;
6170 			uint8_t     unmeasured:1;
6171 			uint8_t         unused:3;
6172 		} Basic; /* type = 0 */
6173 		struct {
6174 			uint8_t channel;
6175 			tDOT11F_U64 meas_start_time;
6176 			uint16_t meas_duration;
6177 			uint8_t cca_busy_fraction;
6178 		} CCA; /* type = 1 */
6179 		struct {
6180 			uint8_t channel;
6181 			tDOT11F_U64 meas_start_time;
6182 			uint16_t meas_duration;
6183 			uint8_t rpi0_density;
6184 			uint8_t rpi1_density;
6185 			uint8_t rpi2_density;
6186 			uint8_t rpi3_density;
6187 			uint8_t rpi4_density;
6188 			uint8_t rpi5_density;
6189 			uint8_t rpi6_density;
6190 			uint8_t rpi7_density;
6191 		} RPIHistogram; /* type = 2 */
6192 		struct {
6193 			uint8_t op_class;
6194 			uint8_t channel;
6195 			tDOT11F_U64 meas_start_time;
6196 			uint16_t meas_duration;
6197 			uint8_t chan_load;
6198 	tDot11fIEwide_bw_chan_switch wide_bw_chan_switch;
6199 	tDot11fIEbw_indication bw_indication;
6200 		} channel_load_report; /* type = 3 */
6201 		struct {
6202 			uint8_t regClass;
6203 			uint8_t channel;
6204 			tDOT11F_U64 meas_start_time;
6205 			uint16_t meas_duration;
6206 			uint8_t        condensed_PHY:7;
6207 			uint8_t  reported_frame_type:1;
6208 			uint8_t RCPI;
6209 			uint8_t RSNI;
6210 			uint8_t BSSID[6];
6211 			uint8_t antenna_id;
6212 			uint32_t parent_TSF;
6213 	tDot11fIEBeaconReportFrmBody BeaconReportFrmBody;
6214 	tDot11fIEbeacon_report_frm_body_fragment_id beacon_report_frm_body_fragment_id;
6215 	tDot11fIElast_beacon_report_indication last_beacon_report_indication;
6216 		} Beacon; /* type = 5 */
6217 		struct {
6218 			uint16_t meas_duration;
6219 			uint8_t group_id;
6220 			union {
6221 				struct {
6222 					uint32_t transmitted_fragment_count;
6223 					uint32_t group_transmitted_frame_count;
6224 					uint32_t failed_count;
6225 					uint32_t received_fragment_count;
6226 					uint32_t group_received_frame_count;
6227 					uint32_t fcs_error_count;
6228 					uint32_t transmitted_frame_count;
6229 				} dot11_counter_stats; /* group_id = 0 */
6230 				struct {
6231 					uint32_t retry_count;
6232 					uint32_t multiple_retry_count;
6233 					uint32_t frame_duplicate_count;
6234 					uint32_t rts_success_count;
6235 					uint32_t rts_failure_count;
6236 					uint32_t ack_failure_count;
6237 				} dot11_mac_stats; /* group_id = 1 */
6238 				struct {
6239 					uint32_t qos_transmitted_fragment_count;
6240 					uint32_t qos_failed_count;
6241 					uint32_t qos_retry_count;
6242 					uint32_t qos_multiple_retry_count;
6243 					uint32_t qos_frame_duplicate_count;
6244 					uint32_t qos_rts_success_count;
6245 					uint32_t qos_rts_failure_count;
6246 					uint32_t qos_ack_failure_count;
6247 					uint32_t qos_received_fragment_count;
6248 					uint32_t qos_transmitted_frame_count;
6249 					uint32_t qos_discarded_frame_count;
6250 					uint32_t qos_mpdus_received_count;
6251 					uint32_t qos_retries_received_count;
6252 				} dot11_qos_counter; /* group_id = 2 */
6253 				struct {
6254 					uint8_t ap_average_access_delay;
6255 					uint8_t average_access_delay_besteffort;
6256 					uint8_t average_access_delay_background;
6257 					uint8_t average_access_delay_video;
6258 					uint8_t average_access_delay_voice;
6259 					uint16_t station_count;
6260 					uint8_t channel_utilization;
6261 				} dot11_bss_average_access_delay; /* group_id = 10 */
6262 			} statsgroupdata;
6263 	tDot11fIEreporting_reason reporting_reason;
6264 		} sta_stats; /* type = 7 */
6265 	} report;
6266 } tDot11fIEMeasurementReport;
6267 
6268 #define DOT11F_EID_MEASUREMENTREPORT (39)
6269 
6270 /* N.B. These #defines do *not* include the EID & length */
6271 #define DOT11F_IE_MEASUREMENTREPORT_MIN_LEN (3)
6272 
6273 #define DOT11F_IE_MEASUREMENTREPORT_MAX_LEN (58)
6274 
6275 #ifdef __cplusplus
6276 extern "C" {
6277 #endif /* C++ */
6278 __must_check uint32_t dot11f_unpack_ie_measurement_report(
6279 	tpAniSirGlobal,
6280 	uint8_t *,
6281 	uint8_t,
6282 	tDot11fIEMeasurementReport*,
6283 	bool);
6284 
6285 uint32_t dot11f_pack_ie_measurement_report(
6286 	tpAniSirGlobal,
6287 	tDot11fIEMeasurementReport *,
6288 	uint8_t *,
6289 	uint32_t,
6290 	uint32_t*);
6291 
6292 uint32_t dot11f_get_packed_ie_measurement_report(
6293 	tpAniSirGlobal,
6294 	tDot11fIEMeasurementReport *,
6295 	uint32_t*);
6296 
6297 #ifdef __cplusplus
6298 }; /* End extern "C". */
6299 #endif /* C++ */
6300 
6301 /* EID 38 (0x26) */
6302 typedef struct sDot11fIEMeasurementRequest {
6303 	uint8_t             present;
6304 	uint8_t             measurement_token;
6305 	uint8_t             parallel:1;
6306 	uint8_t               enable:1;
6307 	uint8_t              request:1;
6308 	uint8_t               report:1;
6309 	uint8_t    durationMandatory:1;
6310 	uint8_t               unused:3;
6311 	uint8_t             measurement_type;
6312 	union {
6313 		struct {
6314 			uint8_t channel_no;
6315 			uint8_t meas_start_time[8];
6316 			uint16_t meas_duration;
6317 		} Basic; /* measurement_type = 0 */
6318 		struct {
6319 			uint8_t channel_no;
6320 			uint8_t meas_start_time[8];
6321 			uint16_t meas_duration;
6322 		} CCA; /* measurement_type = 1 */
6323 		struct {
6324 			uint8_t channel_no;
6325 			uint8_t meas_start_time[8];
6326 			uint16_t meas_duration;
6327 		} RPIHistogram; /* measurement_type = 2 */
6328 		struct {
6329 			uint8_t op_class;
6330 			uint8_t channel;
6331 			uint16_t randomization_intv;
6332 			uint16_t meas_duration;
6333 	tDot11fIErrm_reporting rrm_reporting;
6334 	tDot11fIEwide_bw_chan_switch wide_bw_chan_switch;
6335 	tDot11fIEbw_indication bw_indication;
6336 		} channel_load; /* measurement_type = 3 */
6337 		struct {
6338 			uint8_t regClass;
6339 			uint8_t channel;
6340 			uint16_t randomization;
6341 			uint16_t meas_duration;
6342 			uint8_t meas_mode;
6343 			uint8_t BSSID[6];
6344 	tDot11fIESSID SSID;
6345 	tDot11fIErrm_reporting rrm_reporting;
6346 	tDot11fIEBcnReportingDetail BcnReportingDetail;
6347 	tDot11fIERequestedInfo RequestedInfo;
6348 	tDot11fIEExtRequestedInfo ExtRequestedInfo;
6349 	uint16_t num_APChannelReport;
6350 	tDot11fIEAPChannelReport APChannelReport[2];
6351 	tDot11fIElast_beacon_report_indication last_beacon_report_indication;
6352 		} Beacon; /* measurement_type = 5 */
6353 		struct {
6354 			uint8_t loc_subject;
6355 	tDot11fIEazimuth_req azimuth_req;
6356 	tDot11fIEreq_mac_addr req_mac_addr;
6357 	tDot11fIEtgt_mac_addr tgt_mac_addr;
6358 	tDot11fIEmax_age max_age;
6359 		} lci; /* measurement_type = 8 */
6360 		struct {
6361 			uint16_t random_interval;
6362 			uint8_t min_ap_count;
6363 	tDot11fIEneighbor_rpt neighbor_rpt;
6364 	tDot11fIEmax_age max_age;
6365 		} ftmrr; /* measurement_type = 16 */
6366 		struct {
6367 			uint8_t peer_mac_addr[6];
6368 			uint16_t randomization;
6369 			uint16_t meas_duration;
6370 			uint8_t group_identity;
6371 		} sta_stats; /* measurement_type = 7 */
6372 	} measurement_request;
6373 } tDot11fIEMeasurementRequest;
6374 
6375 #define DOT11F_EID_MEASUREMENTREQUEST (38)
6376 
6377 /* N.B. These #defines do *not* include the EID & length */
6378 #define DOT11F_IE_MEASUREMENTREQUEST_MIN_LEN (4)
6379 
6380 #define DOT11F_IE_MEASUREMENTREQUEST_MAX_LEN (16)
6381 
6382 #ifdef __cplusplus
6383 extern "C" {
6384 #endif /* C++ */
6385 __must_check uint32_t dot11f_unpack_ie_measurement_request(
6386 	tpAniSirGlobal,
6387 	uint8_t *,
6388 	uint8_t,
6389 	tDot11fIEMeasurementRequest*,
6390 	bool);
6391 
6392 uint32_t dot11f_pack_ie_measurement_request(
6393 	tpAniSirGlobal,
6394 	tDot11fIEMeasurementRequest *,
6395 	uint8_t *,
6396 	uint32_t,
6397 	uint32_t*);
6398 
6399 uint32_t dot11f_get_packed_ie_measurement_request(
6400 	tpAniSirGlobal,
6401 	tDot11fIEMeasurementRequest *,
6402 	uint32_t*);
6403 
6404 #ifdef __cplusplus
6405 }; /* End extern "C". */
6406 #endif /* C++ */
6407 
6408 /* EID 54 (0x36) */
6409 typedef struct sDot11fIEMobilityDomain {
6410 	uint8_t             present;
6411 	uint16_t            MDID;
6412 	uint8_t            overDSCap:1;
6413 	uint8_t       resourceReqCap:1;
6414 	uint8_t             reserved:6;
6415 } tDot11fIEMobilityDomain;
6416 
6417 #define DOT11F_EID_MOBILITYDOMAIN (54)
6418 
6419 /* N.B. These #defines do *not* include the EID & length */
6420 #define DOT11F_IE_MOBILITYDOMAIN_MIN_LEN (3)
6421 
6422 #define DOT11F_IE_MOBILITYDOMAIN_MAX_LEN (3)
6423 
6424 #ifdef __cplusplus
6425 extern "C" {
6426 #endif /* C++ */
6427 __must_check uint32_t dot11f_unpack_ie_mobility_domain(
6428 	tpAniSirGlobal,
6429 	uint8_t *,
6430 	uint8_t,
6431 	tDot11fIEMobilityDomain*,
6432 	bool);
6433 
6434 uint32_t dot11f_pack_ie_mobility_domain(
6435 	tpAniSirGlobal,
6436 	tDot11fIEMobilityDomain *,
6437 	uint8_t *,
6438 	uint32_t,
6439 	uint32_t*);
6440 
6441 uint32_t dot11f_get_packed_ie_MobilityDomain(
6442 	tpAniSirGlobal,
6443 	tDot11fIEMobilityDomain *,
6444 	uint32_t*);
6445 
6446 #ifdef __cplusplus
6447 }; /* End extern "C". */
6448 #endif /* C++ */
6449 
6450 /* EID 52 (0x34) */
6451 typedef struct sDot11fIENeighborReport {
6452 	uint8_t                             present;
6453 	uint8_t                             bssid[6];
6454 	uint8_t                       APReachability:2;
6455 	uint8_t                             Security:1;
6456 	uint8_t                             KeyScope:1;
6457 	uint8_t                          SpecMgmtCap:1;
6458 	uint8_t                               QosCap:1;
6459 	uint8_t                                 apsd:1;
6460 	uint8_t                                  rrm:1;
6461 	uint8_t                            DelayedBA:1;
6462 	uint8_t                                ImmBA:1;
6463 	uint8_t                       MobilityDomain:1;
6464 	uint8_t                             reserved:5;
6465 	uint16_t                            reserved1;
6466 	uint8_t                             regulatoryClass;
6467 	uint8_t                             channel;
6468 	uint8_t                             PhyType;
6469 	tDot11fIETSFInfo                    TSFInfo;
6470 	tDot11fIECondensedCountryStr        CondensedCountryStr;
6471 	tDot11fIEMeasurementPilot           MeasurementPilot;
6472 	tDot11fIERRMEnabledCap              RRMEnabledCap;
6473 	tDot11fIEMultiBssid                 MultiBssid;
6474 } tDot11fIENeighborReport;
6475 
6476 #define DOT11F_EID_NEIGHBORREPORT (52)
6477 
6478 /* N.B. These #defines do *not* include the EID & length */
6479 #define DOT11F_IE_NEIGHBORREPORT_MIN_LEN (13)
6480 
6481 #define DOT11F_IE_NEIGHBORREPORT_MAX_LEN (546)
6482 
6483 #ifdef __cplusplus
6484 extern "C" {
6485 #endif /* C++ */
6486 __must_check uint32_t dot11f_unpack_ie_neighbor_report(
6487 	tpAniSirGlobal,
6488 	uint8_t *,
6489 	uint8_t,
6490 	tDot11fIENeighborReport*,
6491 	bool);
6492 
6493 uint32_t dot11f_pack_ie_neighbor_report(
6494 	tpAniSirGlobal,
6495 	tDot11fIENeighborReport *,
6496 	uint8_t *,
6497 	uint32_t,
6498 	uint32_t*);
6499 
6500 uint32_t dot11f_get_packed_ie_neighbor_report(
6501 	tpAniSirGlobal,
6502 	tDot11fIENeighborReport *,
6503 	uint32_t*);
6504 
6505 #ifdef __cplusplus
6506 }; /* End extern "C". */
6507 #endif /* C++ */
6508 
6509 /* EID 74 (0x4a) */
6510 typedef struct sDot11fIEOBSSScanParameters {
6511 	uint8_t             present;
6512 	uint16_t            obssScanPassiveDwell;
6513 	uint16_t            obssScanActiveDwell;
6514 	uint16_t            bssChannelWidthTriggerScanInterval;
6515 	uint16_t            obssScanPassiveTotalPerChannel;
6516 	uint16_t            obssScanActiveTotalPerChannel;
6517 	uint16_t            bssWidthChannelTransitionDelayFactor;
6518 	uint16_t            obssScanActivityThreshold;
6519 } tDot11fIEOBSSScanParameters;
6520 
6521 #define DOT11F_EID_OBSSSCANPARAMETERS (74)
6522 
6523 /* N.B. These #defines do *not* include the EID & length */
6524 #define DOT11F_IE_OBSSSCANPARAMETERS_MIN_LEN (14)
6525 
6526 #define DOT11F_IE_OBSSSCANPARAMETERS_MAX_LEN (14)
6527 
6528 #ifdef __cplusplus
6529 extern "C" {
6530 #endif /* C++ */
6531 __must_check uint32_t dot11f_unpack_ie_obss_scan_parameters(
6532 	tpAniSirGlobal,
6533 	uint8_t *,
6534 	uint8_t,
6535 	tDot11fIEOBSSScanParameters*,
6536 	bool);
6537 
6538 uint32_t dot11f_pack_ie_obss_scan_parameters(
6539 	tpAniSirGlobal,
6540 	tDot11fIEOBSSScanParameters *,
6541 	uint8_t *,
6542 	uint32_t,
6543 	uint32_t*);
6544 
6545 uint32_t dot11f_get_packed_ie_OBSSScanParameters(
6546 	tpAniSirGlobal,
6547 	tDot11fIEOBSSScanParameters *,
6548 	uint32_t*);
6549 
6550 #ifdef __cplusplus
6551 }; /* End extern "C". */
6552 #endif /* C++ */
6553 
6554 /* EID 199 (0xc7) */
6555 typedef struct sDot11fIEOperatingMode {
6556 	uint8_t             present;
6557 	uint8_t            chanWidth:2;
6558 	uint8_t   vht_160_80p80_supp:1;
6559 	uint8_t              no_ldpc:1;
6560 	uint8_t                rxNSS:3;
6561 	uint8_t            rxNSSType:1;
6562 } tDot11fIEOperatingMode;
6563 
6564 #define DOT11F_EID_OPERATINGMODE (199)
6565 
6566 /* N.B. These #defines do *not* include the EID & length */
6567 #define DOT11F_IE_OPERATINGMODE_MIN_LEN (1)
6568 
6569 #define DOT11F_IE_OPERATINGMODE_MAX_LEN (1)
6570 
6571 #ifdef __cplusplus
6572 extern "C" {
6573 #endif /* C++ */
6574 __must_check uint32_t dot11f_unpack_ie_operating_mode(
6575 	tpAniSirGlobal,
6576 	uint8_t *,
6577 	uint8_t,
6578 	tDot11fIEOperatingMode*,
6579 	bool);
6580 
6581 uint32_t dot11f_pack_ie_operating_mode(
6582 	tpAniSirGlobal,
6583 	tDot11fIEOperatingMode *,
6584 	uint8_t *,
6585 	uint32_t,
6586 	uint32_t*);
6587 
6588 uint32_t dot11f_get_packed_ie_OperatingMode(
6589 	tpAniSirGlobal,
6590 	tDot11fIEOperatingMode *,
6591 	uint32_t*);
6592 
6593 #ifdef __cplusplus
6594 }; /* End extern "C". */
6595 #endif /* C++ */
6596 
6597 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6598 typedef struct sDot11fIEP2PAssocReq {
6599 	uint8_t             present;
6600 	tDot11fTLVP2PCapability P2PCapability;
6601 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6602 	tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6603 } tDot11fIEP2PAssocReq;
6604 
6605 #define DOT11F_EID_P2PASSOCREQ (221)
6606 
6607 /* N.B. These #defines do *not* include the EID & length */
6608 #define DOT11F_IE_P2PASSOCREQ_MIN_LEN (4)
6609 
6610 #define DOT11F_IE_P2PASSOCREQ_MAX_LEN (71)
6611 
6612 #ifdef __cplusplus
6613 extern "C" {
6614 #endif /* C++ */
6615 __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_req(
6616 	tpAniSirGlobal,
6617 	uint8_t *,
6618 	uint8_t,
6619 	tDot11fIEP2PAssocReq*,
6620 	bool);
6621 
6622 uint32_t dot11f_pack_ie_p2_p_assoc_req(
6623 	tpAniSirGlobal,
6624 	tDot11fIEP2PAssocReq *,
6625 	uint8_t *,
6626 	uint32_t,
6627 	uint32_t*);
6628 
6629 uint32_t dot11f_get_packed_iep2_p_assoc_req(
6630 	tpAniSirGlobal,
6631 	tDot11fIEP2PAssocReq *,
6632 	uint32_t*);
6633 
6634 #ifdef __cplusplus
6635 }; /* End extern "C". */
6636 #endif /* C++ */
6637 
6638 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6639 typedef struct sDot11fIEP2PAssocRes {
6640 	uint8_t             present;
6641 	tDot11fTLVP2PStatus P2PStatus;
6642 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6643 } tDot11fIEP2PAssocRes;
6644 
6645 #define DOT11F_EID_P2PASSOCRES (221)
6646 
6647 /* N.B. These #defines do *not* include the EID & length */
6648 #define DOT11F_IE_P2PASSOCRES_MIN_LEN (4)
6649 
6650 #define DOT11F_IE_P2PASSOCRES_MAX_LEN (15)
6651 
6652 #ifdef __cplusplus
6653 extern "C" {
6654 #endif /* C++ */
6655 __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_res(
6656 	tpAniSirGlobal,
6657 	uint8_t *,
6658 	uint8_t,
6659 	tDot11fIEP2PAssocRes*,
6660 	bool);
6661 
6662 uint32_t dot11f_pack_ie_p2_p_assoc_res(
6663 	tpAniSirGlobal,
6664 	tDot11fIEP2PAssocRes *,
6665 	uint8_t *,
6666 	uint32_t,
6667 	uint32_t*);
6668 
6669 uint32_t dot11f_get_packed_iep2_p_assoc_res(
6670 	tpAniSirGlobal,
6671 	tDot11fIEP2PAssocRes *,
6672 	uint32_t*);
6673 
6674 #ifdef __cplusplus
6675 }; /* End extern "C". */
6676 #endif /* C++ */
6677 
6678 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6679 typedef struct sDot11fIEP2PBeacon {
6680 	uint8_t             present;
6681 	tDot11fTLVP2PCapability P2PCapability;
6682 	tDot11fTLVP2PDeviceId P2PDeviceId;
6683 	tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6684 } tDot11fIEP2PBeacon;
6685 
6686 #define DOT11F_EID_P2PBEACON (221)
6687 
6688 /* N.B. These #defines do *not* include the EID & length */
6689 #define DOT11F_IE_P2PBEACON_MIN_LEN (4)
6690 
6691 #define DOT11F_IE_P2PBEACON_MAX_LEN (59)
6692 
6693 #ifdef __cplusplus
6694 extern "C" {
6695 #endif /* C++ */
6696 __must_check uint32_t dot11f_unpack_ie_p2_p_beacon(
6697 	tpAniSirGlobal,
6698 	uint8_t *,
6699 	uint8_t,
6700 	tDot11fIEP2PBeacon*,
6701 	bool);
6702 
6703 uint32_t dot11f_pack_ie_p2_p_beacon(
6704 	tpAniSirGlobal,
6705 	tDot11fIEP2PBeacon *,
6706 	uint8_t *,
6707 	uint32_t,
6708 	uint32_t*);
6709 
6710 uint32_t dot11f_get_packed_iep2_p_beacon(
6711 	tpAniSirGlobal,
6712 	tDot11fIEP2PBeacon *,
6713 	uint32_t*);
6714 
6715 #ifdef __cplusplus
6716 }; /* End extern "C". */
6717 #endif /* C++ */
6718 
6719 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6720 typedef struct sDot11fIEP2PBeaconProbeRes {
6721 	uint8_t             present;
6722 	tDot11fTLVP2PCapability P2PCapability;
6723 	tDot11fTLVP2PDeviceId P2PDeviceId;
6724 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6725 	tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6726 	tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6727 	tDot11fTLVP2PGroupInfo P2PGroupInfo;
6728 } tDot11fIEP2PBeaconProbeRes;
6729 
6730 #define DOT11F_EID_P2PBEACONPROBERES (221)
6731 
6732 /* N.B. These #defines do *not* include the EID & length */
6733 #define DOT11F_IE_P2PBEACONPROBERES_MIN_LEN (4)
6734 
6735 #define DOT11F_IE_P2PBEACONPROBERES_MAX_LEN (1148)
6736 
6737 #ifdef __cplusplus
6738 extern "C" {
6739 #endif /* C++ */
6740 __must_check uint32_t dot11f_unpack_ie_p2_p_beacon_probe_res(
6741 	tpAniSirGlobal,
6742 	uint8_t *,
6743 	uint8_t,
6744 	tDot11fIEP2PBeaconProbeRes*,
6745 	bool);
6746 
6747 uint32_t dot11f_pack_ie_p2_p_beacon_probe_res(
6748 	tpAniSirGlobal,
6749 	tDot11fIEP2PBeaconProbeRes *,
6750 	uint8_t *,
6751 	uint32_t,
6752 	uint32_t*);
6753 
6754 uint32_t dot11f_get_packed_iep2_p_beacon_probe_res(
6755 	tpAniSirGlobal,
6756 	tDot11fIEP2PBeaconProbeRes *,
6757 	uint32_t*);
6758 
6759 #ifdef __cplusplus
6760 }; /* End extern "C". */
6761 #endif /* C++ */
6762 
6763 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6764 typedef struct sDot11fIEP2PDeAuth {
6765 	uint8_t             present;
6766 	tDot11fTLVMinorReasonCode MinorReasonCode;
6767 } tDot11fIEP2PDeAuth;
6768 
6769 #define DOT11F_EID_P2PDEAUTH (221)
6770 
6771 /* N.B. These #defines do *not* include the EID & length */
6772 #define DOT11F_IE_P2PDEAUTH_MIN_LEN (4)
6773 
6774 #define DOT11F_IE_P2PDEAUTH_MAX_LEN (8)
6775 
6776 #ifdef __cplusplus
6777 extern "C" {
6778 #endif /* C++ */
6779 __must_check uint32_t dot11f_unpack_ie_p2_p_de_auth(
6780 	tpAniSirGlobal,
6781 	uint8_t *,
6782 	uint8_t,
6783 	tDot11fIEP2PDeAuth*,
6784 	bool);
6785 
6786 uint32_t dot11f_pack_ie_p2_p_de_auth(
6787 	tpAniSirGlobal,
6788 	tDot11fIEP2PDeAuth *,
6789 	uint8_t *,
6790 	uint32_t,
6791 	uint32_t*);
6792 
6793 uint32_t dot11f_get_packed_iep2_p_de_auth(
6794 	tpAniSirGlobal,
6795 	tDot11fIEP2PDeAuth *,
6796 	uint32_t*);
6797 
6798 #ifdef __cplusplus
6799 }; /* End extern "C". */
6800 #endif /* C++ */
6801 
6802 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6803 typedef struct sDot11fIEP2PDisAssoc {
6804 	uint8_t             present;
6805 	tDot11fTLVMinorReasonCode MinorReasonCode;
6806 } tDot11fIEP2PDisAssoc;
6807 
6808 #define DOT11F_EID_P2PDISASSOC (221)
6809 
6810 /* N.B. These #defines do *not* include the EID & length */
6811 #define DOT11F_IE_P2PDISASSOC_MIN_LEN (4)
6812 
6813 #define DOT11F_IE_P2PDISASSOC_MAX_LEN (8)
6814 
6815 #ifdef __cplusplus
6816 extern "C" {
6817 #endif /* C++ */
6818 __must_check uint32_t dot11f_unpack_ie_p2_p_dis_assoc(
6819 	tpAniSirGlobal,
6820 	uint8_t *,
6821 	uint8_t,
6822 	tDot11fIEP2PDisAssoc*,
6823 	bool);
6824 
6825 uint32_t dot11f_pack_ie_p2_p_dis_assoc(
6826 	tpAniSirGlobal,
6827 	tDot11fIEP2PDisAssoc *,
6828 	uint8_t *,
6829 	uint32_t,
6830 	uint32_t*);
6831 
6832 uint32_t dot11f_get_packed_iep2_p_dis_assoc(
6833 	tpAniSirGlobal,
6834 	tDot11fIEP2PDisAssoc *,
6835 	uint32_t*);
6836 
6837 #ifdef __cplusplus
6838 }; /* End extern "C". */
6839 #endif /* C++ */
6840 
6841 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} */
6842 typedef struct sDot11fIEP2PIEOpaque {
6843 	uint8_t             present;
6844 	uint8_t             num_data;
6845 	uint8_t             data[249];
6846 } tDot11fIEP2PIEOpaque;
6847 
6848 #define DOT11F_EID_P2PIEOPAQUE (221)
6849 
6850 /* N.B. These #defines do *not* include the EID & length */
6851 #define DOT11F_IE_P2PIEOPAQUE_MIN_LEN (6)
6852 
6853 #define DOT11F_IE_P2PIEOPAQUE_MAX_LEN (253)
6854 
6855 #ifdef __cplusplus
6856 extern "C" {
6857 #endif /* C++ */
6858 __must_check uint32_t dot11f_unpack_ie_p2_pie_opaque(
6859 	tpAniSirGlobal,
6860 	uint8_t *,
6861 	uint8_t,
6862 	tDot11fIEP2PIEOpaque*,
6863 	bool);
6864 
6865 uint32_t dot11f_pack_ie_p2_pie_opaque(
6866 	tpAniSirGlobal,
6867 	tDot11fIEP2PIEOpaque *,
6868 	uint8_t *,
6869 	uint32_t,
6870 	uint32_t*);
6871 
6872 uint32_t dot11f_get_packed_ie_P2PIEOpaque(
6873 	tpAniSirGlobal,
6874 	tDot11fIEP2PIEOpaque *,
6875 	uint32_t*);
6876 
6877 #ifdef __cplusplus
6878 }; /* End extern "C". */
6879 #endif /* C++ */
6880 
6881 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6882 typedef struct sDot11fIEP2PProbeReq {
6883 	uint8_t             present;
6884 	tDot11fTLVP2PCapability P2PCapability;
6885 	tDot11fTLVP2PDeviceId P2PDeviceId;
6886 	tDot11fTLVListenChannel ListenChannel;
6887 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6888 	tDot11fTLVOperatingChannel OperatingChannel;
6889 } tDot11fIEP2PProbeReq;
6890 
6891 #define DOT11F_EID_P2PPROBEREQ (221)
6892 
6893 /* N.B. These #defines do *not* include the EID & length */
6894 #define DOT11F_IE_P2PPROBEREQ_MIN_LEN (4)
6895 
6896 #define DOT11F_IE_P2PPROBEREQ_MAX_LEN (41)
6897 
6898 #ifdef __cplusplus
6899 extern "C" {
6900 #endif /* C++ */
6901 __must_check uint32_t dot11f_unpack_ie_p2_p_probe_req(
6902 	tpAniSirGlobal,
6903 	uint8_t *,
6904 	uint8_t,
6905 	tDot11fIEP2PProbeReq*,
6906 	bool);
6907 
6908 uint32_t dot11f_pack_ie_p2_p_probe_req(
6909 	tpAniSirGlobal,
6910 	tDot11fIEP2PProbeReq *,
6911 	uint8_t *,
6912 	uint32_t,
6913 	uint32_t*);
6914 
6915 uint32_t dot11f_get_packed_iep2_p_probe_req(
6916 	tpAniSirGlobal,
6917 	tDot11fIEP2PProbeReq *,
6918 	uint32_t*);
6919 
6920 #ifdef __cplusplus
6921 }; /* End extern "C". */
6922 #endif /* C++ */
6923 
6924 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6925 typedef struct sDot11fIEP2PProbeRes {
6926 	uint8_t             present;
6927 	tDot11fTLVP2PCapability P2PCapability;
6928 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6929 	tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6930 	tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6931 	tDot11fTLVP2PGroupInfo P2PGroupInfo;
6932 } tDot11fIEP2PProbeRes;
6933 
6934 #define DOT11F_EID_P2PPROBERES (221)
6935 
6936 /* N.B. These #defines do *not* include the EID & length */
6937 #define DOT11F_IE_P2PPROBERES_MIN_LEN (4)
6938 
6939 #define DOT11F_IE_P2PPROBERES_MAX_LEN (1139)
6940 
6941 #ifdef __cplusplus
6942 extern "C" {
6943 #endif /* C++ */
6944 __must_check uint32_t dot11f_unpack_ie_p2_p_probe_res(
6945 	tpAniSirGlobal,
6946 	uint8_t *,
6947 	uint8_t,
6948 	tDot11fIEP2PProbeRes*,
6949 	bool);
6950 
6951 uint32_t dot11f_pack_ie_p2_p_probe_res(
6952 	tpAniSirGlobal,
6953 	tDot11fIEP2PProbeRes *,
6954 	uint8_t *,
6955 	uint32_t,
6956 	uint32_t*);
6957 
6958 uint32_t dot11f_get_packed_iep2_p_probe_res(
6959 	tpAniSirGlobal,
6960 	tDot11fIEP2PProbeRes *,
6961 	uint32_t*);
6962 
6963 #ifdef __cplusplus
6964 }; /* End extern "C". */
6965 #endif /* C++ */
6966 
6967 /* EID 105 (0x69) */
6968 typedef struct sDot11fIEPTIControl {
6969 	uint8_t             present;
6970 	uint8_t             tid;
6971 	uint16_t            sequence_control;
6972 } tDot11fIEPTIControl;
6973 
6974 #define DOT11F_EID_PTICONTROL (105)
6975 
6976 /* N.B. These #defines do *not* include the EID & length */
6977 #define DOT11F_IE_PTICONTROL_MIN_LEN (3)
6978 
6979 #define DOT11F_IE_PTICONTROL_MAX_LEN (3)
6980 
6981 #ifdef __cplusplus
6982 extern "C" {
6983 #endif /* C++ */
6984 __must_check uint32_t dot11f_unpack_ie_pti_control(
6985 	tpAniSirGlobal,
6986 	uint8_t *,
6987 	uint8_t,
6988 	tDot11fIEPTIControl*,
6989 	bool);
6990 
6991 uint32_t dot11f_pack_ie_pti_control(
6992 	tpAniSirGlobal,
6993 	tDot11fIEPTIControl *,
6994 	uint8_t *,
6995 	uint32_t,
6996 	uint32_t*);
6997 
6998 uint32_t dot11f_get_packed_ie_PTIControl(
6999 	tpAniSirGlobal,
7000 	tDot11fIEPTIControl *,
7001 	uint32_t*);
7002 
7003 #ifdef __cplusplus
7004 }; /* End extern "C". */
7005 #endif /* C++ */
7006 
7007 /* EID 106 (0x6a) */
7008 typedef struct sDot11fIEPUBufferStatus {
7009 	uint8_t             present;
7010 	uint8_t   ac_bk_traffic_aval:1;
7011 	uint8_t   ac_be_traffic_aval:1;
7012 	uint8_t   ac_vi_traffic_aval:1;
7013 	uint8_t   ac_vo_traffic_aval:1;
7014 	uint8_t             reserved:4;
7015 } tDot11fIEPUBufferStatus;
7016 
7017 #define DOT11F_EID_PUBUFFERSTATUS (106)
7018 
7019 /* N.B. These #defines do *not* include the EID & length */
7020 #define DOT11F_IE_PUBUFFERSTATUS_MIN_LEN (1)
7021 
7022 #define DOT11F_IE_PUBUFFERSTATUS_MAX_LEN (1)
7023 
7024 #ifdef __cplusplus
7025 extern "C" {
7026 #endif /* C++ */
7027 __must_check uint32_t dot11f_unpack_ie_pu_buffer_status(
7028 	tpAniSirGlobal,
7029 	uint8_t *,
7030 	uint8_t,
7031 	tDot11fIEPUBufferStatus*,
7032 	bool);
7033 
7034 uint32_t dot11f_pack_ie_pu_buffer_status(
7035 	tpAniSirGlobal,
7036 	tDot11fIEPUBufferStatus *,
7037 	uint8_t *,
7038 	uint32_t,
7039 	uint32_t*);
7040 
7041 uint32_t dot11f_get_packed_ie_PUBufferStatus(
7042 	tpAniSirGlobal,
7043 	tDot11fIEPUBufferStatus *,
7044 	uint32_t*);
7045 
7046 #ifdef __cplusplus
7047 }; /* End extern "C". */
7048 #endif /* C++ */
7049 
7050 /* EID 33 (0x21) */
7051 typedef struct sDot11fIEPowerCaps {
7052 	uint8_t             present;
7053 	uint8_t             minTxPower;
7054 	uint8_t             maxTxPower;
7055 } tDot11fIEPowerCaps;
7056 
7057 #define DOT11F_EID_POWERCAPS (33)
7058 
7059 /* N.B. These #defines do *not* include the EID & length */
7060 #define DOT11F_IE_POWERCAPS_MIN_LEN (2)
7061 
7062 #define DOT11F_IE_POWERCAPS_MAX_LEN (2)
7063 
7064 #ifdef __cplusplus
7065 extern "C" {
7066 #endif /* C++ */
7067 __must_check uint32_t dot11f_unpack_ie_power_caps(
7068 	tpAniSirGlobal,
7069 	uint8_t *,
7070 	uint8_t,
7071 	tDot11fIEPowerCaps*,
7072 	bool);
7073 
7074 uint32_t dot11f_pack_ie_power_caps(
7075 	tpAniSirGlobal,
7076 	tDot11fIEPowerCaps *,
7077 	uint8_t *,
7078 	uint32_t,
7079 	uint32_t*);
7080 
7081 uint32_t dot11f_get_packed_ie_PowerCaps(
7082 	tpAniSirGlobal,
7083 	tDot11fIEPowerCaps *,
7084 	uint32_t*);
7085 
7086 #ifdef __cplusplus
7087 }; /* End extern "C". */
7088 #endif /* C++ */
7089 
7090 /* EID 32 (0x20) */
7091 typedef struct sDot11fIEPowerConstraints {
7092 	uint8_t             present;
7093 	uint8_t             localPowerConstraints;
7094 } tDot11fIEPowerConstraints;
7095 
7096 #define DOT11F_EID_POWERCONSTRAINTS (32)
7097 
7098 /* N.B. These #defines do *not* include the EID & length */
7099 #define DOT11F_IE_POWERCONSTRAINTS_MIN_LEN (1)
7100 
7101 #define DOT11F_IE_POWERCONSTRAINTS_MAX_LEN (1)
7102 
7103 #ifdef __cplusplus
7104 extern "C" {
7105 #endif /* C++ */
7106 __must_check uint32_t dot11f_unpack_ie_power_constraints(
7107 	tpAniSirGlobal,
7108 	uint8_t *,
7109 	uint8_t,
7110 	tDot11fIEPowerConstraints*,
7111 	bool);
7112 
7113 uint32_t dot11f_pack_ie_power_constraints(
7114 	tpAniSirGlobal,
7115 	tDot11fIEPowerConstraints *,
7116 	uint8_t *,
7117 	uint32_t,
7118 	uint32_t*);
7119 
7120 uint32_t dot11f_get_packed_ie_PowerConstraints(
7121 	tpAniSirGlobal,
7122 	tDot11fIEPowerConstraints *,
7123 	uint32_t*);
7124 
7125 #ifdef __cplusplus
7126 }; /* End extern "C". */
7127 #endif /* C++ */
7128 
7129 /* EID 11 (0x0b) */
7130 typedef struct sDot11fIEQBSSLoad {
7131 	uint8_t             present;
7132 	uint16_t            stacount;
7133 	uint8_t             chautil;
7134 	uint16_t            avail;
7135 } tDot11fIEQBSSLoad;
7136 
7137 #define DOT11F_EID_QBSSLOAD (11)
7138 
7139 /* N.B. These #defines do *not* include the EID & length */
7140 #define DOT11F_IE_QBSSLOAD_MIN_LEN (5)
7141 
7142 #define DOT11F_IE_QBSSLOAD_MAX_LEN (5)
7143 
7144 #ifdef __cplusplus
7145 extern "C" {
7146 #endif /* C++ */
7147 __must_check uint32_t dot11f_unpack_ie_qbss_load(
7148 	tpAniSirGlobal,
7149 	uint8_t *,
7150 	uint8_t,
7151 	tDot11fIEQBSSLoad*,
7152 	bool);
7153 
7154 uint32_t dot11f_pack_ie_qbss_load(
7155 	tpAniSirGlobal,
7156 	tDot11fIEQBSSLoad *,
7157 	uint8_t *,
7158 	uint32_t,
7159 	uint32_t*);
7160 
7161 uint32_t dot11f_get_packed_ie_QBSSLoad(
7162 	tpAniSirGlobal,
7163 	tDot11fIEQBSSLoad *,
7164 	uint32_t*);
7165 
7166 #ifdef __cplusplus
7167 }; /* End extern "C". */
7168 #endif /* C++ */
7169 
7170 /* EID 221 (0xdd) {OUI 0x00, 0xa0, 0xc6} */
7171 typedef struct sDot11fIEQComVendorIE {
7172 	uint8_t             present;
7173 	uint8_t             type;
7174 	uint8_t             channel;
7175 } tDot11fIEQComVendorIE;
7176 
7177 #define DOT11F_EID_QCOMVENDORIE (221)
7178 
7179 /* N.B. These #defines do *not* include the EID & length */
7180 #define DOT11F_IE_QCOMVENDORIE_MIN_LEN (5)
7181 
7182 #define DOT11F_IE_QCOMVENDORIE_MAX_LEN (5)
7183 
7184 #ifdef __cplusplus
7185 extern "C" {
7186 #endif /* C++ */
7187 __must_check uint32_t dot11f_unpack_ie_QComVendorIE(
7188 	tpAniSirGlobal,
7189 	uint8_t *,
7190 	uint8_t,
7191 	tDot11fIEQComVendorIE*,
7192 	bool);
7193 
7194 uint32_t dot11f_pack_ie_QComVendorIE(
7195 	tpAniSirGlobal,
7196 	tDot11fIEQComVendorIE *,
7197 	uint8_t *,
7198 	uint32_t,
7199 	uint32_t*);
7200 
7201 uint32_t dot11f_get_packed_ie_QComVendorIE(
7202 	tpAniSirGlobal,
7203 	tDot11fIEQComVendorIE *,
7204 	uint32_t*);
7205 
7206 #ifdef __cplusplus
7207 }; /* End extern "C". */
7208 #endif /* C++ */
7209 
7210 /* EID 46 (0x2e) */
7211 typedef struct sDot11fIEQOSCapsAp {
7212 	uint8_t             present;
7213 	uint8_t                count:4;
7214 	uint8_t                 qack:1;
7215 	uint8_t                 qreq:1;
7216 	uint8_t              txopreq:1;
7217 	uint8_t             reserved:1;
7218 } tDot11fIEQOSCapsAp;
7219 
7220 #define DOT11F_EID_QOSCAPSAP (46)
7221 
7222 /* N.B. These #defines do *not* include the EID & length */
7223 #define DOT11F_IE_QOSCAPSAP_MIN_LEN (1)
7224 
7225 #define DOT11F_IE_QOSCAPSAP_MAX_LEN (1)
7226 
7227 #ifdef __cplusplus
7228 extern "C" {
7229 #endif /* C++ */
7230 __must_check uint32_t dot11f_unpack_ie_qos_caps_ap(
7231 	tpAniSirGlobal,
7232 	uint8_t *,
7233 	uint8_t,
7234 	tDot11fIEQOSCapsAp*,
7235 	bool);
7236 
7237 uint32_t dot11f_pack_ie_qos_caps_ap(
7238 	tpAniSirGlobal,
7239 	tDot11fIEQOSCapsAp *,
7240 	uint8_t *,
7241 	uint32_t,
7242 	uint32_t*);
7243 
7244 uint32_t dot11f_get_packed_ie_QOSCapsAp(
7245 	tpAniSirGlobal,
7246 	tDot11fIEQOSCapsAp *,
7247 	uint32_t*);
7248 
7249 #ifdef __cplusplus
7250 }; /* End extern "C". */
7251 #endif /* C++ */
7252 
7253 /* EID 46 (0x2e) */
7254 typedef struct sDot11fIEQOSCapsStation {
7255 	uint8_t             present;
7256 	uint8_t           acvo_uapsd:1;
7257 	uint8_t           acvi_uapsd:1;
7258 	uint8_t           acbk_uapsd:1;
7259 	uint8_t           acbe_uapsd:1;
7260 	uint8_t                 qack:1;
7261 	uint8_t        max_sp_length:2;
7262 	uint8_t        more_data_ack:1;
7263 } tDot11fIEQOSCapsStation;
7264 
7265 #define DOT11F_EID_QOSCAPSSTATION (46)
7266 
7267 /* N.B. These #defines do *not* include the EID & length */
7268 #define DOT11F_IE_QOSCAPSSTATION_MIN_LEN (1)
7269 
7270 #define DOT11F_IE_QOSCAPSSTATION_MAX_LEN (1)
7271 
7272 #ifdef __cplusplus
7273 extern "C" {
7274 #endif /* C++ */
7275 __must_check uint32_t dot11f_unpack_ie_qos_caps_station(
7276 	tpAniSirGlobal,
7277 	uint8_t *,
7278 	uint8_t,
7279 	tDot11fIEQOSCapsStation*,
7280 	bool);
7281 
7282 uint32_t dot11f_pack_ie_qos_caps_station(
7283 	tpAniSirGlobal,
7284 	tDot11fIEQOSCapsStation *,
7285 	uint8_t *,
7286 	uint32_t,
7287 	uint32_t*);
7288 
7289 uint32_t dot11f_get_packed_ie_QOSCapsStation(
7290 	tpAniSirGlobal,
7291 	tDot11fIEQOSCapsStation *,
7292 	uint32_t*);
7293 
7294 #ifdef __cplusplus
7295 }; /* End extern "C". */
7296 #endif /* C++ */
7297 
7298 /* EID 110 (0x6e) */
7299 typedef struct sDot11fIEQosMapSet {
7300 	uint8_t             present;
7301 	uint8_t             num_dscp_exceptions;
7302 	uint8_t             dscp_exceptions[58];
7303 } tDot11fIEQosMapSet;
7304 
7305 #define DOT11F_EID_QOSMAPSET (110)
7306 
7307 /* N.B. These #defines do *not* include the EID & length */
7308 #define DOT11F_IE_QOSMAPSET_MIN_LEN (16)
7309 
7310 #define DOT11F_IE_QOSMAPSET_MAX_LEN (58)
7311 
7312 #ifdef __cplusplus
7313 extern "C" {
7314 #endif /* C++ */
7315 __must_check uint32_t dot11f_unpack_ie_qos_map_set(
7316 	tpAniSirGlobal,
7317 	uint8_t *,
7318 	uint8_t,
7319 	tDot11fIEQosMapSet*,
7320 	bool);
7321 
7322 uint32_t dot11f_pack_ie_qos_map_set(
7323 	tpAniSirGlobal,
7324 	tDot11fIEQosMapSet *,
7325 	uint8_t *,
7326 	uint32_t,
7327 	uint32_t*);
7328 
7329 uint32_t dot11f_get_packed_ie_QosMapSet(
7330 	tpAniSirGlobal,
7331 	tDot11fIEQosMapSet *,
7332 	uint32_t*);
7333 
7334 #ifdef __cplusplus
7335 }; /* End extern "C". */
7336 #endif /* C++ */
7337 
7338 /* EID 40 (0x28) */
7339 typedef struct sDot11fIEQuiet {
7340 	uint8_t             present;
7341 	uint8_t             count;
7342 	uint8_t             period;
7343 	uint16_t            duration;
7344 	uint16_t            offset;
7345 } tDot11fIEQuiet;
7346 
7347 #define DOT11F_EID_QUIET (40)
7348 
7349 /* N.B. These #defines do *not* include the EID & length */
7350 #define DOT11F_IE_QUIET_MIN_LEN (6)
7351 
7352 #define DOT11F_IE_QUIET_MAX_LEN (6)
7353 
7354 #ifdef __cplusplus
7355 extern "C" {
7356 #endif /* C++ */
7357 __must_check uint32_t dot11f_unpack_ie_quiet(
7358 	tpAniSirGlobal,
7359 	uint8_t *,
7360 	uint8_t,
7361 	tDot11fIEQuiet*,
7362 	bool);
7363 
7364 uint32_t dot11f_pack_ie_quiet(
7365 	tpAniSirGlobal,
7366 	tDot11fIEQuiet *,
7367 	uint8_t *,
7368 	uint32_t,
7369 	uint32_t*);
7370 
7371 uint32_t dot11f_get_packed_ie_Quiet(
7372 	tpAniSirGlobal,
7373 	tDot11fIEQuiet *,
7374 	uint32_t*);
7375 
7376 #ifdef __cplusplus
7377 }; /* End extern "C". */
7378 #endif /* C++ */
7379 
7380 /* EID 53 (0x35) */
7381 typedef struct sDot11fIERCPIIE {
7382 	uint8_t             present;
7383 	uint8_t             rcpi;
7384 } tDot11fIERCPIIE;
7385 
7386 #define DOT11F_EID_RCPIIE (53)
7387 
7388 /* N.B. These #defines do *not* include the EID & length */
7389 #define DOT11F_IE_RCPIIE_MIN_LEN (1)
7390 
7391 #define DOT11F_IE_RCPIIE_MAX_LEN (1)
7392 
7393 #ifdef __cplusplus
7394 extern "C" {
7395 #endif /* C++ */
7396 __must_check uint32_t dot11f_unpack_ie_rcpiie(
7397 	tpAniSirGlobal,
7398 	uint8_t *,
7399 	uint8_t,
7400 	tDot11fIERCPIIE*,
7401 	bool);
7402 
7403 uint32_t dot11f_pack_ie_rcpiie(
7404 	tpAniSirGlobal,
7405 	tDot11fIERCPIIE *,
7406 	uint8_t *,
7407 	uint32_t,
7408 	uint32_t*);
7409 
7410 uint32_t dot11f_get_packed_ie_RCPIIE(
7411 	tpAniSirGlobal,
7412 	tDot11fIERCPIIE *,
7413 	uint32_t*);
7414 
7415 #ifdef __cplusplus
7416 }; /* End extern "C". */
7417 #endif /* C++ */
7418 
7419 /* EID 57 (0x39) */
7420 typedef struct sDot11fIERICDataDesc {
7421 	uint8_t                       present;
7422 	tDot11fIERICData              RICData;
7423 	tDot11fIERICDescriptor        RICDescriptor;
7424 	tDot11fIETSPEC                TSPEC;
7425 	uint16_t                      num_TCLAS;
7426 	tDot11fIETCLAS                TCLAS[2];
7427 	tDot11fIETCLASSPROC           TCLASSPROC;
7428 	tDot11fIETSDelay              TSDelay;
7429 	tDot11fIESchedule             Schedule;
7430 	tDot11fIEWMMTSPEC             WMMTSPEC;
7431 	uint16_t                      num_WMMTCLAS;
7432 	tDot11fIEWMMTCLAS             WMMTCLAS[2];
7433 	tDot11fIEWMMTCLASPROC         WMMTCLASPROC;
7434 	tDot11fIEWMMTSDelay           WMMTSDelay;
7435 	tDot11fIEWMMSchedule          WMMSchedule;
7436 } tDot11fIERICDataDesc;
7437 
7438 #define DOT11F_EID_RICDATADESC (57)
7439 
7440 /* N.B. These #defines do *not* include the EID & length */
7441 #define DOT11F_IE_RICDATADESC_MIN_LEN (0)
7442 
7443 #define DOT11F_IE_RICDATADESC_MAX_LEN (548)
7444 
7445 #ifdef __cplusplus
7446 extern "C" {
7447 #endif /* C++ */
7448 __must_check uint32_t dot11f_unpack_ie_ric_data_desc(
7449 	tpAniSirGlobal,
7450 	uint8_t *,
7451 	uint8_t,
7452 	tDot11fIERICDataDesc*,
7453 	bool);
7454 
7455 uint32_t dot11f_pack_ie_ric_data_desc(
7456 	tpAniSirGlobal,
7457 	tDot11fIERICDataDesc *,
7458 	uint8_t *,
7459 	uint32_t,
7460 	uint32_t*);
7461 
7462 uint32_t dot11f_get_packed_ieric_data_desc(
7463 	tpAniSirGlobal,
7464 	tDot11fIERICDataDesc *,
7465 	uint32_t*);
7466 
7467 #ifdef __cplusplus
7468 }; /* End extern "C". */
7469 #endif /* C++ */
7470 
7471 /* EID 48 (0x30) */
7472 typedef struct sDot11fIERSN {
7473 	uint8_t             present;
7474 	uint16_t            version /* Must be 1! */;
7475 	uint8_t             gp_cipher_suite_present;
7476 	uint8_t             gp_cipher_suite[4];
7477 	uint16_t            pwise_cipher_suite_count;
7478 	uint8_t             pwise_cipher_suites[6][4];
7479 	uint16_t            akm_suite_cnt;
7480 	uint8_t             akm_suite[6][4];
7481 	uint8_t             RSN_Cap_present;
7482 	uint8_t             RSN_Cap[2];
7483 	uint16_t            pmkid_count;
7484 	uint8_t             pmkid[4][16];
7485 	uint8_t             gp_mgmt_cipher_suite_present;
7486 	uint8_t             gp_mgmt_cipher_suite[4];
7487 } tDot11fIERSN;
7488 
7489 #define DOT11F_EID_RSN (48)
7490 
7491 /* N.B. These #defines do *not* include the EID & length */
7492 #define DOT11F_IE_RSN_MIN_LEN (2)
7493 
7494 #define DOT11F_IE_RSN_MAX_LEN (130)
7495 
7496 #ifdef __cplusplus
7497 extern "C" {
7498 #endif /* C++ */
7499 __must_check uint32_t dot11f_unpack_ie_rsn(
7500 	tpAniSirGlobal,
7501 	uint8_t *,
7502 	uint8_t,
7503 	tDot11fIERSN*,
7504 	bool);
7505 
7506 uint32_t dot11f_pack_ie_rsn(
7507 	tpAniSirGlobal,
7508 	tDot11fIERSN *,
7509 	uint8_t *,
7510 	uint32_t,
7511 	uint32_t*);
7512 
7513 uint32_t dot11f_get_packed_iersn(
7514 	tpAniSirGlobal,
7515 	tDot11fIERSN *,
7516 	uint32_t*);
7517 
7518 #ifdef __cplusplus
7519 }; /* End extern "C". */
7520 #endif /* C++ */
7521 
7522 /* EID 65 (0x41) */
7523 typedef struct sDot11fIERSNIIE {
7524 	uint8_t             present;
7525 	uint8_t             rsni;
7526 } tDot11fIERSNIIE;
7527 
7528 #define DOT11F_EID_RSNIIE (65)
7529 
7530 /* N.B. These #defines do *not* include the EID & length */
7531 #define DOT11F_IE_RSNIIE_MIN_LEN (1)
7532 
7533 #define DOT11F_IE_RSNIIE_MAX_LEN (1)
7534 
7535 #ifdef __cplusplus
7536 extern "C" {
7537 #endif /* C++ */
7538 __must_check uint32_t dot11f_unpack_ie_rsniie(
7539 	tpAniSirGlobal,
7540 	uint8_t *,
7541 	uint8_t,
7542 	tDot11fIERSNIIE*,
7543 	bool);
7544 
7545 uint32_t dot11f_pack_ie_rsniie(
7546 	tpAniSirGlobal,
7547 	tDot11fIERSNIIE *,
7548 	uint8_t *,
7549 	uint32_t,
7550 	uint32_t*);
7551 
7552 uint32_t dot11f_get_packed_iersnIIE(
7553 	tpAniSirGlobal,
7554 	tDot11fIERSNIIE *,
7555 	uint32_t*);
7556 
7557 #ifdef __cplusplus
7558 }; /* End extern "C". */
7559 #endif /* C++ */
7560 
7561 /* EID 48 (0x30) */
7562 typedef struct sDot11fIERSNOpaque {
7563 	uint8_t             present;
7564 	uint8_t             num_data;
7565 	uint8_t             data[253];
7566 } tDot11fIERSNOpaque;
7567 
7568 #define DOT11F_EID_RSNOPAQUE (48)
7569 
7570 /* N.B. These #defines do *not* include the EID & length */
7571 #define DOT11F_IE_RSNOPAQUE_MIN_LEN (0)
7572 
7573 #define DOT11F_IE_RSNOPAQUE_MAX_LEN (253)
7574 
7575 #ifdef __cplusplus
7576 extern "C" {
7577 #endif /* C++ */
7578 __must_check uint32_t dot11f_unpack_ie_rsn_opaque(
7579 	tpAniSirGlobal,
7580 	uint8_t *,
7581 	uint8_t,
7582 	tDot11fIERSNOpaque*,
7583 	bool);
7584 
7585 uint32_t dot11f_pack_ie_rsn_opaque(
7586 	tpAniSirGlobal,
7587 	tDot11fIERSNOpaque *,
7588 	uint8_t *,
7589 	uint32_t,
7590 	uint32_t*);
7591 
7592 uint32_t dot11f_get_packed_iersnOpaque(
7593 	tpAniSirGlobal,
7594 	tDot11fIERSNOpaque *,
7595 	uint32_t*);
7596 
7597 #ifdef __cplusplus
7598 }; /* End extern "C". */
7599 #endif /* C++ */
7600 
7601 /* EID 36 (0x24) */
7602 typedef struct sDot11fIESuppChannels {
7603 	uint8_t             present;
7604 	uint8_t             num_bands;
7605 	uint8_t             bands[48][2];
7606 } tDot11fIESuppChannels;
7607 
7608 #define DOT11F_EID_SUPPCHANNELS (36)
7609 
7610 /* N.B. These #defines do *not* include the EID & length */
7611 #define DOT11F_IE_SUPPCHANNELS_MIN_LEN (0)
7612 
7613 #define DOT11F_IE_SUPPCHANNELS_MAX_LEN (96)
7614 
7615 #ifdef __cplusplus
7616 extern "C" {
7617 #endif /* C++ */
7618 __must_check uint32_t dot11f_unpack_ie_supp_channels(
7619 	tpAniSirGlobal,
7620 	uint8_t *,
7621 	uint8_t,
7622 	tDot11fIESuppChannels*,
7623 	bool);
7624 
7625 uint32_t dot11f_pack_ie_supp_channels(
7626 	tpAniSirGlobal,
7627 	tDot11fIESuppChannels *,
7628 	uint8_t *,
7629 	uint32_t,
7630 	uint32_t*);
7631 
7632 uint32_t dot11f_get_packed_ie_SuppChannels(
7633 	tpAniSirGlobal,
7634 	tDot11fIESuppChannels *,
7635 	uint32_t*);
7636 
7637 #ifdef __cplusplus
7638 }; /* End extern "C". */
7639 #endif /* C++ */
7640 
7641 /* EID 59 (0x3b) */
7642 typedef struct sDot11fIESuppOperatingClasses {
7643 	uint8_t             present;
7644 	uint8_t             num_classes;
7645 	uint8_t             classes[32];
7646 } tDot11fIESuppOperatingClasses;
7647 
7648 #define DOT11F_EID_SUPPOPERATINGCLASSES (59)
7649 
7650 /* N.B. These #defines do *not* include the EID & length */
7651 #define DOT11F_IE_SUPPOPERATINGCLASSES_MIN_LEN (1)
7652 
7653 #define DOT11F_IE_SUPPOPERATINGCLASSES_MAX_LEN (32)
7654 
7655 #ifdef __cplusplus
7656 extern "C" {
7657 #endif /* C++ */
7658 __must_check uint32_t dot11f_unpack_ie_supp_operating_classes(
7659 	tpAniSirGlobal,
7660 	uint8_t *,
7661 	uint8_t,
7662 	tDot11fIESuppOperatingClasses*,
7663 	bool);
7664 
7665 uint32_t dot11f_pack_ie_supp_operating_classes(
7666 	tpAniSirGlobal,
7667 	tDot11fIESuppOperatingClasses *,
7668 	uint8_t *,
7669 	uint32_t,
7670 	uint32_t*);
7671 
7672 uint32_t dot11f_get_packed_ie_SuppOperatingClasses(
7673 	tpAniSirGlobal,
7674 	tDot11fIESuppOperatingClasses *,
7675 	uint32_t*);
7676 
7677 #ifdef __cplusplus
7678 }; /* End extern "C". */
7679 #endif /* C++ */
7680 
7681 /* EID 1 (0x01) */
7682 typedef struct sDot11fIESuppRates {
7683 	uint8_t             present;
7684 	uint8_t             num_rates;
7685 	uint8_t             rates[12];
7686 } tDot11fIESuppRates;
7687 
7688 #define DOT11F_EID_SUPPRATES (1)
7689 
7690 /* N.B. These #defines do *not* include the EID & length */
7691 #define DOT11F_IE_SUPPRATES_MIN_LEN (0)
7692 
7693 #define DOT11F_IE_SUPPRATES_MAX_LEN (12)
7694 
7695 #define DOT11F_IS_BG_RATE(_x)  (((_x) == 02) || \
7696 				((_x) == 04) || \
7697 				((_x) == 11) || \
7698 				((_x) == 22) || \
7699 				((_x) == 12) || \
7700 				((_x) == 18) || \
7701 				((_x) == 24) || \
7702 				((_x) == 36) || \
7703 				((_x) == 48) || \
7704 				((_x) == 72) || \
7705 				((_x) == 96) || \
7706 				((_x) == 108))
7707 
7708 #ifdef __cplusplus
7709 extern "C" {
7710 #endif /* C++ */
7711 __must_check uint32_t dot11f_unpack_ie_supp_rates(
7712 	tpAniSirGlobal,
7713 	uint8_t *,
7714 	uint8_t,
7715 	tDot11fIESuppRates*,
7716 	bool);
7717 
7718 uint32_t dot11f_pack_ie_supp_rates(
7719 	tpAniSirGlobal,
7720 	tDot11fIESuppRates *,
7721 	uint8_t *,
7722 	uint32_t,
7723 	uint32_t*);
7724 
7725 uint32_t dot11f_get_packed_ie_SuppRates(
7726 	tpAniSirGlobal,
7727 	tDot11fIESuppRates *,
7728 	uint32_t*);
7729 
7730 #ifdef __cplusplus
7731 }; /* End extern "C". */
7732 #endif /* C++ */
7733 
7734 /* EID 5 (0x05) */
7735 typedef struct sDot11fIETIM {
7736 	uint8_t             present;
7737 	uint8_t             dtim_count;
7738 	uint8_t             dtim_period;
7739 	uint8_t             bmpctl;
7740 	uint8_t             num_vbmp;
7741 	uint8_t             vbmp[251];
7742 } tDot11fIETIM;
7743 
7744 #define DOT11F_EID_TIM (5)
7745 
7746 /* N.B. These #defines do *not* include the EID & length */
7747 #define DOT11F_IE_TIM_MIN_LEN (4)
7748 
7749 #define DOT11F_IE_TIM_MAX_LEN (254)
7750 
7751 #ifdef __cplusplus
7752 extern "C" {
7753 #endif /* C++ */
7754 __must_check uint32_t dot11f_unpack_ie_tim(
7755 	tpAniSirGlobal,
7756 	uint8_t *,
7757 	uint8_t,
7758 	tDot11fIETIM*,
7759 	bool);
7760 
7761 uint32_t dot11f_pack_ie_tim(
7762 	tpAniSirGlobal,
7763 	tDot11fIETIM *,
7764 	uint8_t *,
7765 	uint32_t,
7766 	uint32_t*);
7767 
7768 uint32_t dot11f_get_packed_ie_TIM(
7769 	tpAniSirGlobal,
7770 	tDot11fIETIM *,
7771 	uint32_t*);
7772 
7773 #ifdef __cplusplus
7774 }; /* End extern "C". */
7775 #endif /* C++ */
7776 
7777 /* EID 35 (0x23) */
7778 typedef struct sDot11fIETPCReport {
7779 	uint8_t             present;
7780 	uint8_t             tx_power;
7781 	uint8_t             link_margin;
7782 } tDot11fIETPCReport;
7783 
7784 #define DOT11F_EID_TPCREPORT (35)
7785 
7786 /* N.B. These #defines do *not* include the EID & length */
7787 #define DOT11F_IE_TPCREPORT_MIN_LEN (2)
7788 
7789 #define DOT11F_IE_TPCREPORT_MAX_LEN (2)
7790 
7791 #ifdef __cplusplus
7792 extern "C" {
7793 #endif /* C++ */
7794 __must_check uint32_t dot11f_unpack_ie_tpc_report(
7795 	tpAniSirGlobal,
7796 	uint8_t *,
7797 	uint8_t,
7798 	tDot11fIETPCReport*,
7799 	bool);
7800 
7801 uint32_t dot11f_pack_ie_tpc_report(
7802 	tpAniSirGlobal,
7803 	tDot11fIETPCReport *,
7804 	uint8_t *,
7805 	uint32_t,
7806 	uint32_t*);
7807 
7808 uint32_t dot11f_get_packed_ie_TPCReport(
7809 	tpAniSirGlobal,
7810 	tDot11fIETPCReport *,
7811 	uint32_t*);
7812 
7813 #ifdef __cplusplus
7814 }; /* End extern "C". */
7815 #endif /* C++ */
7816 
7817 /* EID 34 (0x22) */
7818 typedef struct sDot11fIETPCRequest {
7819 	uint8_t             present;
7820 } tDot11fIETPCRequest;
7821 
7822 #define DOT11F_EID_TPCREQUEST (34)
7823 
7824 /* N.B. These #defines do *not* include the EID & length */
7825 #define DOT11F_IE_TPCREQUEST_MIN_LEN (0)
7826 
7827 #define DOT11F_IE_TPCREQUEST_MAX_LEN (0)
7828 
7829 #ifdef __cplusplus
7830 extern "C" {
7831 #endif /* C++ */
7832 __must_check uint32_t dot11f_unpack_ie_tpc_request(
7833 	tpAniSirGlobal,
7834 	uint8_t *,
7835 	uint8_t,
7836 	tDot11fIETPCRequest*,
7837 	bool);
7838 
7839 uint32_t dot11f_pack_ie_tpc_request(
7840 	tpAniSirGlobal,
7841 	tDot11fIETPCRequest *,
7842 	uint8_t *,
7843 	uint32_t,
7844 	uint32_t*);
7845 
7846 uint32_t dot11f_get_packed_ie_TPCRequest(
7847 	tpAniSirGlobal,
7848 	tDot11fIETPCRequest *,
7849 	uint32_t*);
7850 
7851 #ifdef __cplusplus
7852 }; /* End extern "C". */
7853 #endif /* C++ */
7854 
7855 /* EID 69 (0x45) */
7856 typedef struct sDot11fIETimeAdvertisement {
7857 	uint8_t             present;
7858 	uint8_t             timing_capabilities;
7859 	uint8_t             time_value[10];
7860 	uint8_t             time_error[5];
7861 } tDot11fIETimeAdvertisement;
7862 
7863 #define DOT11F_EID_TIMEADVERTISEMENT (69)
7864 
7865 /* N.B. These #defines do *not* include the EID & length */
7866 #define DOT11F_IE_TIMEADVERTISEMENT_MIN_LEN (16)
7867 
7868 #define DOT11F_IE_TIMEADVERTISEMENT_MAX_LEN (16)
7869 
7870 #ifdef __cplusplus
7871 extern "C" {
7872 #endif /* C++ */
7873 __must_check uint32_t dot11f_unpack_ie_time_advertisement(
7874 	tpAniSirGlobal,
7875 	uint8_t *,
7876 	uint8_t,
7877 	tDot11fIETimeAdvertisement*,
7878 	bool);
7879 
7880 uint32_t dot11f_pack_ie_time_advertisement(
7881 	tpAniSirGlobal,
7882 	tDot11fIETimeAdvertisement *,
7883 	uint8_t *,
7884 	uint32_t,
7885 	uint32_t*);
7886 
7887 uint32_t dot11f_get_packed_ie_time_advertisement(
7888 	tpAniSirGlobal,
7889 	tDot11fIETimeAdvertisement *,
7890 	uint32_t*);
7891 
7892 #ifdef __cplusplus
7893 }; /* End extern "C". */
7894 #endif /* C++ */
7895 
7896 /* EID 56 (0x38) */
7897 typedef struct sDot11fIETimeoutInterval {
7898 	uint8_t             present;
7899 	uint8_t             timeoutType;
7900 	uint32_t            timeoutValue;
7901 } tDot11fIETimeoutInterval;
7902 
7903 #define DOT11F_EID_TIMEOUTINTERVAL (56)
7904 
7905 /* N.B. These #defines do *not* include the EID & length */
7906 #define DOT11F_IE_TIMEOUTINTERVAL_MIN_LEN (5)
7907 
7908 #define DOT11F_IE_TIMEOUTINTERVAL_MAX_LEN (5)
7909 
7910 #ifdef __cplusplus
7911 extern "C" {
7912 #endif /* C++ */
7913 __must_check uint32_t dot11f_unpack_ie_timeout_interval(
7914 	tpAniSirGlobal,
7915 	uint8_t *,
7916 	uint8_t,
7917 	tDot11fIETimeoutInterval*,
7918 	bool);
7919 
7920 uint32_t dot11f_pack_ie_timeout_interval(
7921 	tpAniSirGlobal,
7922 	tDot11fIETimeoutInterval *,
7923 	uint8_t *,
7924 	uint32_t,
7925 	uint32_t*);
7926 
7927 uint32_t dot11f_get_packed_ie_TimeoutInterval(
7928 	tpAniSirGlobal,
7929 	tDot11fIETimeoutInterval *,
7930 	uint32_t*);
7931 
7932 #ifdef __cplusplus
7933 }; /* End extern "C". */
7934 #endif /* C++ */
7935 
7936 /* EID 193 (0xc1) */
7937 typedef struct sDot11fIEVHTExtBssLoad {
7938 	uint8_t             present;
7939 	uint8_t             muMIMOCapStaCount;
7940 	uint8_t             ssUnderUtil;
7941 	uint8_t             FortyMHzUtil;
7942 	uint8_t             EightyMHzUtil;
7943 	uint8_t             OneSixtyMHzUtil;
7944 } tDot11fIEVHTExtBssLoad;
7945 
7946 #define DOT11F_EID_VHTEXTBSSLOAD (193)
7947 
7948 /* N.B. These #defines do *not* include the EID & length */
7949 #define DOT11F_IE_VHTEXTBSSLOAD_MIN_LEN (5)
7950 
7951 #define DOT11F_IE_VHTEXTBSSLOAD_MAX_LEN (5)
7952 
7953 #ifdef __cplusplus
7954 extern "C" {
7955 #endif /* C++ */
7956 __must_check uint32_t dot11f_unpack_ie_vht_ext_bss_load(
7957 	tpAniSirGlobal,
7958 	uint8_t *,
7959 	uint8_t,
7960 	tDot11fIEVHTExtBssLoad*,
7961 	bool);
7962 
7963 uint32_t dot11f_pack_ie_vht_ext_bss_load(
7964 	tpAniSirGlobal,
7965 	tDot11fIEVHTExtBssLoad *,
7966 	uint8_t *,
7967 	uint32_t,
7968 	uint32_t*);
7969 
7970 uint32_t dot11f_get_packed_ie_VHTExtBssLoad(
7971 	tpAniSirGlobal,
7972 	tDot11fIEVHTExtBssLoad *,
7973 	uint32_t*);
7974 
7975 #ifdef __cplusplus
7976 }; /* End extern "C". */
7977 #endif /* C++ */
7978 
7979 /* EID 221 (0xdd) {OUI 0x00, 0x10, 0x18} */
7980 typedef struct sDot11fIEVendor1IE {
7981 	uint8_t             present;
7982 } tDot11fIEVendor1IE;
7983 
7984 #define DOT11F_EID_VENDOR1IE (221)
7985 
7986 /* N.B. These #defines do *not* include the EID & length */
7987 #define DOT11F_IE_VENDOR1IE_MIN_LEN (3)
7988 
7989 #define DOT11F_IE_VENDOR1IE_MAX_LEN (3)
7990 
7991 #ifdef __cplusplus
7992 extern "C" {
7993 #endif /* C++ */
7994 __must_check uint32_t dot11f_unpack_ie_vendor1_ie(
7995 	tpAniSirGlobal,
7996 	uint8_t *,
7997 	uint8_t,
7998 	tDot11fIEVendor1IE*,
7999 	bool);
8000 
8001 uint32_t dot11f_pack_ie_vendor1_ie(
8002 	tpAniSirGlobal,
8003 	tDot11fIEVendor1IE *,
8004 	uint8_t *,
8005 	uint32_t,
8006 	uint32_t*);
8007 
8008 uint32_t dot11f_get_packed_ie_Vendor1IE(
8009 	tpAniSirGlobal,
8010 	tDot11fIEVendor1IE *,
8011 	uint32_t*);
8012 
8013 #ifdef __cplusplus
8014 }; /* End extern "C". */
8015 #endif /* C++ */
8016 
8017 /* EID 221 (0xdd) {OUI 0x00, 0x16, 0x32} */
8018 typedef struct sDot11fIEVendor3IE {
8019 	uint8_t             present;
8020 } tDot11fIEVendor3IE;
8021 
8022 #define DOT11F_EID_VENDOR3IE (221)
8023 
8024 /* N.B. These #defines do *not* include the EID & length */
8025 #define DOT11F_IE_VENDOR3IE_MIN_LEN (3)
8026 
8027 #define DOT11F_IE_VENDOR3IE_MAX_LEN (3)
8028 
8029 #ifdef __cplusplus
8030 extern "C" {
8031 #endif /* C++ */
8032 __must_check uint32_t dot11f_unpack_ie_vendor3_ie(
8033 	tpAniSirGlobal,
8034 	uint8_t *,
8035 	uint8_t,
8036 	tDot11fIEVendor3IE*,
8037 	bool);
8038 
8039 uint32_t dot11f_pack_ie_vendor3_ie(
8040 	tpAniSirGlobal,
8041 	tDot11fIEVendor3IE *,
8042 	uint8_t *,
8043 	uint32_t,
8044 	uint32_t*);
8045 
8046 uint32_t dot11f_get_packed_ie_Vendor3IE(
8047 	tpAniSirGlobal,
8048 	tDot11fIEVendor3IE *,
8049 	uint32_t*);
8050 
8051 #ifdef __cplusplus
8052 }; /* End extern "C". */
8053 #endif /* C++ */
8054 
8055 /* EID 68 (0x44) */
8056 typedef struct sDot11fIEWAPI {
8057 	uint8_t             present;
8058 	uint16_t            version /* Must be 1! */;
8059 	uint16_t            akm_suite_count;
8060 	uint8_t             akm_suites[4][4];
8061 	uint16_t            unicast_cipher_suite_count;
8062 	uint8_t             unicast_cipher_suites[4][4];
8063 	uint8_t             multicast_cipher_suite[4];
8064 	uint16_t              preauth:1;
8065 	uint16_t             reserved:15;
8066 	uint16_t            bkid_count;
8067 	uint8_t             bkid[4][16];
8068 } tDot11fIEWAPI;
8069 
8070 #define DOT11F_EID_WAPI (68)
8071 
8072 /* N.B. These #defines do *not* include the EID & length */
8073 #define DOT11F_IE_WAPI_MIN_LEN (12)
8074 
8075 #define DOT11F_IE_WAPI_MAX_LEN (110)
8076 
8077 #ifdef __cplusplus
8078 extern "C" {
8079 #endif /* C++ */
8080 __must_check uint32_t dot11f_unpack_ie_wapi(
8081 	tpAniSirGlobal,
8082 	uint8_t *,
8083 	uint8_t,
8084 	tDot11fIEWAPI*,
8085 	bool);
8086 
8087 uint32_t dot11f_pack_ie_wapi(
8088 	tpAniSirGlobal,
8089 	tDot11fIEWAPI *,
8090 	uint8_t *,
8091 	uint32_t,
8092 	uint32_t*);
8093 
8094 uint32_t dot11f_get_packed_iewapi(
8095 	tpAniSirGlobal,
8096 	tDot11fIEWAPI *,
8097 	uint32_t*);
8098 
8099 #ifdef __cplusplus
8100 }; /* End extern "C". */
8101 #endif /* C++ */
8102 
8103 /* EID 68 (0x44) */
8104 typedef struct sDot11fIEWAPIOpaque {
8105 	uint8_t             present;
8106 	uint8_t             num_data;
8107 	uint8_t             data[253];
8108 } tDot11fIEWAPIOpaque;
8109 
8110 #define DOT11F_EID_WAPIOPAQUE (68)
8111 
8112 /* N.B. These #defines do *not* include the EID & length */
8113 #define DOT11F_IE_WAPIOPAQUE_MIN_LEN (6)
8114 
8115 #define DOT11F_IE_WAPIOPAQUE_MAX_LEN (253)
8116 
8117 #ifdef __cplusplus
8118 extern "C" {
8119 #endif /* C++ */
8120 __must_check uint32_t dot11f_unpack_ie_wapi_opaque(
8121 	tpAniSirGlobal,
8122 	uint8_t *,
8123 	uint8_t,
8124 	tDot11fIEWAPIOpaque*,
8125 	bool);
8126 
8127 uint32_t dot11f_pack_ie_wapi_opaque(
8128 	tpAniSirGlobal,
8129 	tDot11fIEWAPIOpaque *,
8130 	uint8_t *,
8131 	uint32_t,
8132 	uint32_t*);
8133 
8134 uint32_t dot11f_get_packed_iewapiOpaque(
8135 	tpAniSirGlobal,
8136 	tDot11fIEWAPIOpaque *,
8137 	uint32_t*);
8138 
8139 #ifdef __cplusplus
8140 }; /* End extern "C". */
8141 #endif /* C++ */
8142 
8143 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x08, 0x00} */
8144 typedef struct sDot11fIEWFATPC {
8145 	uint8_t             present;
8146 	uint8_t             txPower;
8147 	uint8_t             linkMargin;
8148 } tDot11fIEWFATPC;
8149 
8150 #define DOT11F_EID_WFATPC (221)
8151 
8152 /* N.B. These #defines do *not* include the EID & length */
8153 #define DOT11F_IE_WFATPC_MIN_LEN (7)
8154 
8155 #define DOT11F_IE_WFATPC_MAX_LEN (7)
8156 
8157 #ifdef __cplusplus
8158 extern "C" {
8159 #endif /* C++ */
8160 __must_check uint32_t dot11f_unpack_ie_wfatpc(
8161 	tpAniSirGlobal,
8162 	uint8_t *,
8163 	uint8_t,
8164 	tDot11fIEWFATPC*,
8165 	bool);
8166 
8167 uint32_t dot11f_pack_ie_wfatpc(
8168 	tpAniSirGlobal,
8169 	tDot11fIEWFATPC *,
8170 	uint8_t *,
8171 	uint32_t,
8172 	uint32_t*);
8173 
8174 uint32_t dot11f_get_packed_ie_WFATPC(
8175 	tpAniSirGlobal,
8176 	tDot11fIEWFATPC *,
8177 	uint32_t*);
8178 
8179 #ifdef __cplusplus
8180 }; /* End extern "C". */
8181 #endif /* C++ */
8182 
8183 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x0a} */
8184 typedef struct sDot11fIEWFDIEOpaque {
8185 	uint8_t             present;
8186 	uint8_t             num_data;
8187 	uint8_t             data[249];
8188 } tDot11fIEWFDIEOpaque;
8189 
8190 #define DOT11F_EID_WFDIEOPAQUE (221)
8191 
8192 /* N.B. These #defines do *not* include the EID & length */
8193 #define DOT11F_IE_WFDIEOPAQUE_MIN_LEN (6)
8194 
8195 #define DOT11F_IE_WFDIEOPAQUE_MAX_LEN (253)
8196 
8197 #ifdef __cplusplus
8198 extern "C" {
8199 #endif /* C++ */
8200 __must_check uint32_t dot11f_unpack_ie_wfdie_opaque(
8201 	tpAniSirGlobal,
8202 	uint8_t *,
8203 	uint8_t,
8204 	tDot11fIEWFDIEOpaque*,
8205 	bool);
8206 
8207 uint32_t dot11f_pack_ie_wfdie_opaque(
8208 	tpAniSirGlobal,
8209 	tDot11fIEWFDIEOpaque *,
8210 	uint8_t *,
8211 	uint32_t,
8212 	uint32_t*);
8213 
8214 uint32_t dot11f_get_packed_ie_WFDIEOpaque(
8215 	tpAniSirGlobal,
8216 	tDot11fIEWFDIEOpaque *,
8217 	uint32_t*);
8218 
8219 #ifdef __cplusplus
8220 }; /* End extern "C". */
8221 #endif /* C++ */
8222 
8223 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05} */
8224 typedef struct sDot11fIEWMMCaps {
8225 	uint8_t             present;
8226 	uint8_t             version /* Must be 1! */;
8227 	uint8_t             reserved:4;
8228 	uint8_t                 qack:1;
8229 	uint8_t        queue_request:1;
8230 	uint8_t         txop_request:1;
8231 	uint8_t             more_ack:1;
8232 } tDot11fIEWMMCaps;
8233 
8234 #define DOT11F_EID_WMMCAPS (221)
8235 
8236 /* N.B. These #defines do *not* include the EID & length */
8237 #define DOT11F_IE_WMMCAPS_MIN_LEN (7)
8238 
8239 #define DOT11F_IE_WMMCAPS_MAX_LEN (7)
8240 
8241 #ifdef __cplusplus
8242 extern "C" {
8243 #endif /* C++ */
8244 __must_check uint32_t dot11f_unpack_ie_wmm_caps(
8245 	tpAniSirGlobal,
8246 	uint8_t *,
8247 	uint8_t,
8248 	tDot11fIEWMMCaps*,
8249 	bool);
8250 
8251 uint32_t dot11f_pack_ie_wmm_caps(
8252 	tpAniSirGlobal,
8253 	tDot11fIEWMMCaps *,
8254 	uint8_t *,
8255 	uint32_t,
8256 	uint32_t*);
8257 
8258 uint32_t dot11f_get_packed_ie_WMMCaps(
8259 	tpAniSirGlobal,
8260 	tDot11fIEWMMCaps *,
8261 	uint32_t*);
8262 
8263 #ifdef __cplusplus
8264 }; /* End extern "C". */
8265 #endif /* C++ */
8266 
8267 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
8268 typedef struct sDot11fIEWMMInfoAp {
8269 	uint8_t             present;
8270 	uint8_t             version;
8271 	uint8_t      param_set_count:4;
8272 	uint8_t             reserved:3;
8273 	uint8_t                uapsd:1;
8274 } tDot11fIEWMMInfoAp;
8275 
8276 #define DOT11F_EID_WMMINFOAP (221)
8277 
8278 /* N.B. These #defines do *not* include the EID & length */
8279 #define DOT11F_IE_WMMINFOAP_MIN_LEN (7)
8280 
8281 #define DOT11F_IE_WMMINFOAP_MAX_LEN (7)
8282 
8283 #ifdef __cplusplus
8284 extern "C" {
8285 #endif /* C++ */
8286 __must_check uint32_t dot11f_unpack_ie_wmm_info_ap(
8287 	tpAniSirGlobal,
8288 	uint8_t *,
8289 	uint8_t,
8290 	tDot11fIEWMMInfoAp*,
8291 	bool);
8292 
8293 uint32_t dot11f_pack_ie_wmm_info_ap(
8294 	tpAniSirGlobal,
8295 	tDot11fIEWMMInfoAp *,
8296 	uint8_t *,
8297 	uint32_t,
8298 	uint32_t*);
8299 
8300 uint32_t dot11f_get_packed_ie_WMMInfoAp(
8301 	tpAniSirGlobal,
8302 	tDot11fIEWMMInfoAp *,
8303 	uint32_t*);
8304 
8305 #ifdef __cplusplus
8306 }; /* End extern "C". */
8307 #endif /* C++ */
8308 
8309 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
8310 typedef struct sDot11fIEWMMInfoStation {
8311 	uint8_t             present;
8312 	uint8_t             version;
8313 	uint8_t           acvo_uapsd:1;
8314 	uint8_t           acvi_uapsd:1;
8315 	uint8_t           acbk_uapsd:1;
8316 	uint8_t           acbe_uapsd:1;
8317 	uint8_t            reserved1:1;
8318 	uint8_t        max_sp_length:2;
8319 	uint8_t            reserved2:1;
8320 } tDot11fIEWMMInfoStation;
8321 
8322 #define DOT11F_EID_WMMINFOSTATION (221)
8323 
8324 /* N.B. These #defines do *not* include the EID & length */
8325 #define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7)
8326 
8327 #define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7)
8328 
8329 #ifdef __cplusplus
8330 extern "C" {
8331 #endif /* C++ */
8332 __must_check uint32_t dot11f_unpack_ie_wmm_info_station(
8333 	tpAniSirGlobal,
8334 	uint8_t *,
8335 	uint8_t,
8336 	tDot11fIEWMMInfoStation*,
8337 	bool);
8338 
8339 uint32_t dot11f_pack_ie_wmm_info_station(
8340 	tpAniSirGlobal,
8341 	tDot11fIEWMMInfoStation *,
8342 	uint8_t *,
8343 	uint32_t,
8344 	uint32_t*);
8345 
8346 uint32_t dot11f_get_packed_ie_WMMInfoStation(
8347 	tpAniSirGlobal,
8348 	tDot11fIEWMMInfoStation *,
8349 	uint32_t*);
8350 
8351 #ifdef __cplusplus
8352 }; /* End extern "C". */
8353 #endif /* C++ */
8354 
8355 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01} */
8356 typedef struct sDot11fIEWMMParams {
8357 	uint8_t             present;
8358 	uint8_t             version /* Must be 1! */;
8359 	uint8_t             qosInfo;
8360 	uint8_t             reserved2;
8361 	uint8_t           acbe_aifsn:4;
8362 	uint8_t             acbe_acm:1;
8363 	uint8_t             acbe_aci:2;
8364 	uint8_t              unused1:1;
8365 	uint8_t          acbe_acwmin:4;
8366 	uint8_t          acbe_acwmax:4;
8367 	uint16_t            acbe_txoplimit;
8368 	uint8_t           acbk_aifsn:4;
8369 	uint8_t             acbk_acm:1;
8370 	uint8_t             acbk_aci:2;
8371 	uint8_t              unused2:1;
8372 	uint8_t          acbk_acwmin:4;
8373 	uint8_t          acbk_acwmax:4;
8374 	uint16_t            acbk_txoplimit;
8375 	uint8_t           acvi_aifsn:4;
8376 	uint8_t             acvi_acm:1;
8377 	uint8_t             acvi_aci:2;
8378 	uint8_t              unused3:1;
8379 	uint8_t          acvi_acwmin:4;
8380 	uint8_t          acvi_acwmax:4;
8381 	uint16_t            acvi_txoplimit;
8382 	uint8_t           acvo_aifsn:4;
8383 	uint8_t             acvo_acm:1;
8384 	uint8_t             acvo_aci:2;
8385 	uint8_t              unused4:1;
8386 	uint8_t          acvo_acwmin:4;
8387 	uint8_t          acvo_acwmax:4;
8388 	uint16_t            acvo_txoplimit;
8389 } tDot11fIEWMMParams;
8390 
8391 #define DOT11F_EID_WMMPARAMS (221)
8392 
8393 /* N.B. These #defines do *not* include the EID & length */
8394 #define DOT11F_IE_WMMPARAMS_MIN_LEN (24)
8395 
8396 #define DOT11F_IE_WMMPARAMS_MAX_LEN (24)
8397 
8398 #ifdef __cplusplus
8399 extern "C" {
8400 #endif /* C++ */
8401 __must_check uint32_t dot11f_unpack_ie_wmm_params(
8402 	tpAniSirGlobal,
8403 	uint8_t *,
8404 	uint8_t,
8405 	tDot11fIEWMMParams*,
8406 	bool);
8407 
8408 uint32_t dot11f_pack_ie_wmm_params(
8409 	tpAniSirGlobal,
8410 	tDot11fIEWMMParams *,
8411 	uint8_t *,
8412 	uint32_t,
8413 	uint32_t*);
8414 
8415 uint32_t dot11f_get_packed_ie_WMMParams(
8416 	tpAniSirGlobal,
8417 	tDot11fIEWMMParams *,
8418 	uint32_t*);
8419 
8420 #ifdef __cplusplus
8421 }; /* End extern "C". */
8422 #endif /* C++ */
8423 
8424 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */
8425 typedef struct sDot11fIEWPA {
8426 	uint8_t             present;
8427 	uint16_t            version /* Must be 1! */;
8428 	/* field added to fix the bug in dot11fPackIEWPA */
8429 	uint8_t             multicast_cipher_present;
8430 	uint8_t             multicast_cipher[4];
8431 	uint16_t            unicast_cipher_count;
8432 	uint8_t             unicast_ciphers[4][4];
8433 	uint16_t            auth_suite_count;
8434 	uint8_t             auth_suites[4][4];
8435 	uint16_t            caps;
8436 } tDot11fIEWPA;
8437 
8438 #define DOT11F_EID_WPA (221)
8439 
8440 /* N.B. These #defines do *not* include the EID & length */
8441 #define DOT11F_IE_WPA_MIN_LEN (6)
8442 
8443 #define DOT11F_IE_WPA_MAX_LEN (48)
8444 
8445 #ifdef __cplusplus
8446 extern "C" {
8447 #endif /* C++ */
8448 __must_check uint32_t dot11f_unpack_ie_wpa(
8449 	tpAniSirGlobal,
8450 	uint8_t *,
8451 	uint8_t,
8452 	tDot11fIEWPA*,
8453 	bool);
8454 
8455 uint32_t dot11f_pack_ie_wpa(
8456 	tpAniSirGlobal,
8457 	tDot11fIEWPA *,
8458 	uint8_t *,
8459 	uint32_t,
8460 	uint32_t*);
8461 
8462 uint32_t dot11f_get_packed_iewpa(
8463 	tpAniSirGlobal,
8464 	tDot11fIEWPA *,
8465 	uint32_t*);
8466 
8467 #ifdef __cplusplus
8468 }; /* End extern "C". */
8469 #endif /* C++ */
8470 
8471 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */
8472 typedef struct sDot11fIEWPAOpaque {
8473 	uint8_t             present;
8474 	uint8_t             num_data;
8475 	uint8_t             data[249];
8476 } tDot11fIEWPAOpaque;
8477 
8478 #define DOT11F_EID_WPAOPAQUE (221)
8479 
8480 /* N.B. These #defines do *not* include the EID & length */
8481 #define DOT11F_IE_WPAOPAQUE_MIN_LEN (6)
8482 
8483 #define DOT11F_IE_WPAOPAQUE_MAX_LEN (253)
8484 
8485 #ifdef __cplusplus
8486 extern "C" {
8487 #endif /* C++ */
8488 __must_check uint32_t dot11f_unpack_ie_wpa_opaque(
8489 	tpAniSirGlobal,
8490 	uint8_t *,
8491 	uint8_t,
8492 	tDot11fIEWPAOpaque*,
8493 	bool);
8494 
8495 uint32_t dot11f_pack_ie_wpa_opaque(
8496 	tpAniSirGlobal,
8497 	tDot11fIEWPAOpaque *,
8498 	uint8_t *,
8499 	uint32_t,
8500 	uint32_t*);
8501 
8502 uint32_t dot11f_get_packed_iewpaOpaque(
8503 	tpAniSirGlobal,
8504 	tDot11fIEWPAOpaque *,
8505 	uint32_t*);
8506 
8507 #ifdef __cplusplus
8508 }; /* End extern "C". */
8509 #endif /* C++ */
8510 
8511 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8512 typedef struct sDot11fIEWSC {
8513 	uint8_t             present;
8514 	tDot11fTLVVersion   Version;
8515 	tDot11fTLVWPSState  WPSState;
8516 	tDot11fTLVAPSetupLocked APSetupLocked;
8517 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8518 	tDot11fTLVUUID_E    UUID_E;
8519 	tDot11fTLVUUID_R    UUID_R;
8520 	tDot11fTLVRFBands   RFBands;
8521 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8522 	tDot11fTLVConfigMethods ConfigMethods;
8523 	tDot11fTLVAssociationState AssociationState;
8524 	tDot11fTLVConfigurationError ConfigurationError;
8525 	tDot11fTLVManufacturer Manufacturer;
8526 	tDot11fTLVModelName ModelName;
8527 	tDot11fTLVModelNumber ModelNumber;
8528 	tDot11fTLVSerialNumber SerialNumber;
8529 	tDot11fTLVDeviceName DeviceName;
8530 	tDot11fTLVDevicePasswordID DevicePasswordID;
8531 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8532 	tDot11fTLVRequestType RequestType;
8533 	tDot11fTLVResponseType ResponseType;
8534 	tDot11fTLVVendorExtension VendorExtension;
8535 	tDot11fTLVRequestDeviceType RequestDeviceType;
8536 } tDot11fIEWSC;
8537 
8538 #define DOT11F_EID_WSC (221)
8539 
8540 /* N.B. These #defines do *not* include the EID & length */
8541 #define DOT11F_IE_WSC_MIN_LEN (4)
8542 
8543 #define DOT11F_IE_WSC_MAX_LEN (366)
8544 
8545 #ifdef __cplusplus
8546 extern "C" {
8547 #endif /* C++ */
8548 __must_check uint32_t dot11f_unpack_ie_wsc(
8549 	tpAniSirGlobal,
8550 	uint8_t *,
8551 	uint8_t,
8552 	tDot11fIEWSC*,
8553 	bool);
8554 
8555 uint32_t dot11f_pack_ie_wsc(
8556 	tpAniSirGlobal,
8557 	tDot11fIEWSC *,
8558 	uint8_t *,
8559 	uint32_t,
8560 	uint32_t*);
8561 
8562 uint32_t dot11f_get_packed_iewsc(
8563 	tpAniSirGlobal,
8564 	tDot11fIEWSC *,
8565 	uint32_t*);
8566 
8567 #ifdef __cplusplus
8568 }; /* End extern "C". */
8569 #endif /* C++ */
8570 
8571 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8572 typedef struct sDot11fIEWscAssocReq {
8573 	uint8_t             present;
8574 	tDot11fTLVVersion   Version;
8575 	tDot11fTLVRequestType RequestType;
8576 	tDot11fTLVVendorExtension VendorExtension;
8577 } tDot11fIEWscAssocReq;
8578 
8579 #define DOT11F_EID_WSCASSOCREQ (221)
8580 
8581 /* N.B. These #defines do *not* include the EID & length */
8582 #define DOT11F_IE_WSCASSOCREQ_MIN_LEN (4)
8583 
8584 #define DOT11F_IE_WSCASSOCREQ_MAX_LEN (35)
8585 
8586 #ifdef __cplusplus
8587 extern "C" {
8588 #endif /* C++ */
8589 __must_check uint32_t dot11f_unpack_ie_wsc_assoc_req(
8590 	tpAniSirGlobal,
8591 	uint8_t *,
8592 	uint8_t,
8593 	tDot11fIEWscAssocReq*,
8594 	bool);
8595 
8596 uint32_t dot11f_pack_ie_wsc_assoc_req(
8597 	tpAniSirGlobal,
8598 	tDot11fIEWscAssocReq *,
8599 	uint8_t *,
8600 	uint32_t,
8601 	uint32_t*);
8602 
8603 uint32_t dot11f_get_packed_ie_wsc_assoc_req(
8604 	tpAniSirGlobal,
8605 	tDot11fIEWscAssocReq *,
8606 	uint32_t*);
8607 
8608 #ifdef __cplusplus
8609 }; /* End extern "C". */
8610 #endif /* C++ */
8611 
8612 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8613 typedef struct sDot11fIEWscAssocRes {
8614 	uint8_t             present;
8615 	tDot11fTLVVersion   Version;
8616 	tDot11fTLVResponseType ResponseType;
8617 	tDot11fTLVVendorExtension VendorExtension;
8618 } tDot11fIEWscAssocRes;
8619 
8620 #define DOT11F_EID_WSCASSOCRES (221)
8621 
8622 /* N.B. These #defines do *not* include the EID & length */
8623 #define DOT11F_IE_WSCASSOCRES_MIN_LEN (4)
8624 
8625 #define DOT11F_IE_WSCASSOCRES_MAX_LEN (35)
8626 
8627 #ifdef __cplusplus
8628 extern "C" {
8629 #endif /* C++ */
8630 __must_check uint32_t dot11f_unpack_ie_wsc_assoc_res(
8631 	tpAniSirGlobal,
8632 	uint8_t *,
8633 	uint8_t,
8634 	tDot11fIEWscAssocRes*,
8635 	bool);
8636 
8637 uint32_t dot11f_pack_ie_wsc_assoc_res(
8638 	tpAniSirGlobal,
8639 	tDot11fIEWscAssocRes *,
8640 	uint8_t *,
8641 	uint32_t,
8642 	uint32_t*);
8643 
8644 uint32_t dot11f_get_packed_ie_wsc_assoc_res(
8645 	tpAniSirGlobal,
8646 	tDot11fIEWscAssocRes *,
8647 	uint32_t*);
8648 
8649 #ifdef __cplusplus
8650 }; /* End extern "C". */
8651 #endif /* C++ */
8652 
8653 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8654 typedef struct sDot11fIEWscBeacon {
8655 	uint8_t             present;
8656 	tDot11fTLVVersion   Version;
8657 	tDot11fTLVWPSState  WPSState;
8658 	tDot11fTLVAPSetupLocked APSetupLocked;
8659 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8660 	tDot11fTLVDevicePasswordID DevicePasswordID;
8661 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8662 	tDot11fTLVUUID_E    UUID_E;
8663 	tDot11fTLVRFBands   RFBands;
8664 	tDot11fTLVVendorExtension VendorExtension;
8665 } tDot11fIEWscBeacon;
8666 
8667 #define DOT11F_EID_WSCBEACON (221)
8668 
8669 /* N.B. These #defines do *not* include the EID & length */
8670 #define DOT11F_IE_WSCBEACON_MIN_LEN (4)
8671 
8672 #define DOT11F_IE_WSCBEACON_MAX_LEN (82)
8673 
8674 #ifdef __cplusplus
8675 extern "C" {
8676 #endif /* C++ */
8677 __must_check uint32_t dot11f_unpack_ie_wsc_beacon(
8678 	tpAniSirGlobal,
8679 	uint8_t *,
8680 	uint8_t,
8681 	tDot11fIEWscBeacon*,
8682 	bool);
8683 
8684 uint32_t dot11f_pack_ie_wsc_beacon(
8685 	tpAniSirGlobal,
8686 	tDot11fIEWscBeacon *,
8687 	uint8_t *,
8688 	uint32_t,
8689 	uint32_t*);
8690 
8691 uint32_t dot11f_get_packed_ie_wsc_beacon(
8692 	tpAniSirGlobal,
8693 	tDot11fIEWscBeacon *,
8694 	uint32_t*);
8695 
8696 #ifdef __cplusplus
8697 }; /* End extern "C". */
8698 #endif /* C++ */
8699 
8700 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8701 typedef struct sDot11fIEWscBeaconProbeRes {
8702 	uint8_t             present;
8703 	tDot11fTLVVersion   Version;
8704 	tDot11fTLVWPSState  WPSState;
8705 	tDot11fTLVAPSetupLocked APSetupLocked;
8706 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8707 	tDot11fTLVDevicePasswordID DevicePasswordID;
8708 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8709 	tDot11fTLVResponseType ResponseType;
8710 	tDot11fTLVUUID_E    UUID_E;
8711 	tDot11fTLVManufacturer Manufacturer;
8712 	tDot11fTLVModelName ModelName;
8713 	tDot11fTLVModelNumber ModelNumber;
8714 	tDot11fTLVSerialNumber SerialNumber;
8715 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8716 	tDot11fTLVDeviceName DeviceName;
8717 	tDot11fTLVConfigMethods ConfigMethods;
8718 	tDot11fTLVRFBands   RFBands;
8719 	tDot11fTLVVendorExtension VendorExtension;
8720 } tDot11fIEWscBeaconProbeRes;
8721 
8722 #define DOT11F_EID_WSCBEACONPROBERES (221)
8723 
8724 /* N.B. These #defines do *not* include the EID & length */
8725 #define DOT11F_IE_WSCBEACONPROBERES_MIN_LEN (4)
8726 
8727 #define DOT11F_IE_WSCBEACONPROBERES_MAX_LEN (317)
8728 
8729 #ifdef __cplusplus
8730 extern "C" {
8731 #endif /* C++ */
8732 __must_check uint32_t dot11f_unpack_ie_wsc_beacon_probe_res(
8733 	tpAniSirGlobal,
8734 	uint8_t *,
8735 	uint8_t,
8736 	tDot11fIEWscBeaconProbeRes*,
8737 	bool);
8738 
8739 uint32_t dot11f_pack_ie_wsc_beacon_probe_res(
8740 	tpAniSirGlobal,
8741 	tDot11fIEWscBeaconProbeRes *,
8742 	uint8_t *,
8743 	uint32_t,
8744 	uint32_t*);
8745 
8746 uint32_t dot11f_get_packed_ie_wsc_beacon_probe_res(
8747 	tpAniSirGlobal,
8748 	tDot11fIEWscBeaconProbeRes *,
8749 	uint32_t*);
8750 
8751 #ifdef __cplusplus
8752 }; /* End extern "C". */
8753 #endif /* C++ */
8754 
8755 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} */
8756 typedef struct sDot11fIEWscIEOpaque {
8757 	uint8_t             present;
8758 	uint8_t             num_data;
8759 	uint8_t             data[249];
8760 } tDot11fIEWscIEOpaque;
8761 
8762 #define DOT11F_EID_WSCIEOPAQUE (221)
8763 
8764 /* N.B. These #defines do *not* include the EID & length */
8765 #define DOT11F_IE_WSCIEOPAQUE_MIN_LEN (6)
8766 
8767 #define DOT11F_IE_WSCIEOPAQUE_MAX_LEN (253)
8768 
8769 #ifdef __cplusplus
8770 extern "C" {
8771 #endif /* C++ */
8772 __must_check uint32_t dot11f_unpack_ie_wsc_ie_opaque(
8773 	tpAniSirGlobal,
8774 	uint8_t *,
8775 	uint8_t,
8776 	tDot11fIEWscIEOpaque*,
8777 	bool);
8778 
8779 uint32_t dot11f_pack_ie_wsc_ie_opaque(
8780 	tpAniSirGlobal,
8781 	tDot11fIEWscIEOpaque *,
8782 	uint8_t *,
8783 	uint32_t,
8784 	uint32_t*);
8785 
8786 uint32_t dot11f_get_packed_ie_WscIEOpaque(
8787 	tpAniSirGlobal,
8788 	tDot11fIEWscIEOpaque *,
8789 	uint32_t*);
8790 
8791 #ifdef __cplusplus
8792 }; /* End extern "C". */
8793 #endif /* C++ */
8794 
8795 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8796 typedef struct sDot11fIEWscProbeReq {
8797 	uint8_t             present;
8798 	tDot11fTLVVersion   Version;
8799 	tDot11fTLVRequestType RequestType;
8800 	tDot11fTLVConfigMethods ConfigMethods;
8801 	tDot11fTLVUUID_E    UUID_E;
8802 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8803 	tDot11fTLVRFBands   RFBands;
8804 	tDot11fTLVAssociationState AssociationState;
8805 	tDot11fTLVConfigurationError ConfigurationError;
8806 	tDot11fTLVDevicePasswordID DevicePasswordID;
8807 	tDot11fTLVManufacturer Manufacturer;
8808 	tDot11fTLVModelName ModelName;
8809 	tDot11fTLVModelNumber ModelNumber;
8810 	tDot11fTLVDeviceName DeviceName;
8811 	tDot11fTLVVendorExtension VendorExtension;
8812 	tDot11fTLVRequestDeviceType RequestDeviceType;
8813 } tDot11fIEWscProbeReq;
8814 
8815 #define DOT11F_EID_WSCPROBEREQ (221)
8816 
8817 /* N.B. These #defines do *not* include the EID & length */
8818 #define DOT11F_IE_WSCPROBEREQ_MIN_LEN (4)
8819 
8820 #define DOT11F_IE_WSCPROBEREQ_MAX_LEN (284)
8821 
8822 #ifdef __cplusplus
8823 extern "C" {
8824 #endif /* C++ */
8825 __must_check uint32_t dot11f_unpack_ie_wsc_probe_req(
8826 	tpAniSirGlobal,
8827 	uint8_t *,
8828 	uint8_t,
8829 	tDot11fIEWscProbeReq*,
8830 	bool);
8831 
8832 uint32_t dot11f_pack_ie_wsc_probe_req(
8833 	tpAniSirGlobal,
8834 	tDot11fIEWscProbeReq *,
8835 	uint8_t *,
8836 	uint32_t,
8837 	uint32_t*);
8838 
8839 uint32_t dot11f_get_packed_ie_wsc_probe_req(
8840 	tpAniSirGlobal,
8841 	tDot11fIEWscProbeReq *,
8842 	uint32_t*);
8843 
8844 #ifdef __cplusplus
8845 }; /* End extern "C". */
8846 #endif /* C++ */
8847 
8848 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8849 typedef struct sDot11fIEWscProbeRes {
8850 	uint8_t             present;
8851 	tDot11fTLVVersion   Version;
8852 	tDot11fTLVWPSState  WPSState;
8853 	tDot11fTLVAPSetupLocked APSetupLocked;
8854 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8855 	tDot11fTLVDevicePasswordID DevicePasswordID;
8856 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8857 	tDot11fTLVResponseType ResponseType;
8858 	tDot11fTLVUUID_E    UUID_E;
8859 	tDot11fTLVManufacturer Manufacturer;
8860 	tDot11fTLVModelName ModelName;
8861 	tDot11fTLVModelNumber ModelNumber;
8862 	tDot11fTLVSerialNumber SerialNumber;
8863 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8864 	tDot11fTLVDeviceName DeviceName;
8865 	tDot11fTLVConfigMethods ConfigMethods;
8866 	tDot11fTLVRFBands   RFBands;
8867 	tDot11fTLVVendorExtension VendorExtension;
8868 } tDot11fIEWscProbeRes;
8869 
8870 #define DOT11F_EID_WSCPROBERES (221)
8871 
8872 /* N.B. These #defines do *not* include the EID & length */
8873 #define DOT11F_IE_WSCPROBERES_MIN_LEN (4)
8874 
8875 #define DOT11F_IE_WSCPROBERES_MAX_LEN (317)
8876 
8877 #ifdef __cplusplus
8878 extern "C" {
8879 #endif /* C++ */
8880 __must_check uint32_t dot11f_unpack_ie_wsc_probe_res(
8881 	tpAniSirGlobal,
8882 	uint8_t *,
8883 	uint8_t,
8884 	tDot11fIEWscProbeRes*,
8885 	bool);
8886 
8887 uint32_t dot11f_pack_ie_wsc_probe_res(
8888 	tpAniSirGlobal,
8889 	tDot11fIEWscProbeRes *,
8890 	uint8_t *,
8891 	uint32_t,
8892 	uint32_t*);
8893 
8894 uint32_t dot11f_get_packed_ie_wsc_probe_res(
8895 	tpAniSirGlobal,
8896 	tDot11fIEWscProbeRes *,
8897 	uint32_t*);
8898 
8899 #ifdef __cplusplus
8900 }; /* End extern "C". */
8901 #endif /* C++ */
8902 
8903 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8904 typedef struct sDot11fIEWscReassocRes {
8905 	uint8_t             present;
8906 	tDot11fTLVVersion   Version;
8907 	tDot11fTLVResponseType ResponseType;
8908 	tDot11fTLVVendorExtension VendorExtension;
8909 } tDot11fIEWscReassocRes;
8910 
8911 #define DOT11F_EID_WSCREASSOCRES (221)
8912 
8913 /* N.B. These #defines do *not* include the EID & length */
8914 #define DOT11F_IE_WSCREASSOCRES_MIN_LEN (4)
8915 
8916 #define DOT11F_IE_WSCREASSOCRES_MAX_LEN (35)
8917 
8918 #ifdef __cplusplus
8919 extern "C" {
8920 #endif /* C++ */
8921 __must_check uint32_t dot11f_unpack_ie_wsc_reassoc_res(
8922 	tpAniSirGlobal,
8923 	uint8_t *,
8924 	uint8_t,
8925 	tDot11fIEWscReassocRes*,
8926 	bool);
8927 
8928 uint32_t dot11f_pack_ie_wsc_reassoc_res(
8929 	tpAniSirGlobal,
8930 	tDot11fIEWscReassocRes *,
8931 	uint8_t *,
8932 	uint32_t,
8933 	uint32_t*);
8934 
8935 uint32_t dot11f_get_packed_ie_wsc_reassoc_res(
8936 	tpAniSirGlobal,
8937 	tDot11fIEWscReassocRes *,
8938 	uint32_t*);
8939 
8940 #ifdef __cplusplus
8941 }; /* End extern "C". */
8942 #endif /* C++ */
8943 
8944 /* EID 159 (0x9f) */
8945 typedef struct sDot11fIEaddba_extn_element {
8946 	uint8_t             present;
8947 	uint8_t     no_fragmentation:1;
8948 	uint8_t    he_frag_operation:2;
8949 	uint8_t             reserved:2;
8950 	uint8_t       extd_buff_size:3;
8951 } tDot11fIEaddba_extn_element;
8952 
8953 #define DOT11F_EID_ADDBA_EXTN_ELEMENT (159)
8954 
8955 /* N.B. These #defines do *not* include the EID & length */
8956 #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MIN_LEN (1)
8957 
8958 #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MAX_LEN (1)
8959 
8960 #ifdef __cplusplus
8961 extern "C" {
8962 #endif /* C++ */
8963 __must_check uint32_t dot11f_unpack_ie_addba_extn_element(
8964 	tpAniSirGlobal,
8965 	uint8_t *,
8966 	uint8_t,
8967 	tDot11fIEaddba_extn_element*,
8968 	bool);
8969 
8970 uint32_t dot11f_pack_ie_addba_extn_element(
8971 	tpAniSirGlobal,
8972 	tDot11fIEaddba_extn_element *,
8973 	uint8_t *,
8974 	uint32_t,
8975 	uint32_t*);
8976 
8977 uint32_t dot11f_get_packed_ie_addba_extn_element(
8978 	tpAniSirGlobal,
8979 	tDot11fIEaddba_extn_element *,
8980 	uint32_t*);
8981 
8982 #ifdef __cplusplus
8983 }; /* End extern "C". */
8984 #endif /* C++ */
8985 
8986 /* EID 255 (0xff) Extended EID 42 (0x2a) */
8987 typedef struct sDot11fIEbss_color_change {
8988 	uint8_t             present;
8989 	uint8_t             countdown;
8990 	uint8_t            new_color:6;
8991 	uint8_t             reserved:2;
8992 } tDot11fIEbss_color_change;
8993 
8994 #define DOT11F_EID_BSS_COLOR_CHANGE (255)
8995 
8996 /* N.B. These #defines do *not* include the EID & length */
8997 #define DOT11F_IE_BSS_COLOR_CHANGE_MIN_LEN (2)
8998 
8999 #define DOT11F_IE_BSS_COLOR_CHANGE_MAX_LEN (2)
9000 
9001 #ifdef __cplusplus
9002 extern "C" {
9003 #endif /* C++ */
9004 __must_check uint32_t dot11f_unpack_ie_bss_color_change(
9005 	tpAniSirGlobal,
9006 	uint8_t *,
9007 	uint8_t,
9008 	tDot11fIEbss_color_change*,
9009 	bool);
9010 
9011 uint32_t dot11f_pack_ie_bss_color_change(
9012 	tpAniSirGlobal,
9013 	tDot11fIEbss_color_change *,
9014 	uint8_t *,
9015 	uint32_t,
9016 	uint32_t*);
9017 
9018 uint32_t dot11f_get_packed_ie_bss_color_change(
9019 	tpAniSirGlobal,
9020 	tDot11fIEbss_color_change *,
9021 	uint32_t*);
9022 
9023 #ifdef __cplusplus
9024 }; /* End extern "C". */
9025 #endif /* C++ */
9026 
9027 /* EID 90 (0x5a) */
9028 typedef struct sDot11fIEbss_max_idle_period {
9029 	uint8_t             present;
9030 	uint16_t            max_idle_period;
9031 	uint8_t prot_keep_alive_reqd:1;
9032 	uint8_t             reserved:7;
9033 } tDot11fIEbss_max_idle_period;
9034 
9035 #define DOT11F_EID_BSS_MAX_IDLE_PERIOD (90)
9036 
9037 /* N.B. These #defines do *not* include the EID & length */
9038 #define DOT11F_IE_BSS_MAX_IDLE_PERIOD_MIN_LEN (3)
9039 
9040 #define DOT11F_IE_BSS_MAX_IDLE_PERIOD_MAX_LEN (3)
9041 
9042 #ifdef __cplusplus
9043 extern "C" {
9044 #endif /* C++ */
9045 __must_check uint32_t dot11f_unpack_ie_bss_max_idle_period(
9046 	tpAniSirGlobal,
9047 	uint8_t *,
9048 	uint8_t,
9049 	tDot11fIEbss_max_idle_period*,
9050 	bool);
9051 
9052 uint32_t dot11f_pack_ie_bss_max_idle_period(
9053 	tpAniSirGlobal,
9054 	tDot11fIEbss_max_idle_period *,
9055 	uint8_t *,
9056 	uint32_t,
9057 	uint32_t*);
9058 
9059 uint32_t dot11f_get_packed_ie_bss_max_idle_period(
9060 	tpAniSirGlobal,
9061 	tDot11fIEbss_max_idle_period *,
9062 	uint32_t*);
9063 
9064 #ifdef __cplusplus
9065 }; /* End extern "C". */
9066 #endif /* C++ */
9067 
9068 /* EID 255 (0xff) Extended EID 88 (0x58) */
9069 typedef struct sDot11fIEdescriptor_element {
9070 	uint8_t                     present;
9071 	uint8_t                     request_type;
9072 	uint16_t                    user_priority_control;
9073 	uint32_t                    stream_timeout;
9074 	tDot11fIEtclas_mask         tclas_mask;
9075 	tDot11fIEmscs_status        mscs_status;
9076 } tDot11fIEdescriptor_element;
9077 
9078 #define DOT11F_EID_DESCRIPTOR_ELEMENT (255)
9079 
9080 /* N.B. These #defines do *not* include the EID & length */
9081 #define DOT11F_IE_DESCRIPTOR_ELEMENT_MIN_LEN (7)
9082 
9083 #define DOT11F_IE_DESCRIPTOR_ELEMENT_MAX_LEN (30)
9084 
9085 #ifdef __cplusplus
9086 extern "C" {
9087 #endif /* C++ */
9088 __must_check uint32_t dot11f_unpack_ie_descriptor_element(
9089 	tpAniSirGlobal,
9090 	uint8_t *,
9091 	uint8_t,
9092 	tDot11fIEdescriptor_element*,
9093 	bool);
9094 
9095 uint32_t dot11f_pack_ie_descriptor_element(
9096 	tpAniSirGlobal,
9097 	tDot11fIEdescriptor_element *,
9098 	uint8_t *,
9099 	uint32_t,
9100 	uint32_t*);
9101 
9102 uint32_t dot11f_get_packed_ie_descriptor_element(
9103 	tpAniSirGlobal,
9104 	tDot11fIEdescriptor_element *,
9105 	uint32_t*);
9106 
9107 #ifdef __cplusplus
9108 }; /* End extern "C". */
9109 #endif /* C++ */
9110 
9111 /* EID 255 (0xff) Extended EID 32 (0x20) */
9112 typedef struct sDot11fIEdh_parameter_element {
9113 	uint8_t             present;
9114 	uint8_t             group[2];
9115 	uint8_t             num_public_key;
9116 	uint8_t             public_key[255];
9117 } tDot11fIEdh_parameter_element;
9118 
9119 #define DOT11F_EID_DH_PARAMETER_ELEMENT (255)
9120 
9121 /* N.B. These #defines do *not* include the EID & length */
9122 #define DOT11F_IE_DH_PARAMETER_ELEMENT_MIN_LEN (2)
9123 
9124 #define DOT11F_IE_DH_PARAMETER_ELEMENT_MAX_LEN (257)
9125 
9126 #ifdef __cplusplus
9127 extern "C" {
9128 #endif /* C++ */
9129 __must_check uint32_t dot11f_unpack_ie_dh_parameter_element(
9130 	tpAniSirGlobal,
9131 	uint8_t *,
9132 	uint8_t,
9133 	tDot11fIEdh_parameter_element*,
9134 	bool);
9135 
9136 uint32_t dot11f_pack_ie_dh_parameter_element(
9137 	tpAniSirGlobal,
9138 	tDot11fIEdh_parameter_element *,
9139 	uint8_t *,
9140 	uint32_t,
9141 	uint32_t*);
9142 
9143 uint32_t dot11f_get_packed_ie_dh_parameter_element(
9144 	tpAniSirGlobal,
9145 	tDot11fIEdh_parameter_element *,
9146 	uint32_t*);
9147 
9148 #ifdef __cplusplus
9149 }; /* End extern "C". */
9150 #endif /* C++ */
9151 
9152 /* EID 255 (0xff) Extended EID 108 (0x6c) */
9153 typedef struct sDot11fIEeht_cap {
9154 	uint8_t             present;
9155 	uint16_t      epcs_pri_access:1;
9156 	uint16_t           eht_om_ctl:1;
9157 	uint16_t triggered_txop_sharing_mode1:1;
9158 	uint16_t triggered_txop_sharing_mode2:1;
9159 	uint16_t       restricted_twt:1;
9160 	uint16_t     scs_traffic_desc:1;
9161 	uint16_t         max_mpdu_len:2;
9162 	uint16_t max_a_mpdu_len_exponent_ext:1;
9163 	uint16_t      eht_trs_support:1;
9164 	uint16_t txop_return_support_txop_share_m2:1;
9165 	uint16_t     two_bqrs_support:1;
9166 	uint16_t eht_link_adaptation_support:2;
9167 	uint16_t             reserved:2;
9168 	uint32_t            reserved2:1;
9169 	uint32_t  support_320mhz_6ghz:1;
9170 	uint32_t  ru_242tone_wt_20mhz:1;
9171 	uint32_t ndp_4x_eht_ltf_3dot2_us_gi:1;
9172 	uint32_t   partial_bw_mu_mimo:1;
9173 	uint32_t        su_beamformer:1;
9174 	uint32_t        su_beamformee:1;
9175 	uint32_t     bfee_ss_le_80mhz:3;
9176 	uint32_t       bfee_ss_160mhz:3;
9177 	uint32_t       bfee_ss_320mhz:3;
9178 	uint32_t num_sounding_dim_le_80mhz:3;
9179 	uint32_t num_sounding_dim_160mhz:3;
9180 	uint32_t num_sounding_dim_320mhz:3;
9181 	uint32_t    ng_16_su_feedback:1;
9182 	uint32_t    ng_16_mu_feedback:1;
9183 	uint32_t cb_sz_4_2_su_feedback:1;
9184 	uint32_t cb_sz_7_5_su_feedback:1;
9185 	uint32_t trig_su_bforming_feedback:1;
9186 	uint32_t trig_mu_bforming_partial_bw_feedback:1;
9187 	uint32_t triggered_cqi_feedback:1;
9188 	uint32_t partial_bw_dl_mu_mimo:1;
9189 	uint32_t         psr_based_sr:1;
9190 	uint32_t   power_boost_factor:1;
9191 	uint32_t eht_mu_ppdu_4x_ltf_0_8_us_gi:1;
9192 	uint32_t               max_nc:4;
9193 	uint32_t non_trig_cqi_feedback:1;
9194 	uint32_t tx_1024_4096_qam_lt_242_tone_ru:1;
9195 	uint32_t rx_1024_4096_qam_lt_242_tone_ru:1;
9196 	uint32_t         ppet_present:1;
9197 	uint32_t common_nominal_pkt_padding:2;
9198 	uint32_t      max_num_eht_ltf:5;
9199 	uint32_t               mcs_15:4;
9200 	uint32_t         eht_dup_6ghz:1;
9201 	uint32_t op_sta_rx_ndp_wider_bw_20mhz:1;
9202 	uint32_t non_ofdma_ul_mu_mimo_le_80mhz:1;
9203 	uint32_t non_ofdma_ul_mu_mimo_160mhz:1;
9204 	uint32_t non_ofdma_ul_mu_mimo_320mhz:1;
9205 	uint32_t  mu_bformer_le_80mhz:1;
9206 	uint32_t    mu_bformer_160mhz:1;
9207 	uint32_t    mu_bformer_320mhz:1;
9208 	uint32_t tb_sounding_feedback_rl:1;
9209 	uint8_t rx_1k_qam_in_wider_bw_dl_ofdma:1;
9210 	uint8_t rx_4k_qam_in_wider_bw_dl_ofdma:1;
9211 	uint8_t limited_cap_support_20mhz:1;
9212 	uint8_t triggered_mu_bf_full_bw_fb_and_dl_mumimo:1;
9213 	uint8_t    mru_support_20mhz:1;
9214 	uint8_t            reserved3:3;
9215 	uint32_t bw_20_rx_max_nss_for_mcs_0_to_7:4;
9216 	uint32_t bw_20_tx_max_nss_for_mcs_0_to_7:4;
9217 	uint32_t bw_20_rx_max_nss_for_mcs_8_and_9:4;
9218 	uint32_t bw_20_tx_max_nss_for_mcs_8_and_9:4;
9219 	uint32_t bw_20_rx_max_nss_for_mcs_10_and_11:4;
9220 	uint32_t bw_20_tx_max_nss_for_mcs_10_and_11:4;
9221 	uint32_t bw_20_rx_max_nss_for_mcs_12_and_13:4;
9222 	uint32_t bw_20_tx_max_nss_for_mcs_12_and_13:4;
9223 	uint32_t bw_le_80_rx_max_nss_for_mcs_0_to_9:4;
9224 	uint32_t bw_le_80_tx_max_nss_for_mcs_0_to_9:4;
9225 	uint32_t bw_le_80_rx_max_nss_for_mcs_10_and_11:4;
9226 	uint32_t bw_le_80_tx_max_nss_for_mcs_10_and_11:4;
9227 	uint32_t bw_le_80_rx_max_nss_for_mcs_12_and_13:4;
9228 	uint32_t bw_le_80_tx_max_nss_for_mcs_12_and_13:4;
9229 	uint32_t bw_160_rx_max_nss_for_mcs_0_to_9:4;
9230 	uint32_t bw_160_tx_max_nss_for_mcs_0_to_9:4;
9231 	uint32_t bw_160_rx_max_nss_for_mcs_10_and_11:4;
9232 	uint32_t bw_160_tx_max_nss_for_mcs_10_and_11:4;
9233 	uint32_t bw_160_rx_max_nss_for_mcs_12_and_13:4;
9234 	uint32_t bw_160_tx_max_nss_for_mcs_12_and_13:4;
9235 	uint32_t bw_320_rx_max_nss_for_mcs_0_to_9:4;
9236 	uint32_t bw_320_tx_max_nss_for_mcs_0_to_9:4;
9237 	uint32_t bw_320_rx_max_nss_for_mcs_10_and_11:4;
9238 	uint32_t bw_320_tx_max_nss_for_mcs_10_and_11:4;
9239 	uint8_t bw_320_rx_max_nss_for_mcs_12_and_13:4;
9240 	uint8_t bw_320_tx_max_nss_for_mcs_12_and_13:4;
9241 	union {
9242 		struct {
9243 			uint8_t num_ppe_th;
9244 			uint8_t ppe_th[62];
9245 		} ppe_threshold; /* ppet_present = 1 */
9246 	} ppet;
9247 } tDot11fIEeht_cap;
9248 
9249 #define DOT11F_EID_EHT_CAP (255)
9250 
9251 /* N.B. These #defines do *not* include the EID & length */
9252 #define DOT11F_IE_EHT_CAP_MIN_LEN (24)
9253 
9254 #define DOT11F_IE_EHT_CAP_MAX_LEN (86)
9255 
9256 #ifdef __cplusplus
9257 extern "C" {
9258 #endif /* C++ */
9259 __must_check uint32_t dot11f_unpack_ie_eht_cap(
9260 	tpAniSirGlobal,
9261 	uint8_t *,
9262 	uint8_t,
9263 	tDot11fIEeht_cap*,
9264 	bool);
9265 
9266 uint32_t dot11f_pack_ie_eht_cap(
9267 	tpAniSirGlobal,
9268 	tDot11fIEeht_cap *,
9269 	uint8_t *,
9270 	uint32_t,
9271 	uint32_t*);
9272 
9273 uint32_t dot11f_get_packed_ie_eht_cap(
9274 	tpAniSirGlobal,
9275 	tDot11fIEeht_cap *,
9276 	uint32_t*);
9277 
9278 #ifdef __cplusplus
9279 }; /* End extern "C". */
9280 #endif /* C++ */
9281 
9282 /* EID 255 (0xff) Extended EID 106 (0x6a) */
9283 typedef struct sDot11fIEeht_op {
9284 	uint8_t             present;
9285 	uint8_t eht_op_information_present:1;
9286 	uint8_t disabled_sub_chan_bitmap_present:1;
9287 	uint8_t eht_default_pe_duration:1;
9288 	uint8_t group_addr_bu_indication_limit:1;
9289 	uint8_t group_addr_bu_indication_exponent:2;
9290 	uint8_t             reserved:2;
9291 	uint32_t basic_rx_max_nss_for_mcs_0_to_7:4;
9292 	uint32_t basic_tx_max_nss_for_mcs_0_to_7:4;
9293 	uint32_t basic_rx_max_nss_for_mcs_8_and_9:4;
9294 	uint32_t basic_tx_max_nss_for_mcs_8_and_9:4;
9295 	uint32_t basic_rx_max_nss_for_mcs_10_and_11:4;
9296 	uint32_t basic_tx_max_nss_for_mcs_10_and_11:4;
9297 	uint32_t basic_rx_max_nss_for_mcs_12_and_13:4;
9298 	uint32_t basic_tx_max_nss_for_mcs_12_and_13:4;
9299 	uint8_t        channel_width:3;
9300 	uint8_t           reserved_1:5;
9301 	uint8_t             ccfs0;
9302 	uint8_t             ccfs1;
9303 	uint8_t             disabled_sub_chan_bitmap[1][2];
9304 } tDot11fIEeht_op;
9305 
9306 #define DOT11F_EID_EHT_OP (255)
9307 
9308 /* N.B. These #defines do *not* include the EID & length */
9309 #define DOT11F_IE_EHT_OP_MIN_LEN (8)
9310 
9311 #define DOT11F_IE_EHT_OP_MAX_LEN (10)
9312 
9313 #ifdef __cplusplus
9314 extern "C" {
9315 #endif /* C++ */
9316 __must_check uint32_t dot11f_unpack_ie_eht_op(
9317 	tpAniSirGlobal,
9318 	uint8_t *,
9319 	uint8_t,
9320 	tDot11fIEeht_op*,
9321 	bool);
9322 
9323 uint32_t dot11f_pack_ie_eht_op(
9324 	tpAniSirGlobal,
9325 	tDot11fIEeht_op *,
9326 	uint8_t *,
9327 	uint32_t,
9328 	uint32_t*);
9329 
9330 uint32_t dot11f_get_packed_ie_eht_op(
9331 	tpAniSirGlobal,
9332 	tDot11fIEeht_op *,
9333 	uint32_t*);
9334 
9335 #ifdef __cplusplus
9336 }; /* End extern "C". */
9337 #endif /* C++ */
9338 
9339 /* EID 255 (0xff) Extended EID 11 (0x0b) */
9340 typedef struct sDot11fIEesp_information {
9341 	uint8_t             present;
9342 	uint8_t             num_data;
9343 	uint8_t             data[96];
9344 } tDot11fIEesp_information;
9345 
9346 #define DOT11F_EID_ESP_INFORMATION (255)
9347 
9348 /* N.B. These #defines do *not* include the EID & length */
9349 #define DOT11F_IE_ESP_INFORMATION_MIN_LEN (0)
9350 
9351 #define DOT11F_IE_ESP_INFORMATION_MAX_LEN (96)
9352 
9353 #ifdef __cplusplus
9354 extern "C" {
9355 #endif /* C++ */
9356 __must_check uint32_t dot11f_unpack_ie_esp_information(
9357 	tpAniSirGlobal,
9358 	uint8_t *,
9359 	uint8_t,
9360 	tDot11fIEesp_information*,
9361 	bool);
9362 
9363 uint32_t dot11f_pack_ie_esp_information(
9364 	tpAniSirGlobal,
9365 	tDot11fIEesp_information *,
9366 	uint8_t *,
9367 	uint32_t,
9368 	uint32_t*);
9369 
9370 uint32_t dot11f_get_packed_ie_esp_information(
9371 	tpAniSirGlobal,
9372 	tDot11fIEesp_information *,
9373 	uint32_t*);
9374 
9375 #ifdef __cplusplus
9376 }; /* End extern "C". */
9377 #endif /* C++ */
9378 
9379 /* EID 60 (0x3c) */
9380 typedef struct sDot11fIEext_chan_switch_ann {
9381 	uint8_t             present;
9382 	uint8_t             switch_mode;
9383 	uint8_t             new_reg_class;
9384 	uint8_t             new_channel;
9385 	uint8_t             switch_count;
9386 } tDot11fIEext_chan_switch_ann;
9387 
9388 #define DOT11F_EID_EXT_CHAN_SWITCH_ANN (60)
9389 
9390 /* N.B. These #defines do *not* include the EID & length */
9391 #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MIN_LEN (4)
9392 
9393 #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MAX_LEN (4)
9394 
9395 #ifdef __cplusplus
9396 extern "C" {
9397 #endif /* C++ */
9398 __must_check uint32_t dot11f_unpack_ie_ext_chan_switch_ann(
9399 	tpAniSirGlobal,
9400 	uint8_t *,
9401 	uint8_t,
9402 	tDot11fIEext_chan_switch_ann*,
9403 	bool);
9404 
9405 uint32_t dot11f_pack_ie_ext_chan_switch_ann(
9406 	tpAniSirGlobal,
9407 	tDot11fIEext_chan_switch_ann *,
9408 	uint8_t *,
9409 	uint32_t,
9410 	uint32_t*);
9411 
9412 uint32_t dot11f_get_packed_ie_ext_chan_switch_ann(
9413 	tpAniSirGlobal,
9414 	tDot11fIEext_chan_switch_ann *,
9415 	uint32_t*);
9416 
9417 #ifdef __cplusplus
9418 }; /* End extern "C". */
9419 #endif /* C++ */
9420 
9421 /* EID 255 (0xff) Extended EID 1 (0x01) */
9422 typedef struct sDot11fIEfils_assoc_delay_info {
9423 	uint8_t             present;
9424 	uint8_t             assoc_delay_info;
9425 } tDot11fIEfils_assoc_delay_info;
9426 
9427 #define DOT11F_EID_FILS_ASSOC_DELAY_INFO (255)
9428 
9429 /* N.B. These #defines do *not* include the EID & length */
9430 #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MIN_LEN (1)
9431 
9432 #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MAX_LEN (1)
9433 
9434 #ifdef __cplusplus
9435 extern "C" {
9436 #endif /* C++ */
9437 __must_check uint32_t dot11f_unpack_ie_fils_assoc_delay_info(
9438 	tpAniSirGlobal,
9439 	uint8_t *,
9440 	uint8_t,
9441 	tDot11fIEfils_assoc_delay_info*,
9442 	bool);
9443 
9444 uint32_t dot11f_pack_ie_fils_assoc_delay_info(
9445 	tpAniSirGlobal,
9446 	tDot11fIEfils_assoc_delay_info *,
9447 	uint8_t *,
9448 	uint32_t,
9449 	uint32_t*);
9450 
9451 uint32_t dot11f_get_packed_ie_fils_assoc_delay_info(
9452 	tpAniSirGlobal,
9453 	tDot11fIEfils_assoc_delay_info *,
9454 	uint32_t*);
9455 
9456 #ifdef __cplusplus
9457 }; /* End extern "C". */
9458 #endif /* C++ */
9459 
9460 /* EID 255 (0xff) Extended EID 5 (0x05) */
9461 typedef struct sDot11fIEfils_hlp_container {
9462 	uint8_t             present;
9463 	uint8_t             dest_mac[6];
9464 	uint8_t             src_mac[6];
9465 	uint8_t             num_hlp_packet;
9466 	uint8_t             hlp_packet[255];
9467 } tDot11fIEfils_hlp_container;
9468 
9469 #define DOT11F_EID_FILS_HLP_CONTAINER (255)
9470 
9471 /* N.B. These #defines do *not* include the EID & length */
9472 #define DOT11F_IE_FILS_HLP_CONTAINER_MIN_LEN (12)
9473 
9474 #define DOT11F_IE_FILS_HLP_CONTAINER_MAX_LEN (267)
9475 
9476 #ifdef __cplusplus
9477 extern "C" {
9478 #endif /* C++ */
9479 __must_check uint32_t dot11f_unpack_ie_fils_hlp_container(
9480 	tpAniSirGlobal,
9481 	uint8_t *,
9482 	uint8_t,
9483 	tDot11fIEfils_hlp_container*,
9484 	bool);
9485 
9486 uint32_t dot11f_pack_ie_fils_hlp_container(
9487 	tpAniSirGlobal,
9488 	tDot11fIEfils_hlp_container *,
9489 	uint8_t *,
9490 	uint32_t,
9491 	uint32_t*);
9492 
9493 uint32_t dot11f_get_packed_ie_fils_hlp_container(
9494 	tpAniSirGlobal,
9495 	tDot11fIEfils_hlp_container *,
9496 	uint32_t*);
9497 
9498 #ifdef __cplusplus
9499 }; /* End extern "C". */
9500 #endif /* C++ */
9501 
9502 /* EID 240 (0xf0) */
9503 typedef struct sDot11fIEfils_indication {
9504 	uint8_t             present;
9505 	uint16_t public_key_identifiers_cnt:3;
9506 	uint16_t realm_identifiers_cnt:3;
9507 	uint16_t is_ip_config_supported:1;
9508 	uint16_t  is_cache_id_present:1;
9509 	uint16_t    is_hessid_present:1;
9510 	uint16_t is_fils_sk_auth_supported:1;
9511 	uint16_t is_fils_sk_auth_pfs_supported:1;
9512 	uint16_t is_pk_auth_supported:1;
9513 	uint16_t             reserved:4;
9514 	uint8_t             num_variable_data;
9515 	uint8_t             variable_data[255];
9516 } tDot11fIEfils_indication;
9517 
9518 #define DOT11F_EID_FILS_INDICATION (240)
9519 
9520 /* N.B. These #defines do *not* include the EID & length */
9521 #define DOT11F_IE_FILS_INDICATION_MIN_LEN (4)
9522 
9523 #define DOT11F_IE_FILS_INDICATION_MAX_LEN (257)
9524 
9525 #ifdef __cplusplus
9526 extern "C" {
9527 #endif /* C++ */
9528 __must_check uint32_t dot11f_unpack_ie_fils_indication(
9529 	tpAniSirGlobal,
9530 	uint8_t *,
9531 	uint8_t,
9532 	tDot11fIEfils_indication*,
9533 	bool);
9534 
9535 uint32_t dot11f_pack_ie_fils_indication(
9536 	tpAniSirGlobal,
9537 	tDot11fIEfils_indication *,
9538 	uint8_t *,
9539 	uint32_t,
9540 	uint32_t*);
9541 
9542 uint32_t dot11f_get_packed_ie_fils_indication(
9543 	tpAniSirGlobal,
9544 	tDot11fIEfils_indication *,
9545 	uint32_t*);
9546 
9547 #ifdef __cplusplus
9548 }; /* End extern "C". */
9549 #endif /* C++ */
9550 
9551 /* EID 255 (0xff) Extended EID 7 (0x07) */
9552 typedef struct sDot11fIEfils_kde {
9553 	uint8_t             present;
9554 	uint8_t             key_rsc[8];
9555 	uint8_t             num_kde_list;
9556 	uint8_t             kde_list[255];
9557 } tDot11fIEfils_kde;
9558 
9559 #define DOT11F_EID_FILS_KDE (255)
9560 
9561 /* N.B. These #defines do *not* include the EID & length */
9562 #define DOT11F_IE_FILS_KDE_MIN_LEN (8)
9563 
9564 #define DOT11F_IE_FILS_KDE_MAX_LEN (263)
9565 
9566 #ifdef __cplusplus
9567 extern "C" {
9568 #endif /* C++ */
9569 __must_check uint32_t dot11f_unpack_ie_fils_kde(
9570 	tpAniSirGlobal,
9571 	uint8_t *,
9572 	uint8_t,
9573 	tDot11fIEfils_kde*,
9574 	bool);
9575 
9576 uint32_t dot11f_pack_ie_fils_kde(
9577 	tpAniSirGlobal,
9578 	tDot11fIEfils_kde *,
9579 	uint8_t *,
9580 	uint32_t,
9581 	uint32_t*);
9582 
9583 uint32_t dot11f_get_packed_ie_fils_kde(
9584 	tpAniSirGlobal,
9585 	tDot11fIEfils_kde *,
9586 	uint32_t*);
9587 
9588 #ifdef __cplusplus
9589 }; /* End extern "C". */
9590 #endif /* C++ */
9591 
9592 /* EID 255 (0xff) Extended EID 3 (0x03) */
9593 typedef struct sDot11fIEfils_key_confirmation {
9594 	uint8_t             present;
9595 	uint8_t             num_key_auth;
9596 	uint8_t             key_auth[255];
9597 } tDot11fIEfils_key_confirmation;
9598 
9599 #define DOT11F_EID_FILS_KEY_CONFIRMATION (255)
9600 
9601 /* N.B. These #defines do *not* include the EID & length */
9602 #define DOT11F_IE_FILS_KEY_CONFIRMATION_MIN_LEN (0)
9603 
9604 #define DOT11F_IE_FILS_KEY_CONFIRMATION_MAX_LEN (255)
9605 
9606 #ifdef __cplusplus
9607 extern "C" {
9608 #endif /* C++ */
9609 __must_check uint32_t dot11f_unpack_ie_fils_key_confirmation(
9610 	tpAniSirGlobal,
9611 	uint8_t *,
9612 	uint8_t,
9613 	tDot11fIEfils_key_confirmation*,
9614 	bool);
9615 
9616 uint32_t dot11f_pack_ie_fils_key_confirmation(
9617 	tpAniSirGlobal,
9618 	tDot11fIEfils_key_confirmation *,
9619 	uint8_t *,
9620 	uint32_t,
9621 	uint32_t*);
9622 
9623 uint32_t dot11f_get_packed_ie_fils_key_confirmation(
9624 	tpAniSirGlobal,
9625 	tDot11fIEfils_key_confirmation *,
9626 	uint32_t*);
9627 
9628 #ifdef __cplusplus
9629 }; /* End extern "C". */
9630 #endif /* C++ */
9631 
9632 /* EID 255 (0xff) Extended EID 13 (0x0d) */
9633 typedef struct sDot11fIEfils_nonce {
9634 	uint8_t             present;
9635 	uint8_t             nonce[16];
9636 } tDot11fIEfils_nonce;
9637 
9638 #define DOT11F_EID_FILS_NONCE (255)
9639 
9640 /* N.B. These #defines do *not* include the EID & length */
9641 #define DOT11F_IE_FILS_NONCE_MIN_LEN (16)
9642 
9643 #define DOT11F_IE_FILS_NONCE_MAX_LEN (16)
9644 
9645 #ifdef __cplusplus
9646 extern "C" {
9647 #endif /* C++ */
9648 __must_check uint32_t dot11f_unpack_ie_fils_nonce(
9649 	tpAniSirGlobal,
9650 	uint8_t *,
9651 	uint8_t,
9652 	tDot11fIEfils_nonce*,
9653 	bool);
9654 
9655 uint32_t dot11f_pack_ie_fils_nonce(
9656 	tpAniSirGlobal,
9657 	tDot11fIEfils_nonce *,
9658 	uint8_t *,
9659 	uint32_t,
9660 	uint32_t*);
9661 
9662 uint32_t dot11f_get_packed_ie_fils_nonce(
9663 	tpAniSirGlobal,
9664 	tDot11fIEfils_nonce *,
9665 	uint32_t*);
9666 
9667 #ifdef __cplusplus
9668 }; /* End extern "C". */
9669 #endif /* C++ */
9670 
9671 /* EID 255 (0xff) Extended EID 12 (0x0c) */
9672 typedef struct sDot11fIEfils_public_key {
9673 	uint8_t             present;
9674 	uint8_t             key_type;
9675 	uint8_t             num_public_key;
9676 	uint8_t             public_key[255];
9677 } tDot11fIEfils_public_key;
9678 
9679 #define DOT11F_EID_FILS_PUBLIC_KEY (255)
9680 
9681 /* N.B. These #defines do *not* include the EID & length */
9682 #define DOT11F_IE_FILS_PUBLIC_KEY_MIN_LEN (1)
9683 
9684 #define DOT11F_IE_FILS_PUBLIC_KEY_MAX_LEN (256)
9685 
9686 #ifdef __cplusplus
9687 extern "C" {
9688 #endif /* C++ */
9689 __must_check uint32_t dot11f_unpack_ie_fils_public_key(
9690 	tpAniSirGlobal,
9691 	uint8_t *,
9692 	uint8_t,
9693 	tDot11fIEfils_public_key*,
9694 	bool);
9695 
9696 uint32_t dot11f_pack_ie_fils_public_key(
9697 	tpAniSirGlobal,
9698 	tDot11fIEfils_public_key *,
9699 	uint8_t *,
9700 	uint32_t,
9701 	uint32_t*);
9702 
9703 uint32_t dot11f_get_packed_ie_fils_public_key(
9704 	tpAniSirGlobal,
9705 	tDot11fIEfils_public_key *,
9706 	uint32_t*);
9707 
9708 #ifdef __cplusplus
9709 }; /* End extern "C". */
9710 #endif /* C++ */
9711 
9712 /* EID 255 (0xff) Extended EID 4 (0x04) */
9713 typedef struct sDot11fIEfils_session {
9714 	uint8_t             present;
9715 	uint8_t             session[8];
9716 } tDot11fIEfils_session;
9717 
9718 #define DOT11F_EID_FILS_SESSION (255)
9719 
9720 /* N.B. These #defines do *not* include the EID & length */
9721 #define DOT11F_IE_FILS_SESSION_MIN_LEN (8)
9722 
9723 #define DOT11F_IE_FILS_SESSION_MAX_LEN (8)
9724 
9725 #ifdef __cplusplus
9726 extern "C" {
9727 #endif /* C++ */
9728 __must_check uint32_t dot11f_unpack_ie_fils_session(
9729 	tpAniSirGlobal,
9730 	uint8_t *,
9731 	uint8_t,
9732 	tDot11fIEfils_session*,
9733 	bool);
9734 
9735 uint32_t dot11f_pack_ie_fils_session(
9736 	tpAniSirGlobal,
9737 	tDot11fIEfils_session *,
9738 	uint8_t *,
9739 	uint32_t,
9740 	uint32_t*);
9741 
9742 uint32_t dot11f_get_packed_ie_fils_session(
9743 	tpAniSirGlobal,
9744 	tDot11fIEfils_session *,
9745 	uint32_t*);
9746 
9747 #ifdef __cplusplus
9748 }; /* End extern "C". */
9749 #endif /* C++ */
9750 
9751 /* EID 255 (0xff) Extended EID 8 (0x08) */
9752 typedef struct sDot11fIEfils_wrapped_data {
9753 	uint8_t             present;
9754 	uint8_t             num_wrapped_data;
9755 	uint8_t             wrapped_data[255];
9756 } tDot11fIEfils_wrapped_data;
9757 
9758 #define DOT11F_EID_FILS_WRAPPED_DATA (255)
9759 
9760 /* N.B. These #defines do *not* include the EID & length */
9761 #define DOT11F_IE_FILS_WRAPPED_DATA_MIN_LEN (0)
9762 
9763 #define DOT11F_IE_FILS_WRAPPED_DATA_MAX_LEN (255)
9764 
9765 #ifdef __cplusplus
9766 extern "C" {
9767 #endif /* C++ */
9768 __must_check uint32_t dot11f_unpack_ie_fils_wrapped_data(
9769 	tpAniSirGlobal,
9770 	uint8_t *,
9771 	uint8_t,
9772 	tDot11fIEfils_wrapped_data*,
9773 	bool);
9774 
9775 uint32_t dot11f_pack_ie_fils_wrapped_data(
9776 	tpAniSirGlobal,
9777 	tDot11fIEfils_wrapped_data *,
9778 	uint8_t *,
9779 	uint32_t,
9780 	uint32_t*);
9781 
9782 uint32_t dot11f_get_packed_ie_fils_wrapped_data(
9783 	tpAniSirGlobal,
9784 	tDot11fIEfils_wrapped_data *,
9785 	uint32_t*);
9786 
9787 #ifdef __cplusplus
9788 }; /* End extern "C". */
9789 #endif /* C++ */
9790 
9791 /* EID 242 (0xf2) */
9792 typedef struct sDot11fIEfragment_ie {
9793 	uint8_t             present;
9794 	uint8_t             num_data;
9795 	uint8_t             data[255];
9796 } tDot11fIEfragment_ie;
9797 
9798 #define DOT11F_EID_FRAGMENT_IE (242)
9799 
9800 /* N.B. These #defines do *not* include the EID & length */
9801 #define DOT11F_IE_FRAGMENT_IE_MIN_LEN (0)
9802 
9803 #define DOT11F_IE_FRAGMENT_IE_MAX_LEN (255)
9804 
9805 #ifdef __cplusplus
9806 extern "C" {
9807 #endif /* C++ */
9808 __must_check uint32_t dot11f_unpack_ie_fragment_ie(
9809 	tpAniSirGlobal,
9810 	uint8_t *,
9811 	uint8_t,
9812 	tDot11fIEfragment_ie*,
9813 	bool);
9814 
9815 uint32_t dot11f_pack_ie_fragment_ie(
9816 	tpAniSirGlobal,
9817 	tDot11fIEfragment_ie *,
9818 	uint8_t *,
9819 	uint32_t,
9820 	uint32_t*);
9821 
9822 uint32_t dot11f_get_packed_ie_fragment_ie(
9823 	tpAniSirGlobal,
9824 	tDot11fIEfragment_ie *,
9825 	uint32_t*);
9826 
9827 #ifdef __cplusplus
9828 }; /* End extern "C". */
9829 #endif /* C++ */
9830 
9831 /* EID 255 (0xff) Extended EID 59 (0x3b) */
9832 typedef struct sDot11fIEhe_6ghz_band_cap {
9833 	uint8_t             present;
9834 	uint16_t min_mpdu_start_spacing:3;
9835 	uint16_t    max_ampdu_len_exp:3;
9836 	uint16_t         max_mpdu_len:3;
9837 	uint16_t          sm_pow_save:2;
9838 	uint16_t         rd_responder:1;
9839 	uint16_t rx_ant_pattern_consistency:1;
9840 	uint16_t tx_ant_pattern_consistency:1;
9841 	uint16_t             reserved:2;
9842 } tDot11fIEhe_6ghz_band_cap;
9843 
9844 #define DOT11F_EID_HE_6GHZ_BAND_CAP (255)
9845 
9846 /* N.B. These #defines do *not* include the EID & length */
9847 #define DOT11F_IE_HE_6GHZ_BAND_CAP_MIN_LEN (2)
9848 
9849 #define DOT11F_IE_HE_6GHZ_BAND_CAP_MAX_LEN (2)
9850 
9851 #ifdef __cplusplus
9852 extern "C" {
9853 #endif /* C++ */
9854 __must_check uint32_t dot11f_unpack_ie_he_6ghz_band_cap(
9855 	tpAniSirGlobal,
9856 	uint8_t *,
9857 	uint8_t,
9858 	tDot11fIEhe_6ghz_band_cap*,
9859 	bool);
9860 
9861 uint32_t dot11f_pack_ie_he_6ghz_band_cap(
9862 	tpAniSirGlobal,
9863 	tDot11fIEhe_6ghz_band_cap *,
9864 	uint8_t *,
9865 	uint32_t,
9866 	uint32_t*);
9867 
9868 uint32_t dot11f_get_packed_ie_he_6ghz_band_cap(
9869 	tpAniSirGlobal,
9870 	tDot11fIEhe_6ghz_band_cap *,
9871 	uint32_t*);
9872 
9873 #ifdef __cplusplus
9874 }; /* End extern "C". */
9875 #endif /* C++ */
9876 
9877 /* EID 255 (0xff) Extended EID 35 (0x23) */
9878 typedef struct sDot11fIEhe_cap {
9879 	uint8_t             present;
9880 	uint32_t               htc_he:1;
9881 	uint32_t          twt_request:1;
9882 	uint32_t        twt_responder:1;
9883 	uint32_t        fragmentation:2;
9884 	uint32_t max_num_frag_msdu_amsdu_exp:3;
9885 	uint32_t        min_frag_size:2;
9886 	uint32_t  trigger_frm_mac_pad:2;
9887 	uint32_t multi_tid_aggr_rx_supp:3;
9888 	uint32_t   he_link_adaptation:2;
9889 	uint32_t              all_ack:1;
9890 	uint32_t      trigd_rsp_sched:1;
9891 	uint32_t                a_bsr:1;
9892 	uint32_t        broadcast_twt:1;
9893 	uint32_t      ba_32bit_bitmap:1;
9894 	uint32_t           mu_cascade:1;
9895 	uint32_t ack_enabled_multitid:1;
9896 	uint32_t             reserved:1;
9897 	uint32_t           omi_a_ctrl:1;
9898 	uint32_t             ofdma_ra:1;
9899 	uint32_t max_ampdu_len_exp_ext:2;
9900 	uint32_t           amsdu_frag:1;
9901 	uint32_t       flex_twt_sched:1;
9902 	uint32_t        rx_ctrl_frame:1;
9903 	uint16_t      bsrp_ampdu_aggr:1;
9904 	uint16_t                  qtp:1;
9905 	uint16_t                a_bqr:1;
9906 	uint16_t spatial_reuse_param_rspder:1;
9907 	uint16_t    ndp_feedback_supp:1;
9908 	uint16_t             ops_supp:1;
9909 	uint16_t       amsdu_in_ampdu:1;
9910 	uint16_t multi_tid_aggr_tx_supp:3;
9911 	uint16_t he_sub_ch_sel_tx_supp:1;
9912 	uint16_t ul_2x996_tone_ru_supp:1;
9913 	uint16_t om_ctrl_ul_mu_data_dis_rx:1;
9914 	uint16_t      he_dynamic_smps:1;
9915 	uint16_t punctured_sounding_supp:1;
9916 	uint16_t ht_vht_trg_frm_rx_supp:1;
9917 	uint32_t            reserved2:1;
9918 	uint32_t         chan_width_0:1;
9919 	uint32_t         chan_width_1:1;
9920 	uint32_t         chan_width_2:1;
9921 	uint32_t         chan_width_3:1;
9922 	uint32_t         chan_width_4:1;
9923 	uint32_t         chan_width_5:1;
9924 	uint32_t         chan_width_6:1;
9925 	uint32_t  rx_pream_puncturing:4;
9926 	uint32_t         device_class:1;
9927 	uint32_t          ldpc_coding:1;
9928 	uint32_t he_1x_ltf_800_gi_ppdu:1;
9929 	uint32_t midamble_tx_rx_max_nsts:2;
9930 	uint32_t he_4x_ltf_3200_gi_ndp:1;
9931 	uint32_t tb_ppdu_tx_stbc_lt_80mhz:1;
9932 	uint32_t     rx_stbc_lt_80mhz:1;
9933 	uint32_t              doppler:2;
9934 	uint32_t                ul_mu:2;
9935 	uint32_t           dcm_enc_tx:3;
9936 	uint32_t           dcm_enc_rx:3;
9937 	uint32_t             ul_he_mu:1;
9938 	uint32_t        su_beamformer:1;
9939 	uint32_t        su_beamformee:1;
9940 	uint32_t        mu_beamformer:1;
9941 	uint32_t       bfee_sts_lt_80:3;
9942 	uint32_t       bfee_sts_gt_80:3;
9943 	uint32_t   num_sounding_lt_80:3;
9944 	uint32_t   num_sounding_gt_80:3;
9945 	uint32_t   su_feedback_tone16:1;
9946 	uint32_t   mu_feedback_tone16:1;
9947 	uint32_t          codebook_su:1;
9948 	uint32_t          codebook_mu:1;
9949 	uint32_t beamforming_feedback:3;
9950 	uint32_t        he_er_su_ppdu:1;
9951 	uint32_t   dl_mu_mimo_part_bw:1;
9952 	uint32_t         ppet_present:1;
9953 	uint32_t                  srp:1;
9954 	uint32_t          power_boost:1;
9955 	uint32_t     he_ltf_800_gi_4x:1;
9956 	uint32_t               max_nc:3;
9957 	uint32_t tb_ppdu_tx_stbc_gt_80mhz:1;
9958 	uint32_t     rx_stbc_gt_80mhz:1;
9959 	uint16_t  er_he_ltf_800_gi_4x:1;
9960 	uint16_t he_ppdu_20_in_40Mhz_2G:1;
9961 	uint16_t he_ppdu_20_in_160_80p80Mhz:1;
9962 	uint16_t he_ppdu_80_in_160_80p80Mhz:1;
9963 	uint16_t      er_1x_he_ltf_gi:1;
9964 	uint16_t midamble_tx_rx_1x_he_ltf:1;
9965 	uint16_t           dcm_max_bw:2;
9966 	uint16_t longer_than_16_he_sigb_ofdm_sym:1;
9967 	uint16_t non_trig_cqi_feedback:1;
9968 	uint16_t tx_1024_qam_lt_242_tone_ru:1;
9969 	uint16_t rx_1024_qam_lt_242_tone_ru:1;
9970 	uint16_t rx_full_bw_su_he_mu_compress_sigb:1;
9971 	uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1;
9972 	uint16_t            reserved3:2;
9973 	uint8_t             reserved4;
9974 	uint16_t            rx_he_mcs_map_lt_80;
9975 	uint16_t            tx_he_mcs_map_lt_80;
9976 	uint8_t             rx_he_mcs_map_160[1][2];
9977 	uint8_t             tx_he_mcs_map_160[1][2];
9978 	uint8_t             rx_he_mcs_map_80_80[1][2];
9979 	uint8_t             tx_he_mcs_map_80_80[1][2];
9980 	union {
9981 		struct {
9982 			uint8_t num_ppe_th;
9983 			uint8_t ppe_th[25];
9984 		} ppe_threshold; /* ppet_present = 1 */
9985 	} ppet;
9986 } tDot11fIEhe_cap;
9987 
9988 #define DOT11F_EID_HE_CAP (255)
9989 
9990 /* N.B. These #defines do *not* include the EID & length */
9991 #define DOT11F_IE_HE_CAP_MIN_LEN (21)
9992 
9993 #define DOT11F_IE_HE_CAP_MAX_LEN (54)
9994 
9995 #ifdef __cplusplus
9996 extern "C" {
9997 #endif /* C++ */
9998 __must_check uint32_t dot11f_unpack_ie_he_cap(
9999 	tpAniSirGlobal,
10000 	uint8_t *,
10001 	uint8_t,
10002 	tDot11fIEhe_cap*,
10003 	bool);
10004 
10005 uint32_t dot11f_pack_ie_he_cap(
10006 	tpAniSirGlobal,
10007 	tDot11fIEhe_cap *,
10008 	uint8_t *,
10009 	uint32_t,
10010 	uint32_t*);
10011 
10012 uint32_t dot11f_get_packed_ie_he_cap(
10013 	tpAniSirGlobal,
10014 	tDot11fIEhe_cap *,
10015 	uint32_t*);
10016 
10017 #ifdef __cplusplus
10018 }; /* End extern "C". */
10019 #endif /* C++ */
10020 
10021 /* EID 255 (0xff) Extended EID 36 (0x24) */
10022 typedef struct sDot11fIEhe_op {
10023 	uint8_t             present;
10024 	uint16_t           default_pe:3;
10025 	uint16_t         twt_required:1;
10026 	uint16_t   txop_rts_threshold:10;
10027 	uint16_t     vht_oper_present:1;
10028 	uint16_t       co_located_bss:1;
10029 	uint8_t        er_su_disable:1;
10030 	uint8_t oper_info_6g_present:1;
10031 	uint8_t            reserved2:6;
10032 	uint8_t            bss_color:6;
10033 	uint8_t      partial_bss_col:1;
10034 	uint8_t     bss_col_disabled:1;
10035 	uint8_t             basic_mcs_nss[2];
10036 	union {
10037 		struct {
10038 			uint8_t chan_width;
10039 			uint8_t center_freq_seg0;
10040 			uint8_t center_freq_seg1;
10041 		} info; /* vht_oper_present = 1 */
10042 	} vht_oper;
10043 	union {
10044 		struct {
10045 			uint8_t data;
10046 		} info; /* co_located_bss = 1 */
10047 	} maxbssid_ind;
10048 	union {
10049 		struct {
10050 			uint8_t primary_ch;
10051 			uint8_t  ch_width:2;
10052 			uint8_t  dup_bcon:1;
10053 			uint8_t  reg_info:3;
10054 			uint8_t  reserved:2;
10055 			uint8_t center_freq_seg0;
10056 			uint8_t center_freq_seg1;
10057 			uint8_t min_rate;
10058 		} info; /* oper_info_6g_present = 1 */
10059 	} oper_info_6g;
10060 } tDot11fIEhe_op;
10061 
10062 #define DOT11F_EID_HE_OP (255)
10063 
10064 /* N.B. These #defines do *not* include the EID & length */
10065 #define DOT11F_IE_HE_OP_MIN_LEN (6)
10066 
10067 #define DOT11F_IE_HE_OP_MAX_LEN (15)
10068 
10069 #ifdef __cplusplus
10070 extern "C" {
10071 #endif /* C++ */
10072 __must_check uint32_t dot11f_unpack_ie_he_op(
10073 	tpAniSirGlobal,
10074 	uint8_t *,
10075 	uint8_t,
10076 	tDot11fIEhe_op*,
10077 	bool);
10078 
10079 uint32_t dot11f_pack_ie_he_op(
10080 	tpAniSirGlobal,
10081 	tDot11fIEhe_op *,
10082 	uint8_t *,
10083 	uint32_t,
10084 	uint32_t*);
10085 
10086 uint32_t dot11f_get_packed_ie_he_op(
10087 	tpAniSirGlobal,
10088 	tDot11fIEhe_op *,
10089 	uint32_t*);
10090 
10091 #ifdef __cplusplus
10092 }; /* End extern "C". */
10093 #endif /* C++ */
10094 
10095 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x10} */
10096 typedef struct sDot11fIEhs20vendor_ie {
10097 	uint8_t             present;
10098 	uint8_t             dgaf_dis:1;
10099 	uint8_t        hs_id_present:2;
10100 	uint8_t             reserved:1;
10101 	uint8_t          release_num:4;
10102 	union {
10103 		struct {
10104 			uint16_t pps_mo_id;
10105 		} pps_mo; /* hs_id_present = 1 */
10106 		struct {
10107 			uint16_t anqp_domain_id;
10108 		} anqp_domain; /* hs_id_present = 2 */
10109 	} hs_id;
10110 } tDot11fIEhs20vendor_ie;
10111 
10112 #define DOT11F_EID_HS20VENDOR_IE (221)
10113 
10114 /* N.B. These #defines do *not* include the EID & length */
10115 #define DOT11F_IE_HS20VENDOR_IE_MIN_LEN (5)
10116 
10117 #define DOT11F_IE_HS20VENDOR_IE_MAX_LEN (7)
10118 
10119 #ifdef __cplusplus
10120 extern "C" {
10121 #endif /* C++ */
10122 __must_check uint32_t dot11f_unpack_ie_hs20vendor_ie(
10123 	tpAniSirGlobal,
10124 	uint8_t *,
10125 	uint8_t,
10126 	tDot11fIEhs20vendor_ie*,
10127 	bool);
10128 
10129 uint32_t dot11f_pack_ie_hs20vendor_ie(
10130 	tpAniSirGlobal,
10131 	tDot11fIEhs20vendor_ie *,
10132 	uint8_t *,
10133 	uint32_t,
10134 	uint32_t*);
10135 
10136 uint32_t dot11f_get_packed_ie_hs20vendor_ie(
10137 	tpAniSirGlobal,
10138 	tDot11fIEhs20vendor_ie *,
10139 	uint32_t*);
10140 
10141 #ifdef __cplusplus
10142 }; /* End extern "C". */
10143 #endif /* C++ */
10144 
10145 /* EID 72 (0x48) */
10146 typedef struct sDot11fIEht2040_bss_coexistence {
10147 	uint8_t             present;
10148 	uint8_t         info_request:1;
10149 	uint8_t forty_mhz_intolerant:1;
10150 	uint8_t twenty_mhz_bsswidth_req:1;
10151 	uint8_t obss_scan_exemption_req:1;
10152 	uint8_t obss_scan_exemption_grant:1;
10153 	uint8_t               unused:3;
10154 } tDot11fIEht2040_bss_coexistence;
10155 
10156 #define DOT11F_EID_HT2040_BSS_COEXISTENCE (72)
10157 
10158 /* N.B. These #defines do *not* include the EID & length */
10159 #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MIN_LEN (1)
10160 
10161 #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MAX_LEN (1)
10162 
10163 #ifdef __cplusplus
10164 extern "C" {
10165 #endif /* C++ */
10166 __must_check uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(
10167 	tpAniSirGlobal,
10168 	uint8_t *,
10169 	uint8_t,
10170 	tDot11fIEht2040_bss_coexistence*,
10171 	bool);
10172 
10173 uint32_t dot11f_pack_ie_ht2040_bss_coexistence(
10174 	tpAniSirGlobal,
10175 	tDot11fIEht2040_bss_coexistence *,
10176 	uint8_t *,
10177 	uint32_t,
10178 	uint32_t*);
10179 
10180 uint32_t dot11f_get_packed_ie_ht2040_bss_coexistence(
10181 	tpAniSirGlobal,
10182 	tDot11fIEht2040_bss_coexistence *,
10183 	uint32_t*);
10184 
10185 #ifdef __cplusplus
10186 }; /* End extern "C". */
10187 #endif /* C++ */
10188 
10189 /* EID 73 (0x49) */
10190 typedef struct sDot11fIEht2040_bss_intolerant_report {
10191 	uint8_t             present;
10192 	uint8_t             operating_class;
10193 	uint8_t             num_channel_list;
10194 	uint8_t             channel_list[50];
10195 } tDot11fIEht2040_bss_intolerant_report;
10196 
10197 #define DOT11F_EID_HT2040_BSS_INTOLERANT_REPORT (73)
10198 
10199 /* N.B. These #defines do *not* include the EID & length */
10200 #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MIN_LEN (1)
10201 
10202 #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MAX_LEN (51)
10203 
10204 #ifdef __cplusplus
10205 extern "C" {
10206 #endif /* C++ */
10207 __must_check uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(
10208 	tpAniSirGlobal,
10209 	uint8_t *,
10210 	uint8_t,
10211 	tDot11fIEht2040_bss_intolerant_report*,
10212 	bool);
10213 
10214 uint32_t dot11f_pack_ie_ht2040_bss_intolerant_report(
10215 	tpAniSirGlobal,
10216 	tDot11fIEht2040_bss_intolerant_report *,
10217 	uint8_t *,
10218 	uint32_t,
10219 	uint32_t*);
10220 
10221 uint32_t dot11f_get_packed_ie_ht2040_bss_intolerant_report(
10222 	tpAniSirGlobal,
10223 	tDot11fIEht2040_bss_intolerant_report *,
10224 	uint32_t*);
10225 
10226 #ifdef __cplusplus
10227 }; /* End extern "C". */
10228 #endif /* C++ */
10229 
10230 /* EID 255 (0xff) Extended EID 52 (0x34) */
10231 typedef struct sDot11fIEmax_chan_switch_time {
10232 	uint8_t             present;
10233 	uint8_t             switch_time[3];
10234 } tDot11fIEmax_chan_switch_time;
10235 
10236 #define DOT11F_EID_MAX_CHAN_SWITCH_TIME (255)
10237 
10238 /* N.B. These #defines do *not* include the EID & length */
10239 #define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MIN_LEN (3)
10240 
10241 #define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MAX_LEN (3)
10242 
10243 #ifdef __cplusplus
10244 extern "C" {
10245 #endif /* C++ */
10246 __must_check uint32_t dot11f_unpack_ie_max_chan_switch_time(
10247 	tpAniSirGlobal,
10248 	uint8_t *,
10249 	uint8_t,
10250 	tDot11fIEmax_chan_switch_time*,
10251 	bool);
10252 
10253 uint32_t dot11f_pack_ie_max_chan_switch_time(
10254 	tpAniSirGlobal,
10255 	tDot11fIEmax_chan_switch_time *,
10256 	uint8_t *,
10257 	uint32_t,
10258 	uint32_t*);
10259 
10260 uint32_t dot11f_get_packed_ie_max_chan_switch_time(
10261 	tpAniSirGlobal,
10262 	tDot11fIEmax_chan_switch_time *,
10263 	uint32_t*);
10264 
10265 #ifdef __cplusplus
10266 }; /* End extern "C". */
10267 #endif /* C++ */
10268 
10269 /* EID 255 (0xff) Extended EID 107 (0x6b) */
10270 typedef struct sDot11fIEmlo_ie {
10271 	uint8_t             present;
10272 	uint8_t             num_data;
10273 	uint8_t             data[255];
10274 } tDot11fIEmlo_ie;
10275 
10276 #define DOT11F_EID_MLO_IE (255)
10277 
10278 /* N.B. These #defines do *not* include the EID & length */
10279 #define DOT11F_IE_MLO_IE_MIN_LEN (9)
10280 
10281 #define DOT11F_IE_MLO_IE_MAX_LEN (255)
10282 
10283 #ifdef __cplusplus
10284 extern "C" {
10285 #endif /* C++ */
10286 __must_check uint32_t dot11f_unpack_ie_mlo_ie(
10287 	tpAniSirGlobal,
10288 	uint8_t *,
10289 	uint8_t,
10290 	tDot11fIEmlo_ie*,
10291 	bool);
10292 
10293 uint32_t dot11f_pack_ie_mlo_ie(
10294 	tpAniSirGlobal,
10295 	tDot11fIEmlo_ie *,
10296 	uint8_t *,
10297 	uint32_t,
10298 	uint32_t*);
10299 
10300 uint32_t dot11f_get_packed_ie_mlo_ie(
10301 	tpAniSirGlobal,
10302 	tDot11fIEmlo_ie *,
10303 	uint32_t*);
10304 
10305 #ifdef __cplusplus
10306 }; /* End extern "C". */
10307 #endif /* C++ */
10308 
10309 /* EID 255 (0xff) Extended EID 38 (0x26) */
10310 typedef struct sDot11fIEmu_edca_param_set {
10311 	uint8_t             present;
10312 	uint8_t             qos;
10313 	uint8_t           acbe_aifsn:4;
10314 	uint8_t             acbe_acm:1;
10315 	uint8_t             acbe_aci:2;
10316 	uint8_t              unused1:1;
10317 	uint8_t          acbe_acwmin:4;
10318 	uint8_t          acbe_acwmax:4;
10319 	uint8_t             acbe_muedca_timer;
10320 	uint8_t           acbk_aifsn:4;
10321 	uint8_t             acbk_acm:1;
10322 	uint8_t             acbk_aci:2;
10323 	uint8_t              unused2:1;
10324 	uint8_t          acbk_acwmin:4;
10325 	uint8_t          acbk_acwmax:4;
10326 	uint8_t             acbk_muedca_timer;
10327 	uint8_t           acvi_aifsn:4;
10328 	uint8_t             acvi_acm:1;
10329 	uint8_t             acvi_aci:2;
10330 	uint8_t              unused3:1;
10331 	uint8_t          acvi_acwmin:4;
10332 	uint8_t          acvi_acwmax:4;
10333 	uint8_t             acvi_muedca_timer;
10334 	uint8_t           acvo_aifsn:4;
10335 	uint8_t             acvo_acm:1;
10336 	uint8_t             acvo_aci:2;
10337 	uint8_t              unused4:1;
10338 	uint8_t          acvo_acwmin:4;
10339 	uint8_t          acvo_acwmax:4;
10340 	uint8_t             acvo_muedca_timer;
10341 } tDot11fIEmu_edca_param_set;
10342 
10343 #define DOT11F_EID_MU_EDCA_PARAM_SET (255)
10344 
10345 /* N.B. These #defines do *not* include the EID & length */
10346 #define DOT11F_IE_MU_EDCA_PARAM_SET_MIN_LEN (13)
10347 
10348 #define DOT11F_IE_MU_EDCA_PARAM_SET_MAX_LEN (13)
10349 
10350 #ifdef __cplusplus
10351 extern "C" {
10352 #endif /* C++ */
10353 __must_check uint32_t dot11f_unpack_ie_mu_edca_param_set(
10354 	tpAniSirGlobal,
10355 	uint8_t *,
10356 	uint8_t,
10357 	tDot11fIEmu_edca_param_set*,
10358 	bool);
10359 
10360 uint32_t dot11f_pack_ie_mu_edca_param_set(
10361 	tpAniSirGlobal,
10362 	tDot11fIEmu_edca_param_set *,
10363 	uint8_t *,
10364 	uint32_t,
10365 	uint32_t*);
10366 
10367 uint32_t dot11f_get_packed_ie_mu_edca_param_set(
10368 	tpAniSirGlobal,
10369 	tDot11fIEmu_edca_param_set *,
10370 	uint32_t*);
10371 
10372 #ifdef __cplusplus
10373 }; /* End extern "C". */
10374 #endif /* C++ */
10375 
10376 /* EID 255 (0xff) Extended EID 56 (0x38) */
10377 typedef struct sDot11fIEnon_inheritance {
10378 	uint8_t             present;
10379 	uint8_t             num_data;
10380 	uint8_t             data[255];
10381 } tDot11fIEnon_inheritance;
10382 
10383 #define DOT11F_EID_NON_INHERITANCE (255)
10384 
10385 /* N.B. These #defines do *not* include the EID & length */
10386 #define DOT11F_IE_NON_INHERITANCE_MIN_LEN (0)
10387 
10388 #define DOT11F_IE_NON_INHERITANCE_MAX_LEN (255)
10389 
10390 #ifdef __cplusplus
10391 extern "C" {
10392 #endif /* C++ */
10393 __must_check uint32_t dot11f_unpack_ie_non_inheritance(
10394 	tpAniSirGlobal,
10395 	uint8_t *,
10396 	uint8_t,
10397 	tDot11fIEnon_inheritance*,
10398 	bool);
10399 
10400 uint32_t dot11f_pack_ie_non_inheritance(
10401 	tpAniSirGlobal,
10402 	tDot11fIEnon_inheritance *,
10403 	uint8_t *,
10404 	uint32_t,
10405 	uint32_t*);
10406 
10407 uint32_t dot11f_get_packed_ie_non_inheritance(
10408 	tpAniSirGlobal,
10409 	tDot11fIEnon_inheritance *,
10410 	uint32_t*);
10411 
10412 #ifdef __cplusplus
10413 }; /* End extern "C". */
10414 #endif /* C++ */
10415 
10416 /* EID 255 (0xff) Extended EID 54 (0x36) */
10417 typedef struct sDot11fIEoci {
10418 	uint8_t             present;
10419 	uint8_t             op_class;
10420 	uint8_t             prim_ch_num;
10421 	uint8_t             freq_seg_1_ch_num;
10422 } tDot11fIEoci;
10423 
10424 #define DOT11F_EID_OCI (255)
10425 
10426 /* N.B. These #defines do *not* include the EID & length */
10427 #define DOT11F_IE_OCI_MIN_LEN (3)
10428 
10429 #define DOT11F_IE_OCI_MAX_LEN (3)
10430 
10431 #ifdef __cplusplus
10432 extern "C" {
10433 #endif /* C++ */
10434 __must_check uint32_t dot11f_unpack_ie_oci(
10435 	tpAniSirGlobal,
10436 	uint8_t *,
10437 	uint8_t,
10438 	tDot11fIEoci*,
10439 	bool);
10440 
10441 uint32_t dot11f_pack_ie_oci(
10442 	tpAniSirGlobal,
10443 	tDot11fIEoci *,
10444 	uint8_t *,
10445 	uint32_t,
10446 	uint32_t*);
10447 
10448 uint32_t dot11f_get_packed_ie_oci(
10449 	tpAniSirGlobal,
10450 	tDot11fIEoci *,
10451 	uint32_t*);
10452 
10453 #ifdef __cplusplus
10454 }; /* End extern "C". */
10455 #endif /* C++ */
10456 
10457 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x12} */
10458 typedef struct sDot11fIEosen_ie {
10459 	uint8_t             present;
10460 	uint8_t             num_data;
10461 	uint8_t             data[255];
10462 } tDot11fIEosen_ie;
10463 
10464 #define DOT11F_EID_OSEN_IE (221)
10465 
10466 /* N.B. These #defines do *not* include the EID & length */
10467 #define DOT11F_IE_OSEN_IE_MIN_LEN (4)
10468 
10469 #define DOT11F_IE_OSEN_IE_MAX_LEN (259)
10470 
10471 #ifdef __cplusplus
10472 extern "C" {
10473 #endif /* C++ */
10474 __must_check uint32_t dot11f_unpack_ie_osen_ie(
10475 	tpAniSirGlobal,
10476 	uint8_t *,
10477 	uint8_t,
10478 	tDot11fIEosen_ie*,
10479 	bool);
10480 
10481 uint32_t dot11f_pack_ie_osen_ie(
10482 	tpAniSirGlobal,
10483 	tDot11fIEosen_ie *,
10484 	uint8_t *,
10485 	uint32_t,
10486 	uint32_t*);
10487 
10488 uint32_t dot11f_get_packed_ie_osen_ie(
10489 	tpAniSirGlobal,
10490 	tDot11fIEosen_ie *,
10491 	uint32_t*);
10492 
10493 #ifdef __cplusplus
10494 }; /* End extern "C". */
10495 #endif /* C++ */
10496 
10497 /* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} (Multi-IE) */
10498 typedef struct sDot11fIEqcn_ie {
10499 	uint8_t             present;
10500 	tDot11fTLVqcn_version qcn_version;
10501 	tDot11fTLVvht_mcs11_attr vht_mcs11_attr;
10502 	tDot11fTLVhe_400ns_sgi_attr he_400ns_sgi_attr;
10503 	tDot11fTLVhe_2xltf_160mhz_supp he_2xltf_160mhz_supp;
10504 	tDot11fTLVhe_dl_ofdma_attr he_dl_ofdma_attr;
10505 	tDot11fTLVtrans_reasonp_attr trans_reasonp_attr;
10506 	tDot11fTLVtrans_rejectp_attr trans_rejectp_attr;
10507 	tDot11fTLVhe_dl_mumimo_attr he_dl_mumimo_attr;
10508 	tDot11fTLVhe_mcs13_attr he_mcs13_attr;
10509 	tDot11fTLVedca_pifs_param_attr edca_pifs_param_attr;
10510 	tDot11fTLVecsa_target_tsf_info_attr ecsa_target_tsf_info_attr;
10511 } tDot11fIEqcn_ie;
10512 
10513 #define DOT11F_EID_QCN_IE (221)
10514 
10515 /* N.B. These #defines do *not* include the EID & length */
10516 #define DOT11F_IE_QCN_IE_MIN_LEN (4)
10517 
10518 #define DOT11F_IE_QCN_IE_MAX_LEN (53)
10519 
10520 #ifdef __cplusplus
10521 extern "C" {
10522 #endif /* C++ */
10523 __must_check uint32_t dot11f_unpack_ie_qcn_ie(
10524 	tpAniSirGlobal,
10525 	uint8_t *,
10526 	uint8_t,
10527 	tDot11fIEqcn_ie*,
10528 	bool);
10529 
10530 uint32_t dot11f_pack_ie_qcn_ie(
10531 	tpAniSirGlobal,
10532 	tDot11fIEqcn_ie *,
10533 	uint8_t *,
10534 	uint32_t,
10535 	uint32_t*);
10536 
10537 uint32_t dot11f_get_packed_ie_qcn_ie(
10538 	tpAniSirGlobal,
10539 	tDot11fIEqcn_ie *,
10540 	uint32_t*);
10541 
10542 #ifdef __cplusplus
10543 }; /* End extern "C". */
10544 #endif /* C++ */
10545 
10546 /* EID 201 (0xc9) */
10547 typedef struct sDot11fIEreduced_neighbor_report {
10548 	uint8_t             present;
10549 	uint16_t            tbtt_type:2;
10550 	uint16_t filtered_neighbor_ap:1;
10551 	uint16_t             reserved:1;
10552 	uint16_t      tbtt_info_count:4;
10553 	uint16_t        tbtt_info_len:8;
10554 	uint8_t             op_class;
10555 	uint8_t             channel_num;
10556 	union {
10557 		struct {
10558 			uint8_t tbtt_offset;
10559 		} tbtt_info_1; /* tbtt_info_len = 1 */
10560 		struct {
10561 			uint8_t tbtt_offset;
10562 			uint8_t bss_params;
10563 		} tbtt_info_2; /* tbtt_info_len = 2 */
10564 		struct {
10565 			uint8_t tbtt_offset;
10566 			uint32_t short_ssid;
10567 		} tbtt_info_5; /* tbtt_info_len = 5 */
10568 		struct {
10569 			uint8_t tbtt_offset;
10570 			uint32_t short_ssid;
10571 			uint8_t bss_params;
10572 		} tbtt_info_6; /* tbtt_info_len = 6 */
10573 		struct {
10574 			uint8_t tbtt_offset;
10575 			uint8_t bssid[6];
10576 		} tbtt_info_7; /* tbtt_info_len = 7 */
10577 		struct {
10578 			uint8_t tbtt_offset;
10579 			uint8_t bssid[6];
10580 			uint8_t bss_params;
10581 		} tbtt_info_8; /* tbtt_info_len = 8 */
10582 		struct {
10583 			uint8_t tbtt_offset;
10584 			uint8_t bssid[6];
10585 			uint8_t bss_params;
10586 			uint8_t psd_20mhz;
10587 		} tbtt_info_9; /* tbtt_info_len = 9 */
10588 		struct {
10589 			uint8_t tbtt_offset;
10590 			uint8_t bssid[6];
10591 			uint32_t short_ssid;
10592 		} tbtt_info_11; /* tbtt_info_len = 11 */
10593 		struct {
10594 			uint8_t tbtt_offset;
10595 			uint8_t bssid[6];
10596 			uint32_t short_ssid;
10597 			uint8_t bss_params;
10598 		} tbtt_info_12; /* tbtt_info_len = 12 */
10599 		struct {
10600 			uint8_t tbtt_offset;
10601 			uint8_t bssid[6];
10602 			uint32_t short_ssid;
10603 			uint8_t bss_params;
10604 			uint8_t psd_20mhz;
10605 		} tbtt_info_13; /* tbtt_info_len = 13 */
10606 		struct {
10607 			uint8_t tbtt_offset;
10608 			uint8_t bssid[6];
10609 			uint32_t short_ssid;
10610 			uint8_t bss_params;
10611 			uint8_t psd_20mhz;
10612 			uint8_t mld_id;
10613 			uint16_t               link_id:4;
10614 			uint16_t  bss_param_change_cnt:8;
10615 			uint16_t  all_updates_included:1;
10616 			uint16_t              reserved:3;
10617 		} tbtt_info_16; /* tbtt_info_len = 16 */
10618 	} tbtt_info;
10619 } tDot11fIEreduced_neighbor_report;
10620 
10621 #define DOT11F_EID_REDUCED_NEIGHBOR_REPORT (201)
10622 
10623 /* N.B. These #defines do *not* include the EID & length */
10624 #define DOT11F_IE_REDUCED_NEIGHBOR_REPORT_MIN_LEN (5)
10625 
10626 #define DOT11F_IE_REDUCED_NEIGHBOR_REPORT_MAX_LEN (20)
10627 
10628 #ifdef __cplusplus
10629 extern "C" {
10630 #endif /* C++ */
10631 __must_check uint32_t dot11f_unpack_ie_reduced_neighbor_report(
10632 	tpAniSirGlobal,
10633 	uint8_t *,
10634 	uint8_t,
10635 	tDot11fIEreduced_neighbor_report*,
10636 	bool);
10637 
10638 uint32_t dot11f_pack_ie_reduced_neighbor_report(
10639 	tpAniSirGlobal,
10640 	tDot11fIEreduced_neighbor_report *,
10641 	uint8_t *,
10642 	uint32_t,
10643 	uint32_t*);
10644 
10645 uint32_t dot11f_get_packed_ie_reduced_neighbor_report(
10646 	tpAniSirGlobal,
10647 	tDot11fIEreduced_neighbor_report *,
10648 	uint32_t*);
10649 
10650 #ifdef __cplusplus
10651 }; /* End extern "C". */
10652 #endif /* C++ */
10653 
10654 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x1d} */
10655 typedef struct sDot11fIEroaming_consortium_sel {
10656 	uint8_t             present;
10657 	uint8_t             num_data;
10658 	uint8_t             data[255];
10659 } tDot11fIEroaming_consortium_sel;
10660 
10661 #define DOT11F_EID_ROAMING_CONSORTIUM_SEL (221)
10662 
10663 /* N.B. These #defines do *not* include the EID & length */
10664 #define DOT11F_IE_ROAMING_CONSORTIUM_SEL_MIN_LEN (4)
10665 
10666 #define DOT11F_IE_ROAMING_CONSORTIUM_SEL_MAX_LEN (259)
10667 
10668 #ifdef __cplusplus
10669 extern "C" {
10670 #endif /* C++ */
10671 __must_check uint32_t dot11f_unpack_ie_roaming_consortium_sel(
10672 	tpAniSirGlobal,
10673 	uint8_t *,
10674 	uint8_t,
10675 	tDot11fIEroaming_consortium_sel*,
10676 	bool);
10677 
10678 uint32_t dot11f_pack_ie_roaming_consortium_sel(
10679 	tpAniSirGlobal,
10680 	tDot11fIEroaming_consortium_sel *,
10681 	uint8_t *,
10682 	uint32_t,
10683 	uint32_t*);
10684 
10685 uint32_t dot11f_get_packed_ie_roaming_consortium_sel(
10686 	tpAniSirGlobal,
10687 	tDot11fIEroaming_consortium_sel *,
10688 	uint32_t*);
10689 
10690 #ifdef __cplusplus
10691 }; /* End extern "C". */
10692 #endif /* C++ */
10693 
10694 /* EID 62 (0x3e) */
10695 typedef struct sDot11fIEsec_chan_offset_ele {
10696 	uint8_t             present;
10697 	uint8_t             secondaryChannelOffset;
10698 } tDot11fIEsec_chan_offset_ele;
10699 
10700 #define DOT11F_EID_SEC_CHAN_OFFSET_ELE (62)
10701 
10702 /* N.B. These #defines do *not* include the EID & length */
10703 #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MIN_LEN (1)
10704 
10705 #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MAX_LEN (1)
10706 
10707 #ifdef __cplusplus
10708 extern "C" {
10709 #endif /* C++ */
10710 __must_check uint32_t dot11f_unpack_ie_sec_chan_offset_ele(
10711 	tpAniSirGlobal,
10712 	uint8_t *,
10713 	uint8_t,
10714 	tDot11fIEsec_chan_offset_ele*,
10715 	bool);
10716 
10717 uint32_t dot11f_pack_ie_sec_chan_offset_ele(
10718 	tpAniSirGlobal,
10719 	tDot11fIEsec_chan_offset_ele *,
10720 	uint8_t *,
10721 	uint32_t,
10722 	uint32_t*);
10723 
10724 uint32_t dot11f_get_packed_ie_sec_chan_offset_ele(
10725 	tpAniSirGlobal,
10726 	tDot11fIEsec_chan_offset_ele *,
10727 	uint32_t*);
10728 
10729 #ifdef __cplusplus
10730 }; /* End extern "C". */
10731 #endif /* C++ */
10732 
10733 /* EID 255 (0xff) Extended EID 39 (0x27) */
10734 typedef struct sDot11fIEspatial_reuse {
10735 	uint8_t             present;
10736 	uint8_t         psr_disallow:1;
10737 	uint8_t non_srg_pd_sr_disallow:1;
10738 	uint8_t non_srg_offset_present:1;
10739 	uint8_t     srg_info_present:1;
10740 	uint8_t     sr_value15_allow:1;
10741 	uint8_t             reserved:3;
10742 	union {
10743 		struct {
10744 			uint8_t non_srg_pd_max_offset;
10745 		} info; /* non_srg_offset_present = 1 */
10746 	} non_srg_offset;
10747 	union {
10748 		struct {
10749 			uint8_t srg_pd_min_offset;
10750 			uint8_t srg_pd_max_offset;
10751 			uint8_t srg_color[8];
10752 			uint8_t srg_partial_bssid[8];
10753 		} info; /* srg_info_present = 1 */
10754 	} srg_info;
10755 } tDot11fIEspatial_reuse;
10756 
10757 #define DOT11F_EID_SPATIAL_REUSE (255)
10758 
10759 /* N.B. These #defines do *not* include the EID & length */
10760 #define DOT11F_IE_SPATIAL_REUSE_MIN_LEN (1)
10761 
10762 #define DOT11F_IE_SPATIAL_REUSE_MAX_LEN (20)
10763 
10764 #ifdef __cplusplus
10765 extern "C" {
10766 #endif /* C++ */
10767 __must_check uint32_t dot11f_unpack_ie_spatial_reuse(
10768 	tpAniSirGlobal,
10769 	uint8_t *,
10770 	uint8_t,
10771 	tDot11fIEspatial_reuse*,
10772 	bool);
10773 
10774 uint32_t dot11f_pack_ie_spatial_reuse(
10775 	tpAniSirGlobal,
10776 	tDot11fIEspatial_reuse *,
10777 	uint8_t *,
10778 	uint32_t,
10779 	uint32_t*);
10780 
10781 uint32_t dot11f_get_packed_ie_spatial_reuse(
10782 	tpAniSirGlobal,
10783 	tDot11fIEspatial_reuse *,
10784 	uint32_t*);
10785 
10786 #ifdef __cplusplus
10787 }; /* End extern "C". */
10788 #endif /* C++ */
10789 
10790 /* EID 255 (0xff) Extended EID 109 (0x6d) */
10791 typedef struct sDot11fIEt2lm_ie {
10792 	uint8_t             present;
10793 	uint8_t             num_data;
10794 	uint8_t             data[255];
10795 } tDot11fIEt2lm_ie;
10796 
10797 #define DOT11F_EID_T2LM_IE (255)
10798 
10799 /* N.B. These #defines do *not* include the EID & length */
10800 #define DOT11F_IE_T2LM_IE_MIN_LEN (3)
10801 
10802 #define DOT11F_IE_T2LM_IE_MAX_LEN (255)
10803 
10804 #ifdef __cplusplus
10805 extern "C" {
10806 #endif /* C++ */
10807 __must_check uint32_t dot11f_unpack_ie_t2lm_ie(
10808 	tpAniSirGlobal,
10809 	uint8_t *,
10810 	uint8_t,
10811 	tDot11fIEt2lm_ie*,
10812 	bool);
10813 
10814 uint32_t dot11f_pack_ie_t2lm_ie(
10815 	tpAniSirGlobal,
10816 	tDot11fIEt2lm_ie *,
10817 	uint8_t *,
10818 	uint32_t,
10819 	uint32_t*);
10820 
10821 uint32_t dot11f_get_packed_ie_t2lm_ie(
10822 	tpAniSirGlobal,
10823 	tDot11fIEt2lm_ie *,
10824 	uint32_t*);
10825 
10826 #ifdef __cplusplus
10827 }; /* End extern "C". */
10828 #endif /* C++ */
10829 
10830 /* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c, 0x04} */
10831 typedef struct sDot11fIEvendor_vht_ie {
10832 	uint8_t                      present;
10833 	uint8_t                      sub_type;
10834 	tDot11fIEVHTCaps             VHTCaps;
10835 	tDot11fIEVHTOperation        VHTOperation;
10836 } tDot11fIEvendor_vht_ie;
10837 
10838 #define DOT11F_EID_VENDOR_VHT_IE (221)
10839 
10840 /* N.B. These #defines do *not* include the EID & length */
10841 #define DOT11F_IE_VENDOR_VHT_IE_MIN_LEN (5)
10842 
10843 #define DOT11F_IE_VENDOR_VHT_IE_MAX_LEN (26)
10844 
10845 #ifdef __cplusplus
10846 extern "C" {
10847 #endif /* C++ */
10848 __must_check uint32_t dot11f_unpack_ie_vendor_vht_ie(
10849 	tpAniSirGlobal,
10850 	uint8_t *,
10851 	uint8_t,
10852 	tDot11fIEvendor_vht_ie*,
10853 	bool);
10854 
10855 uint32_t dot11f_pack_ie_vendor_vht_ie(
10856 	tpAniSirGlobal,
10857 	tDot11fIEvendor_vht_ie *,
10858 	uint8_t *,
10859 	uint32_t,
10860 	uint32_t*);
10861 
10862 uint32_t dot11f_get_packed_ie_vendor_vht_ie(
10863 	tpAniSirGlobal,
10864 	tDot11fIEvendor_vht_ie *,
10865 	uint32_t*);
10866 
10867 #ifdef __cplusplus
10868 }; /* End extern "C". */
10869 #endif /* C++ */
10870 /************************************************************************
10871  * Frames
10872  **********************************************************************/
10873 
10874 typedef struct sDot11fAddTSRequest{
10875 	tDot11fFfCategory                  Category;
10876 	tDot11fFfAction                    Action;
10877 	tDot11fFfDialogToken               DialogToken;
10878 	tDot11fIETSPEC                     TSPEC;
10879 	uint16_t                           num_TCLAS;
10880 	tDot11fIETCLAS                     TCLAS[2];
10881 	tDot11fIETCLASSPROC                TCLASSPROC;
10882 	tDot11fIEWMMTSPEC                  WMMTSPEC;
10883 	uint16_t                           num_WMMTCLAS;
10884 	tDot11fIEWMMTCLAS                  WMMTCLAS[2];
10885 	tDot11fIEWMMTCLASPROC              WMMTCLASPROC;
10886 	tDot11fIEESETrafStrmRateSet        ESETrafStrmRateSet;
10887 } tDot11fAddTSRequest;
10888 
10889 #define DOT11F_ADDTSREQUEST (1)
10890 
10891 #ifdef __cplusplus
10892 extern "C" {
10893 #endif /* C++ */
10894 
10895 uint32_t dot11f_unpack_add_ts_request(tpAniSirGlobal pCtx,
10896 	uint8_t *pBuf, uint32_t nBuf,
10897 	tDot11fAddTSRequest * pFrm, bool append_ie);
10898 uint32_t dot11f_pack_add_ts_request(tpAniSirGlobal pCtx,
10899 	tDot11fAddTSRequest *pFrm, uint8_t *pBuf,
10900 	uint32_t nBuf, uint32_t *pnConsumed);
10901 uint32_t dot11f_get_packed_add_ts_request_size(tpAniSirGlobal pCtx,
10902 	tDot11fAddTSRequest *pFrm,
10903 	uint32_t *pnNeeded);
10904 
10905 #ifdef __cplusplus
10906 } /* End extern "C". */
10907 #endif /* C++ */
10908 
10909 typedef struct sDot11fAddTSResponse{
10910 	tDot11fFfCategory              Category;
10911 	tDot11fFfAction                Action;
10912 	tDot11fFfDialogToken           DialogToken;
10913 	tDot11fFfStatus                Status;
10914 	tDot11fIETSDelay               TSDelay;
10915 	tDot11fIETSPEC                 TSPEC;
10916 	uint16_t                       num_TCLAS;
10917 	tDot11fIETCLAS                 TCLAS[2];
10918 	tDot11fIETCLASSPROC            TCLASSPROC;
10919 	tDot11fIESchedule              Schedule;
10920 	tDot11fIEWMMTSDelay            WMMTSDelay;
10921 	tDot11fIEWMMSchedule           WMMSchedule;
10922 	tDot11fIEWMMTSPEC              WMMTSPEC;
10923 	uint16_t                       num_WMMTCLAS;
10924 	tDot11fIEWMMTCLAS              WMMTCLAS[2];
10925 	tDot11fIEWMMTCLASPROC          WMMTCLASPROC;
10926 	tDot11fIEESETrafStrmMet        ESETrafStrmMet;
10927 } tDot11fAddTSResponse;
10928 
10929 #define DOT11F_ADDTSRESPONSE (2)
10930 
10931 #ifdef __cplusplus
10932 extern "C" {
10933 #endif /* C++ */
10934 
10935 uint32_t dot11f_unpack_add_ts_response(tpAniSirGlobal pCtx,
10936 	uint8_t *pBuf, uint32_t nBuf,
10937 	tDot11fAddTSResponse * pFrm, bool append_ie);
10938 uint32_t dot11f_pack_add_ts_response(tpAniSirGlobal pCtx,
10939 	tDot11fAddTSResponse *pFrm, uint8_t *pBuf,
10940 	uint32_t nBuf, uint32_t *pnConsumed);
10941 uint32_t dot11f_get_packed_add_ts_response_size(tpAniSirGlobal pCtx,
10942 	tDot11fAddTSResponse *pFrm,
10943 	uint32_t *pnNeeded);
10944 
10945 #ifdef __cplusplus
10946 } /* End extern "C". */
10947 #endif /* C++ */
10948 
10949 typedef struct sDot11fAssocRequest{
10950 	tDot11fFfCapabilities                  Capabilities;
10951 	tDot11fFfListenInterval                ListenInterval;
10952 	tDot11fIESSID                          SSID;
10953 	tDot11fIESuppRates                     SuppRates;
10954 	tDot11fIEExtSuppRates                  ExtSuppRates;
10955 	tDot11fIEPowerCaps                     PowerCaps;
10956 	tDot11fIESuppChannels                  SuppChannels;
10957 	tDot11fIERSNOpaque                     RSNOpaque;
10958 	tDot11fIEQOSCapsStation                QOSCapsStation;
10959 	tDot11fIERRMEnabledCap                 RRMEnabledCap;
10960 	tDot11fIEMobilityDomain                MobilityDomain;
10961 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
10962 	tDot11fIEHTCaps                        HTCaps;
10963 	tDot11fIEExtCap                        ExtCap;
10964 	tDot11fIEVHTCaps                       VHTCaps;
10965 	tDot11fIEOperatingMode                 OperatingMode;
10966 	tDot11fIEfils_session                  fils_session;
10967 	tDot11fIEfils_public_key               fils_public_key;
10968 	tDot11fIEfils_key_confirmation         fils_key_confirmation;
10969 	tDot11fIEfils_hlp_container            fils_hlp_container;
10970 	tDot11fIEbss_max_idle_period           bss_max_idle_period;
10971 	tDot11fIEFTInfo                        FTInfo;
10972 	tDot11fIEhe_cap                        he_cap;
10973 	tDot11fIEhe_6ghz_band_cap              he_6ghz_band_cap;
10974 	tDot11fIEWAPIOpaque                    WAPIOpaque;
10975 	tDot11fIEWAPI                          WAPI;
10976 	tDot11fIEQosMapSet                     QosMapSet;
10977 	tDot11fIEfragment_ie                   fragment_ie;
10978 	tDot11fIEdh_parameter_element          dh_parameter_element;
10979 	tDot11fIEeht_cap                       eht_cap;
10980 	tDot11fIEmlo_ie                        mlo_ie;
10981 	uint16_t                               num_t2lm_ie;
10982 	tDot11fIEt2lm_ie                       t2lm_ie[2];
10983 	tDot11fIEWPAOpaque                     WPAOpaque;
10984 	tDot11fIEWMMCaps                       WMMCaps;
10985 	tDot11fIEWMMInfoStation                WMMInfoStation;
10986 	tDot11fIEWscIEOpaque                   WscIEOpaque;
10987 	tDot11fIEESERadMgmtCap                 ESERadMgmtCap;
10988 	tDot11fIEESEVersion                    ESEVersion;
10989 	tDot11fIEP2PIEOpaque                   P2PIEOpaque;
10990 	tDot11fIEWFDIEOpaque                   WFDIEOpaque;
10991 	tDot11fIEvendor_vht_ie                 vendor_vht_ie;
10992 	tDot11fIEhs20vendor_ie                 hs20vendor_ie;
10993 	tDot11fIEqcn_ie                        qcn_ie;
10994 	tDot11fIEosen_ie                       osen_ie;
10995 	tDot11fIEroaming_consortium_sel        roaming_consortium_sel;
10996 } tDot11fAssocRequest;
10997 
10998 #define DOT11F_ASSOCREQUEST (3)
10999 
11000 #ifdef __cplusplus
11001 extern "C" {
11002 #endif /* C++ */
11003 
11004 uint32_t dot11f_unpack_assoc_request(tpAniSirGlobal pCtx,
11005 	uint8_t *pBuf, uint32_t nBuf,
11006 	tDot11fAssocRequest * pFrm, bool append_ie);
11007 uint32_t dot11f_pack_assoc_request(tpAniSirGlobal pCtx,
11008 	tDot11fAssocRequest *pFrm, uint8_t *pBuf,
11009 	uint32_t nBuf, uint32_t *pnConsumed);
11010 uint32_t dot11f_get_packed_assoc_request_size(tpAniSirGlobal pCtx,
11011 	tDot11fAssocRequest *pFrm,
11012 	uint32_t *pnNeeded);
11013 
11014 #ifdef __cplusplus
11015 } /* End extern "C". */
11016 #endif /* C++ */
11017 
11018 typedef struct sDot11fAssocResponse{
11019 	tDot11fFfCapabilities                   Capabilities;
11020 	tDot11fFfStatus                         Status;
11021 	tDot11fFfAID                            AID;
11022 	tDot11fIESuppRates                      SuppRates;
11023 	tDot11fIEExtSuppRates                   ExtSuppRates;
11024 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11025 	tDot11fIERCPIIE                         RCPIIE;
11026 	tDot11fIERSNIIE                         RSNIIE;
11027 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11028 	tDot11fIEMobilityDomain                 MobilityDomain;
11029 	tDot11fIEFTInfo                         FTInfo;
11030 	tDot11fIETimeoutInterval                TimeoutInterval;
11031 	tDot11fIEHTCaps                         HTCaps;
11032 	tDot11fIEHTInfo                         HTInfo;
11033 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11034 	tDot11fIEExtCap                         ExtCap;
11035 	tDot11fIEbss_max_idle_period            bss_max_idle_period;
11036 	tDot11fIEQosMapSet                      QosMapSet;
11037 	tDot11fIEVHTCaps                        VHTCaps;
11038 	tDot11fIEVHTOperation                   VHTOperation;
11039 	tDot11fIEOperatingMode                  OperatingMode;
11040 	tDot11fIEfils_session                   fils_session;
11041 	tDot11fIEfils_public_key                fils_public_key;
11042 	tDot11fIEfils_key_confirmation          fils_key_confirmation;
11043 	tDot11fIEfils_hlp_container             fils_hlp_container;
11044 	tDot11fIEhe_cap                         he_cap;
11045 	tDot11fIEhe_op                          he_op;
11046 	tDot11fIEspatial_reuse                  spatial_reuse;
11047 	tDot11fIEbss_color_change               bss_color_change;
11048 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11049 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11050 	uint16_t                                num_RICDataDesc;
11051 	tDot11fIERICDataDesc                    RICDataDesc[2];
11052 	tDot11fIEESETxmitPower                  ESETxmitPower;
11053 	tDot11fIEfragment_ie                    fragment_ie;
11054 	tDot11fIEfils_kde                       fils_kde;
11055 	tDot11fIEeht_cap                        eht_cap;
11056 	tDot11fIEeht_op                         eht_op;
11057 	tDot11fIEmlo_ie                         mlo_ie;
11058 	uint16_t                                num_t2lm_ie;
11059 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11060 	tDot11fIEWPA                            WPA;
11061 	tDot11fIEWMMParams                      WMMParams;
11062 	tDot11fIEWMMCaps                        WMMCaps;
11063 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11064 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11065 	uint16_t                                num_WMMTSPEC;
11066 	tDot11fIEWMMTSPEC                       WMMTSPEC[4];
11067 	tDot11fIEWscAssocRes                    WscAssocRes;
11068 	tDot11fIEP2PAssocRes                    P2PAssocRes;
11069 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11070 	tDot11fIEqcn_ie                         qcn_ie;
11071 	tDot11fIEMBO_IE                         MBO_IE;
11072 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11073 } tDot11fAssocResponse;
11074 
11075 #define DOT11F_ASSOCRESPONSE (4)
11076 
11077 #ifdef __cplusplus
11078 extern "C" {
11079 #endif /* C++ */
11080 
11081 uint32_t dot11f_unpack_assoc_response(tpAniSirGlobal pCtx,
11082 	uint8_t *pBuf, uint32_t nBuf,
11083 	tDot11fAssocResponse * pFrm, bool append_ie);
11084 uint32_t dot11f_pack_assoc_response(tpAniSirGlobal pCtx,
11085 	tDot11fAssocResponse *pFrm, uint8_t *pBuf,
11086 	uint32_t nBuf, uint32_t *pnConsumed);
11087 uint32_t dot11f_get_packed_assoc_response_size(tpAniSirGlobal pCtx,
11088 	tDot11fAssocResponse *pFrm,
11089 	uint32_t *pnNeeded);
11090 
11091 #ifdef __cplusplus
11092 } /* End extern "C". */
11093 #endif /* C++ */
11094 
11095 typedef struct sDot11fAuthentication{
11096 	tDot11fFfAuthAlgo                     AuthAlgo;
11097 	tDot11fFfAuthSeqNo                    AuthSeqNo;
11098 	tDot11fFfStatus                       Status;
11099 	tDot11fIEChallengeText                ChallengeText;
11100 	tDot11fIERSNOpaque                    RSNOpaque;
11101 	tDot11fIEMobilityDomain               MobilityDomain;
11102 	tDot11fIEFTInfo                       FTInfo;
11103 	tDot11fIETimeoutInterval              TimeoutInterval;
11104 	uint16_t                              num_RICDataDesc;
11105 	tDot11fIERICDataDesc                  RICDataDesc[2];
11106 	tDot11fIEfils_nonce                   fils_nonce;
11107 	tDot11fIEfils_session                 fils_session;
11108 	tDot11fIEfils_wrapped_data            fils_wrapped_data;
11109 	tDot11fIEfils_assoc_delay_info        fils_assoc_delay_info;
11110 	tDot11fIEmlo_ie                       mlo_ie;
11111 } tDot11fAuthentication;
11112 
11113 #define DOT11F_AUTHENTICATION (5)
11114 
11115 #ifdef __cplusplus
11116 extern "C" {
11117 #endif /* C++ */
11118 
11119 uint32_t dot11f_unpack_authentication(tpAniSirGlobal pCtx,
11120 	uint8_t *pBuf, uint32_t nBuf,
11121 	tDot11fAuthentication * pFrm, bool append_ie);
11122 uint32_t dot11f_pack_authentication(tpAniSirGlobal pCtx,
11123 	tDot11fAuthentication *pFrm, uint8_t *pBuf,
11124 	uint32_t nBuf, uint32_t *pnConsumed);
11125 uint32_t dot11f_get_packed_authentication_size(tpAniSirGlobal pCtx,
11126 	tDot11fAuthentication *pFrm,
11127 	uint32_t *pnNeeded);
11128 
11129 #ifdef __cplusplus
11130 } /* End extern "C". */
11131 #endif /* C++ */
11132 
11133 typedef struct sDot11fBeacon{
11134 	tDot11fFfTimeStamp                      TimeStamp;
11135 	tDot11fFfBeaconInterval                 BeaconInterval;
11136 	tDot11fFfCapabilities                   Capabilities;
11137 	tDot11fIESSID                           SSID;
11138 	tDot11fIESuppRates                      SuppRates;
11139 	tDot11fIEFHParamSet                     FHParamSet;
11140 	tDot11fIEDSParams                       DSParams;
11141 	tDot11fIECFParams                       CFParams;
11142 	tDot11fIETIM                            TIM;
11143 	tDot11fIECountry                        Country;
11144 	tDot11fIEFHParams                       FHParams;
11145 	tDot11fIEFHPattTable                    FHPattTable;
11146 	tDot11fIEPowerConstraints               PowerConstraints;
11147 	tDot11fIEChanSwitchAnn                  ChanSwitchAnn;
11148 	tDot11fIEQuiet                          Quiet;
11149 	tDot11fIETPCReport                      TPCReport;
11150 	tDot11fIEERPInfo                        ERPInfo;
11151 	tDot11fIEExtSuppRates                   ExtSuppRates;
11152 	tDot11fIERSN                            RSN;
11153 	tDot11fIEQBSSLoad                       QBSSLoad;
11154 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11155 	tDot11fIEQOSCapsAp                      QOSCapsAp;
11156 	tDot11fIEAPChannelReport                APChannelReport;
11157 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11158 	tDot11fIEMobilityDomain                 MobilityDomain;
11159 	tDot11fIEext_chan_switch_ann            ext_chan_switch_ann;
11160 	tDot11fIESuppOperatingClasses           SuppOperatingClasses;
11161 	tDot11fIEHTCaps                         HTCaps;
11162 	tDot11fIEHTInfo                         HTInfo;
11163 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11164 	tDot11fIEExtCap                         ExtCap;
11165 	tDot11fIEVHTCaps                        VHTCaps;
11166 	tDot11fIEVHTOperation                   VHTOperation;
11167 	uint16_t                                num_transmit_power_env;
11168 	tDot11fIEtransmit_power_env             transmit_power_env[8];
11169 	tDot11fIEChannelSwitchWrapper           ChannelSwitchWrapper;
11170 	tDot11fIEVHTExtBssLoad                  VHTExtBssLoad;
11171 	tDot11fIEOperatingMode                  OperatingMode;
11172 	tDot11fIEfils_indication                fils_indication;
11173 	tDot11fIEmax_chan_switch_time           max_chan_switch_time;
11174 	tDot11fIEesp_information                esp_information;
11175 	tDot11fIEhe_cap                         he_cap;
11176 	tDot11fIEhe_op                          he_op;
11177 	tDot11fIEspatial_reuse                  spatial_reuse;
11178 	tDot11fIEbss_color_change               bss_color_change;
11179 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11180 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11181 	tDot11fIEsec_chan_offset_ele            sec_chan_offset_ele;
11182 	tDot11fIEWAPI                           WAPI;
11183 	tDot11fIEESETxmitPower                  ESETxmitPower;
11184 	tDot11fIEWiderBWChanSwitchAnn           WiderBWChanSwitchAnn;
11185 	tDot11fIEeht_cap                        eht_cap;
11186 	tDot11fIEeht_op                         eht_op;
11187 	tDot11fIEmlo_ie                         mlo_ie;
11188 	uint16_t                                num_t2lm_ie;
11189 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11190 	tDot11fIEWPA                            WPA;
11191 	tDot11fIEWMMInfoAp                      WMMInfoAp;
11192 	tDot11fIEWMMParams                      WMMParams;
11193 	tDot11fIEWMMCaps                        WMMCaps;
11194 	tDot11fIEESEVersion                     ESEVersion;
11195 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11196 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11197 	tDot11fIEWscBeacon                      WscBeacon;
11198 	tDot11fIEP2PBeacon                      P2PBeacon;
11199 	tDot11fIEVendor1IE                      Vendor1IE;
11200 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11201 	tDot11fIEVendor3IE                      Vendor3IE;
11202 	tDot11fIEhs20vendor_ie                  hs20vendor_ie;
11203 	tDot11fIEQComVendorIE                   QComVendorIE;
11204 	tDot11fIEMBO_IE                         MBO_IE;
11205 	tDot11fIEqcn_ie                         qcn_ie;
11206 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11207 } tDot11fBeacon;
11208 
11209 #define DOT11F_BEACON (6)
11210 
11211 #ifdef __cplusplus
11212 extern "C" {
11213 #endif /* C++ */
11214 
11215 uint32_t dot11f_unpack_beacon(tpAniSirGlobal pCtx,
11216 	uint8_t *pBuf, uint32_t nBuf,
11217 	tDot11fBeacon * pFrm, bool append_ie);
11218 uint32_t dot11f_pack_beacon(tpAniSirGlobal pCtx,
11219 	tDot11fBeacon *pFrm, uint8_t *pBuf,
11220 	uint32_t nBuf, uint32_t *pnConsumed);
11221 uint32_t dot11f_get_packed_beacon_size(tpAniSirGlobal pCtx,
11222 	tDot11fBeacon *pFrm,
11223 	uint32_t *pnNeeded);
11224 
11225 #ifdef __cplusplus
11226 } /* End extern "C". */
11227 #endif /* C++ */
11228 
11229 typedef struct sDot11fBeacon1{
11230 	tDot11fFfTimeStamp             TimeStamp;
11231 	tDot11fFfBeaconInterval        BeaconInterval;
11232 	tDot11fFfCapabilities          Capabilities;
11233 	tDot11fIESSID                  SSID;
11234 	tDot11fIESuppRates             SuppRates;
11235 	tDot11fIEDSParams              DSParams;
11236 } tDot11fBeacon1;
11237 
11238 #define DOT11F_BEACON1 (7)
11239 
11240 #ifdef __cplusplus
11241 extern "C" {
11242 #endif /* C++ */
11243 
11244 uint32_t dot11f_unpack_beacon1(tpAniSirGlobal pCtx,
11245 	uint8_t *pBuf, uint32_t nBuf,
11246 	tDot11fBeacon1 * pFrm, bool append_ie);
11247 uint32_t dot11f_pack_beacon1(tpAniSirGlobal pCtx,
11248 	tDot11fBeacon1 *pFrm, uint8_t *pBuf,
11249 	uint32_t nBuf, uint32_t *pnConsumed);
11250 uint32_t dot11f_get_packed_beacon1_size(tpAniSirGlobal pCtx,
11251 	tDot11fBeacon1 *pFrm,
11252 	uint32_t *pnNeeded);
11253 
11254 #ifdef __cplusplus
11255 } /* End extern "C". */
11256 #endif /* C++ */
11257 
11258 typedef struct sDot11fBeacon2{
11259 	tDot11fIECountry                        Country;
11260 	tDot11fIEPowerConstraints               PowerConstraints;
11261 	tDot11fIEChanSwitchAnn                  ChanSwitchAnn;
11262 	tDot11fIEQuiet                          Quiet;
11263 	tDot11fIETPCReport                      TPCReport;
11264 	tDot11fIEERPInfo                        ERPInfo;
11265 	tDot11fIEExtSuppRates                   ExtSuppRates;
11266 	tDot11fIERSNOpaque                      RSNOpaque;
11267 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11268 	tDot11fIEAPChannelReport                APChannelReport;
11269 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11270 	tDot11fIEMobilityDomain                 MobilityDomain;
11271 	tDot11fIEext_chan_switch_ann            ext_chan_switch_ann;
11272 	tDot11fIESuppOperatingClasses           SuppOperatingClasses;
11273 	tDot11fIEHTCaps                         HTCaps;
11274 	tDot11fIEHTInfo                         HTInfo;
11275 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11276 	tDot11fIEExtCap                         ExtCap;
11277 	tDot11fIEVHTCaps                        VHTCaps;
11278 	tDot11fIEVHTOperation                   VHTOperation;
11279 	uint16_t                                num_transmit_power_env;
11280 	tDot11fIEtransmit_power_env             transmit_power_env[8];
11281 	tDot11fIEChannelSwitchWrapper           ChannelSwitchWrapper;
11282 	tDot11fIEVHTExtBssLoad                  VHTExtBssLoad;
11283 	tDot11fIEOperatingMode                  OperatingMode;
11284 	tDot11fIEfils_indication                fils_indication;
11285 	tDot11fIEmax_chan_switch_time           max_chan_switch_time;
11286 	tDot11fIEesp_information                esp_information;
11287 	tDot11fIEhe_cap                         he_cap;
11288 	tDot11fIEhe_op                          he_op;
11289 	tDot11fIEspatial_reuse                  spatial_reuse;
11290 	tDot11fIEbss_color_change               bss_color_change;
11291 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11292 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11293 	tDot11fIEsec_chan_offset_ele            sec_chan_offset_ele;
11294 	tDot11fIEWAPI                           WAPI;
11295 	tDot11fIEESETxmitPower                  ESETxmitPower;
11296 	tDot11fIEWiderBWChanSwitchAnn           WiderBWChanSwitchAnn;
11297 	tDot11fIEeht_cap                        eht_cap;
11298 	tDot11fIEeht_op                         eht_op;
11299 	tDot11fIEmlo_ie                         mlo_ie;
11300 	uint16_t                                num_t2lm_ie;
11301 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11302 	tDot11fIEWPA                            WPA;
11303 	tDot11fIEWMMInfoAp                      WMMInfoAp;
11304 	tDot11fIEWMMParams                      WMMParams;
11305 	tDot11fIEWMMCaps                        WMMCaps;
11306 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11307 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11308 	tDot11fIEWscBeacon                      WscBeacon;
11309 	tDot11fIEP2PBeacon                      P2PBeacon;
11310 	tDot11fIEVendor1IE                      Vendor1IE;
11311 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11312 	tDot11fIEVendor3IE                      Vendor3IE;
11313 	tDot11fIEhs20vendor_ie                  hs20vendor_ie;
11314 	tDot11fIEQComVendorIE                   QComVendorIE;
11315 	tDot11fIEESEVersion                     ESEVersion;
11316 	tDot11fIEqcn_ie                         qcn_ie;
11317 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11318 } tDot11fBeacon2;
11319 
11320 #define DOT11F_BEACON2 (8)
11321 
11322 #ifdef __cplusplus
11323 extern "C" {
11324 #endif /* C++ */
11325 
11326 uint32_t dot11f_unpack_beacon2(tpAniSirGlobal pCtx,
11327 	uint8_t *pBuf, uint32_t nBuf,
11328 	tDot11fBeacon2 * pFrm, bool append_ie);
11329 uint32_t dot11f_pack_beacon2(tpAniSirGlobal pCtx,
11330 	tDot11fBeacon2 *pFrm, uint8_t *pBuf,
11331 	uint32_t nBuf, uint32_t *pnConsumed);
11332 uint32_t dot11f_get_packed_beacon2_size(tpAniSirGlobal pCtx,
11333 	tDot11fBeacon2 *pFrm,
11334 	uint32_t *pnNeeded);
11335 
11336 #ifdef __cplusplus
11337 } /* End extern "C". */
11338 #endif /* C++ */
11339 
11340 typedef struct sDot11fBeaconIEs{
11341 	tDot11fIESSID                           SSID;
11342 	tDot11fIESuppRates                      SuppRates;
11343 	tDot11fIEFHParamSet                     FHParamSet;
11344 	tDot11fIEDSParams                       DSParams;
11345 	tDot11fIECFParams                       CFParams;
11346 	tDot11fIETIM                            TIM;
11347 	tDot11fIECountry                        Country;
11348 	tDot11fIEFHParams                       FHParams;
11349 	tDot11fIEFHPattTable                    FHPattTable;
11350 	tDot11fIEPowerConstraints               PowerConstraints;
11351 	tDot11fIEChanSwitchAnn                  ChanSwitchAnn;
11352 	tDot11fIEQuiet                          Quiet;
11353 	tDot11fIETPCReport                      TPCReport;
11354 	tDot11fIEERPInfo                        ERPInfo;
11355 	tDot11fIEExtSuppRates                   ExtSuppRates;
11356 	tDot11fIERSN                            RSN;
11357 	tDot11fIEQBSSLoad                       QBSSLoad;
11358 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11359 	tDot11fIEQOSCapsAp                      QOSCapsAp;
11360 	tDot11fIEAPChannelReport                APChannelReport;
11361 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11362 	tDot11fIEMobilityDomain                 MobilityDomain;
11363 	tDot11fIEext_chan_switch_ann            ext_chan_switch_ann;
11364 	tDot11fIESuppOperatingClasses           SuppOperatingClasses;
11365 	tDot11fIEHTCaps                         HTCaps;
11366 	tDot11fIEHTInfo                         HTInfo;
11367 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11368 	tDot11fIEExtCap                         ExtCap;
11369 	tDot11fIEVHTCaps                        VHTCaps;
11370 	tDot11fIEVHTOperation                   VHTOperation;
11371 	uint16_t                                num_transmit_power_env;
11372 	tDot11fIEtransmit_power_env             transmit_power_env[8];
11373 	tDot11fIEChannelSwitchWrapper           ChannelSwitchWrapper;
11374 	tDot11fIEVHTExtBssLoad                  VHTExtBssLoad;
11375 	tDot11fIEOperatingMode                  OperatingMode;
11376 	tDot11fIEfils_indication                fils_indication;
11377 	tDot11fIEmax_chan_switch_time           max_chan_switch_time;
11378 	tDot11fIEesp_information                esp_information;
11379 	tDot11fIEhe_cap                         he_cap;
11380 	tDot11fIEhe_op                          he_op;
11381 	tDot11fIEspatial_reuse                  spatial_reuse;
11382 	tDot11fIEbss_color_change               bss_color_change;
11383 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11384 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11385 	tDot11fIEsec_chan_offset_ele            sec_chan_offset_ele;
11386 	tDot11fIEWAPI                           WAPI;
11387 	tDot11fIEESETxmitPower                  ESETxmitPower;
11388 	tDot11fIEWiderBWChanSwitchAnn           WiderBWChanSwitchAnn;
11389 	tDot11fIEeht_cap                        eht_cap;
11390 	tDot11fIEeht_op                         eht_op;
11391 	tDot11fIEmlo_ie                         mlo_ie;
11392 	uint16_t                                num_t2lm_ie;
11393 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11394 	tDot11fIEWPA                            WPA;
11395 	tDot11fIEWMMInfoAp                      WMMInfoAp;
11396 	tDot11fIEWMMParams                      WMMParams;
11397 	tDot11fIEWMMCaps                        WMMCaps;
11398 	tDot11fIEESEVersion                     ESEVersion;
11399 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11400 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11401 	tDot11fIEWscBeaconProbeRes              WscBeaconProbeRes;
11402 	tDot11fIEP2PBeaconProbeRes              P2PBeaconProbeRes;
11403 	tDot11fIEVendor1IE                      Vendor1IE;
11404 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11405 	tDot11fIEVendor3IE                      Vendor3IE;
11406 	tDot11fIEhs20vendor_ie                  hs20vendor_ie;
11407 	tDot11fIEQComVendorIE                   QComVendorIE;
11408 	tDot11fIEMBO_IE                         MBO_IE;
11409 	tDot11fIEqcn_ie                         qcn_ie;
11410 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11411 } tDot11fBeaconIEs;
11412 
11413 #define DOT11F_BEACONIES (9)
11414 
11415 #ifdef __cplusplus
11416 extern "C" {
11417 #endif /* C++ */
11418 
11419 uint32_t dot11f_unpack_beacon_i_es(tpAniSirGlobal pCtx,
11420 	uint8_t *pBuf, uint32_t nBuf,
11421 	tDot11fBeaconIEs * pFrm, bool append_ie);
11422 uint32_t dot11f_pack_beacon_i_es(tpAniSirGlobal pCtx,
11423 	tDot11fBeaconIEs *pFrm, uint8_t *pBuf,
11424 	uint32_t nBuf, uint32_t *pnConsumed);
11425 uint32_t dot11f_get_packed_beacon_i_es_size(tpAniSirGlobal pCtx,
11426 	tDot11fBeaconIEs *pFrm,
11427 	uint32_t *pnNeeded);
11428 
11429 #ifdef __cplusplus
11430 } /* End extern "C". */
11431 #endif /* C++ */
11432 
11433 typedef struct sDot11fChannelSwitch{
11434 	tDot11fFfCategory                    Category;
11435 	tDot11fFfAction                      Action;
11436 	tDot11fIEChanSwitchAnn               ChanSwitchAnn;
11437 	tDot11fIEsec_chan_offset_ele         sec_chan_offset_ele;
11438 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
11439 } tDot11fChannelSwitch;
11440 
11441 #define DOT11F_CHANNELSWITCH (10)
11442 
11443 #ifdef __cplusplus
11444 extern "C" {
11445 #endif /* C++ */
11446 
11447 uint32_t dot11f_unpack_channel_switch(tpAniSirGlobal pCtx,
11448 	uint8_t *pBuf, uint32_t nBuf,
11449 	tDot11fChannelSwitch * pFrm, bool append_ie);
11450 uint32_t dot11f_pack_channel_switch(tpAniSirGlobal pCtx,
11451 	tDot11fChannelSwitch *pFrm, uint8_t *pBuf,
11452 	uint32_t nBuf, uint32_t *pnConsumed);
11453 uint32_t dot11f_get_packed_channel_switch_size(tpAniSirGlobal pCtx,
11454 	tDot11fChannelSwitch *pFrm,
11455 	uint32_t *pnNeeded);
11456 
11457 #ifdef __cplusplus
11458 } /* End extern "C". */
11459 #endif /* C++ */
11460 
11461 typedef struct sDot11fDeAuth{
11462 	tDot11fFfReason           Reason;
11463 	tDot11fIEP2PDeAuth        P2PDeAuth;
11464 } tDot11fDeAuth;
11465 
11466 #define DOT11F_DEAUTH (11)
11467 
11468 #ifdef __cplusplus
11469 extern "C" {
11470 #endif /* C++ */
11471 
11472 uint32_t dot11f_unpack_de_auth(tpAniSirGlobal pCtx,
11473 	uint8_t *pBuf, uint32_t nBuf,
11474 	tDot11fDeAuth * pFrm, bool append_ie);
11475 uint32_t dot11f_pack_de_auth(tpAniSirGlobal pCtx,
11476 	tDot11fDeAuth *pFrm, uint8_t *pBuf,
11477 	uint32_t nBuf, uint32_t *pnConsumed);
11478 uint32_t dot11f_get_packed_de_auth_size(tpAniSirGlobal pCtx,
11479 	tDot11fDeAuth *pFrm,
11480 	uint32_t *pnNeeded);
11481 
11482 #ifdef __cplusplus
11483 } /* End extern "C". */
11484 #endif /* C++ */
11485 
11486 typedef struct sDot11fDelTS{
11487 	tDot11fFfCategory        Category;
11488 	tDot11fFfAction          Action;
11489 	tDot11fFfTSInfo          TSInfo;
11490 	tDot11fFfReason          Reason;
11491 } tDot11fDelTS;
11492 
11493 #define DOT11F_DELTS (12)
11494 
11495 #ifdef __cplusplus
11496 extern "C" {
11497 #endif /* C++ */
11498 
11499 uint32_t dot11f_unpack_del_ts(tpAniSirGlobal pCtx,
11500 	uint8_t *pBuf, uint32_t nBuf,
11501 	tDot11fDelTS * pFrm, bool append_ie);
11502 uint32_t dot11f_pack_del_ts(tpAniSirGlobal pCtx,
11503 	tDot11fDelTS *pFrm, uint8_t *pBuf,
11504 	uint32_t nBuf, uint32_t *pnConsumed);
11505 uint32_t dot11f_get_packed_del_ts_size(tpAniSirGlobal pCtx,
11506 	tDot11fDelTS *pFrm,
11507 	uint32_t *pnNeeded);
11508 
11509 #ifdef __cplusplus
11510 } /* End extern "C". */
11511 #endif /* C++ */
11512 
11513 typedef struct sDot11fDisassociation{
11514 	tDot11fFfReason             Reason;
11515 	tDot11fIEP2PDisAssoc        P2PDisAssoc;
11516 } tDot11fDisassociation;
11517 
11518 #define DOT11F_DISASSOCIATION (13)
11519 
11520 #ifdef __cplusplus
11521 extern "C" {
11522 #endif /* C++ */
11523 
11524 uint32_t dot11f_unpack_disassociation(tpAniSirGlobal pCtx,
11525 	uint8_t *pBuf, uint32_t nBuf,
11526 	tDot11fDisassociation * pFrm, bool append_ie);
11527 uint32_t dot11f_pack_disassociation(tpAniSirGlobal pCtx,
11528 	tDot11fDisassociation *pFrm, uint8_t *pBuf,
11529 	uint32_t nBuf, uint32_t *pnConsumed);
11530 uint32_t dot11f_get_packed_disassociation_size(tpAniSirGlobal pCtx,
11531 	tDot11fDisassociation *pFrm,
11532 	uint32_t *pnNeeded);
11533 
11534 #ifdef __cplusplus
11535 } /* End extern "C". */
11536 #endif /* C++ */
11537 
11538 typedef struct sDot11fLinkMeasurementReport{
11539 	tDot11fFfCategory           Category;
11540 	tDot11fFfAction             Action;
11541 	tDot11fFfDialogToken        DialogToken;
11542 	tDot11fFfTPCEleID           TPCEleID;
11543 	tDot11fFfTPCEleLen          TPCEleLen;
11544 	tDot11fFfTxPower            TxPower;
11545 	tDot11fFfLinkMargin         LinkMargin;
11546 	tDot11fFfRxAntennaId        RxAntennaId;
11547 	tDot11fFfTxAntennaId        TxAntennaId;
11548 	tDot11fFfRCPI               RCPI;
11549 	tDot11fFfRSNI               RSNI;
11550 } tDot11fLinkMeasurementReport;
11551 
11552 #define DOT11F_LINKMEASUREMENTREPORT (14)
11553 
11554 #ifdef __cplusplus
11555 extern "C" {
11556 #endif /* C++ */
11557 
11558 uint32_t dot11f_unpack_link_measurement_report(tpAniSirGlobal pCtx,
11559 	uint8_t *pBuf, uint32_t nBuf,
11560 	tDot11fLinkMeasurementReport * pFrm, bool append_ie);
11561 uint32_t dot11f_pack_link_measurement_report(tpAniSirGlobal pCtx,
11562 	tDot11fLinkMeasurementReport *pFrm, uint8_t *pBuf,
11563 	uint32_t nBuf, uint32_t *pnConsumed);
11564 uint32_t dot11f_get_packed_link_measurement_report_size(tpAniSirGlobal pCtx,
11565 	tDot11fLinkMeasurementReport *pFrm,
11566 	uint32_t *pnNeeded);
11567 
11568 #ifdef __cplusplus
11569 } /* End extern "C". */
11570 #endif /* C++ */
11571 
11572 typedef struct sDot11fLinkMeasurementRequest{
11573 	tDot11fFfCategory           Category;
11574 	tDot11fFfAction             Action;
11575 	tDot11fFfDialogToken        DialogToken;
11576 	tDot11fFfTxPower            TxPower;
11577 	tDot11fFfMaxTxPower         MaxTxPower;
11578 } tDot11fLinkMeasurementRequest;
11579 
11580 #define DOT11F_LINKMEASUREMENTREQUEST (15)
11581 
11582 #ifdef __cplusplus
11583 extern "C" {
11584 #endif /* C++ */
11585 
11586 uint32_t dot11f_unpack_link_measurement_request(tpAniSirGlobal pCtx,
11587 	uint8_t *pBuf, uint32_t nBuf,
11588 	tDot11fLinkMeasurementRequest * pFrm, bool append_ie);
11589 uint32_t dot11f_pack_link_measurement_request(tpAniSirGlobal pCtx,
11590 	tDot11fLinkMeasurementRequest *pFrm, uint8_t *pBuf,
11591 	uint32_t nBuf, uint32_t *pnConsumed);
11592 uint32_t dot11f_get_packed_link_measurement_request_size(tpAniSirGlobal pCtx,
11593 	tDot11fLinkMeasurementRequest *pFrm,
11594 	uint32_t *pnNeeded);
11595 
11596 #ifdef __cplusplus
11597 } /* End extern "C". */
11598 #endif /* C++ */
11599 
11600 typedef struct sDot11fMeasurementReport{
11601 	tDot11fFfCategory                 Category;
11602 	tDot11fFfAction                   Action;
11603 	tDot11fFfDialogToken              DialogToken;
11604 	tDot11fIEMeasurementReport        MeasurementReport;
11605 } tDot11fMeasurementReport;
11606 
11607 #define DOT11F_MEASUREMENTREPORT (16)
11608 
11609 #ifdef __cplusplus
11610 extern "C" {
11611 #endif /* C++ */
11612 
11613 uint32_t dot11f_unpack_measurement_report(tpAniSirGlobal pCtx,
11614 	uint8_t *pBuf, uint32_t nBuf,
11615 	tDot11fMeasurementReport * pFrm, bool append_ie);
11616 uint32_t dot11f_pack_measurement_report(tpAniSirGlobal pCtx,
11617 	tDot11fMeasurementReport *pFrm, uint8_t *pBuf,
11618 	uint32_t nBuf, uint32_t *pnConsumed);
11619 uint32_t dot11f_get_packed_measurement_report_size(tpAniSirGlobal pCtx,
11620 	tDot11fMeasurementReport *pFrm,
11621 	uint32_t *pnNeeded);
11622 
11623 #ifdef __cplusplus
11624 } /* End extern "C". */
11625 #endif /* C++ */
11626 
11627 typedef struct sDot11fMeasurementRequest{
11628 	tDot11fFfCategory                  Category;
11629 	tDot11fFfAction                    Action;
11630 	tDot11fFfDialogToken               DialogToken;
11631 	uint16_t                           num_MeasurementRequest;
11632 	tDot11fIEMeasurementRequest        MeasurementRequest[4];
11633 } tDot11fMeasurementRequest;
11634 
11635 #define DOT11F_MEASUREMENTREQUEST (17)
11636 
11637 #ifdef __cplusplus
11638 extern "C" {
11639 #endif /* C++ */
11640 
11641 uint32_t dot11f_unpack_measurement_request(tpAniSirGlobal pCtx,
11642 	uint8_t *pBuf, uint32_t nBuf,
11643 	tDot11fMeasurementRequest * pFrm, bool append_ie);
11644 uint32_t dot11f_pack_measurement_request(tpAniSirGlobal pCtx,
11645 	tDot11fMeasurementRequest *pFrm, uint8_t *pBuf,
11646 	uint32_t nBuf, uint32_t *pnConsumed);
11647 uint32_t dot11f_get_packed_measurement_request_size(tpAniSirGlobal pCtx,
11648 	tDot11fMeasurementRequest *pFrm,
11649 	uint32_t *pnNeeded);
11650 
11651 #ifdef __cplusplus
11652 } /* End extern "C". */
11653 #endif /* C++ */
11654 
11655 typedef struct sDot11fNeighborReportRequest{
11656 	tDot11fFfCategory           Category;
11657 	tDot11fFfAction             Action;
11658 	tDot11fFfDialogToken        DialogToken;
11659 	tDot11fIESSID               SSID;
11660 } tDot11fNeighborReportRequest;
11661 
11662 #define DOT11F_NEIGHBORREPORTREQUEST (18)
11663 
11664 #ifdef __cplusplus
11665 extern "C" {
11666 #endif /* C++ */
11667 
11668 uint32_t dot11f_unpack_neighbor_report_request(tpAniSirGlobal pCtx,
11669 	uint8_t *pBuf, uint32_t nBuf,
11670 	tDot11fNeighborReportRequest * pFrm, bool append_ie);
11671 uint32_t dot11f_pack_neighbor_report_request(tpAniSirGlobal pCtx,
11672 	tDot11fNeighborReportRequest *pFrm, uint8_t *pBuf,
11673 	uint32_t nBuf, uint32_t *pnConsumed);
11674 uint32_t dot11f_get_packed_neighbor_report_request_size(tpAniSirGlobal pCtx,
11675 	tDot11fNeighborReportRequest *pFrm,
11676 	uint32_t *pnNeeded);
11677 
11678 #ifdef __cplusplus
11679 } /* End extern "C". */
11680 #endif /* C++ */
11681 
11682 typedef struct sDot11fNeighborReportResponse{
11683 	tDot11fFfCategory              Category;
11684 	tDot11fFfAction                Action;
11685 	tDot11fFfDialogToken           DialogToken;
11686 	uint16_t                       num_NeighborReport;
11687 	tDot11fIENeighborReport        NeighborReport[15];
11688 } tDot11fNeighborReportResponse;
11689 
11690 #define DOT11F_NEIGHBORREPORTRESPONSE (19)
11691 
11692 #ifdef __cplusplus
11693 extern "C" {
11694 #endif /* C++ */
11695 
11696 uint32_t dot11f_unpack_neighbor_report_response(tpAniSirGlobal pCtx,
11697 	uint8_t *pBuf, uint32_t nBuf,
11698 	tDot11fNeighborReportResponse * pFrm, bool append_ie);
11699 uint32_t dot11f_pack_neighbor_report_response(tpAniSirGlobal pCtx,
11700 	tDot11fNeighborReportResponse *pFrm, uint8_t *pBuf,
11701 	uint32_t nBuf, uint32_t *pnConsumed);
11702 uint32_t dot11f_get_packed_neighbor_report_response_size(tpAniSirGlobal pCtx,
11703 	tDot11fNeighborReportResponse *pFrm,
11704 	uint32_t *pnNeeded);
11705 
11706 #ifdef __cplusplus
11707 } /* End extern "C". */
11708 #endif /* C++ */
11709 
11710 typedef struct sDot11fOperatingMode{
11711 	tDot11fFfCategory             Category;
11712 	tDot11fFfAction               Action;
11713 	tDot11fFfOperatingMode        OperatingMode;
11714 } tDot11fOperatingMode;
11715 
11716 #define DOT11F_OPERATINGMODE (20)
11717 
11718 #ifdef __cplusplus
11719 extern "C" {
11720 #endif /* C++ */
11721 
11722 uint32_t dot11f_unpack_operating_mode(tpAniSirGlobal pCtx,
11723 	uint8_t *pBuf, uint32_t nBuf,
11724 	tDot11fOperatingMode * pFrm, bool append_ie);
11725 uint32_t dot11f_pack_operating_mode(tpAniSirGlobal pCtx,
11726 	tDot11fOperatingMode *pFrm, uint8_t *pBuf,
11727 	uint32_t nBuf, uint32_t *pnConsumed);
11728 uint32_t dot11f_get_packed_operating_mode_size(tpAniSirGlobal pCtx,
11729 	tDot11fOperatingMode *pFrm,
11730 	uint32_t *pnNeeded);
11731 
11732 #ifdef __cplusplus
11733 } /* End extern "C". */
11734 #endif /* C++ */
11735 
11736 typedef struct sDot11fProbeRequest{
11737 	tDot11fIESSID                    SSID;
11738 	tDot11fIESuppRates               SuppRates;
11739 	tDot11fIERequestedInfo           RequestedInfo;
11740 	tDot11fIEExtSuppRates            ExtSuppRates;
11741 	tDot11fIEDSParams                DSParams;
11742 	tDot11fIEHTCaps                  HTCaps;
11743 	tDot11fIEExtCap                  ExtCap;
11744 	tDot11fIEVHTCaps                 VHTCaps;
11745 	tDot11fIEhe_cap                  he_cap;
11746 	tDot11fIEhe_6ghz_band_cap        he_6ghz_band_cap;
11747 	tDot11fIEeht_cap                 eht_cap;
11748 	tDot11fIEmlo_ie                  mlo_ie;
11749 	tDot11fIEWscProbeReq             WscProbeReq;
11750 	tDot11fIEWFATPC                  WFATPC;
11751 	tDot11fIEP2PProbeReq             P2PProbeReq;
11752 	tDot11fIEqcn_ie                  qcn_ie;
11753 } tDot11fProbeRequest;
11754 
11755 #define DOT11F_PROBEREQUEST (21)
11756 
11757 #ifdef __cplusplus
11758 extern "C" {
11759 #endif /* C++ */
11760 
11761 uint32_t dot11f_unpack_probe_request(tpAniSirGlobal pCtx,
11762 	uint8_t *pBuf, uint32_t nBuf,
11763 	tDot11fProbeRequest * pFrm, bool append_ie);
11764 uint32_t dot11f_pack_probe_request(tpAniSirGlobal pCtx,
11765 	tDot11fProbeRequest *pFrm, uint8_t *pBuf,
11766 	uint32_t nBuf, uint32_t *pnConsumed);
11767 uint32_t dot11f_get_packed_probe_request_size(tpAniSirGlobal pCtx,
11768 	tDot11fProbeRequest *pFrm,
11769 	uint32_t *pnNeeded);
11770 
11771 #ifdef __cplusplus
11772 } /* End extern "C". */
11773 #endif /* C++ */
11774 
11775 typedef struct sDot11fProbeResponse{
11776 	tDot11fFfTimeStamp                      TimeStamp;
11777 	tDot11fFfBeaconInterval                 BeaconInterval;
11778 	tDot11fFfCapabilities                   Capabilities;
11779 	tDot11fIESSID                           SSID;
11780 	tDot11fIESuppRates                      SuppRates;
11781 	tDot11fIEFHParamSet                     FHParamSet;
11782 	tDot11fIEDSParams                       DSParams;
11783 	tDot11fIECFParams                       CFParams;
11784 	tDot11fIECountry                        Country;
11785 	tDot11fIEFHParams                       FHParams;
11786 	tDot11fIEFHPattTable                    FHPattTable;
11787 	tDot11fIEPowerConstraints               PowerConstraints;
11788 	tDot11fIEChanSwitchAnn                  ChanSwitchAnn;
11789 	tDot11fIEQuiet                          Quiet;
11790 	tDot11fIETPCReport                      TPCReport;
11791 	tDot11fIEERPInfo                        ERPInfo;
11792 	tDot11fIEExtSuppRates                   ExtSuppRates;
11793 	tDot11fIERSNOpaque                      RSNOpaque;
11794 	tDot11fIEQBSSLoad                       QBSSLoad;
11795 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11796 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11797 	tDot11fIEAPChannelReport                APChannelReport;
11798 	tDot11fIEMobilityDomain                 MobilityDomain;
11799 	tDot11fIEext_chan_switch_ann            ext_chan_switch_ann;
11800 	tDot11fIESuppOperatingClasses           SuppOperatingClasses;
11801 	tDot11fIEHTCaps                         HTCaps;
11802 	tDot11fIEHTInfo                         HTInfo;
11803 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11804 	tDot11fIEExtCap                         ExtCap;
11805 	tDot11fIEVHTCaps                        VHTCaps;
11806 	tDot11fIEVHTOperation                   VHTOperation;
11807 	uint16_t                                num_transmit_power_env;
11808 	tDot11fIEtransmit_power_env             transmit_power_env[8];
11809 	tDot11fIEChannelSwitchWrapper           ChannelSwitchWrapper;
11810 	tDot11fIEVHTExtBssLoad                  VHTExtBssLoad;
11811 	tDot11fIEfils_indication                fils_indication;
11812 	tDot11fIEmax_chan_switch_time           max_chan_switch_time;
11813 	tDot11fIEesp_information                esp_information;
11814 	tDot11fIEhe_cap                         he_cap;
11815 	tDot11fIEhe_op                          he_op;
11816 	tDot11fIEspatial_reuse                  spatial_reuse;
11817 	tDot11fIEbss_color_change               bss_color_change;
11818 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11819 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11820 	tDot11fIEsec_chan_offset_ele            sec_chan_offset_ele;
11821 	tDot11fIEWAPI                           WAPI;
11822 	tDot11fIEESETxmitPower                  ESETxmitPower;
11823 	tDot11fIEeht_cap                        eht_cap;
11824 	tDot11fIEeht_op                         eht_op;
11825 	tDot11fIEmlo_ie                         mlo_ie;
11826 	uint16_t                                num_t2lm_ie;
11827 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11828 	tDot11fIEWPA                            WPA;
11829 	tDot11fIEWMMInfoAp                      WMMInfoAp;
11830 	tDot11fIEWMMParams                      WMMParams;
11831 	tDot11fIEWMMCaps                        WMMCaps;
11832 	tDot11fIEESEVersion                     ESEVersion;
11833 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11834 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11835 	tDot11fIEWscProbeRes                    WscProbeRes;
11836 	tDot11fIEP2PProbeRes                    P2PProbeRes;
11837 	tDot11fIEVendor1IE                      Vendor1IE;
11838 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11839 	tDot11fIEVendor3IE                      Vendor3IE;
11840 	tDot11fIEhs20vendor_ie                  hs20vendor_ie;
11841 	tDot11fIEQComVendorIE                   QComVendorIE;
11842 	tDot11fIEMBO_IE                         MBO_IE;
11843 	tDot11fIEqcn_ie                         qcn_ie;
11844 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11845 } tDot11fProbeResponse;
11846 
11847 #define DOT11F_PROBERESPONSE (22)
11848 
11849 #ifdef __cplusplus
11850 extern "C" {
11851 #endif /* C++ */
11852 
11853 uint32_t dot11f_unpack_probe_response(tpAniSirGlobal pCtx,
11854 	uint8_t *pBuf, uint32_t nBuf,
11855 	tDot11fProbeResponse * pFrm, bool append_ie);
11856 uint32_t dot11f_pack_probe_response(tpAniSirGlobal pCtx,
11857 	tDot11fProbeResponse *pFrm, uint8_t *pBuf,
11858 	uint32_t nBuf, uint32_t *pnConsumed);
11859 uint32_t dot11f_get_packed_probe_response_size(tpAniSirGlobal pCtx,
11860 	tDot11fProbeResponse *pFrm,
11861 	uint32_t *pnNeeded);
11862 
11863 #ifdef __cplusplus
11864 } /* End extern "C". */
11865 #endif /* C++ */
11866 
11867 typedef struct sDot11fQosMapConfigure{
11868 	tDot11fFfCategory         Category;
11869 	tDot11fFfAction           Action;
11870 	tDot11fIEQosMapSet        QosMapSet;
11871 } tDot11fQosMapConfigure;
11872 
11873 #define DOT11F_QOSMAPCONFIGURE (23)
11874 
11875 #ifdef __cplusplus
11876 extern "C" {
11877 #endif /* C++ */
11878 
11879 uint32_t dot11f_unpack_qos_map_configure(tpAniSirGlobal pCtx,
11880 	uint8_t *pBuf, uint32_t nBuf,
11881 	tDot11fQosMapConfigure * pFrm, bool append_ie);
11882 uint32_t dot11f_pack_qos_map_configure(tpAniSirGlobal pCtx,
11883 	tDot11fQosMapConfigure *pFrm, uint8_t *pBuf,
11884 	uint32_t nBuf, uint32_t *pnConsumed);
11885 uint32_t dot11f_get_packed_qos_map_configure_size(tpAniSirGlobal pCtx,
11886 	tDot11fQosMapConfigure *pFrm,
11887 	uint32_t *pnNeeded);
11888 
11889 #ifdef __cplusplus
11890 } /* End extern "C". */
11891 #endif /* C++ */
11892 
11893 typedef struct sDot11fRadioMeasurementReport{
11894 	tDot11fFfCategory                 Category;
11895 	tDot11fFfAction                   Action;
11896 	tDot11fFfDialogToken              DialogToken;
11897 	uint16_t                          num_MeasurementReport;
11898 	tDot11fIEMeasurementReport        MeasurementReport[1];
11899 } tDot11fRadioMeasurementReport;
11900 
11901 #define DOT11F_RADIOMEASUREMENTREPORT (24)
11902 
11903 #ifdef __cplusplus
11904 extern "C" {
11905 #endif /* C++ */
11906 
11907 uint32_t dot11f_unpack_radio_measurement_report(tpAniSirGlobal pCtx,
11908 	uint8_t *pBuf, uint32_t nBuf,
11909 	tDot11fRadioMeasurementReport * pFrm, bool append_ie);
11910 uint32_t dot11f_pack_radio_measurement_report(tpAniSirGlobal pCtx,
11911 	tDot11fRadioMeasurementReport *pFrm, uint8_t *pBuf,
11912 	uint32_t nBuf, uint32_t *pnConsumed);
11913 uint32_t dot11f_get_packed_radio_measurement_report_size(tpAniSirGlobal pCtx,
11914 	tDot11fRadioMeasurementReport *pFrm,
11915 	uint32_t *pnNeeded);
11916 
11917 #ifdef __cplusplus
11918 } /* End extern "C". */
11919 #endif /* C++ */
11920 
11921 typedef struct sDot11fRadioMeasurementRequest{
11922 	tDot11fFfCategory                  Category;
11923 	tDot11fFfAction                    Action;
11924 	tDot11fFfDialogToken               DialogToken;
11925 	tDot11fFfNumOfRepetitions          NumOfRepetitions;
11926 	uint16_t                           num_MeasurementRequest;
11927 	tDot11fIEMeasurementRequest        MeasurementRequest[5];
11928 } tDot11fRadioMeasurementRequest;
11929 
11930 #define DOT11F_RADIOMEASUREMENTREQUEST (25)
11931 
11932 #ifdef __cplusplus
11933 extern "C" {
11934 #endif /* C++ */
11935 
11936 uint32_t dot11f_unpack_radio_measurement_request(tpAniSirGlobal pCtx,
11937 	uint8_t *pBuf, uint32_t nBuf,
11938 	tDot11fRadioMeasurementRequest * pFrm, bool append_ie);
11939 uint32_t dot11f_pack_radio_measurement_request(tpAniSirGlobal pCtx,
11940 	tDot11fRadioMeasurementRequest *pFrm, uint8_t *pBuf,
11941 	uint32_t nBuf, uint32_t *pnConsumed);
11942 uint32_t dot11f_get_packed_radio_measurement_request_size(tpAniSirGlobal pCtx,
11943 	tDot11fRadioMeasurementRequest *pFrm,
11944 	uint32_t *pnNeeded);
11945 
11946 #ifdef __cplusplus
11947 } /* End extern "C". */
11948 #endif /* C++ */
11949 
11950 typedef struct sDot11fReAssocRequest{
11951 	tDot11fFfCapabilities                Capabilities;
11952 	tDot11fFfListenInterval              ListenInterval;
11953 	tDot11fFfCurrentAPAddress            CurrentAPAddress;
11954 	tDot11fIESSID                        SSID;
11955 	tDot11fIESuppRates                   SuppRates;
11956 	tDot11fIEExtSuppRates                ExtSuppRates;
11957 	tDot11fIEPowerCaps                   PowerCaps;
11958 	tDot11fIESuppChannels                SuppChannels;
11959 	tDot11fIERSNOpaque                   RSNOpaque;
11960 	tDot11fIEQOSCapsStation              QOSCapsStation;
11961 	tDot11fIERRMEnabledCap               RRMEnabledCap;
11962 	tDot11fIEMobilityDomain              MobilityDomain;
11963 	tDot11fIEFTInfo                      FTInfo;
11964 	uint16_t                             num_RICDataDesc;
11965 	tDot11fIERICDataDesc                 RICDataDesc[2];
11966 	tDot11fIESuppOperatingClasses        SuppOperatingClasses;
11967 	tDot11fIEHTCaps                      HTCaps;
11968 	tDot11fIEExtCap                      ExtCap;
11969 	tDot11fIEVHTCaps                     VHTCaps;
11970 	tDot11fIEOperatingMode               OperatingMode;
11971 	tDot11fIEbss_max_idle_period         bss_max_idle_period;
11972 	tDot11fIEhe_cap                      he_cap;
11973 	tDot11fIEhe_6ghz_band_cap            he_6ghz_band_cap;
11974 	tDot11fIEWAPIOpaque                  WAPIOpaque;
11975 	tDot11fIEWAPI                        WAPI;
11976 	tDot11fIEQosMapSet                   QosMapSet;
11977 	tDot11fIEESECckmOpaque               ESECckmOpaque;
11978 	tDot11fIEeht_cap                     eht_cap;
11979 	tDot11fIEmlo_ie                      mlo_ie;
11980 	uint16_t                             num_t2lm_ie;
11981 	tDot11fIEt2lm_ie                     t2lm_ie[2];
11982 	tDot11fIEWPAOpaque                   WPAOpaque;
11983 	tDot11fIEWMMCaps                     WMMCaps;
11984 	tDot11fIEWMMInfoStation              WMMInfoStation;
11985 	tDot11fIEWscIEOpaque                 WscIEOpaque;
11986 	tDot11fIEESERadMgmtCap               ESERadMgmtCap;
11987 	tDot11fIEESEVersion                  ESEVersion;
11988 	uint16_t                             num_WMMTSPEC;
11989 	tDot11fIEWMMTSPEC                    WMMTSPEC[4];
11990 	tDot11fIEESETrafStrmRateSet          ESETrafStrmRateSet;
11991 	tDot11fIEP2PIEOpaque                 P2PIEOpaque;
11992 	tDot11fIEWFDIEOpaque                 WFDIEOpaque;
11993 	tDot11fIEvendor_vht_ie               vendor_vht_ie;
11994 	tDot11fIEhs20vendor_ie               hs20vendor_ie;
11995 } tDot11fReAssocRequest;
11996 
11997 #define DOT11F_REASSOCREQUEST (26)
11998 
11999 #ifdef __cplusplus
12000 extern "C" {
12001 #endif /* C++ */
12002 
12003 uint32_t dot11f_unpack_re_assoc_request(tpAniSirGlobal pCtx,
12004 	uint8_t *pBuf, uint32_t nBuf,
12005 	tDot11fReAssocRequest * pFrm, bool append_ie);
12006 uint32_t dot11f_pack_re_assoc_request(tpAniSirGlobal pCtx,
12007 	tDot11fReAssocRequest *pFrm, uint8_t *pBuf,
12008 	uint32_t nBuf, uint32_t *pnConsumed);
12009 uint32_t dot11f_get_packed_re_assoc_request_size(tpAniSirGlobal pCtx,
12010 	tDot11fReAssocRequest *pFrm,
12011 	uint32_t *pnNeeded);
12012 
12013 #ifdef __cplusplus
12014 } /* End extern "C". */
12015 #endif /* C++ */
12016 
12017 typedef struct sDot11fReAssocResponse{
12018 	tDot11fFfCapabilities                   Capabilities;
12019 	tDot11fFfStatus                         Status;
12020 	tDot11fFfAID                            AID;
12021 	tDot11fIESuppRates                      SuppRates;
12022 	tDot11fIEExtSuppRates                   ExtSuppRates;
12023 	tDot11fIEEDCAParamSet                   EDCAParamSet;
12024 	tDot11fIERCPIIE                         RCPIIE;
12025 	tDot11fIERSNIIE                         RSNIIE;
12026 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
12027 	tDot11fIERSNOpaque                      RSNOpaque;
12028 	tDot11fIEMobilityDomain                 MobilityDomain;
12029 	tDot11fIEFTInfo                         FTInfo;
12030 	uint16_t                                num_RICDataDesc;
12031 	tDot11fIERICDataDesc                    RICDataDesc[2];
12032 	tDot11fIETimeoutInterval                TimeoutInterval;
12033 	tDot11fIEHTCaps                         HTCaps;
12034 	tDot11fIEHTInfo                         HTInfo;
12035 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
12036 	tDot11fIEExtCap                         ExtCap;
12037 	tDot11fIEbss_max_idle_period            bss_max_idle_period;
12038 	tDot11fIEVHTCaps                        VHTCaps;
12039 	tDot11fIEVHTOperation                   VHTOperation;
12040 	tDot11fIEOperatingMode                  OperatingMode;
12041 	tDot11fIEhe_cap                         he_cap;
12042 	tDot11fIEhe_op                          he_op;
12043 	tDot11fIEspatial_reuse                  spatial_reuse;
12044 	tDot11fIEbss_color_change               bss_color_change;
12045 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
12046 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
12047 	tDot11fIEQosMapSet                      QosMapSet;
12048 	tDot11fIEESETxmitPower                  ESETxmitPower;
12049 	tDot11fIEeht_cap                        eht_cap;
12050 	tDot11fIEeht_op                         eht_op;
12051 	tDot11fIEmlo_ie                         mlo_ie;
12052 	uint16_t                                num_t2lm_ie;
12053 	tDot11fIEt2lm_ie                        t2lm_ie[2];
12054 	tDot11fIEWPA                            WPA;
12055 	tDot11fIEWMMParams                      WMMParams;
12056 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
12057 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
12058 	uint16_t                                num_WMMTSPEC;
12059 	tDot11fIEWMMTSPEC                       WMMTSPEC[4];
12060 	tDot11fIEESETrafStrmRateSet             ESETrafStrmRateSet;
12061 	tDot11fIEWscReassocRes                  WscReassocRes;
12062 	tDot11fIEP2PAssocRes                    P2PAssocRes;
12063 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
12064 	tDot11fIEMBO_IE                         MBO_IE;
12065 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
12066 } tDot11fReAssocResponse;
12067 
12068 #define DOT11F_REASSOCRESPONSE (27)
12069 
12070 #ifdef __cplusplus
12071 extern "C" {
12072 #endif /* C++ */
12073 
12074 uint32_t dot11f_unpack_re_assoc_response(tpAniSirGlobal pCtx,
12075 	uint8_t *pBuf, uint32_t nBuf,
12076 	tDot11fReAssocResponse * pFrm, bool append_ie);
12077 uint32_t dot11f_pack_re_assoc_response(tpAniSirGlobal pCtx,
12078 	tDot11fReAssocResponse *pFrm, uint8_t *pBuf,
12079 	uint32_t nBuf, uint32_t *pnConsumed);
12080 uint32_t dot11f_get_packed_re_assoc_response_size(tpAniSirGlobal pCtx,
12081 	tDot11fReAssocResponse *pFrm,
12082 	uint32_t *pnNeeded);
12083 
12084 #ifdef __cplusplus
12085 } /* End extern "C". */
12086 #endif /* C++ */
12087 
12088 typedef struct sDot11fSMPowerSave{
12089 	tDot11fFfCategory              Category;
12090 	tDot11fFfAction                Action;
12091 	tDot11fFfSMPowerModeSet        SMPowerModeSet;
12092 } tDot11fSMPowerSave;
12093 
12094 #define DOT11F_SMPOWERSAVE (28)
12095 
12096 #ifdef __cplusplus
12097 extern "C" {
12098 #endif /* C++ */
12099 
12100 uint32_t dot11f_unpack_sm_power_save(tpAniSirGlobal pCtx,
12101 	uint8_t *pBuf, uint32_t nBuf,
12102 	tDot11fSMPowerSave * pFrm, bool append_ie);
12103 uint32_t dot11f_pack_sm_power_save(tpAniSirGlobal pCtx,
12104 	tDot11fSMPowerSave *pFrm, uint8_t *pBuf,
12105 	uint32_t nBuf, uint32_t *pnConsumed);
12106 uint32_t dot11f_get_packed_sm_power_save_size(tpAniSirGlobal pCtx,
12107 	tDot11fSMPowerSave *pFrm,
12108 	uint32_t *pnNeeded);
12109 
12110 #ifdef __cplusplus
12111 } /* End extern "C". */
12112 #endif /* C++ */
12113 
12114 typedef struct sDot11fSaQueryReq{
12115 	tDot11fFfCategory             Category;
12116 	tDot11fFfAction               Action;
12117 	tDot11fFfTransactionId        TransactionId;
12118 	tDot11fIEoci                  oci;
12119 } tDot11fSaQueryReq;
12120 
12121 #define DOT11F_SAQUERYREQ (29)
12122 
12123 #ifdef __cplusplus
12124 extern "C" {
12125 #endif /* C++ */
12126 
12127 uint32_t dot11f_unpack_sa_query_req(tpAniSirGlobal pCtx,
12128 	uint8_t *pBuf, uint32_t nBuf,
12129 	tDot11fSaQueryReq * pFrm, bool append_ie);
12130 uint32_t dot11f_pack_sa_query_req(tpAniSirGlobal pCtx,
12131 	tDot11fSaQueryReq *pFrm, uint8_t *pBuf,
12132 	uint32_t nBuf, uint32_t *pnConsumed);
12133 uint32_t dot11f_get_packed_sa_query_req_size(tpAniSirGlobal pCtx,
12134 	tDot11fSaQueryReq *pFrm,
12135 	uint32_t *pnNeeded);
12136 
12137 #ifdef __cplusplus
12138 } /* End extern "C". */
12139 #endif /* C++ */
12140 
12141 typedef struct sDot11fSaQueryRsp{
12142 	tDot11fFfCategory             Category;
12143 	tDot11fFfAction               Action;
12144 	tDot11fFfTransactionId        TransactionId;
12145 	tDot11fIEoci                  oci;
12146 } tDot11fSaQueryRsp;
12147 
12148 #define DOT11F_SAQUERYRSP (30)
12149 
12150 #ifdef __cplusplus
12151 extern "C" {
12152 #endif /* C++ */
12153 
12154 uint32_t dot11f_unpack_sa_query_rsp(tpAniSirGlobal pCtx,
12155 	uint8_t *pBuf, uint32_t nBuf,
12156 	tDot11fSaQueryRsp * pFrm, bool append_ie);
12157 uint32_t dot11f_pack_sa_query_rsp(tpAniSirGlobal pCtx,
12158 	tDot11fSaQueryRsp *pFrm, uint8_t *pBuf,
12159 	uint32_t nBuf, uint32_t *pnConsumed);
12160 uint32_t dot11f_get_packed_sa_query_rsp_size(tpAniSirGlobal pCtx,
12161 	tDot11fSaQueryRsp *pFrm,
12162 	uint32_t *pnNeeded);
12163 
12164 #ifdef __cplusplus
12165 } /* End extern "C". */
12166 #endif /* C++ */
12167 
12168 typedef struct sDot11fTDLSDisReq{
12169 	tDot11fFfCategory              Category;
12170 	tDot11fFfAction                Action;
12171 	tDot11fFfDialogToken           DialogToken;
12172 	tDot11fIELinkIdentifier        LinkIdentifier;
12173 } tDot11fTDLSDisReq;
12174 
12175 #define DOT11F_TDLSDISREQ (31)
12176 
12177 #ifdef __cplusplus
12178 extern "C" {
12179 #endif /* C++ */
12180 
12181 uint32_t dot11f_unpack_tdls_dis_req(tpAniSirGlobal pCtx,
12182 	uint8_t *pBuf, uint32_t nBuf,
12183 	tDot11fTDLSDisReq * pFrm, bool append_ie);
12184 uint32_t dot11f_pack_tdls_dis_req(tpAniSirGlobal pCtx,
12185 	tDot11fTDLSDisReq *pFrm, uint8_t *pBuf,
12186 	uint32_t nBuf, uint32_t *pnConsumed);
12187 uint32_t dot11f_get_packed_tdls_dis_req_size(tpAniSirGlobal pCtx,
12188 	tDot11fTDLSDisReq *pFrm,
12189 	uint32_t *pnNeeded);
12190 
12191 #ifdef __cplusplus
12192 } /* End extern "C". */
12193 #endif /* C++ */
12194 
12195 typedef struct sDot11fTDLSDisRsp{
12196 	tDot11fFfCategory                      Category;
12197 	tDot11fFfAction                        Action;
12198 	tDot11fFfDialogToken                   DialogToken;
12199 	tDot11fFfCapabilities                  Capabilities;
12200 	tDot11fIESuppRates                     SuppRates;
12201 	tDot11fIEExtSuppRates                  ExtSuppRates;
12202 	tDot11fIESuppChannels                  SuppChannels;
12203 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
12204 	tDot11fIERSN                           RSN;
12205 	tDot11fIEExtCap                        ExtCap;
12206 	tDot11fIEFTInfo                        FTInfo;
12207 	tDot11fIETimeoutInterval               TimeoutInterval;
12208 	tDot11fIERICData                       RICData;
12209 	tDot11fIEHTCaps                        HTCaps;
12210 	tDot11fIEht2040_bss_coexistence        ht2040_bss_coexistence;
12211 	tDot11fIELinkIdentifier                LinkIdentifier;
12212 	tDot11fIEVHTCaps                       VHTCaps;
12213 	tDot11fIEhe_cap                        he_cap;
12214 } tDot11fTDLSDisRsp;
12215 
12216 #define DOT11F_TDLSDISRSP (32)
12217 
12218 #ifdef __cplusplus
12219 extern "C" {
12220 #endif /* C++ */
12221 
12222 uint32_t dot11f_unpack_tdls_dis_rsp(tpAniSirGlobal pCtx,
12223 	uint8_t *pBuf, uint32_t nBuf,
12224 	tDot11fTDLSDisRsp * pFrm, bool append_ie);
12225 uint32_t dot11f_pack_tdls_dis_rsp(tpAniSirGlobal pCtx,
12226 	tDot11fTDLSDisRsp *pFrm, uint8_t *pBuf,
12227 	uint32_t nBuf, uint32_t *pnConsumed);
12228 uint32_t dot11f_get_packed_tdls_dis_rsp_size(tpAniSirGlobal pCtx,
12229 	tDot11fTDLSDisRsp *pFrm,
12230 	uint32_t *pnNeeded);
12231 
12232 #ifdef __cplusplus
12233 } /* End extern "C". */
12234 #endif /* C++ */
12235 
12236 typedef struct sDot11fTDLSPeerTrafficInd{
12237 	tDot11fFfCategory              Category;
12238 	tDot11fFfAction                Action;
12239 	tDot11fFfDialogToken           DialogToken;
12240 	tDot11fIELinkIdentifier        LinkIdentifier;
12241 	tDot11fIEPTIControl            PTIControl;
12242 	tDot11fIEPUBufferStatus        PUBufferStatus;
12243 } tDot11fTDLSPeerTrafficInd;
12244 
12245 #define DOT11F_TDLSPEERTRAFFICIND (33)
12246 
12247 #ifdef __cplusplus
12248 extern "C" {
12249 #endif /* C++ */
12250 
12251 uint32_t dot11f_unpack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx,
12252 	uint8_t *pBuf, uint32_t nBuf,
12253 	tDot11fTDLSPeerTrafficInd * pFrm, bool append_ie);
12254 uint32_t dot11f_pack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx,
12255 	tDot11fTDLSPeerTrafficInd *pFrm, uint8_t *pBuf,
12256 	uint32_t nBuf, uint32_t *pnConsumed);
12257 uint32_t dot11f_get_packed_tdls_peer_traffic_ind_size(tpAniSirGlobal pCtx,
12258 	tDot11fTDLSPeerTrafficInd *pFrm,
12259 	uint32_t *pnNeeded);
12260 
12261 #ifdef __cplusplus
12262 } /* End extern "C". */
12263 #endif /* C++ */
12264 
12265 typedef struct sDot11fTDLSPeerTrafficRsp{
12266 	tDot11fFfCategory              Category;
12267 	tDot11fFfAction                Action;
12268 	tDot11fFfDialogToken           DialogToken;
12269 	tDot11fIELinkIdentifier        LinkIdentifier;
12270 } tDot11fTDLSPeerTrafficRsp;
12271 
12272 #define DOT11F_TDLSPEERTRAFFICRSP (34)
12273 
12274 #ifdef __cplusplus
12275 extern "C" {
12276 #endif /* C++ */
12277 
12278 uint32_t dot11f_unpack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx,
12279 	uint8_t *pBuf, uint32_t nBuf,
12280 	tDot11fTDLSPeerTrafficRsp * pFrm, bool append_ie);
12281 uint32_t dot11f_pack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx,
12282 	tDot11fTDLSPeerTrafficRsp *pFrm, uint8_t *pBuf,
12283 	uint32_t nBuf, uint32_t *pnConsumed);
12284 uint32_t dot11f_get_packed_tdls_peer_traffic_rsp_size(tpAniSirGlobal pCtx,
12285 	tDot11fTDLSPeerTrafficRsp *pFrm,
12286 	uint32_t *pnNeeded);
12287 
12288 #ifdef __cplusplus
12289 } /* End extern "C". */
12290 #endif /* C++ */
12291 
12292 typedef struct sDot11fTDLSSetupCnf{
12293 	tDot11fFfCategory               Category;
12294 	tDot11fFfAction                 Action;
12295 	tDot11fFfStatus                 Status;
12296 	tDot11fFfDialogToken            DialogToken;
12297 	tDot11fIERSN                    RSN;
12298 	tDot11fIEEDCAParamSet           EDCAParamSet;
12299 	tDot11fIEFTInfo                 FTInfo;
12300 	tDot11fIETimeoutInterval        TimeoutInterval;
12301 	tDot11fIEHTInfo                 HTInfo;
12302 	tDot11fIELinkIdentifier         LinkIdentifier;
12303 	tDot11fIEWMMParams              WMMParams;
12304 	tDot11fIEVHTOperation           VHTOperation;
12305 	tDot11fIEOperatingMode          OperatingMode;
12306 	tDot11fIEhe_op                  he_op;
12307 } tDot11fTDLSSetupCnf;
12308 
12309 #define DOT11F_TDLSSETUPCNF (35)
12310 
12311 #ifdef __cplusplus
12312 extern "C" {
12313 #endif /* C++ */
12314 
12315 uint32_t dot11f_unpack_tdls_setup_cnf(tpAniSirGlobal pCtx,
12316 	uint8_t *pBuf, uint32_t nBuf,
12317 	tDot11fTDLSSetupCnf * pFrm, bool append_ie);
12318 uint32_t dot11f_pack_tdls_setup_cnf(tpAniSirGlobal pCtx,
12319 	tDot11fTDLSSetupCnf *pFrm, uint8_t *pBuf,
12320 	uint32_t nBuf, uint32_t *pnConsumed);
12321 uint32_t dot11f_get_packed_tdls_setup_cnf_size(tpAniSirGlobal pCtx,
12322 	tDot11fTDLSSetupCnf *pFrm,
12323 	uint32_t *pnNeeded);
12324 
12325 #ifdef __cplusplus
12326 } /* End extern "C". */
12327 #endif /* C++ */
12328 
12329 typedef struct sDot11fTDLSSetupReq{
12330 	tDot11fFfCategory                      Category;
12331 	tDot11fFfAction                        Action;
12332 	tDot11fFfDialogToken                   DialogToken;
12333 	tDot11fFfCapabilities                  Capabilities;
12334 	tDot11fIESuppRates                     SuppRates;
12335 	tDot11fIECountry                       Country;
12336 	tDot11fIEExtSuppRates                  ExtSuppRates;
12337 	tDot11fIESuppChannels                  SuppChannels;
12338 	tDot11fIERSN                           RSN;
12339 	tDot11fIEExtCap                        ExtCap;
12340 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
12341 	tDot11fIEQOSCapsStation                QOSCapsStation;
12342 	tDot11fIEFTInfo                        FTInfo;
12343 	tDot11fIETimeoutInterval               TimeoutInterval;
12344 	tDot11fIERICData                       RICData;
12345 	tDot11fIEHTCaps                        HTCaps;
12346 	tDot11fIEht2040_bss_coexistence        ht2040_bss_coexistence;
12347 	tDot11fIELinkIdentifier                LinkIdentifier;
12348 	tDot11fIEWMMInfoStation                WMMInfoStation;
12349 	tDot11fIEAID                           AID;
12350 	tDot11fIEVHTCaps                       VHTCaps;
12351 	tDot11fIEhe_cap                        he_cap;
12352 	tDot11fIEhe_6ghz_band_cap              he_6ghz_band_cap;
12353 } tDot11fTDLSSetupReq;
12354 
12355 #define DOT11F_TDLSSETUPREQ (36)
12356 
12357 #ifdef __cplusplus
12358 extern "C" {
12359 #endif /* C++ */
12360 
12361 uint32_t dot11f_unpack_tdls_setup_req(tpAniSirGlobal pCtx,
12362 	uint8_t *pBuf, uint32_t nBuf,
12363 	tDot11fTDLSSetupReq * pFrm, bool append_ie);
12364 uint32_t dot11f_pack_tdls_setup_req(tpAniSirGlobal pCtx,
12365 	tDot11fTDLSSetupReq *pFrm, uint8_t *pBuf,
12366 	uint32_t nBuf, uint32_t *pnConsumed);
12367 uint32_t dot11f_get_packed_tdls_setup_req_size(tpAniSirGlobal pCtx,
12368 	tDot11fTDLSSetupReq *pFrm,
12369 	uint32_t *pnNeeded);
12370 
12371 #ifdef __cplusplus
12372 } /* End extern "C". */
12373 #endif /* C++ */
12374 
12375 typedef struct sDot11fTDLSSetupRsp{
12376 	tDot11fFfCategory                      Category;
12377 	tDot11fFfAction                        Action;
12378 	tDot11fFfStatus                        Status;
12379 	tDot11fFfDialogToken                   DialogToken;
12380 	tDot11fFfCapabilities                  Capabilities;
12381 	tDot11fIESuppRates                     SuppRates;
12382 	tDot11fIECountry                       Country;
12383 	tDot11fIEExtSuppRates                  ExtSuppRates;
12384 	tDot11fIESuppChannels                  SuppChannels;
12385 	tDot11fIERSN                           RSN;
12386 	tDot11fIEExtCap                        ExtCap;
12387 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
12388 	tDot11fIEQOSCapsStation                QOSCapsStation;
12389 	tDot11fIEFTInfo                        FTInfo;
12390 	tDot11fIETimeoutInterval               TimeoutInterval;
12391 	tDot11fIERICData                       RICData;
12392 	tDot11fIEHTCaps                        HTCaps;
12393 	tDot11fIEht2040_bss_coexistence        ht2040_bss_coexistence;
12394 	tDot11fIELinkIdentifier                LinkIdentifier;
12395 	tDot11fIEWMMInfoStation                WMMInfoStation;
12396 	tDot11fIEAID                           AID;
12397 	tDot11fIEVHTCaps                       VHTCaps;
12398 	tDot11fIEOperatingMode                 OperatingMode;
12399 	tDot11fIEhe_cap                        he_cap;
12400 	tDot11fIEhe_6ghz_band_cap              he_6ghz_band_cap;
12401 } tDot11fTDLSSetupRsp;
12402 
12403 #define DOT11F_TDLSSETUPRSP (37)
12404 
12405 #ifdef __cplusplus
12406 extern "C" {
12407 #endif /* C++ */
12408 
12409 uint32_t dot11f_unpack_tdls_setup_rsp(tpAniSirGlobal pCtx,
12410 	uint8_t *pBuf, uint32_t nBuf,
12411 	tDot11fTDLSSetupRsp * pFrm, bool append_ie);
12412 uint32_t dot11f_pack_tdls_setup_rsp(tpAniSirGlobal pCtx,
12413 	tDot11fTDLSSetupRsp *pFrm, uint8_t *pBuf,
12414 	uint32_t nBuf, uint32_t *pnConsumed);
12415 uint32_t dot11f_get_packed_tdls_setup_rsp_size(tpAniSirGlobal pCtx,
12416 	tDot11fTDLSSetupRsp *pFrm,
12417 	uint32_t *pnNeeded);
12418 
12419 #ifdef __cplusplus
12420 } /* End extern "C". */
12421 #endif /* C++ */
12422 
12423 typedef struct sDot11fTDLSTeardown{
12424 	tDot11fFfCategory              Category;
12425 	tDot11fFfAction                Action;
12426 	tDot11fFfReason                Reason;
12427 	tDot11fIEFTInfo                FTInfo;
12428 	tDot11fIELinkIdentifier        LinkIdentifier;
12429 } tDot11fTDLSTeardown;
12430 
12431 #define DOT11F_TDLSTEARDOWN (38)
12432 
12433 #ifdef __cplusplus
12434 extern "C" {
12435 #endif /* C++ */
12436 
12437 uint32_t dot11f_unpack_tdls_teardown(tpAniSirGlobal pCtx,
12438 	uint8_t *pBuf, uint32_t nBuf,
12439 	tDot11fTDLSTeardown * pFrm, bool append_ie);
12440 uint32_t dot11f_pack_tdls_teardown(tpAniSirGlobal pCtx,
12441 	tDot11fTDLSTeardown *pFrm, uint8_t *pBuf,
12442 	uint32_t nBuf, uint32_t *pnConsumed);
12443 uint32_t dot11f_get_packed_tdls_teardown_size(tpAniSirGlobal pCtx,
12444 	tDot11fTDLSTeardown *pFrm,
12445 	uint32_t *pnNeeded);
12446 
12447 #ifdef __cplusplus
12448 } /* End extern "C". */
12449 #endif /* C++ */
12450 
12451 typedef struct sDot11fTPCReport{
12452 	tDot11fFfCategory           Category;
12453 	tDot11fFfAction             Action;
12454 	tDot11fFfDialogToken        DialogToken;
12455 	tDot11fIETPCReport          TPCReport;
12456 } tDot11fTPCReport;
12457 
12458 #define DOT11F_TPCREPORT (39)
12459 
12460 #ifdef __cplusplus
12461 extern "C" {
12462 #endif /* C++ */
12463 
12464 uint32_t dot11f_unpack_tpc_report(tpAniSirGlobal pCtx,
12465 	uint8_t *pBuf, uint32_t nBuf,
12466 	tDot11fTPCReport * pFrm, bool append_ie);
12467 uint32_t dot11f_pack_tpc_report(tpAniSirGlobal pCtx,
12468 	tDot11fTPCReport *pFrm, uint8_t *pBuf,
12469 	uint32_t nBuf, uint32_t *pnConsumed);
12470 uint32_t dot11f_get_packed_tpc_report_size(tpAniSirGlobal pCtx,
12471 	tDot11fTPCReport *pFrm,
12472 	uint32_t *pnNeeded);
12473 
12474 #ifdef __cplusplus
12475 } /* End extern "C". */
12476 #endif /* C++ */
12477 
12478 typedef struct sDot11fTPCRequest{
12479 	tDot11fFfCategory           Category;
12480 	tDot11fFfAction             Action;
12481 	tDot11fFfDialogToken        DialogToken;
12482 	tDot11fIETPCRequest         TPCRequest;
12483 } tDot11fTPCRequest;
12484 
12485 #define DOT11F_TPCREQUEST (40)
12486 
12487 #ifdef __cplusplus
12488 extern "C" {
12489 #endif /* C++ */
12490 
12491 uint32_t dot11f_unpack_tpc_request(tpAniSirGlobal pCtx,
12492 	uint8_t *pBuf, uint32_t nBuf,
12493 	tDot11fTPCRequest * pFrm, bool append_ie);
12494 uint32_t dot11f_pack_tpc_request(tpAniSirGlobal pCtx,
12495 	tDot11fTPCRequest *pFrm, uint8_t *pBuf,
12496 	uint32_t nBuf, uint32_t *pnConsumed);
12497 uint32_t dot11f_get_packed_tpc_request_size(tpAniSirGlobal pCtx,
12498 	tDot11fTPCRequest *pFrm,
12499 	uint32_t *pnNeeded);
12500 
12501 #ifdef __cplusplus
12502 } /* End extern "C". */
12503 #endif /* C++ */
12504 
12505 typedef struct sDot11fTimingAdvertisementFrame{
12506 	tDot11fFfTimeStamp                TimeStamp;
12507 	tDot11fFfCapabilities             Capabilities;
12508 	tDot11fIECountry                  Country;
12509 	tDot11fIEPowerConstraints         PowerConstraints;
12510 	tDot11fIETimeAdvertisement        TimeAdvertisement;
12511 	tDot11fIEExtCap                   ExtCap;
12512 	tDot11fIEVendor1IE                Vendor1IE;
12513 	tDot11fIEVendor3IE                Vendor3IE;
12514 } tDot11fTimingAdvertisementFrame;
12515 
12516 #define DOT11F_TIMINGADVERTISEMENTFRAME (41)
12517 
12518 #ifdef __cplusplus
12519 extern "C" {
12520 #endif /* C++ */
12521 
12522 uint32_t dot11f_unpack_timing_advertisement_frame(tpAniSirGlobal pCtx,
12523 	uint8_t *pBuf, uint32_t nBuf,
12524 	tDot11fTimingAdvertisementFrame * pFrm, bool append_ie);
12525 uint32_t dot11f_pack_timing_advertisement_frame(tpAniSirGlobal pCtx,
12526 	tDot11fTimingAdvertisementFrame *pFrm, uint8_t *pBuf,
12527 	uint32_t nBuf, uint32_t *pnConsumed);
12528 uint32_t dot11f_get_packed_timing_advertisement_frame_size(tpAniSirGlobal pCtx,
12529 	tDot11fTimingAdvertisementFrame *pFrm,
12530 	uint32_t *pnNeeded);
12531 
12532 #ifdef __cplusplus
12533 } /* End extern "C". */
12534 #endif /* C++ */
12535 
12536 typedef struct sDot11fVHTGidManagementActionFrame{
12537 	tDot11fFfCategory                        Category;
12538 	tDot11fFfAction                          Action;
12539 	tDot11fFfVhtMembershipStatusArray        VhtMembershipStatusArray;
12540 	tDot11fFfVhtUserPositionArray            VhtUserPositionArray;
12541 } tDot11fVHTGidManagementActionFrame;
12542 
12543 #define DOT11F_VHTGIDMANAGEMENTACTIONFRAME (42)
12544 
12545 #ifdef __cplusplus
12546 extern "C" {
12547 #endif /* C++ */
12548 
12549 uint32_t dot11f_unpack_vht_gid_management_action_frame(tpAniSirGlobal pCtx,
12550 	uint8_t *pBuf, uint32_t nBuf,
12551 	tDot11fVHTGidManagementActionFrame * pFrm, bool append_ie);
12552 uint32_t dot11f_pack_vht_gid_management_action_frame(tpAniSirGlobal pCtx,
12553 	tDot11fVHTGidManagementActionFrame *pFrm, uint8_t *pBuf,
12554 	uint32_t nBuf, uint32_t *pnConsumed);
12555 uint32_t dot11f_get_packed_vht_gid_management_action_frame_size(tpAniSirGlobal pCtx,
12556 	tDot11fVHTGidManagementActionFrame *pFrm,
12557 	uint32_t *pnNeeded);
12558 
12559 #ifdef __cplusplus
12560 } /* End extern "C". */
12561 #endif /* C++ */
12562 
12563 typedef struct sDot11fWMMAddTSRequest{
12564 	tDot11fFfCategory                  Category;
12565 	tDot11fFfAction                    Action;
12566 	tDot11fFfDialogToken               DialogToken;
12567 	tDot11fFfStatusCode                StatusCode;
12568 	tDot11fIEWMMTSPEC                  WMMTSPEC;
12569 	tDot11fIEESETrafStrmRateSet        ESETrafStrmRateSet;
12570 } tDot11fWMMAddTSRequest;
12571 
12572 #define DOT11F_WMMADDTSREQUEST (43)
12573 
12574 #ifdef __cplusplus
12575 extern "C" {
12576 #endif /* C++ */
12577 
12578 uint32_t dot11f_unpack_wmm_add_ts_request(tpAniSirGlobal pCtx,
12579 	uint8_t *pBuf, uint32_t nBuf,
12580 	tDot11fWMMAddTSRequest * pFrm, bool append_ie);
12581 uint32_t dot11f_pack_wmm_add_ts_request(tpAniSirGlobal pCtx,
12582 	tDot11fWMMAddTSRequest *pFrm, uint8_t *pBuf,
12583 	uint32_t nBuf, uint32_t *pnConsumed);
12584 uint32_t dot11f_get_packed_wmm_add_ts_request_size(tpAniSirGlobal pCtx,
12585 	tDot11fWMMAddTSRequest *pFrm,
12586 	uint32_t *pnNeeded);
12587 
12588 #ifdef __cplusplus
12589 } /* End extern "C". */
12590 #endif /* C++ */
12591 
12592 typedef struct sDot11fWMMAddTSResponse{
12593 	tDot11fFfCategory              Category;
12594 	tDot11fFfAction                Action;
12595 	tDot11fFfDialogToken           DialogToken;
12596 	tDot11fFfStatusCode            StatusCode;
12597 	tDot11fIEWMMTSPEC              WMMTSPEC;
12598 	tDot11fIEESETrafStrmMet        ESETrafStrmMet;
12599 } tDot11fWMMAddTSResponse;
12600 
12601 #define DOT11F_WMMADDTSRESPONSE (44)
12602 
12603 #ifdef __cplusplus
12604 extern "C" {
12605 #endif /* C++ */
12606 
12607 uint32_t dot11f_unpack_wmm_add_ts_response(tpAniSirGlobal pCtx,
12608 	uint8_t *pBuf, uint32_t nBuf,
12609 	tDot11fWMMAddTSResponse * pFrm, bool append_ie);
12610 uint32_t dot11f_pack_wmm_add_ts_response(tpAniSirGlobal pCtx,
12611 	tDot11fWMMAddTSResponse *pFrm, uint8_t *pBuf,
12612 	uint32_t nBuf, uint32_t *pnConsumed);
12613 uint32_t dot11f_get_packed_wmm_add_ts_response_size(tpAniSirGlobal pCtx,
12614 	tDot11fWMMAddTSResponse *pFrm,
12615 	uint32_t *pnNeeded);
12616 
12617 #ifdef __cplusplus
12618 } /* End extern "C". */
12619 #endif /* C++ */
12620 
12621 typedef struct sDot11fWMMDelTS{
12622 	tDot11fFfCategory           Category;
12623 	tDot11fFfAction             Action;
12624 	tDot11fFfDialogToken        DialogToken;
12625 	tDot11fFfStatusCode         StatusCode;
12626 	tDot11fIEWMMTSPEC           WMMTSPEC;
12627 } tDot11fWMMDelTS;
12628 
12629 #define DOT11F_WMMDELTS (45)
12630 
12631 #ifdef __cplusplus
12632 extern "C" {
12633 #endif /* C++ */
12634 
12635 uint32_t dot11f_unpack_wmm_del_ts(tpAniSirGlobal pCtx,
12636 	uint8_t *pBuf, uint32_t nBuf,
12637 	tDot11fWMMDelTS * pFrm, bool append_ie);
12638 uint32_t dot11f_pack_wmm_del_ts(tpAniSirGlobal pCtx,
12639 	tDot11fWMMDelTS *pFrm, uint8_t *pBuf,
12640 	uint32_t nBuf, uint32_t *pnConsumed);
12641 uint32_t dot11f_get_packed_wmm_del_ts_size(tpAniSirGlobal pCtx,
12642 	tDot11fWMMDelTS *pFrm,
12643 	uint32_t *pnNeeded);
12644 
12645 #ifdef __cplusplus
12646 } /* End extern "C". */
12647 #endif /* C++ */
12648 
12649 typedef struct sDot11faddba_req{
12650 	tDot11fFfCategory                  Category;
12651 	tDot11fFfAction                    Action;
12652 	tDot11fFfDialogToken               DialogToken;
12653 	tDot11fFfaddba_param_set           addba_param_set;
12654 	tDot11fFfba_timeout                ba_timeout;
12655 	tDot11fFfba_start_seq_ctrl         ba_start_seq_ctrl;
12656 	tDot11fIEaddba_extn_element        addba_extn_element;
12657 } tDot11faddba_req;
12658 
12659 #define DOT11F_ADDBA_REQ (46)
12660 
12661 #ifdef __cplusplus
12662 extern "C" {
12663 #endif /* C++ */
12664 
12665 uint32_t dot11f_unpack_addba_req(tpAniSirGlobal pCtx,
12666 	uint8_t *pBuf, uint32_t nBuf,
12667 	tDot11faddba_req * pFrm, bool append_ie);
12668 uint32_t dot11f_pack_addba_req(tpAniSirGlobal pCtx,
12669 	tDot11faddba_req *pFrm, uint8_t *pBuf,
12670 	uint32_t nBuf, uint32_t *pnConsumed);
12671 uint32_t dot11f_get_packed_addba_req_size(tpAniSirGlobal pCtx,
12672 	tDot11faddba_req *pFrm,
12673 	uint32_t *pnNeeded);
12674 
12675 #ifdef __cplusplus
12676 } /* End extern "C". */
12677 #endif /* C++ */
12678 
12679 typedef struct sDot11faddba_rsp{
12680 	tDot11fFfCategory                  Category;
12681 	tDot11fFfAction                    Action;
12682 	tDot11fFfDialogToken               DialogToken;
12683 	tDot11fFfStatus                    Status;
12684 	tDot11fFfaddba_param_set           addba_param_set;
12685 	tDot11fFfba_timeout                ba_timeout;
12686 	tDot11fIEaddba_extn_element        addba_extn_element;
12687 } tDot11faddba_rsp;
12688 
12689 #define DOT11F_ADDBA_RSP (47)
12690 
12691 #ifdef __cplusplus
12692 extern "C" {
12693 #endif /* C++ */
12694 
12695 uint32_t dot11f_unpack_addba_rsp(tpAniSirGlobal pCtx,
12696 	uint8_t *pBuf, uint32_t nBuf,
12697 	tDot11faddba_rsp * pFrm, bool append_ie);
12698 uint32_t dot11f_pack_addba_rsp(tpAniSirGlobal pCtx,
12699 	tDot11faddba_rsp *pFrm, uint8_t *pBuf,
12700 	uint32_t nBuf, uint32_t *pnConsumed);
12701 uint32_t dot11f_get_packed_addba_rsp_size(tpAniSirGlobal pCtx,
12702 	tDot11faddba_rsp *pFrm,
12703 	uint32_t *pnNeeded);
12704 
12705 #ifdef __cplusplus
12706 } /* End extern "C". */
12707 #endif /* C++ */
12708 
12709 typedef struct sDot11fdelba_req{
12710 	tDot11fFfCategory               Category;
12711 	tDot11fFfAction                 Action;
12712 	tDot11fFfdelba_param_set        delba_param_set;
12713 	tDot11fFfReason                 Reason;
12714 } tDot11fdelba_req;
12715 
12716 #define DOT11F_DELBA_REQ (48)
12717 
12718 #ifdef __cplusplus
12719 extern "C" {
12720 #endif /* C++ */
12721 
12722 uint32_t dot11f_unpack_delba_req(tpAniSirGlobal pCtx,
12723 	uint8_t *pBuf, uint32_t nBuf,
12724 	tDot11fdelba_req * pFrm, bool append_ie);
12725 uint32_t dot11f_pack_delba_req(tpAniSirGlobal pCtx,
12726 	tDot11fdelba_req *pFrm, uint8_t *pBuf,
12727 	uint32_t nBuf, uint32_t *pnConsumed);
12728 uint32_t dot11f_get_packed_delba_req_size(tpAniSirGlobal pCtx,
12729 	tDot11fdelba_req *pFrm,
12730 	uint32_t *pnNeeded);
12731 
12732 #ifdef __cplusplus
12733 } /* End extern "C". */
12734 #endif /* C++ */
12735 
12736 typedef struct sDot11fepcs_neg_req{
12737 	tDot11fFfCategory           Category;
12738 	tDot11fFfAction             Action;
12739 	tDot11fFfDialogToken        DialogToken;
12740 } tDot11fepcs_neg_req;
12741 
12742 #define DOT11F_EPCS_NEG_REQ (49)
12743 
12744 #ifdef __cplusplus
12745 extern "C" {
12746 #endif /* C++ */
12747 
12748 uint32_t dot11f_unpack_epcs_neg_req(tpAniSirGlobal pCtx,
12749 	uint8_t *pBuf, uint32_t nBuf,
12750 	tDot11fepcs_neg_req * pFrm, bool append_ie);
12751 uint32_t dot11f_pack_epcs_neg_req(tpAniSirGlobal pCtx,
12752 	tDot11fepcs_neg_req *pFrm, uint8_t *pBuf,
12753 	uint32_t nBuf, uint32_t *pnConsumed);
12754 uint32_t dot11f_get_packed_epcs_neg_reqSize(tpAniSirGlobal pCtx,
12755 	tDot11fepcs_neg_req *pFrm,
12756 	uint32_t *pnNeeded);
12757 
12758 #ifdef __cplusplus
12759 } /* End extern "C". */
12760 #endif /* C++ */
12761 
12762 typedef struct sDot11fepcs_neg_rsp{
12763 	tDot11fFfCategory           Category;
12764 	tDot11fFfAction             Action;
12765 	tDot11fFfDialogToken        DialogToken;
12766 	tDot11fFfStatus             Status;
12767 } tDot11fepcs_neg_rsp;
12768 
12769 #define DOT11F_EPCS_NEG_RSP (50)
12770 
12771 #ifdef __cplusplus
12772 extern "C" {
12773 #endif /* C++ */
12774 
12775 uint32_t dot11f_unpack_epcs_neg_rsp(tpAniSirGlobal pCtx,
12776 	uint8_t *pBuf, uint32_t nBuf,
12777 	tDot11fepcs_neg_rsp * pFrm, bool append_ie);
12778 uint32_t dot11f_pack_epcs_neg_rsp(tpAniSirGlobal pCtx,
12779 	tDot11fepcs_neg_rsp *pFrm, uint8_t *pBuf,
12780 	uint32_t nBuf, uint32_t *pnConsumed);
12781 uint32_t dot11f_get_packed_epcs_neg_rspSize(tpAniSirGlobal pCtx,
12782 	tDot11fepcs_neg_rsp *pFrm,
12783 	uint32_t *pnNeeded);
12784 
12785 #ifdef __cplusplus
12786 } /* End extern "C". */
12787 #endif /* C++ */
12788 
12789 typedef struct sDot11fepcs_teardown{
12790 	tDot11fFfCategory        Category;
12791 	tDot11fFfAction          Action;
12792 } tDot11fepcs_teardown;
12793 
12794 #define DOT11F_EPCS_TEARDOWN (51)
12795 
12796 #ifdef __cplusplus
12797 extern "C" {
12798 #endif /* C++ */
12799 
12800 uint32_t dot11f_unpack_epcs_teardown(tpAniSirGlobal pCtx,
12801 	uint8_t *pBuf, uint32_t nBuf,
12802 	tDot11fepcs_teardown * pFrm, bool append_ie);
12803 uint32_t dot11f_pack_epcs_teardown(tpAniSirGlobal pCtx,
12804 	tDot11fepcs_teardown *pFrm, uint8_t *pBuf,
12805 	uint32_t nBuf, uint32_t *pnConsumed);
12806 uint32_t dot11f_get_packed_epcs_teardownSize(tpAniSirGlobal pCtx,
12807 	tDot11fepcs_teardown *pFrm,
12808 	uint32_t *pnNeeded);
12809 
12810 #ifdef __cplusplus
12811 } /* End extern "C". */
12812 #endif /* C++ */
12813 
12814 typedef struct sDot11fext_channel_switch_action_frame{
12815 	tDot11fFfCategory                          Category;
12816 	tDot11fFfAction                            Action;
12817 	tDot11fFfext_chan_switch_ann_action        ext_chan_switch_ann_action;
12818 	tDot11fIEWiderBWChanSwitchAnn              WiderBWChanSwitchAnn;
12819 	tDot11fIEqcn_ie                            qcn_ie;
12820 	tDot11fIEbw_ind_element                    bw_ind_element;
12821 } tDot11fext_channel_switch_action_frame;
12822 
12823 #define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME (52)
12824 
12825 #ifdef __cplusplus
12826 extern "C" {
12827 #endif /* C++ */
12828 
12829 uint32_t dot11f_unpack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx,
12830 	uint8_t *pBuf, uint32_t nBuf,
12831 	tDot11fext_channel_switch_action_frame * pFrm, bool append_ie);
12832 uint32_t dot11f_pack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx,
12833 	tDot11fext_channel_switch_action_frame *pFrm, uint8_t *pBuf,
12834 	uint32_t nBuf, uint32_t *pnConsumed);
12835 uint32_t dot11f_get_packed_ext_channel_switch_action_frame_size(tpAniSirGlobal pCtx,
12836 	tDot11fext_channel_switch_action_frame *pFrm,
12837 	uint32_t *pnNeeded);
12838 
12839 #ifdef __cplusplus
12840 } /* End extern "C". */
12841 #endif /* C++ */
12842 
12843 typedef struct sDot11fht2040_bss_coexistence_mgmt_action_frame{
12844 	tDot11fFfCategory                            Category;
12845 	tDot11fFfAction                              Action;
12846 	tDot11fIEht2040_bss_coexistence              ht2040_bss_coexistence;
12847 	tDot11fIEht2040_bss_intolerant_report        ht2040_bss_intolerant_report;
12848 } tDot11fht2040_bss_coexistence_mgmt_action_frame;
12849 
12850 #define DOT11F_HT2040_BSS_COEXISTENCE_MGMT_ACTION_FRAME (53)
12851 
12852 #ifdef __cplusplus
12853 extern "C" {
12854 #endif /* C++ */
12855 
12856 uint32_t dot11f_unpack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx,
12857 	uint8_t *pBuf, uint32_t nBuf,
12858 	tDot11fht2040_bss_coexistence_mgmt_action_frame * pFrm, bool append_ie);
12859 uint32_t dot11f_pack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx,
12860 	tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm, uint8_t *pBuf,
12861 	uint32_t nBuf, uint32_t *pnConsumed);
12862 uint32_t dot11f_get_packed_ht2040_bss_coexistence_mgmt_action_frameSize(tpAniSirGlobal pCtx,
12863 	tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm,
12864 	uint32_t *pnNeeded);
12865 
12866 #ifdef __cplusplus
12867 } /* End extern "C". */
12868 #endif /* C++ */
12869 
12870 typedef struct sDot11fmscs_request_action_frame{
12871 	tDot11fFfCategory                  Category;
12872 	tDot11fFfAction                    Action;
12873 	tDot11fFfDialogToken               DialogToken;
12874 	tDot11fIEdescriptor_element        descriptor_element;
12875 } tDot11fmscs_request_action_frame;
12876 
12877 #define DOT11F_MSCS_REQUEST_ACTION_FRAME (54)
12878 
12879 #ifdef __cplusplus
12880 extern "C" {
12881 #endif /* C++ */
12882 
12883 uint32_t dot11f_unpack_mscs_request_action_frame(tpAniSirGlobal pCtx,
12884 	uint8_t *pBuf, uint32_t nBuf,
12885 	tDot11fmscs_request_action_frame * pFrm, bool append_ie);
12886 uint32_t dot11f_pack_mscs_request_action_frame(tpAniSirGlobal pCtx,
12887 	tDot11fmscs_request_action_frame *pFrm, uint8_t *pBuf,
12888 	uint32_t nBuf, uint32_t *pnConsumed);
12889 uint32_t dot11f_get_packed_mscs_request_action_frameSize(tpAniSirGlobal pCtx,
12890 	tDot11fmscs_request_action_frame *pFrm,
12891 	uint32_t *pnNeeded);
12892 
12893 #ifdef __cplusplus
12894 } /* End extern "C". */
12895 #endif /* C++ */
12896 
12897 typedef struct sDot11fp2p_oper_chan_change_confirm{
12898 	tDot11fFfCategory                  Category;
12899 	tDot11fFfp2p_action_oui            p2p_action_oui;
12900 	tDot11fFfp2p_action_subtype        p2p_action_subtype;
12901 	tDot11fFfDialogToken               DialogToken;
12902 	tDot11fIEHTCaps                    HTCaps;
12903 	tDot11fIEVHTCaps                   VHTCaps;
12904 	tDot11fIEOperatingMode             OperatingMode;
12905 } tDot11fp2p_oper_chan_change_confirm;
12906 
12907 #define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (55)
12908 
12909 #ifdef __cplusplus
12910 extern "C" {
12911 #endif /* C++ */
12912 
12913 uint32_t dot11f_unpack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx,
12914 	uint8_t *pBuf, uint32_t nBuf,
12915 	tDot11fp2p_oper_chan_change_confirm * pFrm, bool append_ie);
12916 uint32_t dot11f_pack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx,
12917 	tDot11fp2p_oper_chan_change_confirm *pFrm, uint8_t *pBuf,
12918 	uint32_t nBuf, uint32_t *pnConsumed);
12919 uint32_t dot11f_get_packed_p2p_oper_chan_change_confirmSize(tpAniSirGlobal pCtx,
12920 	tDot11fp2p_oper_chan_change_confirm *pFrm,
12921 	uint32_t *pnNeeded);
12922 
12923 #ifdef __cplusplus
12924 } /* End extern "C". */
12925 #endif /* C++ */
12926 
12927 typedef struct sDot11ft2lm_neg_req{
12928 	tDot11fFfCategory           Category;
12929 	tDot11fFfAction             Action;
12930 	tDot11fFfDialogToken        DialogToken;
12931 	uint16_t                    num_t2lm_ie;
12932 	tDot11fIEt2lm_ie            t2lm_ie[2];
12933 } tDot11ft2lm_neg_req;
12934 
12935 #define DOT11F_T2LM_NEG_REQ (56)
12936 
12937 #ifdef __cplusplus
12938 extern "C" {
12939 #endif /* C++ */
12940 
12941 uint32_t dot11f_unpack_t2lm_neg_req(tpAniSirGlobal pCtx,
12942 	uint8_t *pBuf, uint32_t nBuf,
12943 	tDot11ft2lm_neg_req * pFrm, bool append_ie);
12944 uint32_t dot11f_pack_t2lm_neg_req(tpAniSirGlobal pCtx,
12945 	tDot11ft2lm_neg_req *pFrm, uint8_t *pBuf,
12946 	uint32_t nBuf, uint32_t *pnConsumed);
12947 uint32_t dot11f_get_packed_t2lm_neg_reqSize(tpAniSirGlobal pCtx,
12948 	tDot11ft2lm_neg_req *pFrm,
12949 	uint32_t *pnNeeded);
12950 
12951 #ifdef __cplusplus
12952 } /* End extern "C". */
12953 #endif /* C++ */
12954 
12955 typedef struct sDot11ft2lm_neg_rsp{
12956 	tDot11fFfCategory           Category;
12957 	tDot11fFfAction             Action;
12958 	tDot11fFfDialogToken        DialogToken;
12959 	tDot11fFfStatus             Status;
12960 } tDot11ft2lm_neg_rsp;
12961 
12962 #define DOT11F_T2LM_NEG_RSP (57)
12963 
12964 #ifdef __cplusplus
12965 extern "C" {
12966 #endif /* C++ */
12967 
12968 uint32_t dot11f_unpack_t2lm_neg_rsp(tpAniSirGlobal pCtx,
12969 	uint8_t *pBuf, uint32_t nBuf,
12970 	tDot11ft2lm_neg_rsp * pFrm, bool append_ie);
12971 uint32_t dot11f_pack_t2lm_neg_rsp(tpAniSirGlobal pCtx,
12972 	tDot11ft2lm_neg_rsp *pFrm, uint8_t *pBuf,
12973 	uint32_t nBuf, uint32_t *pnConsumed);
12974 uint32_t dot11f_get_packed_t2lm_neg_rspSize(tpAniSirGlobal pCtx,
12975 	tDot11ft2lm_neg_rsp *pFrm,
12976 	uint32_t *pnNeeded);
12977 
12978 #ifdef __cplusplus
12979 } /* End extern "C". */
12980 #endif /* C++ */
12981 
12982 typedef struct sDot11ft2lm_teardown{
12983 	tDot11fFfCategory        Category;
12984 	tDot11fFfAction          Action;
12985 } tDot11ft2lm_teardown;
12986 
12987 #define DOT11F_T2LM_TEARDOWN (58)
12988 
12989 #ifdef __cplusplus
12990 extern "C" {
12991 #endif /* C++ */
12992 
12993 uint32_t dot11f_unpack_t2lm_teardown(tpAniSirGlobal pCtx,
12994 	uint8_t *pBuf, uint32_t nBuf,
12995 	tDot11ft2lm_teardown * pFrm, bool append_ie);
12996 uint32_t dot11f_pack_t2lm_teardown(tpAniSirGlobal pCtx,
12997 	tDot11ft2lm_teardown *pFrm, uint8_t *pBuf,
12998 	uint32_t nBuf, uint32_t *pnConsumed);
12999 uint32_t dot11f_get_packed_t2lm_teardownSize(tpAniSirGlobal pCtx,
13000 	tDot11ft2lm_teardown *pFrm,
13001 	uint32_t *pnNeeded);
13002 
13003 #ifdef __cplusplus
13004 } /* End extern "C". */
13005 #endif /* C++ */
13006 
13007 typedef struct sDot11fvendor_action_frame{
13008 	tDot11fFfCategory                     Category;
13009 	tDot11fFfvendor_oui                   vendor_oui;
13010 	tDot11fFfvendor_action_subtype        vendor_action_subtype;
13011 } tDot11fvendor_action_frame;
13012 
13013 #define DOT11F_VENDOR_ACTION_FRAME (59)
13014 
13015 #ifdef __cplusplus
13016 extern "C" {
13017 #endif /* C++ */
13018 
13019 uint32_t dot11f_unpack_vendor_action_frame(tpAniSirGlobal pCtx,
13020 	uint8_t *pBuf, uint32_t nBuf,
13021 	tDot11fvendor_action_frame * pFrm, bool append_ie);
13022 uint32_t dot11f_pack_vendor_action_frame(tpAniSirGlobal pCtx,
13023 	tDot11fvendor_action_frame *pFrm, uint8_t *pBuf,
13024 	uint32_t nBuf, uint32_t *pnConsumed);
13025 uint32_t dot11f_get_packed_vendor_action_frameSize(tpAniSirGlobal pCtx,
13026 	tDot11fvendor_action_frame *pFrm,
13027 	uint32_t *pnNeeded);
13028 
13029 #ifdef __cplusplus
13030 } /* End extern "C". */
13031 #endif /* C++ */
13032 
13033 #endif /* DOT11F_H */
13034