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