xref: /wlan-driver/qcacld-3.0/core/mac/src/include/dot11f.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name #ifndef DOT11F_H
21*5113495bSYour Name #define DOT11F_H
22*5113495bSYour Name /*
23*5113495bSYour Name  * \file dot11f.h
24*5113495bSYour Name  *
25*5113495bSYour Name  * \brief Structures, function prototypes & definitions
26*5113495bSYour Name  * for working with 802.11 Frames
27*5113495bSYour Name  *
28*5113495bSYour Name  *
29*5113495bSYour Name  * This file was automatically generated by 'framesc'
30*5113495bSYour Name  * Fri Nov 10 10:07:33 2023 from the following file(s):
31*5113495bSYour Name  *
32*5113495bSYour Name  * dot11f.frms
33*5113495bSYour Name  *
34*5113495bSYour Name  * PLEASE DON'T EDIT THIS FILE BY HAND!
35*5113495bSYour Name  *
36*5113495bSYour Name  * Instead, please update the input files & re-run
37*5113495bSYour Name  * 'framesc'  For more information on 'framesc' & the
38*5113495bSYour Name  * frames language,  run 'framesc --help'.
39*5113495bSYour Name  *
40*5113495bSYour Name  */
41*5113495bSYour Name 
42*5113495bSYour Name typedef uint32_t tDOT11F_U64[2];
43*5113495bSYour Name 
44*5113495bSYour Name #if defined (_MSC_VER)
45*5113495bSYour Name #pragma warning (disable:4214)	/* nonstandard extension used */
46*5113495bSYour Name #endif /* Microsoft C/C++             bit field types other than int */
47*5113495bSYour Name 
48*5113495bSYour Name #if !defined __must_check
49*5113495bSYour Name #define __must_check
50*5113495bSYour Name #endif
51*5113495bSYour Name 
52*5113495bSYour Name #if !defined unlikely
53*5113495bSYour Name #define unlikely(x)    (x)
54*5113495bSYour Name #endif
55*5113495bSYour Name 
56*5113495bSYour Name /*
57*5113495bSYour Name  * Frames Return Codes:
58*5113495bSYour Name  *
59*5113495bSYour Name  * Success is indicated by a return value of zero.  Failure is indicated
60*5113495bSYour Name  * by the presence of the high bit.  Warnings encountered in the course
61*5113495bSYour Name  * of a successful parse are indicated by various bits in the lower 31
62*5113495bSYour Name  * being turned on.
63*5113495bSYour Name  *
64*5113495bSYour Name  * For instance, a return value of 0x0000000a would indicate that the
65*5113495bSYour Name  * parse succeeded, but that a mandatory IE wasn't present, and some IE
66*5113495bSYour Name  * was found to be corrupt.
67*5113495bSYour Name  *
68*5113495bSYour Name  *
69*5113495bSYour Name  */
70*5113495bSYour Name 
71*5113495bSYour Name #define DOT11F_PARSE_SUCCESS         (0x00000000)
72*5113495bSYour Name #define DOT11F_UNKNOWN_IES           (0x00000001)
73*5113495bSYour Name #define DOT11F_MANDATORY_IE_MISSING  (0x00000002)
74*5113495bSYour Name #define DOT11F_INCOMPLETE_IE         (0x00000004)
75*5113495bSYour Name #define DOT11F_SKIPPED_BAD_IE        (0x00000008)
76*5113495bSYour Name #define DOT11F_LAST_IE_TOO_LONG      (0x00000010)
77*5113495bSYour Name #define DOT11F_DUPLICATE_IE          (0x00000020)
78*5113495bSYour Name #define DOT11F_BAD_FIXED_VALUE       (0x00000040)
79*5113495bSYour Name #define DOT11F_INCOMPLETE_TLV        (0x00000080)
80*5113495bSYour Name #define DOT11F_INVALID_TLV_LENGTH    (0x00000100)
81*5113495bSYour Name #define DOT11F_SKIPPED_BAD_TLV       (0x00000200)
82*5113495bSYour Name #define DOT11F_UNKNOWN_TLVS          (0x00000400)
83*5113495bSYour Name #define DOT11F_LAST_TLV_TOO_LONG     (0x00000800)
84*5113495bSYour Name #define DOT11F_MANDATORY_TLV_MISSING (0x00001000)
85*5113495bSYour Name #define DOT11F_INTERNAL_ERROR        (0x10000001)
86*5113495bSYour Name #define DOT11F_MISSING_FIXED_FIELD   (0x10000002)
87*5113495bSYour Name #define DOT11F_BAD_INPUT_BUFFER      (0x10000003)
88*5113495bSYour Name #define DOT11F_BAD_OUTPUT_BUFFER     (0x10000004)
89*5113495bSYour Name #define DOT11F_BUFFER_OVERFLOW       (0x10000005)
90*5113495bSYour Name #define DOT11F_FAILED(code)          ((code) & 0x10000000)
91*5113495bSYour Name #define DOT11F_SUCCEEDED(code)       ((code) == 0)
92*5113495bSYour Name #define DOT11F_WARNED(code)          (!DOT11F_SUCCEEDED(code) && !DOT11F_FAILED(code))
93*5113495bSYour Name 
94*5113495bSYour Name /*********************************************************************
95*5113495bSYour Name  * Fixed Fields                                                      *
96*5113495bSYour Name  ********************************************************************/
97*5113495bSYour Name 
98*5113495bSYour Name typedef struct sDot11fFfAID {
99*5113495bSYour Name 	uint16_t associd;
100*5113495bSYour Name } tDot11fFfAID;
101*5113495bSYour Name 
102*5113495bSYour Name #define DOT11F_FF_AID_LEN (2)
103*5113495bSYour Name 
104*5113495bSYour Name void dot11f_unpack_ff_AID(tpAniSirGlobal, uint8_t *, tDot11fFfAID *);
105*5113495bSYour Name 
106*5113495bSYour Name void dot11f_pack_ff_aid(tpAniSirGlobal, tDot11fFfAID *, uint8_t *);
107*5113495bSYour Name 
108*5113495bSYour Name typedef struct sDot11fFfAction {
109*5113495bSYour Name 	uint8_t action;
110*5113495bSYour Name } tDot11fFfAction;
111*5113495bSYour Name 
112*5113495bSYour Name #define DOT11F_FF_ACTION_LEN (1)
113*5113495bSYour Name 
114*5113495bSYour Name void dot11f_unpack_ff_action(tpAniSirGlobal, uint8_t *, tDot11fFfAction *);
115*5113495bSYour Name 
116*5113495bSYour Name void dot11f_pack_ff_action(tpAniSirGlobal, tDot11fFfAction *, uint8_t *);
117*5113495bSYour Name 
118*5113495bSYour Name typedef struct sDot11fFfAuthAlgo {
119*5113495bSYour Name 	uint16_t algo;
120*5113495bSYour Name } tDot11fFfAuthAlgo;
121*5113495bSYour Name 
122*5113495bSYour Name #define DOT11F_FF_AUTHALGO_LEN (2)
123*5113495bSYour Name 
124*5113495bSYour Name void dot11f_unpack_ff_AuthAlgo(tpAniSirGlobal, uint8_t *,
125*5113495bSYour Name 			       tDot11fFfAuthAlgo *);
126*5113495bSYour Name 
127*5113495bSYour Name void dot11f_pack_ff_auth_algo(tpAniSirGlobal, tDot11fFfAuthAlgo *, uint8_t *);
128*5113495bSYour Name 
129*5113495bSYour Name typedef struct sDot11fFfAuthSeqNo {
130*5113495bSYour Name 	uint16_t no;
131*5113495bSYour Name } tDot11fFfAuthSeqNo;
132*5113495bSYour Name 
133*5113495bSYour Name #define DOT11F_FF_AUTHSEQNO_LEN (2)
134*5113495bSYour Name 
135*5113495bSYour Name void dot11f_unpack_ff_AuthSeqNo(tpAniSirGlobal, uint8_t *,
136*5113495bSYour Name 				tDot11fFfAuthSeqNo *);
137*5113495bSYour Name 
138*5113495bSYour Name void dot11f_pack_ff_auth_seq_no(tpAniSirGlobal, tDot11fFfAuthSeqNo *,
139*5113495bSYour Name 			      uint8_t *);
140*5113495bSYour Name 
141*5113495bSYour Name typedef struct sDot11fFfBeaconInterval {
142*5113495bSYour Name 	uint16_t interval;
143*5113495bSYour Name } tDot11fFfBeaconInterval;
144*5113495bSYour Name 
145*5113495bSYour Name #define DOT11F_FF_BEACONINTERVAL_LEN (2)
146*5113495bSYour Name 
147*5113495bSYour Name void dot11f_unpack_ff_BeaconInterval(tpAniSirGlobal, uint8_t *,
148*5113495bSYour Name 				     tDot11fFfBeaconInterval *);
149*5113495bSYour Name 
150*5113495bSYour Name void dot11f_pack_ff_beacon_interval(tpAniSirGlobal, tDot11fFfBeaconInterval *,
151*5113495bSYour Name 				   uint8_t *);
152*5113495bSYour Name 
153*5113495bSYour Name typedef struct sDot11fFfCapabilities {
154*5113495bSYour Name 	uint16_t                 ess:1;
155*5113495bSYour Name 	uint16_t                ibss:1;
156*5113495bSYour Name 	uint16_t          cfPollable:1;
157*5113495bSYour Name 	uint16_t           cfPollReq:1;
158*5113495bSYour Name 	uint16_t             privacy:1;
159*5113495bSYour Name 	uint16_t       shortPreamble:1;
160*5113495bSYour Name 	uint16_t  criticalUpdateFlag:1;
161*5113495bSYour Name 	uint16_t      channelAgility:1;
162*5113495bSYour Name 	uint16_t         spectrumMgt:1;
163*5113495bSYour Name 	uint16_t                 qos:1;
164*5113495bSYour Name 	uint16_t       shortSlotTime:1;
165*5113495bSYour Name 	uint16_t                apsd:1;
166*5113495bSYour Name 	uint16_t                 rrm:1;
167*5113495bSYour Name 	uint16_t            dsssOfdm:1;
168*5113495bSYour Name 	uint16_t           delayedBA:1;
169*5113495bSYour Name 	uint16_t         immediateBA:1;
170*5113495bSYour Name } tDot11fFfCapabilities;
171*5113495bSYour Name 
172*5113495bSYour Name #define DOT11F_FF_CAPABILITIES_LEN (2)
173*5113495bSYour Name 
174*5113495bSYour Name void dot11f_unpack_ff_capabilities(tpAniSirGlobal, uint8_t *,
175*5113495bSYour Name 				   tDot11fFfCapabilities *);
176*5113495bSYour Name 
177*5113495bSYour Name void dot11f_pack_ff_capabilities(tpAniSirGlobal, tDot11fFfCapabilities *,
178*5113495bSYour Name 				 uint8_t *);
179*5113495bSYour Name 
180*5113495bSYour Name #define CAPABILITIES_ESS_OFFSET                0
181*5113495bSYour Name #define CAPABILITIES_ESS_WIDTH                 1
182*5113495bSYour Name #define CAPABILITIES_IBSS_OFFSET               1
183*5113495bSYour Name #define CAPABILITIES_IBSS_WIDTH                1
184*5113495bSYour Name #define CAPABILITIES_CFPOLLABLE_OFFSET         2
185*5113495bSYour Name #define CAPABILITIES_CFPOLLABLE_WIDTH          1
186*5113495bSYour Name #define CAPABILITIES_CFPOLLREQ_OFFSET          3
187*5113495bSYour Name #define CAPABILITIES_CFPOLLREQ_WIDTH           1
188*5113495bSYour Name #define CAPABILITIES_PRIVACY_OFFSET            4
189*5113495bSYour Name #define CAPABILITIES_PRIVACY_WIDTH             1
190*5113495bSYour Name #define CAPABILITIES_SHORTPREAMBLE_OFFSET      5
191*5113495bSYour Name #define CAPABILITIES_SHORTPREAMBLE_WIDTH       1
192*5113495bSYour Name #define CAPABILITIES_CRITICALUPDATEFLAG_OFFSET 6
193*5113495bSYour Name #define CAPABILITIES_CRITICALUPDATEFLAG_WIDTH  1
194*5113495bSYour Name #define CAPABILITIES_CHANNELAGILITY_OFFSET     7
195*5113495bSYour Name #define CAPABILITIES_CHANNELAGILITY_WIDTH      1
196*5113495bSYour Name #define CAPABILITIES_SPECTRUMMGT_OFFSET        8
197*5113495bSYour Name #define CAPABILITIES_SPECTRUMMGT_WIDTH         1
198*5113495bSYour Name #define CAPABILITIES_QOS_OFFSET                9
199*5113495bSYour Name #define CAPABILITIES_QOS_WIDTH                 1
200*5113495bSYour Name #define CAPABILITIES_SHORTSLOTTIME_OFFSET      10
201*5113495bSYour Name #define CAPABILITIES_SHORTSLOTTIME_WIDTH       1
202*5113495bSYour Name #define CAPABILITIES_APSD_OFFSET               11
203*5113495bSYour Name #define CAPABILITIES_APSD_WIDTH                1
204*5113495bSYour Name #define CAPABILITIES_RRM_OFFSET                12
205*5113495bSYour Name #define CAPABILITIES_RRM_WIDTH                 1
206*5113495bSYour Name #define CAPABILITIES_DSSSOFDM_OFFSET           13
207*5113495bSYour Name #define CAPABILITIES_DSSSOFDM_WIDTH            1
208*5113495bSYour Name #define CAPABILITIES_DELAYEDBA_OFFSET          14
209*5113495bSYour Name #define CAPABILITIES_DELAYEDBA_WIDTH           1
210*5113495bSYour Name #define CAPABILITIES_IMMEDIATEBA_OFFSET        15
211*5113495bSYour Name #define CAPABILITIES_IMMEDIATEBA_WIDTH         1
212*5113495bSYour Name 
213*5113495bSYour Name typedef struct sDot11fFfCategory {
214*5113495bSYour Name 	uint8_t category;
215*5113495bSYour Name } tDot11fFfCategory;
216*5113495bSYour Name 
217*5113495bSYour Name #define DOT11F_FF_CATEGORY_LEN (1)
218*5113495bSYour Name 
219*5113495bSYour Name void dot11f_unpack_ff_category(tpAniSirGlobal, uint8_t *,
220*5113495bSYour Name 			       tDot11fFfCategory *);
221*5113495bSYour Name 
222*5113495bSYour Name void dot11f_pack_ff_category(tpAniSirGlobal, tDot11fFfCategory *, uint8_t *);
223*5113495bSYour Name 
224*5113495bSYour Name typedef struct sDot11fFfCurrentAPAddress {
225*5113495bSYour Name 	uint8_t mac[6];
226*5113495bSYour Name } tDot11fFfCurrentAPAddress;
227*5113495bSYour Name 
228*5113495bSYour Name #define DOT11F_FF_CURRENTAPADDRESS_LEN (6)
229*5113495bSYour Name 
230*5113495bSYour Name void dot11f_unpack_ff_current_ap_address(tpAniSirGlobal, uint8_t *,
231*5113495bSYour Name 				       tDot11fFfCurrentAPAddress *);
232*5113495bSYour Name 
233*5113495bSYour Name void dot11f_pack_ff_current_ap_address(tpAniSirGlobal,
234*5113495bSYour Name 				     tDot11fFfCurrentAPAddress *,
235*5113495bSYour Name 				     uint8_t *);
236*5113495bSYour Name 
237*5113495bSYour Name 
238*5113495bSYour Name typedef struct sDot11fFfDialogToken {
239*5113495bSYour Name 	uint8_t token;
240*5113495bSYour Name } tDot11fFfDialogToken;
241*5113495bSYour Name 
242*5113495bSYour Name #define DOT11F_FF_DIALOGTOKEN_LEN (1)
243*5113495bSYour Name 
244*5113495bSYour Name void dot11f_unpack_ff_dialog_token(tpAniSirGlobal, uint8_t *,
245*5113495bSYour Name 				  tDot11fFfDialogToken *);
246*5113495bSYour Name 
247*5113495bSYour Name void dot11f_pack_ff_dialog_token(tpAniSirGlobal, tDot11fFfDialogToken *,
248*5113495bSYour Name 				uint8_t *);
249*5113495bSYour Name 
250*5113495bSYour Name typedef struct sDot11fFfLinkMargin {
251*5113495bSYour Name 	uint8_t linkMargin;
252*5113495bSYour Name } tDot11fFfLinkMargin;
253*5113495bSYour Name 
254*5113495bSYour Name #define DOT11F_FF_LINKMARGIN_LEN (1)
255*5113495bSYour Name 
256*5113495bSYour Name void dot11f_unpack_ff_link_margin(tpAniSirGlobal, uint8_t *,
257*5113495bSYour Name 				 tDot11fFfLinkMargin *);
258*5113495bSYour Name 
259*5113495bSYour Name void dot11f_pack_ff_link_margin(tpAniSirGlobal, tDot11fFfLinkMargin *,
260*5113495bSYour Name 			       uint8_t *);
261*5113495bSYour Name 
262*5113495bSYour Name typedef struct sDot11fFfListenInterval {
263*5113495bSYour Name 	uint16_t interval;
264*5113495bSYour Name } tDot11fFfListenInterval;
265*5113495bSYour Name 
266*5113495bSYour Name #define DOT11F_FF_LISTENINTERVAL_LEN (2)
267*5113495bSYour Name 
268*5113495bSYour Name void dot11f_unpack_ff_ListenInterval(tpAniSirGlobal, uint8_t *,
269*5113495bSYour Name 				     tDot11fFfListenInterval *);
270*5113495bSYour Name 
271*5113495bSYour Name void dot11f_pack_ff_listen_interval(tpAniSirGlobal, tDot11fFfListenInterval *,
272*5113495bSYour Name 				   uint8_t *);
273*5113495bSYour Name 
274*5113495bSYour Name typedef struct sDot11fFfMaxTxPower {
275*5113495bSYour Name 	uint8_t maxTxPower;
276*5113495bSYour Name } tDot11fFfMaxTxPower;
277*5113495bSYour Name 
278*5113495bSYour Name #define DOT11F_FF_MAXTXPOWER_LEN (1)
279*5113495bSYour Name 
280*5113495bSYour Name void dot11f_unpack_ff_max_tx_power(tpAniSirGlobal, uint8_t *,
281*5113495bSYour Name 				 tDot11fFfMaxTxPower *);
282*5113495bSYour Name 
283*5113495bSYour Name void dot11f_pack_ff_max_tx_power(tpAniSirGlobal, tDot11fFfMaxTxPower *,
284*5113495bSYour Name 			       uint8_t *);
285*5113495bSYour Name 
286*5113495bSYour Name typedef struct sDot11fFfNumOfRepetitions {
287*5113495bSYour Name 	uint16_t repetitions;
288*5113495bSYour Name } tDot11fFfNumOfRepetitions;
289*5113495bSYour Name 
290*5113495bSYour Name #define DOT11F_FF_NUMOFREPETITIONS_LEN (2)
291*5113495bSYour Name 
292*5113495bSYour Name void dot11f_unpack_ff_num_of_repetitions(tpAniSirGlobal, uint8_t *,
293*5113495bSYour Name 				       tDot11fFfNumOfRepetitions *);
294*5113495bSYour Name 
295*5113495bSYour Name void dot11f_pack_ff_num_of_repetitions(tpAniSirGlobal,
296*5113495bSYour Name 				     tDot11fFfNumOfRepetitions *,
297*5113495bSYour Name 				     uint8_t *);
298*5113495bSYour Name 
299*5113495bSYour Name 
300*5113495bSYour Name typedef struct sDot11fFfOperatingMode {
301*5113495bSYour Name 	uint8_t  chanWidth:2;
302*5113495bSYour Name 	uint8_t   reserved:2;
303*5113495bSYour Name 	uint8_t      rxNSS:3;
304*5113495bSYour Name 	uint8_t  rxNSSType:1;
305*5113495bSYour Name } tDot11fFfOperatingMode;
306*5113495bSYour Name 
307*5113495bSYour Name #define DOT11F_FF_OPERATINGMODE_LEN (1)
308*5113495bSYour Name 
309*5113495bSYour Name void dot11f_unpack_ff_operating_mode(tpAniSirGlobal, uint8_t *,
310*5113495bSYour Name 				    tDot11fFfOperatingMode *);
311*5113495bSYour Name 
312*5113495bSYour Name void dot11f_pack_ff_operating_mode(tpAniSirGlobal, tDot11fFfOperatingMode *,
313*5113495bSYour Name 				  uint8_t *);
314*5113495bSYour Name 
315*5113495bSYour Name #define OPERATINGMODE_CHANWIDTH_OFFSET 0
316*5113495bSYour Name #define OPERATINGMODE_CHANWIDTH_WIDTH  2
317*5113495bSYour Name #define OPERATINGMODE_RESERVED_OFFSET  2
318*5113495bSYour Name #define OPERATINGMODE_RESERVED_WIDTH   2
319*5113495bSYour Name #define OPERATINGMODE_RXNSS_OFFSET     4
320*5113495bSYour Name #define OPERATINGMODE_RXNSS_WIDTH      3
321*5113495bSYour Name #define OPERATINGMODE_RXNSSTYPE_OFFSET 7
322*5113495bSYour Name #define OPERATINGMODE_RXNSSTYPE_WIDTH  1
323*5113495bSYour Name 
324*5113495bSYour Name typedef struct sDot11fFfRCPI {
325*5113495bSYour Name 	uint8_t rcpi;
326*5113495bSYour Name } tDot11fFfRCPI;
327*5113495bSYour Name 
328*5113495bSYour Name #define DOT11F_FF_RCPI_LEN (1)
329*5113495bSYour Name 
330*5113495bSYour Name void dot11f_unpack_ff_rcpi(tpAniSirGlobal, uint8_t *, tDot11fFfRCPI *);
331*5113495bSYour Name 
332*5113495bSYour Name void dot11f_pack_ff_rcpi(tpAniSirGlobal, tDot11fFfRCPI *, uint8_t *);
333*5113495bSYour Name 
334*5113495bSYour Name typedef struct sDot11fFfRSNI {
335*5113495bSYour Name 	uint8_t rsni;
336*5113495bSYour Name } tDot11fFfRSNI;
337*5113495bSYour Name 
338*5113495bSYour Name #define DOT11F_FF_RSNI_LEN (1)
339*5113495bSYour Name 
340*5113495bSYour Name void dot11f_unpack_ff_rsni(tpAniSirGlobal, uint8_t *, tDot11fFfRSNI *);
341*5113495bSYour Name 
342*5113495bSYour Name void dot11f_pack_ff_rsni(tpAniSirGlobal, tDot11fFfRSNI *, uint8_t *);
343*5113495bSYour Name 
344*5113495bSYour Name typedef struct sDot11fFfReason {
345*5113495bSYour Name 	uint16_t code;
346*5113495bSYour Name } tDot11fFfReason;
347*5113495bSYour Name 
348*5113495bSYour Name #define DOT11F_FF_REASON_LEN (2)
349*5113495bSYour Name 
350*5113495bSYour Name void dot11f_unpack_ff_Reason(tpAniSirGlobal, uint8_t *, tDot11fFfReason *);
351*5113495bSYour Name 
352*5113495bSYour Name void dot11f_pack_ff_reason(tpAniSirGlobal, tDot11fFfReason *, uint8_t *);
353*5113495bSYour Name 
354*5113495bSYour Name typedef struct sDot11fFfRxAntennaId {
355*5113495bSYour Name 	uint8_t antennaId;
356*5113495bSYour Name } tDot11fFfRxAntennaId;
357*5113495bSYour Name 
358*5113495bSYour Name #define DOT11F_FF_RXANTENNAID_LEN (1)
359*5113495bSYour Name 
360*5113495bSYour Name void dot11f_unpack_ff_rx_antenna_id(tpAniSirGlobal, uint8_t *,
361*5113495bSYour Name 				  tDot11fFfRxAntennaId *);
362*5113495bSYour Name 
363*5113495bSYour Name void dot11f_pack_ff_rx_antenna_id(tpAniSirGlobal, tDot11fFfRxAntennaId *,
364*5113495bSYour Name 				uint8_t *);
365*5113495bSYour Name 
366*5113495bSYour Name typedef struct sDot11fFfSMPowerModeSet {
367*5113495bSYour Name 	uint8_t  PowerSave_En:1;
368*5113495bSYour Name 	uint8_t          Mode:1;
369*5113495bSYour Name 	uint8_t      reserved:6;
370*5113495bSYour Name } tDot11fFfSMPowerModeSet;
371*5113495bSYour Name 
372*5113495bSYour Name #define DOT11F_FF_SMPOWERMODESET_LEN (1)
373*5113495bSYour Name 
374*5113495bSYour Name void dot11f_unpack_ff_sm_power_mode_set(tpAniSirGlobal, uint8_t *,
375*5113495bSYour Name 				     tDot11fFfSMPowerModeSet *);
376*5113495bSYour Name 
377*5113495bSYour Name void dot11f_pack_ff_sm_power_mode_set(tpAniSirGlobal, tDot11fFfSMPowerModeSet *,
378*5113495bSYour Name 				   uint8_t *);
379*5113495bSYour Name 
380*5113495bSYour Name #define SMPOWERMODESET_POWERSAVE_EN_OFFSET 0
381*5113495bSYour Name #define SMPOWERMODESET_POWERSAVE_EN_WIDTH  1
382*5113495bSYour Name #define SMPOWERMODESET_MODE_OFFSET         1
383*5113495bSYour Name #define SMPOWERMODESET_MODE_WIDTH          1
384*5113495bSYour Name #define SMPOWERMODESET_RESERVED_OFFSET     2
385*5113495bSYour Name #define SMPOWERMODESET_RESERVED_WIDTH      6
386*5113495bSYour Name 
387*5113495bSYour Name typedef struct sDot11fFfStatus {
388*5113495bSYour Name 	uint16_t status;
389*5113495bSYour Name } tDot11fFfStatus;
390*5113495bSYour Name 
391*5113495bSYour Name #define DOT11F_FF_STATUS_LEN (2)
392*5113495bSYour Name 
393*5113495bSYour Name void dot11f_unpack_ff_Status(tpAniSirGlobal, uint8_t *, tDot11fFfStatus *);
394*5113495bSYour Name 
395*5113495bSYour Name void dot11f_pack_ff_status(tpAniSirGlobal, tDot11fFfStatus *, uint8_t *);
396*5113495bSYour Name 
397*5113495bSYour Name typedef struct sDot11fFfStatusCode {
398*5113495bSYour Name 	uint8_t statusCode;
399*5113495bSYour Name } tDot11fFfStatusCode;
400*5113495bSYour Name 
401*5113495bSYour Name #define DOT11F_FF_STATUSCODE_LEN (1)
402*5113495bSYour Name 
403*5113495bSYour Name void dot11f_unpack_ff_status_code(tpAniSirGlobal, uint8_t *,
404*5113495bSYour Name 				 tDot11fFfStatusCode *);
405*5113495bSYour Name 
406*5113495bSYour Name void dot11f_pack_ff_status_code(tpAniSirGlobal, tDot11fFfStatusCode *,
407*5113495bSYour Name 			       uint8_t *);
408*5113495bSYour Name 
409*5113495bSYour Name typedef struct sDot11fFfTPCEleID {
410*5113495bSYour Name 	uint8_t TPCId;
411*5113495bSYour Name } tDot11fFfTPCEleID;
412*5113495bSYour Name 
413*5113495bSYour Name #define DOT11F_FF_TPCELEID_LEN (1)
414*5113495bSYour Name 
415*5113495bSYour Name void dot11f_unpack_ff_tpc_ele_id(tpAniSirGlobal, uint8_t *,
416*5113495bSYour Name 			       tDot11fFfTPCEleID *);
417*5113495bSYour Name 
418*5113495bSYour Name void dot11f_pack_ff_tpc_ele_id(tpAniSirGlobal, tDot11fFfTPCEleID *, uint8_t *);
419*5113495bSYour Name 
420*5113495bSYour Name typedef struct sDot11fFfTPCEleLen {
421*5113495bSYour Name 	uint8_t TPCLen;
422*5113495bSYour Name } tDot11fFfTPCEleLen;
423*5113495bSYour Name 
424*5113495bSYour Name #define DOT11F_FF_TPCELELEN_LEN (1)
425*5113495bSYour Name 
426*5113495bSYour Name void dot11f_unpack_ff_tpc_ele_len(tpAniSirGlobal, uint8_t *,
427*5113495bSYour Name 				tDot11fFfTPCEleLen *);
428*5113495bSYour Name 
429*5113495bSYour Name void dot11f_pack_ff_tpc_ele_len(tpAniSirGlobal, tDot11fFfTPCEleLen *,
430*5113495bSYour Name 			      uint8_t *);
431*5113495bSYour Name 
432*5113495bSYour Name typedef struct sDot11fFfTSInfo {
433*5113495bSYour Name 	uint32_t    traffic_type:1;
434*5113495bSYour Name 	uint32_t            tsid:4;
435*5113495bSYour Name 	uint32_t       direction:2;
436*5113495bSYour Name 	uint32_t   access_policy:2;
437*5113495bSYour Name 	uint32_t     aggregation:1;
438*5113495bSYour Name 	uint32_t             psb:1;
439*5113495bSYour Name 	uint32_t   user_priority:3;
440*5113495bSYour Name 	uint32_t  tsinfo_ack_pol:2;
441*5113495bSYour Name 	uint32_t        schedule:1;
442*5113495bSYour Name 	uint32_t          unused:15;
443*5113495bSYour Name } tDot11fFfTSInfo;
444*5113495bSYour Name 
445*5113495bSYour Name #define DOT11F_FF_TSINFO_LEN (3)
446*5113495bSYour Name 
447*5113495bSYour Name void dot11f_unpack_ff_ts_info(tpAniSirGlobal, uint8_t *, tDot11fFfTSInfo *);
448*5113495bSYour Name 
449*5113495bSYour Name void dot11f_pack_ff_ts_info(tpAniSirGlobal, tDot11fFfTSInfo *, uint8_t *);
450*5113495bSYour Name 
451*5113495bSYour Name #define TSINFO_TRAFFIC_TYPE_OFFSET   0
452*5113495bSYour Name #define TSINFO_TRAFFIC_TYPE_WIDTH    1
453*5113495bSYour Name #define TSINFO_TSID_OFFSET           1
454*5113495bSYour Name #define TSINFO_TSID_WIDTH            4
455*5113495bSYour Name #define TSINFO_DIRECTION_OFFSET      5
456*5113495bSYour Name #define TSINFO_DIRECTION_WIDTH       2
457*5113495bSYour Name #define TSINFO_ACCESS_POLICY_OFFSET  7
458*5113495bSYour Name #define TSINFO_ACCESS_POLICY_WIDTH   2
459*5113495bSYour Name #define TSINFO_AGGREGATION_OFFSET    9
460*5113495bSYour Name #define TSINFO_AGGREGATION_WIDTH     1
461*5113495bSYour Name #define TSINFO_PSB_OFFSET            10
462*5113495bSYour Name #define TSINFO_PSB_WIDTH             1
463*5113495bSYour Name #define TSINFO_USER_PRIORITY_OFFSET  11
464*5113495bSYour Name #define TSINFO_USER_PRIORITY_WIDTH   3
465*5113495bSYour Name #define TSINFO_TSINFO_ACK_POL_OFFSET 14
466*5113495bSYour Name #define TSINFO_TSINFO_ACK_POL_WIDTH  2
467*5113495bSYour Name #define TSINFO_SCHEDULE_OFFSET       16
468*5113495bSYour Name #define TSINFO_SCHEDULE_WIDTH        1
469*5113495bSYour Name #define TSINFO_UNUSED_OFFSET         17
470*5113495bSYour Name #define TSINFO_UNUSED_WIDTH          15
471*5113495bSYour Name 
472*5113495bSYour Name typedef struct sDot11fFfTimeStamp {
473*5113495bSYour Name 	tDOT11F_U64 timestamp;
474*5113495bSYour Name } tDot11fFfTimeStamp;
475*5113495bSYour Name 
476*5113495bSYour Name #define DOT11F_FF_TIMESTAMP_LEN (8)
477*5113495bSYour Name 
478*5113495bSYour Name void dot11f_unpack_ff_time_stamp(tpAniSirGlobal, uint8_t *,
479*5113495bSYour Name 				tDot11fFfTimeStamp *);
480*5113495bSYour Name 
481*5113495bSYour Name void dot11f_pack_ff_time_stamp(tpAniSirGlobal, tDot11fFfTimeStamp *,
482*5113495bSYour Name 			      uint8_t *);
483*5113495bSYour Name 
484*5113495bSYour Name typedef struct sDot11fFfTransactionId {
485*5113495bSYour Name 	uint8_t transId[2];
486*5113495bSYour Name } tDot11fFfTransactionId;
487*5113495bSYour Name 
488*5113495bSYour Name #define DOT11F_FF_TRANSACTIONID_LEN (2)
489*5113495bSYour Name 
490*5113495bSYour Name void dot11f_unpack_ff_transaction_id(tpAniSirGlobal, uint8_t *,
491*5113495bSYour Name 				    tDot11fFfTransactionId *);
492*5113495bSYour Name 
493*5113495bSYour Name void dot11f_pack_ff_transaction_id(tpAniSirGlobal, tDot11fFfTransactionId *,
494*5113495bSYour Name 				  uint8_t *);
495*5113495bSYour Name 
496*5113495bSYour Name typedef struct sDot11fFfTxAntennaId {
497*5113495bSYour Name 	uint8_t antennaId;
498*5113495bSYour Name } tDot11fFfTxAntennaId;
499*5113495bSYour Name 
500*5113495bSYour Name #define DOT11F_FF_TXANTENNAID_LEN (1)
501*5113495bSYour Name 
502*5113495bSYour Name void dot11f_unpack_ff_tx_antenna_id(tpAniSirGlobal, uint8_t *,
503*5113495bSYour Name 				  tDot11fFfTxAntennaId *);
504*5113495bSYour Name 
505*5113495bSYour Name void dot11f_pack_ff_tx_antenna_id(tpAniSirGlobal, tDot11fFfTxAntennaId *,
506*5113495bSYour Name 				uint8_t *);
507*5113495bSYour Name 
508*5113495bSYour Name typedef struct sDot11fFfTxPower {
509*5113495bSYour Name 	uint8_t txPower;
510*5113495bSYour Name } tDot11fFfTxPower;
511*5113495bSYour Name 
512*5113495bSYour Name #define DOT11F_FF_TXPOWER_LEN (1)
513*5113495bSYour Name 
514*5113495bSYour Name void dot11f_unpack_ff_tx_power(tpAniSirGlobal, uint8_t *,
515*5113495bSYour Name 			      tDot11fFfTxPower *);
516*5113495bSYour Name 
517*5113495bSYour Name void dot11f_pack_ff_tx_power(tpAniSirGlobal, tDot11fFfTxPower *, uint8_t *);
518*5113495bSYour Name 
519*5113495bSYour Name typedef struct sDot11fFfVhtMembershipStatusArray {
520*5113495bSYour Name 	uint8_t membershipStatusArray[8];
521*5113495bSYour Name } tDot11fFfVhtMembershipStatusArray;
522*5113495bSYour Name 
523*5113495bSYour Name #define DOT11F_FF_VHTMEMBERSHIPSTATUSARRAY_LEN (8)
524*5113495bSYour Name 
525*5113495bSYour Name void dot11f_unpack_ff_vht_membership_status_array(tpAniSirGlobal, uint8_t *,
526*5113495bSYour Name 					       tDot11fFfVhtMembershipStatusArray *);
527*5113495bSYour Name 
528*5113495bSYour Name void dot11f_pack_ff_vht_membership_status_array(tpAniSirGlobal,
529*5113495bSYour Name 					     tDot11fFfVhtMembershipStatusArray *,
530*5113495bSYour Name 					     uint8_t *);
531*5113495bSYour Name 
532*5113495bSYour Name 
533*5113495bSYour Name typedef struct sDot11fFfVhtUserPositionArray {
534*5113495bSYour Name 	uint8_t userPositionArray[16];
535*5113495bSYour Name } tDot11fFfVhtUserPositionArray;
536*5113495bSYour Name 
537*5113495bSYour Name #define DOT11F_FF_VHTUSERPOSITIONARRAY_LEN (16)
538*5113495bSYour Name 
539*5113495bSYour Name void dot11f_unpack_ff_vht_user_position_array(tpAniSirGlobal, uint8_t *,
540*5113495bSYour Name 					   tDot11fFfVhtUserPositionArray *);
541*5113495bSYour Name 
542*5113495bSYour Name void dot11f_pack_ff_vht_user_position_array(tpAniSirGlobal,
543*5113495bSYour Name 					 tDot11fFfVhtUserPositionArray *,
544*5113495bSYour Name 					 uint8_t *);
545*5113495bSYour Name 
546*5113495bSYour Name 
547*5113495bSYour Name typedef struct sDot11fFfaddba_param_set {
548*5113495bSYour Name 	uint16_t  amsdu_supp:1;
549*5113495bSYour Name 	uint16_t      policy:1;
550*5113495bSYour Name 	uint16_t         tid:4;
551*5113495bSYour Name 	uint16_t   buff_size:10;
552*5113495bSYour Name } tDot11fFfaddba_param_set;
553*5113495bSYour Name 
554*5113495bSYour Name #define DOT11F_FF_ADDBA_PARAM_SET_LEN (2)
555*5113495bSYour Name 
556*5113495bSYour Name void dot11f_unpack_ff_addba_param_set(tpAniSirGlobal, uint8_t *,
557*5113495bSYour Name 				      tDot11fFfaddba_param_set *);
558*5113495bSYour Name 
559*5113495bSYour Name void dot11f_pack_ff_addba_param_set(tpAniSirGlobal, tDot11fFfaddba_param_set *,
560*5113495bSYour Name 				    uint8_t *);
561*5113495bSYour Name 
562*5113495bSYour Name #define ADDBA_PARAM_SET_AMSDU_SUPP_OFFSET 0
563*5113495bSYour Name #define ADDBA_PARAM_SET_AMSDU_SUPP_WIDTH  1
564*5113495bSYour Name #define ADDBA_PARAM_SET_POLICY_OFFSET     1
565*5113495bSYour Name #define ADDBA_PARAM_SET_POLICY_WIDTH      1
566*5113495bSYour Name #define ADDBA_PARAM_SET_TID_OFFSET        2
567*5113495bSYour Name #define ADDBA_PARAM_SET_TID_WIDTH         4
568*5113495bSYour Name #define ADDBA_PARAM_SET_BUFF_SIZE_OFFSET  6
569*5113495bSYour Name #define ADDBA_PARAM_SET_BUFF_SIZE_WIDTH   10
570*5113495bSYour Name 
571*5113495bSYour Name typedef struct sDot11fFfba_start_seq_ctrl {
572*5113495bSYour Name 	uint16_t  frag_number:4;
573*5113495bSYour Name 	uint16_t          ssn:12;
574*5113495bSYour Name } tDot11fFfba_start_seq_ctrl;
575*5113495bSYour Name 
576*5113495bSYour Name #define DOT11F_FF_BA_START_SEQ_CTRL_LEN (2)
577*5113495bSYour Name 
578*5113495bSYour Name void dot11f_unpack_ff_ba_start_seq_ctrl(tpAniSirGlobal, uint8_t *,
579*5113495bSYour Name 					tDot11fFfba_start_seq_ctrl *);
580*5113495bSYour Name 
581*5113495bSYour Name void dot11f_pack_ff_ba_start_seq_ctrl(tpAniSirGlobal,
582*5113495bSYour Name 				      tDot11fFfba_start_seq_ctrl *,
583*5113495bSYour Name 				      uint8_t *);
584*5113495bSYour Name 
585*5113495bSYour Name 
586*5113495bSYour Name #define BA_START_SEQ_CTRL_FRAG_NUMBER_OFFSET 0
587*5113495bSYour Name #define BA_START_SEQ_CTRL_FRAG_NUMBER_WIDTH  4
588*5113495bSYour Name #define BA_START_SEQ_CTRL_SSN_OFFSET         4
589*5113495bSYour Name #define BA_START_SEQ_CTRL_SSN_WIDTH          12
590*5113495bSYour Name 
591*5113495bSYour Name typedef struct sDot11fFfba_timeout {
592*5113495bSYour Name 	uint16_t timeout;
593*5113495bSYour Name } tDot11fFfba_timeout;
594*5113495bSYour Name 
595*5113495bSYour Name #define DOT11F_FF_BA_TIMEOUT_LEN (2)
596*5113495bSYour Name 
597*5113495bSYour Name void dot11f_unpack_ff_ba_timeout(tpAniSirGlobal, uint8_t *,
598*5113495bSYour Name 				 tDot11fFfba_timeout *);
599*5113495bSYour Name 
600*5113495bSYour Name void dot11f_pack_ff_ba_timeout(tpAniSirGlobal, tDot11fFfba_timeout *,
601*5113495bSYour Name 			       uint8_t *);
602*5113495bSYour Name 
603*5113495bSYour Name typedef struct sDot11fFfdelba_param_set {
604*5113495bSYour Name 	uint16_t   reserved:11;
605*5113495bSYour Name 	uint16_t  initiator:1;
606*5113495bSYour Name 	uint16_t        tid:4;
607*5113495bSYour Name } tDot11fFfdelba_param_set;
608*5113495bSYour Name 
609*5113495bSYour Name #define DOT11F_FF_DELBA_PARAM_SET_LEN (2)
610*5113495bSYour Name 
611*5113495bSYour Name void dot11f_unpack_ff_delba_param_set(tpAniSirGlobal, uint8_t *,
612*5113495bSYour Name 				      tDot11fFfdelba_param_set *);
613*5113495bSYour Name 
614*5113495bSYour Name void dot11f_pack_ff_delba_param_set(tpAniSirGlobal, tDot11fFfdelba_param_set *,
615*5113495bSYour Name 				    uint8_t *);
616*5113495bSYour Name 
617*5113495bSYour Name #define DELBA_PARAM_SET_RESERVED_OFFSET  0
618*5113495bSYour Name #define DELBA_PARAM_SET_RESERVED_WIDTH   11
619*5113495bSYour Name #define DELBA_PARAM_SET_INITIATOR_OFFSET 11
620*5113495bSYour Name #define DELBA_PARAM_SET_INITIATOR_WIDTH  1
621*5113495bSYour Name #define DELBA_PARAM_SET_TID_OFFSET       12
622*5113495bSYour Name #define DELBA_PARAM_SET_TID_WIDTH        4
623*5113495bSYour Name 
624*5113495bSYour Name typedef struct sDot11fFfext_chan_switch_ann_action {
625*5113495bSYour Name 	uint32_t   switch_mode:8;
626*5113495bSYour Name 	uint32_t      op_class:8;
627*5113495bSYour Name 	uint32_t   new_channel:8;
628*5113495bSYour Name 	uint32_t  switch_count:8;
629*5113495bSYour Name } tDot11fFfext_chan_switch_ann_action;
630*5113495bSYour Name 
631*5113495bSYour Name #define DOT11F_FF_EXT_CHAN_SWITCH_ANN_ACTION_LEN (4)
632*5113495bSYour Name 
633*5113495bSYour Name void dot11f_unpack_ff_ext_chan_switch_ann_action(tpAniSirGlobal, uint8_t *,
634*5113495bSYour Name 						 tDot11fFfext_chan_switch_ann_action *);
635*5113495bSYour Name 
636*5113495bSYour Name void dot11f_pack_ff_ext_chan_switch_ann_action(tpAniSirGlobal,
637*5113495bSYour Name 					       tDot11fFfext_chan_switch_ann_action *,
638*5113495bSYour Name 					       uint8_t *);
639*5113495bSYour Name 
640*5113495bSYour Name 
641*5113495bSYour Name #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_OFFSET  0
642*5113495bSYour Name #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_WIDTH   8
643*5113495bSYour Name #define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_OFFSET     8
644*5113495bSYour Name #define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_WIDTH      8
645*5113495bSYour Name #define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_OFFSET  16
646*5113495bSYour Name #define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_WIDTH   8
647*5113495bSYour Name #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_OFFSET 24
648*5113495bSYour Name #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_WIDTH  8
649*5113495bSYour Name 
650*5113495bSYour Name typedef struct sDot11fFfp2p_action_oui {
651*5113495bSYour Name 	uint8_t oui_data[4];
652*5113495bSYour Name } tDot11fFfp2p_action_oui;
653*5113495bSYour Name 
654*5113495bSYour Name #define DOT11F_FF_P2P_ACTION_OUI_LEN (4)
655*5113495bSYour Name 
656*5113495bSYour Name void dot11f_unpack_ff_p2p_action_oui(tpAniSirGlobal, uint8_t *,
657*5113495bSYour Name 				     tDot11fFfp2p_action_oui *);
658*5113495bSYour Name 
659*5113495bSYour Name void dot11f_pack_ff_p2p_action_oui(tpAniSirGlobal, tDot11fFfp2p_action_oui *,
660*5113495bSYour Name 				   uint8_t *);
661*5113495bSYour Name 
662*5113495bSYour Name typedef struct sDot11fFfp2p_action_subtype {
663*5113495bSYour Name 	uint8_t subtype;
664*5113495bSYour Name } tDot11fFfp2p_action_subtype;
665*5113495bSYour Name 
666*5113495bSYour Name #define DOT11F_FF_P2P_ACTION_SUBTYPE_LEN (1)
667*5113495bSYour Name 
668*5113495bSYour Name void dot11f_unpack_ff_p2p_action_subtype(tpAniSirGlobal, uint8_t *,
669*5113495bSYour Name 					 tDot11fFfp2p_action_subtype *);
670*5113495bSYour Name 
671*5113495bSYour Name void dot11f_pack_ff_p2p_action_subtype(tpAniSirGlobal,
672*5113495bSYour Name 				       tDot11fFfp2p_action_subtype *,
673*5113495bSYour Name 				       uint8_t *);
674*5113495bSYour Name 
675*5113495bSYour Name 
676*5113495bSYour Name typedef struct sDot11fFfvendor_action_subtype {
677*5113495bSYour Name 	uint8_t subtype;
678*5113495bSYour Name } tDot11fFfvendor_action_subtype;
679*5113495bSYour Name 
680*5113495bSYour Name #define DOT11F_FF_VENDOR_ACTION_SUBTYPE_LEN (1)
681*5113495bSYour Name 
682*5113495bSYour Name void dot11f_unpack_ff_vendor_action_subtype(tpAniSirGlobal, uint8_t *,
683*5113495bSYour Name 					    tDot11fFfvendor_action_subtype *);
684*5113495bSYour Name 
685*5113495bSYour Name void dot11f_pack_ff_vendor_action_subtype(tpAniSirGlobal,
686*5113495bSYour Name 					  tDot11fFfvendor_action_subtype *,
687*5113495bSYour Name 					  uint8_t *);
688*5113495bSYour Name 
689*5113495bSYour Name 
690*5113495bSYour Name typedef struct sDot11fFfvendor_oui {
691*5113495bSYour Name 	uint8_t oui_data[3];
692*5113495bSYour Name } tDot11fFfvendor_oui;
693*5113495bSYour Name 
694*5113495bSYour Name #define DOT11F_FF_VENDOR_OUI_LEN (3)
695*5113495bSYour Name 
696*5113495bSYour Name void dot11f_unpack_ff_vendor_oui(tpAniSirGlobal, uint8_t *,
697*5113495bSYour Name 				 tDot11fFfvendor_oui *);
698*5113495bSYour Name 
699*5113495bSYour Name void dot11f_pack_ff_vendor_oui(tpAniSirGlobal, tDot11fFfvendor_oui *,
700*5113495bSYour Name 			       uint8_t *);
701*5113495bSYour Name 
702*5113495bSYour Name /*********************************************************************
703*5113495bSYour Name  * TLVs                                                              *
704*5113495bSYour Name  ********************************************************************/
705*5113495bSYour Name 
706*5113495bSYour Name 
707*5113495bSYour Name /* ID 1 (0x0001) */
708*5113495bSYour Name typedef struct sDot11fTLVAuthorizedMACs {
709*5113495bSYour Name 	uint8_t             present;
710*5113495bSYour Name 	uint8_t             mac[6];
711*5113495bSYour Name } tDot11fTLVAuthorizedMACs;
712*5113495bSYour Name 
713*5113495bSYour Name #define DOT11F_TLV_AUTHORIZEDMACS (1)
714*5113495bSYour Name 
715*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
716*5113495bSYour Name #define DOT11F_TLV_AUTHORIZEDMACS_MIN_LEN (6)
717*5113495bSYour Name 
718*5113495bSYour Name #define DOT11F_TLV_AUTHORIZEDMACS_MAX_LEN (6)
719*5113495bSYour Name 
720*5113495bSYour Name #ifdef __cplusplus
721*5113495bSYour Name extern "C" {
722*5113495bSYour Name #endif /* C++ */
723*5113495bSYour Name uint32_t dot11f_unpack_tlv_authorized_ma_cs(
724*5113495bSYour Name 	tpAniSirGlobal,
725*5113495bSYour Name 	uint8_t *,
726*5113495bSYour Name 	uint16_t,
727*5113495bSYour Name 	tDot11fTLVAuthorizedMACs*);
728*5113495bSYour Name 
729*5113495bSYour Name uint32_t dot11f_pack_tlv_authorized_ma_cs(
730*5113495bSYour Name 	tpAniSirGlobal,
731*5113495bSYour Name 	tDot11fTLVAuthorizedMACs *,
732*5113495bSYour Name 	uint8_t *,
733*5113495bSYour Name 	uint32_t,
734*5113495bSYour Name 	uint32_t*);
735*5113495bSYour Name 
736*5113495bSYour Name uint32_t dot11f_get_packed_tlv_AuthorizedMACs(
737*5113495bSYour Name 	tpAniSirGlobal,
738*5113495bSYour Name 	tDot11fTLVAuthorizedMACs *,
739*5113495bSYour Name 	uint32_t*);
740*5113495bSYour Name 
741*5113495bSYour Name #ifdef __cplusplus
742*5113495bSYour Name }; /* End extern "C". */
743*5113495bSYour Name #endif /* C++ */
744*5113495bSYour Name 
745*5113495bSYour Name /* ID 3 (0x0003) */
746*5113495bSYour Name typedef struct sDot11fTLVRequestToEnroll {
747*5113495bSYour Name 	uint8_t             present;
748*5113495bSYour Name 	uint8_t             req;
749*5113495bSYour Name } tDot11fTLVRequestToEnroll;
750*5113495bSYour Name 
751*5113495bSYour Name #define DOT11F_TLV_REQUESTTOENROLL (3)
752*5113495bSYour Name 
753*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
754*5113495bSYour Name #define DOT11F_TLV_REQUESTTOENROLL_MIN_LEN (1)
755*5113495bSYour Name 
756*5113495bSYour Name #define DOT11F_TLV_REQUESTTOENROLL_MAX_LEN (1)
757*5113495bSYour Name 
758*5113495bSYour Name #ifdef __cplusplus
759*5113495bSYour Name extern "C" {
760*5113495bSYour Name #endif /* C++ */
761*5113495bSYour Name uint32_t dot11f_unpack_tlv_RequestToEnroll(
762*5113495bSYour Name 	tpAniSirGlobal,
763*5113495bSYour Name 	uint8_t *,
764*5113495bSYour Name 	uint16_t,
765*5113495bSYour Name 	tDot11fTLVRequestToEnroll*);
766*5113495bSYour Name 
767*5113495bSYour Name uint32_t dot11f_pack_tlv_request_to_enroll(
768*5113495bSYour Name 	tpAniSirGlobal,
769*5113495bSYour Name 	tDot11fTLVRequestToEnroll *,
770*5113495bSYour Name 	uint8_t *,
771*5113495bSYour Name 	uint32_t,
772*5113495bSYour Name 	uint32_t*);
773*5113495bSYour Name 
774*5113495bSYour Name uint32_t dot11f_get_packed_tlv_RequestToEnroll(
775*5113495bSYour Name 	tpAniSirGlobal,
776*5113495bSYour Name 	tDot11fTLVRequestToEnroll *,
777*5113495bSYour Name 	uint32_t*);
778*5113495bSYour Name 
779*5113495bSYour Name #ifdef __cplusplus
780*5113495bSYour Name }; /* End extern "C". */
781*5113495bSYour Name #endif /* C++ */
782*5113495bSYour Name 
783*5113495bSYour Name /* ID 0 (0x0000) */
784*5113495bSYour Name typedef struct sDot11fTLVVersion2 {
785*5113495bSYour Name 	uint8_t             present;
786*5113495bSYour Name 	uint8_t                minor:4;
787*5113495bSYour Name 	uint8_t                major:4;
788*5113495bSYour Name } tDot11fTLVVersion2;
789*5113495bSYour Name 
790*5113495bSYour Name #define DOT11F_TLV_VERSION2 (0)
791*5113495bSYour Name 
792*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
793*5113495bSYour Name #define DOT11F_TLV_VERSION2_MIN_LEN (1)
794*5113495bSYour Name 
795*5113495bSYour Name #define DOT11F_TLV_VERSION2_MAX_LEN (1)
796*5113495bSYour Name 
797*5113495bSYour Name #ifdef __cplusplus
798*5113495bSYour Name extern "C" {
799*5113495bSYour Name #endif /* C++ */
800*5113495bSYour Name uint32_t dot11f_unpack_tlv_version2(
801*5113495bSYour Name 	tpAniSirGlobal,
802*5113495bSYour Name 	uint8_t *,
803*5113495bSYour Name 	uint16_t,
804*5113495bSYour Name 	tDot11fTLVVersion2*);
805*5113495bSYour Name 
806*5113495bSYour Name uint32_t dot11f_pack_tlv_version2(
807*5113495bSYour Name 	tpAniSirGlobal,
808*5113495bSYour Name 	tDot11fTLVVersion2 *,
809*5113495bSYour Name 	uint8_t *,
810*5113495bSYour Name 	uint32_t,
811*5113495bSYour Name 	uint32_t*);
812*5113495bSYour Name 
813*5113495bSYour Name uint32_t dot11f_get_packed_tlv_Version2(
814*5113495bSYour Name 	tpAniSirGlobal,
815*5113495bSYour Name 	tDot11fTLVVersion2 *,
816*5113495bSYour Name 	uint32_t*);
817*5113495bSYour Name 
818*5113495bSYour Name #ifdef __cplusplus
819*5113495bSYour Name }; /* End extern "C". */
820*5113495bSYour Name #endif /* C++ */
821*5113495bSYour Name 
822*5113495bSYour Name /* ID 4183 (0x1057) */
823*5113495bSYour Name typedef struct sDot11fTLVAPSetupLocked {
824*5113495bSYour Name 	uint8_t             present;
825*5113495bSYour Name 	uint8_t             fLocked;
826*5113495bSYour Name } tDot11fTLVAPSetupLocked;
827*5113495bSYour Name 
828*5113495bSYour Name #define DOT11F_TLV_APSETUPLOCKED (4183)
829*5113495bSYour Name 
830*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
831*5113495bSYour Name #define DOT11F_TLV_APSETUPLOCKED_MIN_LEN (3)
832*5113495bSYour Name 
833*5113495bSYour Name #define DOT11F_TLV_APSETUPLOCKED_MAX_LEN (3)
834*5113495bSYour Name 
835*5113495bSYour Name #ifdef __cplusplus
836*5113495bSYour Name extern "C" {
837*5113495bSYour Name #endif /* C++ */
838*5113495bSYour Name uint32_t dot11f_unpack_tlv_APSetupLocked(
839*5113495bSYour Name 	tpAniSirGlobal,
840*5113495bSYour Name 	uint8_t *,
841*5113495bSYour Name 	uint16_t,
842*5113495bSYour Name 	tDot11fTLVAPSetupLocked*);
843*5113495bSYour Name 
844*5113495bSYour Name uint32_t dot11f_pack_tlv_ap_setup_locked(
845*5113495bSYour Name 	tpAniSirGlobal,
846*5113495bSYour Name 	tDot11fTLVAPSetupLocked *,
847*5113495bSYour Name 	uint8_t *,
848*5113495bSYour Name 	uint32_t,
849*5113495bSYour Name 	uint32_t*);
850*5113495bSYour Name 
851*5113495bSYour Name uint32_t dot11f_get_packed_tlv_APSetupLocked(
852*5113495bSYour Name 	tpAniSirGlobal,
853*5113495bSYour Name 	tDot11fTLVAPSetupLocked *,
854*5113495bSYour Name 	uint32_t*);
855*5113495bSYour Name 
856*5113495bSYour Name #ifdef __cplusplus
857*5113495bSYour Name }; /* End extern "C". */
858*5113495bSYour Name #endif /* C++ */
859*5113495bSYour Name 
860*5113495bSYour Name /* ID 4098 (0x1002) */
861*5113495bSYour Name typedef struct sDot11fTLVAssociationState {
862*5113495bSYour Name 	uint8_t             present;
863*5113495bSYour Name 	uint16_t            state;
864*5113495bSYour Name } tDot11fTLVAssociationState;
865*5113495bSYour Name 
866*5113495bSYour Name #define DOT11F_TLV_ASSOCIATIONSTATE (4098)
867*5113495bSYour Name 
868*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
869*5113495bSYour Name #define DOT11F_TLV_ASSOCIATIONSTATE_MIN_LEN (4)
870*5113495bSYour Name 
871*5113495bSYour Name #define DOT11F_TLV_ASSOCIATIONSTATE_MAX_LEN (4)
872*5113495bSYour Name 
873*5113495bSYour Name #ifdef __cplusplus
874*5113495bSYour Name extern "C" {
875*5113495bSYour Name #endif /* C++ */
876*5113495bSYour Name uint32_t dot11f_unpack_tlv_AssociationState(
877*5113495bSYour Name 	tpAniSirGlobal,
878*5113495bSYour Name 	uint8_t *,
879*5113495bSYour Name 	uint16_t,
880*5113495bSYour Name 	tDot11fTLVAssociationState*);
881*5113495bSYour Name 
882*5113495bSYour Name uint32_t dot11f_pack_tlv_association_state(
883*5113495bSYour Name 	tpAniSirGlobal,
884*5113495bSYour Name 	tDot11fTLVAssociationState *,
885*5113495bSYour Name 	uint8_t *,
886*5113495bSYour Name 	uint32_t,
887*5113495bSYour Name 	uint32_t*);
888*5113495bSYour Name 
889*5113495bSYour Name uint32_t dot11f_get_packed_tlv_AssociationState(
890*5113495bSYour Name 	tpAniSirGlobal,
891*5113495bSYour Name 	tDot11fTLVAssociationState *,
892*5113495bSYour Name 	uint32_t*);
893*5113495bSYour Name 
894*5113495bSYour Name #ifdef __cplusplus
895*5113495bSYour Name }; /* End extern "C". */
896*5113495bSYour Name #endif /* C++ */
897*5113495bSYour Name 
898*5113495bSYour Name /* ID 4104 (0x1008) */
899*5113495bSYour Name typedef struct sDot11fTLVConfigMethods {
900*5113495bSYour Name 	uint8_t             present;
901*5113495bSYour Name 	uint16_t            methods;
902*5113495bSYour Name } tDot11fTLVConfigMethods;
903*5113495bSYour Name 
904*5113495bSYour Name #define DOT11F_TLV_CONFIGMETHODS (4104)
905*5113495bSYour Name 
906*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
907*5113495bSYour Name #define DOT11F_TLV_CONFIGMETHODS_MIN_LEN (4)
908*5113495bSYour Name 
909*5113495bSYour Name #define DOT11F_TLV_CONFIGMETHODS_MAX_LEN (4)
910*5113495bSYour Name 
911*5113495bSYour Name #ifdef __cplusplus
912*5113495bSYour Name extern "C" {
913*5113495bSYour Name #endif /* C++ */
914*5113495bSYour Name uint32_t dot11f_unpack_tlv_ConfigMethods(
915*5113495bSYour Name 	tpAniSirGlobal,
916*5113495bSYour Name 	uint8_t *,
917*5113495bSYour Name 	uint16_t,
918*5113495bSYour Name 	tDot11fTLVConfigMethods*);
919*5113495bSYour Name 
920*5113495bSYour Name uint32_t dot11f_pack_tlv_config_methods(
921*5113495bSYour Name 	tpAniSirGlobal,
922*5113495bSYour Name 	tDot11fTLVConfigMethods *,
923*5113495bSYour Name 	uint8_t *,
924*5113495bSYour Name 	uint32_t,
925*5113495bSYour Name 	uint32_t*);
926*5113495bSYour Name 
927*5113495bSYour Name uint32_t dot11f_get_packed_tlv_ConfigMethods(
928*5113495bSYour Name 	tpAniSirGlobal,
929*5113495bSYour Name 	tDot11fTLVConfigMethods *,
930*5113495bSYour Name 	uint32_t*);
931*5113495bSYour Name 
932*5113495bSYour Name #ifdef __cplusplus
933*5113495bSYour Name }; /* End extern "C". */
934*5113495bSYour Name #endif /* C++ */
935*5113495bSYour Name 
936*5113495bSYour Name /* ID 4105 (0x1009) */
937*5113495bSYour Name typedef struct sDot11fTLVConfigurationError {
938*5113495bSYour Name 	uint8_t             present;
939*5113495bSYour Name 	uint16_t            error;
940*5113495bSYour Name } tDot11fTLVConfigurationError;
941*5113495bSYour Name 
942*5113495bSYour Name #define DOT11F_TLV_CONFIGURATIONERROR (4105)
943*5113495bSYour Name 
944*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
945*5113495bSYour Name #define DOT11F_TLV_CONFIGURATIONERROR_MIN_LEN (4)
946*5113495bSYour Name 
947*5113495bSYour Name #define DOT11F_TLV_CONFIGURATIONERROR_MAX_LEN (4)
948*5113495bSYour Name 
949*5113495bSYour Name #ifdef __cplusplus
950*5113495bSYour Name extern "C" {
951*5113495bSYour Name #endif /* C++ */
952*5113495bSYour Name uint32_t dot11f_unpack_tlv_ConfigurationError(
953*5113495bSYour Name 	tpAniSirGlobal,
954*5113495bSYour Name 	uint8_t *,
955*5113495bSYour Name 	uint16_t,
956*5113495bSYour Name 	tDot11fTLVConfigurationError*);
957*5113495bSYour Name 
958*5113495bSYour Name uint32_t dot11f_pack_tlv_configuration_error(
959*5113495bSYour Name 	tpAniSirGlobal,
960*5113495bSYour Name 	tDot11fTLVConfigurationError *,
961*5113495bSYour Name 	uint8_t *,
962*5113495bSYour Name 	uint32_t,
963*5113495bSYour Name 	uint32_t*);
964*5113495bSYour Name 
965*5113495bSYour Name uint32_t dot11f_get_packed_tlv_ConfigurationError(
966*5113495bSYour Name 	tpAniSirGlobal,
967*5113495bSYour Name 	tDot11fTLVConfigurationError *,
968*5113495bSYour Name 	uint32_t*);
969*5113495bSYour Name 
970*5113495bSYour Name #ifdef __cplusplus
971*5113495bSYour Name }; /* End extern "C". */
972*5113495bSYour Name #endif /* C++ */
973*5113495bSYour Name 
974*5113495bSYour Name /* ID 4113 (0x1011) */
975*5113495bSYour Name typedef struct sDot11fTLVDeviceName {
976*5113495bSYour Name 	uint8_t             present;
977*5113495bSYour Name 	uint8_t             num_text;
978*5113495bSYour Name 	uint8_t             text[32];
979*5113495bSYour Name } tDot11fTLVDeviceName;
980*5113495bSYour Name 
981*5113495bSYour Name #define DOT11F_TLV_DEVICENAME (4113)
982*5113495bSYour Name 
983*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
984*5113495bSYour Name #define DOT11F_TLV_DEVICENAME_MIN_LEN (2)
985*5113495bSYour Name 
986*5113495bSYour Name #define DOT11F_TLV_DEVICENAME_MAX_LEN (34)
987*5113495bSYour Name 
988*5113495bSYour Name #ifdef __cplusplus
989*5113495bSYour Name extern "C" {
990*5113495bSYour Name #endif /* C++ */
991*5113495bSYour Name uint32_t dot11f_unpack_tlv_device_name(
992*5113495bSYour Name 	tpAniSirGlobal,
993*5113495bSYour Name 	uint8_t *,
994*5113495bSYour Name 	uint16_t,
995*5113495bSYour Name 	tDot11fTLVDeviceName*);
996*5113495bSYour Name 
997*5113495bSYour Name uint32_t dot11f_pack_tlv_device_name(
998*5113495bSYour Name 	tpAniSirGlobal,
999*5113495bSYour Name 	tDot11fTLVDeviceName *,
1000*5113495bSYour Name 	uint8_t *,
1001*5113495bSYour Name 	uint32_t,
1002*5113495bSYour Name 	uint32_t*);
1003*5113495bSYour Name 
1004*5113495bSYour Name uint32_t dot11f_get_packed_tlv_DeviceName(
1005*5113495bSYour Name 	tpAniSirGlobal,
1006*5113495bSYour Name 	tDot11fTLVDeviceName *,
1007*5113495bSYour Name 	uint32_t*);
1008*5113495bSYour Name 
1009*5113495bSYour Name #ifdef __cplusplus
1010*5113495bSYour Name }; /* End extern "C". */
1011*5113495bSYour Name #endif /* C++ */
1012*5113495bSYour Name 
1013*5113495bSYour Name /* ID 4114 (0x1012) */
1014*5113495bSYour Name typedef struct sDot11fTLVDevicePasswordID {
1015*5113495bSYour Name 	uint8_t             present;
1016*5113495bSYour Name 	uint16_t            id;
1017*5113495bSYour Name } tDot11fTLVDevicePasswordID;
1018*5113495bSYour Name 
1019*5113495bSYour Name #define DOT11F_TLV_DEVICEPASSWORDID (4114)
1020*5113495bSYour Name 
1021*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1022*5113495bSYour Name #define DOT11F_TLV_DEVICEPASSWORDID_MIN_LEN (4)
1023*5113495bSYour Name 
1024*5113495bSYour Name #define DOT11F_TLV_DEVICEPASSWORDID_MAX_LEN (4)
1025*5113495bSYour Name 
1026*5113495bSYour Name #ifdef __cplusplus
1027*5113495bSYour Name extern "C" {
1028*5113495bSYour Name #endif /* C++ */
1029*5113495bSYour Name uint32_t dot11f_unpack_tlv_DevicePasswordID(
1030*5113495bSYour Name 	tpAniSirGlobal,
1031*5113495bSYour Name 	uint8_t *,
1032*5113495bSYour Name 	uint16_t,
1033*5113495bSYour Name 	tDot11fTLVDevicePasswordID*);
1034*5113495bSYour Name 
1035*5113495bSYour Name uint32_t dot11f_pack_tlv_device_password_id(
1036*5113495bSYour Name 	tpAniSirGlobal,
1037*5113495bSYour Name 	tDot11fTLVDevicePasswordID *,
1038*5113495bSYour Name 	uint8_t *,
1039*5113495bSYour Name 	uint32_t,
1040*5113495bSYour Name 	uint32_t*);
1041*5113495bSYour Name 
1042*5113495bSYour Name uint32_t dot11f_get_packed_tlv_DevicePasswordID(
1043*5113495bSYour Name 	tpAniSirGlobal,
1044*5113495bSYour Name 	tDot11fTLVDevicePasswordID *,
1045*5113495bSYour Name 	uint32_t*);
1046*5113495bSYour Name 
1047*5113495bSYour Name #ifdef __cplusplus
1048*5113495bSYour Name }; /* End extern "C". */
1049*5113495bSYour Name #endif /* C++ */
1050*5113495bSYour Name 
1051*5113495bSYour Name /* ID 8 (0x0008) */
1052*5113495bSYour Name typedef struct sDot11fTLVExtendedListenTiming {
1053*5113495bSYour Name 	uint8_t             present;
1054*5113495bSYour Name 	uint16_t            availibilityPeriod;
1055*5113495bSYour Name 	uint16_t            availibilityInterval;
1056*5113495bSYour Name } tDot11fTLVExtendedListenTiming;
1057*5113495bSYour Name 
1058*5113495bSYour Name #define DOT11F_TLV_EXTENDEDLISTENTIMING (8)
1059*5113495bSYour Name 
1060*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1061*5113495bSYour Name #define DOT11F_TLV_EXTENDEDLISTENTIMING_MIN_LEN (5)
1062*5113495bSYour Name 
1063*5113495bSYour Name #define DOT11F_TLV_EXTENDEDLISTENTIMING_MAX_LEN (5)
1064*5113495bSYour Name 
1065*5113495bSYour Name #ifdef __cplusplus
1066*5113495bSYour Name extern "C" {
1067*5113495bSYour Name #endif /* C++ */
1068*5113495bSYour Name uint32_t dot11f_unpack_tlv_extended_listen_timing(
1069*5113495bSYour Name 	tpAniSirGlobal,
1070*5113495bSYour Name 	uint8_t *,
1071*5113495bSYour Name 	uint16_t,
1072*5113495bSYour Name 	tDot11fTLVExtendedListenTiming*);
1073*5113495bSYour Name 
1074*5113495bSYour Name uint32_t dot11f_pack_tlv_extended_listen_timing(
1075*5113495bSYour Name 	tpAniSirGlobal,
1076*5113495bSYour Name 	tDot11fTLVExtendedListenTiming *,
1077*5113495bSYour Name 	uint8_t *,
1078*5113495bSYour Name 	uint32_t,
1079*5113495bSYour Name 	uint32_t*);
1080*5113495bSYour Name 
1081*5113495bSYour Name uint32_t dot11f_get_packed_tlv_ExtendedListenTiming(
1082*5113495bSYour Name 	tpAniSirGlobal,
1083*5113495bSYour Name 	tDot11fTLVExtendedListenTiming *,
1084*5113495bSYour Name 	uint32_t*);
1085*5113495bSYour Name 
1086*5113495bSYour Name #ifdef __cplusplus
1087*5113495bSYour Name }; /* End extern "C". */
1088*5113495bSYour Name #endif /* C++ */
1089*5113495bSYour Name 
1090*5113495bSYour Name /* ID 6 (0x0006) */
1091*5113495bSYour Name typedef struct sDot11fTLVListenChannel {
1092*5113495bSYour Name 	uint8_t             present;
1093*5113495bSYour Name 	uint8_t             countryString[3];
1094*5113495bSYour Name 	uint8_t             regulatoryClass;
1095*5113495bSYour Name 	uint8_t             channel;
1096*5113495bSYour Name } tDot11fTLVListenChannel;
1097*5113495bSYour Name 
1098*5113495bSYour Name #define DOT11F_TLV_LISTENCHANNEL (6)
1099*5113495bSYour Name 
1100*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1101*5113495bSYour Name #define DOT11F_TLV_LISTENCHANNEL_MIN_LEN (6)
1102*5113495bSYour Name 
1103*5113495bSYour Name #define DOT11F_TLV_LISTENCHANNEL_MAX_LEN (6)
1104*5113495bSYour Name 
1105*5113495bSYour Name #ifdef __cplusplus
1106*5113495bSYour Name extern "C" {
1107*5113495bSYour Name #endif /* C++ */
1108*5113495bSYour Name uint32_t dot11f_unpack_tlv_listen_channel(
1109*5113495bSYour Name 	tpAniSirGlobal,
1110*5113495bSYour Name 	uint8_t *,
1111*5113495bSYour Name 	uint16_t,
1112*5113495bSYour Name 	tDot11fTLVListenChannel*);
1113*5113495bSYour Name 
1114*5113495bSYour Name uint32_t dot11f_pack_tlv_listen_channel(
1115*5113495bSYour Name 	tpAniSirGlobal,
1116*5113495bSYour Name 	tDot11fTLVListenChannel *,
1117*5113495bSYour Name 	uint8_t *,
1118*5113495bSYour Name 	uint32_t,
1119*5113495bSYour Name 	uint32_t*);
1120*5113495bSYour Name 
1121*5113495bSYour Name uint32_t dot11f_get_packed_tlv_ListenChannel(
1122*5113495bSYour Name 	tpAniSirGlobal,
1123*5113495bSYour Name 	tDot11fTLVListenChannel *,
1124*5113495bSYour Name 	uint32_t*);
1125*5113495bSYour Name 
1126*5113495bSYour Name #ifdef __cplusplus
1127*5113495bSYour Name }; /* End extern "C". */
1128*5113495bSYour Name #endif /* C++ */
1129*5113495bSYour Name 
1130*5113495bSYour Name /* ID 4129 (0x1021) */
1131*5113495bSYour Name typedef struct sDot11fTLVManufacturer {
1132*5113495bSYour Name 	uint8_t             present;
1133*5113495bSYour Name 	uint8_t             num_name;
1134*5113495bSYour Name 	uint8_t             name[64];
1135*5113495bSYour Name } tDot11fTLVManufacturer;
1136*5113495bSYour Name 
1137*5113495bSYour Name #define DOT11F_TLV_MANUFACTURER (4129)
1138*5113495bSYour Name 
1139*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1140*5113495bSYour Name #define DOT11F_TLV_MANUFACTURER_MIN_LEN (2)
1141*5113495bSYour Name 
1142*5113495bSYour Name #define DOT11F_TLV_MANUFACTURER_MAX_LEN (66)
1143*5113495bSYour Name 
1144*5113495bSYour Name #ifdef __cplusplus
1145*5113495bSYour Name extern "C" {
1146*5113495bSYour Name #endif /* C++ */
1147*5113495bSYour Name uint32_t dot11f_unpack_tlv_manufacturer(
1148*5113495bSYour Name 	tpAniSirGlobal,
1149*5113495bSYour Name 	uint8_t *,
1150*5113495bSYour Name 	uint16_t,
1151*5113495bSYour Name 	tDot11fTLVManufacturer*);
1152*5113495bSYour Name 
1153*5113495bSYour Name uint32_t dot11f_pack_tlv_manufacturer(
1154*5113495bSYour Name 	tpAniSirGlobal,
1155*5113495bSYour Name 	tDot11fTLVManufacturer *,
1156*5113495bSYour Name 	uint8_t *,
1157*5113495bSYour Name 	uint32_t,
1158*5113495bSYour Name 	uint32_t*);
1159*5113495bSYour Name 
1160*5113495bSYour Name uint32_t dot11f_get_packed_tlv_Manufacturer(
1161*5113495bSYour Name 	tpAniSirGlobal,
1162*5113495bSYour Name 	tDot11fTLVManufacturer *,
1163*5113495bSYour Name 	uint32_t*);
1164*5113495bSYour Name 
1165*5113495bSYour Name #ifdef __cplusplus
1166*5113495bSYour Name }; /* End extern "C". */
1167*5113495bSYour Name #endif /* C++ */
1168*5113495bSYour Name 
1169*5113495bSYour Name /* ID 1 (0x0001) */
1170*5113495bSYour Name typedef struct sDot11fTLVMinorReasonCode {
1171*5113495bSYour Name 	uint8_t             present;
1172*5113495bSYour Name 	uint8_t             minorReasonCode;
1173*5113495bSYour Name } tDot11fTLVMinorReasonCode;
1174*5113495bSYour Name 
1175*5113495bSYour Name #define DOT11F_TLV_MINORREASONCODE (1)
1176*5113495bSYour Name 
1177*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1178*5113495bSYour Name #define DOT11F_TLV_MINORREASONCODE_MIN_LEN (2)
1179*5113495bSYour Name 
1180*5113495bSYour Name #define DOT11F_TLV_MINORREASONCODE_MAX_LEN (2)
1181*5113495bSYour Name 
1182*5113495bSYour Name #ifdef __cplusplus
1183*5113495bSYour Name extern "C" {
1184*5113495bSYour Name #endif /* C++ */
1185*5113495bSYour Name uint32_t dot11f_unpack_tlv_MinorReasonCode(
1186*5113495bSYour Name 	tpAniSirGlobal,
1187*5113495bSYour Name 	uint8_t *,
1188*5113495bSYour Name 	uint16_t,
1189*5113495bSYour Name 	tDot11fTLVMinorReasonCode*);
1190*5113495bSYour Name 
1191*5113495bSYour Name uint32_t dot11f_pack_tlv_minor_reason_code(
1192*5113495bSYour Name 	tpAniSirGlobal,
1193*5113495bSYour Name 	tDot11fTLVMinorReasonCode *,
1194*5113495bSYour Name 	uint8_t *,
1195*5113495bSYour Name 	uint32_t,
1196*5113495bSYour Name 	uint32_t*);
1197*5113495bSYour Name 
1198*5113495bSYour Name uint32_t dot11f_get_packed_tlv_MinorReasonCode(
1199*5113495bSYour Name 	tpAniSirGlobal,
1200*5113495bSYour Name 	tDot11fTLVMinorReasonCode *,
1201*5113495bSYour Name 	uint32_t*);
1202*5113495bSYour Name 
1203*5113495bSYour Name #ifdef __cplusplus
1204*5113495bSYour Name }; /* End extern "C". */
1205*5113495bSYour Name #endif /* C++ */
1206*5113495bSYour Name 
1207*5113495bSYour Name /* ID 4131 (0x1023) */
1208*5113495bSYour Name typedef struct sDot11fTLVModelName {
1209*5113495bSYour Name 	uint8_t             present;
1210*5113495bSYour Name 	uint8_t             num_text;
1211*5113495bSYour Name 	uint8_t             text[32];
1212*5113495bSYour Name } tDot11fTLVModelName;
1213*5113495bSYour Name 
1214*5113495bSYour Name #define DOT11F_TLV_MODELNAME (4131)
1215*5113495bSYour Name 
1216*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1217*5113495bSYour Name #define DOT11F_TLV_MODELNAME_MIN_LEN (2)
1218*5113495bSYour Name 
1219*5113495bSYour Name #define DOT11F_TLV_MODELNAME_MAX_LEN (34)
1220*5113495bSYour Name 
1221*5113495bSYour Name #ifdef __cplusplus
1222*5113495bSYour Name extern "C" {
1223*5113495bSYour Name #endif /* C++ */
1224*5113495bSYour Name uint32_t dot11f_unpack_tlv_model_name(
1225*5113495bSYour Name 	tpAniSirGlobal,
1226*5113495bSYour Name 	uint8_t *,
1227*5113495bSYour Name 	uint16_t,
1228*5113495bSYour Name 	tDot11fTLVModelName*);
1229*5113495bSYour Name 
1230*5113495bSYour Name uint32_t dot11f_pack_tlv_model_name(
1231*5113495bSYour Name 	tpAniSirGlobal,
1232*5113495bSYour Name 	tDot11fTLVModelName *,
1233*5113495bSYour Name 	uint8_t *,
1234*5113495bSYour Name 	uint32_t,
1235*5113495bSYour Name 	uint32_t*);
1236*5113495bSYour Name 
1237*5113495bSYour Name uint32_t dot11f_get_packed_tlv_ModelName(
1238*5113495bSYour Name 	tpAniSirGlobal,
1239*5113495bSYour Name 	tDot11fTLVModelName *,
1240*5113495bSYour Name 	uint32_t*);
1241*5113495bSYour Name 
1242*5113495bSYour Name #ifdef __cplusplus
1243*5113495bSYour Name }; /* End extern "C". */
1244*5113495bSYour Name #endif /* C++ */
1245*5113495bSYour Name 
1246*5113495bSYour Name /* ID 4132 (0x1024) */
1247*5113495bSYour Name typedef struct sDot11fTLVModelNumber {
1248*5113495bSYour Name 	uint8_t             present;
1249*5113495bSYour Name 	uint8_t             num_text;
1250*5113495bSYour Name 	uint8_t             text[32];
1251*5113495bSYour Name } tDot11fTLVModelNumber;
1252*5113495bSYour Name 
1253*5113495bSYour Name #define DOT11F_TLV_MODELNUMBER (4132)
1254*5113495bSYour Name 
1255*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1256*5113495bSYour Name #define DOT11F_TLV_MODELNUMBER_MIN_LEN (2)
1257*5113495bSYour Name 
1258*5113495bSYour Name #define DOT11F_TLV_MODELNUMBER_MAX_LEN (34)
1259*5113495bSYour Name 
1260*5113495bSYour Name #ifdef __cplusplus
1261*5113495bSYour Name extern "C" {
1262*5113495bSYour Name #endif /* C++ */
1263*5113495bSYour Name uint32_t dot11f_unpack_tlv_model_number(
1264*5113495bSYour Name 	tpAniSirGlobal,
1265*5113495bSYour Name 	uint8_t *,
1266*5113495bSYour Name 	uint16_t,
1267*5113495bSYour Name 	tDot11fTLVModelNumber*);
1268*5113495bSYour Name 
1269*5113495bSYour Name uint32_t dot11f_pack_tlv_model_number(
1270*5113495bSYour Name 	tpAniSirGlobal,
1271*5113495bSYour Name 	tDot11fTLVModelNumber *,
1272*5113495bSYour Name 	uint8_t *,
1273*5113495bSYour Name 	uint32_t,
1274*5113495bSYour Name 	uint32_t*);
1275*5113495bSYour Name 
1276*5113495bSYour Name uint32_t dot11f_get_packed_tlv_ModelNumber(
1277*5113495bSYour Name 	tpAniSirGlobal,
1278*5113495bSYour Name 	tDot11fTLVModelNumber *,
1279*5113495bSYour Name 	uint32_t*);
1280*5113495bSYour Name 
1281*5113495bSYour Name #ifdef __cplusplus
1282*5113495bSYour Name }; /* End extern "C". */
1283*5113495bSYour Name #endif /* C++ */
1284*5113495bSYour Name 
1285*5113495bSYour Name /* ID 12 (0x000c) */
1286*5113495bSYour Name typedef struct sDot11fTLVNoticeOfAbsence {
1287*5113495bSYour Name 	uint8_t             present;
1288*5113495bSYour Name 	uint8_t             index;
1289*5113495bSYour Name 	uint8_t             CTSWindowOppPS;
1290*5113495bSYour Name 	uint8_t             num_NoADesc;
1291*5113495bSYour Name 	uint8_t             NoADesc[36];
1292*5113495bSYour Name } tDot11fTLVNoticeOfAbsence;
1293*5113495bSYour Name 
1294*5113495bSYour Name #define DOT11F_TLV_NOTICEOFABSENCE (12)
1295*5113495bSYour Name 
1296*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1297*5113495bSYour Name #define DOT11F_TLV_NOTICEOFABSENCE_MIN_LEN (3)
1298*5113495bSYour Name 
1299*5113495bSYour Name #define DOT11F_TLV_NOTICEOFABSENCE_MAX_LEN (39)
1300*5113495bSYour Name 
1301*5113495bSYour Name #ifdef __cplusplus
1302*5113495bSYour Name extern "C" {
1303*5113495bSYour Name #endif /* C++ */
1304*5113495bSYour Name uint32_t dot11f_unpack_tlv_notice_of_absence(
1305*5113495bSYour Name 	tpAniSirGlobal,
1306*5113495bSYour Name 	uint8_t *,
1307*5113495bSYour Name 	uint16_t,
1308*5113495bSYour Name 	tDot11fTLVNoticeOfAbsence*);
1309*5113495bSYour Name 
1310*5113495bSYour Name uint32_t dot11f_pack_tlv_notice_of_absence(
1311*5113495bSYour Name 	tpAniSirGlobal,
1312*5113495bSYour Name 	tDot11fTLVNoticeOfAbsence *,
1313*5113495bSYour Name 	uint8_t *,
1314*5113495bSYour Name 	uint32_t,
1315*5113495bSYour Name 	uint32_t*);
1316*5113495bSYour Name 
1317*5113495bSYour Name uint32_t dot11f_get_packed_tlv_NoticeOfAbsence(
1318*5113495bSYour Name 	tpAniSirGlobal,
1319*5113495bSYour Name 	tDot11fTLVNoticeOfAbsence *,
1320*5113495bSYour Name 	uint32_t*);
1321*5113495bSYour Name 
1322*5113495bSYour Name #ifdef __cplusplus
1323*5113495bSYour Name }; /* End extern "C". */
1324*5113495bSYour Name #endif /* C++ */
1325*5113495bSYour Name 
1326*5113495bSYour Name /* ID 17 (0x0011) */
1327*5113495bSYour Name typedef struct sDot11fTLVOperatingChannel {
1328*5113495bSYour Name 	uint8_t             present;
1329*5113495bSYour Name 	uint8_t             countryString[3];
1330*5113495bSYour Name 	uint8_t             regulatoryClass;
1331*5113495bSYour Name 	uint8_t             channel;
1332*5113495bSYour Name } tDot11fTLVOperatingChannel;
1333*5113495bSYour Name 
1334*5113495bSYour Name #define DOT11F_TLV_OPERATINGCHANNEL (17)
1335*5113495bSYour Name 
1336*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1337*5113495bSYour Name #define DOT11F_TLV_OPERATINGCHANNEL_MIN_LEN (6)
1338*5113495bSYour Name 
1339*5113495bSYour Name #define DOT11F_TLV_OPERATINGCHANNEL_MAX_LEN (6)
1340*5113495bSYour Name 
1341*5113495bSYour Name #ifdef __cplusplus
1342*5113495bSYour Name extern "C" {
1343*5113495bSYour Name #endif /* C++ */
1344*5113495bSYour Name uint32_t dot11f_unpack_tlv_operating_channel(
1345*5113495bSYour Name 	tpAniSirGlobal,
1346*5113495bSYour Name 	uint8_t *,
1347*5113495bSYour Name 	uint16_t,
1348*5113495bSYour Name 	tDot11fTLVOperatingChannel*);
1349*5113495bSYour Name 
1350*5113495bSYour Name uint32_t dot11f_pack_tlv_operating_channel(
1351*5113495bSYour Name 	tpAniSirGlobal,
1352*5113495bSYour Name 	tDot11fTLVOperatingChannel *,
1353*5113495bSYour Name 	uint8_t *,
1354*5113495bSYour Name 	uint32_t,
1355*5113495bSYour Name 	uint32_t*);
1356*5113495bSYour Name 
1357*5113495bSYour Name uint32_t dot11f_get_packed_tlv_OperatingChannel(
1358*5113495bSYour Name 	tpAniSirGlobal,
1359*5113495bSYour Name 	tDot11fTLVOperatingChannel *,
1360*5113495bSYour Name 	uint32_t*);
1361*5113495bSYour Name 
1362*5113495bSYour Name #ifdef __cplusplus
1363*5113495bSYour Name }; /* End extern "C". */
1364*5113495bSYour Name #endif /* C++ */
1365*5113495bSYour Name 
1366*5113495bSYour Name /* ID 2 (0x0002) */
1367*5113495bSYour Name typedef struct sDot11fTLVP2PCapability {
1368*5113495bSYour Name 	uint8_t             present;
1369*5113495bSYour Name 	uint8_t             deviceCapability;
1370*5113495bSYour Name 	uint8_t             groupCapability;
1371*5113495bSYour Name } tDot11fTLVP2PCapability;
1372*5113495bSYour Name 
1373*5113495bSYour Name #define DOT11F_TLV_P2PCAPABILITY (2)
1374*5113495bSYour Name 
1375*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1376*5113495bSYour Name #define DOT11F_TLV_P2PCAPABILITY_MIN_LEN (3)
1377*5113495bSYour Name 
1378*5113495bSYour Name #define DOT11F_TLV_P2PCAPABILITY_MAX_LEN (3)
1379*5113495bSYour Name 
1380*5113495bSYour Name #ifdef __cplusplus
1381*5113495bSYour Name extern "C" {
1382*5113495bSYour Name #endif /* C++ */
1383*5113495bSYour Name uint32_t dot11f_unpack_tlv_p2_p_capability(
1384*5113495bSYour Name 	tpAniSirGlobal,
1385*5113495bSYour Name 	uint8_t *,
1386*5113495bSYour Name 	uint16_t,
1387*5113495bSYour Name 	tDot11fTLVP2PCapability*);
1388*5113495bSYour Name 
1389*5113495bSYour Name uint32_t dot11f_pack_tlv_p2_p_capability(
1390*5113495bSYour Name 	tpAniSirGlobal,
1391*5113495bSYour Name 	tDot11fTLVP2PCapability *,
1392*5113495bSYour Name 	uint8_t *,
1393*5113495bSYour Name 	uint32_t,
1394*5113495bSYour Name 	uint32_t*);
1395*5113495bSYour Name 
1396*5113495bSYour Name uint32_t dot11f_get_packed_tlv_P2PCapability(
1397*5113495bSYour Name 	tpAniSirGlobal,
1398*5113495bSYour Name 	tDot11fTLVP2PCapability *,
1399*5113495bSYour Name 	uint32_t*);
1400*5113495bSYour Name 
1401*5113495bSYour Name #ifdef __cplusplus
1402*5113495bSYour Name }; /* End extern "C". */
1403*5113495bSYour Name #endif /* C++ */
1404*5113495bSYour Name 
1405*5113495bSYour Name /* ID 3 (0x0003) */
1406*5113495bSYour Name typedef struct sDot11fTLVP2PDeviceId {
1407*5113495bSYour Name 	uint8_t             present;
1408*5113495bSYour Name 	uint8_t             P2PDeviceAddress[6];
1409*5113495bSYour Name } tDot11fTLVP2PDeviceId;
1410*5113495bSYour Name 
1411*5113495bSYour Name #define DOT11F_TLV_P2PDEVICEID (3)
1412*5113495bSYour Name 
1413*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1414*5113495bSYour Name #define DOT11F_TLV_P2PDEVICEID_MIN_LEN (7)
1415*5113495bSYour Name 
1416*5113495bSYour Name #define DOT11F_TLV_P2PDEVICEID_MAX_LEN (7)
1417*5113495bSYour Name 
1418*5113495bSYour Name #ifdef __cplusplus
1419*5113495bSYour Name extern "C" {
1420*5113495bSYour Name #endif /* C++ */
1421*5113495bSYour Name uint32_t dot11f_unpack_tlv_p2_p_device_id(
1422*5113495bSYour Name 	tpAniSirGlobal,
1423*5113495bSYour Name 	uint8_t *,
1424*5113495bSYour Name 	uint16_t,
1425*5113495bSYour Name 	tDot11fTLVP2PDeviceId*);
1426*5113495bSYour Name 
1427*5113495bSYour Name uint32_t dot11f_pack_tlv_p2_p_device_id(
1428*5113495bSYour Name 	tpAniSirGlobal,
1429*5113495bSYour Name 	tDot11fTLVP2PDeviceId *,
1430*5113495bSYour Name 	uint8_t *,
1431*5113495bSYour Name 	uint32_t,
1432*5113495bSYour Name 	uint32_t*);
1433*5113495bSYour Name 
1434*5113495bSYour Name uint32_t dot11f_get_packed_tlv_P2PDeviceId(
1435*5113495bSYour Name 	tpAniSirGlobal,
1436*5113495bSYour Name 	tDot11fTLVP2PDeviceId *,
1437*5113495bSYour Name 	uint32_t*);
1438*5113495bSYour Name 
1439*5113495bSYour Name #ifdef __cplusplus
1440*5113495bSYour Name }; /* End extern "C". */
1441*5113495bSYour Name #endif /* C++ */
1442*5113495bSYour Name 
1443*5113495bSYour Name /* ID 13 (0x000d) */
1444*5113495bSYour Name typedef struct sDot11fTLVP2PDeviceInfo {
1445*5113495bSYour Name 	uint8_t                     present;
1446*5113495bSYour Name 	uint8_t                     P2PDeviceAddress[6];
1447*5113495bSYour Name 	uint16_t                    configMethod;
1448*5113495bSYour Name 	uint8_t                     primaryDeviceType[8];
1449*5113495bSYour Name 	tDot11fTLVDeviceName        DeviceName;
1450*5113495bSYour Name } tDot11fTLVP2PDeviceInfo;
1451*5113495bSYour Name 
1452*5113495bSYour Name #define DOT11F_TLV_P2PDEVICEINFO (13)
1453*5113495bSYour Name 
1454*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1455*5113495bSYour Name #define DOT11F_TLV_P2PDEVICEINFO_MIN_LEN (17)
1456*5113495bSYour Name 
1457*5113495bSYour Name #define DOT11F_TLV_P2PDEVICEINFO_MAX_LEN (53)
1458*5113495bSYour Name 
1459*5113495bSYour Name #ifdef __cplusplus
1460*5113495bSYour Name extern "C" {
1461*5113495bSYour Name #endif /* C++ */
1462*5113495bSYour Name uint32_t dot11f_unpack_tlv_p2_p_device_info(
1463*5113495bSYour Name 	tpAniSirGlobal,
1464*5113495bSYour Name 	uint8_t *,
1465*5113495bSYour Name 	uint16_t,
1466*5113495bSYour Name 	tDot11fTLVP2PDeviceInfo*);
1467*5113495bSYour Name 
1468*5113495bSYour Name uint32_t dot11f_pack_tlv_p2_p_device_info(
1469*5113495bSYour Name 	tpAniSirGlobal,
1470*5113495bSYour Name 	tDot11fTLVP2PDeviceInfo *,
1471*5113495bSYour Name 	uint8_t *,
1472*5113495bSYour Name 	uint32_t,
1473*5113495bSYour Name 	uint32_t*);
1474*5113495bSYour Name 
1475*5113495bSYour Name uint32_t dot11f_get_packed_tlv_P2PDeviceInfo(
1476*5113495bSYour Name 	tpAniSirGlobal,
1477*5113495bSYour Name 	tDot11fTLVP2PDeviceInfo *,
1478*5113495bSYour Name 	uint32_t*);
1479*5113495bSYour Name 
1480*5113495bSYour Name #ifdef __cplusplus
1481*5113495bSYour Name }; /* End extern "C". */
1482*5113495bSYour Name #endif /* C++ */
1483*5113495bSYour Name 
1484*5113495bSYour Name /* ID 14 (0x000e) */
1485*5113495bSYour Name typedef struct sDot11fTLVP2PGroupInfo {
1486*5113495bSYour Name 	uint8_t             present;
1487*5113495bSYour Name 	uint8_t             num_P2PClientInfoDesc;
1488*5113495bSYour Name 	uint8_t             P2PClientInfoDesc[1024];
1489*5113495bSYour Name } tDot11fTLVP2PGroupInfo;
1490*5113495bSYour Name 
1491*5113495bSYour Name #define DOT11F_TLV_P2PGROUPINFO (14)
1492*5113495bSYour Name 
1493*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1494*5113495bSYour Name #define DOT11F_TLV_P2PGROUPINFO_MIN_LEN (1)
1495*5113495bSYour Name 
1496*5113495bSYour Name #define DOT11F_TLV_P2PGROUPINFO_MAX_LEN (1025)
1497*5113495bSYour Name 
1498*5113495bSYour Name #ifdef __cplusplus
1499*5113495bSYour Name extern "C" {
1500*5113495bSYour Name #endif /* C++ */
1501*5113495bSYour Name uint32_t dot11f_unpack_tlv_p2_p_group_info(
1502*5113495bSYour Name 	tpAniSirGlobal,
1503*5113495bSYour Name 	uint8_t *,
1504*5113495bSYour Name 	uint16_t,
1505*5113495bSYour Name 	tDot11fTLVP2PGroupInfo*);
1506*5113495bSYour Name 
1507*5113495bSYour Name uint32_t dot11f_pack_tlv_p2_p_group_info(
1508*5113495bSYour Name 	tpAniSirGlobal,
1509*5113495bSYour Name 	tDot11fTLVP2PGroupInfo *,
1510*5113495bSYour Name 	uint8_t *,
1511*5113495bSYour Name 	uint32_t,
1512*5113495bSYour Name 	uint32_t*);
1513*5113495bSYour Name 
1514*5113495bSYour Name uint32_t dot11f_get_packed_tlv_P2PGroupInfo(
1515*5113495bSYour Name 	tpAniSirGlobal,
1516*5113495bSYour Name 	tDot11fTLVP2PGroupInfo *,
1517*5113495bSYour Name 	uint32_t*);
1518*5113495bSYour Name 
1519*5113495bSYour Name #ifdef __cplusplus
1520*5113495bSYour Name }; /* End extern "C". */
1521*5113495bSYour Name #endif /* C++ */
1522*5113495bSYour Name 
1523*5113495bSYour Name /* ID 0 (0x0000) */
1524*5113495bSYour Name typedef struct sDot11fTLVP2PStatus {
1525*5113495bSYour Name 	uint8_t             present;
1526*5113495bSYour Name 	uint8_t             status;
1527*5113495bSYour Name } tDot11fTLVP2PStatus;
1528*5113495bSYour Name 
1529*5113495bSYour Name #define DOT11F_TLV_P2PSTATUS (0)
1530*5113495bSYour Name 
1531*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1532*5113495bSYour Name #define DOT11F_TLV_P2PSTATUS_MIN_LEN (2)
1533*5113495bSYour Name 
1534*5113495bSYour Name #define DOT11F_TLV_P2PSTATUS_MAX_LEN (2)
1535*5113495bSYour Name 
1536*5113495bSYour Name #ifdef __cplusplus
1537*5113495bSYour Name extern "C" {
1538*5113495bSYour Name #endif /* C++ */
1539*5113495bSYour Name uint32_t dot11f_unpack_tlv_P2PStatus(
1540*5113495bSYour Name 	tpAniSirGlobal,
1541*5113495bSYour Name 	uint8_t *,
1542*5113495bSYour Name 	uint16_t,
1543*5113495bSYour Name 	tDot11fTLVP2PStatus*);
1544*5113495bSYour Name 
1545*5113495bSYour Name uint32_t dot11f_pack_tlv_p2_p_status(
1546*5113495bSYour Name 	tpAniSirGlobal,
1547*5113495bSYour Name 	tDot11fTLVP2PStatus *,
1548*5113495bSYour Name 	uint8_t *,
1549*5113495bSYour Name 	uint32_t,
1550*5113495bSYour Name 	uint32_t*);
1551*5113495bSYour Name 
1552*5113495bSYour Name uint32_t dot11f_get_packed_tlv_P2PStatus(
1553*5113495bSYour Name 	tpAniSirGlobal,
1554*5113495bSYour Name 	tDot11fTLVP2PStatus *,
1555*5113495bSYour Name 	uint32_t*);
1556*5113495bSYour Name 
1557*5113495bSYour Name #ifdef __cplusplus
1558*5113495bSYour Name }; /* End extern "C". */
1559*5113495bSYour Name #endif /* C++ */
1560*5113495bSYour Name 
1561*5113495bSYour Name /* ID 4180 (0x1054) */
1562*5113495bSYour Name typedef struct sDot11fTLVPrimaryDeviceType {
1563*5113495bSYour Name 	uint8_t             present;
1564*5113495bSYour Name 	uint16_t            primary_category;
1565*5113495bSYour Name 	uint8_t             oui[4];
1566*5113495bSYour Name 	uint16_t            sub_category;
1567*5113495bSYour Name } tDot11fTLVPrimaryDeviceType;
1568*5113495bSYour Name 
1569*5113495bSYour Name #define DOT11F_TLV_PRIMARYDEVICETYPE (4180)
1570*5113495bSYour Name 
1571*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1572*5113495bSYour Name #define DOT11F_TLV_PRIMARYDEVICETYPE_MIN_LEN (10)
1573*5113495bSYour Name 
1574*5113495bSYour Name #define DOT11F_TLV_PRIMARYDEVICETYPE_MAX_LEN (10)
1575*5113495bSYour Name 
1576*5113495bSYour Name #ifdef __cplusplus
1577*5113495bSYour Name extern "C" {
1578*5113495bSYour Name #endif /* C++ */
1579*5113495bSYour Name uint32_t dot11f_unpack_tlv_primary_device_type(
1580*5113495bSYour Name 	tpAniSirGlobal,
1581*5113495bSYour Name 	uint8_t *,
1582*5113495bSYour Name 	uint16_t,
1583*5113495bSYour Name 	tDot11fTLVPrimaryDeviceType*);
1584*5113495bSYour Name 
1585*5113495bSYour Name uint32_t dot11f_pack_tlv_primary_device_type(
1586*5113495bSYour Name 	tpAniSirGlobal,
1587*5113495bSYour Name 	tDot11fTLVPrimaryDeviceType *,
1588*5113495bSYour Name 	uint8_t *,
1589*5113495bSYour Name 	uint32_t,
1590*5113495bSYour Name 	uint32_t*);
1591*5113495bSYour Name 
1592*5113495bSYour Name uint32_t dot11f_get_packed_tlv_PrimaryDeviceType(
1593*5113495bSYour Name 	tpAniSirGlobal,
1594*5113495bSYour Name 	tDot11fTLVPrimaryDeviceType *,
1595*5113495bSYour Name 	uint32_t*);
1596*5113495bSYour Name 
1597*5113495bSYour Name #ifdef __cplusplus
1598*5113495bSYour Name }; /* End extern "C". */
1599*5113495bSYour Name #endif /* C++ */
1600*5113495bSYour Name 
1601*5113495bSYour Name /* ID 4156 (0x103c) */
1602*5113495bSYour Name typedef struct sDot11fTLVRFBands {
1603*5113495bSYour Name 	uint8_t             present;
1604*5113495bSYour Name 	uint8_t             bands;
1605*5113495bSYour Name } tDot11fTLVRFBands;
1606*5113495bSYour Name 
1607*5113495bSYour Name #define DOT11F_TLV_RFBANDS (4156)
1608*5113495bSYour Name 
1609*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1610*5113495bSYour Name #define DOT11F_TLV_RFBANDS_MIN_LEN (3)
1611*5113495bSYour Name 
1612*5113495bSYour Name #define DOT11F_TLV_RFBANDS_MAX_LEN (3)
1613*5113495bSYour Name 
1614*5113495bSYour Name #ifdef __cplusplus
1615*5113495bSYour Name extern "C" {
1616*5113495bSYour Name #endif /* C++ */
1617*5113495bSYour Name uint32_t dot11f_unpack_tlv_RFBands(
1618*5113495bSYour Name 	tpAniSirGlobal,
1619*5113495bSYour Name 	uint8_t *,
1620*5113495bSYour Name 	uint16_t,
1621*5113495bSYour Name 	tDot11fTLVRFBands*);
1622*5113495bSYour Name 
1623*5113495bSYour Name uint32_t dot11f_pack_tlv_rf_bands(
1624*5113495bSYour Name 	tpAniSirGlobal,
1625*5113495bSYour Name 	tDot11fTLVRFBands *,
1626*5113495bSYour Name 	uint8_t *,
1627*5113495bSYour Name 	uint32_t,
1628*5113495bSYour Name 	uint32_t*);
1629*5113495bSYour Name 
1630*5113495bSYour Name uint32_t dot11f_get_packed_tlv_RFBands(
1631*5113495bSYour Name 	tpAniSirGlobal,
1632*5113495bSYour Name 	tDot11fTLVRFBands *,
1633*5113495bSYour Name 	uint32_t*);
1634*5113495bSYour Name 
1635*5113495bSYour Name #ifdef __cplusplus
1636*5113495bSYour Name }; /* End extern "C". */
1637*5113495bSYour Name #endif /* C++ */
1638*5113495bSYour Name 
1639*5113495bSYour Name /* ID 4202 (0x106a) */
1640*5113495bSYour Name typedef struct sDot11fTLVRequestDeviceType {
1641*5113495bSYour Name 	uint8_t             present;
1642*5113495bSYour Name 	uint16_t            primary_category;
1643*5113495bSYour Name 	uint8_t             oui[4];
1644*5113495bSYour Name 	uint16_t            sub_category;
1645*5113495bSYour Name } tDot11fTLVRequestDeviceType;
1646*5113495bSYour Name 
1647*5113495bSYour Name #define DOT11F_TLV_REQUESTDEVICETYPE (4202)
1648*5113495bSYour Name 
1649*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1650*5113495bSYour Name #define DOT11F_TLV_REQUESTDEVICETYPE_MIN_LEN (10)
1651*5113495bSYour Name 
1652*5113495bSYour Name #define DOT11F_TLV_REQUESTDEVICETYPE_MAX_LEN (10)
1653*5113495bSYour Name 
1654*5113495bSYour Name #ifdef __cplusplus
1655*5113495bSYour Name extern "C" {
1656*5113495bSYour Name #endif /* C++ */
1657*5113495bSYour Name uint32_t dot11f_unpack_tlv_request_device_type(
1658*5113495bSYour Name 	tpAniSirGlobal,
1659*5113495bSYour Name 	uint8_t *,
1660*5113495bSYour Name 	uint16_t,
1661*5113495bSYour Name 	tDot11fTLVRequestDeviceType*);
1662*5113495bSYour Name 
1663*5113495bSYour Name uint32_t dot11f_pack_tlv_request_device_type(
1664*5113495bSYour Name 	tpAniSirGlobal,
1665*5113495bSYour Name 	tDot11fTLVRequestDeviceType *,
1666*5113495bSYour Name 	uint8_t *,
1667*5113495bSYour Name 	uint32_t,
1668*5113495bSYour Name 	uint32_t*);
1669*5113495bSYour Name 
1670*5113495bSYour Name uint32_t dot11f_get_packed_tlv_RequestDeviceType(
1671*5113495bSYour Name 	tpAniSirGlobal,
1672*5113495bSYour Name 	tDot11fTLVRequestDeviceType *,
1673*5113495bSYour Name 	uint32_t*);
1674*5113495bSYour Name 
1675*5113495bSYour Name #ifdef __cplusplus
1676*5113495bSYour Name }; /* End extern "C". */
1677*5113495bSYour Name #endif /* C++ */
1678*5113495bSYour Name 
1679*5113495bSYour Name /* ID 4154 (0x103a) */
1680*5113495bSYour Name typedef struct sDot11fTLVRequestType {
1681*5113495bSYour Name 	uint8_t             present;
1682*5113495bSYour Name 	uint8_t             reqType;
1683*5113495bSYour Name } tDot11fTLVRequestType;
1684*5113495bSYour Name 
1685*5113495bSYour Name #define DOT11F_TLV_REQUESTTYPE (4154)
1686*5113495bSYour Name 
1687*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1688*5113495bSYour Name #define DOT11F_TLV_REQUESTTYPE_MIN_LEN (3)
1689*5113495bSYour Name 
1690*5113495bSYour Name #define DOT11F_TLV_REQUESTTYPE_MAX_LEN (3)
1691*5113495bSYour Name 
1692*5113495bSYour Name #ifdef __cplusplus
1693*5113495bSYour Name extern "C" {
1694*5113495bSYour Name #endif /* C++ */
1695*5113495bSYour Name uint32_t dot11f_unpack_tlv_RequestType(
1696*5113495bSYour Name 	tpAniSirGlobal,
1697*5113495bSYour Name 	uint8_t *,
1698*5113495bSYour Name 	uint16_t,
1699*5113495bSYour Name 	tDot11fTLVRequestType*);
1700*5113495bSYour Name 
1701*5113495bSYour Name uint32_t dot11f_pack_tlv_request_type(
1702*5113495bSYour Name 	tpAniSirGlobal,
1703*5113495bSYour Name 	tDot11fTLVRequestType *,
1704*5113495bSYour Name 	uint8_t *,
1705*5113495bSYour Name 	uint32_t,
1706*5113495bSYour Name 	uint32_t*);
1707*5113495bSYour Name 
1708*5113495bSYour Name uint32_t dot11f_get_packed_tlv_RequestType(
1709*5113495bSYour Name 	tpAniSirGlobal,
1710*5113495bSYour Name 	tDot11fTLVRequestType *,
1711*5113495bSYour Name 	uint32_t*);
1712*5113495bSYour Name 
1713*5113495bSYour Name #ifdef __cplusplus
1714*5113495bSYour Name }; /* End extern "C". */
1715*5113495bSYour Name #endif /* C++ */
1716*5113495bSYour Name 
1717*5113495bSYour Name /* ID 4155 (0x103b) */
1718*5113495bSYour Name typedef struct sDot11fTLVResponseType {
1719*5113495bSYour Name 	uint8_t             present;
1720*5113495bSYour Name 	uint8_t             resType;
1721*5113495bSYour Name } tDot11fTLVResponseType;
1722*5113495bSYour Name 
1723*5113495bSYour Name #define DOT11F_TLV_RESPONSETYPE (4155)
1724*5113495bSYour Name 
1725*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1726*5113495bSYour Name #define DOT11F_TLV_RESPONSETYPE_MIN_LEN (3)
1727*5113495bSYour Name 
1728*5113495bSYour Name #define DOT11F_TLV_RESPONSETYPE_MAX_LEN (3)
1729*5113495bSYour Name 
1730*5113495bSYour Name #ifdef __cplusplus
1731*5113495bSYour Name extern "C" {
1732*5113495bSYour Name #endif /* C++ */
1733*5113495bSYour Name uint32_t dot11f_unpack_tlv_ResponseType(
1734*5113495bSYour Name 	tpAniSirGlobal,
1735*5113495bSYour Name 	uint8_t *,
1736*5113495bSYour Name 	uint16_t,
1737*5113495bSYour Name 	tDot11fTLVResponseType*);
1738*5113495bSYour Name 
1739*5113495bSYour Name uint32_t dot11f_pack_tlv_response_type(
1740*5113495bSYour Name 	tpAniSirGlobal,
1741*5113495bSYour Name 	tDot11fTLVResponseType *,
1742*5113495bSYour Name 	uint8_t *,
1743*5113495bSYour Name 	uint32_t,
1744*5113495bSYour Name 	uint32_t*);
1745*5113495bSYour Name 
1746*5113495bSYour Name uint32_t dot11f_get_packed_tlv_ResponseType(
1747*5113495bSYour Name 	tpAniSirGlobal,
1748*5113495bSYour Name 	tDot11fTLVResponseType *,
1749*5113495bSYour Name 	uint32_t*);
1750*5113495bSYour Name 
1751*5113495bSYour Name #ifdef __cplusplus
1752*5113495bSYour Name }; /* End extern "C". */
1753*5113495bSYour Name #endif /* C++ */
1754*5113495bSYour Name 
1755*5113495bSYour Name /* ID 4161 (0x1041) */
1756*5113495bSYour Name typedef struct sDot11fTLVSelectedRegistrar {
1757*5113495bSYour Name 	uint8_t             present;
1758*5113495bSYour Name 	uint8_t             selected;
1759*5113495bSYour Name } tDot11fTLVSelectedRegistrar;
1760*5113495bSYour Name 
1761*5113495bSYour Name #define DOT11F_TLV_SELECTEDREGISTRAR (4161)
1762*5113495bSYour Name 
1763*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1764*5113495bSYour Name #define DOT11F_TLV_SELECTEDREGISTRAR_MIN_LEN (3)
1765*5113495bSYour Name 
1766*5113495bSYour Name #define DOT11F_TLV_SELECTEDREGISTRAR_MAX_LEN (3)
1767*5113495bSYour Name 
1768*5113495bSYour Name #ifdef __cplusplus
1769*5113495bSYour Name extern "C" {
1770*5113495bSYour Name #endif /* C++ */
1771*5113495bSYour Name uint32_t dot11f_unpack_tlv_SelectedRegistrar(
1772*5113495bSYour Name 	tpAniSirGlobal,
1773*5113495bSYour Name 	uint8_t *,
1774*5113495bSYour Name 	uint16_t,
1775*5113495bSYour Name 	tDot11fTLVSelectedRegistrar*);
1776*5113495bSYour Name 
1777*5113495bSYour Name uint32_t dot11f_pack_tlv_selected_registrar(
1778*5113495bSYour Name 	tpAniSirGlobal,
1779*5113495bSYour Name 	tDot11fTLVSelectedRegistrar *,
1780*5113495bSYour Name 	uint8_t *,
1781*5113495bSYour Name 	uint32_t,
1782*5113495bSYour Name 	uint32_t*);
1783*5113495bSYour Name 
1784*5113495bSYour Name uint32_t dot11f_get_packed_tlv_SelectedRegistrar(
1785*5113495bSYour Name 	tpAniSirGlobal,
1786*5113495bSYour Name 	tDot11fTLVSelectedRegistrar *,
1787*5113495bSYour Name 	uint32_t*);
1788*5113495bSYour Name 
1789*5113495bSYour Name #ifdef __cplusplus
1790*5113495bSYour Name }; /* End extern "C". */
1791*5113495bSYour Name #endif /* C++ */
1792*5113495bSYour Name 
1793*5113495bSYour Name /* ID 4179 (0x1053) */
1794*5113495bSYour Name typedef struct sDot11fTLVSelectedRegistrarConfigMethods {
1795*5113495bSYour Name 	uint8_t             present;
1796*5113495bSYour Name 	uint16_t            methods;
1797*5113495bSYour Name } tDot11fTLVSelectedRegistrarConfigMethods;
1798*5113495bSYour Name 
1799*5113495bSYour Name #define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS (4179)
1800*5113495bSYour Name 
1801*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1802*5113495bSYour Name #define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MIN_LEN (4)
1803*5113495bSYour Name 
1804*5113495bSYour Name #define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MAX_LEN (4)
1805*5113495bSYour Name 
1806*5113495bSYour Name #ifdef __cplusplus
1807*5113495bSYour Name extern "C" {
1808*5113495bSYour Name #endif /* C++ */
1809*5113495bSYour Name uint32_t dot11f_unpack_tlv_SelectedRegistrarConfigMethods(
1810*5113495bSYour Name 	tpAniSirGlobal,
1811*5113495bSYour Name 	uint8_t *,
1812*5113495bSYour Name 	uint16_t,
1813*5113495bSYour Name 	tDot11fTLVSelectedRegistrarConfigMethods*);
1814*5113495bSYour Name 
1815*5113495bSYour Name uint32_t dot11f_pack_tlv_selected_registrar_config_methods(
1816*5113495bSYour Name 	tpAniSirGlobal,
1817*5113495bSYour Name 	tDot11fTLVSelectedRegistrarConfigMethods *,
1818*5113495bSYour Name 	uint8_t *,
1819*5113495bSYour Name 	uint32_t,
1820*5113495bSYour Name 	uint32_t*);
1821*5113495bSYour Name 
1822*5113495bSYour Name uint32_t dot11f_get_packed_tlv_SelectedRegistrarConfigMethods(
1823*5113495bSYour Name 	tpAniSirGlobal,
1824*5113495bSYour Name 	tDot11fTLVSelectedRegistrarConfigMethods *,
1825*5113495bSYour Name 	uint32_t*);
1826*5113495bSYour Name 
1827*5113495bSYour Name #ifdef __cplusplus
1828*5113495bSYour Name }; /* End extern "C". */
1829*5113495bSYour Name #endif /* C++ */
1830*5113495bSYour Name 
1831*5113495bSYour Name /* ID 4162 (0x1042) */
1832*5113495bSYour Name typedef struct sDot11fTLVSerialNumber {
1833*5113495bSYour Name 	uint8_t             present;
1834*5113495bSYour Name 	uint8_t             num_text;
1835*5113495bSYour Name 	uint8_t             text[32];
1836*5113495bSYour Name } tDot11fTLVSerialNumber;
1837*5113495bSYour Name 
1838*5113495bSYour Name #define DOT11F_TLV_SERIALNUMBER (4162)
1839*5113495bSYour Name 
1840*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1841*5113495bSYour Name #define DOT11F_TLV_SERIALNUMBER_MIN_LEN (2)
1842*5113495bSYour Name 
1843*5113495bSYour Name #define DOT11F_TLV_SERIALNUMBER_MAX_LEN (34)
1844*5113495bSYour Name 
1845*5113495bSYour Name #ifdef __cplusplus
1846*5113495bSYour Name extern "C" {
1847*5113495bSYour Name #endif /* C++ */
1848*5113495bSYour Name uint32_t dot11f_unpack_tlv_serial_number(
1849*5113495bSYour Name 	tpAniSirGlobal,
1850*5113495bSYour Name 	uint8_t *,
1851*5113495bSYour Name 	uint16_t,
1852*5113495bSYour Name 	tDot11fTLVSerialNumber*);
1853*5113495bSYour Name 
1854*5113495bSYour Name uint32_t dot11f_pack_tlv_serial_number(
1855*5113495bSYour Name 	tpAniSirGlobal,
1856*5113495bSYour Name 	tDot11fTLVSerialNumber *,
1857*5113495bSYour Name 	uint8_t *,
1858*5113495bSYour Name 	uint32_t,
1859*5113495bSYour Name 	uint32_t*);
1860*5113495bSYour Name 
1861*5113495bSYour Name uint32_t dot11f_get_packed_tlv_SerialNumber(
1862*5113495bSYour Name 	tpAniSirGlobal,
1863*5113495bSYour Name 	tDot11fTLVSerialNumber *,
1864*5113495bSYour Name 	uint32_t*);
1865*5113495bSYour Name 
1866*5113495bSYour Name #ifdef __cplusplus
1867*5113495bSYour Name }; /* End extern "C". */
1868*5113495bSYour Name #endif /* C++ */
1869*5113495bSYour Name 
1870*5113495bSYour Name /* ID 4167 (0x1047) */
1871*5113495bSYour Name typedef struct sDot11fTLVUUID_E {
1872*5113495bSYour Name 	uint8_t             present;
1873*5113495bSYour Name 	uint8_t             uuid[16];
1874*5113495bSYour Name } tDot11fTLVUUID_E;
1875*5113495bSYour Name 
1876*5113495bSYour Name #define DOT11F_TLV_UUID_E (4167)
1877*5113495bSYour Name 
1878*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1879*5113495bSYour Name #define DOT11F_TLV_UUID_E_MIN_LEN (18)
1880*5113495bSYour Name 
1881*5113495bSYour Name #define DOT11F_TLV_UUID_E_MAX_LEN (18)
1882*5113495bSYour Name 
1883*5113495bSYour Name #ifdef __cplusplus
1884*5113495bSYour Name extern "C" {
1885*5113495bSYour Name #endif /* C++ */
1886*5113495bSYour Name uint32_t dot11f_unpack_tlv_uuid_e(
1887*5113495bSYour Name 	tpAniSirGlobal,
1888*5113495bSYour Name 	uint8_t *,
1889*5113495bSYour Name 	uint16_t,
1890*5113495bSYour Name 	tDot11fTLVUUID_E*);
1891*5113495bSYour Name 
1892*5113495bSYour Name uint32_t dot11f_pack_tlv_uuid_e(
1893*5113495bSYour Name 	tpAniSirGlobal,
1894*5113495bSYour Name 	tDot11fTLVUUID_E *,
1895*5113495bSYour Name 	uint8_t *,
1896*5113495bSYour Name 	uint32_t,
1897*5113495bSYour Name 	uint32_t*);
1898*5113495bSYour Name 
1899*5113495bSYour Name uint32_t dot11f_get_packed_tlv_UUID_E(
1900*5113495bSYour Name 	tpAniSirGlobal,
1901*5113495bSYour Name 	tDot11fTLVUUID_E *,
1902*5113495bSYour Name 	uint32_t*);
1903*5113495bSYour Name 
1904*5113495bSYour Name #ifdef __cplusplus
1905*5113495bSYour Name }; /* End extern "C". */
1906*5113495bSYour Name #endif /* C++ */
1907*5113495bSYour Name 
1908*5113495bSYour Name /* ID 4168 (0x1048) */
1909*5113495bSYour Name typedef struct sDot11fTLVUUID_R {
1910*5113495bSYour Name 	uint8_t             present;
1911*5113495bSYour Name 	uint8_t             uuid[16];
1912*5113495bSYour Name } tDot11fTLVUUID_R;
1913*5113495bSYour Name 
1914*5113495bSYour Name #define DOT11F_TLV_UUID_R (4168)
1915*5113495bSYour Name 
1916*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1917*5113495bSYour Name #define DOT11F_TLV_UUID_R_MIN_LEN (18)
1918*5113495bSYour Name 
1919*5113495bSYour Name #define DOT11F_TLV_UUID_R_MAX_LEN (18)
1920*5113495bSYour Name 
1921*5113495bSYour Name #ifdef __cplusplus
1922*5113495bSYour Name extern "C" {
1923*5113495bSYour Name #endif /* C++ */
1924*5113495bSYour Name uint32_t dot11f_unpack_tlv_uuid_r(
1925*5113495bSYour Name 	tpAniSirGlobal,
1926*5113495bSYour Name 	uint8_t *,
1927*5113495bSYour Name 	uint16_t,
1928*5113495bSYour Name 	tDot11fTLVUUID_R*);
1929*5113495bSYour Name 
1930*5113495bSYour Name uint32_t dot11f_pack_tlv_uuid_r(
1931*5113495bSYour Name 	tpAniSirGlobal,
1932*5113495bSYour Name 	tDot11fTLVUUID_R *,
1933*5113495bSYour Name 	uint8_t *,
1934*5113495bSYour Name 	uint32_t,
1935*5113495bSYour Name 	uint32_t*);
1936*5113495bSYour Name 
1937*5113495bSYour Name uint32_t dot11f_get_packed_tlv_UUID_R(
1938*5113495bSYour Name 	tpAniSirGlobal,
1939*5113495bSYour Name 	tDot11fTLVUUID_R *,
1940*5113495bSYour Name 	uint32_t*);
1941*5113495bSYour Name 
1942*5113495bSYour Name #ifdef __cplusplus
1943*5113495bSYour Name }; /* End extern "C". */
1944*5113495bSYour Name #endif /* C++ */
1945*5113495bSYour Name 
1946*5113495bSYour Name /* ID 4169 (0x1049) */
1947*5113495bSYour Name typedef struct sDot11fTLVVendorExtension {
1948*5113495bSYour Name 	uint8_t                          present;
1949*5113495bSYour Name 	uint8_t                          vendorId[3];
1950*5113495bSYour Name 	tDot11fTLVVersion2               Version2;
1951*5113495bSYour Name 	tDot11fTLVAuthorizedMACs         AuthorizedMACs;
1952*5113495bSYour Name 	tDot11fTLVRequestToEnroll        RequestToEnroll;
1953*5113495bSYour Name } tDot11fTLVVendorExtension;
1954*5113495bSYour Name 
1955*5113495bSYour Name #define DOT11F_TLV_VENDOREXTENSION (4169)
1956*5113495bSYour Name 
1957*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1958*5113495bSYour Name #define DOT11F_TLV_VENDOREXTENSION_MIN_LEN (5)
1959*5113495bSYour Name 
1960*5113495bSYour Name #define DOT11F_TLV_VENDOREXTENSION_MAX_LEN (19)
1961*5113495bSYour Name 
1962*5113495bSYour Name #ifdef __cplusplus
1963*5113495bSYour Name extern "C" {
1964*5113495bSYour Name #endif /* C++ */
1965*5113495bSYour Name uint32_t dot11f_unpack_tlv_vendor_extension(
1966*5113495bSYour Name 	tpAniSirGlobal,
1967*5113495bSYour Name 	uint8_t *,
1968*5113495bSYour Name 	uint16_t,
1969*5113495bSYour Name 	tDot11fTLVVendorExtension*);
1970*5113495bSYour Name 
1971*5113495bSYour Name uint32_t dot11f_pack_tlv_vendor_extension(
1972*5113495bSYour Name 	tpAniSirGlobal,
1973*5113495bSYour Name 	tDot11fTLVVendorExtension *,
1974*5113495bSYour Name 	uint8_t *,
1975*5113495bSYour Name 	uint32_t,
1976*5113495bSYour Name 	uint32_t*);
1977*5113495bSYour Name 
1978*5113495bSYour Name uint32_t dot11f_get_packed_tlv_VendorExtension(
1979*5113495bSYour Name 	tpAniSirGlobal,
1980*5113495bSYour Name 	tDot11fTLVVendorExtension *,
1981*5113495bSYour Name 	uint32_t*);
1982*5113495bSYour Name 
1983*5113495bSYour Name #ifdef __cplusplus
1984*5113495bSYour Name }; /* End extern "C". */
1985*5113495bSYour Name #endif /* C++ */
1986*5113495bSYour Name 
1987*5113495bSYour Name /* ID 4170 (0x104a) */
1988*5113495bSYour Name typedef struct sDot11fTLVVersion {
1989*5113495bSYour Name 	uint8_t             present;
1990*5113495bSYour Name 	uint8_t                minor:4;
1991*5113495bSYour Name 	uint8_t                major:4;
1992*5113495bSYour Name } tDot11fTLVVersion;
1993*5113495bSYour Name 
1994*5113495bSYour Name #define DOT11F_TLV_VERSION (4170)
1995*5113495bSYour Name 
1996*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
1997*5113495bSYour Name #define DOT11F_TLV_VERSION_MIN_LEN (3)
1998*5113495bSYour Name 
1999*5113495bSYour Name #define DOT11F_TLV_VERSION_MAX_LEN (3)
2000*5113495bSYour Name 
2001*5113495bSYour Name #ifdef __cplusplus
2002*5113495bSYour Name extern "C" {
2003*5113495bSYour Name #endif /* C++ */
2004*5113495bSYour Name uint32_t dot11f_unpack_tlv_version(
2005*5113495bSYour Name 	tpAniSirGlobal,
2006*5113495bSYour Name 	uint8_t *,
2007*5113495bSYour Name 	uint16_t,
2008*5113495bSYour Name 	tDot11fTLVVersion*);
2009*5113495bSYour Name 
2010*5113495bSYour Name uint32_t dot11f_pack_tlv_version(
2011*5113495bSYour Name 	tpAniSirGlobal,
2012*5113495bSYour Name 	tDot11fTLVVersion *,
2013*5113495bSYour Name 	uint8_t *,
2014*5113495bSYour Name 	uint32_t,
2015*5113495bSYour Name 	uint32_t*);
2016*5113495bSYour Name 
2017*5113495bSYour Name uint32_t dot11f_get_packed_tlv_Version(
2018*5113495bSYour Name 	tpAniSirGlobal,
2019*5113495bSYour Name 	tDot11fTLVVersion *,
2020*5113495bSYour Name 	uint32_t*);
2021*5113495bSYour Name 
2022*5113495bSYour Name #ifdef __cplusplus
2023*5113495bSYour Name }; /* End extern "C". */
2024*5113495bSYour Name #endif /* C++ */
2025*5113495bSYour Name 
2026*5113495bSYour Name /* ID 4164 (0x1044) */
2027*5113495bSYour Name typedef struct sDot11fTLVWPSState {
2028*5113495bSYour Name 	uint8_t             present;
2029*5113495bSYour Name 	uint8_t             state;
2030*5113495bSYour Name } tDot11fTLVWPSState;
2031*5113495bSYour Name 
2032*5113495bSYour Name #define DOT11F_TLV_WPSSTATE (4164)
2033*5113495bSYour Name 
2034*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2035*5113495bSYour Name #define DOT11F_TLV_WPSSTATE_MIN_LEN (3)
2036*5113495bSYour Name 
2037*5113495bSYour Name #define DOT11F_TLV_WPSSTATE_MAX_LEN (3)
2038*5113495bSYour Name 
2039*5113495bSYour Name #ifdef __cplusplus
2040*5113495bSYour Name extern "C" {
2041*5113495bSYour Name #endif /* C++ */
2042*5113495bSYour Name uint32_t dot11f_unpack_tlv_WPSState(
2043*5113495bSYour Name 	tpAniSirGlobal,
2044*5113495bSYour Name 	uint8_t *,
2045*5113495bSYour Name 	uint16_t,
2046*5113495bSYour Name 	tDot11fTLVWPSState*);
2047*5113495bSYour Name 
2048*5113495bSYour Name uint32_t dot11f_pack_tlv_wps_state(
2049*5113495bSYour Name 	tpAniSirGlobal,
2050*5113495bSYour Name 	tDot11fTLVWPSState *,
2051*5113495bSYour Name 	uint8_t *,
2052*5113495bSYour Name 	uint32_t,
2053*5113495bSYour Name 	uint32_t*);
2054*5113495bSYour Name 
2055*5113495bSYour Name uint32_t dot11f_get_packed_tlv_WPSState(
2056*5113495bSYour Name 	tpAniSirGlobal,
2057*5113495bSYour Name 	tDot11fTLVWPSState *,
2058*5113495bSYour Name 	uint32_t*);
2059*5113495bSYour Name 
2060*5113495bSYour Name #ifdef __cplusplus
2061*5113495bSYour Name }; /* End extern "C". */
2062*5113495bSYour Name #endif /* C++ */
2063*5113495bSYour Name 
2064*5113495bSYour Name /* ID 4 (0x0004) */
2065*5113495bSYour Name typedef struct sDot11fTLVassoc_disallowed {
2066*5113495bSYour Name 	uint8_t             present;
2067*5113495bSYour Name 	uint8_t             reason_code;
2068*5113495bSYour Name } tDot11fTLVassoc_disallowed;
2069*5113495bSYour Name 
2070*5113495bSYour Name #define DOT11F_TLV_ASSOC_DISALLOWED (4)
2071*5113495bSYour Name 
2072*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2073*5113495bSYour Name #define DOT11F_TLV_ASSOC_DISALLOWED_MIN_LEN (1)
2074*5113495bSYour Name 
2075*5113495bSYour Name #define DOT11F_TLV_ASSOC_DISALLOWED_MAX_LEN (1)
2076*5113495bSYour Name 
2077*5113495bSYour Name #ifdef __cplusplus
2078*5113495bSYour Name extern "C" {
2079*5113495bSYour Name #endif /* C++ */
2080*5113495bSYour Name uint32_t dot11f_unpack_tlv_assoc_disallowed(
2081*5113495bSYour Name 	tpAniSirGlobal,
2082*5113495bSYour Name 	uint8_t *,
2083*5113495bSYour Name 	uint16_t,
2084*5113495bSYour Name 	tDot11fTLVassoc_disallowed*);
2085*5113495bSYour Name 
2086*5113495bSYour Name uint32_t dot11f_pack_tlv_assoc_disallowed(
2087*5113495bSYour Name 	tpAniSirGlobal,
2088*5113495bSYour Name 	tDot11fTLVassoc_disallowed *,
2089*5113495bSYour Name 	uint8_t *,
2090*5113495bSYour Name 	uint32_t,
2091*5113495bSYour Name 	uint32_t*);
2092*5113495bSYour Name 
2093*5113495bSYour Name uint32_t dot11f_get_packed_tlv_assoc_disallowed(
2094*5113495bSYour Name 	tpAniSirGlobal,
2095*5113495bSYour Name 	tDot11fTLVassoc_disallowed *,
2096*5113495bSYour Name 	uint32_t*);
2097*5113495bSYour Name 
2098*5113495bSYour Name #ifdef __cplusplus
2099*5113495bSYour Name }; /* End extern "C". */
2100*5113495bSYour Name #endif /* C++ */
2101*5113495bSYour Name 
2102*5113495bSYour Name /* ID 8 (0x0008) */
2103*5113495bSYour Name typedef struct sDot11fTLVassoc_retry_delay {
2104*5113495bSYour Name 	uint8_t             present;
2105*5113495bSYour Name 	uint16_t            delay;
2106*5113495bSYour Name } tDot11fTLVassoc_retry_delay;
2107*5113495bSYour Name 
2108*5113495bSYour Name #define DOT11F_TLV_ASSOC_RETRY_DELAY (8)
2109*5113495bSYour Name 
2110*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2111*5113495bSYour Name #define DOT11F_TLV_ASSOC_RETRY_DELAY_MIN_LEN (2)
2112*5113495bSYour Name 
2113*5113495bSYour Name #define DOT11F_TLV_ASSOC_RETRY_DELAY_MAX_LEN (2)
2114*5113495bSYour Name 
2115*5113495bSYour Name #ifdef __cplusplus
2116*5113495bSYour Name extern "C" {
2117*5113495bSYour Name #endif /* C++ */
2118*5113495bSYour Name uint32_t dot11f_unpack_tlv_assoc_retry_delay(
2119*5113495bSYour Name 	tpAniSirGlobal,
2120*5113495bSYour Name 	uint8_t *,
2121*5113495bSYour Name 	uint16_t,
2122*5113495bSYour Name 	tDot11fTLVassoc_retry_delay*);
2123*5113495bSYour Name 
2124*5113495bSYour Name uint32_t dot11f_pack_tlv_assoc_retry_delay(
2125*5113495bSYour Name 	tpAniSirGlobal,
2126*5113495bSYour Name 	tDot11fTLVassoc_retry_delay *,
2127*5113495bSYour Name 	uint8_t *,
2128*5113495bSYour Name 	uint32_t,
2129*5113495bSYour Name 	uint32_t*);
2130*5113495bSYour Name 
2131*5113495bSYour Name uint32_t dot11f_get_packed_tlv_assoc_retry_delay(
2132*5113495bSYour Name 	tpAniSirGlobal,
2133*5113495bSYour Name 	tDot11fTLVassoc_retry_delay *,
2134*5113495bSYour Name 	uint32_t*);
2135*5113495bSYour Name 
2136*5113495bSYour Name #ifdef __cplusplus
2137*5113495bSYour Name }; /* End extern "C". */
2138*5113495bSYour Name #endif /* C++ */
2139*5113495bSYour Name 
2140*5113495bSYour Name /* ID 3 (0x0003) */
2141*5113495bSYour Name typedef struct sDot11fTLVcellular_data_cap {
2142*5113495bSYour Name 	uint8_t             present;
2143*5113495bSYour Name 	uint8_t             cellular_connectivity;
2144*5113495bSYour Name } tDot11fTLVcellular_data_cap;
2145*5113495bSYour Name 
2146*5113495bSYour Name #define DOT11F_TLV_CELLULAR_DATA_CAP (3)
2147*5113495bSYour Name 
2148*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2149*5113495bSYour Name #define DOT11F_TLV_CELLULAR_DATA_CAP_MIN_LEN (1)
2150*5113495bSYour Name 
2151*5113495bSYour Name #define DOT11F_TLV_CELLULAR_DATA_CAP_MAX_LEN (1)
2152*5113495bSYour Name 
2153*5113495bSYour Name #ifdef __cplusplus
2154*5113495bSYour Name extern "C" {
2155*5113495bSYour Name #endif /* C++ */
2156*5113495bSYour Name uint32_t dot11f_unpack_tlv_cellular_data_cap(
2157*5113495bSYour Name 	tpAniSirGlobal,
2158*5113495bSYour Name 	uint8_t *,
2159*5113495bSYour Name 	uint16_t,
2160*5113495bSYour Name 	tDot11fTLVcellular_data_cap*);
2161*5113495bSYour Name 
2162*5113495bSYour Name uint32_t dot11f_pack_tlv_cellular_data_cap(
2163*5113495bSYour Name 	tpAniSirGlobal,
2164*5113495bSYour Name 	tDot11fTLVcellular_data_cap *,
2165*5113495bSYour Name 	uint8_t *,
2166*5113495bSYour Name 	uint32_t,
2167*5113495bSYour Name 	uint32_t*);
2168*5113495bSYour Name 
2169*5113495bSYour Name uint32_t dot11f_get_packed_tlv_cellular_data_cap(
2170*5113495bSYour Name 	tpAniSirGlobal,
2171*5113495bSYour Name 	tDot11fTLVcellular_data_cap *,
2172*5113495bSYour Name 	uint32_t*);
2173*5113495bSYour Name 
2174*5113495bSYour Name #ifdef __cplusplus
2175*5113495bSYour Name }; /* End extern "C". */
2176*5113495bSYour Name #endif /* C++ */
2177*5113495bSYour Name 
2178*5113495bSYour Name /* ID 5 (0x0005) */
2179*5113495bSYour Name typedef struct sDot11fTLVcellular_data_con_pref {
2180*5113495bSYour Name 	uint8_t             present;
2181*5113495bSYour Name 	uint8_t             cellular_preference;
2182*5113495bSYour Name } tDot11fTLVcellular_data_con_pref;
2183*5113495bSYour Name 
2184*5113495bSYour Name #define DOT11F_TLV_CELLULAR_DATA_CON_PREF (5)
2185*5113495bSYour Name 
2186*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2187*5113495bSYour Name #define DOT11F_TLV_CELLULAR_DATA_CON_PREF_MIN_LEN (1)
2188*5113495bSYour Name 
2189*5113495bSYour Name #define DOT11F_TLV_CELLULAR_DATA_CON_PREF_MAX_LEN (1)
2190*5113495bSYour Name 
2191*5113495bSYour Name #ifdef __cplusplus
2192*5113495bSYour Name extern "C" {
2193*5113495bSYour Name #endif /* C++ */
2194*5113495bSYour Name uint32_t dot11f_unpack_tlv_cellular_data_con_pref(
2195*5113495bSYour Name 	tpAniSirGlobal,
2196*5113495bSYour Name 	uint8_t *,
2197*5113495bSYour Name 	uint16_t,
2198*5113495bSYour Name 	tDot11fTLVcellular_data_con_pref*);
2199*5113495bSYour Name 
2200*5113495bSYour Name uint32_t dot11f_pack_tlv_cellular_data_con_pref(
2201*5113495bSYour Name 	tpAniSirGlobal,
2202*5113495bSYour Name 	tDot11fTLVcellular_data_con_pref *,
2203*5113495bSYour Name 	uint8_t *,
2204*5113495bSYour Name 	uint32_t,
2205*5113495bSYour Name 	uint32_t*);
2206*5113495bSYour Name 
2207*5113495bSYour Name uint32_t dot11f_get_packed_tlv_cellular_data_con_pref(
2208*5113495bSYour Name 	tpAniSirGlobal,
2209*5113495bSYour Name 	tDot11fTLVcellular_data_con_pref *,
2210*5113495bSYour Name 	uint32_t*);
2211*5113495bSYour Name 
2212*5113495bSYour Name #ifdef __cplusplus
2213*5113495bSYour Name }; /* End extern "C". */
2214*5113495bSYour Name #endif /* C++ */
2215*5113495bSYour Name 
2216*5113495bSYour Name /* ID 14 (0x000e) */
2217*5113495bSYour Name typedef struct sDot11fTLVecsa_target_tsf_info_attr {
2218*5113495bSYour Name 	uint8_t             present;
2219*5113495bSYour Name 	uint8_t             twt_ch_sw_mode;
2220*5113495bSYour Name 	tDOT11F_U64         target_tsf;
2221*5113495bSYour Name } tDot11fTLVecsa_target_tsf_info_attr;
2222*5113495bSYour Name 
2223*5113495bSYour Name #define DOT11F_TLV_ECSA_TARGET_TSF_INFO_ATTR (14)
2224*5113495bSYour Name 
2225*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2226*5113495bSYour Name #define DOT11F_TLV_ECSA_TARGET_TSF_INFO_ATTR_MIN_LEN (9)
2227*5113495bSYour Name 
2228*5113495bSYour Name #define DOT11F_TLV_ECSA_TARGET_TSF_INFO_ATTR_MAX_LEN (9)
2229*5113495bSYour Name 
2230*5113495bSYour Name #ifdef __cplusplus
2231*5113495bSYour Name extern "C" {
2232*5113495bSYour Name #endif /* C++ */
2233*5113495bSYour Name uint32_t dot11f_unpack_tlv_ecsa_target_tsf_info_attr(
2234*5113495bSYour Name 	tpAniSirGlobal,
2235*5113495bSYour Name 	uint8_t *,
2236*5113495bSYour Name 	uint16_t,
2237*5113495bSYour Name 	tDot11fTLVecsa_target_tsf_info_attr*);
2238*5113495bSYour Name 
2239*5113495bSYour Name uint32_t dot11f_pack_tlv_ecsa_target_tsf_info_attr(
2240*5113495bSYour Name 	tpAniSirGlobal,
2241*5113495bSYour Name 	tDot11fTLVecsa_target_tsf_info_attr *,
2242*5113495bSYour Name 	uint8_t *,
2243*5113495bSYour Name 	uint32_t,
2244*5113495bSYour Name 	uint32_t*);
2245*5113495bSYour Name 
2246*5113495bSYour Name uint32_t dot11f_get_packed_tlv_ecsa_target_tsf_info_attr(
2247*5113495bSYour Name 	tpAniSirGlobal,
2248*5113495bSYour Name 	tDot11fTLVecsa_target_tsf_info_attr *,
2249*5113495bSYour Name 	uint32_t*);
2250*5113495bSYour Name 
2251*5113495bSYour Name #ifdef __cplusplus
2252*5113495bSYour Name }; /* End extern "C". */
2253*5113495bSYour Name #endif /* C++ */
2254*5113495bSYour Name 
2255*5113495bSYour Name /* ID 13 (0x000d) */
2256*5113495bSYour Name typedef struct sDot11fTLVedca_pifs_param_attr {
2257*5113495bSYour Name 	uint8_t             present;
2258*5113495bSYour Name 	uint8_t             edca_param_type;
2259*5113495bSYour Name 	uint8_t             num_data;
2260*5113495bSYour Name 	uint8_t             data[4];
2261*5113495bSYour Name } tDot11fTLVedca_pifs_param_attr;
2262*5113495bSYour Name 
2263*5113495bSYour Name #define DOT11F_TLV_EDCA_PIFS_PARAM_ATTR (13)
2264*5113495bSYour Name 
2265*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2266*5113495bSYour Name #define DOT11F_TLV_EDCA_PIFS_PARAM_ATTR_MIN_LEN (4)
2267*5113495bSYour Name 
2268*5113495bSYour Name #define DOT11F_TLV_EDCA_PIFS_PARAM_ATTR_MAX_LEN (5)
2269*5113495bSYour Name 
2270*5113495bSYour Name #ifdef __cplusplus
2271*5113495bSYour Name extern "C" {
2272*5113495bSYour Name #endif /* C++ */
2273*5113495bSYour Name uint32_t dot11f_unpack_tlv_edca_pifs_param_attr(
2274*5113495bSYour Name 	tpAniSirGlobal,
2275*5113495bSYour Name 	uint8_t *,
2276*5113495bSYour Name 	uint16_t,
2277*5113495bSYour Name 	tDot11fTLVedca_pifs_param_attr*);
2278*5113495bSYour Name 
2279*5113495bSYour Name uint32_t dot11f_pack_tlv_edca_pifs_param_attr(
2280*5113495bSYour Name 	tpAniSirGlobal,
2281*5113495bSYour Name 	tDot11fTLVedca_pifs_param_attr *,
2282*5113495bSYour Name 	uint8_t *,
2283*5113495bSYour Name 	uint32_t,
2284*5113495bSYour Name 	uint32_t*);
2285*5113495bSYour Name 
2286*5113495bSYour Name uint32_t dot11f_get_packed_tlv_edca_pifs_param_attr(
2287*5113495bSYour Name 	tpAniSirGlobal,
2288*5113495bSYour Name 	tDot11fTLVedca_pifs_param_attr *,
2289*5113495bSYour Name 	uint32_t*);
2290*5113495bSYour Name 
2291*5113495bSYour Name #ifdef __cplusplus
2292*5113495bSYour Name }; /* End extern "C". */
2293*5113495bSYour Name #endif /* C++ */
2294*5113495bSYour Name 
2295*5113495bSYour Name /* ID 4 (0x0004) */
2296*5113495bSYour Name typedef struct sDot11fTLVhe_2xltf_160mhz_supp {
2297*5113495bSYour Name 	uint8_t             present;
2298*5113495bSYour Name 	uint8_t             he_2xltf_160MHz_supp;
2299*5113495bSYour Name } tDot11fTLVhe_2xltf_160mhz_supp;
2300*5113495bSYour Name 
2301*5113495bSYour Name #define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP (4)
2302*5113495bSYour Name 
2303*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2304*5113495bSYour Name #define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP_MIN_LEN (1)
2305*5113495bSYour Name 
2306*5113495bSYour Name #define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP_MAX_LEN (1)
2307*5113495bSYour Name 
2308*5113495bSYour Name #ifdef __cplusplus
2309*5113495bSYour Name extern "C" {
2310*5113495bSYour Name #endif /* C++ */
2311*5113495bSYour Name uint32_t dot11f_unpack_tlv_he_2xltf_160mhz_supp(
2312*5113495bSYour Name 	tpAniSirGlobal,
2313*5113495bSYour Name 	uint8_t *,
2314*5113495bSYour Name 	uint16_t,
2315*5113495bSYour Name 	tDot11fTLVhe_2xltf_160mhz_supp*);
2316*5113495bSYour Name 
2317*5113495bSYour Name uint32_t dot11f_pack_tlv_he_2xltf_160mhz_supp(
2318*5113495bSYour Name 	tpAniSirGlobal,
2319*5113495bSYour Name 	tDot11fTLVhe_2xltf_160mhz_supp *,
2320*5113495bSYour Name 	uint8_t *,
2321*5113495bSYour Name 	uint32_t,
2322*5113495bSYour Name 	uint32_t*);
2323*5113495bSYour Name 
2324*5113495bSYour Name uint32_t dot11f_get_packed_tlv_he_2xltf_160mhz_supp(
2325*5113495bSYour Name 	tpAniSirGlobal,
2326*5113495bSYour Name 	tDot11fTLVhe_2xltf_160mhz_supp *,
2327*5113495bSYour Name 	uint32_t*);
2328*5113495bSYour Name 
2329*5113495bSYour Name #ifdef __cplusplus
2330*5113495bSYour Name }; /* End extern "C". */
2331*5113495bSYour Name #endif /* C++ */
2332*5113495bSYour Name 
2333*5113495bSYour Name /* ID 3 (0x0003) */
2334*5113495bSYour Name typedef struct sDot11fTLVhe_400ns_sgi_attr {
2335*5113495bSYour Name 	uint8_t             present;
2336*5113495bSYour Name 	uint8_t             he_ltf1x_400ns_sgi;
2337*5113495bSYour Name 	uint8_t             he_ltf2x_400ns_sgi;
2338*5113495bSYour Name 	uint8_t             he_ltf4x_400ns_sgi;
2339*5113495bSYour Name } tDot11fTLVhe_400ns_sgi_attr;
2340*5113495bSYour Name 
2341*5113495bSYour Name #define DOT11F_TLV_HE_400NS_SGI_ATTR (3)
2342*5113495bSYour Name 
2343*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2344*5113495bSYour Name #define DOT11F_TLV_HE_400NS_SGI_ATTR_MIN_LEN (3)
2345*5113495bSYour Name 
2346*5113495bSYour Name #define DOT11F_TLV_HE_400NS_SGI_ATTR_MAX_LEN (3)
2347*5113495bSYour Name 
2348*5113495bSYour Name #ifdef __cplusplus
2349*5113495bSYour Name extern "C" {
2350*5113495bSYour Name #endif /* C++ */
2351*5113495bSYour Name uint32_t dot11f_unpack_tlv_he_400ns_sgi_attr(
2352*5113495bSYour Name 	tpAniSirGlobal,
2353*5113495bSYour Name 	uint8_t *,
2354*5113495bSYour Name 	uint16_t,
2355*5113495bSYour Name 	tDot11fTLVhe_400ns_sgi_attr*);
2356*5113495bSYour Name 
2357*5113495bSYour Name uint32_t dot11f_pack_tlv_he_400ns_sgi_attr(
2358*5113495bSYour Name 	tpAniSirGlobal,
2359*5113495bSYour Name 	tDot11fTLVhe_400ns_sgi_attr *,
2360*5113495bSYour Name 	uint8_t *,
2361*5113495bSYour Name 	uint32_t,
2362*5113495bSYour Name 	uint32_t*);
2363*5113495bSYour Name 
2364*5113495bSYour Name uint32_t dot11f_get_packed_tlv_he_400ns_sgi_attr(
2365*5113495bSYour Name 	tpAniSirGlobal,
2366*5113495bSYour Name 	tDot11fTLVhe_400ns_sgi_attr *,
2367*5113495bSYour Name 	uint32_t*);
2368*5113495bSYour Name 
2369*5113495bSYour Name #ifdef __cplusplus
2370*5113495bSYour Name }; /* End extern "C". */
2371*5113495bSYour Name #endif /* C++ */
2372*5113495bSYour Name 
2373*5113495bSYour Name /* ID 8 (0x0008) */
2374*5113495bSYour Name typedef struct sDot11fTLVhe_dl_mumimo_attr {
2375*5113495bSYour Name 	uint8_t             present;
2376*5113495bSYour Name 	uint8_t             he_dl_mumimo_supp;
2377*5113495bSYour Name } tDot11fTLVhe_dl_mumimo_attr;
2378*5113495bSYour Name 
2379*5113495bSYour Name #define DOT11F_TLV_HE_DL_MUMIMO_ATTR (8)
2380*5113495bSYour Name 
2381*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2382*5113495bSYour Name #define DOT11F_TLV_HE_DL_MUMIMO_ATTR_MIN_LEN (1)
2383*5113495bSYour Name 
2384*5113495bSYour Name #define DOT11F_TLV_HE_DL_MUMIMO_ATTR_MAX_LEN (1)
2385*5113495bSYour Name 
2386*5113495bSYour Name #ifdef __cplusplus
2387*5113495bSYour Name extern "C" {
2388*5113495bSYour Name #endif /* C++ */
2389*5113495bSYour Name uint32_t dot11f_unpack_tlv_he_dl_mumimo_attr(
2390*5113495bSYour Name 	tpAniSirGlobal,
2391*5113495bSYour Name 	uint8_t *,
2392*5113495bSYour Name 	uint16_t,
2393*5113495bSYour Name 	tDot11fTLVhe_dl_mumimo_attr*);
2394*5113495bSYour Name 
2395*5113495bSYour Name uint32_t dot11f_pack_tlv_he_dl_mumimo_attr(
2396*5113495bSYour Name 	tpAniSirGlobal,
2397*5113495bSYour Name 	tDot11fTLVhe_dl_mumimo_attr *,
2398*5113495bSYour Name 	uint8_t *,
2399*5113495bSYour Name 	uint32_t,
2400*5113495bSYour Name 	uint32_t*);
2401*5113495bSYour Name 
2402*5113495bSYour Name uint32_t dot11f_get_packed_tlv_he_dl_mumimo_attr(
2403*5113495bSYour Name 	tpAniSirGlobal,
2404*5113495bSYour Name 	tDot11fTLVhe_dl_mumimo_attr *,
2405*5113495bSYour Name 	uint32_t*);
2406*5113495bSYour Name 
2407*5113495bSYour Name #ifdef __cplusplus
2408*5113495bSYour Name }; /* End extern "C". */
2409*5113495bSYour Name #endif /* C++ */
2410*5113495bSYour Name 
2411*5113495bSYour Name /* ID 5 (0x0005) */
2412*5113495bSYour Name typedef struct sDot11fTLVhe_dl_ofdma_attr {
2413*5113495bSYour Name 	uint8_t             present;
2414*5113495bSYour Name 	uint8_t             he_dl_ofdma_supp;
2415*5113495bSYour Name } tDot11fTLVhe_dl_ofdma_attr;
2416*5113495bSYour Name 
2417*5113495bSYour Name #define DOT11F_TLV_HE_DL_OFDMA_ATTR (5)
2418*5113495bSYour Name 
2419*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2420*5113495bSYour Name #define DOT11F_TLV_HE_DL_OFDMA_ATTR_MIN_LEN (1)
2421*5113495bSYour Name 
2422*5113495bSYour Name #define DOT11F_TLV_HE_DL_OFDMA_ATTR_MAX_LEN (1)
2423*5113495bSYour Name 
2424*5113495bSYour Name #ifdef __cplusplus
2425*5113495bSYour Name extern "C" {
2426*5113495bSYour Name #endif /* C++ */
2427*5113495bSYour Name uint32_t dot11f_unpack_tlv_he_dl_ofdma_attr(
2428*5113495bSYour Name 	tpAniSirGlobal,
2429*5113495bSYour Name 	uint8_t *,
2430*5113495bSYour Name 	uint16_t,
2431*5113495bSYour Name 	tDot11fTLVhe_dl_ofdma_attr*);
2432*5113495bSYour Name 
2433*5113495bSYour Name uint32_t dot11f_pack_tlv_he_dl_ofdma_attr(
2434*5113495bSYour Name 	tpAniSirGlobal,
2435*5113495bSYour Name 	tDot11fTLVhe_dl_ofdma_attr *,
2436*5113495bSYour Name 	uint8_t *,
2437*5113495bSYour Name 	uint32_t,
2438*5113495bSYour Name 	uint32_t*);
2439*5113495bSYour Name 
2440*5113495bSYour Name uint32_t dot11f_get_packed_tlv_he_dl_ofdma_attr(
2441*5113495bSYour Name 	tpAniSirGlobal,
2442*5113495bSYour Name 	tDot11fTLVhe_dl_ofdma_attr *,
2443*5113495bSYour Name 	uint32_t*);
2444*5113495bSYour Name 
2445*5113495bSYour Name #ifdef __cplusplus
2446*5113495bSYour Name }; /* End extern "C". */
2447*5113495bSYour Name #endif /* C++ */
2448*5113495bSYour Name 
2449*5113495bSYour Name /* ID 9 (0x0009) */
2450*5113495bSYour Name typedef struct sDot11fTLVhe_mcs13_attr {
2451*5113495bSYour Name 	uint8_t             present;
2452*5113495bSYour Name 	uint8_t             he_mcs_12_13_supp_80;
2453*5113495bSYour Name 	uint8_t             he_mcs_12_13_supp_160;
2454*5113495bSYour Name } tDot11fTLVhe_mcs13_attr;
2455*5113495bSYour Name 
2456*5113495bSYour Name #define DOT11F_TLV_HE_MCS13_ATTR (9)
2457*5113495bSYour Name 
2458*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2459*5113495bSYour Name #define DOT11F_TLV_HE_MCS13_ATTR_MIN_LEN (2)
2460*5113495bSYour Name 
2461*5113495bSYour Name #define DOT11F_TLV_HE_MCS13_ATTR_MAX_LEN (2)
2462*5113495bSYour Name 
2463*5113495bSYour Name #ifdef __cplusplus
2464*5113495bSYour Name extern "C" {
2465*5113495bSYour Name #endif /* C++ */
2466*5113495bSYour Name uint32_t dot11f_unpack_tlv_he_mcs13_attr(
2467*5113495bSYour Name 	tpAniSirGlobal,
2468*5113495bSYour Name 	uint8_t *,
2469*5113495bSYour Name 	uint16_t,
2470*5113495bSYour Name 	tDot11fTLVhe_mcs13_attr*);
2471*5113495bSYour Name 
2472*5113495bSYour Name uint32_t dot11f_pack_tlv_he_mcs13_attr(
2473*5113495bSYour Name 	tpAniSirGlobal,
2474*5113495bSYour Name 	tDot11fTLVhe_mcs13_attr *,
2475*5113495bSYour Name 	uint8_t *,
2476*5113495bSYour Name 	uint32_t,
2477*5113495bSYour Name 	uint32_t*);
2478*5113495bSYour Name 
2479*5113495bSYour Name uint32_t dot11f_get_packed_tlv_he_mcs13_attr(
2480*5113495bSYour Name 	tpAniSirGlobal,
2481*5113495bSYour Name 	tDot11fTLVhe_mcs13_attr *,
2482*5113495bSYour Name 	uint32_t*);
2483*5113495bSYour Name 
2484*5113495bSYour Name #ifdef __cplusplus
2485*5113495bSYour Name }; /* End extern "C". */
2486*5113495bSYour Name #endif /* C++ */
2487*5113495bSYour Name 
2488*5113495bSYour Name /* ID 1 (0x0001) */
2489*5113495bSYour Name typedef struct sDot11fTLVmbo_ap_cap {
2490*5113495bSYour Name 	uint8_t             present;
2491*5113495bSYour Name 	uint8_t             mbo_cap_ind;
2492*5113495bSYour Name } tDot11fTLVmbo_ap_cap;
2493*5113495bSYour Name 
2494*5113495bSYour Name #define DOT11F_TLV_MBO_AP_CAP (1)
2495*5113495bSYour Name 
2496*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2497*5113495bSYour Name #define DOT11F_TLV_MBO_AP_CAP_MIN_LEN (1)
2498*5113495bSYour Name 
2499*5113495bSYour Name #define DOT11F_TLV_MBO_AP_CAP_MAX_LEN (1)
2500*5113495bSYour Name 
2501*5113495bSYour Name #ifdef __cplusplus
2502*5113495bSYour Name extern "C" {
2503*5113495bSYour Name #endif /* C++ */
2504*5113495bSYour Name uint32_t dot11f_unpack_tlv_mbo_ap_cap(
2505*5113495bSYour Name 	tpAniSirGlobal,
2506*5113495bSYour Name 	uint8_t *,
2507*5113495bSYour Name 	uint16_t,
2508*5113495bSYour Name 	tDot11fTLVmbo_ap_cap*);
2509*5113495bSYour Name 
2510*5113495bSYour Name uint32_t dot11f_pack_tlv_mbo_ap_cap(
2511*5113495bSYour Name 	tpAniSirGlobal,
2512*5113495bSYour Name 	tDot11fTLVmbo_ap_cap *,
2513*5113495bSYour Name 	uint8_t *,
2514*5113495bSYour Name 	uint32_t,
2515*5113495bSYour Name 	uint32_t*);
2516*5113495bSYour Name 
2517*5113495bSYour Name uint32_t dot11f_get_packed_tlv_mbo_ap_cap(
2518*5113495bSYour Name 	tpAniSirGlobal,
2519*5113495bSYour Name 	tDot11fTLVmbo_ap_cap *,
2520*5113495bSYour Name 	uint32_t*);
2521*5113495bSYour Name 
2522*5113495bSYour Name #ifdef __cplusplus
2523*5113495bSYour Name }; /* End extern "C". */
2524*5113495bSYour Name #endif /* C++ */
2525*5113495bSYour Name 
2526*5113495bSYour Name /* ID 2 (0x0002) */
2527*5113495bSYour Name typedef struct sDot11fTLVnon_prefferd_chan_rep {
2528*5113495bSYour Name 	uint8_t             present;
2529*5113495bSYour Name 	uint8_t             oper_class;
2530*5113495bSYour Name 	uint8_t             num_channel_report;
2531*5113495bSYour Name 	uint8_t             channel_report[254];
2532*5113495bSYour Name } tDot11fTLVnon_prefferd_chan_rep;
2533*5113495bSYour Name 
2534*5113495bSYour Name #define DOT11F_TLV_NON_PREFFERD_CHAN_REP (2)
2535*5113495bSYour Name 
2536*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2537*5113495bSYour Name #define DOT11F_TLV_NON_PREFFERD_CHAN_REP_MIN_LEN (4)
2538*5113495bSYour Name 
2539*5113495bSYour Name #define DOT11F_TLV_NON_PREFFERD_CHAN_REP_MAX_LEN (255)
2540*5113495bSYour Name 
2541*5113495bSYour Name #ifdef __cplusplus
2542*5113495bSYour Name extern "C" {
2543*5113495bSYour Name #endif /* C++ */
2544*5113495bSYour Name uint32_t dot11f_unpack_tlv_non_prefferd_chan_rep(
2545*5113495bSYour Name 	tpAniSirGlobal,
2546*5113495bSYour Name 	uint8_t *,
2547*5113495bSYour Name 	uint16_t,
2548*5113495bSYour Name 	tDot11fTLVnon_prefferd_chan_rep*);
2549*5113495bSYour Name 
2550*5113495bSYour Name uint32_t dot11f_pack_tlv_non_prefferd_chan_rep(
2551*5113495bSYour Name 	tpAniSirGlobal,
2552*5113495bSYour Name 	tDot11fTLVnon_prefferd_chan_rep *,
2553*5113495bSYour Name 	uint8_t *,
2554*5113495bSYour Name 	uint32_t,
2555*5113495bSYour Name 	uint32_t*);
2556*5113495bSYour Name 
2557*5113495bSYour Name uint32_t dot11f_get_packed_tlv_non_prefferd_chan_rep(
2558*5113495bSYour Name 	tpAniSirGlobal,
2559*5113495bSYour Name 	tDot11fTLVnon_prefferd_chan_rep *,
2560*5113495bSYour Name 	uint32_t*);
2561*5113495bSYour Name 
2562*5113495bSYour Name #ifdef __cplusplus
2563*5113495bSYour Name }; /* End extern "C". */
2564*5113495bSYour Name #endif /* C++ */
2565*5113495bSYour Name 
2566*5113495bSYour Name /* ID 101 (0x0065) */
2567*5113495bSYour Name typedef struct sDot11fTLVoce_cap {
2568*5113495bSYour Name 	uint8_t             present;
2569*5113495bSYour Name 	uint8_t          oce_release:3;
2570*5113495bSYour Name 	uint8_t          is_sta_cfon:1;
2571*5113495bSYour Name 	uint8_t   non_oce_ap_present:1;
2572*5113495bSYour Name 	uint8_t             reserved:3;
2573*5113495bSYour Name } tDot11fTLVoce_cap;
2574*5113495bSYour Name 
2575*5113495bSYour Name #define DOT11F_TLV_OCE_CAP (101)
2576*5113495bSYour Name 
2577*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2578*5113495bSYour Name #define DOT11F_TLV_OCE_CAP_MIN_LEN (1)
2579*5113495bSYour Name 
2580*5113495bSYour Name #define DOT11F_TLV_OCE_CAP_MAX_LEN (1)
2581*5113495bSYour Name 
2582*5113495bSYour Name #ifdef __cplusplus
2583*5113495bSYour Name extern "C" {
2584*5113495bSYour Name #endif /* C++ */
2585*5113495bSYour Name uint32_t dot11f_unpack_tlv_oce_cap(
2586*5113495bSYour Name 	tpAniSirGlobal,
2587*5113495bSYour Name 	uint8_t *,
2588*5113495bSYour Name 	uint16_t,
2589*5113495bSYour Name 	tDot11fTLVoce_cap*);
2590*5113495bSYour Name 
2591*5113495bSYour Name uint32_t dot11f_pack_tlv_oce_cap(
2592*5113495bSYour Name 	tpAniSirGlobal,
2593*5113495bSYour Name 	tDot11fTLVoce_cap *,
2594*5113495bSYour Name 	uint8_t *,
2595*5113495bSYour Name 	uint32_t,
2596*5113495bSYour Name 	uint32_t*);
2597*5113495bSYour Name 
2598*5113495bSYour Name uint32_t dot11f_get_packed_tlv_oce_cap(
2599*5113495bSYour Name 	tpAniSirGlobal,
2600*5113495bSYour Name 	tDot11fTLVoce_cap *,
2601*5113495bSYour Name 	uint32_t*);
2602*5113495bSYour Name 
2603*5113495bSYour Name #ifdef __cplusplus
2604*5113495bSYour Name }; /* End extern "C". */
2605*5113495bSYour Name #endif /* C++ */
2606*5113495bSYour Name 
2607*5113495bSYour Name /* ID 1 (0x0001) */
2608*5113495bSYour Name typedef struct sDot11fTLVqcn_version {
2609*5113495bSYour Name 	uint8_t             present;
2610*5113495bSYour Name 	uint8_t             version;
2611*5113495bSYour Name 	uint8_t             sub_version;
2612*5113495bSYour Name } tDot11fTLVqcn_version;
2613*5113495bSYour Name 
2614*5113495bSYour Name #define DOT11F_TLV_QCN_VERSION (1)
2615*5113495bSYour Name 
2616*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2617*5113495bSYour Name #define DOT11F_TLV_QCN_VERSION_MIN_LEN (2)
2618*5113495bSYour Name 
2619*5113495bSYour Name #define DOT11F_TLV_QCN_VERSION_MAX_LEN (2)
2620*5113495bSYour Name 
2621*5113495bSYour Name #ifdef __cplusplus
2622*5113495bSYour Name extern "C" {
2623*5113495bSYour Name #endif /* C++ */
2624*5113495bSYour Name uint32_t dot11f_unpack_tlv_qcn_version(
2625*5113495bSYour Name 	tpAniSirGlobal,
2626*5113495bSYour Name 	uint8_t *,
2627*5113495bSYour Name 	uint16_t,
2628*5113495bSYour Name 	tDot11fTLVqcn_version*);
2629*5113495bSYour Name 
2630*5113495bSYour Name uint32_t dot11f_pack_tlv_qcn_version(
2631*5113495bSYour Name 	tpAniSirGlobal,
2632*5113495bSYour Name 	tDot11fTLVqcn_version *,
2633*5113495bSYour Name 	uint8_t *,
2634*5113495bSYour Name 	uint32_t,
2635*5113495bSYour Name 	uint32_t*);
2636*5113495bSYour Name 
2637*5113495bSYour Name uint32_t dot11f_get_packed_tlv_qcn_version(
2638*5113495bSYour Name 	tpAniSirGlobal,
2639*5113495bSYour Name 	tDot11fTLVqcn_version *,
2640*5113495bSYour Name 	uint32_t*);
2641*5113495bSYour Name 
2642*5113495bSYour Name #ifdef __cplusplus
2643*5113495bSYour Name }; /* End extern "C". */
2644*5113495bSYour Name #endif /* C++ */
2645*5113495bSYour Name 
2646*5113495bSYour Name /* ID 103 (0x0067) */
2647*5113495bSYour Name typedef struct sDot11fTLVreduced_wan_metrics {
2648*5113495bSYour Name 	uint8_t             present;
2649*5113495bSYour Name 	uint8_t      downlink_av_cap:4;
2650*5113495bSYour Name 	uint8_t        uplink_av_cap:4;
2651*5113495bSYour Name } tDot11fTLVreduced_wan_metrics;
2652*5113495bSYour Name 
2653*5113495bSYour Name #define DOT11F_TLV_REDUCED_WAN_METRICS (103)
2654*5113495bSYour Name 
2655*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2656*5113495bSYour Name #define DOT11F_TLV_REDUCED_WAN_METRICS_MIN_LEN (1)
2657*5113495bSYour Name 
2658*5113495bSYour Name #define DOT11F_TLV_REDUCED_WAN_METRICS_MAX_LEN (1)
2659*5113495bSYour Name 
2660*5113495bSYour Name #ifdef __cplusplus
2661*5113495bSYour Name extern "C" {
2662*5113495bSYour Name #endif /* C++ */
2663*5113495bSYour Name uint32_t dot11f_unpack_tlv_reduced_wan_metrics(
2664*5113495bSYour Name 	tpAniSirGlobal,
2665*5113495bSYour Name 	uint8_t *,
2666*5113495bSYour Name 	uint16_t,
2667*5113495bSYour Name 	tDot11fTLVreduced_wan_metrics*);
2668*5113495bSYour Name 
2669*5113495bSYour Name uint32_t dot11f_pack_tlv_reduced_wan_metrics(
2670*5113495bSYour Name 	tpAniSirGlobal,
2671*5113495bSYour Name 	tDot11fTLVreduced_wan_metrics *,
2672*5113495bSYour Name 	uint8_t *,
2673*5113495bSYour Name 	uint32_t,
2674*5113495bSYour Name 	uint32_t*);
2675*5113495bSYour Name 
2676*5113495bSYour Name uint32_t dot11f_get_packed_tlv_reduced_wan_metrics(
2677*5113495bSYour Name 	tpAniSirGlobal,
2678*5113495bSYour Name 	tDot11fTLVreduced_wan_metrics *,
2679*5113495bSYour Name 	uint32_t*);
2680*5113495bSYour Name 
2681*5113495bSYour Name #ifdef __cplusplus
2682*5113495bSYour Name }; /* End extern "C". */
2683*5113495bSYour Name #endif /* C++ */
2684*5113495bSYour Name 
2685*5113495bSYour Name /* ID 102 (0x0066) */
2686*5113495bSYour Name typedef struct sDot11fTLVrssi_assoc_rej {
2687*5113495bSYour Name 	uint8_t             present;
2688*5113495bSYour Name 	uint8_t             delta_rssi;
2689*5113495bSYour Name 	uint8_t             retry_delay;
2690*5113495bSYour Name } tDot11fTLVrssi_assoc_rej;
2691*5113495bSYour Name 
2692*5113495bSYour Name #define DOT11F_TLV_RSSI_ASSOC_REJ (102)
2693*5113495bSYour Name 
2694*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2695*5113495bSYour Name #define DOT11F_TLV_RSSI_ASSOC_REJ_MIN_LEN (2)
2696*5113495bSYour Name 
2697*5113495bSYour Name #define DOT11F_TLV_RSSI_ASSOC_REJ_MAX_LEN (2)
2698*5113495bSYour Name 
2699*5113495bSYour Name #ifdef __cplusplus
2700*5113495bSYour Name extern "C" {
2701*5113495bSYour Name #endif /* C++ */
2702*5113495bSYour Name uint32_t dot11f_unpack_tlv_rssi_assoc_rej(
2703*5113495bSYour Name 	tpAniSirGlobal,
2704*5113495bSYour Name 	uint8_t *,
2705*5113495bSYour Name 	uint16_t,
2706*5113495bSYour Name 	tDot11fTLVrssi_assoc_rej*);
2707*5113495bSYour Name 
2708*5113495bSYour Name uint32_t dot11f_pack_tlv_rssi_assoc_rej(
2709*5113495bSYour Name 	tpAniSirGlobal,
2710*5113495bSYour Name 	tDot11fTLVrssi_assoc_rej *,
2711*5113495bSYour Name 	uint8_t *,
2712*5113495bSYour Name 	uint32_t,
2713*5113495bSYour Name 	uint32_t*);
2714*5113495bSYour Name 
2715*5113495bSYour Name uint32_t dot11f_get_packed_tlv_rssi_assoc_rej(
2716*5113495bSYour Name 	tpAniSirGlobal,
2717*5113495bSYour Name 	tDot11fTLVrssi_assoc_rej *,
2718*5113495bSYour Name 	uint32_t*);
2719*5113495bSYour Name 
2720*5113495bSYour Name #ifdef __cplusplus
2721*5113495bSYour Name }; /* End extern "C". */
2722*5113495bSYour Name #endif /* C++ */
2723*5113495bSYour Name 
2724*5113495bSYour Name /* ID 6 (0x0006) */
2725*5113495bSYour Name typedef struct sDot11fTLVtrans_reasonp_attr {
2726*5113495bSYour Name 	uint8_t             present;
2727*5113495bSYour Name 	uint8_t             transition_reasonp;
2728*5113495bSYour Name } tDot11fTLVtrans_reasonp_attr;
2729*5113495bSYour Name 
2730*5113495bSYour Name #define DOT11F_TLV_TRANS_REASONP_ATTR (6)
2731*5113495bSYour Name 
2732*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2733*5113495bSYour Name #define DOT11F_TLV_TRANS_REASONP_ATTR_MIN_LEN (1)
2734*5113495bSYour Name 
2735*5113495bSYour Name #define DOT11F_TLV_TRANS_REASONP_ATTR_MAX_LEN (1)
2736*5113495bSYour Name 
2737*5113495bSYour Name #ifdef __cplusplus
2738*5113495bSYour Name extern "C" {
2739*5113495bSYour Name #endif /* C++ */
2740*5113495bSYour Name uint32_t dot11f_unpack_tlv_trans_reasonp_attr(
2741*5113495bSYour Name 	tpAniSirGlobal,
2742*5113495bSYour Name 	uint8_t *,
2743*5113495bSYour Name 	uint16_t,
2744*5113495bSYour Name 	tDot11fTLVtrans_reasonp_attr*);
2745*5113495bSYour Name 
2746*5113495bSYour Name uint32_t dot11f_pack_tlv_trans_reasonp_attr(
2747*5113495bSYour Name 	tpAniSirGlobal,
2748*5113495bSYour Name 	tDot11fTLVtrans_reasonp_attr *,
2749*5113495bSYour Name 	uint8_t *,
2750*5113495bSYour Name 	uint32_t,
2751*5113495bSYour Name 	uint32_t*);
2752*5113495bSYour Name 
2753*5113495bSYour Name uint32_t dot11f_get_packed_tlv_trans_reasonp_attr(
2754*5113495bSYour Name 	tpAniSirGlobal,
2755*5113495bSYour Name 	tDot11fTLVtrans_reasonp_attr *,
2756*5113495bSYour Name 	uint32_t*);
2757*5113495bSYour Name 
2758*5113495bSYour Name #ifdef __cplusplus
2759*5113495bSYour Name }; /* End extern "C". */
2760*5113495bSYour Name #endif /* C++ */
2761*5113495bSYour Name 
2762*5113495bSYour Name /* ID 7 (0x0007) */
2763*5113495bSYour Name typedef struct sDot11fTLVtrans_rejectp_attr {
2764*5113495bSYour Name 	uint8_t             present;
2765*5113495bSYour Name 	uint8_t             transition_rejp;
2766*5113495bSYour Name } tDot11fTLVtrans_rejectp_attr;
2767*5113495bSYour Name 
2768*5113495bSYour Name #define DOT11F_TLV_TRANS_REJECTP_ATTR (7)
2769*5113495bSYour Name 
2770*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2771*5113495bSYour Name #define DOT11F_TLV_TRANS_REJECTP_ATTR_MIN_LEN (1)
2772*5113495bSYour Name 
2773*5113495bSYour Name #define DOT11F_TLV_TRANS_REJECTP_ATTR_MAX_LEN (1)
2774*5113495bSYour Name 
2775*5113495bSYour Name #ifdef __cplusplus
2776*5113495bSYour Name extern "C" {
2777*5113495bSYour Name #endif /* C++ */
2778*5113495bSYour Name uint32_t dot11f_unpack_tlv_trans_rejectp_attr(
2779*5113495bSYour Name 	tpAniSirGlobal,
2780*5113495bSYour Name 	uint8_t *,
2781*5113495bSYour Name 	uint16_t,
2782*5113495bSYour Name 	tDot11fTLVtrans_rejectp_attr*);
2783*5113495bSYour Name 
2784*5113495bSYour Name uint32_t dot11f_pack_tlv_trans_rejectp_attr(
2785*5113495bSYour Name 	tpAniSirGlobal,
2786*5113495bSYour Name 	tDot11fTLVtrans_rejectp_attr *,
2787*5113495bSYour Name 	uint8_t *,
2788*5113495bSYour Name 	uint32_t,
2789*5113495bSYour Name 	uint32_t*);
2790*5113495bSYour Name 
2791*5113495bSYour Name uint32_t dot11f_get_packed_tlv_trans_rejectp_attr(
2792*5113495bSYour Name 	tpAniSirGlobal,
2793*5113495bSYour Name 	tDot11fTLVtrans_rejectp_attr *,
2794*5113495bSYour Name 	uint32_t*);
2795*5113495bSYour Name 
2796*5113495bSYour Name #ifdef __cplusplus
2797*5113495bSYour Name }; /* End extern "C". */
2798*5113495bSYour Name #endif /* C++ */
2799*5113495bSYour Name 
2800*5113495bSYour Name /* ID 6 (0x0006) */
2801*5113495bSYour Name typedef struct sDot11fTLVtransition_reason {
2802*5113495bSYour Name 	uint8_t             present;
2803*5113495bSYour Name 	uint8_t             transition_reason_code;
2804*5113495bSYour Name } tDot11fTLVtransition_reason;
2805*5113495bSYour Name 
2806*5113495bSYour Name #define DOT11F_TLV_TRANSITION_REASON (6)
2807*5113495bSYour Name 
2808*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2809*5113495bSYour Name #define DOT11F_TLV_TRANSITION_REASON_MIN_LEN (1)
2810*5113495bSYour Name 
2811*5113495bSYour Name #define DOT11F_TLV_TRANSITION_REASON_MAX_LEN (1)
2812*5113495bSYour Name 
2813*5113495bSYour Name #ifdef __cplusplus
2814*5113495bSYour Name extern "C" {
2815*5113495bSYour Name #endif /* C++ */
2816*5113495bSYour Name uint32_t dot11f_unpack_tlv_transition_reason(
2817*5113495bSYour Name 	tpAniSirGlobal,
2818*5113495bSYour Name 	uint8_t *,
2819*5113495bSYour Name 	uint16_t,
2820*5113495bSYour Name 	tDot11fTLVtransition_reason*);
2821*5113495bSYour Name 
2822*5113495bSYour Name uint32_t dot11f_pack_tlv_transition_reason(
2823*5113495bSYour Name 	tpAniSirGlobal,
2824*5113495bSYour Name 	tDot11fTLVtransition_reason *,
2825*5113495bSYour Name 	uint8_t *,
2826*5113495bSYour Name 	uint32_t,
2827*5113495bSYour Name 	uint32_t*);
2828*5113495bSYour Name 
2829*5113495bSYour Name uint32_t dot11f_get_packed_tlv_transition_reason(
2830*5113495bSYour Name 	tpAniSirGlobal,
2831*5113495bSYour Name 	tDot11fTLVtransition_reason *,
2832*5113495bSYour Name 	uint32_t*);
2833*5113495bSYour Name 
2834*5113495bSYour Name #ifdef __cplusplus
2835*5113495bSYour Name }; /* End extern "C". */
2836*5113495bSYour Name #endif /* C++ */
2837*5113495bSYour Name 
2838*5113495bSYour Name /* ID 7 (0x0007) */
2839*5113495bSYour Name typedef struct sDot11fTLVtransition_reject_reason {
2840*5113495bSYour Name 	uint8_t             present;
2841*5113495bSYour Name 	uint8_t             transition_reject_code;
2842*5113495bSYour Name } tDot11fTLVtransition_reject_reason;
2843*5113495bSYour Name 
2844*5113495bSYour Name #define DOT11F_TLV_TRANSITION_REJECT_REASON (7)
2845*5113495bSYour Name 
2846*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2847*5113495bSYour Name #define DOT11F_TLV_TRANSITION_REJECT_REASON_MIN_LEN (1)
2848*5113495bSYour Name 
2849*5113495bSYour Name #define DOT11F_TLV_TRANSITION_REJECT_REASON_MAX_LEN (1)
2850*5113495bSYour Name 
2851*5113495bSYour Name #ifdef __cplusplus
2852*5113495bSYour Name extern "C" {
2853*5113495bSYour Name #endif /* C++ */
2854*5113495bSYour Name uint32_t dot11f_unpack_tlv_transition_reject_reason(
2855*5113495bSYour Name 	tpAniSirGlobal,
2856*5113495bSYour Name 	uint8_t *,
2857*5113495bSYour Name 	uint16_t,
2858*5113495bSYour Name 	tDot11fTLVtransition_reject_reason*);
2859*5113495bSYour Name 
2860*5113495bSYour Name uint32_t dot11f_pack_tlv_transition_reject_reason(
2861*5113495bSYour Name 	tpAniSirGlobal,
2862*5113495bSYour Name 	tDot11fTLVtransition_reject_reason *,
2863*5113495bSYour Name 	uint8_t *,
2864*5113495bSYour Name 	uint32_t,
2865*5113495bSYour Name 	uint32_t*);
2866*5113495bSYour Name 
2867*5113495bSYour Name uint32_t dot11f_get_packed_tlv_transition_reject_reason(
2868*5113495bSYour Name 	tpAniSirGlobal,
2869*5113495bSYour Name 	tDot11fTLVtransition_reject_reason *,
2870*5113495bSYour Name 	uint32_t*);
2871*5113495bSYour Name 
2872*5113495bSYour Name #ifdef __cplusplus
2873*5113495bSYour Name }; /* End extern "C". */
2874*5113495bSYour Name #endif /* C++ */
2875*5113495bSYour Name 
2876*5113495bSYour Name /* ID 2 (0x0002) */
2877*5113495bSYour Name typedef struct sDot11fTLVvht_mcs11_attr {
2878*5113495bSYour Name 	uint8_t             present;
2879*5113495bSYour Name 	uint8_t             vht_mcs_10_11_supp;
2880*5113495bSYour Name } tDot11fTLVvht_mcs11_attr;
2881*5113495bSYour Name 
2882*5113495bSYour Name #define DOT11F_TLV_VHT_MCS11_ATTR (2)
2883*5113495bSYour Name 
2884*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2885*5113495bSYour Name #define DOT11F_TLV_VHT_MCS11_ATTR_MIN_LEN (1)
2886*5113495bSYour Name 
2887*5113495bSYour Name #define DOT11F_TLV_VHT_MCS11_ATTR_MAX_LEN (1)
2888*5113495bSYour Name 
2889*5113495bSYour Name #ifdef __cplusplus
2890*5113495bSYour Name extern "C" {
2891*5113495bSYour Name #endif /* C++ */
2892*5113495bSYour Name uint32_t dot11f_unpack_tlv_vht_mcs11_attr(
2893*5113495bSYour Name 	tpAniSirGlobal,
2894*5113495bSYour Name 	uint8_t *,
2895*5113495bSYour Name 	uint16_t,
2896*5113495bSYour Name 	tDot11fTLVvht_mcs11_attr*);
2897*5113495bSYour Name 
2898*5113495bSYour Name uint32_t dot11f_pack_tlv_vht_mcs11_attr(
2899*5113495bSYour Name 	tpAniSirGlobal,
2900*5113495bSYour Name 	tDot11fTLVvht_mcs11_attr *,
2901*5113495bSYour Name 	uint8_t *,
2902*5113495bSYour Name 	uint32_t,
2903*5113495bSYour Name 	uint32_t*);
2904*5113495bSYour Name 
2905*5113495bSYour Name uint32_t dot11f_get_packed_tlv_vht_mcs11_attr(
2906*5113495bSYour Name 	tpAniSirGlobal,
2907*5113495bSYour Name 	tDot11fTLVvht_mcs11_attr *,
2908*5113495bSYour Name 	uint32_t*);
2909*5113495bSYour Name 
2910*5113495bSYour Name #ifdef __cplusplus
2911*5113495bSYour Name }; /* End extern "C". */
2912*5113495bSYour Name #endif /* C++ */
2913*5113495bSYour Name 
2914*5113495bSYour Name /* ID 16 (0x0010) */
2915*5113495bSYour Name typedef struct sDot11fTLVP2PInterface {
2916*5113495bSYour Name 	uint8_t             present;
2917*5113495bSYour Name 	uint8_t             P2PDeviceAddress[6];
2918*5113495bSYour Name } tDot11fTLVP2PInterface;
2919*5113495bSYour Name 
2920*5113495bSYour Name #define DOT11F_TLV_P2PINTERFACE (16)
2921*5113495bSYour Name 
2922*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2923*5113495bSYour Name #define DOT11F_TLV_P2PINTERFACE_MIN_LEN (7)
2924*5113495bSYour Name 
2925*5113495bSYour Name #define DOT11F_TLV_P2PINTERFACE_MAX_LEN (7)
2926*5113495bSYour Name 
2927*5113495bSYour Name #ifdef __cplusplus
2928*5113495bSYour Name extern "C" {
2929*5113495bSYour Name #endif /* C++ */
2930*5113495bSYour Name uint32_t dot11f_unpack_tlv_p2_p_interface(
2931*5113495bSYour Name 	tpAniSirGlobal,
2932*5113495bSYour Name 	uint8_t *,
2933*5113495bSYour Name 	uint16_t,
2934*5113495bSYour Name 	tDot11fTLVP2PInterface*);
2935*5113495bSYour Name 
2936*5113495bSYour Name uint32_t dot11f_pack_tlv_p2_p_interface(
2937*5113495bSYour Name 	tpAniSirGlobal,
2938*5113495bSYour Name 	tDot11fTLVP2PInterface *,
2939*5113495bSYour Name 	uint8_t *,
2940*5113495bSYour Name 	uint32_t,
2941*5113495bSYour Name 	uint32_t*);
2942*5113495bSYour Name 
2943*5113495bSYour Name uint32_t dot11f_get_packed_tlv_P2PInterface(
2944*5113495bSYour Name 	tpAniSirGlobal,
2945*5113495bSYour Name 	tDot11fTLVP2PInterface *,
2946*5113495bSYour Name 	uint32_t*);
2947*5113495bSYour Name 
2948*5113495bSYour Name #ifdef __cplusplus
2949*5113495bSYour Name }; /* End extern "C". */
2950*5113495bSYour Name #endif /* C++ */
2951*5113495bSYour Name 
2952*5113495bSYour Name /* ID 10 (0x000a) */
2953*5113495bSYour Name typedef struct sDot11fTLVP2PManageability {
2954*5113495bSYour Name 	uint8_t             present;
2955*5113495bSYour Name 	uint8_t             manageability;
2956*5113495bSYour Name } tDot11fTLVP2PManageability;
2957*5113495bSYour Name 
2958*5113495bSYour Name #define DOT11F_TLV_P2PMANAGEABILITY (10)
2959*5113495bSYour Name 
2960*5113495bSYour Name /* N.B. These #defines do *not* include the ID & length */
2961*5113495bSYour Name #define DOT11F_TLV_P2PMANAGEABILITY_MIN_LEN (2)
2962*5113495bSYour Name 
2963*5113495bSYour Name #define DOT11F_TLV_P2PMANAGEABILITY_MAX_LEN (2)
2964*5113495bSYour Name 
2965*5113495bSYour Name #ifdef __cplusplus
2966*5113495bSYour Name extern "C" {
2967*5113495bSYour Name #endif /* C++ */
2968*5113495bSYour Name uint32_t dot11f_unpack_tlv_P2PManageability(
2969*5113495bSYour Name 	tpAniSirGlobal,
2970*5113495bSYour Name 	uint8_t *,
2971*5113495bSYour Name 	uint16_t,
2972*5113495bSYour Name 	tDot11fTLVP2PManageability*);
2973*5113495bSYour Name 
2974*5113495bSYour Name uint32_t dot11f_pack_tlv_p2_p_manageability(
2975*5113495bSYour Name 	tpAniSirGlobal,
2976*5113495bSYour Name 	tDot11fTLVP2PManageability *,
2977*5113495bSYour Name 	uint8_t *,
2978*5113495bSYour Name 	uint32_t,
2979*5113495bSYour Name 	uint32_t*);
2980*5113495bSYour Name 
2981*5113495bSYour Name uint32_t dot11f_get_packed_tlv_P2PManageability(
2982*5113495bSYour Name 	tpAniSirGlobal,
2983*5113495bSYour Name 	tDot11fTLVP2PManageability *,
2984*5113495bSYour Name 	uint32_t*);
2985*5113495bSYour Name 
2986*5113495bSYour Name #ifdef __cplusplus
2987*5113495bSYour Name }; /* End extern "C". */
2988*5113495bSYour Name #endif /* C++ */
2989*5113495bSYour Name /*********************************************************************
2990*5113495bSYour Name  * Information Elements                                              *
2991*5113495bSYour Name  ********************************************************************/
2992*5113495bSYour Name 
2993*5113495bSYour Name 
2994*5113495bSYour Name /* EID 2 (0x02) */
2995*5113495bSYour Name typedef struct sDot11fIEGTK {
2996*5113495bSYour Name 	uint8_t             present;
2997*5113495bSYour Name 	uint16_t                keyId:2;
2998*5113495bSYour Name 	uint16_t             reserved:14;
2999*5113495bSYour Name 	uint8_t             keyLength;
3000*5113495bSYour Name 	uint8_t             RSC[8];
3001*5113495bSYour Name 	uint8_t             num_key;
3002*5113495bSYour Name 	uint8_t             key[32];
3003*5113495bSYour Name } tDot11fIEGTK;
3004*5113495bSYour Name 
3005*5113495bSYour Name #define DOT11F_EID_GTK (2)
3006*5113495bSYour Name 
3007*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3008*5113495bSYour Name #define DOT11F_IE_GTK_MIN_LEN (16)
3009*5113495bSYour Name 
3010*5113495bSYour Name #define DOT11F_IE_GTK_MAX_LEN (43)
3011*5113495bSYour Name 
3012*5113495bSYour Name #ifdef __cplusplus
3013*5113495bSYour Name extern "C" {
3014*5113495bSYour Name #endif /* C++ */
3015*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_gtk(
3016*5113495bSYour Name 	tpAniSirGlobal,
3017*5113495bSYour Name 	uint8_t *,
3018*5113495bSYour Name 	uint8_t,
3019*5113495bSYour Name 	tDot11fIEGTK*,
3020*5113495bSYour Name 	bool);
3021*5113495bSYour Name 
3022*5113495bSYour Name uint32_t dot11f_pack_ie_gtk(
3023*5113495bSYour Name 	tpAniSirGlobal,
3024*5113495bSYour Name 	tDot11fIEGTK *,
3025*5113495bSYour Name 	uint8_t *,
3026*5113495bSYour Name 	uint32_t,
3027*5113495bSYour Name 	uint32_t*);
3028*5113495bSYour Name 
3029*5113495bSYour Name uint32_t dot11f_get_packed_ie_GTK(
3030*5113495bSYour Name 	tpAniSirGlobal,
3031*5113495bSYour Name 	tDot11fIEGTK *,
3032*5113495bSYour Name 	uint32_t*);
3033*5113495bSYour Name 
3034*5113495bSYour Name #ifdef __cplusplus
3035*5113495bSYour Name }; /* End extern "C". */
3036*5113495bSYour Name #endif /* C++ */
3037*5113495bSYour Name 
3038*5113495bSYour Name /* EID 4 (0x04) */
3039*5113495bSYour Name typedef struct sDot11fIEIGTK {
3040*5113495bSYour Name 	uint8_t             present;
3041*5113495bSYour Name 	uint8_t             keyID[2];
3042*5113495bSYour Name 	uint8_t             IPN[6];
3043*5113495bSYour Name 	uint8_t             keyLength;
3044*5113495bSYour Name 	uint8_t             key[24];
3045*5113495bSYour Name } tDot11fIEIGTK;
3046*5113495bSYour Name 
3047*5113495bSYour Name #define DOT11F_EID_IGTK (4)
3048*5113495bSYour Name 
3049*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3050*5113495bSYour Name #define DOT11F_IE_IGTK_MIN_LEN (33)
3051*5113495bSYour Name 
3052*5113495bSYour Name #define DOT11F_IE_IGTK_MAX_LEN (33)
3053*5113495bSYour Name 
3054*5113495bSYour Name #ifdef __cplusplus
3055*5113495bSYour Name extern "C" {
3056*5113495bSYour Name #endif /* C++ */
3057*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_igtk(
3058*5113495bSYour Name 	tpAniSirGlobal,
3059*5113495bSYour Name 	uint8_t *,
3060*5113495bSYour Name 	uint8_t,
3061*5113495bSYour Name 	tDot11fIEIGTK*,
3062*5113495bSYour Name 	bool);
3063*5113495bSYour Name 
3064*5113495bSYour Name uint32_t dot11f_pack_ie_igtk(
3065*5113495bSYour Name 	tpAniSirGlobal,
3066*5113495bSYour Name 	tDot11fIEIGTK *,
3067*5113495bSYour Name 	uint8_t *,
3068*5113495bSYour Name 	uint32_t,
3069*5113495bSYour Name 	uint32_t*);
3070*5113495bSYour Name 
3071*5113495bSYour Name uint32_t dot11f_get_packed_ie_IGTK(
3072*5113495bSYour Name 	tpAniSirGlobal,
3073*5113495bSYour Name 	tDot11fIEIGTK *,
3074*5113495bSYour Name 	uint32_t*);
3075*5113495bSYour Name 
3076*5113495bSYour Name #ifdef __cplusplus
3077*5113495bSYour Name }; /* End extern "C". */
3078*5113495bSYour Name #endif /* C++ */
3079*5113495bSYour Name 
3080*5113495bSYour Name /* EID 3 (0x03) */
3081*5113495bSYour Name typedef struct sDot11fIER0KH_ID {
3082*5113495bSYour Name 	uint8_t             present;
3083*5113495bSYour Name 	uint8_t             num_PMK_R0_ID;
3084*5113495bSYour Name 	uint8_t             PMK_R0_ID[48];
3085*5113495bSYour Name } tDot11fIER0KH_ID;
3086*5113495bSYour Name 
3087*5113495bSYour Name #define DOT11F_EID_R0KH_ID (3)
3088*5113495bSYour Name 
3089*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3090*5113495bSYour Name #define DOT11F_IE_R0KH_ID_MIN_LEN (1)
3091*5113495bSYour Name 
3092*5113495bSYour Name #define DOT11F_IE_R0KH_ID_MAX_LEN (48)
3093*5113495bSYour Name 
3094*5113495bSYour Name #ifdef __cplusplus
3095*5113495bSYour Name extern "C" {
3096*5113495bSYour Name #endif /* C++ */
3097*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_r0_kh_id(
3098*5113495bSYour Name 	tpAniSirGlobal,
3099*5113495bSYour Name 	uint8_t *,
3100*5113495bSYour Name 	uint8_t,
3101*5113495bSYour Name 	tDot11fIER0KH_ID*,
3102*5113495bSYour Name 	bool);
3103*5113495bSYour Name 
3104*5113495bSYour Name uint32_t dot11f_pack_ie_r0_kh_id(
3105*5113495bSYour Name 	tpAniSirGlobal,
3106*5113495bSYour Name 	tDot11fIER0KH_ID *,
3107*5113495bSYour Name 	uint8_t *,
3108*5113495bSYour Name 	uint32_t,
3109*5113495bSYour Name 	uint32_t*);
3110*5113495bSYour Name 
3111*5113495bSYour Name uint32_t dot11f_get_packed_ie_R0KH_ID(
3112*5113495bSYour Name 	tpAniSirGlobal,
3113*5113495bSYour Name 	tDot11fIER0KH_ID *,
3114*5113495bSYour Name 	uint32_t*);
3115*5113495bSYour Name 
3116*5113495bSYour Name #ifdef __cplusplus
3117*5113495bSYour Name }; /* End extern "C". */
3118*5113495bSYour Name #endif /* C++ */
3119*5113495bSYour Name 
3120*5113495bSYour Name /* EID 1 (0x01) */
3121*5113495bSYour Name typedef struct sDot11fIER1KH_ID {
3122*5113495bSYour Name 	uint8_t             present;
3123*5113495bSYour Name 	uint8_t             PMK_R1_ID[6];
3124*5113495bSYour Name } tDot11fIER1KH_ID;
3125*5113495bSYour Name 
3126*5113495bSYour Name #define DOT11F_EID_R1KH_ID (1)
3127*5113495bSYour Name 
3128*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3129*5113495bSYour Name #define DOT11F_IE_R1KH_ID_MIN_LEN (6)
3130*5113495bSYour Name 
3131*5113495bSYour Name #define DOT11F_IE_R1KH_ID_MAX_LEN (6)
3132*5113495bSYour Name 
3133*5113495bSYour Name #ifdef __cplusplus
3134*5113495bSYour Name extern "C" {
3135*5113495bSYour Name #endif /* C++ */
3136*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_r1_kh_id(
3137*5113495bSYour Name 	tpAniSirGlobal,
3138*5113495bSYour Name 	uint8_t *,
3139*5113495bSYour Name 	uint8_t,
3140*5113495bSYour Name 	tDot11fIER1KH_ID*,
3141*5113495bSYour Name 	bool);
3142*5113495bSYour Name 
3143*5113495bSYour Name uint32_t dot11f_pack_ie_r1_kh_id(
3144*5113495bSYour Name 	tpAniSirGlobal,
3145*5113495bSYour Name 	tDot11fIER1KH_ID *,
3146*5113495bSYour Name 	uint8_t *,
3147*5113495bSYour Name 	uint32_t,
3148*5113495bSYour Name 	uint32_t*);
3149*5113495bSYour Name 
3150*5113495bSYour Name uint32_t dot11f_get_packed_ie_R1KH_ID(
3151*5113495bSYour Name 	tpAniSirGlobal,
3152*5113495bSYour Name 	tDot11fIER1KH_ID *,
3153*5113495bSYour Name 	uint32_t*);
3154*5113495bSYour Name 
3155*5113495bSYour Name #ifdef __cplusplus
3156*5113495bSYour Name }; /* End extern "C". */
3157*5113495bSYour Name #endif /* C++ */
3158*5113495bSYour Name 
3159*5113495bSYour Name /* EID 51 (0x33) */
3160*5113495bSYour Name typedef struct sDot11fIEAPChannelReport {
3161*5113495bSYour Name 	uint8_t             present;
3162*5113495bSYour Name 	uint8_t             regulatoryClass;
3163*5113495bSYour Name 	uint8_t             num_channelList;
3164*5113495bSYour Name 	uint8_t             channelList[50];
3165*5113495bSYour Name } tDot11fIEAPChannelReport;
3166*5113495bSYour Name 
3167*5113495bSYour Name #define DOT11F_EID_APCHANNELREPORT (51)
3168*5113495bSYour Name 
3169*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3170*5113495bSYour Name #define DOT11F_IE_APCHANNELREPORT_MIN_LEN (1)
3171*5113495bSYour Name 
3172*5113495bSYour Name #define DOT11F_IE_APCHANNELREPORT_MAX_LEN (51)
3173*5113495bSYour Name 
3174*5113495bSYour Name #ifdef __cplusplus
3175*5113495bSYour Name extern "C" {
3176*5113495bSYour Name #endif /* C++ */
3177*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ap_channel_report(
3178*5113495bSYour Name 	tpAniSirGlobal,
3179*5113495bSYour Name 	uint8_t *,
3180*5113495bSYour Name 	uint8_t,
3181*5113495bSYour Name 	tDot11fIEAPChannelReport*,
3182*5113495bSYour Name 	bool);
3183*5113495bSYour Name 
3184*5113495bSYour Name uint32_t dot11f_pack_ie_ap_channel_report(
3185*5113495bSYour Name 	tpAniSirGlobal,
3186*5113495bSYour Name 	tDot11fIEAPChannelReport *,
3187*5113495bSYour Name 	uint8_t *,
3188*5113495bSYour Name 	uint32_t,
3189*5113495bSYour Name 	uint32_t*);
3190*5113495bSYour Name 
3191*5113495bSYour Name uint32_t dot11f_get_packed_ie_APChannelReport(
3192*5113495bSYour Name 	tpAniSirGlobal,
3193*5113495bSYour Name 	tDot11fIEAPChannelReport *,
3194*5113495bSYour Name 	uint32_t*);
3195*5113495bSYour Name 
3196*5113495bSYour Name #ifdef __cplusplus
3197*5113495bSYour Name }; /* End extern "C". */
3198*5113495bSYour Name #endif /* C++ */
3199*5113495bSYour Name 
3200*5113495bSYour Name /* EID 2 (0x02) */
3201*5113495bSYour Name typedef struct sDot11fIEBcnReportingDetail {
3202*5113495bSYour Name 	uint8_t             present;
3203*5113495bSYour Name 	uint8_t             reportingDetail;
3204*5113495bSYour Name } tDot11fIEBcnReportingDetail;
3205*5113495bSYour Name 
3206*5113495bSYour Name #define DOT11F_EID_BCNREPORTINGDETAIL (2)
3207*5113495bSYour Name 
3208*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3209*5113495bSYour Name #define DOT11F_IE_BCNREPORTINGDETAIL_MIN_LEN (1)
3210*5113495bSYour Name 
3211*5113495bSYour Name #define DOT11F_IE_BCNREPORTINGDETAIL_MAX_LEN (1)
3212*5113495bSYour Name 
3213*5113495bSYour Name #ifdef __cplusplus
3214*5113495bSYour Name extern "C" {
3215*5113495bSYour Name #endif /* C++ */
3216*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_bcn_reporting_detail(
3217*5113495bSYour Name 	tpAniSirGlobal,
3218*5113495bSYour Name 	uint8_t *,
3219*5113495bSYour Name 	uint8_t,
3220*5113495bSYour Name 	tDot11fIEBcnReportingDetail*,
3221*5113495bSYour Name 	bool);
3222*5113495bSYour Name 
3223*5113495bSYour Name uint32_t dot11f_pack_ie_bcn_reporting_detail(
3224*5113495bSYour Name 	tpAniSirGlobal,
3225*5113495bSYour Name 	tDot11fIEBcnReportingDetail *,
3226*5113495bSYour Name 	uint8_t *,
3227*5113495bSYour Name 	uint32_t,
3228*5113495bSYour Name 	uint32_t*);
3229*5113495bSYour Name 
3230*5113495bSYour Name uint32_t dot11f_get_packed_ie_BcnReportingDetail(
3231*5113495bSYour Name 	tpAniSirGlobal,
3232*5113495bSYour Name 	tDot11fIEBcnReportingDetail *,
3233*5113495bSYour Name 	uint32_t*);
3234*5113495bSYour Name 
3235*5113495bSYour Name #ifdef __cplusplus
3236*5113495bSYour Name }; /* End extern "C". */
3237*5113495bSYour Name #endif /* C++ */
3238*5113495bSYour Name 
3239*5113495bSYour Name /* EID 1 (0x01) */
3240*5113495bSYour Name typedef struct sDot11fIEBeaconReportFrmBody {
3241*5113495bSYour Name 	uint8_t             present;
3242*5113495bSYour Name 	uint8_t             num_reportedFields;
3243*5113495bSYour Name 	uint8_t             reportedFields[224];
3244*5113495bSYour Name } tDot11fIEBeaconReportFrmBody;
3245*5113495bSYour Name 
3246*5113495bSYour Name #define DOT11F_EID_BEACONREPORTFRMBODY (1)
3247*5113495bSYour Name 
3248*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3249*5113495bSYour Name #define DOT11F_IE_BEACONREPORTFRMBODY_MIN_LEN (0)
3250*5113495bSYour Name 
3251*5113495bSYour Name #define DOT11F_IE_BEACONREPORTFRMBODY_MAX_LEN (224)
3252*5113495bSYour Name 
3253*5113495bSYour Name #ifdef __cplusplus
3254*5113495bSYour Name extern "C" {
3255*5113495bSYour Name #endif /* C++ */
3256*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_beacon_report_frm_body(
3257*5113495bSYour Name 	tpAniSirGlobal,
3258*5113495bSYour Name 	uint8_t *,
3259*5113495bSYour Name 	uint8_t,
3260*5113495bSYour Name 	tDot11fIEBeaconReportFrmBody*,
3261*5113495bSYour Name 	bool);
3262*5113495bSYour Name 
3263*5113495bSYour Name uint32_t dot11f_pack_ie_beacon_report_frm_body(
3264*5113495bSYour Name 	tpAniSirGlobal,
3265*5113495bSYour Name 	tDot11fIEBeaconReportFrmBody *,
3266*5113495bSYour Name 	uint8_t *,
3267*5113495bSYour Name 	uint32_t,
3268*5113495bSYour Name 	uint32_t*);
3269*5113495bSYour Name 
3270*5113495bSYour Name uint32_t dot11f_get_packed_ie_BeaconReportFrmBody(
3271*5113495bSYour Name 	tpAniSirGlobal,
3272*5113495bSYour Name 	tDot11fIEBeaconReportFrmBody *,
3273*5113495bSYour Name 	uint32_t*);
3274*5113495bSYour Name 
3275*5113495bSYour Name #ifdef __cplusplus
3276*5113495bSYour Name }; /* End extern "C". */
3277*5113495bSYour Name #endif /* C++ */
3278*5113495bSYour Name 
3279*5113495bSYour Name /* EID 2 (0x02) */
3280*5113495bSYour Name typedef struct sDot11fIECondensedCountryStr {
3281*5113495bSYour Name 	uint8_t             present;
3282*5113495bSYour Name 	uint8_t             countryStr[2];
3283*5113495bSYour Name } tDot11fIECondensedCountryStr;
3284*5113495bSYour Name 
3285*5113495bSYour Name #define DOT11F_EID_CONDENSEDCOUNTRYSTR (2)
3286*5113495bSYour Name 
3287*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3288*5113495bSYour Name #define DOT11F_IE_CONDENSEDCOUNTRYSTR_MIN_LEN (2)
3289*5113495bSYour Name 
3290*5113495bSYour Name #define DOT11F_IE_CONDENSEDCOUNTRYSTR_MAX_LEN (2)
3291*5113495bSYour Name 
3292*5113495bSYour Name #ifdef __cplusplus
3293*5113495bSYour Name extern "C" {
3294*5113495bSYour Name #endif /* C++ */
3295*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_condensed_country_str(
3296*5113495bSYour Name 	tpAniSirGlobal,
3297*5113495bSYour Name 	uint8_t *,
3298*5113495bSYour Name 	uint8_t,
3299*5113495bSYour Name 	tDot11fIECondensedCountryStr*,
3300*5113495bSYour Name 	bool);
3301*5113495bSYour Name 
3302*5113495bSYour Name uint32_t dot11f_pack_ie_condensed_country_str(
3303*5113495bSYour Name 	tpAniSirGlobal,
3304*5113495bSYour Name 	tDot11fIECondensedCountryStr *,
3305*5113495bSYour Name 	uint8_t *,
3306*5113495bSYour Name 	uint32_t,
3307*5113495bSYour Name 	uint32_t*);
3308*5113495bSYour Name 
3309*5113495bSYour Name uint32_t dot11f_get_packed_ie_CondensedCountryStr(
3310*5113495bSYour Name 	tpAniSirGlobal,
3311*5113495bSYour Name 	tDot11fIECondensedCountryStr *,
3312*5113495bSYour Name 	uint32_t*);
3313*5113495bSYour Name 
3314*5113495bSYour Name #ifdef __cplusplus
3315*5113495bSYour Name }; /* End extern "C". */
3316*5113495bSYour Name #endif /* C++ */
3317*5113495bSYour Name 
3318*5113495bSYour Name /* EID 11 (0x0b) */
3319*5113495bSYour Name typedef struct sDot11fIEExtRequestedInfo {
3320*5113495bSYour Name 	uint8_t             present;
3321*5113495bSYour Name 	uint8_t             req_element_id;
3322*5113495bSYour Name 	uint8_t             num_req_element_id_ext;
3323*5113495bSYour Name 	uint8_t             req_element_id_ext[255];
3324*5113495bSYour Name } tDot11fIEExtRequestedInfo;
3325*5113495bSYour Name 
3326*5113495bSYour Name #define DOT11F_EID_EXTREQUESTEDINFO (11)
3327*5113495bSYour Name 
3328*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3329*5113495bSYour Name #define DOT11F_IE_EXTREQUESTEDINFO_MIN_LEN (1)
3330*5113495bSYour Name 
3331*5113495bSYour Name #define DOT11F_IE_EXTREQUESTEDINFO_MAX_LEN (256)
3332*5113495bSYour Name 
3333*5113495bSYour Name #ifdef __cplusplus
3334*5113495bSYour Name extern "C" {
3335*5113495bSYour Name #endif /* C++ */
3336*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ExtRequestedInfo(
3337*5113495bSYour Name 	tpAniSirGlobal,
3338*5113495bSYour Name 	uint8_t *,
3339*5113495bSYour Name 	uint8_t,
3340*5113495bSYour Name 	tDot11fIEExtRequestedInfo*,
3341*5113495bSYour Name 	bool);
3342*5113495bSYour Name 
3343*5113495bSYour Name uint32_t dot11f_pack_ie_ExtRequestedInfo(
3344*5113495bSYour Name 	tpAniSirGlobal,
3345*5113495bSYour Name 	tDot11fIEExtRequestedInfo *,
3346*5113495bSYour Name 	uint8_t *,
3347*5113495bSYour Name 	uint32_t,
3348*5113495bSYour Name 	uint32_t*);
3349*5113495bSYour Name 
3350*5113495bSYour Name uint32_t dot11f_get_packed_ie_ExtRequestedInfo(
3351*5113495bSYour Name 	tpAniSirGlobal,
3352*5113495bSYour Name 	tDot11fIEExtRequestedInfo *,
3353*5113495bSYour Name 	uint32_t*);
3354*5113495bSYour Name 
3355*5113495bSYour Name #ifdef __cplusplus
3356*5113495bSYour Name }; /* End extern "C". */
3357*5113495bSYour Name #endif /* C++ */
3358*5113495bSYour Name 
3359*5113495bSYour Name /* EID 66 (0x42) */
3360*5113495bSYour Name typedef struct sDot11fIEMeasurementPilot {
3361*5113495bSYour Name 	uint8_t             present;
3362*5113495bSYour Name 	uint8_t             measurementPilot;
3363*5113495bSYour Name 	uint8_t             num_vendorSpecific;
3364*5113495bSYour Name 	uint8_t             vendorSpecific[255];
3365*5113495bSYour Name } tDot11fIEMeasurementPilot;
3366*5113495bSYour Name 
3367*5113495bSYour Name #define DOT11F_EID_MEASUREMENTPILOT (66)
3368*5113495bSYour Name 
3369*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3370*5113495bSYour Name #define DOT11F_IE_MEASUREMENTPILOT_MIN_LEN (1)
3371*5113495bSYour Name 
3372*5113495bSYour Name #define DOT11F_IE_MEASUREMENTPILOT_MAX_LEN (256)
3373*5113495bSYour Name 
3374*5113495bSYour Name #ifdef __cplusplus
3375*5113495bSYour Name extern "C" {
3376*5113495bSYour Name #endif /* C++ */
3377*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_measurement_pilot(
3378*5113495bSYour Name 	tpAniSirGlobal,
3379*5113495bSYour Name 	uint8_t *,
3380*5113495bSYour Name 	uint8_t,
3381*5113495bSYour Name 	tDot11fIEMeasurementPilot*,
3382*5113495bSYour Name 	bool);
3383*5113495bSYour Name 
3384*5113495bSYour Name uint32_t dot11f_pack_ie_measurement_pilot(
3385*5113495bSYour Name 	tpAniSirGlobal,
3386*5113495bSYour Name 	tDot11fIEMeasurementPilot *,
3387*5113495bSYour Name 	uint8_t *,
3388*5113495bSYour Name 	uint32_t,
3389*5113495bSYour Name 	uint32_t*);
3390*5113495bSYour Name 
3391*5113495bSYour Name uint32_t dot11f_get_packed_ie_MeasurementPilot(
3392*5113495bSYour Name 	tpAniSirGlobal,
3393*5113495bSYour Name 	tDot11fIEMeasurementPilot *,
3394*5113495bSYour Name 	uint32_t*);
3395*5113495bSYour Name 
3396*5113495bSYour Name #ifdef __cplusplus
3397*5113495bSYour Name }; /* End extern "C". */
3398*5113495bSYour Name #endif /* C++ */
3399*5113495bSYour Name 
3400*5113495bSYour Name /* EID 71 (0x47) */
3401*5113495bSYour Name typedef struct sDot11fIEMultiBssid {
3402*5113495bSYour Name 	uint8_t             present;
3403*5113495bSYour Name 	uint8_t             maxBSSIDIndicator;
3404*5113495bSYour Name 	uint8_t             num_vendorSpecific;
3405*5113495bSYour Name 	uint8_t             vendorSpecific[255];
3406*5113495bSYour Name } tDot11fIEMultiBssid;
3407*5113495bSYour Name 
3408*5113495bSYour Name #define DOT11F_EID_MULTIBSSID (71)
3409*5113495bSYour Name 
3410*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3411*5113495bSYour Name #define DOT11F_IE_MULTIBSSID_MIN_LEN (1)
3412*5113495bSYour Name 
3413*5113495bSYour Name #define DOT11F_IE_MULTIBSSID_MAX_LEN (256)
3414*5113495bSYour Name 
3415*5113495bSYour Name #ifdef __cplusplus
3416*5113495bSYour Name extern "C" {
3417*5113495bSYour Name #endif /* C++ */
3418*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_multi_bssid(
3419*5113495bSYour Name 	tpAniSirGlobal,
3420*5113495bSYour Name 	uint8_t *,
3421*5113495bSYour Name 	uint8_t,
3422*5113495bSYour Name 	tDot11fIEMultiBssid*,
3423*5113495bSYour Name 	bool);
3424*5113495bSYour Name 
3425*5113495bSYour Name uint32_t dot11f_pack_ie_multi_bssid(
3426*5113495bSYour Name 	tpAniSirGlobal,
3427*5113495bSYour Name 	tDot11fIEMultiBssid *,
3428*5113495bSYour Name 	uint8_t *,
3429*5113495bSYour Name 	uint32_t,
3430*5113495bSYour Name 	uint32_t*);
3431*5113495bSYour Name 
3432*5113495bSYour Name uint32_t dot11f_get_packed_ie_MultiBssid(
3433*5113495bSYour Name 	tpAniSirGlobal,
3434*5113495bSYour Name 	tDot11fIEMultiBssid *,
3435*5113495bSYour Name 	uint32_t*);
3436*5113495bSYour Name 
3437*5113495bSYour Name #ifdef __cplusplus
3438*5113495bSYour Name }; /* End extern "C". */
3439*5113495bSYour Name #endif /* C++ */
3440*5113495bSYour Name 
3441*5113495bSYour Name /* EID 57 (0x39) */
3442*5113495bSYour Name typedef struct sDot11fIERICData {
3443*5113495bSYour Name 	uint8_t             present;
3444*5113495bSYour Name 	uint8_t             Identifier;
3445*5113495bSYour Name 	uint8_t             resourceDescCount;
3446*5113495bSYour Name 	uint16_t            statusCode;
3447*5113495bSYour Name } tDot11fIERICData;
3448*5113495bSYour Name 
3449*5113495bSYour Name #define DOT11F_EID_RICDATA (57)
3450*5113495bSYour Name 
3451*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3452*5113495bSYour Name #define DOT11F_IE_RICDATA_MIN_LEN (4)
3453*5113495bSYour Name 
3454*5113495bSYour Name #define DOT11F_IE_RICDATA_MAX_LEN (4)
3455*5113495bSYour Name 
3456*5113495bSYour Name #ifdef __cplusplus
3457*5113495bSYour Name extern "C" {
3458*5113495bSYour Name #endif /* C++ */
3459*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ric_data(
3460*5113495bSYour Name 	tpAniSirGlobal,
3461*5113495bSYour Name 	uint8_t *,
3462*5113495bSYour Name 	uint8_t,
3463*5113495bSYour Name 	tDot11fIERICData*,
3464*5113495bSYour Name 	bool);
3465*5113495bSYour Name 
3466*5113495bSYour Name uint32_t dot11f_pack_ie_ric_data(
3467*5113495bSYour Name 	tpAniSirGlobal,
3468*5113495bSYour Name 	tDot11fIERICData *,
3469*5113495bSYour Name 	uint8_t *,
3470*5113495bSYour Name 	uint32_t,
3471*5113495bSYour Name 	uint32_t*);
3472*5113495bSYour Name 
3473*5113495bSYour Name uint32_t dot11f_get_packed_ie_RICData(
3474*5113495bSYour Name 	tpAniSirGlobal,
3475*5113495bSYour Name 	tDot11fIERICData *,
3476*5113495bSYour Name 	uint32_t*);
3477*5113495bSYour Name 
3478*5113495bSYour Name #ifdef __cplusplus
3479*5113495bSYour Name }; /* End extern "C". */
3480*5113495bSYour Name #endif /* C++ */
3481*5113495bSYour Name 
3482*5113495bSYour Name /* EID 75 (0x4b) */
3483*5113495bSYour Name typedef struct sDot11fIERICDescriptor {
3484*5113495bSYour Name 	uint8_t             present;
3485*5113495bSYour Name 	uint8_t             resourceType;
3486*5113495bSYour Name 	uint8_t             num_variableData;
3487*5113495bSYour Name 	uint8_t             variableData[255];
3488*5113495bSYour Name } tDot11fIERICDescriptor;
3489*5113495bSYour Name 
3490*5113495bSYour Name #define DOT11F_EID_RICDESCRIPTOR (75)
3491*5113495bSYour Name 
3492*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3493*5113495bSYour Name #define DOT11F_IE_RICDESCRIPTOR_MIN_LEN (1)
3494*5113495bSYour Name 
3495*5113495bSYour Name #define DOT11F_IE_RICDESCRIPTOR_MAX_LEN (256)
3496*5113495bSYour Name 
3497*5113495bSYour Name #ifdef __cplusplus
3498*5113495bSYour Name extern "C" {
3499*5113495bSYour Name #endif /* C++ */
3500*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ric_descriptor(
3501*5113495bSYour Name 	tpAniSirGlobal,
3502*5113495bSYour Name 	uint8_t *,
3503*5113495bSYour Name 	uint8_t,
3504*5113495bSYour Name 	tDot11fIERICDescriptor*,
3505*5113495bSYour Name 	bool);
3506*5113495bSYour Name 
3507*5113495bSYour Name uint32_t dot11f_pack_ie_ric_descriptor(
3508*5113495bSYour Name 	tpAniSirGlobal,
3509*5113495bSYour Name 	tDot11fIERICDescriptor *,
3510*5113495bSYour Name 	uint8_t *,
3511*5113495bSYour Name 	uint32_t,
3512*5113495bSYour Name 	uint32_t*);
3513*5113495bSYour Name 
3514*5113495bSYour Name uint32_t dot11f_get_packed_ie_RICDescriptor(
3515*5113495bSYour Name 	tpAniSirGlobal,
3516*5113495bSYour Name 	tDot11fIERICDescriptor *,
3517*5113495bSYour Name 	uint32_t*);
3518*5113495bSYour Name 
3519*5113495bSYour Name #ifdef __cplusplus
3520*5113495bSYour Name }; /* End extern "C". */
3521*5113495bSYour Name #endif /* C++ */
3522*5113495bSYour Name 
3523*5113495bSYour Name /* EID 70 (0x46) */
3524*5113495bSYour Name typedef struct sDot11fIERRMEnabledCap {
3525*5113495bSYour Name 	uint8_t             present;
3526*5113495bSYour Name 	uint8_t      LinkMeasurement:1;
3527*5113495bSYour Name 	uint8_t          NeighborRpt:1;
3528*5113495bSYour Name 	uint8_t             parallel:1;
3529*5113495bSYour Name 	uint8_t             repeated:1;
3530*5113495bSYour Name 	uint8_t        BeaconPassive:1;
3531*5113495bSYour Name 	uint8_t         BeaconActive:1;
3532*5113495bSYour Name 	uint8_t          BeaconTable:1;
3533*5113495bSYour Name 	uint8_t        BeaconRepCond:1;
3534*5113495bSYour Name 	uint8_t     FrameMeasurement:1;
3535*5113495bSYour Name 	uint8_t          ChannelLoad:1;
3536*5113495bSYour Name 	uint8_t       NoiseHistogram:1;
3537*5113495bSYour Name 	uint8_t           statistics:1;
3538*5113495bSYour Name 	uint8_t       LCIMeasurement:1;
3539*5113495bSYour Name 	uint8_t           LCIAzimuth:1;
3540*5113495bSYour Name 	uint8_t        TCMCapability:1;
3541*5113495bSYour Name 	uint8_t         triggeredTCM:1;
3542*5113495bSYour Name 	uint8_t         APChanReport:1;
3543*5113495bSYour Name 	uint8_t        RRMMIBEnabled:1;
3544*5113495bSYour Name 	uint8_t     operatingChanMax:3;
3545*5113495bSYour Name 	uint8_t   nonOperatinChanMax:3;
3546*5113495bSYour Name 	uint8_t     MeasurementPilot:3;
3547*5113495bSYour Name 	uint8_t MeasurementPilotEnabled:1;
3548*5113495bSYour Name 	uint8_t    NeighborTSFOffset:1;
3549*5113495bSYour Name 	uint8_t      RCPIMeasurement:1;
3550*5113495bSYour Name 	uint8_t      RSNIMeasurement:1;
3551*5113495bSYour Name 	uint8_t    BssAvgAccessDelay:1;
3552*5113495bSYour Name 	uint8_t    BSSAvailAdmission:1;
3553*5113495bSYour Name 	uint8_t   AntennaInformation:1;
3554*5113495bSYour Name 	uint8_t   fine_time_meas_rpt:1;
3555*5113495bSYour Name 	uint8_t       lci_capability:1;
3556*5113495bSYour Name 	uint8_t             reserved:4;
3557*5113495bSYour Name } tDot11fIERRMEnabledCap;
3558*5113495bSYour Name 
3559*5113495bSYour Name #define DOT11F_EID_RRMENABLEDCAP (70)
3560*5113495bSYour Name 
3561*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3562*5113495bSYour Name #define DOT11F_IE_RRMENABLEDCAP_MIN_LEN (5)
3563*5113495bSYour Name 
3564*5113495bSYour Name #define DOT11F_IE_RRMENABLEDCAP_MAX_LEN (5)
3565*5113495bSYour Name 
3566*5113495bSYour Name #ifdef __cplusplus
3567*5113495bSYour Name extern "C" {
3568*5113495bSYour Name #endif /* C++ */
3569*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_rrm_enabled_cap(
3570*5113495bSYour Name 	tpAniSirGlobal,
3571*5113495bSYour Name 	uint8_t *,
3572*5113495bSYour Name 	uint8_t,
3573*5113495bSYour Name 	tDot11fIERRMEnabledCap*,
3574*5113495bSYour Name 	bool);
3575*5113495bSYour Name 
3576*5113495bSYour Name uint32_t dot11f_pack_ie_rrm_enabled_cap(
3577*5113495bSYour Name 	tpAniSirGlobal,
3578*5113495bSYour Name 	tDot11fIERRMEnabledCap *,
3579*5113495bSYour Name 	uint8_t *,
3580*5113495bSYour Name 	uint32_t,
3581*5113495bSYour Name 	uint32_t*);
3582*5113495bSYour Name 
3583*5113495bSYour Name uint32_t dot11f_get_packed_ie_RRMEnabledCap(
3584*5113495bSYour Name 	tpAniSirGlobal,
3585*5113495bSYour Name 	tDot11fIERRMEnabledCap *,
3586*5113495bSYour Name 	uint32_t*);
3587*5113495bSYour Name 
3588*5113495bSYour Name #ifdef __cplusplus
3589*5113495bSYour Name }; /* End extern "C". */
3590*5113495bSYour Name #endif /* C++ */
3591*5113495bSYour Name 
3592*5113495bSYour Name /* EID 10 (0x0a) */
3593*5113495bSYour Name typedef struct sDot11fIERequestedInfo {
3594*5113495bSYour Name 	uint8_t             present;
3595*5113495bSYour Name 	uint8_t             num_requested_eids;
3596*5113495bSYour Name 	uint8_t             requested_eids[255];
3597*5113495bSYour Name } tDot11fIERequestedInfo;
3598*5113495bSYour Name 
3599*5113495bSYour Name #define DOT11F_EID_REQUESTEDINFO (10)
3600*5113495bSYour Name 
3601*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3602*5113495bSYour Name #define DOT11F_IE_REQUESTEDINFO_MIN_LEN (0)
3603*5113495bSYour Name 
3604*5113495bSYour Name #define DOT11F_IE_REQUESTEDINFO_MAX_LEN (255)
3605*5113495bSYour Name 
3606*5113495bSYour Name #ifdef __cplusplus
3607*5113495bSYour Name extern "C" {
3608*5113495bSYour Name #endif /* C++ */
3609*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_requested_info(
3610*5113495bSYour Name 	tpAniSirGlobal,
3611*5113495bSYour Name 	uint8_t *,
3612*5113495bSYour Name 	uint8_t,
3613*5113495bSYour Name 	tDot11fIERequestedInfo*,
3614*5113495bSYour Name 	bool);
3615*5113495bSYour Name 
3616*5113495bSYour Name uint32_t dot11f_pack_ie_requested_info(
3617*5113495bSYour Name 	tpAniSirGlobal,
3618*5113495bSYour Name 	tDot11fIERequestedInfo *,
3619*5113495bSYour Name 	uint8_t *,
3620*5113495bSYour Name 	uint32_t,
3621*5113495bSYour Name 	uint32_t*);
3622*5113495bSYour Name 
3623*5113495bSYour Name uint32_t dot11f_get_packed_ie_RequestedInfo(
3624*5113495bSYour Name 	tpAniSirGlobal,
3625*5113495bSYour Name 	tDot11fIERequestedInfo *,
3626*5113495bSYour Name 	uint32_t*);
3627*5113495bSYour Name 
3628*5113495bSYour Name #ifdef __cplusplus
3629*5113495bSYour Name }; /* End extern "C". */
3630*5113495bSYour Name #endif /* C++ */
3631*5113495bSYour Name 
3632*5113495bSYour Name /* EID 0 (0x00) */
3633*5113495bSYour Name typedef struct sDot11fIESSID {
3634*5113495bSYour Name 	uint8_t             present;
3635*5113495bSYour Name 	uint8_t             num_ssid;
3636*5113495bSYour Name 	uint8_t             ssid[32];
3637*5113495bSYour Name } tDot11fIESSID;
3638*5113495bSYour Name 
3639*5113495bSYour Name #define DOT11F_EID_SSID (0)
3640*5113495bSYour Name 
3641*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3642*5113495bSYour Name #define DOT11F_IE_SSID_MIN_LEN (0)
3643*5113495bSYour Name 
3644*5113495bSYour Name #define DOT11F_IE_SSID_MAX_LEN (32)
3645*5113495bSYour Name 
3646*5113495bSYour Name #ifdef __cplusplus
3647*5113495bSYour Name extern "C" {
3648*5113495bSYour Name #endif /* C++ */
3649*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ssid(
3650*5113495bSYour Name 	tpAniSirGlobal,
3651*5113495bSYour Name 	uint8_t *,
3652*5113495bSYour Name 	uint8_t,
3653*5113495bSYour Name 	tDot11fIESSID*,
3654*5113495bSYour Name 	bool);
3655*5113495bSYour Name 
3656*5113495bSYour Name uint32_t dot11f_pack_ie_ssid(
3657*5113495bSYour Name 	tpAniSirGlobal,
3658*5113495bSYour Name 	tDot11fIESSID *,
3659*5113495bSYour Name 	uint8_t *,
3660*5113495bSYour Name 	uint32_t,
3661*5113495bSYour Name 	uint32_t*);
3662*5113495bSYour Name 
3663*5113495bSYour Name uint32_t dot11f_get_packed_ie_SSID(
3664*5113495bSYour Name 	tpAniSirGlobal,
3665*5113495bSYour Name 	tDot11fIESSID *,
3666*5113495bSYour Name 	uint32_t*);
3667*5113495bSYour Name 
3668*5113495bSYour Name #ifdef __cplusplus
3669*5113495bSYour Name }; /* End extern "C". */
3670*5113495bSYour Name #endif /* C++ */
3671*5113495bSYour Name 
3672*5113495bSYour Name /* EID 15 (0x0f) */
3673*5113495bSYour Name typedef struct sDot11fIESchedule {
3674*5113495bSYour Name 	uint8_t             present;
3675*5113495bSYour Name 	uint16_t          aggregation:1;
3676*5113495bSYour Name 	uint16_t                 tsid:4;
3677*5113495bSYour Name 	uint16_t            direction:2;
3678*5113495bSYour Name 	uint16_t             reserved:9;
3679*5113495bSYour Name 	uint32_t            service_start_time;
3680*5113495bSYour Name 	uint32_t            service_interval;
3681*5113495bSYour Name 	uint16_t            max_service_dur;
3682*5113495bSYour Name 	uint16_t            spec_interval;
3683*5113495bSYour Name } tDot11fIESchedule;
3684*5113495bSYour Name 
3685*5113495bSYour Name #define DOT11F_EID_SCHEDULE (15)
3686*5113495bSYour Name 
3687*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3688*5113495bSYour Name #define DOT11F_IE_SCHEDULE_MIN_LEN (14)
3689*5113495bSYour Name 
3690*5113495bSYour Name #define DOT11F_IE_SCHEDULE_MAX_LEN (14)
3691*5113495bSYour Name 
3692*5113495bSYour Name #ifdef __cplusplus
3693*5113495bSYour Name extern "C" {
3694*5113495bSYour Name #endif /* C++ */
3695*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_schedule(
3696*5113495bSYour Name 	tpAniSirGlobal,
3697*5113495bSYour Name 	uint8_t *,
3698*5113495bSYour Name 	uint8_t,
3699*5113495bSYour Name 	tDot11fIESchedule*,
3700*5113495bSYour Name 	bool);
3701*5113495bSYour Name 
3702*5113495bSYour Name uint32_t dot11f_pack_ie_schedule(
3703*5113495bSYour Name 	tpAniSirGlobal,
3704*5113495bSYour Name 	tDot11fIESchedule *,
3705*5113495bSYour Name 	uint8_t *,
3706*5113495bSYour Name 	uint32_t,
3707*5113495bSYour Name 	uint32_t*);
3708*5113495bSYour Name 
3709*5113495bSYour Name uint32_t dot11f_get_packed_ie_Schedule(
3710*5113495bSYour Name 	tpAniSirGlobal,
3711*5113495bSYour Name 	tDot11fIESchedule *,
3712*5113495bSYour Name 	uint32_t*);
3713*5113495bSYour Name 
3714*5113495bSYour Name #ifdef __cplusplus
3715*5113495bSYour Name }; /* End extern "C". */
3716*5113495bSYour Name #endif /* C++ */
3717*5113495bSYour Name 
3718*5113495bSYour Name /* EID 14 (0x0e) */
3719*5113495bSYour Name typedef struct sDot11fIETCLAS {
3720*5113495bSYour Name 	uint8_t             present;
3721*5113495bSYour Name 	uint8_t             user_priority;
3722*5113495bSYour Name 	uint8_t             classifier_type;
3723*5113495bSYour Name 	uint8_t             classifier_mask;
3724*5113495bSYour Name 	union {
3725*5113495bSYour Name 		struct {
3726*5113495bSYour Name 			uint8_t source[6];
3727*5113495bSYour Name 			uint8_t dest[6];
3728*5113495bSYour Name 			uint16_t type;
3729*5113495bSYour Name 		} EthParams; /* classifier_type = 0 */
3730*5113495bSYour Name 		struct {
3731*5113495bSYour Name 			uint8_t version;
3732*5113495bSYour Name 			union {
3733*5113495bSYour Name 				struct {
3734*5113495bSYour Name 					uint8_t source[4];
3735*5113495bSYour Name 					uint8_t dest[4];
3736*5113495bSYour Name 					uint16_t src_port;
3737*5113495bSYour Name 					uint16_t dest_port;
3738*5113495bSYour Name 					uint8_t DSCP;
3739*5113495bSYour Name 					uint8_t proto;
3740*5113495bSYour Name 					uint8_t reserved;
3741*5113495bSYour Name 				} IpV4Params; /* version = 4 */
3742*5113495bSYour Name 				struct {
3743*5113495bSYour Name 					uint8_t source[16];
3744*5113495bSYour Name 					uint8_t dest[16];
3745*5113495bSYour Name 					uint16_t src_port;
3746*5113495bSYour Name 					uint16_t dest_port;
3747*5113495bSYour Name 					uint8_t flow_label[3];
3748*5113495bSYour Name 				} IpV6Params; /* version = 6 */
3749*5113495bSYour Name 			} params;
3750*5113495bSYour Name 		} IpParams; /* classifier_type = 1 */
3751*5113495bSYour Name 		struct {
3752*5113495bSYour Name 			uint16_t tag_type;
3753*5113495bSYour Name 		} Params8021dq; /* classifier_type = 2 */
3754*5113495bSYour Name 	} info;
3755*5113495bSYour Name } tDot11fIETCLAS;
3756*5113495bSYour Name 
3757*5113495bSYour Name #define DOT11F_EID_TCLAS (14)
3758*5113495bSYour Name 
3759*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3760*5113495bSYour Name #define DOT11F_IE_TCLAS_MIN_LEN (5)
3761*5113495bSYour Name 
3762*5113495bSYour Name #define DOT11F_IE_TCLAS_MAX_LEN (43)
3763*5113495bSYour Name 
3764*5113495bSYour Name #ifdef __cplusplus
3765*5113495bSYour Name extern "C" {
3766*5113495bSYour Name #endif /* C++ */
3767*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_tclas(
3768*5113495bSYour Name 	tpAniSirGlobal,
3769*5113495bSYour Name 	uint8_t *,
3770*5113495bSYour Name 	uint8_t,
3771*5113495bSYour Name 	tDot11fIETCLAS*,
3772*5113495bSYour Name 	bool);
3773*5113495bSYour Name 
3774*5113495bSYour Name uint32_t dot11f_pack_ie_tclas(
3775*5113495bSYour Name 	tpAniSirGlobal,
3776*5113495bSYour Name 	tDot11fIETCLAS *,
3777*5113495bSYour Name 	uint8_t *,
3778*5113495bSYour Name 	uint32_t,
3779*5113495bSYour Name 	uint32_t*);
3780*5113495bSYour Name 
3781*5113495bSYour Name uint32_t dot11f_get_packed_ietclas(
3782*5113495bSYour Name 	tpAniSirGlobal,
3783*5113495bSYour Name 	tDot11fIETCLAS *,
3784*5113495bSYour Name 	uint32_t*);
3785*5113495bSYour Name 
3786*5113495bSYour Name #ifdef __cplusplus
3787*5113495bSYour Name }; /* End extern "C". */
3788*5113495bSYour Name #endif /* C++ */
3789*5113495bSYour Name 
3790*5113495bSYour Name /* EID 44 (0x2c) */
3791*5113495bSYour Name typedef struct sDot11fIETCLASSPROC {
3792*5113495bSYour Name 	uint8_t             present;
3793*5113495bSYour Name 	uint8_t             processing;
3794*5113495bSYour Name } tDot11fIETCLASSPROC;
3795*5113495bSYour Name 
3796*5113495bSYour Name #define DOT11F_EID_TCLASSPROC (44)
3797*5113495bSYour Name 
3798*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3799*5113495bSYour Name #define DOT11F_IE_TCLASSPROC_MIN_LEN (1)
3800*5113495bSYour Name 
3801*5113495bSYour Name #define DOT11F_IE_TCLASSPROC_MAX_LEN (1)
3802*5113495bSYour Name 
3803*5113495bSYour Name #ifdef __cplusplus
3804*5113495bSYour Name extern "C" {
3805*5113495bSYour Name #endif /* C++ */
3806*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_tclasSPROC(
3807*5113495bSYour Name 	tpAniSirGlobal,
3808*5113495bSYour Name 	uint8_t *,
3809*5113495bSYour Name 	uint8_t,
3810*5113495bSYour Name 	tDot11fIETCLASSPROC*,
3811*5113495bSYour Name 	bool);
3812*5113495bSYour Name 
3813*5113495bSYour Name uint32_t dot11f_pack_ie_tclassproc(
3814*5113495bSYour Name 	tpAniSirGlobal,
3815*5113495bSYour Name 	tDot11fIETCLASSPROC *,
3816*5113495bSYour Name 	uint8_t *,
3817*5113495bSYour Name 	uint32_t,
3818*5113495bSYour Name 	uint32_t*);
3819*5113495bSYour Name 
3820*5113495bSYour Name uint32_t dot11f_get_packed_ietclasSPROC(
3821*5113495bSYour Name 	tpAniSirGlobal,
3822*5113495bSYour Name 	tDot11fIETCLASSPROC *,
3823*5113495bSYour Name 	uint32_t*);
3824*5113495bSYour Name 
3825*5113495bSYour Name #ifdef __cplusplus
3826*5113495bSYour Name }; /* End extern "C". */
3827*5113495bSYour Name #endif /* C++ */
3828*5113495bSYour Name 
3829*5113495bSYour Name /* EID 43 (0x2b) */
3830*5113495bSYour Name typedef struct sDot11fIETSDelay {
3831*5113495bSYour Name 	uint8_t             present;
3832*5113495bSYour Name 	uint32_t            delay;
3833*5113495bSYour Name } tDot11fIETSDelay;
3834*5113495bSYour Name 
3835*5113495bSYour Name #define DOT11F_EID_TSDELAY (43)
3836*5113495bSYour Name 
3837*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3838*5113495bSYour Name #define DOT11F_IE_TSDELAY_MIN_LEN (4)
3839*5113495bSYour Name 
3840*5113495bSYour Name #define DOT11F_IE_TSDELAY_MAX_LEN (4)
3841*5113495bSYour Name 
3842*5113495bSYour Name #ifdef __cplusplus
3843*5113495bSYour Name extern "C" {
3844*5113495bSYour Name #endif /* C++ */
3845*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ts_delay(
3846*5113495bSYour Name 	tpAniSirGlobal,
3847*5113495bSYour Name 	uint8_t *,
3848*5113495bSYour Name 	uint8_t,
3849*5113495bSYour Name 	tDot11fIETSDelay*,
3850*5113495bSYour Name 	bool);
3851*5113495bSYour Name 
3852*5113495bSYour Name uint32_t dot11f_pack_ie_ts_delay(
3853*5113495bSYour Name 	tpAniSirGlobal,
3854*5113495bSYour Name 	tDot11fIETSDelay *,
3855*5113495bSYour Name 	uint8_t *,
3856*5113495bSYour Name 	uint32_t,
3857*5113495bSYour Name 	uint32_t*);
3858*5113495bSYour Name 
3859*5113495bSYour Name uint32_t dot11f_get_packed_ie_TSDelay(
3860*5113495bSYour Name 	tpAniSirGlobal,
3861*5113495bSYour Name 	tDot11fIETSDelay *,
3862*5113495bSYour Name 	uint32_t*);
3863*5113495bSYour Name 
3864*5113495bSYour Name #ifdef __cplusplus
3865*5113495bSYour Name }; /* End extern "C". */
3866*5113495bSYour Name #endif /* C++ */
3867*5113495bSYour Name 
3868*5113495bSYour Name /* EID 1 (0x01) */
3869*5113495bSYour Name typedef struct sDot11fIETSFInfo {
3870*5113495bSYour Name 	uint8_t             present;
3871*5113495bSYour Name 	uint16_t            TsfOffset;
3872*5113495bSYour Name 	uint16_t            BeaconIntvl;
3873*5113495bSYour Name } tDot11fIETSFInfo;
3874*5113495bSYour Name 
3875*5113495bSYour Name #define DOT11F_EID_TSFINFO (1)
3876*5113495bSYour Name 
3877*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3878*5113495bSYour Name #define DOT11F_IE_TSFINFO_MIN_LEN (4)
3879*5113495bSYour Name 
3880*5113495bSYour Name #define DOT11F_IE_TSFINFO_MAX_LEN (4)
3881*5113495bSYour Name 
3882*5113495bSYour Name #ifdef __cplusplus
3883*5113495bSYour Name extern "C" {
3884*5113495bSYour Name #endif /* C++ */
3885*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_tsf_info(
3886*5113495bSYour Name 	tpAniSirGlobal,
3887*5113495bSYour Name 	uint8_t *,
3888*5113495bSYour Name 	uint8_t,
3889*5113495bSYour Name 	tDot11fIETSFInfo*,
3890*5113495bSYour Name 	bool);
3891*5113495bSYour Name 
3892*5113495bSYour Name uint32_t dot11f_pack_ie_tsf_info(
3893*5113495bSYour Name 	tpAniSirGlobal,
3894*5113495bSYour Name 	tDot11fIETSFInfo *,
3895*5113495bSYour Name 	uint8_t *,
3896*5113495bSYour Name 	uint32_t,
3897*5113495bSYour Name 	uint32_t*);
3898*5113495bSYour Name 
3899*5113495bSYour Name uint32_t dot11f_get_packed_ie_TSFInfo(
3900*5113495bSYour Name 	tpAniSirGlobal,
3901*5113495bSYour Name 	tDot11fIETSFInfo *,
3902*5113495bSYour Name 	uint32_t*);
3903*5113495bSYour Name 
3904*5113495bSYour Name #ifdef __cplusplus
3905*5113495bSYour Name }; /* End extern "C". */
3906*5113495bSYour Name #endif /* C++ */
3907*5113495bSYour Name 
3908*5113495bSYour Name /* EID 13 (0x0d) */
3909*5113495bSYour Name typedef struct sDot11fIETSPEC {
3910*5113495bSYour Name 	uint8_t             present;
3911*5113495bSYour Name 	uint16_t         traffic_type:1;
3912*5113495bSYour Name 	uint16_t                 tsid:4;
3913*5113495bSYour Name 	uint16_t            direction:2;
3914*5113495bSYour Name 	uint16_t        access_policy:2;
3915*5113495bSYour Name 	uint16_t          aggregation:1;
3916*5113495bSYour Name 	uint16_t                  psb:1;
3917*5113495bSYour Name 	uint16_t        user_priority:3;
3918*5113495bSYour Name 	uint16_t       tsinfo_ack_pol:2;
3919*5113495bSYour Name 	uint8_t             schedule:1;
3920*5113495bSYour Name 	uint8_t               unused:7;
3921*5113495bSYour Name 	uint16_t                 size:15;
3922*5113495bSYour Name 	uint16_t                fixed:1;
3923*5113495bSYour Name 	uint16_t            max_msdu_size;
3924*5113495bSYour Name 	uint32_t            min_service_int;
3925*5113495bSYour Name 	uint32_t            max_service_int;
3926*5113495bSYour Name 	uint32_t            inactivity_int;
3927*5113495bSYour Name 	uint32_t            suspension_int;
3928*5113495bSYour Name 	uint32_t            service_start_time;
3929*5113495bSYour Name 	uint32_t            min_data_rate;
3930*5113495bSYour Name 	uint32_t            mean_data_rate;
3931*5113495bSYour Name 	uint32_t            peak_data_rate;
3932*5113495bSYour Name 	uint32_t            burst_size;
3933*5113495bSYour Name 	uint32_t            delay_bound;
3934*5113495bSYour Name 	uint32_t            min_phy_rate;
3935*5113495bSYour Name 	uint16_t            surplus_bw_allowance;
3936*5113495bSYour Name 	uint16_t            medium_time;
3937*5113495bSYour Name } tDot11fIETSPEC;
3938*5113495bSYour Name 
3939*5113495bSYour Name #define DOT11F_EID_TSPEC (13)
3940*5113495bSYour Name 
3941*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
3942*5113495bSYour Name #define DOT11F_IE_TSPEC_MIN_LEN (55)
3943*5113495bSYour Name 
3944*5113495bSYour Name #define DOT11F_IE_TSPEC_MAX_LEN (55)
3945*5113495bSYour Name 
3946*5113495bSYour Name #ifdef __cplusplus
3947*5113495bSYour Name extern "C" {
3948*5113495bSYour Name #endif /* C++ */
3949*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_tspec(
3950*5113495bSYour Name 	tpAniSirGlobal,
3951*5113495bSYour Name 	uint8_t *,
3952*5113495bSYour Name 	uint8_t,
3953*5113495bSYour Name 	tDot11fIETSPEC*,
3954*5113495bSYour Name 	bool);
3955*5113495bSYour Name 
3956*5113495bSYour Name uint32_t dot11f_pack_ie_tspec(
3957*5113495bSYour Name 	tpAniSirGlobal,
3958*5113495bSYour Name 	tDot11fIETSPEC *,
3959*5113495bSYour Name 	uint8_t *,
3960*5113495bSYour Name 	uint32_t,
3961*5113495bSYour Name 	uint32_t*);
3962*5113495bSYour Name 
3963*5113495bSYour Name uint32_t dot11f_get_packed_ie_TSPEC(
3964*5113495bSYour Name 	tpAniSirGlobal,
3965*5113495bSYour Name 	tDot11fIETSPEC *,
3966*5113495bSYour Name 	uint32_t*);
3967*5113495bSYour Name 
3968*5113495bSYour Name #ifdef __cplusplus
3969*5113495bSYour Name }; /* End extern "C". */
3970*5113495bSYour Name #endif /* C++ */
3971*5113495bSYour Name 
3972*5113495bSYour Name /* EID 191 (0xbf) */
3973*5113495bSYour Name typedef struct sDot11fIEVHTCaps {
3974*5113495bSYour Name 	uint8_t             present;
3975*5113495bSYour Name 	uint32_t           maxMPDULen:2;
3976*5113495bSYour Name 	uint32_t supportedChannelWidthSet:2;
3977*5113495bSYour Name 	uint32_t        ldpcCodingCap:1;
3978*5113495bSYour Name 	uint32_t         shortGI80MHz:1;
3979*5113495bSYour Name 	uint32_t shortGI160and80plus80MHz:1;
3980*5113495bSYour Name 	uint32_t               txSTBC:1;
3981*5113495bSYour Name 	uint32_t               rxSTBC:3;
3982*5113495bSYour Name 	uint32_t      suBeamFormerCap:1;
3983*5113495bSYour Name 	uint32_t      suBeamformeeCap:1;
3984*5113495bSYour Name 	uint32_t csnofBeamformerAntSup:3;
3985*5113495bSYour Name 	uint32_t       numSoundingDim:3;
3986*5113495bSYour Name 	uint32_t      muBeamformerCap:1;
3987*5113495bSYour Name 	uint32_t      muBeamformeeCap:1;
3988*5113495bSYour Name 	uint32_t            vhtTXOPPS:1;
3989*5113495bSYour Name 	uint32_t            htcVHTCap:1;
3990*5113495bSYour Name 	uint32_t       maxAMPDULenExp:3;
3991*5113495bSYour Name 	uint32_t      vhtLinkAdaptCap:2;
3992*5113495bSYour Name 	uint32_t         rxAntPattern:1;
3993*5113495bSYour Name 	uint32_t         txAntPattern:1;
3994*5113495bSYour Name 	uint32_t extended_nss_bw_supp:2;
3995*5113495bSYour Name 	uint16_t            rxMCSMap;
3996*5113495bSYour Name 	uint16_t    rxHighSupDataRate:13;
3997*5113495bSYour Name 	uint16_t       max_nsts_total:3;
3998*5113495bSYour Name 	uint16_t            txMCSMap;
3999*5113495bSYour Name 	uint16_t        txSupDataRate:13;
4000*5113495bSYour Name 	uint16_t vht_extended_nss_bw_cap:1;
4001*5113495bSYour Name 	uint16_t             reserved:2;
4002*5113495bSYour Name } tDot11fIEVHTCaps;
4003*5113495bSYour Name 
4004*5113495bSYour Name #define DOT11F_EID_VHTCAPS (191)
4005*5113495bSYour Name 
4006*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4007*5113495bSYour Name #define DOT11F_IE_VHTCAPS_MIN_LEN (12)
4008*5113495bSYour Name 
4009*5113495bSYour Name #define DOT11F_IE_VHTCAPS_MAX_LEN (12)
4010*5113495bSYour Name 
4011*5113495bSYour Name #ifdef __cplusplus
4012*5113495bSYour Name extern "C" {
4013*5113495bSYour Name #endif /* C++ */
4014*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_vht_caps(
4015*5113495bSYour Name 	tpAniSirGlobal,
4016*5113495bSYour Name 	uint8_t *,
4017*5113495bSYour Name 	uint8_t,
4018*5113495bSYour Name 	tDot11fIEVHTCaps*,
4019*5113495bSYour Name 	bool);
4020*5113495bSYour Name 
4021*5113495bSYour Name uint32_t dot11f_pack_ie_vht_caps(
4022*5113495bSYour Name 	tpAniSirGlobal,
4023*5113495bSYour Name 	tDot11fIEVHTCaps *,
4024*5113495bSYour Name 	uint8_t *,
4025*5113495bSYour Name 	uint32_t,
4026*5113495bSYour Name 	uint32_t*);
4027*5113495bSYour Name 
4028*5113495bSYour Name uint32_t dot11f_get_packed_ie_VHTCaps(
4029*5113495bSYour Name 	tpAniSirGlobal,
4030*5113495bSYour Name 	tDot11fIEVHTCaps *,
4031*5113495bSYour Name 	uint32_t*);
4032*5113495bSYour Name 
4033*5113495bSYour Name #ifdef __cplusplus
4034*5113495bSYour Name }; /* End extern "C". */
4035*5113495bSYour Name #endif /* C++ */
4036*5113495bSYour Name 
4037*5113495bSYour Name /* EID 192 (0xc0) */
4038*5113495bSYour Name typedef struct sDot11fIEVHTOperation {
4039*5113495bSYour Name 	uint8_t             present;
4040*5113495bSYour Name 	uint8_t             chanWidth;
4041*5113495bSYour Name 	uint8_t             chan_center_freq_seg0;
4042*5113495bSYour Name 	uint8_t             chan_center_freq_seg1;
4043*5113495bSYour Name 	uint16_t            basicMCSSet;
4044*5113495bSYour Name } tDot11fIEVHTOperation;
4045*5113495bSYour Name 
4046*5113495bSYour Name #define DOT11F_EID_VHTOPERATION (192)
4047*5113495bSYour Name 
4048*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4049*5113495bSYour Name #define DOT11F_IE_VHTOPERATION_MIN_LEN (5)
4050*5113495bSYour Name 
4051*5113495bSYour Name #define DOT11F_IE_VHTOPERATION_MAX_LEN (5)
4052*5113495bSYour Name 
4053*5113495bSYour Name #ifdef __cplusplus
4054*5113495bSYour Name extern "C" {
4055*5113495bSYour Name #endif /* C++ */
4056*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_vht_operation(
4057*5113495bSYour Name 	tpAniSirGlobal,
4058*5113495bSYour Name 	uint8_t *,
4059*5113495bSYour Name 	uint8_t,
4060*5113495bSYour Name 	tDot11fIEVHTOperation*,
4061*5113495bSYour Name 	bool);
4062*5113495bSYour Name 
4063*5113495bSYour Name uint32_t dot11f_pack_ie_vht_operation(
4064*5113495bSYour Name 	tpAniSirGlobal,
4065*5113495bSYour Name 	tDot11fIEVHTOperation *,
4066*5113495bSYour Name 	uint8_t *,
4067*5113495bSYour Name 	uint32_t,
4068*5113495bSYour Name 	uint32_t*);
4069*5113495bSYour Name 
4070*5113495bSYour Name uint32_t dot11f_get_packed_ie_VHTOperation(
4071*5113495bSYour Name 	tpAniSirGlobal,
4072*5113495bSYour Name 	tDot11fIEVHTOperation *,
4073*5113495bSYour Name 	uint32_t*);
4074*5113495bSYour Name 
4075*5113495bSYour Name #ifdef __cplusplus
4076*5113495bSYour Name }; /* End extern "C". */
4077*5113495bSYour Name #endif /* C++ */
4078*5113495bSYour Name 
4079*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x09} */
4080*5113495bSYour Name typedef struct sDot11fIEWMMSchedule {
4081*5113495bSYour Name 	uint8_t             present;
4082*5113495bSYour Name 	uint8_t             version /* Must be 1! */;
4083*5113495bSYour Name 	uint16_t          aggregation:1;
4084*5113495bSYour Name 	uint16_t                 tsid:4;
4085*5113495bSYour Name 	uint16_t            direction:2;
4086*5113495bSYour Name 	uint16_t             reserved:9;
4087*5113495bSYour Name 	uint32_t            service_start_time;
4088*5113495bSYour Name 	uint32_t            service_interval;
4089*5113495bSYour Name 	uint16_t            max_service_dur;
4090*5113495bSYour Name 	uint16_t            spec_interval;
4091*5113495bSYour Name } tDot11fIEWMMSchedule;
4092*5113495bSYour Name 
4093*5113495bSYour Name #define DOT11F_EID_WMMSCHEDULE (221)
4094*5113495bSYour Name 
4095*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4096*5113495bSYour Name #define DOT11F_IE_WMMSCHEDULE_MIN_LEN (20)
4097*5113495bSYour Name 
4098*5113495bSYour Name #define DOT11F_IE_WMMSCHEDULE_MAX_LEN (20)
4099*5113495bSYour Name 
4100*5113495bSYour Name #ifdef __cplusplus
4101*5113495bSYour Name extern "C" {
4102*5113495bSYour Name #endif /* C++ */
4103*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wmm_schedule(
4104*5113495bSYour Name 	tpAniSirGlobal,
4105*5113495bSYour Name 	uint8_t *,
4106*5113495bSYour Name 	uint8_t,
4107*5113495bSYour Name 	tDot11fIEWMMSchedule*,
4108*5113495bSYour Name 	bool);
4109*5113495bSYour Name 
4110*5113495bSYour Name uint32_t dot11f_pack_ie_wmm_schedule(
4111*5113495bSYour Name 	tpAniSirGlobal,
4112*5113495bSYour Name 	tDot11fIEWMMSchedule *,
4113*5113495bSYour Name 	uint8_t *,
4114*5113495bSYour Name 	uint32_t,
4115*5113495bSYour Name 	uint32_t*);
4116*5113495bSYour Name 
4117*5113495bSYour Name uint32_t dot11f_get_packed_ie_WMMSchedule(
4118*5113495bSYour Name 	tpAniSirGlobal,
4119*5113495bSYour Name 	tDot11fIEWMMSchedule *,
4120*5113495bSYour Name 	uint32_t*);
4121*5113495bSYour Name 
4122*5113495bSYour Name #ifdef __cplusplus
4123*5113495bSYour Name }; /* End extern "C". */
4124*5113495bSYour Name #endif /* C++ */
4125*5113495bSYour Name 
4126*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x06} */
4127*5113495bSYour Name typedef struct sDot11fIEWMMTCLAS {
4128*5113495bSYour Name 	uint8_t             present;
4129*5113495bSYour Name 	uint8_t             version /* Must be 1! */;
4130*5113495bSYour Name 	uint8_t             user_priority;
4131*5113495bSYour Name 	uint8_t             classifier_type;
4132*5113495bSYour Name 	uint8_t             classifier_mask;
4133*5113495bSYour Name 	union {
4134*5113495bSYour Name 		struct {
4135*5113495bSYour Name 			uint8_t source[6];
4136*5113495bSYour Name 			uint8_t dest[6];
4137*5113495bSYour Name 			uint16_t type;
4138*5113495bSYour Name 		} EthParams; /* classifier_type = 0 */
4139*5113495bSYour Name 		struct {
4140*5113495bSYour Name 			uint8_t version;
4141*5113495bSYour Name 			union {
4142*5113495bSYour Name 				struct {
4143*5113495bSYour Name 					uint8_t source[4];
4144*5113495bSYour Name 					uint8_t dest[4];
4145*5113495bSYour Name 					uint16_t src_port;
4146*5113495bSYour Name 					uint16_t dest_port;
4147*5113495bSYour Name 					uint8_t DSCP;
4148*5113495bSYour Name 					uint8_t proto;
4149*5113495bSYour Name 					uint8_t reserved;
4150*5113495bSYour Name 				} IpV4Params; /* version = 4 */
4151*5113495bSYour Name 				struct {
4152*5113495bSYour Name 					uint8_t source[16];
4153*5113495bSYour Name 					uint8_t dest[16];
4154*5113495bSYour Name 					uint16_t src_port;
4155*5113495bSYour Name 					uint16_t dest_port;
4156*5113495bSYour Name 					uint8_t flow_label[3];
4157*5113495bSYour Name 				} IpV6Params; /* version = 6 */
4158*5113495bSYour Name 			} params;
4159*5113495bSYour Name 		} IpParams; /* classifier_type = 1 */
4160*5113495bSYour Name 		struct {
4161*5113495bSYour Name 			uint16_t tag_type;
4162*5113495bSYour Name 		} Params8021dq; /* classifier_type = 2 */
4163*5113495bSYour Name 	} info;
4164*5113495bSYour Name } tDot11fIEWMMTCLAS;
4165*5113495bSYour Name 
4166*5113495bSYour Name #define DOT11F_EID_WMMTCLAS (221)
4167*5113495bSYour Name 
4168*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4169*5113495bSYour Name #define DOT11F_IE_WMMTCLAS_MIN_LEN (11)
4170*5113495bSYour Name 
4171*5113495bSYour Name #define DOT11F_IE_WMMTCLAS_MAX_LEN (49)
4172*5113495bSYour Name 
4173*5113495bSYour Name #ifdef __cplusplus
4174*5113495bSYour Name extern "C" {
4175*5113495bSYour Name #endif /* C++ */
4176*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wmmtclas(
4177*5113495bSYour Name 	tpAniSirGlobal,
4178*5113495bSYour Name 	uint8_t *,
4179*5113495bSYour Name 	uint8_t,
4180*5113495bSYour Name 	tDot11fIEWMMTCLAS*,
4181*5113495bSYour Name 	bool);
4182*5113495bSYour Name 
4183*5113495bSYour Name uint32_t dot11f_pack_ie_wmmtclas(
4184*5113495bSYour Name 	tpAniSirGlobal,
4185*5113495bSYour Name 	tDot11fIEWMMTCLAS *,
4186*5113495bSYour Name 	uint8_t *,
4187*5113495bSYour Name 	uint32_t,
4188*5113495bSYour Name 	uint32_t*);
4189*5113495bSYour Name 
4190*5113495bSYour Name uint32_t dot11f_get_packed_iewmmtclas(
4191*5113495bSYour Name 	tpAniSirGlobal,
4192*5113495bSYour Name 	tDot11fIEWMMTCLAS *,
4193*5113495bSYour Name 	uint32_t*);
4194*5113495bSYour Name 
4195*5113495bSYour Name #ifdef __cplusplus
4196*5113495bSYour Name }; /* End extern "C". */
4197*5113495bSYour Name #endif /* C++ */
4198*5113495bSYour Name 
4199*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x07} */
4200*5113495bSYour Name typedef struct sDot11fIEWMMTCLASPROC {
4201*5113495bSYour Name 	uint8_t             present;
4202*5113495bSYour Name 	uint8_t             version /* Must be 1! */;
4203*5113495bSYour Name 	uint8_t             processing;
4204*5113495bSYour Name } tDot11fIEWMMTCLASPROC;
4205*5113495bSYour Name 
4206*5113495bSYour Name #define DOT11F_EID_WMMTCLASPROC (221)
4207*5113495bSYour Name 
4208*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4209*5113495bSYour Name #define DOT11F_IE_WMMTCLASPROC_MIN_LEN (7)
4210*5113495bSYour Name 
4211*5113495bSYour Name #define DOT11F_IE_WMMTCLASPROC_MAX_LEN (7)
4212*5113495bSYour Name 
4213*5113495bSYour Name #ifdef __cplusplus
4214*5113495bSYour Name extern "C" {
4215*5113495bSYour Name #endif /* C++ */
4216*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wmmtclasproc(
4217*5113495bSYour Name 	tpAniSirGlobal,
4218*5113495bSYour Name 	uint8_t *,
4219*5113495bSYour Name 	uint8_t,
4220*5113495bSYour Name 	tDot11fIEWMMTCLASPROC*,
4221*5113495bSYour Name 	bool);
4222*5113495bSYour Name 
4223*5113495bSYour Name uint32_t dot11f_pack_ie_wmmtclasproc(
4224*5113495bSYour Name 	tpAniSirGlobal,
4225*5113495bSYour Name 	tDot11fIEWMMTCLASPROC *,
4226*5113495bSYour Name 	uint8_t *,
4227*5113495bSYour Name 	uint32_t,
4228*5113495bSYour Name 	uint32_t*);
4229*5113495bSYour Name 
4230*5113495bSYour Name uint32_t dot11f_get_packed_iewmmtclasPROC(
4231*5113495bSYour Name 	tpAniSirGlobal,
4232*5113495bSYour Name 	tDot11fIEWMMTCLASPROC *,
4233*5113495bSYour Name 	uint32_t*);
4234*5113495bSYour Name 
4235*5113495bSYour Name #ifdef __cplusplus
4236*5113495bSYour Name }; /* End extern "C". */
4237*5113495bSYour Name #endif /* C++ */
4238*5113495bSYour Name 
4239*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x08} */
4240*5113495bSYour Name typedef struct sDot11fIEWMMTSDelay {
4241*5113495bSYour Name 	uint8_t             present;
4242*5113495bSYour Name 	uint8_t             version /* Must be 1! */;
4243*5113495bSYour Name 	uint32_t            delay;
4244*5113495bSYour Name } tDot11fIEWMMTSDelay;
4245*5113495bSYour Name 
4246*5113495bSYour Name #define DOT11F_EID_WMMTSDELAY (221)
4247*5113495bSYour Name 
4248*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4249*5113495bSYour Name #define DOT11F_IE_WMMTSDELAY_MIN_LEN (10)
4250*5113495bSYour Name 
4251*5113495bSYour Name #define DOT11F_IE_WMMTSDELAY_MAX_LEN (10)
4252*5113495bSYour Name 
4253*5113495bSYour Name #ifdef __cplusplus
4254*5113495bSYour Name extern "C" {
4255*5113495bSYour Name #endif /* C++ */
4256*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wmmts_delay(
4257*5113495bSYour Name 	tpAniSirGlobal,
4258*5113495bSYour Name 	uint8_t *,
4259*5113495bSYour Name 	uint8_t,
4260*5113495bSYour Name 	tDot11fIEWMMTSDelay*,
4261*5113495bSYour Name 	bool);
4262*5113495bSYour Name 
4263*5113495bSYour Name uint32_t dot11f_pack_ie_wmmts_delay(
4264*5113495bSYour Name 	tpAniSirGlobal,
4265*5113495bSYour Name 	tDot11fIEWMMTSDelay *,
4266*5113495bSYour Name 	uint8_t *,
4267*5113495bSYour Name 	uint32_t,
4268*5113495bSYour Name 	uint32_t*);
4269*5113495bSYour Name 
4270*5113495bSYour Name uint32_t dot11f_get_packed_ie_WMMTSDelay(
4271*5113495bSYour Name 	tpAniSirGlobal,
4272*5113495bSYour Name 	tDot11fIEWMMTSDelay *,
4273*5113495bSYour Name 	uint32_t*);
4274*5113495bSYour Name 
4275*5113495bSYour Name #ifdef __cplusplus
4276*5113495bSYour Name }; /* End extern "C". */
4277*5113495bSYour Name #endif /* C++ */
4278*5113495bSYour Name 
4279*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x02} */
4280*5113495bSYour Name typedef struct sDot11fIEWMMTSPEC {
4281*5113495bSYour Name 	uint8_t             present;
4282*5113495bSYour Name 	uint8_t             version /* Must be 1! */;
4283*5113495bSYour Name 	uint16_t         traffic_type:1;
4284*5113495bSYour Name 	uint16_t                 tsid:4;
4285*5113495bSYour Name 	uint16_t            direction:2;
4286*5113495bSYour Name 	uint16_t        access_policy:2;
4287*5113495bSYour Name 	uint16_t          aggregation:1;
4288*5113495bSYour Name 	uint16_t                  psb:1;
4289*5113495bSYour Name 	uint16_t        user_priority:3;
4290*5113495bSYour Name 	uint16_t       tsinfo_ack_pol:2;
4291*5113495bSYour Name 	uint8_t          tsinfo_rsvd:7;
4292*5113495bSYour Name 	uint8_t      burst_size_defn:1;
4293*5113495bSYour Name 	uint16_t                 size:15;
4294*5113495bSYour Name 	uint16_t                fixed:1;
4295*5113495bSYour Name 	uint16_t            max_msdu_size;
4296*5113495bSYour Name 	uint32_t            min_service_int;
4297*5113495bSYour Name 	uint32_t            max_service_int;
4298*5113495bSYour Name 	uint32_t            inactivity_int;
4299*5113495bSYour Name 	uint32_t            suspension_int;
4300*5113495bSYour Name 	uint32_t            service_start_time;
4301*5113495bSYour Name 	uint32_t            min_data_rate;
4302*5113495bSYour Name 	uint32_t            mean_data_rate;
4303*5113495bSYour Name 	uint32_t            peak_data_rate;
4304*5113495bSYour Name 	uint32_t            burst_size;
4305*5113495bSYour Name 	uint32_t            delay_bound;
4306*5113495bSYour Name 	uint32_t            min_phy_rate;
4307*5113495bSYour Name 	uint16_t            surplus_bw_allowance;
4308*5113495bSYour Name 	uint16_t            medium_time;
4309*5113495bSYour Name } tDot11fIEWMMTSPEC;
4310*5113495bSYour Name 
4311*5113495bSYour Name #define DOT11F_EID_WMMTSPEC (221)
4312*5113495bSYour Name 
4313*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4314*5113495bSYour Name #define DOT11F_IE_WMMTSPEC_MIN_LEN (61)
4315*5113495bSYour Name 
4316*5113495bSYour Name #define DOT11F_IE_WMMTSPEC_MAX_LEN (61)
4317*5113495bSYour Name 
4318*5113495bSYour Name #ifdef __cplusplus
4319*5113495bSYour Name extern "C" {
4320*5113495bSYour Name #endif /* C++ */
4321*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wmmtspec(
4322*5113495bSYour Name 	tpAniSirGlobal,
4323*5113495bSYour Name 	uint8_t *,
4324*5113495bSYour Name 	uint8_t,
4325*5113495bSYour Name 	tDot11fIEWMMTSPEC*,
4326*5113495bSYour Name 	bool);
4327*5113495bSYour Name 
4328*5113495bSYour Name uint32_t dot11f_pack_ie_wmmtspec(
4329*5113495bSYour Name 	tpAniSirGlobal,
4330*5113495bSYour Name 	tDot11fIEWMMTSPEC *,
4331*5113495bSYour Name 	uint8_t *,
4332*5113495bSYour Name 	uint32_t,
4333*5113495bSYour Name 	uint32_t*);
4334*5113495bSYour Name 
4335*5113495bSYour Name uint32_t dot11f_get_packed_ie_WMMTSPEC(
4336*5113495bSYour Name 	tpAniSirGlobal,
4337*5113495bSYour Name 	tDot11fIEWMMTSPEC *,
4338*5113495bSYour Name 	uint32_t*);
4339*5113495bSYour Name 
4340*5113495bSYour Name #ifdef __cplusplus
4341*5113495bSYour Name }; /* End extern "C". */
4342*5113495bSYour Name #endif /* C++ */
4343*5113495bSYour Name 
4344*5113495bSYour Name /* EID 194 (0xc2) */
4345*5113495bSYour Name typedef struct sDot11fIEWiderBWChanSwitchAnn {
4346*5113495bSYour Name 	uint8_t             present;
4347*5113495bSYour Name 	uint8_t             newChanWidth;
4348*5113495bSYour Name 	uint8_t             newCenterChanFreq0;
4349*5113495bSYour Name 	uint8_t             newCenterChanFreq1;
4350*5113495bSYour Name } tDot11fIEWiderBWChanSwitchAnn;
4351*5113495bSYour Name 
4352*5113495bSYour Name #define DOT11F_EID_WIDERBWCHANSWITCHANN (194)
4353*5113495bSYour Name 
4354*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4355*5113495bSYour Name #define DOT11F_IE_WIDERBWCHANSWITCHANN_MIN_LEN (3)
4356*5113495bSYour Name 
4357*5113495bSYour Name #define DOT11F_IE_WIDERBWCHANSWITCHANN_MAX_LEN (3)
4358*5113495bSYour Name 
4359*5113495bSYour Name #ifdef __cplusplus
4360*5113495bSYour Name extern "C" {
4361*5113495bSYour Name #endif /* C++ */
4362*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wider_bw_chan_switch_ann(
4363*5113495bSYour Name 	tpAniSirGlobal,
4364*5113495bSYour Name 	uint8_t *,
4365*5113495bSYour Name 	uint8_t,
4366*5113495bSYour Name 	tDot11fIEWiderBWChanSwitchAnn*,
4367*5113495bSYour Name 	bool);
4368*5113495bSYour Name 
4369*5113495bSYour Name uint32_t dot11f_pack_ie_wider_bw_chan_switch_ann(
4370*5113495bSYour Name 	tpAniSirGlobal,
4371*5113495bSYour Name 	tDot11fIEWiderBWChanSwitchAnn *,
4372*5113495bSYour Name 	uint8_t *,
4373*5113495bSYour Name 	uint32_t,
4374*5113495bSYour Name 	uint32_t*);
4375*5113495bSYour Name 
4376*5113495bSYour Name uint32_t dot11f_get_packed_ie_WiderBWChanSwitchAnn(
4377*5113495bSYour Name 	tpAniSirGlobal,
4378*5113495bSYour Name 	tDot11fIEWiderBWChanSwitchAnn *,
4379*5113495bSYour Name 	uint32_t*);
4380*5113495bSYour Name 
4381*5113495bSYour Name #ifdef __cplusplus
4382*5113495bSYour Name }; /* End extern "C". */
4383*5113495bSYour Name #endif /* C++ */
4384*5113495bSYour Name 
4385*5113495bSYour Name /* EID 1 (0x01) */
4386*5113495bSYour Name typedef struct sDot11fIEazimuth_req {
4387*5113495bSYour Name 	uint8_t             present;
4388*5113495bSYour Name 	uint8_t             request;
4389*5113495bSYour Name } tDot11fIEazimuth_req;
4390*5113495bSYour Name 
4391*5113495bSYour Name #define DOT11F_EID_AZIMUTH_REQ (1)
4392*5113495bSYour Name 
4393*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4394*5113495bSYour Name #define DOT11F_IE_AZIMUTH_REQ_MIN_LEN (1)
4395*5113495bSYour Name 
4396*5113495bSYour Name #define DOT11F_IE_AZIMUTH_REQ_MAX_LEN (1)
4397*5113495bSYour Name 
4398*5113495bSYour Name #ifdef __cplusplus
4399*5113495bSYour Name extern "C" {
4400*5113495bSYour Name #endif /* C++ */
4401*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_azimuth_req(
4402*5113495bSYour Name 	tpAniSirGlobal,
4403*5113495bSYour Name 	uint8_t *,
4404*5113495bSYour Name 	uint8_t,
4405*5113495bSYour Name 	tDot11fIEazimuth_req*,
4406*5113495bSYour Name 	bool);
4407*5113495bSYour Name 
4408*5113495bSYour Name uint32_t dot11f_pack_ie_azimuth_req(
4409*5113495bSYour Name 	tpAniSirGlobal,
4410*5113495bSYour Name 	tDot11fIEazimuth_req *,
4411*5113495bSYour Name 	uint8_t *,
4412*5113495bSYour Name 	uint32_t,
4413*5113495bSYour Name 	uint32_t*);
4414*5113495bSYour Name 
4415*5113495bSYour Name uint32_t dot11f_get_packed_ie_azimuth_req(
4416*5113495bSYour Name 	tpAniSirGlobal,
4417*5113495bSYour Name 	tDot11fIEazimuth_req *,
4418*5113495bSYour Name 	uint32_t*);
4419*5113495bSYour Name 
4420*5113495bSYour Name #ifdef __cplusplus
4421*5113495bSYour Name }; /* End extern "C". */
4422*5113495bSYour Name #endif /* C++ */
4423*5113495bSYour Name 
4424*5113495bSYour Name /* EID 2 (0x02) */
4425*5113495bSYour Name typedef struct sDot11fIEbeacon_report_frm_body_fragment_id {
4426*5113495bSYour Name 	uint8_t             present;
4427*5113495bSYour Name 	uint16_t     beacon_report_id:8;
4428*5113495bSYour Name 	uint16_t   fragment_id_number:7;
4429*5113495bSYour Name 	uint16_t       more_fragments:1;
4430*5113495bSYour Name } tDot11fIEbeacon_report_frm_body_fragment_id;
4431*5113495bSYour Name 
4432*5113495bSYour Name #define DOT11F_EID_BEACON_REPORT_FRM_BODY_FRAGMENT_ID (2)
4433*5113495bSYour Name 
4434*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4435*5113495bSYour Name #define DOT11F_IE_BEACON_REPORT_FRM_BODY_FRAGMENT_ID_MIN_LEN (2)
4436*5113495bSYour Name 
4437*5113495bSYour Name #define DOT11F_IE_BEACON_REPORT_FRM_BODY_FRAGMENT_ID_MAX_LEN (2)
4438*5113495bSYour Name 
4439*5113495bSYour Name #ifdef __cplusplus
4440*5113495bSYour Name extern "C" {
4441*5113495bSYour Name #endif /* C++ */
4442*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id(
4443*5113495bSYour Name 	tpAniSirGlobal,
4444*5113495bSYour Name 	uint8_t *,
4445*5113495bSYour Name 	uint8_t,
4446*5113495bSYour Name 	tDot11fIEbeacon_report_frm_body_fragment_id*,
4447*5113495bSYour Name 	bool);
4448*5113495bSYour Name 
4449*5113495bSYour Name uint32_t dot11f_pack_ie_beacon_report_frm_body_fragment_id(
4450*5113495bSYour Name 	tpAniSirGlobal,
4451*5113495bSYour Name 	tDot11fIEbeacon_report_frm_body_fragment_id *,
4452*5113495bSYour Name 	uint8_t *,
4453*5113495bSYour Name 	uint32_t,
4454*5113495bSYour Name 	uint32_t*);
4455*5113495bSYour Name 
4456*5113495bSYour Name uint32_t dot11f_get_packed_ie_beacon_report_frm_body_fragment_id(
4457*5113495bSYour Name 	tpAniSirGlobal,
4458*5113495bSYour Name 	tDot11fIEbeacon_report_frm_body_fragment_id *,
4459*5113495bSYour Name 	uint32_t*);
4460*5113495bSYour Name 
4461*5113495bSYour Name #ifdef __cplusplus
4462*5113495bSYour Name }; /* End extern "C". */
4463*5113495bSYour Name #endif /* C++ */
4464*5113495bSYour Name 
4465*5113495bSYour Name /* EID 255 (0xff) Extended EID 135 (0x87) */
4466*5113495bSYour Name typedef struct sDot11fIEbw_ind_element {
4467*5113495bSYour Name 	uint8_t             present;
4468*5113495bSYour Name 	uint8_t             reserved:1;
4469*5113495bSYour Name 	uint8_t disabled_sub_chan_bitmap_present:1;
4470*5113495bSYour Name 	uint8_t           reserved_1:6;
4471*5113495bSYour Name 	uint8_t        channel_width:3;
4472*5113495bSYour Name 	uint8_t           reserved_2:5;
4473*5113495bSYour Name 	uint8_t             ccfs0;
4474*5113495bSYour Name 	uint8_t             ccfs1;
4475*5113495bSYour Name 	uint8_t             disabled_sub_chan_bitmap[1][2];
4476*5113495bSYour Name } tDot11fIEbw_ind_element;
4477*5113495bSYour Name 
4478*5113495bSYour Name #define DOT11F_EID_BW_IND_ELEMENT (255)
4479*5113495bSYour Name 
4480*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4481*5113495bSYour Name #define DOT11F_IE_BW_IND_ELEMENT_MIN_LEN (4)
4482*5113495bSYour Name 
4483*5113495bSYour Name #define DOT11F_IE_BW_IND_ELEMENT_MAX_LEN (6)
4484*5113495bSYour Name 
4485*5113495bSYour Name #ifdef __cplusplus
4486*5113495bSYour Name extern "C" {
4487*5113495bSYour Name #endif /* C++ */
4488*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_bw_ind_element(
4489*5113495bSYour Name 	tpAniSirGlobal,
4490*5113495bSYour Name 	uint8_t *,
4491*5113495bSYour Name 	uint8_t,
4492*5113495bSYour Name 	tDot11fIEbw_ind_element*,
4493*5113495bSYour Name 	bool);
4494*5113495bSYour Name 
4495*5113495bSYour Name uint32_t dot11f_pack_ie_bw_ind_element(
4496*5113495bSYour Name 	tpAniSirGlobal,
4497*5113495bSYour Name 	tDot11fIEbw_ind_element *,
4498*5113495bSYour Name 	uint8_t *,
4499*5113495bSYour Name 	uint32_t,
4500*5113495bSYour Name 	uint32_t*);
4501*5113495bSYour Name 
4502*5113495bSYour Name uint32_t dot11f_get_packed_ie_bw_ind_element(
4503*5113495bSYour Name 	tpAniSirGlobal,
4504*5113495bSYour Name 	tDot11fIEbw_ind_element *,
4505*5113495bSYour Name 	uint32_t*);
4506*5113495bSYour Name 
4507*5113495bSYour Name #ifdef __cplusplus
4508*5113495bSYour Name }; /* End extern "C". */
4509*5113495bSYour Name #endif /* C++ */
4510*5113495bSYour Name 
4511*5113495bSYour Name /* EID 164 (0xa4) */
4512*5113495bSYour Name typedef struct sDot11fIEbw_indication {
4513*5113495bSYour Name 	uint8_t             present;
4514*5113495bSYour Name 	uint8_t             reserved:1;
4515*5113495bSYour Name 	uint8_t disabled_sub_chan_bitmap_present:1;
4516*5113495bSYour Name 	uint8_t           reserved_1:6;
4517*5113495bSYour Name 	uint8_t        channel_width:3;
4518*5113495bSYour Name 	uint8_t           reserved_2:5;
4519*5113495bSYour Name 	uint8_t             ccfs0;
4520*5113495bSYour Name 	uint8_t             ccfs1;
4521*5113495bSYour Name 	uint8_t             disabled_sub_chan_bitmap[1][2];
4522*5113495bSYour Name } tDot11fIEbw_indication;
4523*5113495bSYour Name 
4524*5113495bSYour Name #define DOT11F_EID_BW_INDICATION (164)
4525*5113495bSYour Name 
4526*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4527*5113495bSYour Name #define DOT11F_IE_BW_INDICATION_MIN_LEN (4)
4528*5113495bSYour Name 
4529*5113495bSYour Name #define DOT11F_IE_BW_INDICATION_MAX_LEN (6)
4530*5113495bSYour Name 
4531*5113495bSYour Name #ifdef __cplusplus
4532*5113495bSYour Name extern "C" {
4533*5113495bSYour Name #endif /* C++ */
4534*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_bw_indication(
4535*5113495bSYour Name 	tpAniSirGlobal,
4536*5113495bSYour Name 	uint8_t *,
4537*5113495bSYour Name 	uint8_t,
4538*5113495bSYour Name 	tDot11fIEbw_indication*,
4539*5113495bSYour Name 	bool);
4540*5113495bSYour Name 
4541*5113495bSYour Name uint32_t dot11f_pack_ie_bw_indication(
4542*5113495bSYour Name 	tpAniSirGlobal,
4543*5113495bSYour Name 	tDot11fIEbw_indication *,
4544*5113495bSYour Name 	uint8_t *,
4545*5113495bSYour Name 	uint32_t,
4546*5113495bSYour Name 	uint32_t*);
4547*5113495bSYour Name 
4548*5113495bSYour Name uint32_t dot11f_get_packed_ie_bw_indication(
4549*5113495bSYour Name 	tpAniSirGlobal,
4550*5113495bSYour Name 	tDot11fIEbw_indication *,
4551*5113495bSYour Name 	uint32_t*);
4552*5113495bSYour Name 
4553*5113495bSYour Name #ifdef __cplusplus
4554*5113495bSYour Name }; /* End extern "C". */
4555*5113495bSYour Name #endif /* C++ */
4556*5113495bSYour Name 
4557*5113495bSYour Name /* EID 164 (0xa4) */
4558*5113495bSYour Name typedef struct sDot11fIElast_beacon_report_indication {
4559*5113495bSYour Name 	uint8_t             present;
4560*5113495bSYour Name 	uint8_t             last_fragment;
4561*5113495bSYour Name } tDot11fIElast_beacon_report_indication;
4562*5113495bSYour Name 
4563*5113495bSYour Name #define DOT11F_EID_LAST_BEACON_REPORT_INDICATION (164)
4564*5113495bSYour Name 
4565*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4566*5113495bSYour Name #define DOT11F_IE_LAST_BEACON_REPORT_INDICATION_MIN_LEN (1)
4567*5113495bSYour Name 
4568*5113495bSYour Name #define DOT11F_IE_LAST_BEACON_REPORT_INDICATION_MAX_LEN (1)
4569*5113495bSYour Name 
4570*5113495bSYour Name #ifdef __cplusplus
4571*5113495bSYour Name extern "C" {
4572*5113495bSYour Name #endif /* C++ */
4573*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_last_beacon_report_indication(
4574*5113495bSYour Name 	tpAniSirGlobal,
4575*5113495bSYour Name 	uint8_t *,
4576*5113495bSYour Name 	uint8_t,
4577*5113495bSYour Name 	tDot11fIElast_beacon_report_indication*,
4578*5113495bSYour Name 	bool);
4579*5113495bSYour Name 
4580*5113495bSYour Name uint32_t dot11f_pack_ie_last_beacon_report_indication(
4581*5113495bSYour Name 	tpAniSirGlobal,
4582*5113495bSYour Name 	tDot11fIElast_beacon_report_indication *,
4583*5113495bSYour Name 	uint8_t *,
4584*5113495bSYour Name 	uint32_t,
4585*5113495bSYour Name 	uint32_t*);
4586*5113495bSYour Name 
4587*5113495bSYour Name uint32_t dot11f_get_packed_ie_last_beacon_report_indication(
4588*5113495bSYour Name 	tpAniSirGlobal,
4589*5113495bSYour Name 	tDot11fIElast_beacon_report_indication *,
4590*5113495bSYour Name 	uint32_t*);
4591*5113495bSYour Name 
4592*5113495bSYour Name #ifdef __cplusplus
4593*5113495bSYour Name }; /* End extern "C". */
4594*5113495bSYour Name #endif /* C++ */
4595*5113495bSYour Name 
4596*5113495bSYour Name /* EID 4 (0x04) */
4597*5113495bSYour Name typedef struct sDot11fIEmax_age {
4598*5113495bSYour Name 	uint8_t             present;
4599*5113495bSYour Name 	uint16_t            max_age;
4600*5113495bSYour Name } tDot11fIEmax_age;
4601*5113495bSYour Name 
4602*5113495bSYour Name #define DOT11F_EID_MAX_AGE (4)
4603*5113495bSYour Name 
4604*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4605*5113495bSYour Name #define DOT11F_IE_MAX_AGE_MIN_LEN (2)
4606*5113495bSYour Name 
4607*5113495bSYour Name #define DOT11F_IE_MAX_AGE_MAX_LEN (2)
4608*5113495bSYour Name 
4609*5113495bSYour Name #ifdef __cplusplus
4610*5113495bSYour Name extern "C" {
4611*5113495bSYour Name #endif /* C++ */
4612*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_max_age(
4613*5113495bSYour Name 	tpAniSirGlobal,
4614*5113495bSYour Name 	uint8_t *,
4615*5113495bSYour Name 	uint8_t,
4616*5113495bSYour Name 	tDot11fIEmax_age*,
4617*5113495bSYour Name 	bool);
4618*5113495bSYour Name 
4619*5113495bSYour Name uint32_t dot11f_pack_ie_max_age(
4620*5113495bSYour Name 	tpAniSirGlobal,
4621*5113495bSYour Name 	tDot11fIEmax_age *,
4622*5113495bSYour Name 	uint8_t *,
4623*5113495bSYour Name 	uint32_t,
4624*5113495bSYour Name 	uint32_t*);
4625*5113495bSYour Name 
4626*5113495bSYour Name uint32_t dot11f_get_packed_ie_max_age(
4627*5113495bSYour Name 	tpAniSirGlobal,
4628*5113495bSYour Name 	tDot11fIEmax_age *,
4629*5113495bSYour Name 	uint32_t*);
4630*5113495bSYour Name 
4631*5113495bSYour Name #ifdef __cplusplus
4632*5113495bSYour Name }; /* End extern "C". */
4633*5113495bSYour Name #endif /* C++ */
4634*5113495bSYour Name 
4635*5113495bSYour Name /* EID 76 (0x4c) */
4636*5113495bSYour Name typedef struct sDot11fIEmscs_status {
4637*5113495bSYour Name 	uint8_t             present;
4638*5113495bSYour Name 	uint8_t             status_code;
4639*5113495bSYour Name } tDot11fIEmscs_status;
4640*5113495bSYour Name 
4641*5113495bSYour Name #define DOT11F_EID_MSCS_STATUS (76)
4642*5113495bSYour Name 
4643*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4644*5113495bSYour Name #define DOT11F_IE_MSCS_STATUS_MIN_LEN (1)
4645*5113495bSYour Name 
4646*5113495bSYour Name #define DOT11F_IE_MSCS_STATUS_MAX_LEN (1)
4647*5113495bSYour Name 
4648*5113495bSYour Name #ifdef __cplusplus
4649*5113495bSYour Name extern "C" {
4650*5113495bSYour Name #endif /* C++ */
4651*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_mscs_status(
4652*5113495bSYour Name 	tpAniSirGlobal,
4653*5113495bSYour Name 	uint8_t *,
4654*5113495bSYour Name 	uint8_t,
4655*5113495bSYour Name 	tDot11fIEmscs_status*,
4656*5113495bSYour Name 	bool);
4657*5113495bSYour Name 
4658*5113495bSYour Name uint32_t dot11f_pack_ie_mscs_status(
4659*5113495bSYour Name 	tpAniSirGlobal,
4660*5113495bSYour Name 	tDot11fIEmscs_status *,
4661*5113495bSYour Name 	uint8_t *,
4662*5113495bSYour Name 	uint32_t,
4663*5113495bSYour Name 	uint32_t*);
4664*5113495bSYour Name 
4665*5113495bSYour Name uint32_t dot11f_get_packed_ie_mscs_status(
4666*5113495bSYour Name 	tpAniSirGlobal,
4667*5113495bSYour Name 	tDot11fIEmscs_status *,
4668*5113495bSYour Name 	uint32_t*);
4669*5113495bSYour Name 
4670*5113495bSYour Name #ifdef __cplusplus
4671*5113495bSYour Name }; /* End extern "C". */
4672*5113495bSYour Name #endif /* C++ */
4673*5113495bSYour Name 
4674*5113495bSYour Name /* EID 52 (0x34) */
4675*5113495bSYour Name typedef struct sDot11fIEneighbor_rpt {
4676*5113495bSYour Name 	uint8_t                             present;
4677*5113495bSYour Name 	uint8_t                             bssid[6];
4678*5113495bSYour Name 	uint8_t                       APReachability:2;
4679*5113495bSYour Name 	uint8_t                             Security:1;
4680*5113495bSYour Name 	uint8_t                             KeyScope:1;
4681*5113495bSYour Name 	uint8_t                          SpecMgmtCap:1;
4682*5113495bSYour Name 	uint8_t                               QosCap:1;
4683*5113495bSYour Name 	uint8_t                                 apsd:1;
4684*5113495bSYour Name 	uint8_t                                  rrm:1;
4685*5113495bSYour Name 	uint8_t                            DelayedBA:1;
4686*5113495bSYour Name 	uint8_t                                ImmBA:1;
4687*5113495bSYour Name 	uint8_t                       MobilityDomain:1;
4688*5113495bSYour Name 	uint8_t                             reserved:5;
4689*5113495bSYour Name 	uint16_t                            reserved1;
4690*5113495bSYour Name 	uint8_t                             regulatoryClass;
4691*5113495bSYour Name 	uint8_t                             channel;
4692*5113495bSYour Name 	uint8_t                             PhyType;
4693*5113495bSYour Name 	tDot11fIETSFInfo                    TSFInfo;
4694*5113495bSYour Name 	tDot11fIECondensedCountryStr        CondensedCountryStr;
4695*5113495bSYour Name 	tDot11fIEMeasurementPilot           MeasurementPilot;
4696*5113495bSYour Name 	tDot11fIERRMEnabledCap              RRMEnabledCap;
4697*5113495bSYour Name 	tDot11fIEMultiBssid                 MultiBssid;
4698*5113495bSYour Name } tDot11fIEneighbor_rpt;
4699*5113495bSYour Name 
4700*5113495bSYour Name #define DOT11F_EID_NEIGHBOR_RPT (52)
4701*5113495bSYour Name 
4702*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4703*5113495bSYour Name #define DOT11F_IE_NEIGHBOR_RPT_MIN_LEN (13)
4704*5113495bSYour Name 
4705*5113495bSYour Name #define DOT11F_IE_NEIGHBOR_RPT_MAX_LEN (546)
4706*5113495bSYour Name 
4707*5113495bSYour Name #ifdef __cplusplus
4708*5113495bSYour Name extern "C" {
4709*5113495bSYour Name #endif /* C++ */
4710*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_neighbor_rpt(
4711*5113495bSYour Name 	tpAniSirGlobal,
4712*5113495bSYour Name 	uint8_t *,
4713*5113495bSYour Name 	uint8_t,
4714*5113495bSYour Name 	tDot11fIEneighbor_rpt*,
4715*5113495bSYour Name 	bool);
4716*5113495bSYour Name 
4717*5113495bSYour Name uint32_t dot11f_pack_ie_neighbor_rpt(
4718*5113495bSYour Name 	tpAniSirGlobal,
4719*5113495bSYour Name 	tDot11fIEneighbor_rpt *,
4720*5113495bSYour Name 	uint8_t *,
4721*5113495bSYour Name 	uint32_t,
4722*5113495bSYour Name 	uint32_t*);
4723*5113495bSYour Name 
4724*5113495bSYour Name uint32_t dot11f_get_packed_ie_neighbor_rpt(
4725*5113495bSYour Name 	tpAniSirGlobal,
4726*5113495bSYour Name 	tDot11fIEneighbor_rpt *,
4727*5113495bSYour Name 	uint32_t*);
4728*5113495bSYour Name 
4729*5113495bSYour Name #ifdef __cplusplus
4730*5113495bSYour Name }; /* End extern "C". */
4731*5113495bSYour Name #endif /* C++ */
4732*5113495bSYour Name 
4733*5113495bSYour Name /* EID 1 (0x01) */
4734*5113495bSYour Name typedef struct sDot11fIEreporting_reason {
4735*5113495bSYour Name 	uint8_t             present;
4736*5113495bSYour Name 	uint8_t         failed_count:1;
4737*5113495bSYour Name 	uint8_t            fcs_error:1;
4738*5113495bSYour Name 	uint8_t       multiple_retry:1;
4739*5113495bSYour Name 	uint8_t      frame_duplicate:1;
4740*5113495bSYour Name 	uint8_t          rts_failure:1;
4741*5113495bSYour Name 	uint8_t          ack_failure:1;
4742*5113495bSYour Name 	uint8_t                retry:1;
4743*5113495bSYour Name 	uint8_t             reserved:1;
4744*5113495bSYour Name } tDot11fIEreporting_reason;
4745*5113495bSYour Name 
4746*5113495bSYour Name #define DOT11F_EID_REPORTING_REASON (1)
4747*5113495bSYour Name 
4748*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4749*5113495bSYour Name #define DOT11F_IE_REPORTING_REASON_MIN_LEN (1)
4750*5113495bSYour Name 
4751*5113495bSYour Name #define DOT11F_IE_REPORTING_REASON_MAX_LEN (1)
4752*5113495bSYour Name 
4753*5113495bSYour Name #ifdef __cplusplus
4754*5113495bSYour Name extern "C" {
4755*5113495bSYour Name #endif /* C++ */
4756*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_reporting_reason(
4757*5113495bSYour Name 	tpAniSirGlobal,
4758*5113495bSYour Name 	uint8_t *,
4759*5113495bSYour Name 	uint8_t,
4760*5113495bSYour Name 	tDot11fIEreporting_reason*,
4761*5113495bSYour Name 	bool);
4762*5113495bSYour Name 
4763*5113495bSYour Name uint32_t dot11f_pack_ie_reporting_reason(
4764*5113495bSYour Name 	tpAniSirGlobal,
4765*5113495bSYour Name 	tDot11fIEreporting_reason *,
4766*5113495bSYour Name 	uint8_t *,
4767*5113495bSYour Name 	uint32_t,
4768*5113495bSYour Name 	uint32_t*);
4769*5113495bSYour Name 
4770*5113495bSYour Name uint32_t dot11f_get_packed_ie_reporting_reason(
4771*5113495bSYour Name 	tpAniSirGlobal,
4772*5113495bSYour Name 	tDot11fIEreporting_reason *,
4773*5113495bSYour Name 	uint32_t*);
4774*5113495bSYour Name 
4775*5113495bSYour Name #ifdef __cplusplus
4776*5113495bSYour Name }; /* End extern "C". */
4777*5113495bSYour Name #endif /* C++ */
4778*5113495bSYour Name 
4779*5113495bSYour Name /* EID 2 (0x02) */
4780*5113495bSYour Name typedef struct sDot11fIEreq_mac_addr {
4781*5113495bSYour Name 	uint8_t             present;
4782*5113495bSYour Name 	uint8_t             addr[6];
4783*5113495bSYour Name } tDot11fIEreq_mac_addr;
4784*5113495bSYour Name 
4785*5113495bSYour Name #define DOT11F_EID_REQ_MAC_ADDR (2)
4786*5113495bSYour Name 
4787*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4788*5113495bSYour Name #define DOT11F_IE_REQ_MAC_ADDR_MIN_LEN (6)
4789*5113495bSYour Name 
4790*5113495bSYour Name #define DOT11F_IE_REQ_MAC_ADDR_MAX_LEN (6)
4791*5113495bSYour Name 
4792*5113495bSYour Name #ifdef __cplusplus
4793*5113495bSYour Name extern "C" {
4794*5113495bSYour Name #endif /* C++ */
4795*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_req_mac_addr(
4796*5113495bSYour Name 	tpAniSirGlobal,
4797*5113495bSYour Name 	uint8_t *,
4798*5113495bSYour Name 	uint8_t,
4799*5113495bSYour Name 	tDot11fIEreq_mac_addr*,
4800*5113495bSYour Name 	bool);
4801*5113495bSYour Name 
4802*5113495bSYour Name uint32_t dot11f_pack_ie_req_mac_addr(
4803*5113495bSYour Name 	tpAniSirGlobal,
4804*5113495bSYour Name 	tDot11fIEreq_mac_addr *,
4805*5113495bSYour Name 	uint8_t *,
4806*5113495bSYour Name 	uint32_t,
4807*5113495bSYour Name 	uint32_t*);
4808*5113495bSYour Name 
4809*5113495bSYour Name uint32_t dot11f_get_packed_ie_req_mac_addr(
4810*5113495bSYour Name 	tpAniSirGlobal,
4811*5113495bSYour Name 	tDot11fIEreq_mac_addr *,
4812*5113495bSYour Name 	uint32_t*);
4813*5113495bSYour Name 
4814*5113495bSYour Name #ifdef __cplusplus
4815*5113495bSYour Name }; /* End extern "C". */
4816*5113495bSYour Name #endif /* C++ */
4817*5113495bSYour Name 
4818*5113495bSYour Name /* EID 1 (0x01) */
4819*5113495bSYour Name typedef struct sDot11fIErrm_reporting {
4820*5113495bSYour Name 	uint8_t             present;
4821*5113495bSYour Name 	uint8_t             reporting_condition;
4822*5113495bSYour Name 	uint8_t             threshold;
4823*5113495bSYour Name } tDot11fIErrm_reporting;
4824*5113495bSYour Name 
4825*5113495bSYour Name #define DOT11F_EID_RRM_REPORTING (1)
4826*5113495bSYour Name 
4827*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4828*5113495bSYour Name #define DOT11F_IE_RRM_REPORTING_MIN_LEN (2)
4829*5113495bSYour Name 
4830*5113495bSYour Name #define DOT11F_IE_RRM_REPORTING_MAX_LEN (2)
4831*5113495bSYour Name 
4832*5113495bSYour Name #ifdef __cplusplus
4833*5113495bSYour Name extern "C" {
4834*5113495bSYour Name #endif /* C++ */
4835*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_rrm_reporting(
4836*5113495bSYour Name 	tpAniSirGlobal,
4837*5113495bSYour Name 	uint8_t *,
4838*5113495bSYour Name 	uint8_t,
4839*5113495bSYour Name 	tDot11fIErrm_reporting*,
4840*5113495bSYour Name 	bool);
4841*5113495bSYour Name 
4842*5113495bSYour Name uint32_t dot11f_pack_ie_rrm_reporting(
4843*5113495bSYour Name 	tpAniSirGlobal,
4844*5113495bSYour Name 	tDot11fIErrm_reporting *,
4845*5113495bSYour Name 	uint8_t *,
4846*5113495bSYour Name 	uint32_t,
4847*5113495bSYour Name 	uint32_t*);
4848*5113495bSYour Name 
4849*5113495bSYour Name uint32_t dot11f_get_packed_ie_rrm_reporting(
4850*5113495bSYour Name 	tpAniSirGlobal,
4851*5113495bSYour Name 	tDot11fIErrm_reporting *,
4852*5113495bSYour Name 	uint32_t*);
4853*5113495bSYour Name 
4854*5113495bSYour Name #ifdef __cplusplus
4855*5113495bSYour Name }; /* End extern "C". */
4856*5113495bSYour Name #endif /* C++ */
4857*5113495bSYour Name 
4858*5113495bSYour Name /* EID 255 (0xff) Extended EID 89 (0x59) */
4859*5113495bSYour Name typedef struct sDot11fIEtclas_mask {
4860*5113495bSYour Name 	uint8_t             present;
4861*5113495bSYour Name 	uint8_t             classifier_type;
4862*5113495bSYour Name 	uint8_t             classifier_mask;
4863*5113495bSYour Name 	union {
4864*5113495bSYour Name 		struct {
4865*5113495bSYour Name 			uint8_t reserved[16];
4866*5113495bSYour Name 		} ip_param; /* classifier_type = 4 */
4867*5113495bSYour Name 	} info;
4868*5113495bSYour Name } tDot11fIEtclas_mask;
4869*5113495bSYour Name 
4870*5113495bSYour Name #define DOT11F_EID_TCLAS_MASK (255)
4871*5113495bSYour Name 
4872*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4873*5113495bSYour Name #define DOT11F_IE_TCLAS_MASK_MIN_LEN (18)
4874*5113495bSYour Name 
4875*5113495bSYour Name #define DOT11F_IE_TCLAS_MASK_MAX_LEN (18)
4876*5113495bSYour Name 
4877*5113495bSYour Name #ifdef __cplusplus
4878*5113495bSYour Name extern "C" {
4879*5113495bSYour Name #endif /* C++ */
4880*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_tclas_mask(
4881*5113495bSYour Name 	tpAniSirGlobal,
4882*5113495bSYour Name 	uint8_t *,
4883*5113495bSYour Name 	uint8_t,
4884*5113495bSYour Name 	tDot11fIEtclas_mask*,
4885*5113495bSYour Name 	bool);
4886*5113495bSYour Name 
4887*5113495bSYour Name uint32_t dot11f_pack_ie_tclas_mask(
4888*5113495bSYour Name 	tpAniSirGlobal,
4889*5113495bSYour Name 	tDot11fIEtclas_mask *,
4890*5113495bSYour Name 	uint8_t *,
4891*5113495bSYour Name 	uint32_t,
4892*5113495bSYour Name 	uint32_t*);
4893*5113495bSYour Name 
4894*5113495bSYour Name uint32_t dot11f_get_packed_ie_tclas_mask(
4895*5113495bSYour Name 	tpAniSirGlobal,
4896*5113495bSYour Name 	tDot11fIEtclas_mask *,
4897*5113495bSYour Name 	uint32_t*);
4898*5113495bSYour Name 
4899*5113495bSYour Name #ifdef __cplusplus
4900*5113495bSYour Name }; /* End extern "C". */
4901*5113495bSYour Name #endif /* C++ */
4902*5113495bSYour Name 
4903*5113495bSYour Name /* EID 3 (0x03) */
4904*5113495bSYour Name typedef struct sDot11fIEtgt_mac_addr {
4905*5113495bSYour Name 	uint8_t             present;
4906*5113495bSYour Name 	uint8_t             addr[6];
4907*5113495bSYour Name } tDot11fIEtgt_mac_addr;
4908*5113495bSYour Name 
4909*5113495bSYour Name #define DOT11F_EID_TGT_MAC_ADDR (3)
4910*5113495bSYour Name 
4911*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4912*5113495bSYour Name #define DOT11F_IE_TGT_MAC_ADDR_MIN_LEN (6)
4913*5113495bSYour Name 
4914*5113495bSYour Name #define DOT11F_IE_TGT_MAC_ADDR_MAX_LEN (6)
4915*5113495bSYour Name 
4916*5113495bSYour Name #ifdef __cplusplus
4917*5113495bSYour Name extern "C" {
4918*5113495bSYour Name #endif /* C++ */
4919*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_tgt_mac_addr(
4920*5113495bSYour Name 	tpAniSirGlobal,
4921*5113495bSYour Name 	uint8_t *,
4922*5113495bSYour Name 	uint8_t,
4923*5113495bSYour Name 	tDot11fIEtgt_mac_addr*,
4924*5113495bSYour Name 	bool);
4925*5113495bSYour Name 
4926*5113495bSYour Name uint32_t dot11f_pack_ie_tgt_mac_addr(
4927*5113495bSYour Name 	tpAniSirGlobal,
4928*5113495bSYour Name 	tDot11fIEtgt_mac_addr *,
4929*5113495bSYour Name 	uint8_t *,
4930*5113495bSYour Name 	uint32_t,
4931*5113495bSYour Name 	uint32_t*);
4932*5113495bSYour Name 
4933*5113495bSYour Name uint32_t dot11f_get_packed_ie_tgt_mac_addr(
4934*5113495bSYour Name 	tpAniSirGlobal,
4935*5113495bSYour Name 	tDot11fIEtgt_mac_addr *,
4936*5113495bSYour Name 	uint32_t*);
4937*5113495bSYour Name 
4938*5113495bSYour Name #ifdef __cplusplus
4939*5113495bSYour Name }; /* End extern "C". */
4940*5113495bSYour Name #endif /* C++ */
4941*5113495bSYour Name 
4942*5113495bSYour Name /* EID 195 (0xc3) */
4943*5113495bSYour Name typedef struct sDot11fIEtransmit_power_env {
4944*5113495bSYour Name 	uint8_t             present;
4945*5113495bSYour Name 	uint8_t     max_tx_pwr_count:3;
4946*5113495bSYour Name 	uint8_t max_tx_pwr_interpret:3;
4947*5113495bSYour Name 	uint8_t  max_tx_pwr_category:2;
4948*5113495bSYour Name 	uint8_t             num_tx_power;
4949*5113495bSYour Name 	uint8_t             tx_power[8];
4950*5113495bSYour Name 	union {
4951*5113495bSYour Name 		struct {
4952*5113495bSYour Name 			uint8_t max_tx_power_for_320;
4953*5113495bSYour Name 		} ext_max_tx_power_local_eirp; /* max_tx_pwr_interpret = 0 */
4954*5113495bSYour Name 		struct {
4955*5113495bSYour Name 			uint8_t  ext_count:4;
4956*5113495bSYour Name 			uint8_t   reserved:4;
4957*5113495bSYour Name 			uint8_t max_tx_psd_power[8];
4958*5113495bSYour Name 		} ext_max_tx_power_local_psd; /* max_tx_pwr_interpret = 1 */
4959*5113495bSYour Name 		struct {
4960*5113495bSYour Name 			uint8_t max_tx_power_for_320;
4961*5113495bSYour Name 		} ext_max_tx_power_reg_eirp; /* max_tx_pwr_interpret = 2 */
4962*5113495bSYour Name 		struct {
4963*5113495bSYour Name 			uint8_t  ext_count:4;
4964*5113495bSYour Name 			uint8_t   reserved:4;
4965*5113495bSYour Name 			uint8_t max_tx_psd_power[8];
4966*5113495bSYour Name 		} ext_max_tx_power_reg_psd; /* max_tx_pwr_interpret = 3 */
4967*5113495bSYour Name 	} ext_max_tx_power;
4968*5113495bSYour Name } tDot11fIEtransmit_power_env;
4969*5113495bSYour Name 
4970*5113495bSYour Name #define DOT11F_EID_TRANSMIT_POWER_ENV (195)
4971*5113495bSYour Name 
4972*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
4973*5113495bSYour Name #define DOT11F_IE_TRANSMIT_POWER_ENV_MIN_LEN (2)
4974*5113495bSYour Name 
4975*5113495bSYour Name #define DOT11F_IE_TRANSMIT_POWER_ENV_MAX_LEN (18)
4976*5113495bSYour Name 
4977*5113495bSYour Name #ifdef __cplusplus
4978*5113495bSYour Name extern "C" {
4979*5113495bSYour Name #endif /* C++ */
4980*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_transmit_power_env(
4981*5113495bSYour Name 	tpAniSirGlobal,
4982*5113495bSYour Name 	uint8_t *,
4983*5113495bSYour Name 	uint8_t,
4984*5113495bSYour Name 	tDot11fIEtransmit_power_env*,
4985*5113495bSYour Name 	bool);
4986*5113495bSYour Name 
4987*5113495bSYour Name uint32_t dot11f_pack_ie_transmit_power_env(
4988*5113495bSYour Name 	tpAniSirGlobal,
4989*5113495bSYour Name 	tDot11fIEtransmit_power_env *,
4990*5113495bSYour Name 	uint8_t *,
4991*5113495bSYour Name 	uint32_t,
4992*5113495bSYour Name 	uint32_t*);
4993*5113495bSYour Name 
4994*5113495bSYour Name uint32_t dot11f_get_packed_ie_transmit_power_env(
4995*5113495bSYour Name 	tpAniSirGlobal,
4996*5113495bSYour Name 	tDot11fIEtransmit_power_env *,
4997*5113495bSYour Name 	uint32_t*);
4998*5113495bSYour Name 
4999*5113495bSYour Name #ifdef __cplusplus
5000*5113495bSYour Name }; /* End extern "C". */
5001*5113495bSYour Name #endif /* C++ */
5002*5113495bSYour Name 
5003*5113495bSYour Name /* EID 163 (0xa3) */
5004*5113495bSYour Name typedef struct sDot11fIEwide_bw_chan_switch {
5005*5113495bSYour Name 	uint8_t             present;
5006*5113495bSYour Name 	uint8_t             new_chan_width;
5007*5113495bSYour Name 	uint8_t             new_center_chan_freq0;
5008*5113495bSYour Name 	uint8_t             new_center_chan_freq1;
5009*5113495bSYour Name } tDot11fIEwide_bw_chan_switch;
5010*5113495bSYour Name 
5011*5113495bSYour Name #define DOT11F_EID_WIDE_BW_CHAN_SWITCH (163)
5012*5113495bSYour Name 
5013*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5014*5113495bSYour Name #define DOT11F_IE_WIDE_BW_CHAN_SWITCH_MIN_LEN (3)
5015*5113495bSYour Name 
5016*5113495bSYour Name #define DOT11F_IE_WIDE_BW_CHAN_SWITCH_MAX_LEN (3)
5017*5113495bSYour Name 
5018*5113495bSYour Name #ifdef __cplusplus
5019*5113495bSYour Name extern "C" {
5020*5113495bSYour Name #endif /* C++ */
5021*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wide_bw_chan_switch(
5022*5113495bSYour Name 	tpAniSirGlobal,
5023*5113495bSYour Name 	uint8_t *,
5024*5113495bSYour Name 	uint8_t,
5025*5113495bSYour Name 	tDot11fIEwide_bw_chan_switch*,
5026*5113495bSYour Name 	bool);
5027*5113495bSYour Name 
5028*5113495bSYour Name uint32_t dot11f_pack_ie_wide_bw_chan_switch(
5029*5113495bSYour Name 	tpAniSirGlobal,
5030*5113495bSYour Name 	tDot11fIEwide_bw_chan_switch *,
5031*5113495bSYour Name 	uint8_t *,
5032*5113495bSYour Name 	uint32_t,
5033*5113495bSYour Name 	uint32_t*);
5034*5113495bSYour Name 
5035*5113495bSYour Name uint32_t dot11f_get_packed_ie_wide_bw_chan_switch(
5036*5113495bSYour Name 	tpAniSirGlobal,
5037*5113495bSYour Name 	tDot11fIEwide_bw_chan_switch *,
5038*5113495bSYour Name 	uint32_t*);
5039*5113495bSYour Name 
5040*5113495bSYour Name #ifdef __cplusplus
5041*5113495bSYour Name }; /* End extern "C". */
5042*5113495bSYour Name #endif /* C++ */
5043*5113495bSYour Name 
5044*5113495bSYour Name /* EID 197 (0xc5) */
5045*5113495bSYour Name typedef struct sDot11fIEAID {
5046*5113495bSYour Name 	uint8_t             present;
5047*5113495bSYour Name 	uint16_t            assocId;
5048*5113495bSYour Name } tDot11fIEAID;
5049*5113495bSYour Name 
5050*5113495bSYour Name #define DOT11F_EID_AID (197)
5051*5113495bSYour Name 
5052*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5053*5113495bSYour Name #define DOT11F_IE_AID_MIN_LEN (2)
5054*5113495bSYour Name 
5055*5113495bSYour Name #define DOT11F_IE_AID_MAX_LEN (2)
5056*5113495bSYour Name 
5057*5113495bSYour Name #ifdef __cplusplus
5058*5113495bSYour Name extern "C" {
5059*5113495bSYour Name #endif /* C++ */
5060*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_aid(
5061*5113495bSYour Name 	tpAniSirGlobal,
5062*5113495bSYour Name 	uint8_t *,
5063*5113495bSYour Name 	uint8_t,
5064*5113495bSYour Name 	tDot11fIEAID*,
5065*5113495bSYour Name 	bool);
5066*5113495bSYour Name 
5067*5113495bSYour Name uint32_t dot11f_pack_ie_aid(
5068*5113495bSYour Name 	tpAniSirGlobal,
5069*5113495bSYour Name 	tDot11fIEAID *,
5070*5113495bSYour Name 	uint8_t *,
5071*5113495bSYour Name 	uint32_t,
5072*5113495bSYour Name 	uint32_t*);
5073*5113495bSYour Name 
5074*5113495bSYour Name uint32_t dot11f_get_packed_ie_AID(
5075*5113495bSYour Name 	tpAniSirGlobal,
5076*5113495bSYour Name 	tDot11fIEAID *,
5077*5113495bSYour Name 	uint32_t*);
5078*5113495bSYour Name 
5079*5113495bSYour Name #ifdef __cplusplus
5080*5113495bSYour Name }; /* End extern "C". */
5081*5113495bSYour Name #endif /* C++ */
5082*5113495bSYour Name 
5083*5113495bSYour Name /* EID 4 (0x04) */
5084*5113495bSYour Name typedef struct sDot11fIECFParams {
5085*5113495bSYour Name 	uint8_t             present;
5086*5113495bSYour Name 	uint8_t             cfp_count;
5087*5113495bSYour Name 	uint8_t             cfp_period;
5088*5113495bSYour Name 	uint16_t            cfp_maxduration;
5089*5113495bSYour Name 	uint16_t            cfp_durremaining;
5090*5113495bSYour Name } tDot11fIECFParams;
5091*5113495bSYour Name 
5092*5113495bSYour Name #define DOT11F_EID_CFPARAMS (4)
5093*5113495bSYour Name 
5094*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5095*5113495bSYour Name #define DOT11F_IE_CFPARAMS_MIN_LEN (6)
5096*5113495bSYour Name 
5097*5113495bSYour Name #define DOT11F_IE_CFPARAMS_MAX_LEN (6)
5098*5113495bSYour Name 
5099*5113495bSYour Name #ifdef __cplusplus
5100*5113495bSYour Name extern "C" {
5101*5113495bSYour Name #endif /* C++ */
5102*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_cf_params(
5103*5113495bSYour Name 	tpAniSirGlobal,
5104*5113495bSYour Name 	uint8_t *,
5105*5113495bSYour Name 	uint8_t,
5106*5113495bSYour Name 	tDot11fIECFParams*,
5107*5113495bSYour Name 	bool);
5108*5113495bSYour Name 
5109*5113495bSYour Name uint32_t dot11f_pack_ie_cf_params(
5110*5113495bSYour Name 	tpAniSirGlobal,
5111*5113495bSYour Name 	tDot11fIECFParams *,
5112*5113495bSYour Name 	uint8_t *,
5113*5113495bSYour Name 	uint32_t,
5114*5113495bSYour Name 	uint32_t*);
5115*5113495bSYour Name 
5116*5113495bSYour Name uint32_t dot11f_get_packed_ie_CFParams(
5117*5113495bSYour Name 	tpAniSirGlobal,
5118*5113495bSYour Name 	tDot11fIECFParams *,
5119*5113495bSYour Name 	uint32_t*);
5120*5113495bSYour Name 
5121*5113495bSYour Name #ifdef __cplusplus
5122*5113495bSYour Name }; /* End extern "C". */
5123*5113495bSYour Name #endif /* C++ */
5124*5113495bSYour Name 
5125*5113495bSYour Name /* EID 16 (0x10) */
5126*5113495bSYour Name typedef struct sDot11fIEChallengeText {
5127*5113495bSYour Name 	uint8_t             present;
5128*5113495bSYour Name 	uint8_t             num_text;
5129*5113495bSYour Name 	uint8_t             text[253];
5130*5113495bSYour Name } tDot11fIEChallengeText;
5131*5113495bSYour Name 
5132*5113495bSYour Name #define DOT11F_EID_CHALLENGETEXT (16)
5133*5113495bSYour Name 
5134*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5135*5113495bSYour Name #define DOT11F_IE_CHALLENGETEXT_MIN_LEN (1)
5136*5113495bSYour Name 
5137*5113495bSYour Name #define DOT11F_IE_CHALLENGETEXT_MAX_LEN (253)
5138*5113495bSYour Name 
5139*5113495bSYour Name #ifdef __cplusplus
5140*5113495bSYour Name extern "C" {
5141*5113495bSYour Name #endif /* C++ */
5142*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_challenge_text(
5143*5113495bSYour Name 	tpAniSirGlobal,
5144*5113495bSYour Name 	uint8_t *,
5145*5113495bSYour Name 	uint8_t,
5146*5113495bSYour Name 	tDot11fIEChallengeText*,
5147*5113495bSYour Name 	bool);
5148*5113495bSYour Name 
5149*5113495bSYour Name uint32_t dot11f_pack_ie_challenge_text(
5150*5113495bSYour Name 	tpAniSirGlobal,
5151*5113495bSYour Name 	tDot11fIEChallengeText *,
5152*5113495bSYour Name 	uint8_t *,
5153*5113495bSYour Name 	uint32_t,
5154*5113495bSYour Name 	uint32_t*);
5155*5113495bSYour Name 
5156*5113495bSYour Name uint32_t dot11f_get_packed_ie_ChallengeText(
5157*5113495bSYour Name 	tpAniSirGlobal,
5158*5113495bSYour Name 	tDot11fIEChallengeText *,
5159*5113495bSYour Name 	uint32_t*);
5160*5113495bSYour Name 
5161*5113495bSYour Name #ifdef __cplusplus
5162*5113495bSYour Name }; /* End extern "C". */
5163*5113495bSYour Name #endif /* C++ */
5164*5113495bSYour Name 
5165*5113495bSYour Name /* EID 37 (0x25) */
5166*5113495bSYour Name typedef struct sDot11fIEChanSwitchAnn {
5167*5113495bSYour Name 	uint8_t             present;
5168*5113495bSYour Name 	uint8_t             switchMode;
5169*5113495bSYour Name 	uint8_t             newChannel;
5170*5113495bSYour Name 	uint8_t             switchCount;
5171*5113495bSYour Name } tDot11fIEChanSwitchAnn;
5172*5113495bSYour Name 
5173*5113495bSYour Name #define DOT11F_EID_CHANSWITCHANN (37)
5174*5113495bSYour Name 
5175*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5176*5113495bSYour Name #define DOT11F_IE_CHANSWITCHANN_MIN_LEN (3)
5177*5113495bSYour Name 
5178*5113495bSYour Name #define DOT11F_IE_CHANSWITCHANN_MAX_LEN (3)
5179*5113495bSYour Name 
5180*5113495bSYour Name #ifdef __cplusplus
5181*5113495bSYour Name extern "C" {
5182*5113495bSYour Name #endif /* C++ */
5183*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_chan_switch_ann(
5184*5113495bSYour Name 	tpAniSirGlobal,
5185*5113495bSYour Name 	uint8_t *,
5186*5113495bSYour Name 	uint8_t,
5187*5113495bSYour Name 	tDot11fIEChanSwitchAnn*,
5188*5113495bSYour Name 	bool);
5189*5113495bSYour Name 
5190*5113495bSYour Name uint32_t dot11f_pack_ie_chan_switch_ann(
5191*5113495bSYour Name 	tpAniSirGlobal,
5192*5113495bSYour Name 	tDot11fIEChanSwitchAnn *,
5193*5113495bSYour Name 	uint8_t *,
5194*5113495bSYour Name 	uint32_t,
5195*5113495bSYour Name 	uint32_t*);
5196*5113495bSYour Name 
5197*5113495bSYour Name uint32_t dot11f_get_packed_ie_ChanSwitchAnn(
5198*5113495bSYour Name 	tpAniSirGlobal,
5199*5113495bSYour Name 	tDot11fIEChanSwitchAnn *,
5200*5113495bSYour Name 	uint32_t*);
5201*5113495bSYour Name 
5202*5113495bSYour Name #ifdef __cplusplus
5203*5113495bSYour Name }; /* End extern "C". */
5204*5113495bSYour Name #endif /* C++ */
5205*5113495bSYour Name 
5206*5113495bSYour Name /* EID 196 (0xc4) */
5207*5113495bSYour Name typedef struct sDot11fIEChannelSwitchWrapper {
5208*5113495bSYour Name 	uint8_t                              present;
5209*5113495bSYour Name 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
5210*5113495bSYour Name 	tDot11fIEtransmit_power_env          transmit_power_env;
5211*5113495bSYour Name 	tDot11fIEbw_ind_element              bw_ind_element;
5212*5113495bSYour Name } tDot11fIEChannelSwitchWrapper;
5213*5113495bSYour Name 
5214*5113495bSYour Name #define DOT11F_EID_CHANNELSWITCHWRAPPER (196)
5215*5113495bSYour Name 
5216*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5217*5113495bSYour Name #define DOT11F_IE_CHANNELSWITCHWRAPPER_MIN_LEN (0)
5218*5113495bSYour Name 
5219*5113495bSYour Name #define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (33)
5220*5113495bSYour Name 
5221*5113495bSYour Name #ifdef __cplusplus
5222*5113495bSYour Name extern "C" {
5223*5113495bSYour Name #endif /* C++ */
5224*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_channel_switch_wrapper(
5225*5113495bSYour Name 	tpAniSirGlobal,
5226*5113495bSYour Name 	uint8_t *,
5227*5113495bSYour Name 	uint8_t,
5228*5113495bSYour Name 	tDot11fIEChannelSwitchWrapper*,
5229*5113495bSYour Name 	bool);
5230*5113495bSYour Name 
5231*5113495bSYour Name uint32_t dot11f_pack_ie_channel_switch_wrapper(
5232*5113495bSYour Name 	tpAniSirGlobal,
5233*5113495bSYour Name 	tDot11fIEChannelSwitchWrapper *,
5234*5113495bSYour Name 	uint8_t *,
5235*5113495bSYour Name 	uint32_t,
5236*5113495bSYour Name 	uint32_t*);
5237*5113495bSYour Name 
5238*5113495bSYour Name uint32_t dot11f_get_packed_ie_channel_switch_wrapper(
5239*5113495bSYour Name 	tpAniSirGlobal,
5240*5113495bSYour Name 	tDot11fIEChannelSwitchWrapper *,
5241*5113495bSYour Name 	uint32_t*);
5242*5113495bSYour Name 
5243*5113495bSYour Name #ifdef __cplusplus
5244*5113495bSYour Name }; /* End extern "C". */
5245*5113495bSYour Name #endif /* C++ */
5246*5113495bSYour Name 
5247*5113495bSYour Name /* EID 7 (0x07) */
5248*5113495bSYour Name typedef struct sDot11fIECountry {
5249*5113495bSYour Name 	uint8_t             present;
5250*5113495bSYour Name 	uint8_t             country[3];
5251*5113495bSYour Name 	uint8_t             first_triplet[3];
5252*5113495bSYour Name 	uint8_t             num_more_triplets;
5253*5113495bSYour Name 	uint8_t             more_triplets[80][3];
5254*5113495bSYour Name } tDot11fIECountry;
5255*5113495bSYour Name 
5256*5113495bSYour Name #define DOT11F_EID_COUNTRY (7)
5257*5113495bSYour Name 
5258*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5259*5113495bSYour Name #define DOT11F_IE_COUNTRY_MIN_LEN (6)
5260*5113495bSYour Name 
5261*5113495bSYour Name #define DOT11F_IE_COUNTRY_MAX_LEN (246)
5262*5113495bSYour Name 
5263*5113495bSYour Name #ifdef __cplusplus
5264*5113495bSYour Name extern "C" {
5265*5113495bSYour Name #endif /* C++ */
5266*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_country(
5267*5113495bSYour Name 	tpAniSirGlobal,
5268*5113495bSYour Name 	uint8_t *,
5269*5113495bSYour Name 	uint8_t,
5270*5113495bSYour Name 	tDot11fIECountry*,
5271*5113495bSYour Name 	bool);
5272*5113495bSYour Name 
5273*5113495bSYour Name uint32_t dot11f_pack_ie_country(
5274*5113495bSYour Name 	tpAniSirGlobal,
5275*5113495bSYour Name 	tDot11fIECountry *,
5276*5113495bSYour Name 	uint8_t *,
5277*5113495bSYour Name 	uint32_t,
5278*5113495bSYour Name 	uint32_t*);
5279*5113495bSYour Name 
5280*5113495bSYour Name uint32_t dot11f_get_packed_ie_country(
5281*5113495bSYour Name 	tpAniSirGlobal,
5282*5113495bSYour Name 	tDot11fIECountry *,
5283*5113495bSYour Name 	uint32_t*);
5284*5113495bSYour Name 
5285*5113495bSYour Name #ifdef __cplusplus
5286*5113495bSYour Name }; /* End extern "C". */
5287*5113495bSYour Name #endif /* C++ */
5288*5113495bSYour Name 
5289*5113495bSYour Name /* EID 3 (0x03) */
5290*5113495bSYour Name typedef struct sDot11fIEDSParams {
5291*5113495bSYour Name 	uint8_t             present;
5292*5113495bSYour Name 	uint8_t             curr_channel;
5293*5113495bSYour Name } tDot11fIEDSParams;
5294*5113495bSYour Name 
5295*5113495bSYour Name #define DOT11F_EID_DSPARAMS (3)
5296*5113495bSYour Name 
5297*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5298*5113495bSYour Name #define DOT11F_IE_DSPARAMS_MIN_LEN (1)
5299*5113495bSYour Name 
5300*5113495bSYour Name #define DOT11F_IE_DSPARAMS_MAX_LEN (1)
5301*5113495bSYour Name 
5302*5113495bSYour Name #ifdef __cplusplus
5303*5113495bSYour Name extern "C" {
5304*5113495bSYour Name #endif /* C++ */
5305*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_DSParams(
5306*5113495bSYour Name 	tpAniSirGlobal,
5307*5113495bSYour Name 	uint8_t *,
5308*5113495bSYour Name 	uint8_t,
5309*5113495bSYour Name 	tDot11fIEDSParams*,
5310*5113495bSYour Name 	bool);
5311*5113495bSYour Name 
5312*5113495bSYour Name uint32_t dot11f_pack_ie_ds_params(
5313*5113495bSYour Name 	tpAniSirGlobal,
5314*5113495bSYour Name 	tDot11fIEDSParams *,
5315*5113495bSYour Name 	uint8_t *,
5316*5113495bSYour Name 	uint32_t,
5317*5113495bSYour Name 	uint32_t*);
5318*5113495bSYour Name 
5319*5113495bSYour Name uint32_t dot11f_get_packed_ie_DSParams(
5320*5113495bSYour Name 	tpAniSirGlobal,
5321*5113495bSYour Name 	tDot11fIEDSParams *,
5322*5113495bSYour Name 	uint32_t*);
5323*5113495bSYour Name 
5324*5113495bSYour Name #ifdef __cplusplus
5325*5113495bSYour Name }; /* End extern "C". */
5326*5113495bSYour Name #endif /* C++ */
5327*5113495bSYour Name 
5328*5113495bSYour Name /* EID 12 (0x0c) */
5329*5113495bSYour Name typedef struct sDot11fIEEDCAParamSet {
5330*5113495bSYour Name 	uint8_t             present;
5331*5113495bSYour Name 	uint8_t             qos;
5332*5113495bSYour Name 	uint8_t             reserved;
5333*5113495bSYour Name 	uint8_t           acbe_aifsn:4;
5334*5113495bSYour Name 	uint8_t             acbe_acm:1;
5335*5113495bSYour Name 	uint8_t             acbe_aci:2;
5336*5113495bSYour Name 	uint8_t              unused1:1;
5337*5113495bSYour Name 	uint8_t          acbe_acwmin:4;
5338*5113495bSYour Name 	uint8_t          acbe_acwmax:4;
5339*5113495bSYour Name 	uint16_t            acbe_txoplimit;
5340*5113495bSYour Name 	uint8_t           acbk_aifsn:4;
5341*5113495bSYour Name 	uint8_t             acbk_acm:1;
5342*5113495bSYour Name 	uint8_t             acbk_aci:2;
5343*5113495bSYour Name 	uint8_t              unused2:1;
5344*5113495bSYour Name 	uint8_t          acbk_acwmin:4;
5345*5113495bSYour Name 	uint8_t          acbk_acwmax:4;
5346*5113495bSYour Name 	uint16_t            acbk_txoplimit;
5347*5113495bSYour Name 	uint8_t           acvi_aifsn:4;
5348*5113495bSYour Name 	uint8_t             acvi_acm:1;
5349*5113495bSYour Name 	uint8_t             acvi_aci:2;
5350*5113495bSYour Name 	uint8_t              unused3:1;
5351*5113495bSYour Name 	uint8_t          acvi_acwmin:4;
5352*5113495bSYour Name 	uint8_t          acvi_acwmax:4;
5353*5113495bSYour Name 	uint16_t            acvi_txoplimit;
5354*5113495bSYour Name 	uint8_t           acvo_aifsn:4;
5355*5113495bSYour Name 	uint8_t             acvo_acm:1;
5356*5113495bSYour Name 	uint8_t             acvo_aci:2;
5357*5113495bSYour Name 	uint8_t              unused4:1;
5358*5113495bSYour Name 	uint8_t          acvo_acwmin:4;
5359*5113495bSYour Name 	uint8_t          acvo_acwmax:4;
5360*5113495bSYour Name 	uint16_t            acvo_txoplimit;
5361*5113495bSYour Name } tDot11fIEEDCAParamSet;
5362*5113495bSYour Name 
5363*5113495bSYour Name #define DOT11F_EID_EDCAPARAMSET (12)
5364*5113495bSYour Name 
5365*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5366*5113495bSYour Name #define DOT11F_IE_EDCAPARAMSET_MIN_LEN (18)
5367*5113495bSYour Name 
5368*5113495bSYour Name #define DOT11F_IE_EDCAPARAMSET_MAX_LEN (18)
5369*5113495bSYour Name 
5370*5113495bSYour Name #ifdef __cplusplus
5371*5113495bSYour Name extern "C" {
5372*5113495bSYour Name #endif /* C++ */
5373*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_edca_param_set(
5374*5113495bSYour Name 	tpAniSirGlobal,
5375*5113495bSYour Name 	uint8_t *,
5376*5113495bSYour Name 	uint8_t,
5377*5113495bSYour Name 	tDot11fIEEDCAParamSet*,
5378*5113495bSYour Name 	bool);
5379*5113495bSYour Name 
5380*5113495bSYour Name uint32_t dot11f_pack_ie_edca_param_set(
5381*5113495bSYour Name 	tpAniSirGlobal,
5382*5113495bSYour Name 	tDot11fIEEDCAParamSet *,
5383*5113495bSYour Name 	uint8_t *,
5384*5113495bSYour Name 	uint32_t,
5385*5113495bSYour Name 	uint32_t*);
5386*5113495bSYour Name 
5387*5113495bSYour Name uint32_t dot11f_get_packed_ie_EDCAParamSet(
5388*5113495bSYour Name 	tpAniSirGlobal,
5389*5113495bSYour Name 	tDot11fIEEDCAParamSet *,
5390*5113495bSYour Name 	uint32_t*);
5391*5113495bSYour Name 
5392*5113495bSYour Name #ifdef __cplusplus
5393*5113495bSYour Name }; /* End extern "C". */
5394*5113495bSYour Name #endif /* C++ */
5395*5113495bSYour Name 
5396*5113495bSYour Name /* EID 42 (0x2a) */
5397*5113495bSYour Name typedef struct sDot11fIEERPInfo {
5398*5113495bSYour Name 	uint8_t             present;
5399*5113495bSYour Name 	uint8_t      non_erp_present:1;
5400*5113495bSYour Name 	uint8_t             use_prot:1;
5401*5113495bSYour Name 	uint8_t      barker_preamble:1;
5402*5113495bSYour Name 	uint8_t               unused:5;
5403*5113495bSYour Name } tDot11fIEERPInfo;
5404*5113495bSYour Name 
5405*5113495bSYour Name #define DOT11F_EID_ERPINFO (42)
5406*5113495bSYour Name 
5407*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5408*5113495bSYour Name #define DOT11F_IE_ERPINFO_MIN_LEN (1)
5409*5113495bSYour Name 
5410*5113495bSYour Name #define DOT11F_IE_ERPINFO_MAX_LEN (1)
5411*5113495bSYour Name 
5412*5113495bSYour Name #ifdef __cplusplus
5413*5113495bSYour Name extern "C" {
5414*5113495bSYour Name #endif /* C++ */
5415*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_erp_info(
5416*5113495bSYour Name 	tpAniSirGlobal,
5417*5113495bSYour Name 	uint8_t *,
5418*5113495bSYour Name 	uint8_t,
5419*5113495bSYour Name 	tDot11fIEERPInfo*,
5420*5113495bSYour Name 	bool);
5421*5113495bSYour Name 
5422*5113495bSYour Name uint32_t dot11f_pack_ie_erp_info(
5423*5113495bSYour Name 	tpAniSirGlobal,
5424*5113495bSYour Name 	tDot11fIEERPInfo *,
5425*5113495bSYour Name 	uint8_t *,
5426*5113495bSYour Name 	uint32_t,
5427*5113495bSYour Name 	uint32_t*);
5428*5113495bSYour Name 
5429*5113495bSYour Name uint32_t dot11f_get_packed_ie_ERPInfo(
5430*5113495bSYour Name 	tpAniSirGlobal,
5431*5113495bSYour Name 	tDot11fIEERPInfo *,
5432*5113495bSYour Name 	uint32_t*);
5433*5113495bSYour Name 
5434*5113495bSYour Name #ifdef __cplusplus
5435*5113495bSYour Name }; /* End extern "C". */
5436*5113495bSYour Name #endif /* C++ */
5437*5113495bSYour Name 
5438*5113495bSYour Name /* EID 156 (0x9c) {OUI 0x00, 0x40, 0x96, 0x00} */
5439*5113495bSYour Name typedef struct sDot11fIEESECckmOpaque {
5440*5113495bSYour Name 	uint8_t             present;
5441*5113495bSYour Name 	uint8_t             num_data;
5442*5113495bSYour Name 	uint8_t             data[20];
5443*5113495bSYour Name } tDot11fIEESECckmOpaque;
5444*5113495bSYour Name 
5445*5113495bSYour Name #define DOT11F_EID_ESECCKMOPAQUE (156)
5446*5113495bSYour Name 
5447*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5448*5113495bSYour Name #define DOT11F_IE_ESECCKMOPAQUE_MIN_LEN (10)
5449*5113495bSYour Name 
5450*5113495bSYour Name #define DOT11F_IE_ESECCKMOPAQUE_MAX_LEN (24)
5451*5113495bSYour Name 
5452*5113495bSYour Name #ifdef __cplusplus
5453*5113495bSYour Name extern "C" {
5454*5113495bSYour Name #endif /* C++ */
5455*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ese_cckm_opaque(
5456*5113495bSYour Name 	tpAniSirGlobal,
5457*5113495bSYour Name 	uint8_t *,
5458*5113495bSYour Name 	uint8_t,
5459*5113495bSYour Name 	tDot11fIEESECckmOpaque*,
5460*5113495bSYour Name 	bool);
5461*5113495bSYour Name 
5462*5113495bSYour Name uint32_t dot11f_pack_ie_ese_cckm_opaque(
5463*5113495bSYour Name 	tpAniSirGlobal,
5464*5113495bSYour Name 	tDot11fIEESECckmOpaque *,
5465*5113495bSYour Name 	uint8_t *,
5466*5113495bSYour Name 	uint32_t,
5467*5113495bSYour Name 	uint32_t*);
5468*5113495bSYour Name 
5469*5113495bSYour Name uint32_t dot11f_get_packed_ie_ESECckmOpaque(
5470*5113495bSYour Name 	tpAniSirGlobal,
5471*5113495bSYour Name 	tDot11fIEESECckmOpaque *,
5472*5113495bSYour Name 	uint32_t*);
5473*5113495bSYour Name 
5474*5113495bSYour Name #ifdef __cplusplus
5475*5113495bSYour Name }; /* End extern "C". */
5476*5113495bSYour Name #endif /* C++ */
5477*5113495bSYour Name 
5478*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x01} */
5479*5113495bSYour Name typedef struct sDot11fIEESERadMgmtCap {
5480*5113495bSYour Name 	uint8_t             present;
5481*5113495bSYour Name 	uint8_t             mgmt_state;
5482*5113495bSYour Name 	uint8_t          mbssid_mask:3;
5483*5113495bSYour Name 	uint8_t             reserved:5;
5484*5113495bSYour Name } tDot11fIEESERadMgmtCap;
5485*5113495bSYour Name 
5486*5113495bSYour Name #define DOT11F_EID_ESERADMGMTCAP (221)
5487*5113495bSYour Name 
5488*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5489*5113495bSYour Name #define DOT11F_IE_ESERADMGMTCAP_MIN_LEN (6)
5490*5113495bSYour Name 
5491*5113495bSYour Name #define DOT11F_IE_ESERADMGMTCAP_MAX_LEN (6)
5492*5113495bSYour Name 
5493*5113495bSYour Name #ifdef __cplusplus
5494*5113495bSYour Name extern "C" {
5495*5113495bSYour Name #endif /* C++ */
5496*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(
5497*5113495bSYour Name 	tpAniSirGlobal,
5498*5113495bSYour Name 	uint8_t *,
5499*5113495bSYour Name 	uint8_t,
5500*5113495bSYour Name 	tDot11fIEESERadMgmtCap*,
5501*5113495bSYour Name 	bool);
5502*5113495bSYour Name 
5503*5113495bSYour Name uint32_t dot11f_pack_ie_ese_rad_mgmt_cap(
5504*5113495bSYour Name 	tpAniSirGlobal,
5505*5113495bSYour Name 	tDot11fIEESERadMgmtCap *,
5506*5113495bSYour Name 	uint8_t *,
5507*5113495bSYour Name 	uint32_t,
5508*5113495bSYour Name 	uint32_t*);
5509*5113495bSYour Name 
5510*5113495bSYour Name uint32_t dot11f_get_packed_ie_ESERadMgmtCap(
5511*5113495bSYour Name 	tpAniSirGlobal,
5512*5113495bSYour Name 	tDot11fIEESERadMgmtCap *,
5513*5113495bSYour Name 	uint32_t*);
5514*5113495bSYour Name 
5515*5113495bSYour Name #ifdef __cplusplus
5516*5113495bSYour Name }; /* End extern "C". */
5517*5113495bSYour Name #endif /* C++ */
5518*5113495bSYour Name 
5519*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x07} */
5520*5113495bSYour Name typedef struct sDot11fIEESETrafStrmMet {
5521*5113495bSYour Name 	uint8_t             present;
5522*5113495bSYour Name 	uint8_t             tsid;
5523*5113495bSYour Name 	uint8_t             state;
5524*5113495bSYour Name 	uint16_t            msmt_interval;
5525*5113495bSYour Name } tDot11fIEESETrafStrmMet;
5526*5113495bSYour Name 
5527*5113495bSYour Name #define DOT11F_EID_ESETRAFSTRMMET (221)
5528*5113495bSYour Name 
5529*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5530*5113495bSYour Name #define DOT11F_IE_ESETRAFSTRMMET_MIN_LEN (8)
5531*5113495bSYour Name 
5532*5113495bSYour Name #define DOT11F_IE_ESETRAFSTRMMET_MAX_LEN (8)
5533*5113495bSYour Name 
5534*5113495bSYour Name #ifdef __cplusplus
5535*5113495bSYour Name extern "C" {
5536*5113495bSYour Name #endif /* C++ */
5537*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_met(
5538*5113495bSYour Name 	tpAniSirGlobal,
5539*5113495bSYour Name 	uint8_t *,
5540*5113495bSYour Name 	uint8_t,
5541*5113495bSYour Name 	tDot11fIEESETrafStrmMet*,
5542*5113495bSYour Name 	bool);
5543*5113495bSYour Name 
5544*5113495bSYour Name uint32_t dot11f_pack_ie_ese_traf_strm_met(
5545*5113495bSYour Name 	tpAniSirGlobal,
5546*5113495bSYour Name 	tDot11fIEESETrafStrmMet *,
5547*5113495bSYour Name 	uint8_t *,
5548*5113495bSYour Name 	uint32_t,
5549*5113495bSYour Name 	uint32_t*);
5550*5113495bSYour Name 
5551*5113495bSYour Name uint32_t dot11f_get_packed_ie_ESETrafStrmMet(
5552*5113495bSYour Name 	tpAniSirGlobal,
5553*5113495bSYour Name 	tDot11fIEESETrafStrmMet *,
5554*5113495bSYour Name 	uint32_t*);
5555*5113495bSYour Name 
5556*5113495bSYour Name #ifdef __cplusplus
5557*5113495bSYour Name }; /* End extern "C". */
5558*5113495bSYour Name #endif /* C++ */
5559*5113495bSYour Name 
5560*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x08} */
5561*5113495bSYour Name typedef struct sDot11fIEESETrafStrmRateSet {
5562*5113495bSYour Name 	uint8_t             present;
5563*5113495bSYour Name 	uint8_t             tsid;
5564*5113495bSYour Name 	uint8_t             num_tsrates;
5565*5113495bSYour Name 	uint8_t             tsrates[8];
5566*5113495bSYour Name } tDot11fIEESETrafStrmRateSet;
5567*5113495bSYour Name 
5568*5113495bSYour Name #define DOT11F_EID_ESETRAFSTRMRATESET (221)
5569*5113495bSYour Name 
5570*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5571*5113495bSYour Name #define DOT11F_IE_ESETRAFSTRMRATESET_MIN_LEN (5)
5572*5113495bSYour Name 
5573*5113495bSYour Name #define DOT11F_IE_ESETRAFSTRMRATESET_MAX_LEN (13)
5574*5113495bSYour Name 
5575*5113495bSYour Name #ifdef __cplusplus
5576*5113495bSYour Name extern "C" {
5577*5113495bSYour Name #endif /* C++ */
5578*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(
5579*5113495bSYour Name 	tpAniSirGlobal,
5580*5113495bSYour Name 	uint8_t *,
5581*5113495bSYour Name 	uint8_t,
5582*5113495bSYour Name 	tDot11fIEESETrafStrmRateSet*,
5583*5113495bSYour Name 	bool);
5584*5113495bSYour Name 
5585*5113495bSYour Name uint32_t dot11f_pack_ie_ese_traf_strm_rate_set(
5586*5113495bSYour Name 	tpAniSirGlobal,
5587*5113495bSYour Name 	tDot11fIEESETrafStrmRateSet *,
5588*5113495bSYour Name 	uint8_t *,
5589*5113495bSYour Name 	uint32_t,
5590*5113495bSYour Name 	uint32_t*);
5591*5113495bSYour Name 
5592*5113495bSYour Name uint32_t dot11f_get_packed_ie_ESETrafStrmRateSet(
5593*5113495bSYour Name 	tpAniSirGlobal,
5594*5113495bSYour Name 	tDot11fIEESETrafStrmRateSet *,
5595*5113495bSYour Name 	uint32_t*);
5596*5113495bSYour Name 
5597*5113495bSYour Name #ifdef __cplusplus
5598*5113495bSYour Name }; /* End extern "C". */
5599*5113495bSYour Name #endif /* C++ */
5600*5113495bSYour Name 
5601*5113495bSYour Name /* EID 150 (0x96) {OUI 0x00, 0x40, 0x96, 0x00} */
5602*5113495bSYour Name typedef struct sDot11fIEESETxmitPower {
5603*5113495bSYour Name 	uint8_t             present;
5604*5113495bSYour Name 	uint8_t             power_limit;
5605*5113495bSYour Name 	uint8_t             reserved;
5606*5113495bSYour Name } tDot11fIEESETxmitPower;
5607*5113495bSYour Name 
5608*5113495bSYour Name #define DOT11F_EID_ESETXMITPOWER (150)
5609*5113495bSYour Name 
5610*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5611*5113495bSYour Name #define DOT11F_IE_ESETXMITPOWER_MIN_LEN (6)
5612*5113495bSYour Name 
5613*5113495bSYour Name #define DOT11F_IE_ESETXMITPOWER_MAX_LEN (6)
5614*5113495bSYour Name 
5615*5113495bSYour Name #ifdef __cplusplus
5616*5113495bSYour Name extern "C" {
5617*5113495bSYour Name #endif /* C++ */
5618*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ese_txmit_power(
5619*5113495bSYour Name 	tpAniSirGlobal,
5620*5113495bSYour Name 	uint8_t *,
5621*5113495bSYour Name 	uint8_t,
5622*5113495bSYour Name 	tDot11fIEESETxmitPower*,
5623*5113495bSYour Name 	bool);
5624*5113495bSYour Name 
5625*5113495bSYour Name uint32_t dot11f_pack_ie_ese_txmit_power(
5626*5113495bSYour Name 	tpAniSirGlobal,
5627*5113495bSYour Name 	tDot11fIEESETxmitPower *,
5628*5113495bSYour Name 	uint8_t *,
5629*5113495bSYour Name 	uint32_t,
5630*5113495bSYour Name 	uint32_t*);
5631*5113495bSYour Name 
5632*5113495bSYour Name uint32_t dot11f_get_packed_ie_ESETxmitPower(
5633*5113495bSYour Name 	tpAniSirGlobal,
5634*5113495bSYour Name 	tDot11fIEESETxmitPower *,
5635*5113495bSYour Name 	uint32_t*);
5636*5113495bSYour Name 
5637*5113495bSYour Name #ifdef __cplusplus
5638*5113495bSYour Name }; /* End extern "C". */
5639*5113495bSYour Name #endif /* C++ */
5640*5113495bSYour Name 
5641*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x03} */
5642*5113495bSYour Name typedef struct sDot11fIEESEVersion {
5643*5113495bSYour Name 	uint8_t             present;
5644*5113495bSYour Name 	uint8_t             version;
5645*5113495bSYour Name } tDot11fIEESEVersion;
5646*5113495bSYour Name 
5647*5113495bSYour Name #define DOT11F_EID_ESEVERSION (221)
5648*5113495bSYour Name 
5649*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5650*5113495bSYour Name #define DOT11F_IE_ESEVERSION_MIN_LEN (5)
5651*5113495bSYour Name 
5652*5113495bSYour Name #define DOT11F_IE_ESEVERSION_MAX_LEN (5)
5653*5113495bSYour Name 
5654*5113495bSYour Name #ifdef __cplusplus
5655*5113495bSYour Name extern "C" {
5656*5113495bSYour Name #endif /* C++ */
5657*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ese_version(
5658*5113495bSYour Name 	tpAniSirGlobal,
5659*5113495bSYour Name 	uint8_t *,
5660*5113495bSYour Name 	uint8_t,
5661*5113495bSYour Name 	tDot11fIEESEVersion*,
5662*5113495bSYour Name 	bool);
5663*5113495bSYour Name 
5664*5113495bSYour Name uint32_t dot11f_pack_ie_ese_version(
5665*5113495bSYour Name 	tpAniSirGlobal,
5666*5113495bSYour Name 	tDot11fIEESEVersion *,
5667*5113495bSYour Name 	uint8_t *,
5668*5113495bSYour Name 	uint32_t,
5669*5113495bSYour Name 	uint32_t*);
5670*5113495bSYour Name 
5671*5113495bSYour Name uint32_t dot11f_get_packed_ie_ESEVersion(
5672*5113495bSYour Name 	tpAniSirGlobal,
5673*5113495bSYour Name 	tDot11fIEESEVersion *,
5674*5113495bSYour Name 	uint32_t*);
5675*5113495bSYour Name 
5676*5113495bSYour Name #ifdef __cplusplus
5677*5113495bSYour Name }; /* End extern "C". */
5678*5113495bSYour Name #endif /* C++ */
5679*5113495bSYour Name 
5680*5113495bSYour Name /* EID 127 (0x7f) */
5681*5113495bSYour Name typedef struct sDot11fIEExtCap {
5682*5113495bSYour Name 	uint8_t             present;
5683*5113495bSYour Name 	uint8_t             num_bytes;
5684*5113495bSYour Name 	uint8_t             bytes[15];
5685*5113495bSYour Name } tDot11fIEExtCap;
5686*5113495bSYour Name 
5687*5113495bSYour Name #define DOT11F_EID_EXTCAP (127)
5688*5113495bSYour Name 
5689*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5690*5113495bSYour Name #define DOT11F_IE_EXTCAP_MIN_LEN (1)
5691*5113495bSYour Name 
5692*5113495bSYour Name #define DOT11F_IE_EXTCAP_MAX_LEN (15)
5693*5113495bSYour Name 
5694*5113495bSYour Name #ifdef __cplusplus
5695*5113495bSYour Name extern "C" {
5696*5113495bSYour Name #endif /* C++ */
5697*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ext_cap(
5698*5113495bSYour Name 	tpAniSirGlobal,
5699*5113495bSYour Name 	uint8_t *,
5700*5113495bSYour Name 	uint8_t,
5701*5113495bSYour Name 	tDot11fIEExtCap*,
5702*5113495bSYour Name 	bool);
5703*5113495bSYour Name 
5704*5113495bSYour Name uint32_t dot11f_pack_ie_ext_cap(
5705*5113495bSYour Name 	tpAniSirGlobal,
5706*5113495bSYour Name 	tDot11fIEExtCap *,
5707*5113495bSYour Name 	uint8_t *,
5708*5113495bSYour Name 	uint32_t,
5709*5113495bSYour Name 	uint32_t*);
5710*5113495bSYour Name 
5711*5113495bSYour Name uint32_t dot11f_get_packed_ie_ExtCap(
5712*5113495bSYour Name 	tpAniSirGlobal,
5713*5113495bSYour Name 	tDot11fIEExtCap *,
5714*5113495bSYour Name 	uint32_t*);
5715*5113495bSYour Name 
5716*5113495bSYour Name #ifdef __cplusplus
5717*5113495bSYour Name }; /* End extern "C". */
5718*5113495bSYour Name #endif /* C++ */
5719*5113495bSYour Name 
5720*5113495bSYour Name /* EID 50 (0x32) */
5721*5113495bSYour Name typedef struct sDot11fIEExtSuppRates {
5722*5113495bSYour Name 	uint8_t             present;
5723*5113495bSYour Name 	uint8_t             num_rates;
5724*5113495bSYour Name 	uint8_t             rates[12];
5725*5113495bSYour Name } tDot11fIEExtSuppRates;
5726*5113495bSYour Name 
5727*5113495bSYour Name #define DOT11F_EID_EXTSUPPRATES (50)
5728*5113495bSYour Name 
5729*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5730*5113495bSYour Name #define DOT11F_IE_EXTSUPPRATES_MIN_LEN (1)
5731*5113495bSYour Name 
5732*5113495bSYour Name #define DOT11F_IE_EXTSUPPRATES_MAX_LEN (12)
5733*5113495bSYour Name 
5734*5113495bSYour Name #ifdef __cplusplus
5735*5113495bSYour Name extern "C" {
5736*5113495bSYour Name #endif /* C++ */
5737*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ext_supp_rates(
5738*5113495bSYour Name 	tpAniSirGlobal,
5739*5113495bSYour Name 	uint8_t *,
5740*5113495bSYour Name 	uint8_t,
5741*5113495bSYour Name 	tDot11fIEExtSuppRates*,
5742*5113495bSYour Name 	bool);
5743*5113495bSYour Name 
5744*5113495bSYour Name uint32_t dot11f_pack_ie_ext_supp_rates(
5745*5113495bSYour Name 	tpAniSirGlobal,
5746*5113495bSYour Name 	tDot11fIEExtSuppRates *,
5747*5113495bSYour Name 	uint8_t *,
5748*5113495bSYour Name 	uint32_t,
5749*5113495bSYour Name 	uint32_t*);
5750*5113495bSYour Name 
5751*5113495bSYour Name uint32_t dot11f_get_packed_ie_ExtSuppRates(
5752*5113495bSYour Name 	tpAniSirGlobal,
5753*5113495bSYour Name 	tDot11fIEExtSuppRates *,
5754*5113495bSYour Name 	uint32_t*);
5755*5113495bSYour Name 
5756*5113495bSYour Name #ifdef __cplusplus
5757*5113495bSYour Name }; /* End extern "C". */
5758*5113495bSYour Name #endif /* C++ */
5759*5113495bSYour Name 
5760*5113495bSYour Name /* EID 2 (0x02) */
5761*5113495bSYour Name typedef struct sDot11fIEFHParamSet {
5762*5113495bSYour Name 	uint8_t             present;
5763*5113495bSYour Name 	uint16_t            dwell_time;
5764*5113495bSYour Name 	uint8_t             hop_set;
5765*5113495bSYour Name 	uint8_t             hop_pattern;
5766*5113495bSYour Name 	uint8_t             hop_index;
5767*5113495bSYour Name } tDot11fIEFHParamSet;
5768*5113495bSYour Name 
5769*5113495bSYour Name #define DOT11F_EID_FHPARAMSET (2)
5770*5113495bSYour Name 
5771*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5772*5113495bSYour Name #define DOT11F_IE_FHPARAMSET_MIN_LEN (5)
5773*5113495bSYour Name 
5774*5113495bSYour Name #define DOT11F_IE_FHPARAMSET_MAX_LEN (5)
5775*5113495bSYour Name 
5776*5113495bSYour Name #ifdef __cplusplus
5777*5113495bSYour Name extern "C" {
5778*5113495bSYour Name #endif /* C++ */
5779*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fh_param_set(
5780*5113495bSYour Name 	tpAniSirGlobal,
5781*5113495bSYour Name 	uint8_t *,
5782*5113495bSYour Name 	uint8_t,
5783*5113495bSYour Name 	tDot11fIEFHParamSet*,
5784*5113495bSYour Name 	bool);
5785*5113495bSYour Name 
5786*5113495bSYour Name uint32_t dot11f_pack_ie_fh_param_set(
5787*5113495bSYour Name 	tpAniSirGlobal,
5788*5113495bSYour Name 	tDot11fIEFHParamSet *,
5789*5113495bSYour Name 	uint8_t *,
5790*5113495bSYour Name 	uint32_t,
5791*5113495bSYour Name 	uint32_t*);
5792*5113495bSYour Name 
5793*5113495bSYour Name uint32_t dot11f_get_packed_ie_FHParamSet(
5794*5113495bSYour Name 	tpAniSirGlobal,
5795*5113495bSYour Name 	tDot11fIEFHParamSet *,
5796*5113495bSYour Name 	uint32_t*);
5797*5113495bSYour Name 
5798*5113495bSYour Name #ifdef __cplusplus
5799*5113495bSYour Name }; /* End extern "C". */
5800*5113495bSYour Name #endif /* C++ */
5801*5113495bSYour Name 
5802*5113495bSYour Name /* EID 8 (0x08) */
5803*5113495bSYour Name typedef struct sDot11fIEFHParams {
5804*5113495bSYour Name 	uint8_t             present;
5805*5113495bSYour Name 	uint8_t             radix;
5806*5113495bSYour Name 	uint8_t             nchannels;
5807*5113495bSYour Name } tDot11fIEFHParams;
5808*5113495bSYour Name 
5809*5113495bSYour Name #define DOT11F_EID_FHPARAMS (8)
5810*5113495bSYour Name 
5811*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5812*5113495bSYour Name #define DOT11F_IE_FHPARAMS_MIN_LEN (2)
5813*5113495bSYour Name 
5814*5113495bSYour Name #define DOT11F_IE_FHPARAMS_MAX_LEN (2)
5815*5113495bSYour Name 
5816*5113495bSYour Name #ifdef __cplusplus
5817*5113495bSYour Name extern "C" {
5818*5113495bSYour Name #endif /* C++ */
5819*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fh_params(
5820*5113495bSYour Name 	tpAniSirGlobal,
5821*5113495bSYour Name 	uint8_t *,
5822*5113495bSYour Name 	uint8_t,
5823*5113495bSYour Name 	tDot11fIEFHParams*,
5824*5113495bSYour Name 	bool);
5825*5113495bSYour Name 
5826*5113495bSYour Name uint32_t dot11f_pack_ie_fh_params(
5827*5113495bSYour Name 	tpAniSirGlobal,
5828*5113495bSYour Name 	tDot11fIEFHParams *,
5829*5113495bSYour Name 	uint8_t *,
5830*5113495bSYour Name 	uint32_t,
5831*5113495bSYour Name 	uint32_t*);
5832*5113495bSYour Name 
5833*5113495bSYour Name uint32_t dot11f_get_packed_ie_FHParams(
5834*5113495bSYour Name 	tpAniSirGlobal,
5835*5113495bSYour Name 	tDot11fIEFHParams *,
5836*5113495bSYour Name 	uint32_t*);
5837*5113495bSYour Name 
5838*5113495bSYour Name #ifdef __cplusplus
5839*5113495bSYour Name }; /* End extern "C". */
5840*5113495bSYour Name #endif /* C++ */
5841*5113495bSYour Name 
5842*5113495bSYour Name /* EID 9 (0x09) */
5843*5113495bSYour Name typedef struct sDot11fIEFHPattTable {
5844*5113495bSYour Name 	uint8_t             present;
5845*5113495bSYour Name 	uint8_t             flag;
5846*5113495bSYour Name 	uint8_t             nsets;
5847*5113495bSYour Name 	uint8_t             modulus;
5848*5113495bSYour Name 	uint8_t             offset;
5849*5113495bSYour Name 	uint8_t             num_randtable;
5850*5113495bSYour Name 	uint8_t             randtable[251];
5851*5113495bSYour Name } tDot11fIEFHPattTable;
5852*5113495bSYour Name 
5853*5113495bSYour Name #define DOT11F_EID_FHPATTTABLE (9)
5854*5113495bSYour Name 
5855*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5856*5113495bSYour Name #define DOT11F_IE_FHPATTTABLE_MIN_LEN (4)
5857*5113495bSYour Name 
5858*5113495bSYour Name #define DOT11F_IE_FHPATTTABLE_MAX_LEN (255)
5859*5113495bSYour Name 
5860*5113495bSYour Name #ifdef __cplusplus
5861*5113495bSYour Name extern "C" {
5862*5113495bSYour Name #endif /* C++ */
5863*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fh_patt_table(
5864*5113495bSYour Name 	tpAniSirGlobal,
5865*5113495bSYour Name 	uint8_t *,
5866*5113495bSYour Name 	uint8_t,
5867*5113495bSYour Name 	tDot11fIEFHPattTable*,
5868*5113495bSYour Name 	bool);
5869*5113495bSYour Name 
5870*5113495bSYour Name uint32_t dot11f_pack_ie_fh_patt_table(
5871*5113495bSYour Name 	tpAniSirGlobal,
5872*5113495bSYour Name 	tDot11fIEFHPattTable *,
5873*5113495bSYour Name 	uint8_t *,
5874*5113495bSYour Name 	uint32_t,
5875*5113495bSYour Name 	uint32_t*);
5876*5113495bSYour Name 
5877*5113495bSYour Name uint32_t dot11f_get_packed_ie_FHPattTable(
5878*5113495bSYour Name 	tpAniSirGlobal,
5879*5113495bSYour Name 	tDot11fIEFHPattTable *,
5880*5113495bSYour Name 	uint32_t*);
5881*5113495bSYour Name 
5882*5113495bSYour Name #ifdef __cplusplus
5883*5113495bSYour Name }; /* End extern "C". */
5884*5113495bSYour Name #endif /* C++ */
5885*5113495bSYour Name 
5886*5113495bSYour Name /* EID 55 (0x37) */
5887*5113495bSYour Name typedef struct sDot11fIEFTInfo {
5888*5113495bSYour Name 	uint8_t                 present;
5889*5113495bSYour Name 	uint16_t                 reserved:8;
5890*5113495bSYour Name 	uint16_t                  IECount:8;
5891*5113495bSYour Name 	uint8_t                 MIC[16];
5892*5113495bSYour Name 	uint8_t                 Anonce[32];
5893*5113495bSYour Name 	uint8_t                 Snonce[32];
5894*5113495bSYour Name 	tDot11fIER1KH_ID        R1KH_ID;
5895*5113495bSYour Name 	tDot11fIEGTK            GTK;
5896*5113495bSYour Name 	tDot11fIER0KH_ID        R0KH_ID;
5897*5113495bSYour Name 	tDot11fIEIGTK           IGTK;
5898*5113495bSYour Name } tDot11fIEFTInfo;
5899*5113495bSYour Name 
5900*5113495bSYour Name #define DOT11F_EID_FTINFO (55)
5901*5113495bSYour Name 
5902*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5903*5113495bSYour Name #define DOT11F_IE_FTINFO_MIN_LEN (82)
5904*5113495bSYour Name 
5905*5113495bSYour Name #define DOT11F_IE_FTINFO_MAX_LEN (220)
5906*5113495bSYour Name 
5907*5113495bSYour Name #ifdef __cplusplus
5908*5113495bSYour Name extern "C" {
5909*5113495bSYour Name #endif /* C++ */
5910*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ft_info(
5911*5113495bSYour Name 	tpAniSirGlobal,
5912*5113495bSYour Name 	uint8_t *,
5913*5113495bSYour Name 	uint8_t,
5914*5113495bSYour Name 	tDot11fIEFTInfo*,
5915*5113495bSYour Name 	bool);
5916*5113495bSYour Name 
5917*5113495bSYour Name uint32_t dot11f_pack_ie_ft_info(
5918*5113495bSYour Name 	tpAniSirGlobal,
5919*5113495bSYour Name 	tDot11fIEFTInfo *,
5920*5113495bSYour Name 	uint8_t *,
5921*5113495bSYour Name 	uint32_t,
5922*5113495bSYour Name 	uint32_t*);
5923*5113495bSYour Name 
5924*5113495bSYour Name uint32_t dot11f_get_packed_ieft_info(
5925*5113495bSYour Name 	tpAniSirGlobal,
5926*5113495bSYour Name 	tDot11fIEFTInfo *,
5927*5113495bSYour Name 	uint32_t*);
5928*5113495bSYour Name 
5929*5113495bSYour Name #ifdef __cplusplus
5930*5113495bSYour Name }; /* End extern "C". */
5931*5113495bSYour Name #endif /* C++ */
5932*5113495bSYour Name 
5933*5113495bSYour Name /* EID 45 (0x2d) */
5934*5113495bSYour Name typedef struct sDot11fIEHTCaps {
5935*5113495bSYour Name 	uint8_t             present;
5936*5113495bSYour Name 	uint16_t         advCodingCap:1;
5937*5113495bSYour Name 	uint16_t supportedChannelWidthSet:1;
5938*5113495bSYour Name 	uint16_t        mimoPowerSave:2;
5939*5113495bSYour Name 	uint16_t           greenField:1;
5940*5113495bSYour Name 	uint16_t         shortGI20MHz:1;
5941*5113495bSYour Name 	uint16_t         shortGI40MHz:1;
5942*5113495bSYour Name 	uint16_t               txSTBC:1;
5943*5113495bSYour Name 	uint16_t               rxSTBC:2;
5944*5113495bSYour Name 	uint16_t            delayedBA:1;
5945*5113495bSYour Name 	uint16_t     maximalAMSDUsize:1;
5946*5113495bSYour Name 	uint16_t     dsssCckMode40MHz:1;
5947*5113495bSYour Name 	uint16_t                 psmp:1;
5948*5113495bSYour Name 	uint16_t     stbcControlFrame:1;
5949*5113495bSYour Name 	uint16_t   lsigTXOPProtection:1;
5950*5113495bSYour Name 	uint8_t     maxRxAMPDUFactor:2;
5951*5113495bSYour Name 	uint8_t          mpduDensity:3;
5952*5113495bSYour Name 	uint8_t            reserved1:3;
5953*5113495bSYour Name 	uint8_t             supportedMCSSet[16];
5954*5113495bSYour Name 	uint16_t                  pco:1;
5955*5113495bSYour Name 	uint16_t       transitionTime:2;
5956*5113495bSYour Name 	uint16_t            reserved2:5;
5957*5113495bSYour Name 	uint16_t          mcsFeedback:2;
5958*5113495bSYour Name 	uint16_t            reserved3:6;
5959*5113495bSYour Name 	uint32_t                 txBF:1;
5960*5113495bSYour Name 	uint32_t  rxStaggeredSounding:1;
5961*5113495bSYour Name 	uint32_t  txStaggeredSounding:1;
5962*5113495bSYour Name 	uint32_t                rxZLF:1;
5963*5113495bSYour Name 	uint32_t                txZLF:1;
5964*5113495bSYour Name 	uint32_t         implicitTxBF:1;
5965*5113495bSYour Name 	uint32_t          calibration:2;
5966*5113495bSYour Name 	uint32_t      explicitCSITxBF:1;
5967*5113495bSYour Name 	uint32_t explicitUncompressedSteeringMatrix:1;
5968*5113495bSYour Name 	uint32_t explicitBFCSIFeedback:3;
5969*5113495bSYour Name 	uint32_t explicitUncompressedSteeringMatrixFeedback:3;
5970*5113495bSYour Name 	uint32_t explicitCompressedSteeringMatrixFeedback:3;
5971*5113495bSYour Name 	uint32_t     csiNumBFAntennae:2;
5972*5113495bSYour Name 	uint32_t uncompressedSteeringMatrixBFAntennae:2;
5973*5113495bSYour Name 	uint32_t compressedSteeringMatrixBFAntennae:2;
5974*5113495bSYour Name 	uint32_t            reserved4:7;
5975*5113495bSYour Name 	uint8_t     antennaSelection:1;
5976*5113495bSYour Name 	uint8_t explicitCSIFeedbackTx:1;
5977*5113495bSYour Name 	uint8_t antennaIndicesFeedbackTx:1;
5978*5113495bSYour Name 	uint8_t  explicitCSIFeedback:1;
5979*5113495bSYour Name 	uint8_t antennaIndicesFeedback:1;
5980*5113495bSYour Name 	uint8_t                 rxAS:1;
5981*5113495bSYour Name 	uint8_t      txSoundingPPDUs:1;
5982*5113495bSYour Name 	uint8_t            reserved5:1;
5983*5113495bSYour Name 	uint8_t             num_rsvd;
5984*5113495bSYour Name 	uint8_t             rsvd[32];
5985*5113495bSYour Name } tDot11fIEHTCaps;
5986*5113495bSYour Name 
5987*5113495bSYour Name #define DOT11F_EID_HTCAPS (45)
5988*5113495bSYour Name 
5989*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
5990*5113495bSYour Name #define DOT11F_IE_HTCAPS_MIN_LEN (26)
5991*5113495bSYour Name 
5992*5113495bSYour Name #define DOT11F_IE_HTCAPS_MAX_LEN (58)
5993*5113495bSYour Name 
5994*5113495bSYour Name #ifdef __cplusplus
5995*5113495bSYour Name extern "C" {
5996*5113495bSYour Name #endif /* C++ */
5997*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ht_caps(
5998*5113495bSYour Name 	tpAniSirGlobal,
5999*5113495bSYour Name 	uint8_t *,
6000*5113495bSYour Name 	uint8_t,
6001*5113495bSYour Name 	tDot11fIEHTCaps*,
6002*5113495bSYour Name 	bool);
6003*5113495bSYour Name 
6004*5113495bSYour Name uint32_t dot11f_pack_ie_ht_caps(
6005*5113495bSYour Name 	tpAniSirGlobal,
6006*5113495bSYour Name 	tDot11fIEHTCaps *,
6007*5113495bSYour Name 	uint8_t *,
6008*5113495bSYour Name 	uint32_t,
6009*5113495bSYour Name 	uint32_t*);
6010*5113495bSYour Name 
6011*5113495bSYour Name uint32_t dot11f_get_packed_ie_HTCaps(
6012*5113495bSYour Name 	tpAniSirGlobal,
6013*5113495bSYour Name 	tDot11fIEHTCaps *,
6014*5113495bSYour Name 	uint32_t*);
6015*5113495bSYour Name 
6016*5113495bSYour Name #ifdef __cplusplus
6017*5113495bSYour Name }; /* End extern "C". */
6018*5113495bSYour Name #endif /* C++ */
6019*5113495bSYour Name 
6020*5113495bSYour Name /* EID 61 (0x3d) */
6021*5113495bSYour Name typedef struct sDot11fIEHTInfo {
6022*5113495bSYour Name 	uint8_t             present;
6023*5113495bSYour Name 	uint8_t             primaryChannel;
6024*5113495bSYour Name 	uint8_t secondaryChannelOffset:2;
6025*5113495bSYour Name 	uint8_t recommendedTxWidthSet:1;
6026*5113495bSYour Name 	uint8_t             rifsMode:1;
6027*5113495bSYour Name 	uint8_t controlledAccessOnly:1;
6028*5113495bSYour Name 	uint8_t serviceIntervalGranularity:3;
6029*5113495bSYour Name 	uint16_t               opMode:2;
6030*5113495bSYour Name 	uint16_t  nonGFDevicesPresent:1;
6031*5113495bSYour Name 	uint16_t   transmitBurstLimit:1;
6032*5113495bSYour Name 	uint16_t  obssNonHTStaPresent:1;
6033*5113495bSYour Name 	uint16_t chan_center_freq_seg2:8;
6034*5113495bSYour Name 	uint16_t             reserved:3;
6035*5113495bSYour Name 	uint16_t         basicSTBCMCS:7;
6036*5113495bSYour Name 	uint16_t    dualCTSProtection:1;
6037*5113495bSYour Name 	uint16_t      secondaryBeacon:1;
6038*5113495bSYour Name 	uint16_t lsigTXOPProtectionFullSupport:1;
6039*5113495bSYour Name 	uint16_t            pcoActive:1;
6040*5113495bSYour Name 	uint16_t             pcoPhase:1;
6041*5113495bSYour Name 	uint16_t            reserved2:4;
6042*5113495bSYour Name 	uint8_t             basicMCSSet[16];
6043*5113495bSYour Name 	uint8_t             num_rsvd;
6044*5113495bSYour Name 	uint8_t             rsvd[32];
6045*5113495bSYour Name } tDot11fIEHTInfo;
6046*5113495bSYour Name 
6047*5113495bSYour Name #define DOT11F_EID_HTINFO (61)
6048*5113495bSYour Name 
6049*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6050*5113495bSYour Name #define DOT11F_IE_HTINFO_MIN_LEN (22)
6051*5113495bSYour Name 
6052*5113495bSYour Name #define DOT11F_IE_HTINFO_MAX_LEN (54)
6053*5113495bSYour Name 
6054*5113495bSYour Name #ifdef __cplusplus
6055*5113495bSYour Name extern "C" {
6056*5113495bSYour Name #endif /* C++ */
6057*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ht_info(
6058*5113495bSYour Name 	tpAniSirGlobal,
6059*5113495bSYour Name 	uint8_t *,
6060*5113495bSYour Name 	uint8_t,
6061*5113495bSYour Name 	tDot11fIEHTInfo*,
6062*5113495bSYour Name 	bool);
6063*5113495bSYour Name 
6064*5113495bSYour Name uint32_t dot11f_pack_ie_ht_info(
6065*5113495bSYour Name 	tpAniSirGlobal,
6066*5113495bSYour Name 	tDot11fIEHTInfo *,
6067*5113495bSYour Name 	uint8_t *,
6068*5113495bSYour Name 	uint32_t,
6069*5113495bSYour Name 	uint32_t*);
6070*5113495bSYour Name 
6071*5113495bSYour Name uint32_t dot11f_get_packed_ie_HTInfo(
6072*5113495bSYour Name 	tpAniSirGlobal,
6073*5113495bSYour Name 	tDot11fIEHTInfo *,
6074*5113495bSYour Name 	uint32_t*);
6075*5113495bSYour Name 
6076*5113495bSYour Name #ifdef __cplusplus
6077*5113495bSYour Name }; /* End extern "C". */
6078*5113495bSYour Name #endif /* C++ */
6079*5113495bSYour Name 
6080*5113495bSYour Name /* EID 101 (0x65) */
6081*5113495bSYour Name typedef struct sDot11fIELinkIdentifier {
6082*5113495bSYour Name 	uint8_t             present;
6083*5113495bSYour Name 	uint8_t             bssid[6];
6084*5113495bSYour Name 	uint8_t             InitStaAddr[6];
6085*5113495bSYour Name 	uint8_t             RespStaAddr[6];
6086*5113495bSYour Name } tDot11fIELinkIdentifier;
6087*5113495bSYour Name 
6088*5113495bSYour Name #define DOT11F_EID_LINKIDENTIFIER (101)
6089*5113495bSYour Name 
6090*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6091*5113495bSYour Name #define DOT11F_IE_LINKIDENTIFIER_MIN_LEN (18)
6092*5113495bSYour Name 
6093*5113495bSYour Name #define DOT11F_IE_LINKIDENTIFIER_MAX_LEN (18)
6094*5113495bSYour Name 
6095*5113495bSYour Name #ifdef __cplusplus
6096*5113495bSYour Name extern "C" {
6097*5113495bSYour Name #endif /* C++ */
6098*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_link_identifier(
6099*5113495bSYour Name 	tpAniSirGlobal,
6100*5113495bSYour Name 	uint8_t *,
6101*5113495bSYour Name 	uint8_t,
6102*5113495bSYour Name 	tDot11fIELinkIdentifier*,
6103*5113495bSYour Name 	bool);
6104*5113495bSYour Name 
6105*5113495bSYour Name uint32_t dot11f_pack_ie_link_identifier(
6106*5113495bSYour Name 	tpAniSirGlobal,
6107*5113495bSYour Name 	tDot11fIELinkIdentifier *,
6108*5113495bSYour Name 	uint8_t *,
6109*5113495bSYour Name 	uint32_t,
6110*5113495bSYour Name 	uint32_t*);
6111*5113495bSYour Name 
6112*5113495bSYour Name uint32_t dot11f_get_packed_ie_LinkIdentifier(
6113*5113495bSYour Name 	tpAniSirGlobal,
6114*5113495bSYour Name 	tDot11fIELinkIdentifier *,
6115*5113495bSYour Name 	uint32_t*);
6116*5113495bSYour Name 
6117*5113495bSYour Name #ifdef __cplusplus
6118*5113495bSYour Name }; /* End extern "C". */
6119*5113495bSYour Name #endif /* C++ */
6120*5113495bSYour Name 
6121*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x16} (Multi-IE) */
6122*5113495bSYour Name typedef struct sDot11fIEMBO_IE {
6123*5113495bSYour Name 	uint8_t             present;
6124*5113495bSYour Name 	tDot11fTLVmbo_ap_cap mbo_ap_cap;
6125*5113495bSYour Name 	tDot11fTLVnon_prefferd_chan_rep non_prefferd_chan_rep;
6126*5113495bSYour Name 	tDot11fTLVcellular_data_cap cellular_data_cap;
6127*5113495bSYour Name 	tDot11fTLVassoc_disallowed assoc_disallowed;
6128*5113495bSYour Name 	tDot11fTLVcellular_data_con_pref cellular_data_con_pref;
6129*5113495bSYour Name 	tDot11fTLVtransition_reason transition_reason;
6130*5113495bSYour Name 	tDot11fTLVtransition_reject_reason transition_reject_reason;
6131*5113495bSYour Name 	tDot11fTLVassoc_retry_delay assoc_retry_delay;
6132*5113495bSYour Name 	tDot11fTLVoce_cap   oce_cap;
6133*5113495bSYour Name 	tDot11fTLVrssi_assoc_rej rssi_assoc_rej;
6134*5113495bSYour Name 	tDot11fTLVreduced_wan_metrics reduced_wan_metrics;
6135*5113495bSYour Name } tDot11fIEMBO_IE;
6136*5113495bSYour Name 
6137*5113495bSYour Name #define DOT11F_EID_MBO_IE (221)
6138*5113495bSYour Name 
6139*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6140*5113495bSYour Name #define DOT11F_IE_MBO_IE_MIN_LEN (4)
6141*5113495bSYour Name 
6142*5113495bSYour Name #define DOT11F_IE_MBO_IE_MAX_LEN (293)
6143*5113495bSYour Name 
6144*5113495bSYour Name #ifdef __cplusplus
6145*5113495bSYour Name extern "C" {
6146*5113495bSYour Name #endif /* C++ */
6147*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_MBO_IE(
6148*5113495bSYour Name 	tpAniSirGlobal,
6149*5113495bSYour Name 	uint8_t *,
6150*5113495bSYour Name 	uint8_t,
6151*5113495bSYour Name 	tDot11fIEMBO_IE*,
6152*5113495bSYour Name 	bool);
6153*5113495bSYour Name 
6154*5113495bSYour Name uint32_t dot11f_pack_ie_MBO_IE(
6155*5113495bSYour Name 	tpAniSirGlobal,
6156*5113495bSYour Name 	tDot11fIEMBO_IE *,
6157*5113495bSYour Name 	uint8_t *,
6158*5113495bSYour Name 	uint32_t,
6159*5113495bSYour Name 	uint32_t*);
6160*5113495bSYour Name 
6161*5113495bSYour Name uint32_t dot11f_get_packed_ie_MBO_IE(
6162*5113495bSYour Name 	tpAniSirGlobal,
6163*5113495bSYour Name 	tDot11fIEMBO_IE *,
6164*5113495bSYour Name 	uint32_t*);
6165*5113495bSYour Name 
6166*5113495bSYour Name #ifdef __cplusplus
6167*5113495bSYour Name }; /* End extern "C". */
6168*5113495bSYour Name #endif /* C++ */
6169*5113495bSYour Name 
6170*5113495bSYour Name /* EID 39 (0x27) */
6171*5113495bSYour Name typedef struct sDot11fIEMeasurementReport {
6172*5113495bSYour Name 	uint8_t             present;
6173*5113495bSYour Name 	uint8_t             token;
6174*5113495bSYour Name 	uint8_t                 late:1;
6175*5113495bSYour Name 	uint8_t            incapable:1;
6176*5113495bSYour Name 	uint8_t              refused:1;
6177*5113495bSYour Name 	uint8_t               unused:5;
6178*5113495bSYour Name 	uint8_t             type;
6179*5113495bSYour Name 	union {
6180*5113495bSYour Name 		struct {
6181*5113495bSYour Name 			uint8_t channel;
6182*5113495bSYour Name 			tDOT11F_U64 meas_start_time;
6183*5113495bSYour Name 			uint16_t meas_duration;
6184*5113495bSYour Name 			uint8_t            bss:1;
6185*5113495bSYour Name 			uint8_t  ofdm_preamble:1;
6186*5113495bSYour Name 			uint8_t    unid_signal:1;
6187*5113495bSYour Name 			uint8_t          rader:1;
6188*5113495bSYour Name 			uint8_t     unmeasured:1;
6189*5113495bSYour Name 			uint8_t         unused:3;
6190*5113495bSYour Name 		} Basic; /* type = 0 */
6191*5113495bSYour Name 		struct {
6192*5113495bSYour Name 			uint8_t channel;
6193*5113495bSYour Name 			tDOT11F_U64 meas_start_time;
6194*5113495bSYour Name 			uint16_t meas_duration;
6195*5113495bSYour Name 			uint8_t cca_busy_fraction;
6196*5113495bSYour Name 		} CCA; /* type = 1 */
6197*5113495bSYour Name 		struct {
6198*5113495bSYour Name 			uint8_t channel;
6199*5113495bSYour Name 			tDOT11F_U64 meas_start_time;
6200*5113495bSYour Name 			uint16_t meas_duration;
6201*5113495bSYour Name 			uint8_t rpi0_density;
6202*5113495bSYour Name 			uint8_t rpi1_density;
6203*5113495bSYour Name 			uint8_t rpi2_density;
6204*5113495bSYour Name 			uint8_t rpi3_density;
6205*5113495bSYour Name 			uint8_t rpi4_density;
6206*5113495bSYour Name 			uint8_t rpi5_density;
6207*5113495bSYour Name 			uint8_t rpi6_density;
6208*5113495bSYour Name 			uint8_t rpi7_density;
6209*5113495bSYour Name 		} RPIHistogram; /* type = 2 */
6210*5113495bSYour Name 		struct {
6211*5113495bSYour Name 			uint8_t op_class;
6212*5113495bSYour Name 			uint8_t channel;
6213*5113495bSYour Name 			tDOT11F_U64 meas_start_time;
6214*5113495bSYour Name 			uint16_t meas_duration;
6215*5113495bSYour Name 			uint8_t chan_load;
6216*5113495bSYour Name 	tDot11fIEwide_bw_chan_switch wide_bw_chan_switch;
6217*5113495bSYour Name 	tDot11fIEbw_indication bw_indication;
6218*5113495bSYour Name 		} channel_load_report; /* type = 3 */
6219*5113495bSYour Name 		struct {
6220*5113495bSYour Name 			uint8_t regClass;
6221*5113495bSYour Name 			uint8_t channel;
6222*5113495bSYour Name 			tDOT11F_U64 meas_start_time;
6223*5113495bSYour Name 			uint16_t meas_duration;
6224*5113495bSYour Name 			uint8_t        condensed_PHY:7;
6225*5113495bSYour Name 			uint8_t  reported_frame_type:1;
6226*5113495bSYour Name 			uint8_t RCPI;
6227*5113495bSYour Name 			uint8_t RSNI;
6228*5113495bSYour Name 			uint8_t BSSID[6];
6229*5113495bSYour Name 			uint8_t antenna_id;
6230*5113495bSYour Name 			uint32_t parent_TSF;
6231*5113495bSYour Name 	tDot11fIEBeaconReportFrmBody BeaconReportFrmBody;
6232*5113495bSYour Name 	tDot11fIEbeacon_report_frm_body_fragment_id beacon_report_frm_body_fragment_id;
6233*5113495bSYour Name 	tDot11fIElast_beacon_report_indication last_beacon_report_indication;
6234*5113495bSYour Name 		} Beacon; /* type = 5 */
6235*5113495bSYour Name 		struct {
6236*5113495bSYour Name 			uint16_t meas_duration;
6237*5113495bSYour Name 			uint8_t group_id;
6238*5113495bSYour Name 			union {
6239*5113495bSYour Name 				struct {
6240*5113495bSYour Name 					uint32_t transmitted_fragment_count;
6241*5113495bSYour Name 					uint32_t group_transmitted_frame_count;
6242*5113495bSYour Name 					uint32_t failed_count;
6243*5113495bSYour Name 					uint32_t received_fragment_count;
6244*5113495bSYour Name 					uint32_t group_received_frame_count;
6245*5113495bSYour Name 					uint32_t fcs_error_count;
6246*5113495bSYour Name 					uint32_t transmitted_frame_count;
6247*5113495bSYour Name 				} dot11_counter_stats; /* group_id = 0 */
6248*5113495bSYour Name 				struct {
6249*5113495bSYour Name 					uint32_t retry_count;
6250*5113495bSYour Name 					uint32_t multiple_retry_count;
6251*5113495bSYour Name 					uint32_t frame_duplicate_count;
6252*5113495bSYour Name 					uint32_t rts_success_count;
6253*5113495bSYour Name 					uint32_t rts_failure_count;
6254*5113495bSYour Name 					uint32_t ack_failure_count;
6255*5113495bSYour Name 				} dot11_mac_stats; /* group_id = 1 */
6256*5113495bSYour Name 				struct {
6257*5113495bSYour Name 					uint32_t qos_transmitted_fragment_count;
6258*5113495bSYour Name 					uint32_t qos_failed_count;
6259*5113495bSYour Name 					uint32_t qos_retry_count;
6260*5113495bSYour Name 					uint32_t qos_multiple_retry_count;
6261*5113495bSYour Name 					uint32_t qos_frame_duplicate_count;
6262*5113495bSYour Name 					uint32_t qos_rts_success_count;
6263*5113495bSYour Name 					uint32_t qos_rts_failure_count;
6264*5113495bSYour Name 					uint32_t qos_ack_failure_count;
6265*5113495bSYour Name 					uint32_t qos_received_fragment_count;
6266*5113495bSYour Name 					uint32_t qos_transmitted_frame_count;
6267*5113495bSYour Name 					uint32_t qos_discarded_frame_count;
6268*5113495bSYour Name 					uint32_t qos_mpdus_received_count;
6269*5113495bSYour Name 					uint32_t qos_retries_received_count;
6270*5113495bSYour Name 				} dot11_qos_counter; /* group_id = 2 */
6271*5113495bSYour Name 				struct {
6272*5113495bSYour Name 					uint8_t ap_average_access_delay;
6273*5113495bSYour Name 					uint8_t average_access_delay_besteffort;
6274*5113495bSYour Name 					uint8_t average_access_delay_background;
6275*5113495bSYour Name 					uint8_t average_access_delay_video;
6276*5113495bSYour Name 					uint8_t average_access_delay_voice;
6277*5113495bSYour Name 					uint16_t station_count;
6278*5113495bSYour Name 					uint8_t channel_utilization;
6279*5113495bSYour Name 				} dot11_bss_average_access_delay; /* group_id = 10 */
6280*5113495bSYour Name 			} statsgroupdata;
6281*5113495bSYour Name 	tDot11fIEreporting_reason reporting_reason;
6282*5113495bSYour Name 		} sta_stats; /* type = 7 */
6283*5113495bSYour Name 	} report;
6284*5113495bSYour Name } tDot11fIEMeasurementReport;
6285*5113495bSYour Name 
6286*5113495bSYour Name #define DOT11F_EID_MEASUREMENTREPORT (39)
6287*5113495bSYour Name 
6288*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6289*5113495bSYour Name #define DOT11F_IE_MEASUREMENTREPORT_MIN_LEN (3)
6290*5113495bSYour Name 
6291*5113495bSYour Name #define DOT11F_IE_MEASUREMENTREPORT_MAX_LEN (58)
6292*5113495bSYour Name 
6293*5113495bSYour Name #ifdef __cplusplus
6294*5113495bSYour Name extern "C" {
6295*5113495bSYour Name #endif /* C++ */
6296*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_measurement_report(
6297*5113495bSYour Name 	tpAniSirGlobal,
6298*5113495bSYour Name 	uint8_t *,
6299*5113495bSYour Name 	uint8_t,
6300*5113495bSYour Name 	tDot11fIEMeasurementReport*,
6301*5113495bSYour Name 	bool);
6302*5113495bSYour Name 
6303*5113495bSYour Name uint32_t dot11f_pack_ie_measurement_report(
6304*5113495bSYour Name 	tpAniSirGlobal,
6305*5113495bSYour Name 	tDot11fIEMeasurementReport *,
6306*5113495bSYour Name 	uint8_t *,
6307*5113495bSYour Name 	uint32_t,
6308*5113495bSYour Name 	uint32_t*);
6309*5113495bSYour Name 
6310*5113495bSYour Name uint32_t dot11f_get_packed_ie_measurement_report(
6311*5113495bSYour Name 	tpAniSirGlobal,
6312*5113495bSYour Name 	tDot11fIEMeasurementReport *,
6313*5113495bSYour Name 	uint32_t*);
6314*5113495bSYour Name 
6315*5113495bSYour Name #ifdef __cplusplus
6316*5113495bSYour Name }; /* End extern "C". */
6317*5113495bSYour Name #endif /* C++ */
6318*5113495bSYour Name 
6319*5113495bSYour Name /* EID 38 (0x26) */
6320*5113495bSYour Name typedef struct sDot11fIEMeasurementRequest {
6321*5113495bSYour Name 	uint8_t             present;
6322*5113495bSYour Name 	uint8_t             measurement_token;
6323*5113495bSYour Name 	uint8_t             parallel:1;
6324*5113495bSYour Name 	uint8_t               enable:1;
6325*5113495bSYour Name 	uint8_t              request:1;
6326*5113495bSYour Name 	uint8_t               report:1;
6327*5113495bSYour Name 	uint8_t    durationMandatory:1;
6328*5113495bSYour Name 	uint8_t               unused:3;
6329*5113495bSYour Name 	uint8_t             measurement_type;
6330*5113495bSYour Name 	union {
6331*5113495bSYour Name 		struct {
6332*5113495bSYour Name 			uint8_t channel_no;
6333*5113495bSYour Name 			uint8_t meas_start_time[8];
6334*5113495bSYour Name 			uint16_t meas_duration;
6335*5113495bSYour Name 		} Basic; /* measurement_type = 0 */
6336*5113495bSYour Name 		struct {
6337*5113495bSYour Name 			uint8_t channel_no;
6338*5113495bSYour Name 			uint8_t meas_start_time[8];
6339*5113495bSYour Name 			uint16_t meas_duration;
6340*5113495bSYour Name 		} CCA; /* measurement_type = 1 */
6341*5113495bSYour Name 		struct {
6342*5113495bSYour Name 			uint8_t channel_no;
6343*5113495bSYour Name 			uint8_t meas_start_time[8];
6344*5113495bSYour Name 			uint16_t meas_duration;
6345*5113495bSYour Name 		} RPIHistogram; /* measurement_type = 2 */
6346*5113495bSYour Name 		struct {
6347*5113495bSYour Name 			uint8_t op_class;
6348*5113495bSYour Name 			uint8_t channel;
6349*5113495bSYour Name 			uint16_t randomization_intv;
6350*5113495bSYour Name 			uint16_t meas_duration;
6351*5113495bSYour Name 	tDot11fIErrm_reporting rrm_reporting;
6352*5113495bSYour Name 	tDot11fIEwide_bw_chan_switch wide_bw_chan_switch;
6353*5113495bSYour Name 	tDot11fIEbw_indication bw_indication;
6354*5113495bSYour Name 		} channel_load; /* measurement_type = 3 */
6355*5113495bSYour Name 		struct {
6356*5113495bSYour Name 			uint8_t regClass;
6357*5113495bSYour Name 			uint8_t channel;
6358*5113495bSYour Name 			uint16_t randomization;
6359*5113495bSYour Name 			uint16_t meas_duration;
6360*5113495bSYour Name 			uint8_t meas_mode;
6361*5113495bSYour Name 			uint8_t BSSID[6];
6362*5113495bSYour Name 	tDot11fIESSID SSID;
6363*5113495bSYour Name 	tDot11fIErrm_reporting rrm_reporting;
6364*5113495bSYour Name 	tDot11fIEBcnReportingDetail BcnReportingDetail;
6365*5113495bSYour Name 	tDot11fIERequestedInfo RequestedInfo;
6366*5113495bSYour Name 	tDot11fIEExtRequestedInfo ExtRequestedInfo;
6367*5113495bSYour Name 	uint16_t num_APChannelReport;
6368*5113495bSYour Name 	tDot11fIEAPChannelReport APChannelReport[2];
6369*5113495bSYour Name 	tDot11fIElast_beacon_report_indication last_beacon_report_indication;
6370*5113495bSYour Name 		} Beacon; /* measurement_type = 5 */
6371*5113495bSYour Name 		struct {
6372*5113495bSYour Name 			uint8_t loc_subject;
6373*5113495bSYour Name 	tDot11fIEazimuth_req azimuth_req;
6374*5113495bSYour Name 	tDot11fIEreq_mac_addr req_mac_addr;
6375*5113495bSYour Name 	tDot11fIEtgt_mac_addr tgt_mac_addr;
6376*5113495bSYour Name 	tDot11fIEmax_age max_age;
6377*5113495bSYour Name 		} lci; /* measurement_type = 8 */
6378*5113495bSYour Name 		struct {
6379*5113495bSYour Name 			uint16_t random_interval;
6380*5113495bSYour Name 			uint8_t min_ap_count;
6381*5113495bSYour Name 	tDot11fIEneighbor_rpt neighbor_rpt;
6382*5113495bSYour Name 	tDot11fIEmax_age max_age;
6383*5113495bSYour Name 		} ftmrr; /* measurement_type = 16 */
6384*5113495bSYour Name 		struct {
6385*5113495bSYour Name 			uint8_t peer_mac_addr[6];
6386*5113495bSYour Name 			uint16_t randomization;
6387*5113495bSYour Name 			uint16_t meas_duration;
6388*5113495bSYour Name 			uint8_t group_identity;
6389*5113495bSYour Name 		} sta_stats; /* measurement_type = 7 */
6390*5113495bSYour Name 	} measurement_request;
6391*5113495bSYour Name } tDot11fIEMeasurementRequest;
6392*5113495bSYour Name 
6393*5113495bSYour Name #define DOT11F_EID_MEASUREMENTREQUEST (38)
6394*5113495bSYour Name 
6395*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6396*5113495bSYour Name #define DOT11F_IE_MEASUREMENTREQUEST_MIN_LEN (4)
6397*5113495bSYour Name 
6398*5113495bSYour Name #define DOT11F_IE_MEASUREMENTREQUEST_MAX_LEN (16)
6399*5113495bSYour Name 
6400*5113495bSYour Name #ifdef __cplusplus
6401*5113495bSYour Name extern "C" {
6402*5113495bSYour Name #endif /* C++ */
6403*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_measurement_request(
6404*5113495bSYour Name 	tpAniSirGlobal,
6405*5113495bSYour Name 	uint8_t *,
6406*5113495bSYour Name 	uint8_t,
6407*5113495bSYour Name 	tDot11fIEMeasurementRequest*,
6408*5113495bSYour Name 	bool);
6409*5113495bSYour Name 
6410*5113495bSYour Name uint32_t dot11f_pack_ie_measurement_request(
6411*5113495bSYour Name 	tpAniSirGlobal,
6412*5113495bSYour Name 	tDot11fIEMeasurementRequest *,
6413*5113495bSYour Name 	uint8_t *,
6414*5113495bSYour Name 	uint32_t,
6415*5113495bSYour Name 	uint32_t*);
6416*5113495bSYour Name 
6417*5113495bSYour Name uint32_t dot11f_get_packed_ie_measurement_request(
6418*5113495bSYour Name 	tpAniSirGlobal,
6419*5113495bSYour Name 	tDot11fIEMeasurementRequest *,
6420*5113495bSYour Name 	uint32_t*);
6421*5113495bSYour Name 
6422*5113495bSYour Name #ifdef __cplusplus
6423*5113495bSYour Name }; /* End extern "C". */
6424*5113495bSYour Name #endif /* C++ */
6425*5113495bSYour Name 
6426*5113495bSYour Name /* EID 54 (0x36) */
6427*5113495bSYour Name typedef struct sDot11fIEMobilityDomain {
6428*5113495bSYour Name 	uint8_t             present;
6429*5113495bSYour Name 	uint16_t            MDID;
6430*5113495bSYour Name 	uint8_t            overDSCap:1;
6431*5113495bSYour Name 	uint8_t       resourceReqCap:1;
6432*5113495bSYour Name 	uint8_t             reserved:6;
6433*5113495bSYour Name } tDot11fIEMobilityDomain;
6434*5113495bSYour Name 
6435*5113495bSYour Name #define DOT11F_EID_MOBILITYDOMAIN (54)
6436*5113495bSYour Name 
6437*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6438*5113495bSYour Name #define DOT11F_IE_MOBILITYDOMAIN_MIN_LEN (3)
6439*5113495bSYour Name 
6440*5113495bSYour Name #define DOT11F_IE_MOBILITYDOMAIN_MAX_LEN (3)
6441*5113495bSYour Name 
6442*5113495bSYour Name #ifdef __cplusplus
6443*5113495bSYour Name extern "C" {
6444*5113495bSYour Name #endif /* C++ */
6445*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_mobility_domain(
6446*5113495bSYour Name 	tpAniSirGlobal,
6447*5113495bSYour Name 	uint8_t *,
6448*5113495bSYour Name 	uint8_t,
6449*5113495bSYour Name 	tDot11fIEMobilityDomain*,
6450*5113495bSYour Name 	bool);
6451*5113495bSYour Name 
6452*5113495bSYour Name uint32_t dot11f_pack_ie_mobility_domain(
6453*5113495bSYour Name 	tpAniSirGlobal,
6454*5113495bSYour Name 	tDot11fIEMobilityDomain *,
6455*5113495bSYour Name 	uint8_t *,
6456*5113495bSYour Name 	uint32_t,
6457*5113495bSYour Name 	uint32_t*);
6458*5113495bSYour Name 
6459*5113495bSYour Name uint32_t dot11f_get_packed_ie_MobilityDomain(
6460*5113495bSYour Name 	tpAniSirGlobal,
6461*5113495bSYour Name 	tDot11fIEMobilityDomain *,
6462*5113495bSYour Name 	uint32_t*);
6463*5113495bSYour Name 
6464*5113495bSYour Name #ifdef __cplusplus
6465*5113495bSYour Name }; /* End extern "C". */
6466*5113495bSYour Name #endif /* C++ */
6467*5113495bSYour Name 
6468*5113495bSYour Name /* EID 52 (0x34) */
6469*5113495bSYour Name typedef struct sDot11fIENeighborReport {
6470*5113495bSYour Name 	uint8_t                             present;
6471*5113495bSYour Name 	uint8_t                             bssid[6];
6472*5113495bSYour Name 	uint8_t                       APReachability:2;
6473*5113495bSYour Name 	uint8_t                             Security:1;
6474*5113495bSYour Name 	uint8_t                             KeyScope:1;
6475*5113495bSYour Name 	uint8_t                          SpecMgmtCap:1;
6476*5113495bSYour Name 	uint8_t                               QosCap:1;
6477*5113495bSYour Name 	uint8_t                                 apsd:1;
6478*5113495bSYour Name 	uint8_t                                  rrm:1;
6479*5113495bSYour Name 	uint8_t                            DelayedBA:1;
6480*5113495bSYour Name 	uint8_t                                ImmBA:1;
6481*5113495bSYour Name 	uint8_t                       MobilityDomain:1;
6482*5113495bSYour Name 	uint8_t                             reserved:5;
6483*5113495bSYour Name 	uint16_t                            reserved1;
6484*5113495bSYour Name 	uint8_t                             regulatoryClass;
6485*5113495bSYour Name 	uint8_t                             channel;
6486*5113495bSYour Name 	uint8_t                             PhyType;
6487*5113495bSYour Name 	tDot11fIETSFInfo                    TSFInfo;
6488*5113495bSYour Name 	tDot11fIECondensedCountryStr        CondensedCountryStr;
6489*5113495bSYour Name 	tDot11fIEMeasurementPilot           MeasurementPilot;
6490*5113495bSYour Name 	tDot11fIERRMEnabledCap              RRMEnabledCap;
6491*5113495bSYour Name 	tDot11fIEMultiBssid                 MultiBssid;
6492*5113495bSYour Name } tDot11fIENeighborReport;
6493*5113495bSYour Name 
6494*5113495bSYour Name #define DOT11F_EID_NEIGHBORREPORT (52)
6495*5113495bSYour Name 
6496*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6497*5113495bSYour Name #define DOT11F_IE_NEIGHBORREPORT_MIN_LEN (13)
6498*5113495bSYour Name 
6499*5113495bSYour Name #define DOT11F_IE_NEIGHBORREPORT_MAX_LEN (546)
6500*5113495bSYour Name 
6501*5113495bSYour Name #ifdef __cplusplus
6502*5113495bSYour Name extern "C" {
6503*5113495bSYour Name #endif /* C++ */
6504*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_neighbor_report(
6505*5113495bSYour Name 	tpAniSirGlobal,
6506*5113495bSYour Name 	uint8_t *,
6507*5113495bSYour Name 	uint8_t,
6508*5113495bSYour Name 	tDot11fIENeighborReport*,
6509*5113495bSYour Name 	bool);
6510*5113495bSYour Name 
6511*5113495bSYour Name uint32_t dot11f_pack_ie_neighbor_report(
6512*5113495bSYour Name 	tpAniSirGlobal,
6513*5113495bSYour Name 	tDot11fIENeighborReport *,
6514*5113495bSYour Name 	uint8_t *,
6515*5113495bSYour Name 	uint32_t,
6516*5113495bSYour Name 	uint32_t*);
6517*5113495bSYour Name 
6518*5113495bSYour Name uint32_t dot11f_get_packed_ie_neighbor_report(
6519*5113495bSYour Name 	tpAniSirGlobal,
6520*5113495bSYour Name 	tDot11fIENeighborReport *,
6521*5113495bSYour Name 	uint32_t*);
6522*5113495bSYour Name 
6523*5113495bSYour Name #ifdef __cplusplus
6524*5113495bSYour Name }; /* End extern "C". */
6525*5113495bSYour Name #endif /* C++ */
6526*5113495bSYour Name 
6527*5113495bSYour Name /* EID 74 (0x4a) */
6528*5113495bSYour Name typedef struct sDot11fIEOBSSScanParameters {
6529*5113495bSYour Name 	uint8_t             present;
6530*5113495bSYour Name 	uint16_t            obssScanPassiveDwell;
6531*5113495bSYour Name 	uint16_t            obssScanActiveDwell;
6532*5113495bSYour Name 	uint16_t            bssChannelWidthTriggerScanInterval;
6533*5113495bSYour Name 	uint16_t            obssScanPassiveTotalPerChannel;
6534*5113495bSYour Name 	uint16_t            obssScanActiveTotalPerChannel;
6535*5113495bSYour Name 	uint16_t            bssWidthChannelTransitionDelayFactor;
6536*5113495bSYour Name 	uint16_t            obssScanActivityThreshold;
6537*5113495bSYour Name } tDot11fIEOBSSScanParameters;
6538*5113495bSYour Name 
6539*5113495bSYour Name #define DOT11F_EID_OBSSSCANPARAMETERS (74)
6540*5113495bSYour Name 
6541*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6542*5113495bSYour Name #define DOT11F_IE_OBSSSCANPARAMETERS_MIN_LEN (14)
6543*5113495bSYour Name 
6544*5113495bSYour Name #define DOT11F_IE_OBSSSCANPARAMETERS_MAX_LEN (14)
6545*5113495bSYour Name 
6546*5113495bSYour Name #ifdef __cplusplus
6547*5113495bSYour Name extern "C" {
6548*5113495bSYour Name #endif /* C++ */
6549*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_obss_scan_parameters(
6550*5113495bSYour Name 	tpAniSirGlobal,
6551*5113495bSYour Name 	uint8_t *,
6552*5113495bSYour Name 	uint8_t,
6553*5113495bSYour Name 	tDot11fIEOBSSScanParameters*,
6554*5113495bSYour Name 	bool);
6555*5113495bSYour Name 
6556*5113495bSYour Name uint32_t dot11f_pack_ie_obss_scan_parameters(
6557*5113495bSYour Name 	tpAniSirGlobal,
6558*5113495bSYour Name 	tDot11fIEOBSSScanParameters *,
6559*5113495bSYour Name 	uint8_t *,
6560*5113495bSYour Name 	uint32_t,
6561*5113495bSYour Name 	uint32_t*);
6562*5113495bSYour Name 
6563*5113495bSYour Name uint32_t dot11f_get_packed_ie_OBSSScanParameters(
6564*5113495bSYour Name 	tpAniSirGlobal,
6565*5113495bSYour Name 	tDot11fIEOBSSScanParameters *,
6566*5113495bSYour Name 	uint32_t*);
6567*5113495bSYour Name 
6568*5113495bSYour Name #ifdef __cplusplus
6569*5113495bSYour Name }; /* End extern "C". */
6570*5113495bSYour Name #endif /* C++ */
6571*5113495bSYour Name 
6572*5113495bSYour Name /* EID 199 (0xc7) */
6573*5113495bSYour Name typedef struct sDot11fIEOperatingMode {
6574*5113495bSYour Name 	uint8_t             present;
6575*5113495bSYour Name 	uint8_t            chanWidth:2;
6576*5113495bSYour Name 	uint8_t   vht_160_80p80_supp:1;
6577*5113495bSYour Name 	uint8_t              no_ldpc:1;
6578*5113495bSYour Name 	uint8_t                rxNSS:3;
6579*5113495bSYour Name 	uint8_t            rxNSSType:1;
6580*5113495bSYour Name } tDot11fIEOperatingMode;
6581*5113495bSYour Name 
6582*5113495bSYour Name #define DOT11F_EID_OPERATINGMODE (199)
6583*5113495bSYour Name 
6584*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6585*5113495bSYour Name #define DOT11F_IE_OPERATINGMODE_MIN_LEN (1)
6586*5113495bSYour Name 
6587*5113495bSYour Name #define DOT11F_IE_OPERATINGMODE_MAX_LEN (1)
6588*5113495bSYour Name 
6589*5113495bSYour Name #ifdef __cplusplus
6590*5113495bSYour Name extern "C" {
6591*5113495bSYour Name #endif /* C++ */
6592*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_operating_mode(
6593*5113495bSYour Name 	tpAniSirGlobal,
6594*5113495bSYour Name 	uint8_t *,
6595*5113495bSYour Name 	uint8_t,
6596*5113495bSYour Name 	tDot11fIEOperatingMode*,
6597*5113495bSYour Name 	bool);
6598*5113495bSYour Name 
6599*5113495bSYour Name uint32_t dot11f_pack_ie_operating_mode(
6600*5113495bSYour Name 	tpAniSirGlobal,
6601*5113495bSYour Name 	tDot11fIEOperatingMode *,
6602*5113495bSYour Name 	uint8_t *,
6603*5113495bSYour Name 	uint32_t,
6604*5113495bSYour Name 	uint32_t*);
6605*5113495bSYour Name 
6606*5113495bSYour Name uint32_t dot11f_get_packed_ie_OperatingMode(
6607*5113495bSYour Name 	tpAniSirGlobal,
6608*5113495bSYour Name 	tDot11fIEOperatingMode *,
6609*5113495bSYour Name 	uint32_t*);
6610*5113495bSYour Name 
6611*5113495bSYour Name #ifdef __cplusplus
6612*5113495bSYour Name }; /* End extern "C". */
6613*5113495bSYour Name #endif /* C++ */
6614*5113495bSYour Name 
6615*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6616*5113495bSYour Name typedef struct sDot11fIEP2PAssocReq {
6617*5113495bSYour Name 	uint8_t             present;
6618*5113495bSYour Name 	tDot11fTLVP2PCapability P2PCapability;
6619*5113495bSYour Name 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6620*5113495bSYour Name 	tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6621*5113495bSYour Name } tDot11fIEP2PAssocReq;
6622*5113495bSYour Name 
6623*5113495bSYour Name #define DOT11F_EID_P2PASSOCREQ (221)
6624*5113495bSYour Name 
6625*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6626*5113495bSYour Name #define DOT11F_IE_P2PASSOCREQ_MIN_LEN (4)
6627*5113495bSYour Name 
6628*5113495bSYour Name #define DOT11F_IE_P2PASSOCREQ_MAX_LEN (71)
6629*5113495bSYour Name 
6630*5113495bSYour Name #ifdef __cplusplus
6631*5113495bSYour Name extern "C" {
6632*5113495bSYour Name #endif /* C++ */
6633*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_req(
6634*5113495bSYour Name 	tpAniSirGlobal,
6635*5113495bSYour Name 	uint8_t *,
6636*5113495bSYour Name 	uint8_t,
6637*5113495bSYour Name 	tDot11fIEP2PAssocReq*,
6638*5113495bSYour Name 	bool);
6639*5113495bSYour Name 
6640*5113495bSYour Name uint32_t dot11f_pack_ie_p2_p_assoc_req(
6641*5113495bSYour Name 	tpAniSirGlobal,
6642*5113495bSYour Name 	tDot11fIEP2PAssocReq *,
6643*5113495bSYour Name 	uint8_t *,
6644*5113495bSYour Name 	uint32_t,
6645*5113495bSYour Name 	uint32_t*);
6646*5113495bSYour Name 
6647*5113495bSYour Name uint32_t dot11f_get_packed_iep2_p_assoc_req(
6648*5113495bSYour Name 	tpAniSirGlobal,
6649*5113495bSYour Name 	tDot11fIEP2PAssocReq *,
6650*5113495bSYour Name 	uint32_t*);
6651*5113495bSYour Name 
6652*5113495bSYour Name #ifdef __cplusplus
6653*5113495bSYour Name }; /* End extern "C". */
6654*5113495bSYour Name #endif /* C++ */
6655*5113495bSYour Name 
6656*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6657*5113495bSYour Name typedef struct sDot11fIEP2PAssocRes {
6658*5113495bSYour Name 	uint8_t             present;
6659*5113495bSYour Name 	tDot11fTLVP2PStatus P2PStatus;
6660*5113495bSYour Name 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6661*5113495bSYour Name } tDot11fIEP2PAssocRes;
6662*5113495bSYour Name 
6663*5113495bSYour Name #define DOT11F_EID_P2PASSOCRES (221)
6664*5113495bSYour Name 
6665*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6666*5113495bSYour Name #define DOT11F_IE_P2PASSOCRES_MIN_LEN (4)
6667*5113495bSYour Name 
6668*5113495bSYour Name #define DOT11F_IE_P2PASSOCRES_MAX_LEN (15)
6669*5113495bSYour Name 
6670*5113495bSYour Name #ifdef __cplusplus
6671*5113495bSYour Name extern "C" {
6672*5113495bSYour Name #endif /* C++ */
6673*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_res(
6674*5113495bSYour Name 	tpAniSirGlobal,
6675*5113495bSYour Name 	uint8_t *,
6676*5113495bSYour Name 	uint8_t,
6677*5113495bSYour Name 	tDot11fIEP2PAssocRes*,
6678*5113495bSYour Name 	bool);
6679*5113495bSYour Name 
6680*5113495bSYour Name uint32_t dot11f_pack_ie_p2_p_assoc_res(
6681*5113495bSYour Name 	tpAniSirGlobal,
6682*5113495bSYour Name 	tDot11fIEP2PAssocRes *,
6683*5113495bSYour Name 	uint8_t *,
6684*5113495bSYour Name 	uint32_t,
6685*5113495bSYour Name 	uint32_t*);
6686*5113495bSYour Name 
6687*5113495bSYour Name uint32_t dot11f_get_packed_iep2_p_assoc_res(
6688*5113495bSYour Name 	tpAniSirGlobal,
6689*5113495bSYour Name 	tDot11fIEP2PAssocRes *,
6690*5113495bSYour Name 	uint32_t*);
6691*5113495bSYour Name 
6692*5113495bSYour Name #ifdef __cplusplus
6693*5113495bSYour Name }; /* End extern "C". */
6694*5113495bSYour Name #endif /* C++ */
6695*5113495bSYour Name 
6696*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6697*5113495bSYour Name typedef struct sDot11fIEP2PBeacon {
6698*5113495bSYour Name 	uint8_t             present;
6699*5113495bSYour Name 	tDot11fTLVP2PCapability P2PCapability;
6700*5113495bSYour Name 	tDot11fTLVP2PDeviceId P2PDeviceId;
6701*5113495bSYour Name 	tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6702*5113495bSYour Name } tDot11fIEP2PBeacon;
6703*5113495bSYour Name 
6704*5113495bSYour Name #define DOT11F_EID_P2PBEACON (221)
6705*5113495bSYour Name 
6706*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6707*5113495bSYour Name #define DOT11F_IE_P2PBEACON_MIN_LEN (4)
6708*5113495bSYour Name 
6709*5113495bSYour Name #define DOT11F_IE_P2PBEACON_MAX_LEN (59)
6710*5113495bSYour Name 
6711*5113495bSYour Name #ifdef __cplusplus
6712*5113495bSYour Name extern "C" {
6713*5113495bSYour Name #endif /* C++ */
6714*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_p2_p_beacon(
6715*5113495bSYour Name 	tpAniSirGlobal,
6716*5113495bSYour Name 	uint8_t *,
6717*5113495bSYour Name 	uint8_t,
6718*5113495bSYour Name 	tDot11fIEP2PBeacon*,
6719*5113495bSYour Name 	bool);
6720*5113495bSYour Name 
6721*5113495bSYour Name uint32_t dot11f_pack_ie_p2_p_beacon(
6722*5113495bSYour Name 	tpAniSirGlobal,
6723*5113495bSYour Name 	tDot11fIEP2PBeacon *,
6724*5113495bSYour Name 	uint8_t *,
6725*5113495bSYour Name 	uint32_t,
6726*5113495bSYour Name 	uint32_t*);
6727*5113495bSYour Name 
6728*5113495bSYour Name uint32_t dot11f_get_packed_iep2_p_beacon(
6729*5113495bSYour Name 	tpAniSirGlobal,
6730*5113495bSYour Name 	tDot11fIEP2PBeacon *,
6731*5113495bSYour Name 	uint32_t*);
6732*5113495bSYour Name 
6733*5113495bSYour Name #ifdef __cplusplus
6734*5113495bSYour Name }; /* End extern "C". */
6735*5113495bSYour Name #endif /* C++ */
6736*5113495bSYour Name 
6737*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6738*5113495bSYour Name typedef struct sDot11fIEP2PBeaconProbeRes {
6739*5113495bSYour Name 	uint8_t             present;
6740*5113495bSYour Name 	tDot11fTLVP2PCapability P2PCapability;
6741*5113495bSYour Name 	tDot11fTLVP2PDeviceId P2PDeviceId;
6742*5113495bSYour Name 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6743*5113495bSYour Name 	tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6744*5113495bSYour Name 	tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6745*5113495bSYour Name 	tDot11fTLVP2PGroupInfo P2PGroupInfo;
6746*5113495bSYour Name } tDot11fIEP2PBeaconProbeRes;
6747*5113495bSYour Name 
6748*5113495bSYour Name #define DOT11F_EID_P2PBEACONPROBERES (221)
6749*5113495bSYour Name 
6750*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6751*5113495bSYour Name #define DOT11F_IE_P2PBEACONPROBERES_MIN_LEN (4)
6752*5113495bSYour Name 
6753*5113495bSYour Name #define DOT11F_IE_P2PBEACONPROBERES_MAX_LEN (1148)
6754*5113495bSYour Name 
6755*5113495bSYour Name #ifdef __cplusplus
6756*5113495bSYour Name extern "C" {
6757*5113495bSYour Name #endif /* C++ */
6758*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_p2_p_beacon_probe_res(
6759*5113495bSYour Name 	tpAniSirGlobal,
6760*5113495bSYour Name 	uint8_t *,
6761*5113495bSYour Name 	uint8_t,
6762*5113495bSYour Name 	tDot11fIEP2PBeaconProbeRes*,
6763*5113495bSYour Name 	bool);
6764*5113495bSYour Name 
6765*5113495bSYour Name uint32_t dot11f_pack_ie_p2_p_beacon_probe_res(
6766*5113495bSYour Name 	tpAniSirGlobal,
6767*5113495bSYour Name 	tDot11fIEP2PBeaconProbeRes *,
6768*5113495bSYour Name 	uint8_t *,
6769*5113495bSYour Name 	uint32_t,
6770*5113495bSYour Name 	uint32_t*);
6771*5113495bSYour Name 
6772*5113495bSYour Name uint32_t dot11f_get_packed_iep2_p_beacon_probe_res(
6773*5113495bSYour Name 	tpAniSirGlobal,
6774*5113495bSYour Name 	tDot11fIEP2PBeaconProbeRes *,
6775*5113495bSYour Name 	uint32_t*);
6776*5113495bSYour Name 
6777*5113495bSYour Name #ifdef __cplusplus
6778*5113495bSYour Name }; /* End extern "C". */
6779*5113495bSYour Name #endif /* C++ */
6780*5113495bSYour Name 
6781*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6782*5113495bSYour Name typedef struct sDot11fIEP2PDeAuth {
6783*5113495bSYour Name 	uint8_t             present;
6784*5113495bSYour Name 	tDot11fTLVMinorReasonCode MinorReasonCode;
6785*5113495bSYour Name } tDot11fIEP2PDeAuth;
6786*5113495bSYour Name 
6787*5113495bSYour Name #define DOT11F_EID_P2PDEAUTH (221)
6788*5113495bSYour Name 
6789*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6790*5113495bSYour Name #define DOT11F_IE_P2PDEAUTH_MIN_LEN (4)
6791*5113495bSYour Name 
6792*5113495bSYour Name #define DOT11F_IE_P2PDEAUTH_MAX_LEN (8)
6793*5113495bSYour Name 
6794*5113495bSYour Name #ifdef __cplusplus
6795*5113495bSYour Name extern "C" {
6796*5113495bSYour Name #endif /* C++ */
6797*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_p2_p_de_auth(
6798*5113495bSYour Name 	tpAniSirGlobal,
6799*5113495bSYour Name 	uint8_t *,
6800*5113495bSYour Name 	uint8_t,
6801*5113495bSYour Name 	tDot11fIEP2PDeAuth*,
6802*5113495bSYour Name 	bool);
6803*5113495bSYour Name 
6804*5113495bSYour Name uint32_t dot11f_pack_ie_p2_p_de_auth(
6805*5113495bSYour Name 	tpAniSirGlobal,
6806*5113495bSYour Name 	tDot11fIEP2PDeAuth *,
6807*5113495bSYour Name 	uint8_t *,
6808*5113495bSYour Name 	uint32_t,
6809*5113495bSYour Name 	uint32_t*);
6810*5113495bSYour Name 
6811*5113495bSYour Name uint32_t dot11f_get_packed_iep2_p_de_auth(
6812*5113495bSYour Name 	tpAniSirGlobal,
6813*5113495bSYour Name 	tDot11fIEP2PDeAuth *,
6814*5113495bSYour Name 	uint32_t*);
6815*5113495bSYour Name 
6816*5113495bSYour Name #ifdef __cplusplus
6817*5113495bSYour Name }; /* End extern "C". */
6818*5113495bSYour Name #endif /* C++ */
6819*5113495bSYour Name 
6820*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6821*5113495bSYour Name typedef struct sDot11fIEP2PDisAssoc {
6822*5113495bSYour Name 	uint8_t             present;
6823*5113495bSYour Name 	tDot11fTLVMinorReasonCode MinorReasonCode;
6824*5113495bSYour Name } tDot11fIEP2PDisAssoc;
6825*5113495bSYour Name 
6826*5113495bSYour Name #define DOT11F_EID_P2PDISASSOC (221)
6827*5113495bSYour Name 
6828*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6829*5113495bSYour Name #define DOT11F_IE_P2PDISASSOC_MIN_LEN (4)
6830*5113495bSYour Name 
6831*5113495bSYour Name #define DOT11F_IE_P2PDISASSOC_MAX_LEN (8)
6832*5113495bSYour Name 
6833*5113495bSYour Name #ifdef __cplusplus
6834*5113495bSYour Name extern "C" {
6835*5113495bSYour Name #endif /* C++ */
6836*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_p2_p_dis_assoc(
6837*5113495bSYour Name 	tpAniSirGlobal,
6838*5113495bSYour Name 	uint8_t *,
6839*5113495bSYour Name 	uint8_t,
6840*5113495bSYour Name 	tDot11fIEP2PDisAssoc*,
6841*5113495bSYour Name 	bool);
6842*5113495bSYour Name 
6843*5113495bSYour Name uint32_t dot11f_pack_ie_p2_p_dis_assoc(
6844*5113495bSYour Name 	tpAniSirGlobal,
6845*5113495bSYour Name 	tDot11fIEP2PDisAssoc *,
6846*5113495bSYour Name 	uint8_t *,
6847*5113495bSYour Name 	uint32_t,
6848*5113495bSYour Name 	uint32_t*);
6849*5113495bSYour Name 
6850*5113495bSYour Name uint32_t dot11f_get_packed_iep2_p_dis_assoc(
6851*5113495bSYour Name 	tpAniSirGlobal,
6852*5113495bSYour Name 	tDot11fIEP2PDisAssoc *,
6853*5113495bSYour Name 	uint32_t*);
6854*5113495bSYour Name 
6855*5113495bSYour Name #ifdef __cplusplus
6856*5113495bSYour Name }; /* End extern "C". */
6857*5113495bSYour Name #endif /* C++ */
6858*5113495bSYour Name 
6859*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} */
6860*5113495bSYour Name typedef struct sDot11fIEP2PIEOpaque {
6861*5113495bSYour Name 	uint8_t             present;
6862*5113495bSYour Name 	uint8_t             num_data;
6863*5113495bSYour Name 	uint8_t             data[249];
6864*5113495bSYour Name } tDot11fIEP2PIEOpaque;
6865*5113495bSYour Name 
6866*5113495bSYour Name #define DOT11F_EID_P2PIEOPAQUE (221)
6867*5113495bSYour Name 
6868*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6869*5113495bSYour Name #define DOT11F_IE_P2PIEOPAQUE_MIN_LEN (6)
6870*5113495bSYour Name 
6871*5113495bSYour Name #define DOT11F_IE_P2PIEOPAQUE_MAX_LEN (253)
6872*5113495bSYour Name 
6873*5113495bSYour Name #ifdef __cplusplus
6874*5113495bSYour Name extern "C" {
6875*5113495bSYour Name #endif /* C++ */
6876*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_p2_pie_opaque(
6877*5113495bSYour Name 	tpAniSirGlobal,
6878*5113495bSYour Name 	uint8_t *,
6879*5113495bSYour Name 	uint8_t,
6880*5113495bSYour Name 	tDot11fIEP2PIEOpaque*,
6881*5113495bSYour Name 	bool);
6882*5113495bSYour Name 
6883*5113495bSYour Name uint32_t dot11f_pack_ie_p2_pie_opaque(
6884*5113495bSYour Name 	tpAniSirGlobal,
6885*5113495bSYour Name 	tDot11fIEP2PIEOpaque *,
6886*5113495bSYour Name 	uint8_t *,
6887*5113495bSYour Name 	uint32_t,
6888*5113495bSYour Name 	uint32_t*);
6889*5113495bSYour Name 
6890*5113495bSYour Name uint32_t dot11f_get_packed_ie_P2PIEOpaque(
6891*5113495bSYour Name 	tpAniSirGlobal,
6892*5113495bSYour Name 	tDot11fIEP2PIEOpaque *,
6893*5113495bSYour Name 	uint32_t*);
6894*5113495bSYour Name 
6895*5113495bSYour Name #ifdef __cplusplus
6896*5113495bSYour Name }; /* End extern "C". */
6897*5113495bSYour Name #endif /* C++ */
6898*5113495bSYour Name 
6899*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6900*5113495bSYour Name typedef struct sDot11fIEP2PProbeReq {
6901*5113495bSYour Name 	uint8_t             present;
6902*5113495bSYour Name 	tDot11fTLVP2PCapability P2PCapability;
6903*5113495bSYour Name 	tDot11fTLVP2PDeviceId P2PDeviceId;
6904*5113495bSYour Name 	tDot11fTLVListenChannel ListenChannel;
6905*5113495bSYour Name 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6906*5113495bSYour Name 	tDot11fTLVOperatingChannel OperatingChannel;
6907*5113495bSYour Name } tDot11fIEP2PProbeReq;
6908*5113495bSYour Name 
6909*5113495bSYour Name #define DOT11F_EID_P2PPROBEREQ (221)
6910*5113495bSYour Name 
6911*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6912*5113495bSYour Name #define DOT11F_IE_P2PPROBEREQ_MIN_LEN (4)
6913*5113495bSYour Name 
6914*5113495bSYour Name #define DOT11F_IE_P2PPROBEREQ_MAX_LEN (41)
6915*5113495bSYour Name 
6916*5113495bSYour Name #ifdef __cplusplus
6917*5113495bSYour Name extern "C" {
6918*5113495bSYour Name #endif /* C++ */
6919*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_p2_p_probe_req(
6920*5113495bSYour Name 	tpAniSirGlobal,
6921*5113495bSYour Name 	uint8_t *,
6922*5113495bSYour Name 	uint8_t,
6923*5113495bSYour Name 	tDot11fIEP2PProbeReq*,
6924*5113495bSYour Name 	bool);
6925*5113495bSYour Name 
6926*5113495bSYour Name uint32_t dot11f_pack_ie_p2_p_probe_req(
6927*5113495bSYour Name 	tpAniSirGlobal,
6928*5113495bSYour Name 	tDot11fIEP2PProbeReq *,
6929*5113495bSYour Name 	uint8_t *,
6930*5113495bSYour Name 	uint32_t,
6931*5113495bSYour Name 	uint32_t*);
6932*5113495bSYour Name 
6933*5113495bSYour Name uint32_t dot11f_get_packed_iep2_p_probe_req(
6934*5113495bSYour Name 	tpAniSirGlobal,
6935*5113495bSYour Name 	tDot11fIEP2PProbeReq *,
6936*5113495bSYour Name 	uint32_t*);
6937*5113495bSYour Name 
6938*5113495bSYour Name #ifdef __cplusplus
6939*5113495bSYour Name }; /* End extern "C". */
6940*5113495bSYour Name #endif /* C++ */
6941*5113495bSYour Name 
6942*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6943*5113495bSYour Name typedef struct sDot11fIEP2PProbeRes {
6944*5113495bSYour Name 	uint8_t             present;
6945*5113495bSYour Name 	tDot11fTLVP2PCapability P2PCapability;
6946*5113495bSYour Name 	tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6947*5113495bSYour Name 	tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6948*5113495bSYour Name 	tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6949*5113495bSYour Name 	tDot11fTLVP2PGroupInfo P2PGroupInfo;
6950*5113495bSYour Name } tDot11fIEP2PProbeRes;
6951*5113495bSYour Name 
6952*5113495bSYour Name #define DOT11F_EID_P2PPROBERES (221)
6953*5113495bSYour Name 
6954*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6955*5113495bSYour Name #define DOT11F_IE_P2PPROBERES_MIN_LEN (4)
6956*5113495bSYour Name 
6957*5113495bSYour Name #define DOT11F_IE_P2PPROBERES_MAX_LEN (1139)
6958*5113495bSYour Name 
6959*5113495bSYour Name #ifdef __cplusplus
6960*5113495bSYour Name extern "C" {
6961*5113495bSYour Name #endif /* C++ */
6962*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_p2_p_probe_res(
6963*5113495bSYour Name 	tpAniSirGlobal,
6964*5113495bSYour Name 	uint8_t *,
6965*5113495bSYour Name 	uint8_t,
6966*5113495bSYour Name 	tDot11fIEP2PProbeRes*,
6967*5113495bSYour Name 	bool);
6968*5113495bSYour Name 
6969*5113495bSYour Name uint32_t dot11f_pack_ie_p2_p_probe_res(
6970*5113495bSYour Name 	tpAniSirGlobal,
6971*5113495bSYour Name 	tDot11fIEP2PProbeRes *,
6972*5113495bSYour Name 	uint8_t *,
6973*5113495bSYour Name 	uint32_t,
6974*5113495bSYour Name 	uint32_t*);
6975*5113495bSYour Name 
6976*5113495bSYour Name uint32_t dot11f_get_packed_iep2_p_probe_res(
6977*5113495bSYour Name 	tpAniSirGlobal,
6978*5113495bSYour Name 	tDot11fIEP2PProbeRes *,
6979*5113495bSYour Name 	uint32_t*);
6980*5113495bSYour Name 
6981*5113495bSYour Name #ifdef __cplusplus
6982*5113495bSYour Name }; /* End extern "C". */
6983*5113495bSYour Name #endif /* C++ */
6984*5113495bSYour Name 
6985*5113495bSYour Name /* EID 105 (0x69) */
6986*5113495bSYour Name typedef struct sDot11fIEPTIControl {
6987*5113495bSYour Name 	uint8_t             present;
6988*5113495bSYour Name 	uint8_t             tid;
6989*5113495bSYour Name 	uint16_t            sequence_control;
6990*5113495bSYour Name } tDot11fIEPTIControl;
6991*5113495bSYour Name 
6992*5113495bSYour Name #define DOT11F_EID_PTICONTROL (105)
6993*5113495bSYour Name 
6994*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
6995*5113495bSYour Name #define DOT11F_IE_PTICONTROL_MIN_LEN (3)
6996*5113495bSYour Name 
6997*5113495bSYour Name #define DOT11F_IE_PTICONTROL_MAX_LEN (3)
6998*5113495bSYour Name 
6999*5113495bSYour Name #ifdef __cplusplus
7000*5113495bSYour Name extern "C" {
7001*5113495bSYour Name #endif /* C++ */
7002*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_pti_control(
7003*5113495bSYour Name 	tpAniSirGlobal,
7004*5113495bSYour Name 	uint8_t *,
7005*5113495bSYour Name 	uint8_t,
7006*5113495bSYour Name 	tDot11fIEPTIControl*,
7007*5113495bSYour Name 	bool);
7008*5113495bSYour Name 
7009*5113495bSYour Name uint32_t dot11f_pack_ie_pti_control(
7010*5113495bSYour Name 	tpAniSirGlobal,
7011*5113495bSYour Name 	tDot11fIEPTIControl *,
7012*5113495bSYour Name 	uint8_t *,
7013*5113495bSYour Name 	uint32_t,
7014*5113495bSYour Name 	uint32_t*);
7015*5113495bSYour Name 
7016*5113495bSYour Name uint32_t dot11f_get_packed_ie_PTIControl(
7017*5113495bSYour Name 	tpAniSirGlobal,
7018*5113495bSYour Name 	tDot11fIEPTIControl *,
7019*5113495bSYour Name 	uint32_t*);
7020*5113495bSYour Name 
7021*5113495bSYour Name #ifdef __cplusplus
7022*5113495bSYour Name }; /* End extern "C". */
7023*5113495bSYour Name #endif /* C++ */
7024*5113495bSYour Name 
7025*5113495bSYour Name /* EID 106 (0x6a) */
7026*5113495bSYour Name typedef struct sDot11fIEPUBufferStatus {
7027*5113495bSYour Name 	uint8_t             present;
7028*5113495bSYour Name 	uint8_t   ac_bk_traffic_aval:1;
7029*5113495bSYour Name 	uint8_t   ac_be_traffic_aval:1;
7030*5113495bSYour Name 	uint8_t   ac_vi_traffic_aval:1;
7031*5113495bSYour Name 	uint8_t   ac_vo_traffic_aval:1;
7032*5113495bSYour Name 	uint8_t             reserved:4;
7033*5113495bSYour Name } tDot11fIEPUBufferStatus;
7034*5113495bSYour Name 
7035*5113495bSYour Name #define DOT11F_EID_PUBUFFERSTATUS (106)
7036*5113495bSYour Name 
7037*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7038*5113495bSYour Name #define DOT11F_IE_PUBUFFERSTATUS_MIN_LEN (1)
7039*5113495bSYour Name 
7040*5113495bSYour Name #define DOT11F_IE_PUBUFFERSTATUS_MAX_LEN (1)
7041*5113495bSYour Name 
7042*5113495bSYour Name #ifdef __cplusplus
7043*5113495bSYour Name extern "C" {
7044*5113495bSYour Name #endif /* C++ */
7045*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_pu_buffer_status(
7046*5113495bSYour Name 	tpAniSirGlobal,
7047*5113495bSYour Name 	uint8_t *,
7048*5113495bSYour Name 	uint8_t,
7049*5113495bSYour Name 	tDot11fIEPUBufferStatus*,
7050*5113495bSYour Name 	bool);
7051*5113495bSYour Name 
7052*5113495bSYour Name uint32_t dot11f_pack_ie_pu_buffer_status(
7053*5113495bSYour Name 	tpAniSirGlobal,
7054*5113495bSYour Name 	tDot11fIEPUBufferStatus *,
7055*5113495bSYour Name 	uint8_t *,
7056*5113495bSYour Name 	uint32_t,
7057*5113495bSYour Name 	uint32_t*);
7058*5113495bSYour Name 
7059*5113495bSYour Name uint32_t dot11f_get_packed_ie_PUBufferStatus(
7060*5113495bSYour Name 	tpAniSirGlobal,
7061*5113495bSYour Name 	tDot11fIEPUBufferStatus *,
7062*5113495bSYour Name 	uint32_t*);
7063*5113495bSYour Name 
7064*5113495bSYour Name #ifdef __cplusplus
7065*5113495bSYour Name }; /* End extern "C". */
7066*5113495bSYour Name #endif /* C++ */
7067*5113495bSYour Name 
7068*5113495bSYour Name /* EID 33 (0x21) */
7069*5113495bSYour Name typedef struct sDot11fIEPowerCaps {
7070*5113495bSYour Name 	uint8_t             present;
7071*5113495bSYour Name 	uint8_t             minTxPower;
7072*5113495bSYour Name 	uint8_t             maxTxPower;
7073*5113495bSYour Name } tDot11fIEPowerCaps;
7074*5113495bSYour Name 
7075*5113495bSYour Name #define DOT11F_EID_POWERCAPS (33)
7076*5113495bSYour Name 
7077*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7078*5113495bSYour Name #define DOT11F_IE_POWERCAPS_MIN_LEN (2)
7079*5113495bSYour Name 
7080*5113495bSYour Name #define DOT11F_IE_POWERCAPS_MAX_LEN (2)
7081*5113495bSYour Name 
7082*5113495bSYour Name #ifdef __cplusplus
7083*5113495bSYour Name extern "C" {
7084*5113495bSYour Name #endif /* C++ */
7085*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_power_caps(
7086*5113495bSYour Name 	tpAniSirGlobal,
7087*5113495bSYour Name 	uint8_t *,
7088*5113495bSYour Name 	uint8_t,
7089*5113495bSYour Name 	tDot11fIEPowerCaps*,
7090*5113495bSYour Name 	bool);
7091*5113495bSYour Name 
7092*5113495bSYour Name uint32_t dot11f_pack_ie_power_caps(
7093*5113495bSYour Name 	tpAniSirGlobal,
7094*5113495bSYour Name 	tDot11fIEPowerCaps *,
7095*5113495bSYour Name 	uint8_t *,
7096*5113495bSYour Name 	uint32_t,
7097*5113495bSYour Name 	uint32_t*);
7098*5113495bSYour Name 
7099*5113495bSYour Name uint32_t dot11f_get_packed_ie_PowerCaps(
7100*5113495bSYour Name 	tpAniSirGlobal,
7101*5113495bSYour Name 	tDot11fIEPowerCaps *,
7102*5113495bSYour Name 	uint32_t*);
7103*5113495bSYour Name 
7104*5113495bSYour Name #ifdef __cplusplus
7105*5113495bSYour Name }; /* End extern "C". */
7106*5113495bSYour Name #endif /* C++ */
7107*5113495bSYour Name 
7108*5113495bSYour Name /* EID 32 (0x20) */
7109*5113495bSYour Name typedef struct sDot11fIEPowerConstraints {
7110*5113495bSYour Name 	uint8_t             present;
7111*5113495bSYour Name 	uint8_t             localPowerConstraints;
7112*5113495bSYour Name } tDot11fIEPowerConstraints;
7113*5113495bSYour Name 
7114*5113495bSYour Name #define DOT11F_EID_POWERCONSTRAINTS (32)
7115*5113495bSYour Name 
7116*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7117*5113495bSYour Name #define DOT11F_IE_POWERCONSTRAINTS_MIN_LEN (1)
7118*5113495bSYour Name 
7119*5113495bSYour Name #define DOT11F_IE_POWERCONSTRAINTS_MAX_LEN (1)
7120*5113495bSYour Name 
7121*5113495bSYour Name #ifdef __cplusplus
7122*5113495bSYour Name extern "C" {
7123*5113495bSYour Name #endif /* C++ */
7124*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_power_constraints(
7125*5113495bSYour Name 	tpAniSirGlobal,
7126*5113495bSYour Name 	uint8_t *,
7127*5113495bSYour Name 	uint8_t,
7128*5113495bSYour Name 	tDot11fIEPowerConstraints*,
7129*5113495bSYour Name 	bool);
7130*5113495bSYour Name 
7131*5113495bSYour Name uint32_t dot11f_pack_ie_power_constraints(
7132*5113495bSYour Name 	tpAniSirGlobal,
7133*5113495bSYour Name 	tDot11fIEPowerConstraints *,
7134*5113495bSYour Name 	uint8_t *,
7135*5113495bSYour Name 	uint32_t,
7136*5113495bSYour Name 	uint32_t*);
7137*5113495bSYour Name 
7138*5113495bSYour Name uint32_t dot11f_get_packed_ie_PowerConstraints(
7139*5113495bSYour Name 	tpAniSirGlobal,
7140*5113495bSYour Name 	tDot11fIEPowerConstraints *,
7141*5113495bSYour Name 	uint32_t*);
7142*5113495bSYour Name 
7143*5113495bSYour Name #ifdef __cplusplus
7144*5113495bSYour Name }; /* End extern "C". */
7145*5113495bSYour Name #endif /* C++ */
7146*5113495bSYour Name 
7147*5113495bSYour Name /* EID 11 (0x0b) */
7148*5113495bSYour Name typedef struct sDot11fIEQBSSLoad {
7149*5113495bSYour Name 	uint8_t             present;
7150*5113495bSYour Name 	uint16_t            stacount;
7151*5113495bSYour Name 	uint8_t             chautil;
7152*5113495bSYour Name 	uint16_t            avail;
7153*5113495bSYour Name } tDot11fIEQBSSLoad;
7154*5113495bSYour Name 
7155*5113495bSYour Name #define DOT11F_EID_QBSSLOAD (11)
7156*5113495bSYour Name 
7157*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7158*5113495bSYour Name #define DOT11F_IE_QBSSLOAD_MIN_LEN (5)
7159*5113495bSYour Name 
7160*5113495bSYour Name #define DOT11F_IE_QBSSLOAD_MAX_LEN (5)
7161*5113495bSYour Name 
7162*5113495bSYour Name #ifdef __cplusplus
7163*5113495bSYour Name extern "C" {
7164*5113495bSYour Name #endif /* C++ */
7165*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_qbss_load(
7166*5113495bSYour Name 	tpAniSirGlobal,
7167*5113495bSYour Name 	uint8_t *,
7168*5113495bSYour Name 	uint8_t,
7169*5113495bSYour Name 	tDot11fIEQBSSLoad*,
7170*5113495bSYour Name 	bool);
7171*5113495bSYour Name 
7172*5113495bSYour Name uint32_t dot11f_pack_ie_qbss_load(
7173*5113495bSYour Name 	tpAniSirGlobal,
7174*5113495bSYour Name 	tDot11fIEQBSSLoad *,
7175*5113495bSYour Name 	uint8_t *,
7176*5113495bSYour Name 	uint32_t,
7177*5113495bSYour Name 	uint32_t*);
7178*5113495bSYour Name 
7179*5113495bSYour Name uint32_t dot11f_get_packed_ie_QBSSLoad(
7180*5113495bSYour Name 	tpAniSirGlobal,
7181*5113495bSYour Name 	tDot11fIEQBSSLoad *,
7182*5113495bSYour Name 	uint32_t*);
7183*5113495bSYour Name 
7184*5113495bSYour Name #ifdef __cplusplus
7185*5113495bSYour Name }; /* End extern "C". */
7186*5113495bSYour Name #endif /* C++ */
7187*5113495bSYour Name 
7188*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0xa0, 0xc6} */
7189*5113495bSYour Name typedef struct sDot11fIEQComVendorIE {
7190*5113495bSYour Name 	uint8_t             present;
7191*5113495bSYour Name 	uint8_t             type;
7192*5113495bSYour Name 	uint8_t             channel;
7193*5113495bSYour Name } tDot11fIEQComVendorIE;
7194*5113495bSYour Name 
7195*5113495bSYour Name #define DOT11F_EID_QCOMVENDORIE (221)
7196*5113495bSYour Name 
7197*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7198*5113495bSYour Name #define DOT11F_IE_QCOMVENDORIE_MIN_LEN (5)
7199*5113495bSYour Name 
7200*5113495bSYour Name #define DOT11F_IE_QCOMVENDORIE_MAX_LEN (5)
7201*5113495bSYour Name 
7202*5113495bSYour Name #ifdef __cplusplus
7203*5113495bSYour Name extern "C" {
7204*5113495bSYour Name #endif /* C++ */
7205*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_QComVendorIE(
7206*5113495bSYour Name 	tpAniSirGlobal,
7207*5113495bSYour Name 	uint8_t *,
7208*5113495bSYour Name 	uint8_t,
7209*5113495bSYour Name 	tDot11fIEQComVendorIE*,
7210*5113495bSYour Name 	bool);
7211*5113495bSYour Name 
7212*5113495bSYour Name uint32_t dot11f_pack_ie_QComVendorIE(
7213*5113495bSYour Name 	tpAniSirGlobal,
7214*5113495bSYour Name 	tDot11fIEQComVendorIE *,
7215*5113495bSYour Name 	uint8_t *,
7216*5113495bSYour Name 	uint32_t,
7217*5113495bSYour Name 	uint32_t*);
7218*5113495bSYour Name 
7219*5113495bSYour Name uint32_t dot11f_get_packed_ie_QComVendorIE(
7220*5113495bSYour Name 	tpAniSirGlobal,
7221*5113495bSYour Name 	tDot11fIEQComVendorIE *,
7222*5113495bSYour Name 	uint32_t*);
7223*5113495bSYour Name 
7224*5113495bSYour Name #ifdef __cplusplus
7225*5113495bSYour Name }; /* End extern "C". */
7226*5113495bSYour Name #endif /* C++ */
7227*5113495bSYour Name 
7228*5113495bSYour Name /* EID 46 (0x2e) */
7229*5113495bSYour Name typedef struct sDot11fIEQOSCapsAp {
7230*5113495bSYour Name 	uint8_t             present;
7231*5113495bSYour Name 	uint8_t                count:4;
7232*5113495bSYour Name 	uint8_t                 qack:1;
7233*5113495bSYour Name 	uint8_t                 qreq:1;
7234*5113495bSYour Name 	uint8_t              txopreq:1;
7235*5113495bSYour Name 	uint8_t             reserved:1;
7236*5113495bSYour Name } tDot11fIEQOSCapsAp;
7237*5113495bSYour Name 
7238*5113495bSYour Name #define DOT11F_EID_QOSCAPSAP (46)
7239*5113495bSYour Name 
7240*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7241*5113495bSYour Name #define DOT11F_IE_QOSCAPSAP_MIN_LEN (1)
7242*5113495bSYour Name 
7243*5113495bSYour Name #define DOT11F_IE_QOSCAPSAP_MAX_LEN (1)
7244*5113495bSYour Name 
7245*5113495bSYour Name #ifdef __cplusplus
7246*5113495bSYour Name extern "C" {
7247*5113495bSYour Name #endif /* C++ */
7248*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_qos_caps_ap(
7249*5113495bSYour Name 	tpAniSirGlobal,
7250*5113495bSYour Name 	uint8_t *,
7251*5113495bSYour Name 	uint8_t,
7252*5113495bSYour Name 	tDot11fIEQOSCapsAp*,
7253*5113495bSYour Name 	bool);
7254*5113495bSYour Name 
7255*5113495bSYour Name uint32_t dot11f_pack_ie_qos_caps_ap(
7256*5113495bSYour Name 	tpAniSirGlobal,
7257*5113495bSYour Name 	tDot11fIEQOSCapsAp *,
7258*5113495bSYour Name 	uint8_t *,
7259*5113495bSYour Name 	uint32_t,
7260*5113495bSYour Name 	uint32_t*);
7261*5113495bSYour Name 
7262*5113495bSYour Name uint32_t dot11f_get_packed_ie_QOSCapsAp(
7263*5113495bSYour Name 	tpAniSirGlobal,
7264*5113495bSYour Name 	tDot11fIEQOSCapsAp *,
7265*5113495bSYour Name 	uint32_t*);
7266*5113495bSYour Name 
7267*5113495bSYour Name #ifdef __cplusplus
7268*5113495bSYour Name }; /* End extern "C". */
7269*5113495bSYour Name #endif /* C++ */
7270*5113495bSYour Name 
7271*5113495bSYour Name /* EID 46 (0x2e) */
7272*5113495bSYour Name typedef struct sDot11fIEQOSCapsStation {
7273*5113495bSYour Name 	uint8_t             present;
7274*5113495bSYour Name 	uint8_t           acvo_uapsd:1;
7275*5113495bSYour Name 	uint8_t           acvi_uapsd:1;
7276*5113495bSYour Name 	uint8_t           acbk_uapsd:1;
7277*5113495bSYour Name 	uint8_t           acbe_uapsd:1;
7278*5113495bSYour Name 	uint8_t                 qack:1;
7279*5113495bSYour Name 	uint8_t        max_sp_length:2;
7280*5113495bSYour Name 	uint8_t        more_data_ack:1;
7281*5113495bSYour Name } tDot11fIEQOSCapsStation;
7282*5113495bSYour Name 
7283*5113495bSYour Name #define DOT11F_EID_QOSCAPSSTATION (46)
7284*5113495bSYour Name 
7285*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7286*5113495bSYour Name #define DOT11F_IE_QOSCAPSSTATION_MIN_LEN (1)
7287*5113495bSYour Name 
7288*5113495bSYour Name #define DOT11F_IE_QOSCAPSSTATION_MAX_LEN (1)
7289*5113495bSYour Name 
7290*5113495bSYour Name #ifdef __cplusplus
7291*5113495bSYour Name extern "C" {
7292*5113495bSYour Name #endif /* C++ */
7293*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_qos_caps_station(
7294*5113495bSYour Name 	tpAniSirGlobal,
7295*5113495bSYour Name 	uint8_t *,
7296*5113495bSYour Name 	uint8_t,
7297*5113495bSYour Name 	tDot11fIEQOSCapsStation*,
7298*5113495bSYour Name 	bool);
7299*5113495bSYour Name 
7300*5113495bSYour Name uint32_t dot11f_pack_ie_qos_caps_station(
7301*5113495bSYour Name 	tpAniSirGlobal,
7302*5113495bSYour Name 	tDot11fIEQOSCapsStation *,
7303*5113495bSYour Name 	uint8_t *,
7304*5113495bSYour Name 	uint32_t,
7305*5113495bSYour Name 	uint32_t*);
7306*5113495bSYour Name 
7307*5113495bSYour Name uint32_t dot11f_get_packed_ie_QOSCapsStation(
7308*5113495bSYour Name 	tpAniSirGlobal,
7309*5113495bSYour Name 	tDot11fIEQOSCapsStation *,
7310*5113495bSYour Name 	uint32_t*);
7311*5113495bSYour Name 
7312*5113495bSYour Name #ifdef __cplusplus
7313*5113495bSYour Name }; /* End extern "C". */
7314*5113495bSYour Name #endif /* C++ */
7315*5113495bSYour Name 
7316*5113495bSYour Name /* EID 110 (0x6e) */
7317*5113495bSYour Name typedef struct sDot11fIEQosMapSet {
7318*5113495bSYour Name 	uint8_t             present;
7319*5113495bSYour Name 	uint8_t             num_dscp_exceptions;
7320*5113495bSYour Name 	uint8_t             dscp_exceptions[58];
7321*5113495bSYour Name } tDot11fIEQosMapSet;
7322*5113495bSYour Name 
7323*5113495bSYour Name #define DOT11F_EID_QOSMAPSET (110)
7324*5113495bSYour Name 
7325*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7326*5113495bSYour Name #define DOT11F_IE_QOSMAPSET_MIN_LEN (16)
7327*5113495bSYour Name 
7328*5113495bSYour Name #define DOT11F_IE_QOSMAPSET_MAX_LEN (58)
7329*5113495bSYour Name 
7330*5113495bSYour Name #ifdef __cplusplus
7331*5113495bSYour Name extern "C" {
7332*5113495bSYour Name #endif /* C++ */
7333*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_qos_map_set(
7334*5113495bSYour Name 	tpAniSirGlobal,
7335*5113495bSYour Name 	uint8_t *,
7336*5113495bSYour Name 	uint8_t,
7337*5113495bSYour Name 	tDot11fIEQosMapSet*,
7338*5113495bSYour Name 	bool);
7339*5113495bSYour Name 
7340*5113495bSYour Name uint32_t dot11f_pack_ie_qos_map_set(
7341*5113495bSYour Name 	tpAniSirGlobal,
7342*5113495bSYour Name 	tDot11fIEQosMapSet *,
7343*5113495bSYour Name 	uint8_t *,
7344*5113495bSYour Name 	uint32_t,
7345*5113495bSYour Name 	uint32_t*);
7346*5113495bSYour Name 
7347*5113495bSYour Name uint32_t dot11f_get_packed_ie_QosMapSet(
7348*5113495bSYour Name 	tpAniSirGlobal,
7349*5113495bSYour Name 	tDot11fIEQosMapSet *,
7350*5113495bSYour Name 	uint32_t*);
7351*5113495bSYour Name 
7352*5113495bSYour Name #ifdef __cplusplus
7353*5113495bSYour Name }; /* End extern "C". */
7354*5113495bSYour Name #endif /* C++ */
7355*5113495bSYour Name 
7356*5113495bSYour Name /* EID 40 (0x28) */
7357*5113495bSYour Name typedef struct sDot11fIEQuiet {
7358*5113495bSYour Name 	uint8_t             present;
7359*5113495bSYour Name 	uint8_t             count;
7360*5113495bSYour Name 	uint8_t             period;
7361*5113495bSYour Name 	uint16_t            duration;
7362*5113495bSYour Name 	uint16_t            offset;
7363*5113495bSYour Name } tDot11fIEQuiet;
7364*5113495bSYour Name 
7365*5113495bSYour Name #define DOT11F_EID_QUIET (40)
7366*5113495bSYour Name 
7367*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7368*5113495bSYour Name #define DOT11F_IE_QUIET_MIN_LEN (6)
7369*5113495bSYour Name 
7370*5113495bSYour Name #define DOT11F_IE_QUIET_MAX_LEN (6)
7371*5113495bSYour Name 
7372*5113495bSYour Name #ifdef __cplusplus
7373*5113495bSYour Name extern "C" {
7374*5113495bSYour Name #endif /* C++ */
7375*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_quiet(
7376*5113495bSYour Name 	tpAniSirGlobal,
7377*5113495bSYour Name 	uint8_t *,
7378*5113495bSYour Name 	uint8_t,
7379*5113495bSYour Name 	tDot11fIEQuiet*,
7380*5113495bSYour Name 	bool);
7381*5113495bSYour Name 
7382*5113495bSYour Name uint32_t dot11f_pack_ie_quiet(
7383*5113495bSYour Name 	tpAniSirGlobal,
7384*5113495bSYour Name 	tDot11fIEQuiet *,
7385*5113495bSYour Name 	uint8_t *,
7386*5113495bSYour Name 	uint32_t,
7387*5113495bSYour Name 	uint32_t*);
7388*5113495bSYour Name 
7389*5113495bSYour Name uint32_t dot11f_get_packed_ie_Quiet(
7390*5113495bSYour Name 	tpAniSirGlobal,
7391*5113495bSYour Name 	tDot11fIEQuiet *,
7392*5113495bSYour Name 	uint32_t*);
7393*5113495bSYour Name 
7394*5113495bSYour Name #ifdef __cplusplus
7395*5113495bSYour Name }; /* End extern "C". */
7396*5113495bSYour Name #endif /* C++ */
7397*5113495bSYour Name 
7398*5113495bSYour Name /* EID 53 (0x35) */
7399*5113495bSYour Name typedef struct sDot11fIERCPIIE {
7400*5113495bSYour Name 	uint8_t             present;
7401*5113495bSYour Name 	uint8_t             rcpi;
7402*5113495bSYour Name } tDot11fIERCPIIE;
7403*5113495bSYour Name 
7404*5113495bSYour Name #define DOT11F_EID_RCPIIE (53)
7405*5113495bSYour Name 
7406*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7407*5113495bSYour Name #define DOT11F_IE_RCPIIE_MIN_LEN (1)
7408*5113495bSYour Name 
7409*5113495bSYour Name #define DOT11F_IE_RCPIIE_MAX_LEN (1)
7410*5113495bSYour Name 
7411*5113495bSYour Name #ifdef __cplusplus
7412*5113495bSYour Name extern "C" {
7413*5113495bSYour Name #endif /* C++ */
7414*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_rcpiie(
7415*5113495bSYour Name 	tpAniSirGlobal,
7416*5113495bSYour Name 	uint8_t *,
7417*5113495bSYour Name 	uint8_t,
7418*5113495bSYour Name 	tDot11fIERCPIIE*,
7419*5113495bSYour Name 	bool);
7420*5113495bSYour Name 
7421*5113495bSYour Name uint32_t dot11f_pack_ie_rcpiie(
7422*5113495bSYour Name 	tpAniSirGlobal,
7423*5113495bSYour Name 	tDot11fIERCPIIE *,
7424*5113495bSYour Name 	uint8_t *,
7425*5113495bSYour Name 	uint32_t,
7426*5113495bSYour Name 	uint32_t*);
7427*5113495bSYour Name 
7428*5113495bSYour Name uint32_t dot11f_get_packed_ie_RCPIIE(
7429*5113495bSYour Name 	tpAniSirGlobal,
7430*5113495bSYour Name 	tDot11fIERCPIIE *,
7431*5113495bSYour Name 	uint32_t*);
7432*5113495bSYour Name 
7433*5113495bSYour Name #ifdef __cplusplus
7434*5113495bSYour Name }; /* End extern "C". */
7435*5113495bSYour Name #endif /* C++ */
7436*5113495bSYour Name 
7437*5113495bSYour Name /* EID 57 (0x39) */
7438*5113495bSYour Name typedef struct sDot11fIERICDataDesc {
7439*5113495bSYour Name 	uint8_t                       present;
7440*5113495bSYour Name 	tDot11fIERICData              RICData;
7441*5113495bSYour Name 	tDot11fIERICDescriptor        RICDescriptor;
7442*5113495bSYour Name 	tDot11fIETSPEC                TSPEC;
7443*5113495bSYour Name 	uint16_t                      num_TCLAS;
7444*5113495bSYour Name 	tDot11fIETCLAS                TCLAS[2];
7445*5113495bSYour Name 	tDot11fIETCLASSPROC           TCLASSPROC;
7446*5113495bSYour Name 	tDot11fIETSDelay              TSDelay;
7447*5113495bSYour Name 	tDot11fIESchedule             Schedule;
7448*5113495bSYour Name 	tDot11fIEWMMTSPEC             WMMTSPEC;
7449*5113495bSYour Name 	uint16_t                      num_WMMTCLAS;
7450*5113495bSYour Name 	tDot11fIEWMMTCLAS             WMMTCLAS[2];
7451*5113495bSYour Name 	tDot11fIEWMMTCLASPROC         WMMTCLASPROC;
7452*5113495bSYour Name 	tDot11fIEWMMTSDelay           WMMTSDelay;
7453*5113495bSYour Name 	tDot11fIEWMMSchedule          WMMSchedule;
7454*5113495bSYour Name } tDot11fIERICDataDesc;
7455*5113495bSYour Name 
7456*5113495bSYour Name #define DOT11F_EID_RICDATADESC (57)
7457*5113495bSYour Name 
7458*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7459*5113495bSYour Name #define DOT11F_IE_RICDATADESC_MIN_LEN (0)
7460*5113495bSYour Name 
7461*5113495bSYour Name #define DOT11F_IE_RICDATADESC_MAX_LEN (548)
7462*5113495bSYour Name 
7463*5113495bSYour Name #ifdef __cplusplus
7464*5113495bSYour Name extern "C" {
7465*5113495bSYour Name #endif /* C++ */
7466*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ric_data_desc(
7467*5113495bSYour Name 	tpAniSirGlobal,
7468*5113495bSYour Name 	uint8_t *,
7469*5113495bSYour Name 	uint8_t,
7470*5113495bSYour Name 	tDot11fIERICDataDesc*,
7471*5113495bSYour Name 	bool);
7472*5113495bSYour Name 
7473*5113495bSYour Name uint32_t dot11f_pack_ie_ric_data_desc(
7474*5113495bSYour Name 	tpAniSirGlobal,
7475*5113495bSYour Name 	tDot11fIERICDataDesc *,
7476*5113495bSYour Name 	uint8_t *,
7477*5113495bSYour Name 	uint32_t,
7478*5113495bSYour Name 	uint32_t*);
7479*5113495bSYour Name 
7480*5113495bSYour Name uint32_t dot11f_get_packed_ieric_data_desc(
7481*5113495bSYour Name 	tpAniSirGlobal,
7482*5113495bSYour Name 	tDot11fIERICDataDesc *,
7483*5113495bSYour Name 	uint32_t*);
7484*5113495bSYour Name 
7485*5113495bSYour Name #ifdef __cplusplus
7486*5113495bSYour Name }; /* End extern "C". */
7487*5113495bSYour Name #endif /* C++ */
7488*5113495bSYour Name 
7489*5113495bSYour Name /* EID 48 (0x30) */
7490*5113495bSYour Name typedef struct sDot11fIERSN {
7491*5113495bSYour Name 	uint8_t             present;
7492*5113495bSYour Name 	uint16_t            version /* Must be 1! */;
7493*5113495bSYour Name 	uint8_t             gp_cipher_suite_present;
7494*5113495bSYour Name 	uint8_t             gp_cipher_suite[4];
7495*5113495bSYour Name 	uint16_t            pwise_cipher_suite_count;
7496*5113495bSYour Name 	uint8_t             pwise_cipher_suites[6][4];
7497*5113495bSYour Name 	uint16_t            akm_suite_cnt;
7498*5113495bSYour Name 	uint8_t             akm_suite[6][4];
7499*5113495bSYour Name 	uint8_t             RSN_Cap_present;
7500*5113495bSYour Name 	uint8_t             RSN_Cap[2];
7501*5113495bSYour Name 	uint16_t            pmkid_count;
7502*5113495bSYour Name 	uint8_t             pmkid[4][16];
7503*5113495bSYour Name 	uint8_t             gp_mgmt_cipher_suite_present;
7504*5113495bSYour Name 	uint8_t             gp_mgmt_cipher_suite[4];
7505*5113495bSYour Name } tDot11fIERSN;
7506*5113495bSYour Name 
7507*5113495bSYour Name #define DOT11F_EID_RSN (48)
7508*5113495bSYour Name 
7509*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7510*5113495bSYour Name #define DOT11F_IE_RSN_MIN_LEN (2)
7511*5113495bSYour Name 
7512*5113495bSYour Name #define DOT11F_IE_RSN_MAX_LEN (130)
7513*5113495bSYour Name 
7514*5113495bSYour Name #ifdef __cplusplus
7515*5113495bSYour Name extern "C" {
7516*5113495bSYour Name #endif /* C++ */
7517*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_rsn(
7518*5113495bSYour Name 	tpAniSirGlobal,
7519*5113495bSYour Name 	uint8_t *,
7520*5113495bSYour Name 	uint8_t,
7521*5113495bSYour Name 	tDot11fIERSN*,
7522*5113495bSYour Name 	bool);
7523*5113495bSYour Name 
7524*5113495bSYour Name uint32_t dot11f_pack_ie_rsn(
7525*5113495bSYour Name 	tpAniSirGlobal,
7526*5113495bSYour Name 	tDot11fIERSN *,
7527*5113495bSYour Name 	uint8_t *,
7528*5113495bSYour Name 	uint32_t,
7529*5113495bSYour Name 	uint32_t*);
7530*5113495bSYour Name 
7531*5113495bSYour Name uint32_t dot11f_get_packed_iersn(
7532*5113495bSYour Name 	tpAniSirGlobal,
7533*5113495bSYour Name 	tDot11fIERSN *,
7534*5113495bSYour Name 	uint32_t*);
7535*5113495bSYour Name 
7536*5113495bSYour Name #ifdef __cplusplus
7537*5113495bSYour Name }; /* End extern "C". */
7538*5113495bSYour Name #endif /* C++ */
7539*5113495bSYour Name 
7540*5113495bSYour Name /* EID 65 (0x41) */
7541*5113495bSYour Name typedef struct sDot11fIERSNIIE {
7542*5113495bSYour Name 	uint8_t             present;
7543*5113495bSYour Name 	uint8_t             rsni;
7544*5113495bSYour Name } tDot11fIERSNIIE;
7545*5113495bSYour Name 
7546*5113495bSYour Name #define DOT11F_EID_RSNIIE (65)
7547*5113495bSYour Name 
7548*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7549*5113495bSYour Name #define DOT11F_IE_RSNIIE_MIN_LEN (1)
7550*5113495bSYour Name 
7551*5113495bSYour Name #define DOT11F_IE_RSNIIE_MAX_LEN (1)
7552*5113495bSYour Name 
7553*5113495bSYour Name #ifdef __cplusplus
7554*5113495bSYour Name extern "C" {
7555*5113495bSYour Name #endif /* C++ */
7556*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_rsniie(
7557*5113495bSYour Name 	tpAniSirGlobal,
7558*5113495bSYour Name 	uint8_t *,
7559*5113495bSYour Name 	uint8_t,
7560*5113495bSYour Name 	tDot11fIERSNIIE*,
7561*5113495bSYour Name 	bool);
7562*5113495bSYour Name 
7563*5113495bSYour Name uint32_t dot11f_pack_ie_rsniie(
7564*5113495bSYour Name 	tpAniSirGlobal,
7565*5113495bSYour Name 	tDot11fIERSNIIE *,
7566*5113495bSYour Name 	uint8_t *,
7567*5113495bSYour Name 	uint32_t,
7568*5113495bSYour Name 	uint32_t*);
7569*5113495bSYour Name 
7570*5113495bSYour Name uint32_t dot11f_get_packed_iersnIIE(
7571*5113495bSYour Name 	tpAniSirGlobal,
7572*5113495bSYour Name 	tDot11fIERSNIIE *,
7573*5113495bSYour Name 	uint32_t*);
7574*5113495bSYour Name 
7575*5113495bSYour Name #ifdef __cplusplus
7576*5113495bSYour Name }; /* End extern "C". */
7577*5113495bSYour Name #endif /* C++ */
7578*5113495bSYour Name 
7579*5113495bSYour Name /* EID 48 (0x30) */
7580*5113495bSYour Name typedef struct sDot11fIERSNOpaque {
7581*5113495bSYour Name 	uint8_t             present;
7582*5113495bSYour Name 	uint8_t             num_data;
7583*5113495bSYour Name 	uint8_t             data[253];
7584*5113495bSYour Name } tDot11fIERSNOpaque;
7585*5113495bSYour Name 
7586*5113495bSYour Name #define DOT11F_EID_RSNOPAQUE (48)
7587*5113495bSYour Name 
7588*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7589*5113495bSYour Name #define DOT11F_IE_RSNOPAQUE_MIN_LEN (0)
7590*5113495bSYour Name 
7591*5113495bSYour Name #define DOT11F_IE_RSNOPAQUE_MAX_LEN (253)
7592*5113495bSYour Name 
7593*5113495bSYour Name #ifdef __cplusplus
7594*5113495bSYour Name extern "C" {
7595*5113495bSYour Name #endif /* C++ */
7596*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_rsn_opaque(
7597*5113495bSYour Name 	tpAniSirGlobal,
7598*5113495bSYour Name 	uint8_t *,
7599*5113495bSYour Name 	uint8_t,
7600*5113495bSYour Name 	tDot11fIERSNOpaque*,
7601*5113495bSYour Name 	bool);
7602*5113495bSYour Name 
7603*5113495bSYour Name uint32_t dot11f_pack_ie_rsn_opaque(
7604*5113495bSYour Name 	tpAniSirGlobal,
7605*5113495bSYour Name 	tDot11fIERSNOpaque *,
7606*5113495bSYour Name 	uint8_t *,
7607*5113495bSYour Name 	uint32_t,
7608*5113495bSYour Name 	uint32_t*);
7609*5113495bSYour Name 
7610*5113495bSYour Name uint32_t dot11f_get_packed_iersnOpaque(
7611*5113495bSYour Name 	tpAniSirGlobal,
7612*5113495bSYour Name 	tDot11fIERSNOpaque *,
7613*5113495bSYour Name 	uint32_t*);
7614*5113495bSYour Name 
7615*5113495bSYour Name #ifdef __cplusplus
7616*5113495bSYour Name }; /* End extern "C". */
7617*5113495bSYour Name #endif /* C++ */
7618*5113495bSYour Name 
7619*5113495bSYour Name /* EID 36 (0x24) */
7620*5113495bSYour Name typedef struct sDot11fIESuppChannels {
7621*5113495bSYour Name 	uint8_t             present;
7622*5113495bSYour Name 	uint8_t             num_bands;
7623*5113495bSYour Name 	uint8_t             bands[48][2];
7624*5113495bSYour Name } tDot11fIESuppChannels;
7625*5113495bSYour Name 
7626*5113495bSYour Name #define DOT11F_EID_SUPPCHANNELS (36)
7627*5113495bSYour Name 
7628*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7629*5113495bSYour Name #define DOT11F_IE_SUPPCHANNELS_MIN_LEN (0)
7630*5113495bSYour Name 
7631*5113495bSYour Name #define DOT11F_IE_SUPPCHANNELS_MAX_LEN (96)
7632*5113495bSYour Name 
7633*5113495bSYour Name #ifdef __cplusplus
7634*5113495bSYour Name extern "C" {
7635*5113495bSYour Name #endif /* C++ */
7636*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_supp_channels(
7637*5113495bSYour Name 	tpAniSirGlobal,
7638*5113495bSYour Name 	uint8_t *,
7639*5113495bSYour Name 	uint8_t,
7640*5113495bSYour Name 	tDot11fIESuppChannels*,
7641*5113495bSYour Name 	bool);
7642*5113495bSYour Name 
7643*5113495bSYour Name uint32_t dot11f_pack_ie_supp_channels(
7644*5113495bSYour Name 	tpAniSirGlobal,
7645*5113495bSYour Name 	tDot11fIESuppChannels *,
7646*5113495bSYour Name 	uint8_t *,
7647*5113495bSYour Name 	uint32_t,
7648*5113495bSYour Name 	uint32_t*);
7649*5113495bSYour Name 
7650*5113495bSYour Name uint32_t dot11f_get_packed_ie_SuppChannels(
7651*5113495bSYour Name 	tpAniSirGlobal,
7652*5113495bSYour Name 	tDot11fIESuppChannels *,
7653*5113495bSYour Name 	uint32_t*);
7654*5113495bSYour Name 
7655*5113495bSYour Name #ifdef __cplusplus
7656*5113495bSYour Name }; /* End extern "C". */
7657*5113495bSYour Name #endif /* C++ */
7658*5113495bSYour Name 
7659*5113495bSYour Name /* EID 59 (0x3b) */
7660*5113495bSYour Name typedef struct sDot11fIESuppOperatingClasses {
7661*5113495bSYour Name 	uint8_t             present;
7662*5113495bSYour Name 	uint8_t             num_classes;
7663*5113495bSYour Name 	uint8_t             classes[32];
7664*5113495bSYour Name } tDot11fIESuppOperatingClasses;
7665*5113495bSYour Name 
7666*5113495bSYour Name #define DOT11F_EID_SUPPOPERATINGCLASSES (59)
7667*5113495bSYour Name 
7668*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7669*5113495bSYour Name #define DOT11F_IE_SUPPOPERATINGCLASSES_MIN_LEN (1)
7670*5113495bSYour Name 
7671*5113495bSYour Name #define DOT11F_IE_SUPPOPERATINGCLASSES_MAX_LEN (32)
7672*5113495bSYour Name 
7673*5113495bSYour Name #ifdef __cplusplus
7674*5113495bSYour Name extern "C" {
7675*5113495bSYour Name #endif /* C++ */
7676*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_supp_operating_classes(
7677*5113495bSYour Name 	tpAniSirGlobal,
7678*5113495bSYour Name 	uint8_t *,
7679*5113495bSYour Name 	uint8_t,
7680*5113495bSYour Name 	tDot11fIESuppOperatingClasses*,
7681*5113495bSYour Name 	bool);
7682*5113495bSYour Name 
7683*5113495bSYour Name uint32_t dot11f_pack_ie_supp_operating_classes(
7684*5113495bSYour Name 	tpAniSirGlobal,
7685*5113495bSYour Name 	tDot11fIESuppOperatingClasses *,
7686*5113495bSYour Name 	uint8_t *,
7687*5113495bSYour Name 	uint32_t,
7688*5113495bSYour Name 	uint32_t*);
7689*5113495bSYour Name 
7690*5113495bSYour Name uint32_t dot11f_get_packed_ie_SuppOperatingClasses(
7691*5113495bSYour Name 	tpAniSirGlobal,
7692*5113495bSYour Name 	tDot11fIESuppOperatingClasses *,
7693*5113495bSYour Name 	uint32_t*);
7694*5113495bSYour Name 
7695*5113495bSYour Name #ifdef __cplusplus
7696*5113495bSYour Name }; /* End extern "C". */
7697*5113495bSYour Name #endif /* C++ */
7698*5113495bSYour Name 
7699*5113495bSYour Name /* EID 1 (0x01) */
7700*5113495bSYour Name typedef struct sDot11fIESuppRates {
7701*5113495bSYour Name 	uint8_t             present;
7702*5113495bSYour Name 	uint8_t             num_rates;
7703*5113495bSYour Name 	uint8_t             rates[12];
7704*5113495bSYour Name } tDot11fIESuppRates;
7705*5113495bSYour Name 
7706*5113495bSYour Name #define DOT11F_EID_SUPPRATES (1)
7707*5113495bSYour Name 
7708*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7709*5113495bSYour Name #define DOT11F_IE_SUPPRATES_MIN_LEN (0)
7710*5113495bSYour Name 
7711*5113495bSYour Name #define DOT11F_IE_SUPPRATES_MAX_LEN (12)
7712*5113495bSYour Name 
7713*5113495bSYour Name #define DOT11F_IS_BG_RATE(_x)  (((_x) == 02) || \
7714*5113495bSYour Name 				((_x) == 04) || \
7715*5113495bSYour Name 				((_x) == 11) || \
7716*5113495bSYour Name 				((_x) == 22) || \
7717*5113495bSYour Name 				((_x) == 12) || \
7718*5113495bSYour Name 				((_x) == 18) || \
7719*5113495bSYour Name 				((_x) == 24) || \
7720*5113495bSYour Name 				((_x) == 36) || \
7721*5113495bSYour Name 				((_x) == 48) || \
7722*5113495bSYour Name 				((_x) == 72) || \
7723*5113495bSYour Name 				((_x) == 96) || \
7724*5113495bSYour Name 				((_x) == 108))
7725*5113495bSYour Name 
7726*5113495bSYour Name #ifdef __cplusplus
7727*5113495bSYour Name extern "C" {
7728*5113495bSYour Name #endif /* C++ */
7729*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_supp_rates(
7730*5113495bSYour Name 	tpAniSirGlobal,
7731*5113495bSYour Name 	uint8_t *,
7732*5113495bSYour Name 	uint8_t,
7733*5113495bSYour Name 	tDot11fIESuppRates*,
7734*5113495bSYour Name 	bool);
7735*5113495bSYour Name 
7736*5113495bSYour Name uint32_t dot11f_pack_ie_supp_rates(
7737*5113495bSYour Name 	tpAniSirGlobal,
7738*5113495bSYour Name 	tDot11fIESuppRates *,
7739*5113495bSYour Name 	uint8_t *,
7740*5113495bSYour Name 	uint32_t,
7741*5113495bSYour Name 	uint32_t*);
7742*5113495bSYour Name 
7743*5113495bSYour Name uint32_t dot11f_get_packed_ie_SuppRates(
7744*5113495bSYour Name 	tpAniSirGlobal,
7745*5113495bSYour Name 	tDot11fIESuppRates *,
7746*5113495bSYour Name 	uint32_t*);
7747*5113495bSYour Name 
7748*5113495bSYour Name #ifdef __cplusplus
7749*5113495bSYour Name }; /* End extern "C". */
7750*5113495bSYour Name #endif /* C++ */
7751*5113495bSYour Name 
7752*5113495bSYour Name /* EID 5 (0x05) */
7753*5113495bSYour Name typedef struct sDot11fIETIM {
7754*5113495bSYour Name 	uint8_t             present;
7755*5113495bSYour Name 	uint8_t             dtim_count;
7756*5113495bSYour Name 	uint8_t             dtim_period;
7757*5113495bSYour Name 	uint8_t             bmpctl;
7758*5113495bSYour Name 	uint8_t             num_vbmp;
7759*5113495bSYour Name 	uint8_t             vbmp[251];
7760*5113495bSYour Name } tDot11fIETIM;
7761*5113495bSYour Name 
7762*5113495bSYour Name #define DOT11F_EID_TIM (5)
7763*5113495bSYour Name 
7764*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7765*5113495bSYour Name #define DOT11F_IE_TIM_MIN_LEN (4)
7766*5113495bSYour Name 
7767*5113495bSYour Name #define DOT11F_IE_TIM_MAX_LEN (254)
7768*5113495bSYour Name 
7769*5113495bSYour Name #ifdef __cplusplus
7770*5113495bSYour Name extern "C" {
7771*5113495bSYour Name #endif /* C++ */
7772*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_tim(
7773*5113495bSYour Name 	tpAniSirGlobal,
7774*5113495bSYour Name 	uint8_t *,
7775*5113495bSYour Name 	uint8_t,
7776*5113495bSYour Name 	tDot11fIETIM*,
7777*5113495bSYour Name 	bool);
7778*5113495bSYour Name 
7779*5113495bSYour Name uint32_t dot11f_pack_ie_tim(
7780*5113495bSYour Name 	tpAniSirGlobal,
7781*5113495bSYour Name 	tDot11fIETIM *,
7782*5113495bSYour Name 	uint8_t *,
7783*5113495bSYour Name 	uint32_t,
7784*5113495bSYour Name 	uint32_t*);
7785*5113495bSYour Name 
7786*5113495bSYour Name uint32_t dot11f_get_packed_ie_TIM(
7787*5113495bSYour Name 	tpAniSirGlobal,
7788*5113495bSYour Name 	tDot11fIETIM *,
7789*5113495bSYour Name 	uint32_t*);
7790*5113495bSYour Name 
7791*5113495bSYour Name #ifdef __cplusplus
7792*5113495bSYour Name }; /* End extern "C". */
7793*5113495bSYour Name #endif /* C++ */
7794*5113495bSYour Name 
7795*5113495bSYour Name /* EID 35 (0x23) */
7796*5113495bSYour Name typedef struct sDot11fIETPCReport {
7797*5113495bSYour Name 	uint8_t             present;
7798*5113495bSYour Name 	uint8_t             tx_power;
7799*5113495bSYour Name 	uint8_t             link_margin;
7800*5113495bSYour Name } tDot11fIETPCReport;
7801*5113495bSYour Name 
7802*5113495bSYour Name #define DOT11F_EID_TPCREPORT (35)
7803*5113495bSYour Name 
7804*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7805*5113495bSYour Name #define DOT11F_IE_TPCREPORT_MIN_LEN (2)
7806*5113495bSYour Name 
7807*5113495bSYour Name #define DOT11F_IE_TPCREPORT_MAX_LEN (2)
7808*5113495bSYour Name 
7809*5113495bSYour Name #ifdef __cplusplus
7810*5113495bSYour Name extern "C" {
7811*5113495bSYour Name #endif /* C++ */
7812*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_tpc_report(
7813*5113495bSYour Name 	tpAniSirGlobal,
7814*5113495bSYour Name 	uint8_t *,
7815*5113495bSYour Name 	uint8_t,
7816*5113495bSYour Name 	tDot11fIETPCReport*,
7817*5113495bSYour Name 	bool);
7818*5113495bSYour Name 
7819*5113495bSYour Name uint32_t dot11f_pack_ie_tpc_report(
7820*5113495bSYour Name 	tpAniSirGlobal,
7821*5113495bSYour Name 	tDot11fIETPCReport *,
7822*5113495bSYour Name 	uint8_t *,
7823*5113495bSYour Name 	uint32_t,
7824*5113495bSYour Name 	uint32_t*);
7825*5113495bSYour Name 
7826*5113495bSYour Name uint32_t dot11f_get_packed_ie_TPCReport(
7827*5113495bSYour Name 	tpAniSirGlobal,
7828*5113495bSYour Name 	tDot11fIETPCReport *,
7829*5113495bSYour Name 	uint32_t*);
7830*5113495bSYour Name 
7831*5113495bSYour Name #ifdef __cplusplus
7832*5113495bSYour Name }; /* End extern "C". */
7833*5113495bSYour Name #endif /* C++ */
7834*5113495bSYour Name 
7835*5113495bSYour Name /* EID 34 (0x22) */
7836*5113495bSYour Name typedef struct sDot11fIETPCRequest {
7837*5113495bSYour Name 	uint8_t             present;
7838*5113495bSYour Name } tDot11fIETPCRequest;
7839*5113495bSYour Name 
7840*5113495bSYour Name #define DOT11F_EID_TPCREQUEST (34)
7841*5113495bSYour Name 
7842*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7843*5113495bSYour Name #define DOT11F_IE_TPCREQUEST_MIN_LEN (0)
7844*5113495bSYour Name 
7845*5113495bSYour Name #define DOT11F_IE_TPCREQUEST_MAX_LEN (0)
7846*5113495bSYour Name 
7847*5113495bSYour Name #ifdef __cplusplus
7848*5113495bSYour Name extern "C" {
7849*5113495bSYour Name #endif /* C++ */
7850*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_tpc_request(
7851*5113495bSYour Name 	tpAniSirGlobal,
7852*5113495bSYour Name 	uint8_t *,
7853*5113495bSYour Name 	uint8_t,
7854*5113495bSYour Name 	tDot11fIETPCRequest*,
7855*5113495bSYour Name 	bool);
7856*5113495bSYour Name 
7857*5113495bSYour Name uint32_t dot11f_pack_ie_tpc_request(
7858*5113495bSYour Name 	tpAniSirGlobal,
7859*5113495bSYour Name 	tDot11fIETPCRequest *,
7860*5113495bSYour Name 	uint8_t *,
7861*5113495bSYour Name 	uint32_t,
7862*5113495bSYour Name 	uint32_t*);
7863*5113495bSYour Name 
7864*5113495bSYour Name uint32_t dot11f_get_packed_ie_TPCRequest(
7865*5113495bSYour Name 	tpAniSirGlobal,
7866*5113495bSYour Name 	tDot11fIETPCRequest *,
7867*5113495bSYour Name 	uint32_t*);
7868*5113495bSYour Name 
7869*5113495bSYour Name #ifdef __cplusplus
7870*5113495bSYour Name }; /* End extern "C". */
7871*5113495bSYour Name #endif /* C++ */
7872*5113495bSYour Name 
7873*5113495bSYour Name /* EID 69 (0x45) */
7874*5113495bSYour Name typedef struct sDot11fIETimeAdvertisement {
7875*5113495bSYour Name 	uint8_t             present;
7876*5113495bSYour Name 	uint8_t             timing_capabilities;
7877*5113495bSYour Name 	uint8_t             time_value[10];
7878*5113495bSYour Name 	uint8_t             time_error[5];
7879*5113495bSYour Name } tDot11fIETimeAdvertisement;
7880*5113495bSYour Name 
7881*5113495bSYour Name #define DOT11F_EID_TIMEADVERTISEMENT (69)
7882*5113495bSYour Name 
7883*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7884*5113495bSYour Name #define DOT11F_IE_TIMEADVERTISEMENT_MIN_LEN (16)
7885*5113495bSYour Name 
7886*5113495bSYour Name #define DOT11F_IE_TIMEADVERTISEMENT_MAX_LEN (16)
7887*5113495bSYour Name 
7888*5113495bSYour Name #ifdef __cplusplus
7889*5113495bSYour Name extern "C" {
7890*5113495bSYour Name #endif /* C++ */
7891*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_time_advertisement(
7892*5113495bSYour Name 	tpAniSirGlobal,
7893*5113495bSYour Name 	uint8_t *,
7894*5113495bSYour Name 	uint8_t,
7895*5113495bSYour Name 	tDot11fIETimeAdvertisement*,
7896*5113495bSYour Name 	bool);
7897*5113495bSYour Name 
7898*5113495bSYour Name uint32_t dot11f_pack_ie_time_advertisement(
7899*5113495bSYour Name 	tpAniSirGlobal,
7900*5113495bSYour Name 	tDot11fIETimeAdvertisement *,
7901*5113495bSYour Name 	uint8_t *,
7902*5113495bSYour Name 	uint32_t,
7903*5113495bSYour Name 	uint32_t*);
7904*5113495bSYour Name 
7905*5113495bSYour Name uint32_t dot11f_get_packed_ie_time_advertisement(
7906*5113495bSYour Name 	tpAniSirGlobal,
7907*5113495bSYour Name 	tDot11fIETimeAdvertisement *,
7908*5113495bSYour Name 	uint32_t*);
7909*5113495bSYour Name 
7910*5113495bSYour Name #ifdef __cplusplus
7911*5113495bSYour Name }; /* End extern "C". */
7912*5113495bSYour Name #endif /* C++ */
7913*5113495bSYour Name 
7914*5113495bSYour Name /* EID 56 (0x38) */
7915*5113495bSYour Name typedef struct sDot11fIETimeoutInterval {
7916*5113495bSYour Name 	uint8_t             present;
7917*5113495bSYour Name 	uint8_t             timeoutType;
7918*5113495bSYour Name 	uint32_t            timeoutValue;
7919*5113495bSYour Name } tDot11fIETimeoutInterval;
7920*5113495bSYour Name 
7921*5113495bSYour Name #define DOT11F_EID_TIMEOUTINTERVAL (56)
7922*5113495bSYour Name 
7923*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7924*5113495bSYour Name #define DOT11F_IE_TIMEOUTINTERVAL_MIN_LEN (5)
7925*5113495bSYour Name 
7926*5113495bSYour Name #define DOT11F_IE_TIMEOUTINTERVAL_MAX_LEN (5)
7927*5113495bSYour Name 
7928*5113495bSYour Name #ifdef __cplusplus
7929*5113495bSYour Name extern "C" {
7930*5113495bSYour Name #endif /* C++ */
7931*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_timeout_interval(
7932*5113495bSYour Name 	tpAniSirGlobal,
7933*5113495bSYour Name 	uint8_t *,
7934*5113495bSYour Name 	uint8_t,
7935*5113495bSYour Name 	tDot11fIETimeoutInterval*,
7936*5113495bSYour Name 	bool);
7937*5113495bSYour Name 
7938*5113495bSYour Name uint32_t dot11f_pack_ie_timeout_interval(
7939*5113495bSYour Name 	tpAniSirGlobal,
7940*5113495bSYour Name 	tDot11fIETimeoutInterval *,
7941*5113495bSYour Name 	uint8_t *,
7942*5113495bSYour Name 	uint32_t,
7943*5113495bSYour Name 	uint32_t*);
7944*5113495bSYour Name 
7945*5113495bSYour Name uint32_t dot11f_get_packed_ie_TimeoutInterval(
7946*5113495bSYour Name 	tpAniSirGlobal,
7947*5113495bSYour Name 	tDot11fIETimeoutInterval *,
7948*5113495bSYour Name 	uint32_t*);
7949*5113495bSYour Name 
7950*5113495bSYour Name #ifdef __cplusplus
7951*5113495bSYour Name }; /* End extern "C". */
7952*5113495bSYour Name #endif /* C++ */
7953*5113495bSYour Name 
7954*5113495bSYour Name /* EID 193 (0xc1) */
7955*5113495bSYour Name typedef struct sDot11fIEVHTExtBssLoad {
7956*5113495bSYour Name 	uint8_t             present;
7957*5113495bSYour Name 	uint8_t             muMIMOCapStaCount;
7958*5113495bSYour Name 	uint8_t             ssUnderUtil;
7959*5113495bSYour Name 	uint8_t             FortyMHzUtil;
7960*5113495bSYour Name 	uint8_t             EightyMHzUtil;
7961*5113495bSYour Name 	uint8_t             OneSixtyMHzUtil;
7962*5113495bSYour Name } tDot11fIEVHTExtBssLoad;
7963*5113495bSYour Name 
7964*5113495bSYour Name #define DOT11F_EID_VHTEXTBSSLOAD (193)
7965*5113495bSYour Name 
7966*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
7967*5113495bSYour Name #define DOT11F_IE_VHTEXTBSSLOAD_MIN_LEN (5)
7968*5113495bSYour Name 
7969*5113495bSYour Name #define DOT11F_IE_VHTEXTBSSLOAD_MAX_LEN (5)
7970*5113495bSYour Name 
7971*5113495bSYour Name #ifdef __cplusplus
7972*5113495bSYour Name extern "C" {
7973*5113495bSYour Name #endif /* C++ */
7974*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_vht_ext_bss_load(
7975*5113495bSYour Name 	tpAniSirGlobal,
7976*5113495bSYour Name 	uint8_t *,
7977*5113495bSYour Name 	uint8_t,
7978*5113495bSYour Name 	tDot11fIEVHTExtBssLoad*,
7979*5113495bSYour Name 	bool);
7980*5113495bSYour Name 
7981*5113495bSYour Name uint32_t dot11f_pack_ie_vht_ext_bss_load(
7982*5113495bSYour Name 	tpAniSirGlobal,
7983*5113495bSYour Name 	tDot11fIEVHTExtBssLoad *,
7984*5113495bSYour Name 	uint8_t *,
7985*5113495bSYour Name 	uint32_t,
7986*5113495bSYour Name 	uint32_t*);
7987*5113495bSYour Name 
7988*5113495bSYour Name uint32_t dot11f_get_packed_ie_VHTExtBssLoad(
7989*5113495bSYour Name 	tpAniSirGlobal,
7990*5113495bSYour Name 	tDot11fIEVHTExtBssLoad *,
7991*5113495bSYour Name 	uint32_t*);
7992*5113495bSYour Name 
7993*5113495bSYour Name #ifdef __cplusplus
7994*5113495bSYour Name }; /* End extern "C". */
7995*5113495bSYour Name #endif /* C++ */
7996*5113495bSYour Name 
7997*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x10, 0x18} */
7998*5113495bSYour Name typedef struct sDot11fIEVendor1IE {
7999*5113495bSYour Name 	uint8_t             present;
8000*5113495bSYour Name } tDot11fIEVendor1IE;
8001*5113495bSYour Name 
8002*5113495bSYour Name #define DOT11F_EID_VENDOR1IE (221)
8003*5113495bSYour Name 
8004*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8005*5113495bSYour Name #define DOT11F_IE_VENDOR1IE_MIN_LEN (3)
8006*5113495bSYour Name 
8007*5113495bSYour Name #define DOT11F_IE_VENDOR1IE_MAX_LEN (3)
8008*5113495bSYour Name 
8009*5113495bSYour Name #ifdef __cplusplus
8010*5113495bSYour Name extern "C" {
8011*5113495bSYour Name #endif /* C++ */
8012*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_vendor1_ie(
8013*5113495bSYour Name 	tpAniSirGlobal,
8014*5113495bSYour Name 	uint8_t *,
8015*5113495bSYour Name 	uint8_t,
8016*5113495bSYour Name 	tDot11fIEVendor1IE*,
8017*5113495bSYour Name 	bool);
8018*5113495bSYour Name 
8019*5113495bSYour Name uint32_t dot11f_pack_ie_vendor1_ie(
8020*5113495bSYour Name 	tpAniSirGlobal,
8021*5113495bSYour Name 	tDot11fIEVendor1IE *,
8022*5113495bSYour Name 	uint8_t *,
8023*5113495bSYour Name 	uint32_t,
8024*5113495bSYour Name 	uint32_t*);
8025*5113495bSYour Name 
8026*5113495bSYour Name uint32_t dot11f_get_packed_ie_Vendor1IE(
8027*5113495bSYour Name 	tpAniSirGlobal,
8028*5113495bSYour Name 	tDot11fIEVendor1IE *,
8029*5113495bSYour Name 	uint32_t*);
8030*5113495bSYour Name 
8031*5113495bSYour Name #ifdef __cplusplus
8032*5113495bSYour Name }; /* End extern "C". */
8033*5113495bSYour Name #endif /* C++ */
8034*5113495bSYour Name 
8035*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x16, 0x32} */
8036*5113495bSYour Name typedef struct sDot11fIEVendor3IE {
8037*5113495bSYour Name 	uint8_t             present;
8038*5113495bSYour Name } tDot11fIEVendor3IE;
8039*5113495bSYour Name 
8040*5113495bSYour Name #define DOT11F_EID_VENDOR3IE (221)
8041*5113495bSYour Name 
8042*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8043*5113495bSYour Name #define DOT11F_IE_VENDOR3IE_MIN_LEN (3)
8044*5113495bSYour Name 
8045*5113495bSYour Name #define DOT11F_IE_VENDOR3IE_MAX_LEN (3)
8046*5113495bSYour Name 
8047*5113495bSYour Name #ifdef __cplusplus
8048*5113495bSYour Name extern "C" {
8049*5113495bSYour Name #endif /* C++ */
8050*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_vendor3_ie(
8051*5113495bSYour Name 	tpAniSirGlobal,
8052*5113495bSYour Name 	uint8_t *,
8053*5113495bSYour Name 	uint8_t,
8054*5113495bSYour Name 	tDot11fIEVendor3IE*,
8055*5113495bSYour Name 	bool);
8056*5113495bSYour Name 
8057*5113495bSYour Name uint32_t dot11f_pack_ie_vendor3_ie(
8058*5113495bSYour Name 	tpAniSirGlobal,
8059*5113495bSYour Name 	tDot11fIEVendor3IE *,
8060*5113495bSYour Name 	uint8_t *,
8061*5113495bSYour Name 	uint32_t,
8062*5113495bSYour Name 	uint32_t*);
8063*5113495bSYour Name 
8064*5113495bSYour Name uint32_t dot11f_get_packed_ie_Vendor3IE(
8065*5113495bSYour Name 	tpAniSirGlobal,
8066*5113495bSYour Name 	tDot11fIEVendor3IE *,
8067*5113495bSYour Name 	uint32_t*);
8068*5113495bSYour Name 
8069*5113495bSYour Name #ifdef __cplusplus
8070*5113495bSYour Name }; /* End extern "C". */
8071*5113495bSYour Name #endif /* C++ */
8072*5113495bSYour Name 
8073*5113495bSYour Name /* EID 68 (0x44) */
8074*5113495bSYour Name typedef struct sDot11fIEWAPI {
8075*5113495bSYour Name 	uint8_t             present;
8076*5113495bSYour Name 	uint16_t            version /* Must be 1! */;
8077*5113495bSYour Name 	uint16_t            akm_suite_count;
8078*5113495bSYour Name 	uint8_t             akm_suites[4][4];
8079*5113495bSYour Name 	uint16_t            unicast_cipher_suite_count;
8080*5113495bSYour Name 	uint8_t             unicast_cipher_suites[4][4];
8081*5113495bSYour Name 	uint8_t             multicast_cipher_suite[4];
8082*5113495bSYour Name 	uint16_t              preauth:1;
8083*5113495bSYour Name 	uint16_t             reserved:15;
8084*5113495bSYour Name 	uint16_t            bkid_count;
8085*5113495bSYour Name 	uint8_t             bkid[4][16];
8086*5113495bSYour Name } tDot11fIEWAPI;
8087*5113495bSYour Name 
8088*5113495bSYour Name #define DOT11F_EID_WAPI (68)
8089*5113495bSYour Name 
8090*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8091*5113495bSYour Name #define DOT11F_IE_WAPI_MIN_LEN (12)
8092*5113495bSYour Name 
8093*5113495bSYour Name #define DOT11F_IE_WAPI_MAX_LEN (110)
8094*5113495bSYour Name 
8095*5113495bSYour Name #ifdef __cplusplus
8096*5113495bSYour Name extern "C" {
8097*5113495bSYour Name #endif /* C++ */
8098*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wapi(
8099*5113495bSYour Name 	tpAniSirGlobal,
8100*5113495bSYour Name 	uint8_t *,
8101*5113495bSYour Name 	uint8_t,
8102*5113495bSYour Name 	tDot11fIEWAPI*,
8103*5113495bSYour Name 	bool);
8104*5113495bSYour Name 
8105*5113495bSYour Name uint32_t dot11f_pack_ie_wapi(
8106*5113495bSYour Name 	tpAniSirGlobal,
8107*5113495bSYour Name 	tDot11fIEWAPI *,
8108*5113495bSYour Name 	uint8_t *,
8109*5113495bSYour Name 	uint32_t,
8110*5113495bSYour Name 	uint32_t*);
8111*5113495bSYour Name 
8112*5113495bSYour Name uint32_t dot11f_get_packed_iewapi(
8113*5113495bSYour Name 	tpAniSirGlobal,
8114*5113495bSYour Name 	tDot11fIEWAPI *,
8115*5113495bSYour Name 	uint32_t*);
8116*5113495bSYour Name 
8117*5113495bSYour Name #ifdef __cplusplus
8118*5113495bSYour Name }; /* End extern "C". */
8119*5113495bSYour Name #endif /* C++ */
8120*5113495bSYour Name 
8121*5113495bSYour Name /* EID 68 (0x44) */
8122*5113495bSYour Name typedef struct sDot11fIEWAPIOpaque {
8123*5113495bSYour Name 	uint8_t             present;
8124*5113495bSYour Name 	uint8_t             num_data;
8125*5113495bSYour Name 	uint8_t             data[253];
8126*5113495bSYour Name } tDot11fIEWAPIOpaque;
8127*5113495bSYour Name 
8128*5113495bSYour Name #define DOT11F_EID_WAPIOPAQUE (68)
8129*5113495bSYour Name 
8130*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8131*5113495bSYour Name #define DOT11F_IE_WAPIOPAQUE_MIN_LEN (6)
8132*5113495bSYour Name 
8133*5113495bSYour Name #define DOT11F_IE_WAPIOPAQUE_MAX_LEN (253)
8134*5113495bSYour Name 
8135*5113495bSYour Name #ifdef __cplusplus
8136*5113495bSYour Name extern "C" {
8137*5113495bSYour Name #endif /* C++ */
8138*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wapi_opaque(
8139*5113495bSYour Name 	tpAniSirGlobal,
8140*5113495bSYour Name 	uint8_t *,
8141*5113495bSYour Name 	uint8_t,
8142*5113495bSYour Name 	tDot11fIEWAPIOpaque*,
8143*5113495bSYour Name 	bool);
8144*5113495bSYour Name 
8145*5113495bSYour Name uint32_t dot11f_pack_ie_wapi_opaque(
8146*5113495bSYour Name 	tpAniSirGlobal,
8147*5113495bSYour Name 	tDot11fIEWAPIOpaque *,
8148*5113495bSYour Name 	uint8_t *,
8149*5113495bSYour Name 	uint32_t,
8150*5113495bSYour Name 	uint32_t*);
8151*5113495bSYour Name 
8152*5113495bSYour Name uint32_t dot11f_get_packed_iewapiOpaque(
8153*5113495bSYour Name 	tpAniSirGlobal,
8154*5113495bSYour Name 	tDot11fIEWAPIOpaque *,
8155*5113495bSYour Name 	uint32_t*);
8156*5113495bSYour Name 
8157*5113495bSYour Name #ifdef __cplusplus
8158*5113495bSYour Name }; /* End extern "C". */
8159*5113495bSYour Name #endif /* C++ */
8160*5113495bSYour Name 
8161*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x08, 0x00} */
8162*5113495bSYour Name typedef struct sDot11fIEWFATPC {
8163*5113495bSYour Name 	uint8_t             present;
8164*5113495bSYour Name 	uint8_t             txPower;
8165*5113495bSYour Name 	uint8_t             linkMargin;
8166*5113495bSYour Name } tDot11fIEWFATPC;
8167*5113495bSYour Name 
8168*5113495bSYour Name #define DOT11F_EID_WFATPC (221)
8169*5113495bSYour Name 
8170*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8171*5113495bSYour Name #define DOT11F_IE_WFATPC_MIN_LEN (7)
8172*5113495bSYour Name 
8173*5113495bSYour Name #define DOT11F_IE_WFATPC_MAX_LEN (7)
8174*5113495bSYour Name 
8175*5113495bSYour Name #ifdef __cplusplus
8176*5113495bSYour Name extern "C" {
8177*5113495bSYour Name #endif /* C++ */
8178*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wfatpc(
8179*5113495bSYour Name 	tpAniSirGlobal,
8180*5113495bSYour Name 	uint8_t *,
8181*5113495bSYour Name 	uint8_t,
8182*5113495bSYour Name 	tDot11fIEWFATPC*,
8183*5113495bSYour Name 	bool);
8184*5113495bSYour Name 
8185*5113495bSYour Name uint32_t dot11f_pack_ie_wfatpc(
8186*5113495bSYour Name 	tpAniSirGlobal,
8187*5113495bSYour Name 	tDot11fIEWFATPC *,
8188*5113495bSYour Name 	uint8_t *,
8189*5113495bSYour Name 	uint32_t,
8190*5113495bSYour Name 	uint32_t*);
8191*5113495bSYour Name 
8192*5113495bSYour Name uint32_t dot11f_get_packed_ie_WFATPC(
8193*5113495bSYour Name 	tpAniSirGlobal,
8194*5113495bSYour Name 	tDot11fIEWFATPC *,
8195*5113495bSYour Name 	uint32_t*);
8196*5113495bSYour Name 
8197*5113495bSYour Name #ifdef __cplusplus
8198*5113495bSYour Name }; /* End extern "C". */
8199*5113495bSYour Name #endif /* C++ */
8200*5113495bSYour Name 
8201*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x0a} */
8202*5113495bSYour Name typedef struct sDot11fIEWFDIEOpaque {
8203*5113495bSYour Name 	uint8_t             present;
8204*5113495bSYour Name 	uint8_t             num_data;
8205*5113495bSYour Name 	uint8_t             data[249];
8206*5113495bSYour Name } tDot11fIEWFDIEOpaque;
8207*5113495bSYour Name 
8208*5113495bSYour Name #define DOT11F_EID_WFDIEOPAQUE (221)
8209*5113495bSYour Name 
8210*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8211*5113495bSYour Name #define DOT11F_IE_WFDIEOPAQUE_MIN_LEN (6)
8212*5113495bSYour Name 
8213*5113495bSYour Name #define DOT11F_IE_WFDIEOPAQUE_MAX_LEN (253)
8214*5113495bSYour Name 
8215*5113495bSYour Name #ifdef __cplusplus
8216*5113495bSYour Name extern "C" {
8217*5113495bSYour Name #endif /* C++ */
8218*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wfdie_opaque(
8219*5113495bSYour Name 	tpAniSirGlobal,
8220*5113495bSYour Name 	uint8_t *,
8221*5113495bSYour Name 	uint8_t,
8222*5113495bSYour Name 	tDot11fIEWFDIEOpaque*,
8223*5113495bSYour Name 	bool);
8224*5113495bSYour Name 
8225*5113495bSYour Name uint32_t dot11f_pack_ie_wfdie_opaque(
8226*5113495bSYour Name 	tpAniSirGlobal,
8227*5113495bSYour Name 	tDot11fIEWFDIEOpaque *,
8228*5113495bSYour Name 	uint8_t *,
8229*5113495bSYour Name 	uint32_t,
8230*5113495bSYour Name 	uint32_t*);
8231*5113495bSYour Name 
8232*5113495bSYour Name uint32_t dot11f_get_packed_ie_WFDIEOpaque(
8233*5113495bSYour Name 	tpAniSirGlobal,
8234*5113495bSYour Name 	tDot11fIEWFDIEOpaque *,
8235*5113495bSYour Name 	uint32_t*);
8236*5113495bSYour Name 
8237*5113495bSYour Name #ifdef __cplusplus
8238*5113495bSYour Name }; /* End extern "C". */
8239*5113495bSYour Name #endif /* C++ */
8240*5113495bSYour Name 
8241*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05} */
8242*5113495bSYour Name typedef struct sDot11fIEWMMCaps {
8243*5113495bSYour Name 	uint8_t             present;
8244*5113495bSYour Name 	uint8_t             version /* Must be 1! */;
8245*5113495bSYour Name 	uint8_t             reserved:4;
8246*5113495bSYour Name 	uint8_t                 qack:1;
8247*5113495bSYour Name 	uint8_t        queue_request:1;
8248*5113495bSYour Name 	uint8_t         txop_request:1;
8249*5113495bSYour Name 	uint8_t             more_ack:1;
8250*5113495bSYour Name } tDot11fIEWMMCaps;
8251*5113495bSYour Name 
8252*5113495bSYour Name #define DOT11F_EID_WMMCAPS (221)
8253*5113495bSYour Name 
8254*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8255*5113495bSYour Name #define DOT11F_IE_WMMCAPS_MIN_LEN (7)
8256*5113495bSYour Name 
8257*5113495bSYour Name #define DOT11F_IE_WMMCAPS_MAX_LEN (7)
8258*5113495bSYour Name 
8259*5113495bSYour Name #ifdef __cplusplus
8260*5113495bSYour Name extern "C" {
8261*5113495bSYour Name #endif /* C++ */
8262*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wmm_caps(
8263*5113495bSYour Name 	tpAniSirGlobal,
8264*5113495bSYour Name 	uint8_t *,
8265*5113495bSYour Name 	uint8_t,
8266*5113495bSYour Name 	tDot11fIEWMMCaps*,
8267*5113495bSYour Name 	bool);
8268*5113495bSYour Name 
8269*5113495bSYour Name uint32_t dot11f_pack_ie_wmm_caps(
8270*5113495bSYour Name 	tpAniSirGlobal,
8271*5113495bSYour Name 	tDot11fIEWMMCaps *,
8272*5113495bSYour Name 	uint8_t *,
8273*5113495bSYour Name 	uint32_t,
8274*5113495bSYour Name 	uint32_t*);
8275*5113495bSYour Name 
8276*5113495bSYour Name uint32_t dot11f_get_packed_ie_WMMCaps(
8277*5113495bSYour Name 	tpAniSirGlobal,
8278*5113495bSYour Name 	tDot11fIEWMMCaps *,
8279*5113495bSYour Name 	uint32_t*);
8280*5113495bSYour Name 
8281*5113495bSYour Name #ifdef __cplusplus
8282*5113495bSYour Name }; /* End extern "C". */
8283*5113495bSYour Name #endif /* C++ */
8284*5113495bSYour Name 
8285*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
8286*5113495bSYour Name typedef struct sDot11fIEWMMInfoAp {
8287*5113495bSYour Name 	uint8_t             present;
8288*5113495bSYour Name 	uint8_t             version;
8289*5113495bSYour Name 	uint8_t      param_set_count:4;
8290*5113495bSYour Name 	uint8_t             reserved:3;
8291*5113495bSYour Name 	uint8_t                uapsd:1;
8292*5113495bSYour Name } tDot11fIEWMMInfoAp;
8293*5113495bSYour Name 
8294*5113495bSYour Name #define DOT11F_EID_WMMINFOAP (221)
8295*5113495bSYour Name 
8296*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8297*5113495bSYour Name #define DOT11F_IE_WMMINFOAP_MIN_LEN (7)
8298*5113495bSYour Name 
8299*5113495bSYour Name #define DOT11F_IE_WMMINFOAP_MAX_LEN (7)
8300*5113495bSYour Name 
8301*5113495bSYour Name #ifdef __cplusplus
8302*5113495bSYour Name extern "C" {
8303*5113495bSYour Name #endif /* C++ */
8304*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wmm_info_ap(
8305*5113495bSYour Name 	tpAniSirGlobal,
8306*5113495bSYour Name 	uint8_t *,
8307*5113495bSYour Name 	uint8_t,
8308*5113495bSYour Name 	tDot11fIEWMMInfoAp*,
8309*5113495bSYour Name 	bool);
8310*5113495bSYour Name 
8311*5113495bSYour Name uint32_t dot11f_pack_ie_wmm_info_ap(
8312*5113495bSYour Name 	tpAniSirGlobal,
8313*5113495bSYour Name 	tDot11fIEWMMInfoAp *,
8314*5113495bSYour Name 	uint8_t *,
8315*5113495bSYour Name 	uint32_t,
8316*5113495bSYour Name 	uint32_t*);
8317*5113495bSYour Name 
8318*5113495bSYour Name uint32_t dot11f_get_packed_ie_WMMInfoAp(
8319*5113495bSYour Name 	tpAniSirGlobal,
8320*5113495bSYour Name 	tDot11fIEWMMInfoAp *,
8321*5113495bSYour Name 	uint32_t*);
8322*5113495bSYour Name 
8323*5113495bSYour Name #ifdef __cplusplus
8324*5113495bSYour Name }; /* End extern "C". */
8325*5113495bSYour Name #endif /* C++ */
8326*5113495bSYour Name 
8327*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
8328*5113495bSYour Name typedef struct sDot11fIEWMMInfoStation {
8329*5113495bSYour Name 	uint8_t             present;
8330*5113495bSYour Name 	uint8_t             version;
8331*5113495bSYour Name 	uint8_t           acvo_uapsd:1;
8332*5113495bSYour Name 	uint8_t           acvi_uapsd:1;
8333*5113495bSYour Name 	uint8_t           acbk_uapsd:1;
8334*5113495bSYour Name 	uint8_t           acbe_uapsd:1;
8335*5113495bSYour Name 	uint8_t            reserved1:1;
8336*5113495bSYour Name 	uint8_t        max_sp_length:2;
8337*5113495bSYour Name 	uint8_t            reserved2:1;
8338*5113495bSYour Name } tDot11fIEWMMInfoStation;
8339*5113495bSYour Name 
8340*5113495bSYour Name #define DOT11F_EID_WMMINFOSTATION (221)
8341*5113495bSYour Name 
8342*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8343*5113495bSYour Name #define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7)
8344*5113495bSYour Name 
8345*5113495bSYour Name #define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7)
8346*5113495bSYour Name 
8347*5113495bSYour Name #ifdef __cplusplus
8348*5113495bSYour Name extern "C" {
8349*5113495bSYour Name #endif /* C++ */
8350*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wmm_info_station(
8351*5113495bSYour Name 	tpAniSirGlobal,
8352*5113495bSYour Name 	uint8_t *,
8353*5113495bSYour Name 	uint8_t,
8354*5113495bSYour Name 	tDot11fIEWMMInfoStation*,
8355*5113495bSYour Name 	bool);
8356*5113495bSYour Name 
8357*5113495bSYour Name uint32_t dot11f_pack_ie_wmm_info_station(
8358*5113495bSYour Name 	tpAniSirGlobal,
8359*5113495bSYour Name 	tDot11fIEWMMInfoStation *,
8360*5113495bSYour Name 	uint8_t *,
8361*5113495bSYour Name 	uint32_t,
8362*5113495bSYour Name 	uint32_t*);
8363*5113495bSYour Name 
8364*5113495bSYour Name uint32_t dot11f_get_packed_ie_WMMInfoStation(
8365*5113495bSYour Name 	tpAniSirGlobal,
8366*5113495bSYour Name 	tDot11fIEWMMInfoStation *,
8367*5113495bSYour Name 	uint32_t*);
8368*5113495bSYour Name 
8369*5113495bSYour Name #ifdef __cplusplus
8370*5113495bSYour Name }; /* End extern "C". */
8371*5113495bSYour Name #endif /* C++ */
8372*5113495bSYour Name 
8373*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01} */
8374*5113495bSYour Name typedef struct sDot11fIEWMMParams {
8375*5113495bSYour Name 	uint8_t             present;
8376*5113495bSYour Name 	uint8_t             version /* Must be 1! */;
8377*5113495bSYour Name 	uint8_t             qosInfo;
8378*5113495bSYour Name 	uint8_t             reserved2;
8379*5113495bSYour Name 	uint8_t           acbe_aifsn:4;
8380*5113495bSYour Name 	uint8_t             acbe_acm:1;
8381*5113495bSYour Name 	uint8_t             acbe_aci:2;
8382*5113495bSYour Name 	uint8_t              unused1:1;
8383*5113495bSYour Name 	uint8_t          acbe_acwmin:4;
8384*5113495bSYour Name 	uint8_t          acbe_acwmax:4;
8385*5113495bSYour Name 	uint16_t            acbe_txoplimit;
8386*5113495bSYour Name 	uint8_t           acbk_aifsn:4;
8387*5113495bSYour Name 	uint8_t             acbk_acm:1;
8388*5113495bSYour Name 	uint8_t             acbk_aci:2;
8389*5113495bSYour Name 	uint8_t              unused2:1;
8390*5113495bSYour Name 	uint8_t          acbk_acwmin:4;
8391*5113495bSYour Name 	uint8_t          acbk_acwmax:4;
8392*5113495bSYour Name 	uint16_t            acbk_txoplimit;
8393*5113495bSYour Name 	uint8_t           acvi_aifsn:4;
8394*5113495bSYour Name 	uint8_t             acvi_acm:1;
8395*5113495bSYour Name 	uint8_t             acvi_aci:2;
8396*5113495bSYour Name 	uint8_t              unused3:1;
8397*5113495bSYour Name 	uint8_t          acvi_acwmin:4;
8398*5113495bSYour Name 	uint8_t          acvi_acwmax:4;
8399*5113495bSYour Name 	uint16_t            acvi_txoplimit;
8400*5113495bSYour Name 	uint8_t           acvo_aifsn:4;
8401*5113495bSYour Name 	uint8_t             acvo_acm:1;
8402*5113495bSYour Name 	uint8_t             acvo_aci:2;
8403*5113495bSYour Name 	uint8_t              unused4:1;
8404*5113495bSYour Name 	uint8_t          acvo_acwmin:4;
8405*5113495bSYour Name 	uint8_t          acvo_acwmax:4;
8406*5113495bSYour Name 	uint16_t            acvo_txoplimit;
8407*5113495bSYour Name } tDot11fIEWMMParams;
8408*5113495bSYour Name 
8409*5113495bSYour Name #define DOT11F_EID_WMMPARAMS (221)
8410*5113495bSYour Name 
8411*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8412*5113495bSYour Name #define DOT11F_IE_WMMPARAMS_MIN_LEN (24)
8413*5113495bSYour Name 
8414*5113495bSYour Name #define DOT11F_IE_WMMPARAMS_MAX_LEN (24)
8415*5113495bSYour Name 
8416*5113495bSYour Name #ifdef __cplusplus
8417*5113495bSYour Name extern "C" {
8418*5113495bSYour Name #endif /* C++ */
8419*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wmm_params(
8420*5113495bSYour Name 	tpAniSirGlobal,
8421*5113495bSYour Name 	uint8_t *,
8422*5113495bSYour Name 	uint8_t,
8423*5113495bSYour Name 	tDot11fIEWMMParams*,
8424*5113495bSYour Name 	bool);
8425*5113495bSYour Name 
8426*5113495bSYour Name uint32_t dot11f_pack_ie_wmm_params(
8427*5113495bSYour Name 	tpAniSirGlobal,
8428*5113495bSYour Name 	tDot11fIEWMMParams *,
8429*5113495bSYour Name 	uint8_t *,
8430*5113495bSYour Name 	uint32_t,
8431*5113495bSYour Name 	uint32_t*);
8432*5113495bSYour Name 
8433*5113495bSYour Name uint32_t dot11f_get_packed_ie_WMMParams(
8434*5113495bSYour Name 	tpAniSirGlobal,
8435*5113495bSYour Name 	tDot11fIEWMMParams *,
8436*5113495bSYour Name 	uint32_t*);
8437*5113495bSYour Name 
8438*5113495bSYour Name #ifdef __cplusplus
8439*5113495bSYour Name }; /* End extern "C". */
8440*5113495bSYour Name #endif /* C++ */
8441*5113495bSYour Name 
8442*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */
8443*5113495bSYour Name typedef struct sDot11fIEWPA {
8444*5113495bSYour Name 	uint8_t             present;
8445*5113495bSYour Name 	uint16_t            version /* Must be 1! */;
8446*5113495bSYour Name 	/* field added to fix the bug in dot11fPackIEWPA */
8447*5113495bSYour Name 	uint8_t             multicast_cipher_present;
8448*5113495bSYour Name 	uint8_t             multicast_cipher[4];
8449*5113495bSYour Name 	uint16_t            unicast_cipher_count;
8450*5113495bSYour Name 	uint8_t             unicast_ciphers[4][4];
8451*5113495bSYour Name 	uint16_t            auth_suite_count;
8452*5113495bSYour Name 	uint8_t             auth_suites[4][4];
8453*5113495bSYour Name 	uint16_t            caps;
8454*5113495bSYour Name } tDot11fIEWPA;
8455*5113495bSYour Name 
8456*5113495bSYour Name #define DOT11F_EID_WPA (221)
8457*5113495bSYour Name 
8458*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8459*5113495bSYour Name #define DOT11F_IE_WPA_MIN_LEN (6)
8460*5113495bSYour Name 
8461*5113495bSYour Name #define DOT11F_IE_WPA_MAX_LEN (48)
8462*5113495bSYour Name 
8463*5113495bSYour Name #ifdef __cplusplus
8464*5113495bSYour Name extern "C" {
8465*5113495bSYour Name #endif /* C++ */
8466*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wpa(
8467*5113495bSYour Name 	tpAniSirGlobal,
8468*5113495bSYour Name 	uint8_t *,
8469*5113495bSYour Name 	uint8_t,
8470*5113495bSYour Name 	tDot11fIEWPA*,
8471*5113495bSYour Name 	bool);
8472*5113495bSYour Name 
8473*5113495bSYour Name uint32_t dot11f_pack_ie_wpa(
8474*5113495bSYour Name 	tpAniSirGlobal,
8475*5113495bSYour Name 	tDot11fIEWPA *,
8476*5113495bSYour Name 	uint8_t *,
8477*5113495bSYour Name 	uint32_t,
8478*5113495bSYour Name 	uint32_t*);
8479*5113495bSYour Name 
8480*5113495bSYour Name uint32_t dot11f_get_packed_iewpa(
8481*5113495bSYour Name 	tpAniSirGlobal,
8482*5113495bSYour Name 	tDot11fIEWPA *,
8483*5113495bSYour Name 	uint32_t*);
8484*5113495bSYour Name 
8485*5113495bSYour Name #ifdef __cplusplus
8486*5113495bSYour Name }; /* End extern "C". */
8487*5113495bSYour Name #endif /* C++ */
8488*5113495bSYour Name 
8489*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */
8490*5113495bSYour Name typedef struct sDot11fIEWPAOpaque {
8491*5113495bSYour Name 	uint8_t             present;
8492*5113495bSYour Name 	uint8_t             num_data;
8493*5113495bSYour Name 	uint8_t             data[249];
8494*5113495bSYour Name } tDot11fIEWPAOpaque;
8495*5113495bSYour Name 
8496*5113495bSYour Name #define DOT11F_EID_WPAOPAQUE (221)
8497*5113495bSYour Name 
8498*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8499*5113495bSYour Name #define DOT11F_IE_WPAOPAQUE_MIN_LEN (6)
8500*5113495bSYour Name 
8501*5113495bSYour Name #define DOT11F_IE_WPAOPAQUE_MAX_LEN (253)
8502*5113495bSYour Name 
8503*5113495bSYour Name #ifdef __cplusplus
8504*5113495bSYour Name extern "C" {
8505*5113495bSYour Name #endif /* C++ */
8506*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wpa_opaque(
8507*5113495bSYour Name 	tpAniSirGlobal,
8508*5113495bSYour Name 	uint8_t *,
8509*5113495bSYour Name 	uint8_t,
8510*5113495bSYour Name 	tDot11fIEWPAOpaque*,
8511*5113495bSYour Name 	bool);
8512*5113495bSYour Name 
8513*5113495bSYour Name uint32_t dot11f_pack_ie_wpa_opaque(
8514*5113495bSYour Name 	tpAniSirGlobal,
8515*5113495bSYour Name 	tDot11fIEWPAOpaque *,
8516*5113495bSYour Name 	uint8_t *,
8517*5113495bSYour Name 	uint32_t,
8518*5113495bSYour Name 	uint32_t*);
8519*5113495bSYour Name 
8520*5113495bSYour Name uint32_t dot11f_get_packed_iewpaOpaque(
8521*5113495bSYour Name 	tpAniSirGlobal,
8522*5113495bSYour Name 	tDot11fIEWPAOpaque *,
8523*5113495bSYour Name 	uint32_t*);
8524*5113495bSYour Name 
8525*5113495bSYour Name #ifdef __cplusplus
8526*5113495bSYour Name }; /* End extern "C". */
8527*5113495bSYour Name #endif /* C++ */
8528*5113495bSYour Name 
8529*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8530*5113495bSYour Name typedef struct sDot11fIEWSC {
8531*5113495bSYour Name 	uint8_t             present;
8532*5113495bSYour Name 	tDot11fTLVVersion   Version;
8533*5113495bSYour Name 	tDot11fTLVWPSState  WPSState;
8534*5113495bSYour Name 	tDot11fTLVAPSetupLocked APSetupLocked;
8535*5113495bSYour Name 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8536*5113495bSYour Name 	tDot11fTLVUUID_E    UUID_E;
8537*5113495bSYour Name 	tDot11fTLVUUID_R    UUID_R;
8538*5113495bSYour Name 	tDot11fTLVRFBands   RFBands;
8539*5113495bSYour Name 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8540*5113495bSYour Name 	tDot11fTLVConfigMethods ConfigMethods;
8541*5113495bSYour Name 	tDot11fTLVAssociationState AssociationState;
8542*5113495bSYour Name 	tDot11fTLVConfigurationError ConfigurationError;
8543*5113495bSYour Name 	tDot11fTLVManufacturer Manufacturer;
8544*5113495bSYour Name 	tDot11fTLVModelName ModelName;
8545*5113495bSYour Name 	tDot11fTLVModelNumber ModelNumber;
8546*5113495bSYour Name 	tDot11fTLVSerialNumber SerialNumber;
8547*5113495bSYour Name 	tDot11fTLVDeviceName DeviceName;
8548*5113495bSYour Name 	tDot11fTLVDevicePasswordID DevicePasswordID;
8549*5113495bSYour Name 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8550*5113495bSYour Name 	tDot11fTLVRequestType RequestType;
8551*5113495bSYour Name 	tDot11fTLVResponseType ResponseType;
8552*5113495bSYour Name 	tDot11fTLVVendorExtension VendorExtension;
8553*5113495bSYour Name 	tDot11fTLVRequestDeviceType RequestDeviceType;
8554*5113495bSYour Name } tDot11fIEWSC;
8555*5113495bSYour Name 
8556*5113495bSYour Name #define DOT11F_EID_WSC (221)
8557*5113495bSYour Name 
8558*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8559*5113495bSYour Name #define DOT11F_IE_WSC_MIN_LEN (4)
8560*5113495bSYour Name 
8561*5113495bSYour Name #define DOT11F_IE_WSC_MAX_LEN (366)
8562*5113495bSYour Name 
8563*5113495bSYour Name #ifdef __cplusplus
8564*5113495bSYour Name extern "C" {
8565*5113495bSYour Name #endif /* C++ */
8566*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wsc(
8567*5113495bSYour Name 	tpAniSirGlobal,
8568*5113495bSYour Name 	uint8_t *,
8569*5113495bSYour Name 	uint8_t,
8570*5113495bSYour Name 	tDot11fIEWSC*,
8571*5113495bSYour Name 	bool);
8572*5113495bSYour Name 
8573*5113495bSYour Name uint32_t dot11f_pack_ie_wsc(
8574*5113495bSYour Name 	tpAniSirGlobal,
8575*5113495bSYour Name 	tDot11fIEWSC *,
8576*5113495bSYour Name 	uint8_t *,
8577*5113495bSYour Name 	uint32_t,
8578*5113495bSYour Name 	uint32_t*);
8579*5113495bSYour Name 
8580*5113495bSYour Name uint32_t dot11f_get_packed_iewsc(
8581*5113495bSYour Name 	tpAniSirGlobal,
8582*5113495bSYour Name 	tDot11fIEWSC *,
8583*5113495bSYour Name 	uint32_t*);
8584*5113495bSYour Name 
8585*5113495bSYour Name #ifdef __cplusplus
8586*5113495bSYour Name }; /* End extern "C". */
8587*5113495bSYour Name #endif /* C++ */
8588*5113495bSYour Name 
8589*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8590*5113495bSYour Name typedef struct sDot11fIEWscAssocReq {
8591*5113495bSYour Name 	uint8_t             present;
8592*5113495bSYour Name 	tDot11fTLVVersion   Version;
8593*5113495bSYour Name 	tDot11fTLVRequestType RequestType;
8594*5113495bSYour Name 	tDot11fTLVVendorExtension VendorExtension;
8595*5113495bSYour Name } tDot11fIEWscAssocReq;
8596*5113495bSYour Name 
8597*5113495bSYour Name #define DOT11F_EID_WSCASSOCREQ (221)
8598*5113495bSYour Name 
8599*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8600*5113495bSYour Name #define DOT11F_IE_WSCASSOCREQ_MIN_LEN (4)
8601*5113495bSYour Name 
8602*5113495bSYour Name #define DOT11F_IE_WSCASSOCREQ_MAX_LEN (35)
8603*5113495bSYour Name 
8604*5113495bSYour Name #ifdef __cplusplus
8605*5113495bSYour Name extern "C" {
8606*5113495bSYour Name #endif /* C++ */
8607*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wsc_assoc_req(
8608*5113495bSYour Name 	tpAniSirGlobal,
8609*5113495bSYour Name 	uint8_t *,
8610*5113495bSYour Name 	uint8_t,
8611*5113495bSYour Name 	tDot11fIEWscAssocReq*,
8612*5113495bSYour Name 	bool);
8613*5113495bSYour Name 
8614*5113495bSYour Name uint32_t dot11f_pack_ie_wsc_assoc_req(
8615*5113495bSYour Name 	tpAniSirGlobal,
8616*5113495bSYour Name 	tDot11fIEWscAssocReq *,
8617*5113495bSYour Name 	uint8_t *,
8618*5113495bSYour Name 	uint32_t,
8619*5113495bSYour Name 	uint32_t*);
8620*5113495bSYour Name 
8621*5113495bSYour Name uint32_t dot11f_get_packed_ie_wsc_assoc_req(
8622*5113495bSYour Name 	tpAniSirGlobal,
8623*5113495bSYour Name 	tDot11fIEWscAssocReq *,
8624*5113495bSYour Name 	uint32_t*);
8625*5113495bSYour Name 
8626*5113495bSYour Name #ifdef __cplusplus
8627*5113495bSYour Name }; /* End extern "C". */
8628*5113495bSYour Name #endif /* C++ */
8629*5113495bSYour Name 
8630*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8631*5113495bSYour Name typedef struct sDot11fIEWscAssocRes {
8632*5113495bSYour Name 	uint8_t             present;
8633*5113495bSYour Name 	tDot11fTLVVersion   Version;
8634*5113495bSYour Name 	tDot11fTLVResponseType ResponseType;
8635*5113495bSYour Name 	tDot11fTLVVendorExtension VendorExtension;
8636*5113495bSYour Name } tDot11fIEWscAssocRes;
8637*5113495bSYour Name 
8638*5113495bSYour Name #define DOT11F_EID_WSCASSOCRES (221)
8639*5113495bSYour Name 
8640*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8641*5113495bSYour Name #define DOT11F_IE_WSCASSOCRES_MIN_LEN (4)
8642*5113495bSYour Name 
8643*5113495bSYour Name #define DOT11F_IE_WSCASSOCRES_MAX_LEN (35)
8644*5113495bSYour Name 
8645*5113495bSYour Name #ifdef __cplusplus
8646*5113495bSYour Name extern "C" {
8647*5113495bSYour Name #endif /* C++ */
8648*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wsc_assoc_res(
8649*5113495bSYour Name 	tpAniSirGlobal,
8650*5113495bSYour Name 	uint8_t *,
8651*5113495bSYour Name 	uint8_t,
8652*5113495bSYour Name 	tDot11fIEWscAssocRes*,
8653*5113495bSYour Name 	bool);
8654*5113495bSYour Name 
8655*5113495bSYour Name uint32_t dot11f_pack_ie_wsc_assoc_res(
8656*5113495bSYour Name 	tpAniSirGlobal,
8657*5113495bSYour Name 	tDot11fIEWscAssocRes *,
8658*5113495bSYour Name 	uint8_t *,
8659*5113495bSYour Name 	uint32_t,
8660*5113495bSYour Name 	uint32_t*);
8661*5113495bSYour Name 
8662*5113495bSYour Name uint32_t dot11f_get_packed_ie_wsc_assoc_res(
8663*5113495bSYour Name 	tpAniSirGlobal,
8664*5113495bSYour Name 	tDot11fIEWscAssocRes *,
8665*5113495bSYour Name 	uint32_t*);
8666*5113495bSYour Name 
8667*5113495bSYour Name #ifdef __cplusplus
8668*5113495bSYour Name }; /* End extern "C". */
8669*5113495bSYour Name #endif /* C++ */
8670*5113495bSYour Name 
8671*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8672*5113495bSYour Name typedef struct sDot11fIEWscBeacon {
8673*5113495bSYour Name 	uint8_t             present;
8674*5113495bSYour Name 	tDot11fTLVVersion   Version;
8675*5113495bSYour Name 	tDot11fTLVWPSState  WPSState;
8676*5113495bSYour Name 	tDot11fTLVAPSetupLocked APSetupLocked;
8677*5113495bSYour Name 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8678*5113495bSYour Name 	tDot11fTLVDevicePasswordID DevicePasswordID;
8679*5113495bSYour Name 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8680*5113495bSYour Name 	tDot11fTLVUUID_E    UUID_E;
8681*5113495bSYour Name 	tDot11fTLVRFBands   RFBands;
8682*5113495bSYour Name 	tDot11fTLVVendorExtension VendorExtension;
8683*5113495bSYour Name } tDot11fIEWscBeacon;
8684*5113495bSYour Name 
8685*5113495bSYour Name #define DOT11F_EID_WSCBEACON (221)
8686*5113495bSYour Name 
8687*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8688*5113495bSYour Name #define DOT11F_IE_WSCBEACON_MIN_LEN (4)
8689*5113495bSYour Name 
8690*5113495bSYour Name #define DOT11F_IE_WSCBEACON_MAX_LEN (82)
8691*5113495bSYour Name 
8692*5113495bSYour Name #ifdef __cplusplus
8693*5113495bSYour Name extern "C" {
8694*5113495bSYour Name #endif /* C++ */
8695*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wsc_beacon(
8696*5113495bSYour Name 	tpAniSirGlobal,
8697*5113495bSYour Name 	uint8_t *,
8698*5113495bSYour Name 	uint8_t,
8699*5113495bSYour Name 	tDot11fIEWscBeacon*,
8700*5113495bSYour Name 	bool);
8701*5113495bSYour Name 
8702*5113495bSYour Name uint32_t dot11f_pack_ie_wsc_beacon(
8703*5113495bSYour Name 	tpAniSirGlobal,
8704*5113495bSYour Name 	tDot11fIEWscBeacon *,
8705*5113495bSYour Name 	uint8_t *,
8706*5113495bSYour Name 	uint32_t,
8707*5113495bSYour Name 	uint32_t*);
8708*5113495bSYour Name 
8709*5113495bSYour Name uint32_t dot11f_get_packed_ie_wsc_beacon(
8710*5113495bSYour Name 	tpAniSirGlobal,
8711*5113495bSYour Name 	tDot11fIEWscBeacon *,
8712*5113495bSYour Name 	uint32_t*);
8713*5113495bSYour Name 
8714*5113495bSYour Name #ifdef __cplusplus
8715*5113495bSYour Name }; /* End extern "C". */
8716*5113495bSYour Name #endif /* C++ */
8717*5113495bSYour Name 
8718*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8719*5113495bSYour Name typedef struct sDot11fIEWscBeaconProbeRes {
8720*5113495bSYour Name 	uint8_t             present;
8721*5113495bSYour Name 	tDot11fTLVVersion   Version;
8722*5113495bSYour Name 	tDot11fTLVWPSState  WPSState;
8723*5113495bSYour Name 	tDot11fTLVAPSetupLocked APSetupLocked;
8724*5113495bSYour Name 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8725*5113495bSYour Name 	tDot11fTLVDevicePasswordID DevicePasswordID;
8726*5113495bSYour Name 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8727*5113495bSYour Name 	tDot11fTLVResponseType ResponseType;
8728*5113495bSYour Name 	tDot11fTLVUUID_E    UUID_E;
8729*5113495bSYour Name 	tDot11fTLVManufacturer Manufacturer;
8730*5113495bSYour Name 	tDot11fTLVModelName ModelName;
8731*5113495bSYour Name 	tDot11fTLVModelNumber ModelNumber;
8732*5113495bSYour Name 	tDot11fTLVSerialNumber SerialNumber;
8733*5113495bSYour Name 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8734*5113495bSYour Name 	tDot11fTLVDeviceName DeviceName;
8735*5113495bSYour Name 	tDot11fTLVConfigMethods ConfigMethods;
8736*5113495bSYour Name 	tDot11fTLVRFBands   RFBands;
8737*5113495bSYour Name 	tDot11fTLVVendorExtension VendorExtension;
8738*5113495bSYour Name } tDot11fIEWscBeaconProbeRes;
8739*5113495bSYour Name 
8740*5113495bSYour Name #define DOT11F_EID_WSCBEACONPROBERES (221)
8741*5113495bSYour Name 
8742*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8743*5113495bSYour Name #define DOT11F_IE_WSCBEACONPROBERES_MIN_LEN (4)
8744*5113495bSYour Name 
8745*5113495bSYour Name #define DOT11F_IE_WSCBEACONPROBERES_MAX_LEN (317)
8746*5113495bSYour Name 
8747*5113495bSYour Name #ifdef __cplusplus
8748*5113495bSYour Name extern "C" {
8749*5113495bSYour Name #endif /* C++ */
8750*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wsc_beacon_probe_res(
8751*5113495bSYour Name 	tpAniSirGlobal,
8752*5113495bSYour Name 	uint8_t *,
8753*5113495bSYour Name 	uint8_t,
8754*5113495bSYour Name 	tDot11fIEWscBeaconProbeRes*,
8755*5113495bSYour Name 	bool);
8756*5113495bSYour Name 
8757*5113495bSYour Name uint32_t dot11f_pack_ie_wsc_beacon_probe_res(
8758*5113495bSYour Name 	tpAniSirGlobal,
8759*5113495bSYour Name 	tDot11fIEWscBeaconProbeRes *,
8760*5113495bSYour Name 	uint8_t *,
8761*5113495bSYour Name 	uint32_t,
8762*5113495bSYour Name 	uint32_t*);
8763*5113495bSYour Name 
8764*5113495bSYour Name uint32_t dot11f_get_packed_ie_wsc_beacon_probe_res(
8765*5113495bSYour Name 	tpAniSirGlobal,
8766*5113495bSYour Name 	tDot11fIEWscBeaconProbeRes *,
8767*5113495bSYour Name 	uint32_t*);
8768*5113495bSYour Name 
8769*5113495bSYour Name #ifdef __cplusplus
8770*5113495bSYour Name }; /* End extern "C". */
8771*5113495bSYour Name #endif /* C++ */
8772*5113495bSYour Name 
8773*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} */
8774*5113495bSYour Name typedef struct sDot11fIEWscIEOpaque {
8775*5113495bSYour Name 	uint8_t             present;
8776*5113495bSYour Name 	uint8_t             num_data;
8777*5113495bSYour Name 	uint8_t             data[249];
8778*5113495bSYour Name } tDot11fIEWscIEOpaque;
8779*5113495bSYour Name 
8780*5113495bSYour Name #define DOT11F_EID_WSCIEOPAQUE (221)
8781*5113495bSYour Name 
8782*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8783*5113495bSYour Name #define DOT11F_IE_WSCIEOPAQUE_MIN_LEN (6)
8784*5113495bSYour Name 
8785*5113495bSYour Name #define DOT11F_IE_WSCIEOPAQUE_MAX_LEN (253)
8786*5113495bSYour Name 
8787*5113495bSYour Name #ifdef __cplusplus
8788*5113495bSYour Name extern "C" {
8789*5113495bSYour Name #endif /* C++ */
8790*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wsc_ie_opaque(
8791*5113495bSYour Name 	tpAniSirGlobal,
8792*5113495bSYour Name 	uint8_t *,
8793*5113495bSYour Name 	uint8_t,
8794*5113495bSYour Name 	tDot11fIEWscIEOpaque*,
8795*5113495bSYour Name 	bool);
8796*5113495bSYour Name 
8797*5113495bSYour Name uint32_t dot11f_pack_ie_wsc_ie_opaque(
8798*5113495bSYour Name 	tpAniSirGlobal,
8799*5113495bSYour Name 	tDot11fIEWscIEOpaque *,
8800*5113495bSYour Name 	uint8_t *,
8801*5113495bSYour Name 	uint32_t,
8802*5113495bSYour Name 	uint32_t*);
8803*5113495bSYour Name 
8804*5113495bSYour Name uint32_t dot11f_get_packed_ie_WscIEOpaque(
8805*5113495bSYour Name 	tpAniSirGlobal,
8806*5113495bSYour Name 	tDot11fIEWscIEOpaque *,
8807*5113495bSYour Name 	uint32_t*);
8808*5113495bSYour Name 
8809*5113495bSYour Name #ifdef __cplusplus
8810*5113495bSYour Name }; /* End extern "C". */
8811*5113495bSYour Name #endif /* C++ */
8812*5113495bSYour Name 
8813*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8814*5113495bSYour Name typedef struct sDot11fIEWscProbeReq {
8815*5113495bSYour Name 	uint8_t             present;
8816*5113495bSYour Name 	tDot11fTLVVersion   Version;
8817*5113495bSYour Name 	tDot11fTLVRequestType RequestType;
8818*5113495bSYour Name 	tDot11fTLVConfigMethods ConfigMethods;
8819*5113495bSYour Name 	tDot11fTLVUUID_E    UUID_E;
8820*5113495bSYour Name 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8821*5113495bSYour Name 	tDot11fTLVRFBands   RFBands;
8822*5113495bSYour Name 	tDot11fTLVAssociationState AssociationState;
8823*5113495bSYour Name 	tDot11fTLVConfigurationError ConfigurationError;
8824*5113495bSYour Name 	tDot11fTLVDevicePasswordID DevicePasswordID;
8825*5113495bSYour Name 	tDot11fTLVManufacturer Manufacturer;
8826*5113495bSYour Name 	tDot11fTLVModelName ModelName;
8827*5113495bSYour Name 	tDot11fTLVModelNumber ModelNumber;
8828*5113495bSYour Name 	tDot11fTLVDeviceName DeviceName;
8829*5113495bSYour Name 	tDot11fTLVVendorExtension VendorExtension;
8830*5113495bSYour Name 	tDot11fTLVRequestDeviceType RequestDeviceType;
8831*5113495bSYour Name } tDot11fIEWscProbeReq;
8832*5113495bSYour Name 
8833*5113495bSYour Name #define DOT11F_EID_WSCPROBEREQ (221)
8834*5113495bSYour Name 
8835*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8836*5113495bSYour Name #define DOT11F_IE_WSCPROBEREQ_MIN_LEN (4)
8837*5113495bSYour Name 
8838*5113495bSYour Name #define DOT11F_IE_WSCPROBEREQ_MAX_LEN (284)
8839*5113495bSYour Name 
8840*5113495bSYour Name #ifdef __cplusplus
8841*5113495bSYour Name extern "C" {
8842*5113495bSYour Name #endif /* C++ */
8843*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wsc_probe_req(
8844*5113495bSYour Name 	tpAniSirGlobal,
8845*5113495bSYour Name 	uint8_t *,
8846*5113495bSYour Name 	uint8_t,
8847*5113495bSYour Name 	tDot11fIEWscProbeReq*,
8848*5113495bSYour Name 	bool);
8849*5113495bSYour Name 
8850*5113495bSYour Name uint32_t dot11f_pack_ie_wsc_probe_req(
8851*5113495bSYour Name 	tpAniSirGlobal,
8852*5113495bSYour Name 	tDot11fIEWscProbeReq *,
8853*5113495bSYour Name 	uint8_t *,
8854*5113495bSYour Name 	uint32_t,
8855*5113495bSYour Name 	uint32_t*);
8856*5113495bSYour Name 
8857*5113495bSYour Name uint32_t dot11f_get_packed_ie_wsc_probe_req(
8858*5113495bSYour Name 	tpAniSirGlobal,
8859*5113495bSYour Name 	tDot11fIEWscProbeReq *,
8860*5113495bSYour Name 	uint32_t*);
8861*5113495bSYour Name 
8862*5113495bSYour Name #ifdef __cplusplus
8863*5113495bSYour Name }; /* End extern "C". */
8864*5113495bSYour Name #endif /* C++ */
8865*5113495bSYour Name 
8866*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8867*5113495bSYour Name typedef struct sDot11fIEWscProbeRes {
8868*5113495bSYour Name 	uint8_t             present;
8869*5113495bSYour Name 	tDot11fTLVVersion   Version;
8870*5113495bSYour Name 	tDot11fTLVWPSState  WPSState;
8871*5113495bSYour Name 	tDot11fTLVAPSetupLocked APSetupLocked;
8872*5113495bSYour Name 	tDot11fTLVSelectedRegistrar SelectedRegistrar;
8873*5113495bSYour Name 	tDot11fTLVDevicePasswordID DevicePasswordID;
8874*5113495bSYour Name 	tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8875*5113495bSYour Name 	tDot11fTLVResponseType ResponseType;
8876*5113495bSYour Name 	tDot11fTLVUUID_E    UUID_E;
8877*5113495bSYour Name 	tDot11fTLVManufacturer Manufacturer;
8878*5113495bSYour Name 	tDot11fTLVModelName ModelName;
8879*5113495bSYour Name 	tDot11fTLVModelNumber ModelNumber;
8880*5113495bSYour Name 	tDot11fTLVSerialNumber SerialNumber;
8881*5113495bSYour Name 	tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8882*5113495bSYour Name 	tDot11fTLVDeviceName DeviceName;
8883*5113495bSYour Name 	tDot11fTLVConfigMethods ConfigMethods;
8884*5113495bSYour Name 	tDot11fTLVRFBands   RFBands;
8885*5113495bSYour Name 	tDot11fTLVVendorExtension VendorExtension;
8886*5113495bSYour Name } tDot11fIEWscProbeRes;
8887*5113495bSYour Name 
8888*5113495bSYour Name #define DOT11F_EID_WSCPROBERES (221)
8889*5113495bSYour Name 
8890*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8891*5113495bSYour Name #define DOT11F_IE_WSCPROBERES_MIN_LEN (4)
8892*5113495bSYour Name 
8893*5113495bSYour Name #define DOT11F_IE_WSCPROBERES_MAX_LEN (317)
8894*5113495bSYour Name 
8895*5113495bSYour Name #ifdef __cplusplus
8896*5113495bSYour Name extern "C" {
8897*5113495bSYour Name #endif /* C++ */
8898*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wsc_probe_res(
8899*5113495bSYour Name 	tpAniSirGlobal,
8900*5113495bSYour Name 	uint8_t *,
8901*5113495bSYour Name 	uint8_t,
8902*5113495bSYour Name 	tDot11fIEWscProbeRes*,
8903*5113495bSYour Name 	bool);
8904*5113495bSYour Name 
8905*5113495bSYour Name uint32_t dot11f_pack_ie_wsc_probe_res(
8906*5113495bSYour Name 	tpAniSirGlobal,
8907*5113495bSYour Name 	tDot11fIEWscProbeRes *,
8908*5113495bSYour Name 	uint8_t *,
8909*5113495bSYour Name 	uint32_t,
8910*5113495bSYour Name 	uint32_t*);
8911*5113495bSYour Name 
8912*5113495bSYour Name uint32_t dot11f_get_packed_ie_wsc_probe_res(
8913*5113495bSYour Name 	tpAniSirGlobal,
8914*5113495bSYour Name 	tDot11fIEWscProbeRes *,
8915*5113495bSYour Name 	uint32_t*);
8916*5113495bSYour Name 
8917*5113495bSYour Name #ifdef __cplusplus
8918*5113495bSYour Name }; /* End extern "C". */
8919*5113495bSYour Name #endif /* C++ */
8920*5113495bSYour Name 
8921*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8922*5113495bSYour Name typedef struct sDot11fIEWscReassocRes {
8923*5113495bSYour Name 	uint8_t             present;
8924*5113495bSYour Name 	tDot11fTLVVersion   Version;
8925*5113495bSYour Name 	tDot11fTLVResponseType ResponseType;
8926*5113495bSYour Name 	tDot11fTLVVendorExtension VendorExtension;
8927*5113495bSYour Name } tDot11fIEWscReassocRes;
8928*5113495bSYour Name 
8929*5113495bSYour Name #define DOT11F_EID_WSCREASSOCRES (221)
8930*5113495bSYour Name 
8931*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8932*5113495bSYour Name #define DOT11F_IE_WSCREASSOCRES_MIN_LEN (4)
8933*5113495bSYour Name 
8934*5113495bSYour Name #define DOT11F_IE_WSCREASSOCRES_MAX_LEN (35)
8935*5113495bSYour Name 
8936*5113495bSYour Name #ifdef __cplusplus
8937*5113495bSYour Name extern "C" {
8938*5113495bSYour Name #endif /* C++ */
8939*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_wsc_reassoc_res(
8940*5113495bSYour Name 	tpAniSirGlobal,
8941*5113495bSYour Name 	uint8_t *,
8942*5113495bSYour Name 	uint8_t,
8943*5113495bSYour Name 	tDot11fIEWscReassocRes*,
8944*5113495bSYour Name 	bool);
8945*5113495bSYour Name 
8946*5113495bSYour Name uint32_t dot11f_pack_ie_wsc_reassoc_res(
8947*5113495bSYour Name 	tpAniSirGlobal,
8948*5113495bSYour Name 	tDot11fIEWscReassocRes *,
8949*5113495bSYour Name 	uint8_t *,
8950*5113495bSYour Name 	uint32_t,
8951*5113495bSYour Name 	uint32_t*);
8952*5113495bSYour Name 
8953*5113495bSYour Name uint32_t dot11f_get_packed_ie_wsc_reassoc_res(
8954*5113495bSYour Name 	tpAniSirGlobal,
8955*5113495bSYour Name 	tDot11fIEWscReassocRes *,
8956*5113495bSYour Name 	uint32_t*);
8957*5113495bSYour Name 
8958*5113495bSYour Name #ifdef __cplusplus
8959*5113495bSYour Name }; /* End extern "C". */
8960*5113495bSYour Name #endif /* C++ */
8961*5113495bSYour Name 
8962*5113495bSYour Name /* EID 159 (0x9f) */
8963*5113495bSYour Name typedef struct sDot11fIEaddba_extn_element {
8964*5113495bSYour Name 	uint8_t             present;
8965*5113495bSYour Name 	uint8_t     no_fragmentation:1;
8966*5113495bSYour Name 	uint8_t    he_frag_operation:2;
8967*5113495bSYour Name 	uint8_t             reserved:2;
8968*5113495bSYour Name 	uint8_t       extd_buff_size:3;
8969*5113495bSYour Name } tDot11fIEaddba_extn_element;
8970*5113495bSYour Name 
8971*5113495bSYour Name #define DOT11F_EID_ADDBA_EXTN_ELEMENT (159)
8972*5113495bSYour Name 
8973*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
8974*5113495bSYour Name #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MIN_LEN (1)
8975*5113495bSYour Name 
8976*5113495bSYour Name #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MAX_LEN (1)
8977*5113495bSYour Name 
8978*5113495bSYour Name #ifdef __cplusplus
8979*5113495bSYour Name extern "C" {
8980*5113495bSYour Name #endif /* C++ */
8981*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_addba_extn_element(
8982*5113495bSYour Name 	tpAniSirGlobal,
8983*5113495bSYour Name 	uint8_t *,
8984*5113495bSYour Name 	uint8_t,
8985*5113495bSYour Name 	tDot11fIEaddba_extn_element*,
8986*5113495bSYour Name 	bool);
8987*5113495bSYour Name 
8988*5113495bSYour Name uint32_t dot11f_pack_ie_addba_extn_element(
8989*5113495bSYour Name 	tpAniSirGlobal,
8990*5113495bSYour Name 	tDot11fIEaddba_extn_element *,
8991*5113495bSYour Name 	uint8_t *,
8992*5113495bSYour Name 	uint32_t,
8993*5113495bSYour Name 	uint32_t*);
8994*5113495bSYour Name 
8995*5113495bSYour Name uint32_t dot11f_get_packed_ie_addba_extn_element(
8996*5113495bSYour Name 	tpAniSirGlobal,
8997*5113495bSYour Name 	tDot11fIEaddba_extn_element *,
8998*5113495bSYour Name 	uint32_t*);
8999*5113495bSYour Name 
9000*5113495bSYour Name #ifdef __cplusplus
9001*5113495bSYour Name }; /* End extern "C". */
9002*5113495bSYour Name #endif /* C++ */
9003*5113495bSYour Name 
9004*5113495bSYour Name /* EID 255 (0xff) Extended EID 42 (0x2a) */
9005*5113495bSYour Name typedef struct sDot11fIEbss_color_change {
9006*5113495bSYour Name 	uint8_t             present;
9007*5113495bSYour Name 	uint8_t             countdown;
9008*5113495bSYour Name 	uint8_t            new_color:6;
9009*5113495bSYour Name 	uint8_t             reserved:2;
9010*5113495bSYour Name } tDot11fIEbss_color_change;
9011*5113495bSYour Name 
9012*5113495bSYour Name #define DOT11F_EID_BSS_COLOR_CHANGE (255)
9013*5113495bSYour Name 
9014*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9015*5113495bSYour Name #define DOT11F_IE_BSS_COLOR_CHANGE_MIN_LEN (2)
9016*5113495bSYour Name 
9017*5113495bSYour Name #define DOT11F_IE_BSS_COLOR_CHANGE_MAX_LEN (2)
9018*5113495bSYour Name 
9019*5113495bSYour Name #ifdef __cplusplus
9020*5113495bSYour Name extern "C" {
9021*5113495bSYour Name #endif /* C++ */
9022*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_bss_color_change(
9023*5113495bSYour Name 	tpAniSirGlobal,
9024*5113495bSYour Name 	uint8_t *,
9025*5113495bSYour Name 	uint8_t,
9026*5113495bSYour Name 	tDot11fIEbss_color_change*,
9027*5113495bSYour Name 	bool);
9028*5113495bSYour Name 
9029*5113495bSYour Name uint32_t dot11f_pack_ie_bss_color_change(
9030*5113495bSYour Name 	tpAniSirGlobal,
9031*5113495bSYour Name 	tDot11fIEbss_color_change *,
9032*5113495bSYour Name 	uint8_t *,
9033*5113495bSYour Name 	uint32_t,
9034*5113495bSYour Name 	uint32_t*);
9035*5113495bSYour Name 
9036*5113495bSYour Name uint32_t dot11f_get_packed_ie_bss_color_change(
9037*5113495bSYour Name 	tpAniSirGlobal,
9038*5113495bSYour Name 	tDot11fIEbss_color_change *,
9039*5113495bSYour Name 	uint32_t*);
9040*5113495bSYour Name 
9041*5113495bSYour Name #ifdef __cplusplus
9042*5113495bSYour Name }; /* End extern "C". */
9043*5113495bSYour Name #endif /* C++ */
9044*5113495bSYour Name 
9045*5113495bSYour Name /* EID 90 (0x5a) */
9046*5113495bSYour Name typedef struct sDot11fIEbss_max_idle_period {
9047*5113495bSYour Name 	uint8_t             present;
9048*5113495bSYour Name 	uint16_t            max_idle_period;
9049*5113495bSYour Name 	uint8_t prot_keep_alive_reqd:1;
9050*5113495bSYour Name 	uint8_t             reserved:7;
9051*5113495bSYour Name } tDot11fIEbss_max_idle_period;
9052*5113495bSYour Name 
9053*5113495bSYour Name #define DOT11F_EID_BSS_MAX_IDLE_PERIOD (90)
9054*5113495bSYour Name 
9055*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9056*5113495bSYour Name #define DOT11F_IE_BSS_MAX_IDLE_PERIOD_MIN_LEN (3)
9057*5113495bSYour Name 
9058*5113495bSYour Name #define DOT11F_IE_BSS_MAX_IDLE_PERIOD_MAX_LEN (3)
9059*5113495bSYour Name 
9060*5113495bSYour Name #ifdef __cplusplus
9061*5113495bSYour Name extern "C" {
9062*5113495bSYour Name #endif /* C++ */
9063*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_bss_max_idle_period(
9064*5113495bSYour Name 	tpAniSirGlobal,
9065*5113495bSYour Name 	uint8_t *,
9066*5113495bSYour Name 	uint8_t,
9067*5113495bSYour Name 	tDot11fIEbss_max_idle_period*,
9068*5113495bSYour Name 	bool);
9069*5113495bSYour Name 
9070*5113495bSYour Name uint32_t dot11f_pack_ie_bss_max_idle_period(
9071*5113495bSYour Name 	tpAniSirGlobal,
9072*5113495bSYour Name 	tDot11fIEbss_max_idle_period *,
9073*5113495bSYour Name 	uint8_t *,
9074*5113495bSYour Name 	uint32_t,
9075*5113495bSYour Name 	uint32_t*);
9076*5113495bSYour Name 
9077*5113495bSYour Name uint32_t dot11f_get_packed_ie_bss_max_idle_period(
9078*5113495bSYour Name 	tpAniSirGlobal,
9079*5113495bSYour Name 	tDot11fIEbss_max_idle_period *,
9080*5113495bSYour Name 	uint32_t*);
9081*5113495bSYour Name 
9082*5113495bSYour Name #ifdef __cplusplus
9083*5113495bSYour Name }; /* End extern "C". */
9084*5113495bSYour Name #endif /* C++ */
9085*5113495bSYour Name 
9086*5113495bSYour Name /* EID 255 (0xff) Extended EID 88 (0x58) */
9087*5113495bSYour Name typedef struct sDot11fIEdescriptor_element {
9088*5113495bSYour Name 	uint8_t                     present;
9089*5113495bSYour Name 	uint8_t                     request_type;
9090*5113495bSYour Name 	uint16_t                    user_priority_control;
9091*5113495bSYour Name 	uint32_t                    stream_timeout;
9092*5113495bSYour Name 	tDot11fIEtclas_mask         tclas_mask;
9093*5113495bSYour Name 	tDot11fIEmscs_status        mscs_status;
9094*5113495bSYour Name } tDot11fIEdescriptor_element;
9095*5113495bSYour Name 
9096*5113495bSYour Name #define DOT11F_EID_DESCRIPTOR_ELEMENT (255)
9097*5113495bSYour Name 
9098*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9099*5113495bSYour Name #define DOT11F_IE_DESCRIPTOR_ELEMENT_MIN_LEN (7)
9100*5113495bSYour Name 
9101*5113495bSYour Name #define DOT11F_IE_DESCRIPTOR_ELEMENT_MAX_LEN (30)
9102*5113495bSYour Name 
9103*5113495bSYour Name #ifdef __cplusplus
9104*5113495bSYour Name extern "C" {
9105*5113495bSYour Name #endif /* C++ */
9106*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_descriptor_element(
9107*5113495bSYour Name 	tpAniSirGlobal,
9108*5113495bSYour Name 	uint8_t *,
9109*5113495bSYour Name 	uint8_t,
9110*5113495bSYour Name 	tDot11fIEdescriptor_element*,
9111*5113495bSYour Name 	bool);
9112*5113495bSYour Name 
9113*5113495bSYour Name uint32_t dot11f_pack_ie_descriptor_element(
9114*5113495bSYour Name 	tpAniSirGlobal,
9115*5113495bSYour Name 	tDot11fIEdescriptor_element *,
9116*5113495bSYour Name 	uint8_t *,
9117*5113495bSYour Name 	uint32_t,
9118*5113495bSYour Name 	uint32_t*);
9119*5113495bSYour Name 
9120*5113495bSYour Name uint32_t dot11f_get_packed_ie_descriptor_element(
9121*5113495bSYour Name 	tpAniSirGlobal,
9122*5113495bSYour Name 	tDot11fIEdescriptor_element *,
9123*5113495bSYour Name 	uint32_t*);
9124*5113495bSYour Name 
9125*5113495bSYour Name #ifdef __cplusplus
9126*5113495bSYour Name }; /* End extern "C". */
9127*5113495bSYour Name #endif /* C++ */
9128*5113495bSYour Name 
9129*5113495bSYour Name /* EID 255 (0xff) Extended EID 32 (0x20) */
9130*5113495bSYour Name typedef struct sDot11fIEdh_parameter_element {
9131*5113495bSYour Name 	uint8_t             present;
9132*5113495bSYour Name 	uint8_t             group[2];
9133*5113495bSYour Name 	uint8_t             num_public_key;
9134*5113495bSYour Name 	uint8_t             public_key[255];
9135*5113495bSYour Name } tDot11fIEdh_parameter_element;
9136*5113495bSYour Name 
9137*5113495bSYour Name #define DOT11F_EID_DH_PARAMETER_ELEMENT (255)
9138*5113495bSYour Name 
9139*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9140*5113495bSYour Name #define DOT11F_IE_DH_PARAMETER_ELEMENT_MIN_LEN (2)
9141*5113495bSYour Name 
9142*5113495bSYour Name #define DOT11F_IE_DH_PARAMETER_ELEMENT_MAX_LEN (257)
9143*5113495bSYour Name 
9144*5113495bSYour Name #ifdef __cplusplus
9145*5113495bSYour Name extern "C" {
9146*5113495bSYour Name #endif /* C++ */
9147*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_dh_parameter_element(
9148*5113495bSYour Name 	tpAniSirGlobal,
9149*5113495bSYour Name 	uint8_t *,
9150*5113495bSYour Name 	uint8_t,
9151*5113495bSYour Name 	tDot11fIEdh_parameter_element*,
9152*5113495bSYour Name 	bool);
9153*5113495bSYour Name 
9154*5113495bSYour Name uint32_t dot11f_pack_ie_dh_parameter_element(
9155*5113495bSYour Name 	tpAniSirGlobal,
9156*5113495bSYour Name 	tDot11fIEdh_parameter_element *,
9157*5113495bSYour Name 	uint8_t *,
9158*5113495bSYour Name 	uint32_t,
9159*5113495bSYour Name 	uint32_t*);
9160*5113495bSYour Name 
9161*5113495bSYour Name uint32_t dot11f_get_packed_ie_dh_parameter_element(
9162*5113495bSYour Name 	tpAniSirGlobal,
9163*5113495bSYour Name 	tDot11fIEdh_parameter_element *,
9164*5113495bSYour Name 	uint32_t*);
9165*5113495bSYour Name 
9166*5113495bSYour Name #ifdef __cplusplus
9167*5113495bSYour Name }; /* End extern "C". */
9168*5113495bSYour Name #endif /* C++ */
9169*5113495bSYour Name 
9170*5113495bSYour Name /* EID 255 (0xff) Extended EID 108 (0x6c) */
9171*5113495bSYour Name typedef struct sDot11fIEeht_cap {
9172*5113495bSYour Name 	uint8_t             present;
9173*5113495bSYour Name 	uint16_t      epcs_pri_access:1;
9174*5113495bSYour Name 	uint16_t           eht_om_ctl:1;
9175*5113495bSYour Name 	uint16_t triggered_txop_sharing_mode1:1;
9176*5113495bSYour Name 	uint16_t triggered_txop_sharing_mode2:1;
9177*5113495bSYour Name 	uint16_t       restricted_twt:1;
9178*5113495bSYour Name 	uint16_t     scs_traffic_desc:1;
9179*5113495bSYour Name 	uint16_t         max_mpdu_len:2;
9180*5113495bSYour Name 	uint16_t max_a_mpdu_len_exponent_ext:1;
9181*5113495bSYour Name 	uint16_t      eht_trs_support:1;
9182*5113495bSYour Name 	uint16_t txop_return_support_txop_share_m2:1;
9183*5113495bSYour Name 	uint16_t     two_bqrs_support:1;
9184*5113495bSYour Name 	uint16_t eht_link_adaptation_support:2;
9185*5113495bSYour Name 	uint16_t             reserved:2;
9186*5113495bSYour Name 	uint32_t            reserved2:1;
9187*5113495bSYour Name 	uint32_t  support_320mhz_6ghz:1;
9188*5113495bSYour Name 	uint32_t  ru_242tone_wt_20mhz:1;
9189*5113495bSYour Name 	uint32_t ndp_4x_eht_ltf_3dot2_us_gi:1;
9190*5113495bSYour Name 	uint32_t   partial_bw_mu_mimo:1;
9191*5113495bSYour Name 	uint32_t        su_beamformer:1;
9192*5113495bSYour Name 	uint32_t        su_beamformee:1;
9193*5113495bSYour Name 	uint32_t     bfee_ss_le_80mhz:3;
9194*5113495bSYour Name 	uint32_t       bfee_ss_160mhz:3;
9195*5113495bSYour Name 	uint32_t       bfee_ss_320mhz:3;
9196*5113495bSYour Name 	uint32_t num_sounding_dim_le_80mhz:3;
9197*5113495bSYour Name 	uint32_t num_sounding_dim_160mhz:3;
9198*5113495bSYour Name 	uint32_t num_sounding_dim_320mhz:3;
9199*5113495bSYour Name 	uint32_t    ng_16_su_feedback:1;
9200*5113495bSYour Name 	uint32_t    ng_16_mu_feedback:1;
9201*5113495bSYour Name 	uint32_t cb_sz_4_2_su_feedback:1;
9202*5113495bSYour Name 	uint32_t cb_sz_7_5_su_feedback:1;
9203*5113495bSYour Name 	uint32_t trig_su_bforming_feedback:1;
9204*5113495bSYour Name 	uint32_t trig_mu_bforming_partial_bw_feedback:1;
9205*5113495bSYour Name 	uint32_t triggered_cqi_feedback:1;
9206*5113495bSYour Name 	uint32_t partial_bw_dl_mu_mimo:1;
9207*5113495bSYour Name 	uint32_t         psr_based_sr:1;
9208*5113495bSYour Name 	uint32_t   power_boost_factor:1;
9209*5113495bSYour Name 	uint32_t eht_mu_ppdu_4x_ltf_0_8_us_gi:1;
9210*5113495bSYour Name 	uint32_t               max_nc:4;
9211*5113495bSYour Name 	uint32_t non_trig_cqi_feedback:1;
9212*5113495bSYour Name 	uint32_t tx_1024_4096_qam_lt_242_tone_ru:1;
9213*5113495bSYour Name 	uint32_t rx_1024_4096_qam_lt_242_tone_ru:1;
9214*5113495bSYour Name 	uint32_t         ppet_present:1;
9215*5113495bSYour Name 	uint32_t common_nominal_pkt_padding:2;
9216*5113495bSYour Name 	uint32_t      max_num_eht_ltf:5;
9217*5113495bSYour Name 	uint32_t               mcs_15:4;
9218*5113495bSYour Name 	uint32_t         eht_dup_6ghz:1;
9219*5113495bSYour Name 	uint32_t op_sta_rx_ndp_wider_bw_20mhz:1;
9220*5113495bSYour Name 	uint32_t non_ofdma_ul_mu_mimo_le_80mhz:1;
9221*5113495bSYour Name 	uint32_t non_ofdma_ul_mu_mimo_160mhz:1;
9222*5113495bSYour Name 	uint32_t non_ofdma_ul_mu_mimo_320mhz:1;
9223*5113495bSYour Name 	uint32_t  mu_bformer_le_80mhz:1;
9224*5113495bSYour Name 	uint32_t    mu_bformer_160mhz:1;
9225*5113495bSYour Name 	uint32_t    mu_bformer_320mhz:1;
9226*5113495bSYour Name 	uint32_t tb_sounding_feedback_rl:1;
9227*5113495bSYour Name 	uint8_t rx_1k_qam_in_wider_bw_dl_ofdma:1;
9228*5113495bSYour Name 	uint8_t rx_4k_qam_in_wider_bw_dl_ofdma:1;
9229*5113495bSYour Name 	uint8_t limited_cap_support_20mhz:1;
9230*5113495bSYour Name 	uint8_t triggered_mu_bf_full_bw_fb_and_dl_mumimo:1;
9231*5113495bSYour Name 	uint8_t    mru_support_20mhz:1;
9232*5113495bSYour Name 	uint8_t            reserved3:3;
9233*5113495bSYour Name 	uint32_t bw_20_rx_max_nss_for_mcs_0_to_7:4;
9234*5113495bSYour Name 	uint32_t bw_20_tx_max_nss_for_mcs_0_to_7:4;
9235*5113495bSYour Name 	uint32_t bw_20_rx_max_nss_for_mcs_8_and_9:4;
9236*5113495bSYour Name 	uint32_t bw_20_tx_max_nss_for_mcs_8_and_9:4;
9237*5113495bSYour Name 	uint32_t bw_20_rx_max_nss_for_mcs_10_and_11:4;
9238*5113495bSYour Name 	uint32_t bw_20_tx_max_nss_for_mcs_10_and_11:4;
9239*5113495bSYour Name 	uint32_t bw_20_rx_max_nss_for_mcs_12_and_13:4;
9240*5113495bSYour Name 	uint32_t bw_20_tx_max_nss_for_mcs_12_and_13:4;
9241*5113495bSYour Name 	uint32_t bw_le_80_rx_max_nss_for_mcs_0_to_9:4;
9242*5113495bSYour Name 	uint32_t bw_le_80_tx_max_nss_for_mcs_0_to_9:4;
9243*5113495bSYour Name 	uint32_t bw_le_80_rx_max_nss_for_mcs_10_and_11:4;
9244*5113495bSYour Name 	uint32_t bw_le_80_tx_max_nss_for_mcs_10_and_11:4;
9245*5113495bSYour Name 	uint32_t bw_le_80_rx_max_nss_for_mcs_12_and_13:4;
9246*5113495bSYour Name 	uint32_t bw_le_80_tx_max_nss_for_mcs_12_and_13:4;
9247*5113495bSYour Name 	uint32_t bw_160_rx_max_nss_for_mcs_0_to_9:4;
9248*5113495bSYour Name 	uint32_t bw_160_tx_max_nss_for_mcs_0_to_9:4;
9249*5113495bSYour Name 	uint32_t bw_160_rx_max_nss_for_mcs_10_and_11:4;
9250*5113495bSYour Name 	uint32_t bw_160_tx_max_nss_for_mcs_10_and_11:4;
9251*5113495bSYour Name 	uint32_t bw_160_rx_max_nss_for_mcs_12_and_13:4;
9252*5113495bSYour Name 	uint32_t bw_160_tx_max_nss_for_mcs_12_and_13:4;
9253*5113495bSYour Name 	uint32_t bw_320_rx_max_nss_for_mcs_0_to_9:4;
9254*5113495bSYour Name 	uint32_t bw_320_tx_max_nss_for_mcs_0_to_9:4;
9255*5113495bSYour Name 	uint32_t bw_320_rx_max_nss_for_mcs_10_and_11:4;
9256*5113495bSYour Name 	uint32_t bw_320_tx_max_nss_for_mcs_10_and_11:4;
9257*5113495bSYour Name 	uint8_t bw_320_rx_max_nss_for_mcs_12_and_13:4;
9258*5113495bSYour Name 	uint8_t bw_320_tx_max_nss_for_mcs_12_and_13:4;
9259*5113495bSYour Name 	union {
9260*5113495bSYour Name 		struct {
9261*5113495bSYour Name 			uint8_t num_ppe_th;
9262*5113495bSYour Name 			uint8_t ppe_th[62];
9263*5113495bSYour Name 		} ppe_threshold; /* ppet_present = 1 */
9264*5113495bSYour Name 	} ppet;
9265*5113495bSYour Name } tDot11fIEeht_cap;
9266*5113495bSYour Name 
9267*5113495bSYour Name #define DOT11F_EID_EHT_CAP (255)
9268*5113495bSYour Name 
9269*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9270*5113495bSYour Name #define DOT11F_IE_EHT_CAP_MIN_LEN (24)
9271*5113495bSYour Name 
9272*5113495bSYour Name #define DOT11F_IE_EHT_CAP_MAX_LEN (86)
9273*5113495bSYour Name 
9274*5113495bSYour Name #ifdef __cplusplus
9275*5113495bSYour Name extern "C" {
9276*5113495bSYour Name #endif /* C++ */
9277*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_eht_cap(
9278*5113495bSYour Name 	tpAniSirGlobal,
9279*5113495bSYour Name 	uint8_t *,
9280*5113495bSYour Name 	uint8_t,
9281*5113495bSYour Name 	tDot11fIEeht_cap*,
9282*5113495bSYour Name 	bool);
9283*5113495bSYour Name 
9284*5113495bSYour Name uint32_t dot11f_pack_ie_eht_cap(
9285*5113495bSYour Name 	tpAniSirGlobal,
9286*5113495bSYour Name 	tDot11fIEeht_cap *,
9287*5113495bSYour Name 	uint8_t *,
9288*5113495bSYour Name 	uint32_t,
9289*5113495bSYour Name 	uint32_t*);
9290*5113495bSYour Name 
9291*5113495bSYour Name uint32_t dot11f_get_packed_ie_eht_cap(
9292*5113495bSYour Name 	tpAniSirGlobal,
9293*5113495bSYour Name 	tDot11fIEeht_cap *,
9294*5113495bSYour Name 	uint32_t*);
9295*5113495bSYour Name 
9296*5113495bSYour Name #ifdef __cplusplus
9297*5113495bSYour Name }; /* End extern "C". */
9298*5113495bSYour Name #endif /* C++ */
9299*5113495bSYour Name 
9300*5113495bSYour Name /* EID 255 (0xff) Extended EID 106 (0x6a) */
9301*5113495bSYour Name typedef struct sDot11fIEeht_op {
9302*5113495bSYour Name 	uint8_t             present;
9303*5113495bSYour Name 	uint8_t eht_op_information_present:1;
9304*5113495bSYour Name 	uint8_t disabled_sub_chan_bitmap_present:1;
9305*5113495bSYour Name 	uint8_t eht_default_pe_duration:1;
9306*5113495bSYour Name 	uint8_t group_addr_bu_indication_limit:1;
9307*5113495bSYour Name 	uint8_t group_addr_bu_indication_exponent:2;
9308*5113495bSYour Name 	uint8_t             reserved:2;
9309*5113495bSYour Name 	uint32_t basic_rx_max_nss_for_mcs_0_to_7:4;
9310*5113495bSYour Name 	uint32_t basic_tx_max_nss_for_mcs_0_to_7:4;
9311*5113495bSYour Name 	uint32_t basic_rx_max_nss_for_mcs_8_and_9:4;
9312*5113495bSYour Name 	uint32_t basic_tx_max_nss_for_mcs_8_and_9:4;
9313*5113495bSYour Name 	uint32_t basic_rx_max_nss_for_mcs_10_and_11:4;
9314*5113495bSYour Name 	uint32_t basic_tx_max_nss_for_mcs_10_and_11:4;
9315*5113495bSYour Name 	uint32_t basic_rx_max_nss_for_mcs_12_and_13:4;
9316*5113495bSYour Name 	uint32_t basic_tx_max_nss_for_mcs_12_and_13:4;
9317*5113495bSYour Name 	uint8_t        channel_width:3;
9318*5113495bSYour Name 	uint8_t           reserved_1:5;
9319*5113495bSYour Name 	uint8_t             ccfs0;
9320*5113495bSYour Name 	uint8_t             ccfs1;
9321*5113495bSYour Name 	uint8_t             disabled_sub_chan_bitmap[1][2];
9322*5113495bSYour Name } tDot11fIEeht_op;
9323*5113495bSYour Name 
9324*5113495bSYour Name #define DOT11F_EID_EHT_OP (255)
9325*5113495bSYour Name 
9326*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9327*5113495bSYour Name #define DOT11F_IE_EHT_OP_MIN_LEN (8)
9328*5113495bSYour Name 
9329*5113495bSYour Name #define DOT11F_IE_EHT_OP_MAX_LEN (10)
9330*5113495bSYour Name 
9331*5113495bSYour Name #ifdef __cplusplus
9332*5113495bSYour Name extern "C" {
9333*5113495bSYour Name #endif /* C++ */
9334*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_eht_op(
9335*5113495bSYour Name 	tpAniSirGlobal,
9336*5113495bSYour Name 	uint8_t *,
9337*5113495bSYour Name 	uint8_t,
9338*5113495bSYour Name 	tDot11fIEeht_op*,
9339*5113495bSYour Name 	bool);
9340*5113495bSYour Name 
9341*5113495bSYour Name uint32_t dot11f_pack_ie_eht_op(
9342*5113495bSYour Name 	tpAniSirGlobal,
9343*5113495bSYour Name 	tDot11fIEeht_op *,
9344*5113495bSYour Name 	uint8_t *,
9345*5113495bSYour Name 	uint32_t,
9346*5113495bSYour Name 	uint32_t*);
9347*5113495bSYour Name 
9348*5113495bSYour Name uint32_t dot11f_get_packed_ie_eht_op(
9349*5113495bSYour Name 	tpAniSirGlobal,
9350*5113495bSYour Name 	tDot11fIEeht_op *,
9351*5113495bSYour Name 	uint32_t*);
9352*5113495bSYour Name 
9353*5113495bSYour Name #ifdef __cplusplus
9354*5113495bSYour Name }; /* End extern "C". */
9355*5113495bSYour Name #endif /* C++ */
9356*5113495bSYour Name 
9357*5113495bSYour Name /* EID 255 (0xff) Extended EID 11 (0x0b) */
9358*5113495bSYour Name typedef struct sDot11fIEesp_information {
9359*5113495bSYour Name 	uint8_t             present;
9360*5113495bSYour Name 	uint8_t             num_data;
9361*5113495bSYour Name 	uint8_t             data[96];
9362*5113495bSYour Name } tDot11fIEesp_information;
9363*5113495bSYour Name 
9364*5113495bSYour Name #define DOT11F_EID_ESP_INFORMATION (255)
9365*5113495bSYour Name 
9366*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9367*5113495bSYour Name #define DOT11F_IE_ESP_INFORMATION_MIN_LEN (0)
9368*5113495bSYour Name 
9369*5113495bSYour Name #define DOT11F_IE_ESP_INFORMATION_MAX_LEN (96)
9370*5113495bSYour Name 
9371*5113495bSYour Name #ifdef __cplusplus
9372*5113495bSYour Name extern "C" {
9373*5113495bSYour Name #endif /* C++ */
9374*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_esp_information(
9375*5113495bSYour Name 	tpAniSirGlobal,
9376*5113495bSYour Name 	uint8_t *,
9377*5113495bSYour Name 	uint8_t,
9378*5113495bSYour Name 	tDot11fIEesp_information*,
9379*5113495bSYour Name 	bool);
9380*5113495bSYour Name 
9381*5113495bSYour Name uint32_t dot11f_pack_ie_esp_information(
9382*5113495bSYour Name 	tpAniSirGlobal,
9383*5113495bSYour Name 	tDot11fIEesp_information *,
9384*5113495bSYour Name 	uint8_t *,
9385*5113495bSYour Name 	uint32_t,
9386*5113495bSYour Name 	uint32_t*);
9387*5113495bSYour Name 
9388*5113495bSYour Name uint32_t dot11f_get_packed_ie_esp_information(
9389*5113495bSYour Name 	tpAniSirGlobal,
9390*5113495bSYour Name 	tDot11fIEesp_information *,
9391*5113495bSYour Name 	uint32_t*);
9392*5113495bSYour Name 
9393*5113495bSYour Name #ifdef __cplusplus
9394*5113495bSYour Name }; /* End extern "C". */
9395*5113495bSYour Name #endif /* C++ */
9396*5113495bSYour Name 
9397*5113495bSYour Name /* EID 60 (0x3c) */
9398*5113495bSYour Name typedef struct sDot11fIEext_chan_switch_ann {
9399*5113495bSYour Name 	uint8_t             present;
9400*5113495bSYour Name 	uint8_t             switch_mode;
9401*5113495bSYour Name 	uint8_t             new_reg_class;
9402*5113495bSYour Name 	uint8_t             new_channel;
9403*5113495bSYour Name 	uint8_t             switch_count;
9404*5113495bSYour Name } tDot11fIEext_chan_switch_ann;
9405*5113495bSYour Name 
9406*5113495bSYour Name #define DOT11F_EID_EXT_CHAN_SWITCH_ANN (60)
9407*5113495bSYour Name 
9408*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9409*5113495bSYour Name #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MIN_LEN (4)
9410*5113495bSYour Name 
9411*5113495bSYour Name #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MAX_LEN (4)
9412*5113495bSYour Name 
9413*5113495bSYour Name #ifdef __cplusplus
9414*5113495bSYour Name extern "C" {
9415*5113495bSYour Name #endif /* C++ */
9416*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ext_chan_switch_ann(
9417*5113495bSYour Name 	tpAniSirGlobal,
9418*5113495bSYour Name 	uint8_t *,
9419*5113495bSYour Name 	uint8_t,
9420*5113495bSYour Name 	tDot11fIEext_chan_switch_ann*,
9421*5113495bSYour Name 	bool);
9422*5113495bSYour Name 
9423*5113495bSYour Name uint32_t dot11f_pack_ie_ext_chan_switch_ann(
9424*5113495bSYour Name 	tpAniSirGlobal,
9425*5113495bSYour Name 	tDot11fIEext_chan_switch_ann *,
9426*5113495bSYour Name 	uint8_t *,
9427*5113495bSYour Name 	uint32_t,
9428*5113495bSYour Name 	uint32_t*);
9429*5113495bSYour Name 
9430*5113495bSYour Name uint32_t dot11f_get_packed_ie_ext_chan_switch_ann(
9431*5113495bSYour Name 	tpAniSirGlobal,
9432*5113495bSYour Name 	tDot11fIEext_chan_switch_ann *,
9433*5113495bSYour Name 	uint32_t*);
9434*5113495bSYour Name 
9435*5113495bSYour Name #ifdef __cplusplus
9436*5113495bSYour Name }; /* End extern "C". */
9437*5113495bSYour Name #endif /* C++ */
9438*5113495bSYour Name 
9439*5113495bSYour Name /* EID 255 (0xff) Extended EID 1 (0x01) */
9440*5113495bSYour Name typedef struct sDot11fIEfils_assoc_delay_info {
9441*5113495bSYour Name 	uint8_t             present;
9442*5113495bSYour Name 	uint8_t             assoc_delay_info;
9443*5113495bSYour Name } tDot11fIEfils_assoc_delay_info;
9444*5113495bSYour Name 
9445*5113495bSYour Name #define DOT11F_EID_FILS_ASSOC_DELAY_INFO (255)
9446*5113495bSYour Name 
9447*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9448*5113495bSYour Name #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MIN_LEN (1)
9449*5113495bSYour Name 
9450*5113495bSYour Name #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MAX_LEN (1)
9451*5113495bSYour Name 
9452*5113495bSYour Name #ifdef __cplusplus
9453*5113495bSYour Name extern "C" {
9454*5113495bSYour Name #endif /* C++ */
9455*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fils_assoc_delay_info(
9456*5113495bSYour Name 	tpAniSirGlobal,
9457*5113495bSYour Name 	uint8_t *,
9458*5113495bSYour Name 	uint8_t,
9459*5113495bSYour Name 	tDot11fIEfils_assoc_delay_info*,
9460*5113495bSYour Name 	bool);
9461*5113495bSYour Name 
9462*5113495bSYour Name uint32_t dot11f_pack_ie_fils_assoc_delay_info(
9463*5113495bSYour Name 	tpAniSirGlobal,
9464*5113495bSYour Name 	tDot11fIEfils_assoc_delay_info *,
9465*5113495bSYour Name 	uint8_t *,
9466*5113495bSYour Name 	uint32_t,
9467*5113495bSYour Name 	uint32_t*);
9468*5113495bSYour Name 
9469*5113495bSYour Name uint32_t dot11f_get_packed_ie_fils_assoc_delay_info(
9470*5113495bSYour Name 	tpAniSirGlobal,
9471*5113495bSYour Name 	tDot11fIEfils_assoc_delay_info *,
9472*5113495bSYour Name 	uint32_t*);
9473*5113495bSYour Name 
9474*5113495bSYour Name #ifdef __cplusplus
9475*5113495bSYour Name }; /* End extern "C". */
9476*5113495bSYour Name #endif /* C++ */
9477*5113495bSYour Name 
9478*5113495bSYour Name /* EID 255 (0xff) Extended EID 5 (0x05) */
9479*5113495bSYour Name typedef struct sDot11fIEfils_hlp_container {
9480*5113495bSYour Name 	uint8_t             present;
9481*5113495bSYour Name 	uint8_t             dest_mac[6];
9482*5113495bSYour Name 	uint8_t             src_mac[6];
9483*5113495bSYour Name 	uint8_t             num_hlp_packet;
9484*5113495bSYour Name 	uint8_t             hlp_packet[255];
9485*5113495bSYour Name } tDot11fIEfils_hlp_container;
9486*5113495bSYour Name 
9487*5113495bSYour Name #define DOT11F_EID_FILS_HLP_CONTAINER (255)
9488*5113495bSYour Name 
9489*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9490*5113495bSYour Name #define DOT11F_IE_FILS_HLP_CONTAINER_MIN_LEN (12)
9491*5113495bSYour Name 
9492*5113495bSYour Name #define DOT11F_IE_FILS_HLP_CONTAINER_MAX_LEN (267)
9493*5113495bSYour Name 
9494*5113495bSYour Name #ifdef __cplusplus
9495*5113495bSYour Name extern "C" {
9496*5113495bSYour Name #endif /* C++ */
9497*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fils_hlp_container(
9498*5113495bSYour Name 	tpAniSirGlobal,
9499*5113495bSYour Name 	uint8_t *,
9500*5113495bSYour Name 	uint8_t,
9501*5113495bSYour Name 	tDot11fIEfils_hlp_container*,
9502*5113495bSYour Name 	bool);
9503*5113495bSYour Name 
9504*5113495bSYour Name uint32_t dot11f_pack_ie_fils_hlp_container(
9505*5113495bSYour Name 	tpAniSirGlobal,
9506*5113495bSYour Name 	tDot11fIEfils_hlp_container *,
9507*5113495bSYour Name 	uint8_t *,
9508*5113495bSYour Name 	uint32_t,
9509*5113495bSYour Name 	uint32_t*);
9510*5113495bSYour Name 
9511*5113495bSYour Name uint32_t dot11f_get_packed_ie_fils_hlp_container(
9512*5113495bSYour Name 	tpAniSirGlobal,
9513*5113495bSYour Name 	tDot11fIEfils_hlp_container *,
9514*5113495bSYour Name 	uint32_t*);
9515*5113495bSYour Name 
9516*5113495bSYour Name #ifdef __cplusplus
9517*5113495bSYour Name }; /* End extern "C". */
9518*5113495bSYour Name #endif /* C++ */
9519*5113495bSYour Name 
9520*5113495bSYour Name /* EID 240 (0xf0) */
9521*5113495bSYour Name typedef struct sDot11fIEfils_indication {
9522*5113495bSYour Name 	uint8_t             present;
9523*5113495bSYour Name 	uint16_t public_key_identifiers_cnt:3;
9524*5113495bSYour Name 	uint16_t realm_identifiers_cnt:3;
9525*5113495bSYour Name 	uint16_t is_ip_config_supported:1;
9526*5113495bSYour Name 	uint16_t  is_cache_id_present:1;
9527*5113495bSYour Name 	uint16_t    is_hessid_present:1;
9528*5113495bSYour Name 	uint16_t is_fils_sk_auth_supported:1;
9529*5113495bSYour Name 	uint16_t is_fils_sk_auth_pfs_supported:1;
9530*5113495bSYour Name 	uint16_t is_pk_auth_supported:1;
9531*5113495bSYour Name 	uint16_t             reserved:4;
9532*5113495bSYour Name 	uint8_t             num_variable_data;
9533*5113495bSYour Name 	uint8_t             variable_data[255];
9534*5113495bSYour Name } tDot11fIEfils_indication;
9535*5113495bSYour Name 
9536*5113495bSYour Name #define DOT11F_EID_FILS_INDICATION (240)
9537*5113495bSYour Name 
9538*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9539*5113495bSYour Name #define DOT11F_IE_FILS_INDICATION_MIN_LEN (4)
9540*5113495bSYour Name 
9541*5113495bSYour Name #define DOT11F_IE_FILS_INDICATION_MAX_LEN (257)
9542*5113495bSYour Name 
9543*5113495bSYour Name #ifdef __cplusplus
9544*5113495bSYour Name extern "C" {
9545*5113495bSYour Name #endif /* C++ */
9546*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fils_indication(
9547*5113495bSYour Name 	tpAniSirGlobal,
9548*5113495bSYour Name 	uint8_t *,
9549*5113495bSYour Name 	uint8_t,
9550*5113495bSYour Name 	tDot11fIEfils_indication*,
9551*5113495bSYour Name 	bool);
9552*5113495bSYour Name 
9553*5113495bSYour Name uint32_t dot11f_pack_ie_fils_indication(
9554*5113495bSYour Name 	tpAniSirGlobal,
9555*5113495bSYour Name 	tDot11fIEfils_indication *,
9556*5113495bSYour Name 	uint8_t *,
9557*5113495bSYour Name 	uint32_t,
9558*5113495bSYour Name 	uint32_t*);
9559*5113495bSYour Name 
9560*5113495bSYour Name uint32_t dot11f_get_packed_ie_fils_indication(
9561*5113495bSYour Name 	tpAniSirGlobal,
9562*5113495bSYour Name 	tDot11fIEfils_indication *,
9563*5113495bSYour Name 	uint32_t*);
9564*5113495bSYour Name 
9565*5113495bSYour Name #ifdef __cplusplus
9566*5113495bSYour Name }; /* End extern "C". */
9567*5113495bSYour Name #endif /* C++ */
9568*5113495bSYour Name 
9569*5113495bSYour Name /* EID 255 (0xff) Extended EID 7 (0x07) */
9570*5113495bSYour Name typedef struct sDot11fIEfils_kde {
9571*5113495bSYour Name 	uint8_t             present;
9572*5113495bSYour Name 	uint8_t             key_rsc[8];
9573*5113495bSYour Name 	uint8_t             num_kde_list;
9574*5113495bSYour Name 	uint8_t             kde_list[255];
9575*5113495bSYour Name } tDot11fIEfils_kde;
9576*5113495bSYour Name 
9577*5113495bSYour Name #define DOT11F_EID_FILS_KDE (255)
9578*5113495bSYour Name 
9579*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9580*5113495bSYour Name #define DOT11F_IE_FILS_KDE_MIN_LEN (8)
9581*5113495bSYour Name 
9582*5113495bSYour Name #define DOT11F_IE_FILS_KDE_MAX_LEN (263)
9583*5113495bSYour Name 
9584*5113495bSYour Name #ifdef __cplusplus
9585*5113495bSYour Name extern "C" {
9586*5113495bSYour Name #endif /* C++ */
9587*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fils_kde(
9588*5113495bSYour Name 	tpAniSirGlobal,
9589*5113495bSYour Name 	uint8_t *,
9590*5113495bSYour Name 	uint8_t,
9591*5113495bSYour Name 	tDot11fIEfils_kde*,
9592*5113495bSYour Name 	bool);
9593*5113495bSYour Name 
9594*5113495bSYour Name uint32_t dot11f_pack_ie_fils_kde(
9595*5113495bSYour Name 	tpAniSirGlobal,
9596*5113495bSYour Name 	tDot11fIEfils_kde *,
9597*5113495bSYour Name 	uint8_t *,
9598*5113495bSYour Name 	uint32_t,
9599*5113495bSYour Name 	uint32_t*);
9600*5113495bSYour Name 
9601*5113495bSYour Name uint32_t dot11f_get_packed_ie_fils_kde(
9602*5113495bSYour Name 	tpAniSirGlobal,
9603*5113495bSYour Name 	tDot11fIEfils_kde *,
9604*5113495bSYour Name 	uint32_t*);
9605*5113495bSYour Name 
9606*5113495bSYour Name #ifdef __cplusplus
9607*5113495bSYour Name }; /* End extern "C". */
9608*5113495bSYour Name #endif /* C++ */
9609*5113495bSYour Name 
9610*5113495bSYour Name /* EID 255 (0xff) Extended EID 3 (0x03) */
9611*5113495bSYour Name typedef struct sDot11fIEfils_key_confirmation {
9612*5113495bSYour Name 	uint8_t             present;
9613*5113495bSYour Name 	uint8_t             num_key_auth;
9614*5113495bSYour Name 	uint8_t             key_auth[255];
9615*5113495bSYour Name } tDot11fIEfils_key_confirmation;
9616*5113495bSYour Name 
9617*5113495bSYour Name #define DOT11F_EID_FILS_KEY_CONFIRMATION (255)
9618*5113495bSYour Name 
9619*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9620*5113495bSYour Name #define DOT11F_IE_FILS_KEY_CONFIRMATION_MIN_LEN (0)
9621*5113495bSYour Name 
9622*5113495bSYour Name #define DOT11F_IE_FILS_KEY_CONFIRMATION_MAX_LEN (255)
9623*5113495bSYour Name 
9624*5113495bSYour Name #ifdef __cplusplus
9625*5113495bSYour Name extern "C" {
9626*5113495bSYour Name #endif /* C++ */
9627*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fils_key_confirmation(
9628*5113495bSYour Name 	tpAniSirGlobal,
9629*5113495bSYour Name 	uint8_t *,
9630*5113495bSYour Name 	uint8_t,
9631*5113495bSYour Name 	tDot11fIEfils_key_confirmation*,
9632*5113495bSYour Name 	bool);
9633*5113495bSYour Name 
9634*5113495bSYour Name uint32_t dot11f_pack_ie_fils_key_confirmation(
9635*5113495bSYour Name 	tpAniSirGlobal,
9636*5113495bSYour Name 	tDot11fIEfils_key_confirmation *,
9637*5113495bSYour Name 	uint8_t *,
9638*5113495bSYour Name 	uint32_t,
9639*5113495bSYour Name 	uint32_t*);
9640*5113495bSYour Name 
9641*5113495bSYour Name uint32_t dot11f_get_packed_ie_fils_key_confirmation(
9642*5113495bSYour Name 	tpAniSirGlobal,
9643*5113495bSYour Name 	tDot11fIEfils_key_confirmation *,
9644*5113495bSYour Name 	uint32_t*);
9645*5113495bSYour Name 
9646*5113495bSYour Name #ifdef __cplusplus
9647*5113495bSYour Name }; /* End extern "C". */
9648*5113495bSYour Name #endif /* C++ */
9649*5113495bSYour Name 
9650*5113495bSYour Name /* EID 255 (0xff) Extended EID 13 (0x0d) */
9651*5113495bSYour Name typedef struct sDot11fIEfils_nonce {
9652*5113495bSYour Name 	uint8_t             present;
9653*5113495bSYour Name 	uint8_t             nonce[16];
9654*5113495bSYour Name } tDot11fIEfils_nonce;
9655*5113495bSYour Name 
9656*5113495bSYour Name #define DOT11F_EID_FILS_NONCE (255)
9657*5113495bSYour Name 
9658*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9659*5113495bSYour Name #define DOT11F_IE_FILS_NONCE_MIN_LEN (16)
9660*5113495bSYour Name 
9661*5113495bSYour Name #define DOT11F_IE_FILS_NONCE_MAX_LEN (16)
9662*5113495bSYour Name 
9663*5113495bSYour Name #ifdef __cplusplus
9664*5113495bSYour Name extern "C" {
9665*5113495bSYour Name #endif /* C++ */
9666*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fils_nonce(
9667*5113495bSYour Name 	tpAniSirGlobal,
9668*5113495bSYour Name 	uint8_t *,
9669*5113495bSYour Name 	uint8_t,
9670*5113495bSYour Name 	tDot11fIEfils_nonce*,
9671*5113495bSYour Name 	bool);
9672*5113495bSYour Name 
9673*5113495bSYour Name uint32_t dot11f_pack_ie_fils_nonce(
9674*5113495bSYour Name 	tpAniSirGlobal,
9675*5113495bSYour Name 	tDot11fIEfils_nonce *,
9676*5113495bSYour Name 	uint8_t *,
9677*5113495bSYour Name 	uint32_t,
9678*5113495bSYour Name 	uint32_t*);
9679*5113495bSYour Name 
9680*5113495bSYour Name uint32_t dot11f_get_packed_ie_fils_nonce(
9681*5113495bSYour Name 	tpAniSirGlobal,
9682*5113495bSYour Name 	tDot11fIEfils_nonce *,
9683*5113495bSYour Name 	uint32_t*);
9684*5113495bSYour Name 
9685*5113495bSYour Name #ifdef __cplusplus
9686*5113495bSYour Name }; /* End extern "C". */
9687*5113495bSYour Name #endif /* C++ */
9688*5113495bSYour Name 
9689*5113495bSYour Name /* EID 255 (0xff) Extended EID 12 (0x0c) */
9690*5113495bSYour Name typedef struct sDot11fIEfils_public_key {
9691*5113495bSYour Name 	uint8_t             present;
9692*5113495bSYour Name 	uint8_t             key_type;
9693*5113495bSYour Name 	uint8_t             num_public_key;
9694*5113495bSYour Name 	uint8_t             public_key[255];
9695*5113495bSYour Name } tDot11fIEfils_public_key;
9696*5113495bSYour Name 
9697*5113495bSYour Name #define DOT11F_EID_FILS_PUBLIC_KEY (255)
9698*5113495bSYour Name 
9699*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9700*5113495bSYour Name #define DOT11F_IE_FILS_PUBLIC_KEY_MIN_LEN (1)
9701*5113495bSYour Name 
9702*5113495bSYour Name #define DOT11F_IE_FILS_PUBLIC_KEY_MAX_LEN (256)
9703*5113495bSYour Name 
9704*5113495bSYour Name #ifdef __cplusplus
9705*5113495bSYour Name extern "C" {
9706*5113495bSYour Name #endif /* C++ */
9707*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fils_public_key(
9708*5113495bSYour Name 	tpAniSirGlobal,
9709*5113495bSYour Name 	uint8_t *,
9710*5113495bSYour Name 	uint8_t,
9711*5113495bSYour Name 	tDot11fIEfils_public_key*,
9712*5113495bSYour Name 	bool);
9713*5113495bSYour Name 
9714*5113495bSYour Name uint32_t dot11f_pack_ie_fils_public_key(
9715*5113495bSYour Name 	tpAniSirGlobal,
9716*5113495bSYour Name 	tDot11fIEfils_public_key *,
9717*5113495bSYour Name 	uint8_t *,
9718*5113495bSYour Name 	uint32_t,
9719*5113495bSYour Name 	uint32_t*);
9720*5113495bSYour Name 
9721*5113495bSYour Name uint32_t dot11f_get_packed_ie_fils_public_key(
9722*5113495bSYour Name 	tpAniSirGlobal,
9723*5113495bSYour Name 	tDot11fIEfils_public_key *,
9724*5113495bSYour Name 	uint32_t*);
9725*5113495bSYour Name 
9726*5113495bSYour Name #ifdef __cplusplus
9727*5113495bSYour Name }; /* End extern "C". */
9728*5113495bSYour Name #endif /* C++ */
9729*5113495bSYour Name 
9730*5113495bSYour Name /* EID 255 (0xff) Extended EID 4 (0x04) */
9731*5113495bSYour Name typedef struct sDot11fIEfils_session {
9732*5113495bSYour Name 	uint8_t             present;
9733*5113495bSYour Name 	uint8_t             session[8];
9734*5113495bSYour Name } tDot11fIEfils_session;
9735*5113495bSYour Name 
9736*5113495bSYour Name #define DOT11F_EID_FILS_SESSION (255)
9737*5113495bSYour Name 
9738*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9739*5113495bSYour Name #define DOT11F_IE_FILS_SESSION_MIN_LEN (8)
9740*5113495bSYour Name 
9741*5113495bSYour Name #define DOT11F_IE_FILS_SESSION_MAX_LEN (8)
9742*5113495bSYour Name 
9743*5113495bSYour Name #ifdef __cplusplus
9744*5113495bSYour Name extern "C" {
9745*5113495bSYour Name #endif /* C++ */
9746*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fils_session(
9747*5113495bSYour Name 	tpAniSirGlobal,
9748*5113495bSYour Name 	uint8_t *,
9749*5113495bSYour Name 	uint8_t,
9750*5113495bSYour Name 	tDot11fIEfils_session*,
9751*5113495bSYour Name 	bool);
9752*5113495bSYour Name 
9753*5113495bSYour Name uint32_t dot11f_pack_ie_fils_session(
9754*5113495bSYour Name 	tpAniSirGlobal,
9755*5113495bSYour Name 	tDot11fIEfils_session *,
9756*5113495bSYour Name 	uint8_t *,
9757*5113495bSYour Name 	uint32_t,
9758*5113495bSYour Name 	uint32_t*);
9759*5113495bSYour Name 
9760*5113495bSYour Name uint32_t dot11f_get_packed_ie_fils_session(
9761*5113495bSYour Name 	tpAniSirGlobal,
9762*5113495bSYour Name 	tDot11fIEfils_session *,
9763*5113495bSYour Name 	uint32_t*);
9764*5113495bSYour Name 
9765*5113495bSYour Name #ifdef __cplusplus
9766*5113495bSYour Name }; /* End extern "C". */
9767*5113495bSYour Name #endif /* C++ */
9768*5113495bSYour Name 
9769*5113495bSYour Name /* EID 255 (0xff) Extended EID 8 (0x08) */
9770*5113495bSYour Name typedef struct sDot11fIEfils_wrapped_data {
9771*5113495bSYour Name 	uint8_t             present;
9772*5113495bSYour Name 	uint8_t             num_wrapped_data;
9773*5113495bSYour Name 	uint8_t             wrapped_data[255];
9774*5113495bSYour Name } tDot11fIEfils_wrapped_data;
9775*5113495bSYour Name 
9776*5113495bSYour Name #define DOT11F_EID_FILS_WRAPPED_DATA (255)
9777*5113495bSYour Name 
9778*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9779*5113495bSYour Name #define DOT11F_IE_FILS_WRAPPED_DATA_MIN_LEN (0)
9780*5113495bSYour Name 
9781*5113495bSYour Name #define DOT11F_IE_FILS_WRAPPED_DATA_MAX_LEN (255)
9782*5113495bSYour Name 
9783*5113495bSYour Name #ifdef __cplusplus
9784*5113495bSYour Name extern "C" {
9785*5113495bSYour Name #endif /* C++ */
9786*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fils_wrapped_data(
9787*5113495bSYour Name 	tpAniSirGlobal,
9788*5113495bSYour Name 	uint8_t *,
9789*5113495bSYour Name 	uint8_t,
9790*5113495bSYour Name 	tDot11fIEfils_wrapped_data*,
9791*5113495bSYour Name 	bool);
9792*5113495bSYour Name 
9793*5113495bSYour Name uint32_t dot11f_pack_ie_fils_wrapped_data(
9794*5113495bSYour Name 	tpAniSirGlobal,
9795*5113495bSYour Name 	tDot11fIEfils_wrapped_data *,
9796*5113495bSYour Name 	uint8_t *,
9797*5113495bSYour Name 	uint32_t,
9798*5113495bSYour Name 	uint32_t*);
9799*5113495bSYour Name 
9800*5113495bSYour Name uint32_t dot11f_get_packed_ie_fils_wrapped_data(
9801*5113495bSYour Name 	tpAniSirGlobal,
9802*5113495bSYour Name 	tDot11fIEfils_wrapped_data *,
9803*5113495bSYour Name 	uint32_t*);
9804*5113495bSYour Name 
9805*5113495bSYour Name #ifdef __cplusplus
9806*5113495bSYour Name }; /* End extern "C". */
9807*5113495bSYour Name #endif /* C++ */
9808*5113495bSYour Name 
9809*5113495bSYour Name /* EID 242 (0xf2) */
9810*5113495bSYour Name typedef struct sDot11fIEfragment_ie {
9811*5113495bSYour Name 	uint8_t             present;
9812*5113495bSYour Name 	uint8_t             num_data;
9813*5113495bSYour Name 	uint8_t             data[255];
9814*5113495bSYour Name } tDot11fIEfragment_ie;
9815*5113495bSYour Name 
9816*5113495bSYour Name #define DOT11F_EID_FRAGMENT_IE (242)
9817*5113495bSYour Name 
9818*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9819*5113495bSYour Name #define DOT11F_IE_FRAGMENT_IE_MIN_LEN (0)
9820*5113495bSYour Name 
9821*5113495bSYour Name #define DOT11F_IE_FRAGMENT_IE_MAX_LEN (255)
9822*5113495bSYour Name 
9823*5113495bSYour Name #ifdef __cplusplus
9824*5113495bSYour Name extern "C" {
9825*5113495bSYour Name #endif /* C++ */
9826*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_fragment_ie(
9827*5113495bSYour Name 	tpAniSirGlobal,
9828*5113495bSYour Name 	uint8_t *,
9829*5113495bSYour Name 	uint8_t,
9830*5113495bSYour Name 	tDot11fIEfragment_ie*,
9831*5113495bSYour Name 	bool);
9832*5113495bSYour Name 
9833*5113495bSYour Name uint32_t dot11f_pack_ie_fragment_ie(
9834*5113495bSYour Name 	tpAniSirGlobal,
9835*5113495bSYour Name 	tDot11fIEfragment_ie *,
9836*5113495bSYour Name 	uint8_t *,
9837*5113495bSYour Name 	uint32_t,
9838*5113495bSYour Name 	uint32_t*);
9839*5113495bSYour Name 
9840*5113495bSYour Name uint32_t dot11f_get_packed_ie_fragment_ie(
9841*5113495bSYour Name 	tpAniSirGlobal,
9842*5113495bSYour Name 	tDot11fIEfragment_ie *,
9843*5113495bSYour Name 	uint32_t*);
9844*5113495bSYour Name 
9845*5113495bSYour Name #ifdef __cplusplus
9846*5113495bSYour Name }; /* End extern "C". */
9847*5113495bSYour Name #endif /* C++ */
9848*5113495bSYour Name 
9849*5113495bSYour Name /* EID 255 (0xff) Extended EID 59 (0x3b) */
9850*5113495bSYour Name typedef struct sDot11fIEhe_6ghz_band_cap {
9851*5113495bSYour Name 	uint8_t             present;
9852*5113495bSYour Name 	uint16_t min_mpdu_start_spacing:3;
9853*5113495bSYour Name 	uint16_t    max_ampdu_len_exp:3;
9854*5113495bSYour Name 	uint16_t         max_mpdu_len:3;
9855*5113495bSYour Name 	uint16_t          sm_pow_save:2;
9856*5113495bSYour Name 	uint16_t         rd_responder:1;
9857*5113495bSYour Name 	uint16_t rx_ant_pattern_consistency:1;
9858*5113495bSYour Name 	uint16_t tx_ant_pattern_consistency:1;
9859*5113495bSYour Name 	uint16_t             reserved:2;
9860*5113495bSYour Name } tDot11fIEhe_6ghz_band_cap;
9861*5113495bSYour Name 
9862*5113495bSYour Name #define DOT11F_EID_HE_6GHZ_BAND_CAP (255)
9863*5113495bSYour Name 
9864*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
9865*5113495bSYour Name #define DOT11F_IE_HE_6GHZ_BAND_CAP_MIN_LEN (2)
9866*5113495bSYour Name 
9867*5113495bSYour Name #define DOT11F_IE_HE_6GHZ_BAND_CAP_MAX_LEN (2)
9868*5113495bSYour Name 
9869*5113495bSYour Name #ifdef __cplusplus
9870*5113495bSYour Name extern "C" {
9871*5113495bSYour Name #endif /* C++ */
9872*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_he_6ghz_band_cap(
9873*5113495bSYour Name 	tpAniSirGlobal,
9874*5113495bSYour Name 	uint8_t *,
9875*5113495bSYour Name 	uint8_t,
9876*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap*,
9877*5113495bSYour Name 	bool);
9878*5113495bSYour Name 
9879*5113495bSYour Name uint32_t dot11f_pack_ie_he_6ghz_band_cap(
9880*5113495bSYour Name 	tpAniSirGlobal,
9881*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap *,
9882*5113495bSYour Name 	uint8_t *,
9883*5113495bSYour Name 	uint32_t,
9884*5113495bSYour Name 	uint32_t*);
9885*5113495bSYour Name 
9886*5113495bSYour Name uint32_t dot11f_get_packed_ie_he_6ghz_band_cap(
9887*5113495bSYour Name 	tpAniSirGlobal,
9888*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap *,
9889*5113495bSYour Name 	uint32_t*);
9890*5113495bSYour Name 
9891*5113495bSYour Name #ifdef __cplusplus
9892*5113495bSYour Name }; /* End extern "C". */
9893*5113495bSYour Name #endif /* C++ */
9894*5113495bSYour Name 
9895*5113495bSYour Name /* EID 255 (0xff) Extended EID 35 (0x23) */
9896*5113495bSYour Name typedef struct sDot11fIEhe_cap {
9897*5113495bSYour Name 	uint8_t             present;
9898*5113495bSYour Name 	uint32_t               htc_he:1;
9899*5113495bSYour Name 	uint32_t          twt_request:1;
9900*5113495bSYour Name 	uint32_t        twt_responder:1;
9901*5113495bSYour Name 	uint32_t        fragmentation:2;
9902*5113495bSYour Name 	uint32_t max_num_frag_msdu_amsdu_exp:3;
9903*5113495bSYour Name 	uint32_t        min_frag_size:2;
9904*5113495bSYour Name 	uint32_t  trigger_frm_mac_pad:2;
9905*5113495bSYour Name 	uint32_t multi_tid_aggr_rx_supp:3;
9906*5113495bSYour Name 	uint32_t   he_link_adaptation:2;
9907*5113495bSYour Name 	uint32_t              all_ack:1;
9908*5113495bSYour Name 	uint32_t      trigd_rsp_sched:1;
9909*5113495bSYour Name 	uint32_t                a_bsr:1;
9910*5113495bSYour Name 	uint32_t        broadcast_twt:1;
9911*5113495bSYour Name 	uint32_t      ba_32bit_bitmap:1;
9912*5113495bSYour Name 	uint32_t           mu_cascade:1;
9913*5113495bSYour Name 	uint32_t ack_enabled_multitid:1;
9914*5113495bSYour Name 	uint32_t             reserved:1;
9915*5113495bSYour Name 	uint32_t           omi_a_ctrl:1;
9916*5113495bSYour Name 	uint32_t             ofdma_ra:1;
9917*5113495bSYour Name 	uint32_t max_ampdu_len_exp_ext:2;
9918*5113495bSYour Name 	uint32_t           amsdu_frag:1;
9919*5113495bSYour Name 	uint32_t       flex_twt_sched:1;
9920*5113495bSYour Name 	uint32_t        rx_ctrl_frame:1;
9921*5113495bSYour Name 	uint16_t      bsrp_ampdu_aggr:1;
9922*5113495bSYour Name 	uint16_t                  qtp:1;
9923*5113495bSYour Name 	uint16_t                a_bqr:1;
9924*5113495bSYour Name 	uint16_t spatial_reuse_param_rspder:1;
9925*5113495bSYour Name 	uint16_t    ndp_feedback_supp:1;
9926*5113495bSYour Name 	uint16_t             ops_supp:1;
9927*5113495bSYour Name 	uint16_t       amsdu_in_ampdu:1;
9928*5113495bSYour Name 	uint16_t multi_tid_aggr_tx_supp:3;
9929*5113495bSYour Name 	uint16_t he_sub_ch_sel_tx_supp:1;
9930*5113495bSYour Name 	uint16_t ul_2x996_tone_ru_supp:1;
9931*5113495bSYour Name 	uint16_t om_ctrl_ul_mu_data_dis_rx:1;
9932*5113495bSYour Name 	uint16_t      he_dynamic_smps:1;
9933*5113495bSYour Name 	uint16_t punctured_sounding_supp:1;
9934*5113495bSYour Name 	uint16_t ht_vht_trg_frm_rx_supp:1;
9935*5113495bSYour Name 	uint32_t            reserved2:1;
9936*5113495bSYour Name 	uint32_t         chan_width_0:1;
9937*5113495bSYour Name 	uint32_t         chan_width_1:1;
9938*5113495bSYour Name 	uint32_t         chan_width_2:1;
9939*5113495bSYour Name 	uint32_t         chan_width_3:1;
9940*5113495bSYour Name 	uint32_t         chan_width_4:1;
9941*5113495bSYour Name 	uint32_t         chan_width_5:1;
9942*5113495bSYour Name 	uint32_t         chan_width_6:1;
9943*5113495bSYour Name 	uint32_t  rx_pream_puncturing:4;
9944*5113495bSYour Name 	uint32_t         device_class:1;
9945*5113495bSYour Name 	uint32_t          ldpc_coding:1;
9946*5113495bSYour Name 	uint32_t he_1x_ltf_800_gi_ppdu:1;
9947*5113495bSYour Name 	uint32_t midamble_tx_rx_max_nsts:2;
9948*5113495bSYour Name 	uint32_t he_4x_ltf_3200_gi_ndp:1;
9949*5113495bSYour Name 	uint32_t tb_ppdu_tx_stbc_lt_80mhz:1;
9950*5113495bSYour Name 	uint32_t     rx_stbc_lt_80mhz:1;
9951*5113495bSYour Name 	uint32_t              doppler:2;
9952*5113495bSYour Name 	uint32_t                ul_mu:2;
9953*5113495bSYour Name 	uint32_t           dcm_enc_tx:3;
9954*5113495bSYour Name 	uint32_t           dcm_enc_rx:3;
9955*5113495bSYour Name 	uint32_t             ul_he_mu:1;
9956*5113495bSYour Name 	uint32_t        su_beamformer:1;
9957*5113495bSYour Name 	uint32_t        su_beamformee:1;
9958*5113495bSYour Name 	uint32_t        mu_beamformer:1;
9959*5113495bSYour Name 	uint32_t       bfee_sts_lt_80:3;
9960*5113495bSYour Name 	uint32_t       bfee_sts_gt_80:3;
9961*5113495bSYour Name 	uint32_t   num_sounding_lt_80:3;
9962*5113495bSYour Name 	uint32_t   num_sounding_gt_80:3;
9963*5113495bSYour Name 	uint32_t   su_feedback_tone16:1;
9964*5113495bSYour Name 	uint32_t   mu_feedback_tone16:1;
9965*5113495bSYour Name 	uint32_t          codebook_su:1;
9966*5113495bSYour Name 	uint32_t          codebook_mu:1;
9967*5113495bSYour Name 	uint32_t beamforming_feedback:3;
9968*5113495bSYour Name 	uint32_t        he_er_su_ppdu:1;
9969*5113495bSYour Name 	uint32_t   dl_mu_mimo_part_bw:1;
9970*5113495bSYour Name 	uint32_t         ppet_present:1;
9971*5113495bSYour Name 	uint32_t                  srp:1;
9972*5113495bSYour Name 	uint32_t          power_boost:1;
9973*5113495bSYour Name 	uint32_t     he_ltf_800_gi_4x:1;
9974*5113495bSYour Name 	uint32_t               max_nc:3;
9975*5113495bSYour Name 	uint32_t tb_ppdu_tx_stbc_gt_80mhz:1;
9976*5113495bSYour Name 	uint32_t     rx_stbc_gt_80mhz:1;
9977*5113495bSYour Name 	uint16_t  er_he_ltf_800_gi_4x:1;
9978*5113495bSYour Name 	uint16_t he_ppdu_20_in_40Mhz_2G:1;
9979*5113495bSYour Name 	uint16_t he_ppdu_20_in_160_80p80Mhz:1;
9980*5113495bSYour Name 	uint16_t he_ppdu_80_in_160_80p80Mhz:1;
9981*5113495bSYour Name 	uint16_t      er_1x_he_ltf_gi:1;
9982*5113495bSYour Name 	uint16_t midamble_tx_rx_1x_he_ltf:1;
9983*5113495bSYour Name 	uint16_t           dcm_max_bw:2;
9984*5113495bSYour Name 	uint16_t longer_than_16_he_sigb_ofdm_sym:1;
9985*5113495bSYour Name 	uint16_t non_trig_cqi_feedback:1;
9986*5113495bSYour Name 	uint16_t tx_1024_qam_lt_242_tone_ru:1;
9987*5113495bSYour Name 	uint16_t rx_1024_qam_lt_242_tone_ru:1;
9988*5113495bSYour Name 	uint16_t rx_full_bw_su_he_mu_compress_sigb:1;
9989*5113495bSYour Name 	uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1;
9990*5113495bSYour Name 	uint16_t            reserved3:2;
9991*5113495bSYour Name 	uint8_t             reserved4;
9992*5113495bSYour Name 	uint16_t            rx_he_mcs_map_lt_80;
9993*5113495bSYour Name 	uint16_t            tx_he_mcs_map_lt_80;
9994*5113495bSYour Name 	uint8_t             rx_he_mcs_map_160[1][2];
9995*5113495bSYour Name 	uint8_t             tx_he_mcs_map_160[1][2];
9996*5113495bSYour Name 	uint8_t             rx_he_mcs_map_80_80[1][2];
9997*5113495bSYour Name 	uint8_t             tx_he_mcs_map_80_80[1][2];
9998*5113495bSYour Name 	union {
9999*5113495bSYour Name 		struct {
10000*5113495bSYour Name 			uint8_t num_ppe_th;
10001*5113495bSYour Name 			uint8_t ppe_th[25];
10002*5113495bSYour Name 		} ppe_threshold; /* ppet_present = 1 */
10003*5113495bSYour Name 	} ppet;
10004*5113495bSYour Name } tDot11fIEhe_cap;
10005*5113495bSYour Name 
10006*5113495bSYour Name #define DOT11F_EID_HE_CAP (255)
10007*5113495bSYour Name 
10008*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10009*5113495bSYour Name #define DOT11F_IE_HE_CAP_MIN_LEN (21)
10010*5113495bSYour Name 
10011*5113495bSYour Name #define DOT11F_IE_HE_CAP_MAX_LEN (54)
10012*5113495bSYour Name 
10013*5113495bSYour Name #ifdef __cplusplus
10014*5113495bSYour Name extern "C" {
10015*5113495bSYour Name #endif /* C++ */
10016*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_he_cap(
10017*5113495bSYour Name 	tpAniSirGlobal,
10018*5113495bSYour Name 	uint8_t *,
10019*5113495bSYour Name 	uint8_t,
10020*5113495bSYour Name 	tDot11fIEhe_cap*,
10021*5113495bSYour Name 	bool);
10022*5113495bSYour Name 
10023*5113495bSYour Name uint32_t dot11f_pack_ie_he_cap(
10024*5113495bSYour Name 	tpAniSirGlobal,
10025*5113495bSYour Name 	tDot11fIEhe_cap *,
10026*5113495bSYour Name 	uint8_t *,
10027*5113495bSYour Name 	uint32_t,
10028*5113495bSYour Name 	uint32_t*);
10029*5113495bSYour Name 
10030*5113495bSYour Name uint32_t dot11f_get_packed_ie_he_cap(
10031*5113495bSYour Name 	tpAniSirGlobal,
10032*5113495bSYour Name 	tDot11fIEhe_cap *,
10033*5113495bSYour Name 	uint32_t*);
10034*5113495bSYour Name 
10035*5113495bSYour Name #ifdef __cplusplus
10036*5113495bSYour Name }; /* End extern "C". */
10037*5113495bSYour Name #endif /* C++ */
10038*5113495bSYour Name 
10039*5113495bSYour Name /* EID 255 (0xff) Extended EID 36 (0x24) */
10040*5113495bSYour Name typedef struct sDot11fIEhe_op {
10041*5113495bSYour Name 	uint8_t             present;
10042*5113495bSYour Name 	uint16_t           default_pe:3;
10043*5113495bSYour Name 	uint16_t         twt_required:1;
10044*5113495bSYour Name 	uint16_t   txop_rts_threshold:10;
10045*5113495bSYour Name 	uint16_t     vht_oper_present:1;
10046*5113495bSYour Name 	uint16_t       co_located_bss:1;
10047*5113495bSYour Name 	uint8_t        er_su_disable:1;
10048*5113495bSYour Name 	uint8_t oper_info_6g_present:1;
10049*5113495bSYour Name 	uint8_t            reserved2:6;
10050*5113495bSYour Name 	uint8_t            bss_color:6;
10051*5113495bSYour Name 	uint8_t      partial_bss_col:1;
10052*5113495bSYour Name 	uint8_t     bss_col_disabled:1;
10053*5113495bSYour Name 	uint8_t             basic_mcs_nss[2];
10054*5113495bSYour Name 	union {
10055*5113495bSYour Name 		struct {
10056*5113495bSYour Name 			uint8_t chan_width;
10057*5113495bSYour Name 			uint8_t center_freq_seg0;
10058*5113495bSYour Name 			uint8_t center_freq_seg1;
10059*5113495bSYour Name 		} info; /* vht_oper_present = 1 */
10060*5113495bSYour Name 	} vht_oper;
10061*5113495bSYour Name 	union {
10062*5113495bSYour Name 		struct {
10063*5113495bSYour Name 			uint8_t data;
10064*5113495bSYour Name 		} info; /* co_located_bss = 1 */
10065*5113495bSYour Name 	} maxbssid_ind;
10066*5113495bSYour Name 	union {
10067*5113495bSYour Name 		struct {
10068*5113495bSYour Name 			uint8_t primary_ch;
10069*5113495bSYour Name 			uint8_t  ch_width:2;
10070*5113495bSYour Name 			uint8_t  dup_bcon:1;
10071*5113495bSYour Name 			uint8_t  reg_info:3;
10072*5113495bSYour Name 			uint8_t  reserved:2;
10073*5113495bSYour Name 			uint8_t center_freq_seg0;
10074*5113495bSYour Name 			uint8_t center_freq_seg1;
10075*5113495bSYour Name 			uint8_t min_rate;
10076*5113495bSYour Name 		} info; /* oper_info_6g_present = 1 */
10077*5113495bSYour Name 	} oper_info_6g;
10078*5113495bSYour Name } tDot11fIEhe_op;
10079*5113495bSYour Name 
10080*5113495bSYour Name #define DOT11F_EID_HE_OP (255)
10081*5113495bSYour Name 
10082*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10083*5113495bSYour Name #define DOT11F_IE_HE_OP_MIN_LEN (6)
10084*5113495bSYour Name 
10085*5113495bSYour Name #define DOT11F_IE_HE_OP_MAX_LEN (15)
10086*5113495bSYour Name 
10087*5113495bSYour Name #ifdef __cplusplus
10088*5113495bSYour Name extern "C" {
10089*5113495bSYour Name #endif /* C++ */
10090*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_he_op(
10091*5113495bSYour Name 	tpAniSirGlobal,
10092*5113495bSYour Name 	uint8_t *,
10093*5113495bSYour Name 	uint8_t,
10094*5113495bSYour Name 	tDot11fIEhe_op*,
10095*5113495bSYour Name 	bool);
10096*5113495bSYour Name 
10097*5113495bSYour Name uint32_t dot11f_pack_ie_he_op(
10098*5113495bSYour Name 	tpAniSirGlobal,
10099*5113495bSYour Name 	tDot11fIEhe_op *,
10100*5113495bSYour Name 	uint8_t *,
10101*5113495bSYour Name 	uint32_t,
10102*5113495bSYour Name 	uint32_t*);
10103*5113495bSYour Name 
10104*5113495bSYour Name uint32_t dot11f_get_packed_ie_he_op(
10105*5113495bSYour Name 	tpAniSirGlobal,
10106*5113495bSYour Name 	tDot11fIEhe_op *,
10107*5113495bSYour Name 	uint32_t*);
10108*5113495bSYour Name 
10109*5113495bSYour Name #ifdef __cplusplus
10110*5113495bSYour Name }; /* End extern "C". */
10111*5113495bSYour Name #endif /* C++ */
10112*5113495bSYour Name 
10113*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x10} */
10114*5113495bSYour Name typedef struct sDot11fIEhs20vendor_ie {
10115*5113495bSYour Name 	uint8_t             present;
10116*5113495bSYour Name 	uint8_t             dgaf_dis:1;
10117*5113495bSYour Name 	uint8_t        hs_id_present:2;
10118*5113495bSYour Name 	uint8_t             reserved:1;
10119*5113495bSYour Name 	uint8_t          release_num:4;
10120*5113495bSYour Name 	union {
10121*5113495bSYour Name 		struct {
10122*5113495bSYour Name 			uint16_t pps_mo_id;
10123*5113495bSYour Name 		} pps_mo; /* hs_id_present = 1 */
10124*5113495bSYour Name 		struct {
10125*5113495bSYour Name 			uint16_t anqp_domain_id;
10126*5113495bSYour Name 		} anqp_domain; /* hs_id_present = 2 */
10127*5113495bSYour Name 	} hs_id;
10128*5113495bSYour Name } tDot11fIEhs20vendor_ie;
10129*5113495bSYour Name 
10130*5113495bSYour Name #define DOT11F_EID_HS20VENDOR_IE (221)
10131*5113495bSYour Name 
10132*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10133*5113495bSYour Name #define DOT11F_IE_HS20VENDOR_IE_MIN_LEN (5)
10134*5113495bSYour Name 
10135*5113495bSYour Name #define DOT11F_IE_HS20VENDOR_IE_MAX_LEN (7)
10136*5113495bSYour Name 
10137*5113495bSYour Name #ifdef __cplusplus
10138*5113495bSYour Name extern "C" {
10139*5113495bSYour Name #endif /* C++ */
10140*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_hs20vendor_ie(
10141*5113495bSYour Name 	tpAniSirGlobal,
10142*5113495bSYour Name 	uint8_t *,
10143*5113495bSYour Name 	uint8_t,
10144*5113495bSYour Name 	tDot11fIEhs20vendor_ie*,
10145*5113495bSYour Name 	bool);
10146*5113495bSYour Name 
10147*5113495bSYour Name uint32_t dot11f_pack_ie_hs20vendor_ie(
10148*5113495bSYour Name 	tpAniSirGlobal,
10149*5113495bSYour Name 	tDot11fIEhs20vendor_ie *,
10150*5113495bSYour Name 	uint8_t *,
10151*5113495bSYour Name 	uint32_t,
10152*5113495bSYour Name 	uint32_t*);
10153*5113495bSYour Name 
10154*5113495bSYour Name uint32_t dot11f_get_packed_ie_hs20vendor_ie(
10155*5113495bSYour Name 	tpAniSirGlobal,
10156*5113495bSYour Name 	tDot11fIEhs20vendor_ie *,
10157*5113495bSYour Name 	uint32_t*);
10158*5113495bSYour Name 
10159*5113495bSYour Name #ifdef __cplusplus
10160*5113495bSYour Name }; /* End extern "C". */
10161*5113495bSYour Name #endif /* C++ */
10162*5113495bSYour Name 
10163*5113495bSYour Name /* EID 72 (0x48) */
10164*5113495bSYour Name typedef struct sDot11fIEht2040_bss_coexistence {
10165*5113495bSYour Name 	uint8_t             present;
10166*5113495bSYour Name 	uint8_t         info_request:1;
10167*5113495bSYour Name 	uint8_t forty_mhz_intolerant:1;
10168*5113495bSYour Name 	uint8_t twenty_mhz_bsswidth_req:1;
10169*5113495bSYour Name 	uint8_t obss_scan_exemption_req:1;
10170*5113495bSYour Name 	uint8_t obss_scan_exemption_grant:1;
10171*5113495bSYour Name 	uint8_t               unused:3;
10172*5113495bSYour Name } tDot11fIEht2040_bss_coexistence;
10173*5113495bSYour Name 
10174*5113495bSYour Name #define DOT11F_EID_HT2040_BSS_COEXISTENCE (72)
10175*5113495bSYour Name 
10176*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10177*5113495bSYour Name #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MIN_LEN (1)
10178*5113495bSYour Name 
10179*5113495bSYour Name #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MAX_LEN (1)
10180*5113495bSYour Name 
10181*5113495bSYour Name #ifdef __cplusplus
10182*5113495bSYour Name extern "C" {
10183*5113495bSYour Name #endif /* C++ */
10184*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(
10185*5113495bSYour Name 	tpAniSirGlobal,
10186*5113495bSYour Name 	uint8_t *,
10187*5113495bSYour Name 	uint8_t,
10188*5113495bSYour Name 	tDot11fIEht2040_bss_coexistence*,
10189*5113495bSYour Name 	bool);
10190*5113495bSYour Name 
10191*5113495bSYour Name uint32_t dot11f_pack_ie_ht2040_bss_coexistence(
10192*5113495bSYour Name 	tpAniSirGlobal,
10193*5113495bSYour Name 	tDot11fIEht2040_bss_coexistence *,
10194*5113495bSYour Name 	uint8_t *,
10195*5113495bSYour Name 	uint32_t,
10196*5113495bSYour Name 	uint32_t*);
10197*5113495bSYour Name 
10198*5113495bSYour Name uint32_t dot11f_get_packed_ie_ht2040_bss_coexistence(
10199*5113495bSYour Name 	tpAniSirGlobal,
10200*5113495bSYour Name 	tDot11fIEht2040_bss_coexistence *,
10201*5113495bSYour Name 	uint32_t*);
10202*5113495bSYour Name 
10203*5113495bSYour Name #ifdef __cplusplus
10204*5113495bSYour Name }; /* End extern "C". */
10205*5113495bSYour Name #endif /* C++ */
10206*5113495bSYour Name 
10207*5113495bSYour Name /* EID 73 (0x49) */
10208*5113495bSYour Name typedef struct sDot11fIEht2040_bss_intolerant_report {
10209*5113495bSYour Name 	uint8_t             present;
10210*5113495bSYour Name 	uint8_t             operating_class;
10211*5113495bSYour Name 	uint8_t             num_channel_list;
10212*5113495bSYour Name 	uint8_t             channel_list[50];
10213*5113495bSYour Name } tDot11fIEht2040_bss_intolerant_report;
10214*5113495bSYour Name 
10215*5113495bSYour Name #define DOT11F_EID_HT2040_BSS_INTOLERANT_REPORT (73)
10216*5113495bSYour Name 
10217*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10218*5113495bSYour Name #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MIN_LEN (1)
10219*5113495bSYour Name 
10220*5113495bSYour Name #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MAX_LEN (51)
10221*5113495bSYour Name 
10222*5113495bSYour Name #ifdef __cplusplus
10223*5113495bSYour Name extern "C" {
10224*5113495bSYour Name #endif /* C++ */
10225*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(
10226*5113495bSYour Name 	tpAniSirGlobal,
10227*5113495bSYour Name 	uint8_t *,
10228*5113495bSYour Name 	uint8_t,
10229*5113495bSYour Name 	tDot11fIEht2040_bss_intolerant_report*,
10230*5113495bSYour Name 	bool);
10231*5113495bSYour Name 
10232*5113495bSYour Name uint32_t dot11f_pack_ie_ht2040_bss_intolerant_report(
10233*5113495bSYour Name 	tpAniSirGlobal,
10234*5113495bSYour Name 	tDot11fIEht2040_bss_intolerant_report *,
10235*5113495bSYour Name 	uint8_t *,
10236*5113495bSYour Name 	uint32_t,
10237*5113495bSYour Name 	uint32_t*);
10238*5113495bSYour Name 
10239*5113495bSYour Name uint32_t dot11f_get_packed_ie_ht2040_bss_intolerant_report(
10240*5113495bSYour Name 	tpAniSirGlobal,
10241*5113495bSYour Name 	tDot11fIEht2040_bss_intolerant_report *,
10242*5113495bSYour Name 	uint32_t*);
10243*5113495bSYour Name 
10244*5113495bSYour Name #ifdef __cplusplus
10245*5113495bSYour Name }; /* End extern "C". */
10246*5113495bSYour Name #endif /* C++ */
10247*5113495bSYour Name 
10248*5113495bSYour Name /* EID 255 (0xff) Extended EID 52 (0x34) */
10249*5113495bSYour Name typedef struct sDot11fIEmax_chan_switch_time {
10250*5113495bSYour Name 	uint8_t             present;
10251*5113495bSYour Name 	uint8_t             switch_time[3];
10252*5113495bSYour Name } tDot11fIEmax_chan_switch_time;
10253*5113495bSYour Name 
10254*5113495bSYour Name #define DOT11F_EID_MAX_CHAN_SWITCH_TIME (255)
10255*5113495bSYour Name 
10256*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10257*5113495bSYour Name #define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MIN_LEN (3)
10258*5113495bSYour Name 
10259*5113495bSYour Name #define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MAX_LEN (3)
10260*5113495bSYour Name 
10261*5113495bSYour Name #ifdef __cplusplus
10262*5113495bSYour Name extern "C" {
10263*5113495bSYour Name #endif /* C++ */
10264*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_max_chan_switch_time(
10265*5113495bSYour Name 	tpAniSirGlobal,
10266*5113495bSYour Name 	uint8_t *,
10267*5113495bSYour Name 	uint8_t,
10268*5113495bSYour Name 	tDot11fIEmax_chan_switch_time*,
10269*5113495bSYour Name 	bool);
10270*5113495bSYour Name 
10271*5113495bSYour Name uint32_t dot11f_pack_ie_max_chan_switch_time(
10272*5113495bSYour Name 	tpAniSirGlobal,
10273*5113495bSYour Name 	tDot11fIEmax_chan_switch_time *,
10274*5113495bSYour Name 	uint8_t *,
10275*5113495bSYour Name 	uint32_t,
10276*5113495bSYour Name 	uint32_t*);
10277*5113495bSYour Name 
10278*5113495bSYour Name uint32_t dot11f_get_packed_ie_max_chan_switch_time(
10279*5113495bSYour Name 	tpAniSirGlobal,
10280*5113495bSYour Name 	tDot11fIEmax_chan_switch_time *,
10281*5113495bSYour Name 	uint32_t*);
10282*5113495bSYour Name 
10283*5113495bSYour Name #ifdef __cplusplus
10284*5113495bSYour Name }; /* End extern "C". */
10285*5113495bSYour Name #endif /* C++ */
10286*5113495bSYour Name 
10287*5113495bSYour Name /* EID 255 (0xff) Extended EID 107 (0x6b) */
10288*5113495bSYour Name typedef struct sDot11fIEmlo_ie {
10289*5113495bSYour Name 	uint8_t             present;
10290*5113495bSYour Name 	uint8_t             num_data;
10291*5113495bSYour Name 	uint8_t             data[255];
10292*5113495bSYour Name } tDot11fIEmlo_ie;
10293*5113495bSYour Name 
10294*5113495bSYour Name #define DOT11F_EID_MLO_IE (255)
10295*5113495bSYour Name 
10296*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10297*5113495bSYour Name #define DOT11F_IE_MLO_IE_MIN_LEN (9)
10298*5113495bSYour Name 
10299*5113495bSYour Name #define DOT11F_IE_MLO_IE_MAX_LEN (255)
10300*5113495bSYour Name 
10301*5113495bSYour Name #ifdef __cplusplus
10302*5113495bSYour Name extern "C" {
10303*5113495bSYour Name #endif /* C++ */
10304*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_mlo_ie(
10305*5113495bSYour Name 	tpAniSirGlobal,
10306*5113495bSYour Name 	uint8_t *,
10307*5113495bSYour Name 	uint8_t,
10308*5113495bSYour Name 	tDot11fIEmlo_ie*,
10309*5113495bSYour Name 	bool);
10310*5113495bSYour Name 
10311*5113495bSYour Name uint32_t dot11f_pack_ie_mlo_ie(
10312*5113495bSYour Name 	tpAniSirGlobal,
10313*5113495bSYour Name 	tDot11fIEmlo_ie *,
10314*5113495bSYour Name 	uint8_t *,
10315*5113495bSYour Name 	uint32_t,
10316*5113495bSYour Name 	uint32_t*);
10317*5113495bSYour Name 
10318*5113495bSYour Name uint32_t dot11f_get_packed_ie_mlo_ie(
10319*5113495bSYour Name 	tpAniSirGlobal,
10320*5113495bSYour Name 	tDot11fIEmlo_ie *,
10321*5113495bSYour Name 	uint32_t*);
10322*5113495bSYour Name 
10323*5113495bSYour Name #ifdef __cplusplus
10324*5113495bSYour Name }; /* End extern "C". */
10325*5113495bSYour Name #endif /* C++ */
10326*5113495bSYour Name 
10327*5113495bSYour Name /* EID 255 (0xff) Extended EID 38 (0x26) */
10328*5113495bSYour Name typedef struct sDot11fIEmu_edca_param_set {
10329*5113495bSYour Name 	uint8_t             present;
10330*5113495bSYour Name 	uint8_t             qos;
10331*5113495bSYour Name 	uint8_t           acbe_aifsn:4;
10332*5113495bSYour Name 	uint8_t             acbe_acm:1;
10333*5113495bSYour Name 	uint8_t             acbe_aci:2;
10334*5113495bSYour Name 	uint8_t              unused1:1;
10335*5113495bSYour Name 	uint8_t          acbe_acwmin:4;
10336*5113495bSYour Name 	uint8_t          acbe_acwmax:4;
10337*5113495bSYour Name 	uint8_t             acbe_muedca_timer;
10338*5113495bSYour Name 	uint8_t           acbk_aifsn:4;
10339*5113495bSYour Name 	uint8_t             acbk_acm:1;
10340*5113495bSYour Name 	uint8_t             acbk_aci:2;
10341*5113495bSYour Name 	uint8_t              unused2:1;
10342*5113495bSYour Name 	uint8_t          acbk_acwmin:4;
10343*5113495bSYour Name 	uint8_t          acbk_acwmax:4;
10344*5113495bSYour Name 	uint8_t             acbk_muedca_timer;
10345*5113495bSYour Name 	uint8_t           acvi_aifsn:4;
10346*5113495bSYour Name 	uint8_t             acvi_acm:1;
10347*5113495bSYour Name 	uint8_t             acvi_aci:2;
10348*5113495bSYour Name 	uint8_t              unused3:1;
10349*5113495bSYour Name 	uint8_t          acvi_acwmin:4;
10350*5113495bSYour Name 	uint8_t          acvi_acwmax:4;
10351*5113495bSYour Name 	uint8_t             acvi_muedca_timer;
10352*5113495bSYour Name 	uint8_t           acvo_aifsn:4;
10353*5113495bSYour Name 	uint8_t             acvo_acm:1;
10354*5113495bSYour Name 	uint8_t             acvo_aci:2;
10355*5113495bSYour Name 	uint8_t              unused4:1;
10356*5113495bSYour Name 	uint8_t          acvo_acwmin:4;
10357*5113495bSYour Name 	uint8_t          acvo_acwmax:4;
10358*5113495bSYour Name 	uint8_t             acvo_muedca_timer;
10359*5113495bSYour Name } tDot11fIEmu_edca_param_set;
10360*5113495bSYour Name 
10361*5113495bSYour Name #define DOT11F_EID_MU_EDCA_PARAM_SET (255)
10362*5113495bSYour Name 
10363*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10364*5113495bSYour Name #define DOT11F_IE_MU_EDCA_PARAM_SET_MIN_LEN (13)
10365*5113495bSYour Name 
10366*5113495bSYour Name #define DOT11F_IE_MU_EDCA_PARAM_SET_MAX_LEN (13)
10367*5113495bSYour Name 
10368*5113495bSYour Name #ifdef __cplusplus
10369*5113495bSYour Name extern "C" {
10370*5113495bSYour Name #endif /* C++ */
10371*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_mu_edca_param_set(
10372*5113495bSYour Name 	tpAniSirGlobal,
10373*5113495bSYour Name 	uint8_t *,
10374*5113495bSYour Name 	uint8_t,
10375*5113495bSYour Name 	tDot11fIEmu_edca_param_set*,
10376*5113495bSYour Name 	bool);
10377*5113495bSYour Name 
10378*5113495bSYour Name uint32_t dot11f_pack_ie_mu_edca_param_set(
10379*5113495bSYour Name 	tpAniSirGlobal,
10380*5113495bSYour Name 	tDot11fIEmu_edca_param_set *,
10381*5113495bSYour Name 	uint8_t *,
10382*5113495bSYour Name 	uint32_t,
10383*5113495bSYour Name 	uint32_t*);
10384*5113495bSYour Name 
10385*5113495bSYour Name uint32_t dot11f_get_packed_ie_mu_edca_param_set(
10386*5113495bSYour Name 	tpAniSirGlobal,
10387*5113495bSYour Name 	tDot11fIEmu_edca_param_set *,
10388*5113495bSYour Name 	uint32_t*);
10389*5113495bSYour Name 
10390*5113495bSYour Name #ifdef __cplusplus
10391*5113495bSYour Name }; /* End extern "C". */
10392*5113495bSYour Name #endif /* C++ */
10393*5113495bSYour Name 
10394*5113495bSYour Name /* EID 255 (0xff) Extended EID 56 (0x38) */
10395*5113495bSYour Name typedef struct sDot11fIEnon_inheritance {
10396*5113495bSYour Name 	uint8_t             present;
10397*5113495bSYour Name 	uint8_t             num_data;
10398*5113495bSYour Name 	uint8_t             data[255];
10399*5113495bSYour Name } tDot11fIEnon_inheritance;
10400*5113495bSYour Name 
10401*5113495bSYour Name #define DOT11F_EID_NON_INHERITANCE (255)
10402*5113495bSYour Name 
10403*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10404*5113495bSYour Name #define DOT11F_IE_NON_INHERITANCE_MIN_LEN (0)
10405*5113495bSYour Name 
10406*5113495bSYour Name #define DOT11F_IE_NON_INHERITANCE_MAX_LEN (255)
10407*5113495bSYour Name 
10408*5113495bSYour Name #ifdef __cplusplus
10409*5113495bSYour Name extern "C" {
10410*5113495bSYour Name #endif /* C++ */
10411*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_non_inheritance(
10412*5113495bSYour Name 	tpAniSirGlobal,
10413*5113495bSYour Name 	uint8_t *,
10414*5113495bSYour Name 	uint8_t,
10415*5113495bSYour Name 	tDot11fIEnon_inheritance*,
10416*5113495bSYour Name 	bool);
10417*5113495bSYour Name 
10418*5113495bSYour Name uint32_t dot11f_pack_ie_non_inheritance(
10419*5113495bSYour Name 	tpAniSirGlobal,
10420*5113495bSYour Name 	tDot11fIEnon_inheritance *,
10421*5113495bSYour Name 	uint8_t *,
10422*5113495bSYour Name 	uint32_t,
10423*5113495bSYour Name 	uint32_t*);
10424*5113495bSYour Name 
10425*5113495bSYour Name uint32_t dot11f_get_packed_ie_non_inheritance(
10426*5113495bSYour Name 	tpAniSirGlobal,
10427*5113495bSYour Name 	tDot11fIEnon_inheritance *,
10428*5113495bSYour Name 	uint32_t*);
10429*5113495bSYour Name 
10430*5113495bSYour Name #ifdef __cplusplus
10431*5113495bSYour Name }; /* End extern "C". */
10432*5113495bSYour Name #endif /* C++ */
10433*5113495bSYour Name 
10434*5113495bSYour Name /* EID 255 (0xff) Extended EID 54 (0x36) */
10435*5113495bSYour Name typedef struct sDot11fIEoci {
10436*5113495bSYour Name 	uint8_t             present;
10437*5113495bSYour Name 	uint8_t             op_class;
10438*5113495bSYour Name 	uint8_t             prim_ch_num;
10439*5113495bSYour Name 	uint8_t             freq_seg_1_ch_num;
10440*5113495bSYour Name } tDot11fIEoci;
10441*5113495bSYour Name 
10442*5113495bSYour Name #define DOT11F_EID_OCI (255)
10443*5113495bSYour Name 
10444*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10445*5113495bSYour Name #define DOT11F_IE_OCI_MIN_LEN (3)
10446*5113495bSYour Name 
10447*5113495bSYour Name #define DOT11F_IE_OCI_MAX_LEN (3)
10448*5113495bSYour Name 
10449*5113495bSYour Name #ifdef __cplusplus
10450*5113495bSYour Name extern "C" {
10451*5113495bSYour Name #endif /* C++ */
10452*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_oci(
10453*5113495bSYour Name 	tpAniSirGlobal,
10454*5113495bSYour Name 	uint8_t *,
10455*5113495bSYour Name 	uint8_t,
10456*5113495bSYour Name 	tDot11fIEoci*,
10457*5113495bSYour Name 	bool);
10458*5113495bSYour Name 
10459*5113495bSYour Name uint32_t dot11f_pack_ie_oci(
10460*5113495bSYour Name 	tpAniSirGlobal,
10461*5113495bSYour Name 	tDot11fIEoci *,
10462*5113495bSYour Name 	uint8_t *,
10463*5113495bSYour Name 	uint32_t,
10464*5113495bSYour Name 	uint32_t*);
10465*5113495bSYour Name 
10466*5113495bSYour Name uint32_t dot11f_get_packed_ie_oci(
10467*5113495bSYour Name 	tpAniSirGlobal,
10468*5113495bSYour Name 	tDot11fIEoci *,
10469*5113495bSYour Name 	uint32_t*);
10470*5113495bSYour Name 
10471*5113495bSYour Name #ifdef __cplusplus
10472*5113495bSYour Name }; /* End extern "C". */
10473*5113495bSYour Name #endif /* C++ */
10474*5113495bSYour Name 
10475*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x12} */
10476*5113495bSYour Name typedef struct sDot11fIEosen_ie {
10477*5113495bSYour Name 	uint8_t             present;
10478*5113495bSYour Name 	uint8_t             num_data;
10479*5113495bSYour Name 	uint8_t             data[255];
10480*5113495bSYour Name } tDot11fIEosen_ie;
10481*5113495bSYour Name 
10482*5113495bSYour Name #define DOT11F_EID_OSEN_IE (221)
10483*5113495bSYour Name 
10484*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10485*5113495bSYour Name #define DOT11F_IE_OSEN_IE_MIN_LEN (4)
10486*5113495bSYour Name 
10487*5113495bSYour Name #define DOT11F_IE_OSEN_IE_MAX_LEN (259)
10488*5113495bSYour Name 
10489*5113495bSYour Name #ifdef __cplusplus
10490*5113495bSYour Name extern "C" {
10491*5113495bSYour Name #endif /* C++ */
10492*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_osen_ie(
10493*5113495bSYour Name 	tpAniSirGlobal,
10494*5113495bSYour Name 	uint8_t *,
10495*5113495bSYour Name 	uint8_t,
10496*5113495bSYour Name 	tDot11fIEosen_ie*,
10497*5113495bSYour Name 	bool);
10498*5113495bSYour Name 
10499*5113495bSYour Name uint32_t dot11f_pack_ie_osen_ie(
10500*5113495bSYour Name 	tpAniSirGlobal,
10501*5113495bSYour Name 	tDot11fIEosen_ie *,
10502*5113495bSYour Name 	uint8_t *,
10503*5113495bSYour Name 	uint32_t,
10504*5113495bSYour Name 	uint32_t*);
10505*5113495bSYour Name 
10506*5113495bSYour Name uint32_t dot11f_get_packed_ie_osen_ie(
10507*5113495bSYour Name 	tpAniSirGlobal,
10508*5113495bSYour Name 	tDot11fIEosen_ie *,
10509*5113495bSYour Name 	uint32_t*);
10510*5113495bSYour Name 
10511*5113495bSYour Name #ifdef __cplusplus
10512*5113495bSYour Name }; /* End extern "C". */
10513*5113495bSYour Name #endif /* C++ */
10514*5113495bSYour Name 
10515*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} (Multi-IE) */
10516*5113495bSYour Name typedef struct sDot11fIEqcn_ie {
10517*5113495bSYour Name 	uint8_t             present;
10518*5113495bSYour Name 	tDot11fTLVqcn_version qcn_version;
10519*5113495bSYour Name 	tDot11fTLVvht_mcs11_attr vht_mcs11_attr;
10520*5113495bSYour Name 	tDot11fTLVhe_400ns_sgi_attr he_400ns_sgi_attr;
10521*5113495bSYour Name 	tDot11fTLVhe_2xltf_160mhz_supp he_2xltf_160mhz_supp;
10522*5113495bSYour Name 	tDot11fTLVhe_dl_ofdma_attr he_dl_ofdma_attr;
10523*5113495bSYour Name 	tDot11fTLVtrans_reasonp_attr trans_reasonp_attr;
10524*5113495bSYour Name 	tDot11fTLVtrans_rejectp_attr trans_rejectp_attr;
10525*5113495bSYour Name 	tDot11fTLVhe_dl_mumimo_attr he_dl_mumimo_attr;
10526*5113495bSYour Name 	tDot11fTLVhe_mcs13_attr he_mcs13_attr;
10527*5113495bSYour Name 	tDot11fTLVedca_pifs_param_attr edca_pifs_param_attr;
10528*5113495bSYour Name 	tDot11fTLVecsa_target_tsf_info_attr ecsa_target_tsf_info_attr;
10529*5113495bSYour Name } tDot11fIEqcn_ie;
10530*5113495bSYour Name 
10531*5113495bSYour Name #define DOT11F_EID_QCN_IE (221)
10532*5113495bSYour Name 
10533*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10534*5113495bSYour Name #define DOT11F_IE_QCN_IE_MIN_LEN (4)
10535*5113495bSYour Name 
10536*5113495bSYour Name #define DOT11F_IE_QCN_IE_MAX_LEN (53)
10537*5113495bSYour Name 
10538*5113495bSYour Name #ifdef __cplusplus
10539*5113495bSYour Name extern "C" {
10540*5113495bSYour Name #endif /* C++ */
10541*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_qcn_ie(
10542*5113495bSYour Name 	tpAniSirGlobal,
10543*5113495bSYour Name 	uint8_t *,
10544*5113495bSYour Name 	uint8_t,
10545*5113495bSYour Name 	tDot11fIEqcn_ie*,
10546*5113495bSYour Name 	bool);
10547*5113495bSYour Name 
10548*5113495bSYour Name uint32_t dot11f_pack_ie_qcn_ie(
10549*5113495bSYour Name 	tpAniSirGlobal,
10550*5113495bSYour Name 	tDot11fIEqcn_ie *,
10551*5113495bSYour Name 	uint8_t *,
10552*5113495bSYour Name 	uint32_t,
10553*5113495bSYour Name 	uint32_t*);
10554*5113495bSYour Name 
10555*5113495bSYour Name uint32_t dot11f_get_packed_ie_qcn_ie(
10556*5113495bSYour Name 	tpAniSirGlobal,
10557*5113495bSYour Name 	tDot11fIEqcn_ie *,
10558*5113495bSYour Name 	uint32_t*);
10559*5113495bSYour Name 
10560*5113495bSYour Name #ifdef __cplusplus
10561*5113495bSYour Name }; /* End extern "C". */
10562*5113495bSYour Name #endif /* C++ */
10563*5113495bSYour Name 
10564*5113495bSYour Name /* EID 201 (0xc9) */
10565*5113495bSYour Name typedef struct sDot11fIEreduced_neighbor_report {
10566*5113495bSYour Name 	uint8_t             present;
10567*5113495bSYour Name 	uint16_t            tbtt_type:2;
10568*5113495bSYour Name 	uint16_t filtered_neighbor_ap:1;
10569*5113495bSYour Name 	uint16_t             reserved:1;
10570*5113495bSYour Name 	uint16_t      tbtt_info_count:4;
10571*5113495bSYour Name 	uint16_t        tbtt_info_len:8;
10572*5113495bSYour Name 	uint8_t             op_class;
10573*5113495bSYour Name 	uint8_t             channel_num;
10574*5113495bSYour Name 	union {
10575*5113495bSYour Name 		struct {
10576*5113495bSYour Name 			uint8_t tbtt_offset;
10577*5113495bSYour Name 		} tbtt_info_1; /* tbtt_info_len = 1 */
10578*5113495bSYour Name 		struct {
10579*5113495bSYour Name 			uint8_t tbtt_offset;
10580*5113495bSYour Name 			uint8_t bss_params;
10581*5113495bSYour Name 		} tbtt_info_2; /* tbtt_info_len = 2 */
10582*5113495bSYour Name 		struct {
10583*5113495bSYour Name 			uint8_t tbtt_offset;
10584*5113495bSYour Name 			uint32_t short_ssid;
10585*5113495bSYour Name 		} tbtt_info_5; /* tbtt_info_len = 5 */
10586*5113495bSYour Name 		struct {
10587*5113495bSYour Name 			uint8_t tbtt_offset;
10588*5113495bSYour Name 			uint32_t short_ssid;
10589*5113495bSYour Name 			uint8_t bss_params;
10590*5113495bSYour Name 		} tbtt_info_6; /* tbtt_info_len = 6 */
10591*5113495bSYour Name 		struct {
10592*5113495bSYour Name 			uint8_t tbtt_offset;
10593*5113495bSYour Name 			uint8_t bssid[6];
10594*5113495bSYour Name 		} tbtt_info_7; /* tbtt_info_len = 7 */
10595*5113495bSYour Name 		struct {
10596*5113495bSYour Name 			uint8_t tbtt_offset;
10597*5113495bSYour Name 			uint8_t bssid[6];
10598*5113495bSYour Name 			uint8_t bss_params;
10599*5113495bSYour Name 		} tbtt_info_8; /* tbtt_info_len = 8 */
10600*5113495bSYour Name 		struct {
10601*5113495bSYour Name 			uint8_t tbtt_offset;
10602*5113495bSYour Name 			uint8_t bssid[6];
10603*5113495bSYour Name 			uint8_t bss_params;
10604*5113495bSYour Name 			uint8_t psd_20mhz;
10605*5113495bSYour Name 		} tbtt_info_9; /* tbtt_info_len = 9 */
10606*5113495bSYour Name 		struct {
10607*5113495bSYour Name 			uint8_t tbtt_offset;
10608*5113495bSYour Name 			uint8_t bssid[6];
10609*5113495bSYour Name 			uint32_t short_ssid;
10610*5113495bSYour Name 		} tbtt_info_11; /* tbtt_info_len = 11 */
10611*5113495bSYour Name 		struct {
10612*5113495bSYour Name 			uint8_t tbtt_offset;
10613*5113495bSYour Name 			uint8_t bssid[6];
10614*5113495bSYour Name 			uint32_t short_ssid;
10615*5113495bSYour Name 			uint8_t bss_params;
10616*5113495bSYour Name 		} tbtt_info_12; /* tbtt_info_len = 12 */
10617*5113495bSYour Name 		struct {
10618*5113495bSYour Name 			uint8_t tbtt_offset;
10619*5113495bSYour Name 			uint8_t bssid[6];
10620*5113495bSYour Name 			uint32_t short_ssid;
10621*5113495bSYour Name 			uint8_t bss_params;
10622*5113495bSYour Name 			uint8_t psd_20mhz;
10623*5113495bSYour Name 		} tbtt_info_13; /* tbtt_info_len = 13 */
10624*5113495bSYour Name 		struct {
10625*5113495bSYour Name 			uint8_t tbtt_offset;
10626*5113495bSYour Name 			uint8_t bssid[6];
10627*5113495bSYour Name 			uint32_t short_ssid;
10628*5113495bSYour Name 			uint8_t bss_params;
10629*5113495bSYour Name 			uint8_t psd_20mhz;
10630*5113495bSYour Name 			uint8_t mld_id;
10631*5113495bSYour Name 			uint16_t               link_id:4;
10632*5113495bSYour Name 			uint16_t  bss_param_change_cnt:8;
10633*5113495bSYour Name 			uint16_t  all_updates_included:1;
10634*5113495bSYour Name 			uint16_t              reserved:3;
10635*5113495bSYour Name 		} tbtt_info_16; /* tbtt_info_len = 16 */
10636*5113495bSYour Name 	} tbtt_info;
10637*5113495bSYour Name } tDot11fIEreduced_neighbor_report;
10638*5113495bSYour Name 
10639*5113495bSYour Name #define DOT11F_EID_REDUCED_NEIGHBOR_REPORT (201)
10640*5113495bSYour Name 
10641*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10642*5113495bSYour Name #define DOT11F_IE_REDUCED_NEIGHBOR_REPORT_MIN_LEN (5)
10643*5113495bSYour Name 
10644*5113495bSYour Name #define DOT11F_IE_REDUCED_NEIGHBOR_REPORT_MAX_LEN (20)
10645*5113495bSYour Name 
10646*5113495bSYour Name #ifdef __cplusplus
10647*5113495bSYour Name extern "C" {
10648*5113495bSYour Name #endif /* C++ */
10649*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_reduced_neighbor_report(
10650*5113495bSYour Name 	tpAniSirGlobal,
10651*5113495bSYour Name 	uint8_t *,
10652*5113495bSYour Name 	uint8_t,
10653*5113495bSYour Name 	tDot11fIEreduced_neighbor_report*,
10654*5113495bSYour Name 	bool);
10655*5113495bSYour Name 
10656*5113495bSYour Name uint32_t dot11f_pack_ie_reduced_neighbor_report(
10657*5113495bSYour Name 	tpAniSirGlobal,
10658*5113495bSYour Name 	tDot11fIEreduced_neighbor_report *,
10659*5113495bSYour Name 	uint8_t *,
10660*5113495bSYour Name 	uint32_t,
10661*5113495bSYour Name 	uint32_t*);
10662*5113495bSYour Name 
10663*5113495bSYour Name uint32_t dot11f_get_packed_ie_reduced_neighbor_report(
10664*5113495bSYour Name 	tpAniSirGlobal,
10665*5113495bSYour Name 	tDot11fIEreduced_neighbor_report *,
10666*5113495bSYour Name 	uint32_t*);
10667*5113495bSYour Name 
10668*5113495bSYour Name #ifdef __cplusplus
10669*5113495bSYour Name }; /* End extern "C". */
10670*5113495bSYour Name #endif /* C++ */
10671*5113495bSYour Name 
10672*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x1d} */
10673*5113495bSYour Name typedef struct sDot11fIEroaming_consortium_sel {
10674*5113495bSYour Name 	uint8_t             present;
10675*5113495bSYour Name 	uint8_t             num_data;
10676*5113495bSYour Name 	uint8_t             data[255];
10677*5113495bSYour Name } tDot11fIEroaming_consortium_sel;
10678*5113495bSYour Name 
10679*5113495bSYour Name #define DOT11F_EID_ROAMING_CONSORTIUM_SEL (221)
10680*5113495bSYour Name 
10681*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10682*5113495bSYour Name #define DOT11F_IE_ROAMING_CONSORTIUM_SEL_MIN_LEN (4)
10683*5113495bSYour Name 
10684*5113495bSYour Name #define DOT11F_IE_ROAMING_CONSORTIUM_SEL_MAX_LEN (259)
10685*5113495bSYour Name 
10686*5113495bSYour Name #ifdef __cplusplus
10687*5113495bSYour Name extern "C" {
10688*5113495bSYour Name #endif /* C++ */
10689*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_roaming_consortium_sel(
10690*5113495bSYour Name 	tpAniSirGlobal,
10691*5113495bSYour Name 	uint8_t *,
10692*5113495bSYour Name 	uint8_t,
10693*5113495bSYour Name 	tDot11fIEroaming_consortium_sel*,
10694*5113495bSYour Name 	bool);
10695*5113495bSYour Name 
10696*5113495bSYour Name uint32_t dot11f_pack_ie_roaming_consortium_sel(
10697*5113495bSYour Name 	tpAniSirGlobal,
10698*5113495bSYour Name 	tDot11fIEroaming_consortium_sel *,
10699*5113495bSYour Name 	uint8_t *,
10700*5113495bSYour Name 	uint32_t,
10701*5113495bSYour Name 	uint32_t*);
10702*5113495bSYour Name 
10703*5113495bSYour Name uint32_t dot11f_get_packed_ie_roaming_consortium_sel(
10704*5113495bSYour Name 	tpAniSirGlobal,
10705*5113495bSYour Name 	tDot11fIEroaming_consortium_sel *,
10706*5113495bSYour Name 	uint32_t*);
10707*5113495bSYour Name 
10708*5113495bSYour Name #ifdef __cplusplus
10709*5113495bSYour Name }; /* End extern "C". */
10710*5113495bSYour Name #endif /* C++ */
10711*5113495bSYour Name 
10712*5113495bSYour Name /* EID 62 (0x3e) */
10713*5113495bSYour Name typedef struct sDot11fIEsec_chan_offset_ele {
10714*5113495bSYour Name 	uint8_t             present;
10715*5113495bSYour Name 	uint8_t             secondaryChannelOffset;
10716*5113495bSYour Name } tDot11fIEsec_chan_offset_ele;
10717*5113495bSYour Name 
10718*5113495bSYour Name #define DOT11F_EID_SEC_CHAN_OFFSET_ELE (62)
10719*5113495bSYour Name 
10720*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10721*5113495bSYour Name #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MIN_LEN (1)
10722*5113495bSYour Name 
10723*5113495bSYour Name #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MAX_LEN (1)
10724*5113495bSYour Name 
10725*5113495bSYour Name #ifdef __cplusplus
10726*5113495bSYour Name extern "C" {
10727*5113495bSYour Name #endif /* C++ */
10728*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_sec_chan_offset_ele(
10729*5113495bSYour Name 	tpAniSirGlobal,
10730*5113495bSYour Name 	uint8_t *,
10731*5113495bSYour Name 	uint8_t,
10732*5113495bSYour Name 	tDot11fIEsec_chan_offset_ele*,
10733*5113495bSYour Name 	bool);
10734*5113495bSYour Name 
10735*5113495bSYour Name uint32_t dot11f_pack_ie_sec_chan_offset_ele(
10736*5113495bSYour Name 	tpAniSirGlobal,
10737*5113495bSYour Name 	tDot11fIEsec_chan_offset_ele *,
10738*5113495bSYour Name 	uint8_t *,
10739*5113495bSYour Name 	uint32_t,
10740*5113495bSYour Name 	uint32_t*);
10741*5113495bSYour Name 
10742*5113495bSYour Name uint32_t dot11f_get_packed_ie_sec_chan_offset_ele(
10743*5113495bSYour Name 	tpAniSirGlobal,
10744*5113495bSYour Name 	tDot11fIEsec_chan_offset_ele *,
10745*5113495bSYour Name 	uint32_t*);
10746*5113495bSYour Name 
10747*5113495bSYour Name #ifdef __cplusplus
10748*5113495bSYour Name }; /* End extern "C". */
10749*5113495bSYour Name #endif /* C++ */
10750*5113495bSYour Name 
10751*5113495bSYour Name /* EID 255 (0xff) Extended EID 39 (0x27) */
10752*5113495bSYour Name typedef struct sDot11fIEspatial_reuse {
10753*5113495bSYour Name 	uint8_t             present;
10754*5113495bSYour Name 	uint8_t         psr_disallow:1;
10755*5113495bSYour Name 	uint8_t non_srg_pd_sr_disallow:1;
10756*5113495bSYour Name 	uint8_t non_srg_offset_present:1;
10757*5113495bSYour Name 	uint8_t     srg_info_present:1;
10758*5113495bSYour Name 	uint8_t     sr_value15_allow:1;
10759*5113495bSYour Name 	uint8_t             reserved:3;
10760*5113495bSYour Name 	union {
10761*5113495bSYour Name 		struct {
10762*5113495bSYour Name 			uint8_t non_srg_pd_max_offset;
10763*5113495bSYour Name 		} info; /* non_srg_offset_present = 1 */
10764*5113495bSYour Name 	} non_srg_offset;
10765*5113495bSYour Name 	union {
10766*5113495bSYour Name 		struct {
10767*5113495bSYour Name 			uint8_t srg_pd_min_offset;
10768*5113495bSYour Name 			uint8_t srg_pd_max_offset;
10769*5113495bSYour Name 			uint8_t srg_color[8];
10770*5113495bSYour Name 			uint8_t srg_partial_bssid[8];
10771*5113495bSYour Name 		} info; /* srg_info_present = 1 */
10772*5113495bSYour Name 	} srg_info;
10773*5113495bSYour Name } tDot11fIEspatial_reuse;
10774*5113495bSYour Name 
10775*5113495bSYour Name #define DOT11F_EID_SPATIAL_REUSE (255)
10776*5113495bSYour Name 
10777*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10778*5113495bSYour Name #define DOT11F_IE_SPATIAL_REUSE_MIN_LEN (1)
10779*5113495bSYour Name 
10780*5113495bSYour Name #define DOT11F_IE_SPATIAL_REUSE_MAX_LEN (20)
10781*5113495bSYour Name 
10782*5113495bSYour Name #ifdef __cplusplus
10783*5113495bSYour Name extern "C" {
10784*5113495bSYour Name #endif /* C++ */
10785*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_spatial_reuse(
10786*5113495bSYour Name 	tpAniSirGlobal,
10787*5113495bSYour Name 	uint8_t *,
10788*5113495bSYour Name 	uint8_t,
10789*5113495bSYour Name 	tDot11fIEspatial_reuse*,
10790*5113495bSYour Name 	bool);
10791*5113495bSYour Name 
10792*5113495bSYour Name uint32_t dot11f_pack_ie_spatial_reuse(
10793*5113495bSYour Name 	tpAniSirGlobal,
10794*5113495bSYour Name 	tDot11fIEspatial_reuse *,
10795*5113495bSYour Name 	uint8_t *,
10796*5113495bSYour Name 	uint32_t,
10797*5113495bSYour Name 	uint32_t*);
10798*5113495bSYour Name 
10799*5113495bSYour Name uint32_t dot11f_get_packed_ie_spatial_reuse(
10800*5113495bSYour Name 	tpAniSirGlobal,
10801*5113495bSYour Name 	tDot11fIEspatial_reuse *,
10802*5113495bSYour Name 	uint32_t*);
10803*5113495bSYour Name 
10804*5113495bSYour Name #ifdef __cplusplus
10805*5113495bSYour Name }; /* End extern "C". */
10806*5113495bSYour Name #endif /* C++ */
10807*5113495bSYour Name 
10808*5113495bSYour Name /* EID 255 (0xff) Extended EID 109 (0x6d) */
10809*5113495bSYour Name typedef struct sDot11fIEt2lm_ie {
10810*5113495bSYour Name 	uint8_t             present;
10811*5113495bSYour Name 	uint8_t             num_data;
10812*5113495bSYour Name 	uint8_t             data[255];
10813*5113495bSYour Name } tDot11fIEt2lm_ie;
10814*5113495bSYour Name 
10815*5113495bSYour Name #define DOT11F_EID_T2LM_IE (255)
10816*5113495bSYour Name 
10817*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10818*5113495bSYour Name #define DOT11F_IE_T2LM_IE_MIN_LEN (3)
10819*5113495bSYour Name 
10820*5113495bSYour Name #define DOT11F_IE_T2LM_IE_MAX_LEN (255)
10821*5113495bSYour Name 
10822*5113495bSYour Name #ifdef __cplusplus
10823*5113495bSYour Name extern "C" {
10824*5113495bSYour Name #endif /* C++ */
10825*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_t2lm_ie(
10826*5113495bSYour Name 	tpAniSirGlobal,
10827*5113495bSYour Name 	uint8_t *,
10828*5113495bSYour Name 	uint8_t,
10829*5113495bSYour Name 	tDot11fIEt2lm_ie*,
10830*5113495bSYour Name 	bool);
10831*5113495bSYour Name 
10832*5113495bSYour Name uint32_t dot11f_pack_ie_t2lm_ie(
10833*5113495bSYour Name 	tpAniSirGlobal,
10834*5113495bSYour Name 	tDot11fIEt2lm_ie *,
10835*5113495bSYour Name 	uint8_t *,
10836*5113495bSYour Name 	uint32_t,
10837*5113495bSYour Name 	uint32_t*);
10838*5113495bSYour Name 
10839*5113495bSYour Name uint32_t dot11f_get_packed_ie_t2lm_ie(
10840*5113495bSYour Name 	tpAniSirGlobal,
10841*5113495bSYour Name 	tDot11fIEt2lm_ie *,
10842*5113495bSYour Name 	uint32_t*);
10843*5113495bSYour Name 
10844*5113495bSYour Name #ifdef __cplusplus
10845*5113495bSYour Name }; /* End extern "C". */
10846*5113495bSYour Name #endif /* C++ */
10847*5113495bSYour Name 
10848*5113495bSYour Name /* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c, 0x04} */
10849*5113495bSYour Name typedef struct sDot11fIEvendor_vht_ie {
10850*5113495bSYour Name 	uint8_t                      present;
10851*5113495bSYour Name 	uint8_t                      sub_type;
10852*5113495bSYour Name 	tDot11fIEVHTCaps             VHTCaps;
10853*5113495bSYour Name 	tDot11fIEVHTOperation        VHTOperation;
10854*5113495bSYour Name } tDot11fIEvendor_vht_ie;
10855*5113495bSYour Name 
10856*5113495bSYour Name #define DOT11F_EID_VENDOR_VHT_IE (221)
10857*5113495bSYour Name 
10858*5113495bSYour Name /* N.B. These #defines do *not* include the EID & length */
10859*5113495bSYour Name #define DOT11F_IE_VENDOR_VHT_IE_MIN_LEN (5)
10860*5113495bSYour Name 
10861*5113495bSYour Name #define DOT11F_IE_VENDOR_VHT_IE_MAX_LEN (26)
10862*5113495bSYour Name 
10863*5113495bSYour Name #ifdef __cplusplus
10864*5113495bSYour Name extern "C" {
10865*5113495bSYour Name #endif /* C++ */
10866*5113495bSYour Name __must_check uint32_t dot11f_unpack_ie_vendor_vht_ie(
10867*5113495bSYour Name 	tpAniSirGlobal,
10868*5113495bSYour Name 	uint8_t *,
10869*5113495bSYour Name 	uint8_t,
10870*5113495bSYour Name 	tDot11fIEvendor_vht_ie*,
10871*5113495bSYour Name 	bool);
10872*5113495bSYour Name 
10873*5113495bSYour Name uint32_t dot11f_pack_ie_vendor_vht_ie(
10874*5113495bSYour Name 	tpAniSirGlobal,
10875*5113495bSYour Name 	tDot11fIEvendor_vht_ie *,
10876*5113495bSYour Name 	uint8_t *,
10877*5113495bSYour Name 	uint32_t,
10878*5113495bSYour Name 	uint32_t*);
10879*5113495bSYour Name 
10880*5113495bSYour Name uint32_t dot11f_get_packed_ie_vendor_vht_ie(
10881*5113495bSYour Name 	tpAniSirGlobal,
10882*5113495bSYour Name 	tDot11fIEvendor_vht_ie *,
10883*5113495bSYour Name 	uint32_t*);
10884*5113495bSYour Name 
10885*5113495bSYour Name #ifdef __cplusplus
10886*5113495bSYour Name }; /* End extern "C". */
10887*5113495bSYour Name #endif /* C++ */
10888*5113495bSYour Name /************************************************************************
10889*5113495bSYour Name  * Frames
10890*5113495bSYour Name  **********************************************************************/
10891*5113495bSYour Name 
10892*5113495bSYour Name typedef struct sDot11fAddTSRequest{
10893*5113495bSYour Name 	tDot11fFfCategory                  Category;
10894*5113495bSYour Name 	tDot11fFfAction                    Action;
10895*5113495bSYour Name 	tDot11fFfDialogToken               DialogToken;
10896*5113495bSYour Name 	tDot11fIETSPEC                     TSPEC;
10897*5113495bSYour Name 	uint16_t                           num_TCLAS;
10898*5113495bSYour Name 	tDot11fIETCLAS                     TCLAS[2];
10899*5113495bSYour Name 	tDot11fIETCLASSPROC                TCLASSPROC;
10900*5113495bSYour Name 	tDot11fIEWMMTSPEC                  WMMTSPEC;
10901*5113495bSYour Name 	uint16_t                           num_WMMTCLAS;
10902*5113495bSYour Name 	tDot11fIEWMMTCLAS                  WMMTCLAS[2];
10903*5113495bSYour Name 	tDot11fIEWMMTCLASPROC              WMMTCLASPROC;
10904*5113495bSYour Name 	tDot11fIEESETrafStrmRateSet        ESETrafStrmRateSet;
10905*5113495bSYour Name } tDot11fAddTSRequest;
10906*5113495bSYour Name 
10907*5113495bSYour Name #define DOT11F_ADDTSREQUEST (1)
10908*5113495bSYour Name 
10909*5113495bSYour Name #ifdef __cplusplus
10910*5113495bSYour Name extern "C" {
10911*5113495bSYour Name #endif /* C++ */
10912*5113495bSYour Name 
10913*5113495bSYour Name uint32_t dot11f_unpack_add_ts_request(tpAniSirGlobal pCtx,
10914*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
10915*5113495bSYour Name 	tDot11fAddTSRequest * pFrm, bool append_ie);
10916*5113495bSYour Name uint32_t dot11f_pack_add_ts_request(tpAniSirGlobal pCtx,
10917*5113495bSYour Name 	tDot11fAddTSRequest *pFrm, uint8_t *pBuf,
10918*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
10919*5113495bSYour Name uint32_t dot11f_get_packed_add_ts_request_size(tpAniSirGlobal pCtx,
10920*5113495bSYour Name 	tDot11fAddTSRequest *pFrm,
10921*5113495bSYour Name 	uint32_t *pnNeeded);
10922*5113495bSYour Name 
10923*5113495bSYour Name #ifdef __cplusplus
10924*5113495bSYour Name } /* End extern "C". */
10925*5113495bSYour Name #endif /* C++ */
10926*5113495bSYour Name 
10927*5113495bSYour Name typedef struct sDot11fAddTSResponse{
10928*5113495bSYour Name 	tDot11fFfCategory              Category;
10929*5113495bSYour Name 	tDot11fFfAction                Action;
10930*5113495bSYour Name 	tDot11fFfDialogToken           DialogToken;
10931*5113495bSYour Name 	tDot11fFfStatus                Status;
10932*5113495bSYour Name 	tDot11fIETSDelay               TSDelay;
10933*5113495bSYour Name 	tDot11fIETSPEC                 TSPEC;
10934*5113495bSYour Name 	uint16_t                       num_TCLAS;
10935*5113495bSYour Name 	tDot11fIETCLAS                 TCLAS[2];
10936*5113495bSYour Name 	tDot11fIETCLASSPROC            TCLASSPROC;
10937*5113495bSYour Name 	tDot11fIESchedule              Schedule;
10938*5113495bSYour Name 	tDot11fIEWMMTSDelay            WMMTSDelay;
10939*5113495bSYour Name 	tDot11fIEWMMSchedule           WMMSchedule;
10940*5113495bSYour Name 	tDot11fIEWMMTSPEC              WMMTSPEC;
10941*5113495bSYour Name 	uint16_t                       num_WMMTCLAS;
10942*5113495bSYour Name 	tDot11fIEWMMTCLAS              WMMTCLAS[2];
10943*5113495bSYour Name 	tDot11fIEWMMTCLASPROC          WMMTCLASPROC;
10944*5113495bSYour Name 	tDot11fIEESETrafStrmMet        ESETrafStrmMet;
10945*5113495bSYour Name } tDot11fAddTSResponse;
10946*5113495bSYour Name 
10947*5113495bSYour Name #define DOT11F_ADDTSRESPONSE (2)
10948*5113495bSYour Name 
10949*5113495bSYour Name #ifdef __cplusplus
10950*5113495bSYour Name extern "C" {
10951*5113495bSYour Name #endif /* C++ */
10952*5113495bSYour Name 
10953*5113495bSYour Name uint32_t dot11f_unpack_add_ts_response(tpAniSirGlobal pCtx,
10954*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
10955*5113495bSYour Name 	tDot11fAddTSResponse * pFrm, bool append_ie);
10956*5113495bSYour Name uint32_t dot11f_pack_add_ts_response(tpAniSirGlobal pCtx,
10957*5113495bSYour Name 	tDot11fAddTSResponse *pFrm, uint8_t *pBuf,
10958*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
10959*5113495bSYour Name uint32_t dot11f_get_packed_add_ts_response_size(tpAniSirGlobal pCtx,
10960*5113495bSYour Name 	tDot11fAddTSResponse *pFrm,
10961*5113495bSYour Name 	uint32_t *pnNeeded);
10962*5113495bSYour Name 
10963*5113495bSYour Name #ifdef __cplusplus
10964*5113495bSYour Name } /* End extern "C". */
10965*5113495bSYour Name #endif /* C++ */
10966*5113495bSYour Name 
10967*5113495bSYour Name typedef struct sDot11fAssocRequest{
10968*5113495bSYour Name 	tDot11fFfCapabilities                  Capabilities;
10969*5113495bSYour Name 	tDot11fFfListenInterval                ListenInterval;
10970*5113495bSYour Name 	tDot11fIESSID                          SSID;
10971*5113495bSYour Name 	tDot11fIESuppRates                     SuppRates;
10972*5113495bSYour Name 	tDot11fIEExtSuppRates                  ExtSuppRates;
10973*5113495bSYour Name 	tDot11fIEPowerCaps                     PowerCaps;
10974*5113495bSYour Name 	tDot11fIESuppChannels                  SuppChannels;
10975*5113495bSYour Name 	tDot11fIERSNOpaque                     RSNOpaque;
10976*5113495bSYour Name 	tDot11fIEQOSCapsStation                QOSCapsStation;
10977*5113495bSYour Name 	tDot11fIERRMEnabledCap                 RRMEnabledCap;
10978*5113495bSYour Name 	tDot11fIEMobilityDomain                MobilityDomain;
10979*5113495bSYour Name 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
10980*5113495bSYour Name 	tDot11fIEHTCaps                        HTCaps;
10981*5113495bSYour Name 	tDot11fIEExtCap                        ExtCap;
10982*5113495bSYour Name 	tDot11fIEVHTCaps                       VHTCaps;
10983*5113495bSYour Name 	tDot11fIEOperatingMode                 OperatingMode;
10984*5113495bSYour Name 	tDot11fIEfils_session                  fils_session;
10985*5113495bSYour Name 	tDot11fIEfils_public_key               fils_public_key;
10986*5113495bSYour Name 	tDot11fIEfils_key_confirmation         fils_key_confirmation;
10987*5113495bSYour Name 	tDot11fIEfils_hlp_container            fils_hlp_container;
10988*5113495bSYour Name 	tDot11fIEbss_max_idle_period           bss_max_idle_period;
10989*5113495bSYour Name 	tDot11fIEFTInfo                        FTInfo;
10990*5113495bSYour Name 	tDot11fIEhe_cap                        he_cap;
10991*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap              he_6ghz_band_cap;
10992*5113495bSYour Name 	tDot11fIEWAPIOpaque                    WAPIOpaque;
10993*5113495bSYour Name 	tDot11fIEWAPI                          WAPI;
10994*5113495bSYour Name 	tDot11fIEQosMapSet                     QosMapSet;
10995*5113495bSYour Name 	tDot11fIEfragment_ie                   fragment_ie;
10996*5113495bSYour Name 	tDot11fIEdh_parameter_element          dh_parameter_element;
10997*5113495bSYour Name 	tDot11fIEeht_cap                       eht_cap;
10998*5113495bSYour Name 	tDot11fIEmlo_ie                        mlo_ie;
10999*5113495bSYour Name 	uint16_t                               num_t2lm_ie;
11000*5113495bSYour Name 	tDot11fIEt2lm_ie                       t2lm_ie[2];
11001*5113495bSYour Name 	tDot11fIEWPAOpaque                     WPAOpaque;
11002*5113495bSYour Name 	tDot11fIEWMMCaps                       WMMCaps;
11003*5113495bSYour Name 	tDot11fIEWMMInfoStation                WMMInfoStation;
11004*5113495bSYour Name 	tDot11fIEWscIEOpaque                   WscIEOpaque;
11005*5113495bSYour Name 	tDot11fIEESERadMgmtCap                 ESERadMgmtCap;
11006*5113495bSYour Name 	tDot11fIEESEVersion                    ESEVersion;
11007*5113495bSYour Name 	tDot11fIEP2PIEOpaque                   P2PIEOpaque;
11008*5113495bSYour Name 	tDot11fIEWFDIEOpaque                   WFDIEOpaque;
11009*5113495bSYour Name 	tDot11fIEvendor_vht_ie                 vendor_vht_ie;
11010*5113495bSYour Name 	tDot11fIEhs20vendor_ie                 hs20vendor_ie;
11011*5113495bSYour Name 	tDot11fIEqcn_ie                        qcn_ie;
11012*5113495bSYour Name 	tDot11fIEosen_ie                       osen_ie;
11013*5113495bSYour Name 	tDot11fIEroaming_consortium_sel        roaming_consortium_sel;
11014*5113495bSYour Name } tDot11fAssocRequest;
11015*5113495bSYour Name 
11016*5113495bSYour Name #define DOT11F_ASSOCREQUEST (3)
11017*5113495bSYour Name 
11018*5113495bSYour Name #ifdef __cplusplus
11019*5113495bSYour Name extern "C" {
11020*5113495bSYour Name #endif /* C++ */
11021*5113495bSYour Name 
11022*5113495bSYour Name uint32_t dot11f_unpack_assoc_request(tpAniSirGlobal pCtx,
11023*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11024*5113495bSYour Name 	tDot11fAssocRequest * pFrm, bool append_ie);
11025*5113495bSYour Name uint32_t dot11f_pack_assoc_request(tpAniSirGlobal pCtx,
11026*5113495bSYour Name 	tDot11fAssocRequest *pFrm, uint8_t *pBuf,
11027*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11028*5113495bSYour Name uint32_t dot11f_get_packed_assoc_request_size(tpAniSirGlobal pCtx,
11029*5113495bSYour Name 	tDot11fAssocRequest *pFrm,
11030*5113495bSYour Name 	uint32_t *pnNeeded);
11031*5113495bSYour Name 
11032*5113495bSYour Name #ifdef __cplusplus
11033*5113495bSYour Name } /* End extern "C". */
11034*5113495bSYour Name #endif /* C++ */
11035*5113495bSYour Name 
11036*5113495bSYour Name typedef struct sDot11fAssocResponse{
11037*5113495bSYour Name 	tDot11fFfCapabilities                   Capabilities;
11038*5113495bSYour Name 	tDot11fFfStatus                         Status;
11039*5113495bSYour Name 	tDot11fFfAID                            AID;
11040*5113495bSYour Name 	tDot11fIESuppRates                      SuppRates;
11041*5113495bSYour Name 	tDot11fIEExtSuppRates                   ExtSuppRates;
11042*5113495bSYour Name 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11043*5113495bSYour Name 	tDot11fIERCPIIE                         RCPIIE;
11044*5113495bSYour Name 	tDot11fIERSNIIE                         RSNIIE;
11045*5113495bSYour Name 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11046*5113495bSYour Name 	tDot11fIEMobilityDomain                 MobilityDomain;
11047*5113495bSYour Name 	tDot11fIEFTInfo                         FTInfo;
11048*5113495bSYour Name 	tDot11fIETimeoutInterval                TimeoutInterval;
11049*5113495bSYour Name 	tDot11fIEHTCaps                         HTCaps;
11050*5113495bSYour Name 	tDot11fIEHTInfo                         HTInfo;
11051*5113495bSYour Name 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11052*5113495bSYour Name 	tDot11fIEExtCap                         ExtCap;
11053*5113495bSYour Name 	tDot11fIEbss_max_idle_period            bss_max_idle_period;
11054*5113495bSYour Name 	tDot11fIEQosMapSet                      QosMapSet;
11055*5113495bSYour Name 	tDot11fIEVHTCaps                        VHTCaps;
11056*5113495bSYour Name 	tDot11fIEVHTOperation                   VHTOperation;
11057*5113495bSYour Name 	tDot11fIEOperatingMode                  OperatingMode;
11058*5113495bSYour Name 	tDot11fIEfils_session                   fils_session;
11059*5113495bSYour Name 	tDot11fIEfils_public_key                fils_public_key;
11060*5113495bSYour Name 	tDot11fIEfils_key_confirmation          fils_key_confirmation;
11061*5113495bSYour Name 	tDot11fIEfils_hlp_container             fils_hlp_container;
11062*5113495bSYour Name 	tDot11fIEhe_cap                         he_cap;
11063*5113495bSYour Name 	tDot11fIEhe_op                          he_op;
11064*5113495bSYour Name 	tDot11fIEspatial_reuse                  spatial_reuse;
11065*5113495bSYour Name 	tDot11fIEbss_color_change               bss_color_change;
11066*5113495bSYour Name 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11067*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11068*5113495bSYour Name 	uint16_t                                num_RICDataDesc;
11069*5113495bSYour Name 	tDot11fIERICDataDesc                    RICDataDesc[2];
11070*5113495bSYour Name 	tDot11fIEESETxmitPower                  ESETxmitPower;
11071*5113495bSYour Name 	tDot11fIEfragment_ie                    fragment_ie;
11072*5113495bSYour Name 	tDot11fIEfils_kde                       fils_kde;
11073*5113495bSYour Name 	tDot11fIEeht_cap                        eht_cap;
11074*5113495bSYour Name 	tDot11fIEeht_op                         eht_op;
11075*5113495bSYour Name 	tDot11fIEmlo_ie                         mlo_ie;
11076*5113495bSYour Name 	uint16_t                                num_t2lm_ie;
11077*5113495bSYour Name 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11078*5113495bSYour Name 	tDot11fIEWPA                            WPA;
11079*5113495bSYour Name 	tDot11fIEWMMParams                      WMMParams;
11080*5113495bSYour Name 	tDot11fIEWMMCaps                        WMMCaps;
11081*5113495bSYour Name 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11082*5113495bSYour Name 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11083*5113495bSYour Name 	uint16_t                                num_WMMTSPEC;
11084*5113495bSYour Name 	tDot11fIEWMMTSPEC                       WMMTSPEC[4];
11085*5113495bSYour Name 	tDot11fIEWscAssocRes                    WscAssocRes;
11086*5113495bSYour Name 	tDot11fIEP2PAssocRes                    P2PAssocRes;
11087*5113495bSYour Name 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11088*5113495bSYour Name 	tDot11fIEqcn_ie                         qcn_ie;
11089*5113495bSYour Name 	tDot11fIEMBO_IE                         MBO_IE;
11090*5113495bSYour Name 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11091*5113495bSYour Name } tDot11fAssocResponse;
11092*5113495bSYour Name 
11093*5113495bSYour Name #define DOT11F_ASSOCRESPONSE (4)
11094*5113495bSYour Name 
11095*5113495bSYour Name #ifdef __cplusplus
11096*5113495bSYour Name extern "C" {
11097*5113495bSYour Name #endif /* C++ */
11098*5113495bSYour Name 
11099*5113495bSYour Name uint32_t dot11f_unpack_assoc_response(tpAniSirGlobal pCtx,
11100*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11101*5113495bSYour Name 	tDot11fAssocResponse * pFrm, bool append_ie);
11102*5113495bSYour Name uint32_t dot11f_pack_assoc_response(tpAniSirGlobal pCtx,
11103*5113495bSYour Name 	tDot11fAssocResponse *pFrm, uint8_t *pBuf,
11104*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11105*5113495bSYour Name uint32_t dot11f_get_packed_assoc_response_size(tpAniSirGlobal pCtx,
11106*5113495bSYour Name 	tDot11fAssocResponse *pFrm,
11107*5113495bSYour Name 	uint32_t *pnNeeded);
11108*5113495bSYour Name 
11109*5113495bSYour Name #ifdef __cplusplus
11110*5113495bSYour Name } /* End extern "C". */
11111*5113495bSYour Name #endif /* C++ */
11112*5113495bSYour Name 
11113*5113495bSYour Name typedef struct sDot11fAuthentication{
11114*5113495bSYour Name 	tDot11fFfAuthAlgo                     AuthAlgo;
11115*5113495bSYour Name 	tDot11fFfAuthSeqNo                    AuthSeqNo;
11116*5113495bSYour Name 	tDot11fFfStatus                       Status;
11117*5113495bSYour Name 	tDot11fIEChallengeText                ChallengeText;
11118*5113495bSYour Name 	tDot11fIERSNOpaque                    RSNOpaque;
11119*5113495bSYour Name 	tDot11fIEMobilityDomain               MobilityDomain;
11120*5113495bSYour Name 	tDot11fIEFTInfo                       FTInfo;
11121*5113495bSYour Name 	tDot11fIETimeoutInterval              TimeoutInterval;
11122*5113495bSYour Name 	uint16_t                              num_RICDataDesc;
11123*5113495bSYour Name 	tDot11fIERICDataDesc                  RICDataDesc[2];
11124*5113495bSYour Name 	tDot11fIEfils_nonce                   fils_nonce;
11125*5113495bSYour Name 	tDot11fIEfils_session                 fils_session;
11126*5113495bSYour Name 	tDot11fIEfils_wrapped_data            fils_wrapped_data;
11127*5113495bSYour Name 	tDot11fIEfils_assoc_delay_info        fils_assoc_delay_info;
11128*5113495bSYour Name 	tDot11fIEmlo_ie                       mlo_ie;
11129*5113495bSYour Name } tDot11fAuthentication;
11130*5113495bSYour Name 
11131*5113495bSYour Name #define DOT11F_AUTHENTICATION (5)
11132*5113495bSYour Name 
11133*5113495bSYour Name #ifdef __cplusplus
11134*5113495bSYour Name extern "C" {
11135*5113495bSYour Name #endif /* C++ */
11136*5113495bSYour Name 
11137*5113495bSYour Name uint32_t dot11f_unpack_authentication(tpAniSirGlobal pCtx,
11138*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11139*5113495bSYour Name 	tDot11fAuthentication * pFrm, bool append_ie);
11140*5113495bSYour Name uint32_t dot11f_pack_authentication(tpAniSirGlobal pCtx,
11141*5113495bSYour Name 	tDot11fAuthentication *pFrm, uint8_t *pBuf,
11142*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11143*5113495bSYour Name uint32_t dot11f_get_packed_authentication_size(tpAniSirGlobal pCtx,
11144*5113495bSYour Name 	tDot11fAuthentication *pFrm,
11145*5113495bSYour Name 	uint32_t *pnNeeded);
11146*5113495bSYour Name 
11147*5113495bSYour Name #ifdef __cplusplus
11148*5113495bSYour Name } /* End extern "C". */
11149*5113495bSYour Name #endif /* C++ */
11150*5113495bSYour Name 
11151*5113495bSYour Name typedef struct sDot11fBeacon{
11152*5113495bSYour Name 	tDot11fFfTimeStamp                      TimeStamp;
11153*5113495bSYour Name 	tDot11fFfBeaconInterval                 BeaconInterval;
11154*5113495bSYour Name 	tDot11fFfCapabilities                   Capabilities;
11155*5113495bSYour Name 	tDot11fIESSID                           SSID;
11156*5113495bSYour Name 	tDot11fIESuppRates                      SuppRates;
11157*5113495bSYour Name 	tDot11fIEFHParamSet                     FHParamSet;
11158*5113495bSYour Name 	tDot11fIEDSParams                       DSParams;
11159*5113495bSYour Name 	tDot11fIECFParams                       CFParams;
11160*5113495bSYour Name 	tDot11fIETIM                            TIM;
11161*5113495bSYour Name 	tDot11fIECountry                        Country;
11162*5113495bSYour Name 	tDot11fIEFHParams                       FHParams;
11163*5113495bSYour Name 	tDot11fIEFHPattTable                    FHPattTable;
11164*5113495bSYour Name 	tDot11fIEPowerConstraints               PowerConstraints;
11165*5113495bSYour Name 	tDot11fIEChanSwitchAnn                  ChanSwitchAnn;
11166*5113495bSYour Name 	tDot11fIEQuiet                          Quiet;
11167*5113495bSYour Name 	tDot11fIETPCReport                      TPCReport;
11168*5113495bSYour Name 	tDot11fIEERPInfo                        ERPInfo;
11169*5113495bSYour Name 	tDot11fIEExtSuppRates                   ExtSuppRates;
11170*5113495bSYour Name 	tDot11fIERSN                            RSN;
11171*5113495bSYour Name 	tDot11fIEQBSSLoad                       QBSSLoad;
11172*5113495bSYour Name 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11173*5113495bSYour Name 	tDot11fIEQOSCapsAp                      QOSCapsAp;
11174*5113495bSYour Name 	tDot11fIEAPChannelReport                APChannelReport;
11175*5113495bSYour Name 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11176*5113495bSYour Name 	tDot11fIEMobilityDomain                 MobilityDomain;
11177*5113495bSYour Name 	tDot11fIEext_chan_switch_ann            ext_chan_switch_ann;
11178*5113495bSYour Name 	tDot11fIESuppOperatingClasses           SuppOperatingClasses;
11179*5113495bSYour Name 	tDot11fIEHTCaps                         HTCaps;
11180*5113495bSYour Name 	tDot11fIEHTInfo                         HTInfo;
11181*5113495bSYour Name 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11182*5113495bSYour Name 	tDot11fIEExtCap                         ExtCap;
11183*5113495bSYour Name 	tDot11fIEVHTCaps                        VHTCaps;
11184*5113495bSYour Name 	tDot11fIEVHTOperation                   VHTOperation;
11185*5113495bSYour Name 	uint16_t                                num_transmit_power_env;
11186*5113495bSYour Name 	tDot11fIEtransmit_power_env             transmit_power_env[8];
11187*5113495bSYour Name 	tDot11fIEChannelSwitchWrapper           ChannelSwitchWrapper;
11188*5113495bSYour Name 	tDot11fIEVHTExtBssLoad                  VHTExtBssLoad;
11189*5113495bSYour Name 	tDot11fIEOperatingMode                  OperatingMode;
11190*5113495bSYour Name 	tDot11fIEfils_indication                fils_indication;
11191*5113495bSYour Name 	tDot11fIEmax_chan_switch_time           max_chan_switch_time;
11192*5113495bSYour Name 	tDot11fIEesp_information                esp_information;
11193*5113495bSYour Name 	tDot11fIEhe_cap                         he_cap;
11194*5113495bSYour Name 	tDot11fIEhe_op                          he_op;
11195*5113495bSYour Name 	tDot11fIEspatial_reuse                  spatial_reuse;
11196*5113495bSYour Name 	tDot11fIEbss_color_change               bss_color_change;
11197*5113495bSYour Name 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11198*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11199*5113495bSYour Name 	tDot11fIEsec_chan_offset_ele            sec_chan_offset_ele;
11200*5113495bSYour Name 	tDot11fIEWAPI                           WAPI;
11201*5113495bSYour Name 	tDot11fIEESETxmitPower                  ESETxmitPower;
11202*5113495bSYour Name 	tDot11fIEWiderBWChanSwitchAnn           WiderBWChanSwitchAnn;
11203*5113495bSYour Name 	tDot11fIEeht_cap                        eht_cap;
11204*5113495bSYour Name 	tDot11fIEeht_op                         eht_op;
11205*5113495bSYour Name 	tDot11fIEmlo_ie                         mlo_ie;
11206*5113495bSYour Name 	uint16_t                                num_t2lm_ie;
11207*5113495bSYour Name 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11208*5113495bSYour Name 	tDot11fIEWPA                            WPA;
11209*5113495bSYour Name 	tDot11fIEWMMInfoAp                      WMMInfoAp;
11210*5113495bSYour Name 	tDot11fIEWMMParams                      WMMParams;
11211*5113495bSYour Name 	tDot11fIEWMMCaps                        WMMCaps;
11212*5113495bSYour Name 	tDot11fIEESEVersion                     ESEVersion;
11213*5113495bSYour Name 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11214*5113495bSYour Name 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11215*5113495bSYour Name 	tDot11fIEWscBeacon                      WscBeacon;
11216*5113495bSYour Name 	tDot11fIEP2PBeacon                      P2PBeacon;
11217*5113495bSYour Name 	tDot11fIEVendor1IE                      Vendor1IE;
11218*5113495bSYour Name 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11219*5113495bSYour Name 	tDot11fIEVendor3IE                      Vendor3IE;
11220*5113495bSYour Name 	tDot11fIEhs20vendor_ie                  hs20vendor_ie;
11221*5113495bSYour Name 	tDot11fIEQComVendorIE                   QComVendorIE;
11222*5113495bSYour Name 	tDot11fIEMBO_IE                         MBO_IE;
11223*5113495bSYour Name 	tDot11fIEqcn_ie                         qcn_ie;
11224*5113495bSYour Name 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11225*5113495bSYour Name } tDot11fBeacon;
11226*5113495bSYour Name 
11227*5113495bSYour Name #define DOT11F_BEACON (6)
11228*5113495bSYour Name 
11229*5113495bSYour Name #ifdef __cplusplus
11230*5113495bSYour Name extern "C" {
11231*5113495bSYour Name #endif /* C++ */
11232*5113495bSYour Name 
11233*5113495bSYour Name uint32_t dot11f_unpack_beacon(tpAniSirGlobal pCtx,
11234*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11235*5113495bSYour Name 	tDot11fBeacon * pFrm, bool append_ie);
11236*5113495bSYour Name uint32_t dot11f_pack_beacon(tpAniSirGlobal pCtx,
11237*5113495bSYour Name 	tDot11fBeacon *pFrm, uint8_t *pBuf,
11238*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11239*5113495bSYour Name uint32_t dot11f_get_packed_beacon_size(tpAniSirGlobal pCtx,
11240*5113495bSYour Name 	tDot11fBeacon *pFrm,
11241*5113495bSYour Name 	uint32_t *pnNeeded);
11242*5113495bSYour Name 
11243*5113495bSYour Name #ifdef __cplusplus
11244*5113495bSYour Name } /* End extern "C". */
11245*5113495bSYour Name #endif /* C++ */
11246*5113495bSYour Name 
11247*5113495bSYour Name typedef struct sDot11fBeacon1{
11248*5113495bSYour Name 	tDot11fFfTimeStamp             TimeStamp;
11249*5113495bSYour Name 	tDot11fFfBeaconInterval        BeaconInterval;
11250*5113495bSYour Name 	tDot11fFfCapabilities          Capabilities;
11251*5113495bSYour Name 	tDot11fIESSID                  SSID;
11252*5113495bSYour Name 	tDot11fIESuppRates             SuppRates;
11253*5113495bSYour Name 	tDot11fIEDSParams              DSParams;
11254*5113495bSYour Name } tDot11fBeacon1;
11255*5113495bSYour Name 
11256*5113495bSYour Name #define DOT11F_BEACON1 (7)
11257*5113495bSYour Name 
11258*5113495bSYour Name #ifdef __cplusplus
11259*5113495bSYour Name extern "C" {
11260*5113495bSYour Name #endif /* C++ */
11261*5113495bSYour Name 
11262*5113495bSYour Name uint32_t dot11f_unpack_beacon1(tpAniSirGlobal pCtx,
11263*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11264*5113495bSYour Name 	tDot11fBeacon1 * pFrm, bool append_ie);
11265*5113495bSYour Name uint32_t dot11f_pack_beacon1(tpAniSirGlobal pCtx,
11266*5113495bSYour Name 	tDot11fBeacon1 *pFrm, uint8_t *pBuf,
11267*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11268*5113495bSYour Name uint32_t dot11f_get_packed_beacon1_size(tpAniSirGlobal pCtx,
11269*5113495bSYour Name 	tDot11fBeacon1 *pFrm,
11270*5113495bSYour Name 	uint32_t *pnNeeded);
11271*5113495bSYour Name 
11272*5113495bSYour Name #ifdef __cplusplus
11273*5113495bSYour Name } /* End extern "C". */
11274*5113495bSYour Name #endif /* C++ */
11275*5113495bSYour Name 
11276*5113495bSYour Name typedef struct sDot11fBeacon2{
11277*5113495bSYour Name 	tDot11fIECountry                        Country;
11278*5113495bSYour Name 	tDot11fIEPowerConstraints               PowerConstraints;
11279*5113495bSYour Name 	tDot11fIEChanSwitchAnn                  ChanSwitchAnn;
11280*5113495bSYour Name 	tDot11fIEQuiet                          Quiet;
11281*5113495bSYour Name 	tDot11fIETPCReport                      TPCReport;
11282*5113495bSYour Name 	tDot11fIEERPInfo                        ERPInfo;
11283*5113495bSYour Name 	tDot11fIEExtSuppRates                   ExtSuppRates;
11284*5113495bSYour Name 	tDot11fIERSNOpaque                      RSNOpaque;
11285*5113495bSYour Name 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11286*5113495bSYour Name 	tDot11fIEAPChannelReport                APChannelReport;
11287*5113495bSYour Name 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11288*5113495bSYour Name 	tDot11fIEMobilityDomain                 MobilityDomain;
11289*5113495bSYour Name 	tDot11fIEext_chan_switch_ann            ext_chan_switch_ann;
11290*5113495bSYour Name 	tDot11fIESuppOperatingClasses           SuppOperatingClasses;
11291*5113495bSYour Name 	tDot11fIEHTCaps                         HTCaps;
11292*5113495bSYour Name 	tDot11fIEHTInfo                         HTInfo;
11293*5113495bSYour Name 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11294*5113495bSYour Name 	tDot11fIEExtCap                         ExtCap;
11295*5113495bSYour Name 	tDot11fIEVHTCaps                        VHTCaps;
11296*5113495bSYour Name 	tDot11fIEVHTOperation                   VHTOperation;
11297*5113495bSYour Name 	uint16_t                                num_transmit_power_env;
11298*5113495bSYour Name 	tDot11fIEtransmit_power_env             transmit_power_env[8];
11299*5113495bSYour Name 	tDot11fIEChannelSwitchWrapper           ChannelSwitchWrapper;
11300*5113495bSYour Name 	tDot11fIEVHTExtBssLoad                  VHTExtBssLoad;
11301*5113495bSYour Name 	tDot11fIEOperatingMode                  OperatingMode;
11302*5113495bSYour Name 	tDot11fIEfils_indication                fils_indication;
11303*5113495bSYour Name 	tDot11fIEmax_chan_switch_time           max_chan_switch_time;
11304*5113495bSYour Name 	tDot11fIEesp_information                esp_information;
11305*5113495bSYour Name 	tDot11fIEhe_cap                         he_cap;
11306*5113495bSYour Name 	tDot11fIEhe_op                          he_op;
11307*5113495bSYour Name 	tDot11fIEspatial_reuse                  spatial_reuse;
11308*5113495bSYour Name 	tDot11fIEbss_color_change               bss_color_change;
11309*5113495bSYour Name 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11310*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11311*5113495bSYour Name 	tDot11fIEsec_chan_offset_ele            sec_chan_offset_ele;
11312*5113495bSYour Name 	tDot11fIEWAPI                           WAPI;
11313*5113495bSYour Name 	tDot11fIEESETxmitPower                  ESETxmitPower;
11314*5113495bSYour Name 	tDot11fIEWiderBWChanSwitchAnn           WiderBWChanSwitchAnn;
11315*5113495bSYour Name 	tDot11fIEeht_cap                        eht_cap;
11316*5113495bSYour Name 	tDot11fIEeht_op                         eht_op;
11317*5113495bSYour Name 	tDot11fIEmlo_ie                         mlo_ie;
11318*5113495bSYour Name 	uint16_t                                num_t2lm_ie;
11319*5113495bSYour Name 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11320*5113495bSYour Name 	tDot11fIEWPA                            WPA;
11321*5113495bSYour Name 	tDot11fIEWMMInfoAp                      WMMInfoAp;
11322*5113495bSYour Name 	tDot11fIEWMMParams                      WMMParams;
11323*5113495bSYour Name 	tDot11fIEWMMCaps                        WMMCaps;
11324*5113495bSYour Name 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11325*5113495bSYour Name 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11326*5113495bSYour Name 	tDot11fIEWscBeacon                      WscBeacon;
11327*5113495bSYour Name 	tDot11fIEP2PBeacon                      P2PBeacon;
11328*5113495bSYour Name 	tDot11fIEVendor1IE                      Vendor1IE;
11329*5113495bSYour Name 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11330*5113495bSYour Name 	tDot11fIEVendor3IE                      Vendor3IE;
11331*5113495bSYour Name 	tDot11fIEhs20vendor_ie                  hs20vendor_ie;
11332*5113495bSYour Name 	tDot11fIEQComVendorIE                   QComVendorIE;
11333*5113495bSYour Name 	tDot11fIEESEVersion                     ESEVersion;
11334*5113495bSYour Name 	tDot11fIEqcn_ie                         qcn_ie;
11335*5113495bSYour Name 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11336*5113495bSYour Name } tDot11fBeacon2;
11337*5113495bSYour Name 
11338*5113495bSYour Name #define DOT11F_BEACON2 (8)
11339*5113495bSYour Name 
11340*5113495bSYour Name #ifdef __cplusplus
11341*5113495bSYour Name extern "C" {
11342*5113495bSYour Name #endif /* C++ */
11343*5113495bSYour Name 
11344*5113495bSYour Name uint32_t dot11f_unpack_beacon2(tpAniSirGlobal pCtx,
11345*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11346*5113495bSYour Name 	tDot11fBeacon2 * pFrm, bool append_ie);
11347*5113495bSYour Name uint32_t dot11f_pack_beacon2(tpAniSirGlobal pCtx,
11348*5113495bSYour Name 	tDot11fBeacon2 *pFrm, uint8_t *pBuf,
11349*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11350*5113495bSYour Name uint32_t dot11f_get_packed_beacon2_size(tpAniSirGlobal pCtx,
11351*5113495bSYour Name 	tDot11fBeacon2 *pFrm,
11352*5113495bSYour Name 	uint32_t *pnNeeded);
11353*5113495bSYour Name 
11354*5113495bSYour Name #ifdef __cplusplus
11355*5113495bSYour Name } /* End extern "C". */
11356*5113495bSYour Name #endif /* C++ */
11357*5113495bSYour Name 
11358*5113495bSYour Name typedef struct sDot11fBeaconIEs{
11359*5113495bSYour Name 	tDot11fIESSID                           SSID;
11360*5113495bSYour Name 	tDot11fIESuppRates                      SuppRates;
11361*5113495bSYour Name 	tDot11fIEFHParamSet                     FHParamSet;
11362*5113495bSYour Name 	tDot11fIEDSParams                       DSParams;
11363*5113495bSYour Name 	tDot11fIECFParams                       CFParams;
11364*5113495bSYour Name 	tDot11fIETIM                            TIM;
11365*5113495bSYour Name 	tDot11fIECountry                        Country;
11366*5113495bSYour Name 	tDot11fIEFHParams                       FHParams;
11367*5113495bSYour Name 	tDot11fIEFHPattTable                    FHPattTable;
11368*5113495bSYour Name 	tDot11fIEPowerConstraints               PowerConstraints;
11369*5113495bSYour Name 	tDot11fIEChanSwitchAnn                  ChanSwitchAnn;
11370*5113495bSYour Name 	tDot11fIEQuiet                          Quiet;
11371*5113495bSYour Name 	tDot11fIETPCReport                      TPCReport;
11372*5113495bSYour Name 	tDot11fIEERPInfo                        ERPInfo;
11373*5113495bSYour Name 	tDot11fIEExtSuppRates                   ExtSuppRates;
11374*5113495bSYour Name 	tDot11fIERSN                            RSN;
11375*5113495bSYour Name 	tDot11fIEQBSSLoad                       QBSSLoad;
11376*5113495bSYour Name 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11377*5113495bSYour Name 	tDot11fIEQOSCapsAp                      QOSCapsAp;
11378*5113495bSYour Name 	tDot11fIEAPChannelReport                APChannelReport;
11379*5113495bSYour Name 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11380*5113495bSYour Name 	tDot11fIEMobilityDomain                 MobilityDomain;
11381*5113495bSYour Name 	tDot11fIEext_chan_switch_ann            ext_chan_switch_ann;
11382*5113495bSYour Name 	tDot11fIESuppOperatingClasses           SuppOperatingClasses;
11383*5113495bSYour Name 	tDot11fIEHTCaps                         HTCaps;
11384*5113495bSYour Name 	tDot11fIEHTInfo                         HTInfo;
11385*5113495bSYour Name 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11386*5113495bSYour Name 	tDot11fIEExtCap                         ExtCap;
11387*5113495bSYour Name 	tDot11fIEVHTCaps                        VHTCaps;
11388*5113495bSYour Name 	tDot11fIEVHTOperation                   VHTOperation;
11389*5113495bSYour Name 	uint16_t                                num_transmit_power_env;
11390*5113495bSYour Name 	tDot11fIEtransmit_power_env             transmit_power_env[8];
11391*5113495bSYour Name 	tDot11fIEChannelSwitchWrapper           ChannelSwitchWrapper;
11392*5113495bSYour Name 	tDot11fIEVHTExtBssLoad                  VHTExtBssLoad;
11393*5113495bSYour Name 	tDot11fIEOperatingMode                  OperatingMode;
11394*5113495bSYour Name 	tDot11fIEfils_indication                fils_indication;
11395*5113495bSYour Name 	tDot11fIEmax_chan_switch_time           max_chan_switch_time;
11396*5113495bSYour Name 	tDot11fIEesp_information                esp_information;
11397*5113495bSYour Name 	tDot11fIEhe_cap                         he_cap;
11398*5113495bSYour Name 	tDot11fIEhe_op                          he_op;
11399*5113495bSYour Name 	tDot11fIEspatial_reuse                  spatial_reuse;
11400*5113495bSYour Name 	tDot11fIEbss_color_change               bss_color_change;
11401*5113495bSYour Name 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11402*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11403*5113495bSYour Name 	tDot11fIEsec_chan_offset_ele            sec_chan_offset_ele;
11404*5113495bSYour Name 	tDot11fIEWAPI                           WAPI;
11405*5113495bSYour Name 	tDot11fIEESETxmitPower                  ESETxmitPower;
11406*5113495bSYour Name 	tDot11fIEWiderBWChanSwitchAnn           WiderBWChanSwitchAnn;
11407*5113495bSYour Name 	tDot11fIEeht_cap                        eht_cap;
11408*5113495bSYour Name 	tDot11fIEeht_op                         eht_op;
11409*5113495bSYour Name 	tDot11fIEmlo_ie                         mlo_ie;
11410*5113495bSYour Name 	uint16_t                                num_t2lm_ie;
11411*5113495bSYour Name 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11412*5113495bSYour Name 	tDot11fIEWPA                            WPA;
11413*5113495bSYour Name 	tDot11fIEWMMInfoAp                      WMMInfoAp;
11414*5113495bSYour Name 	tDot11fIEWMMParams                      WMMParams;
11415*5113495bSYour Name 	tDot11fIEWMMCaps                        WMMCaps;
11416*5113495bSYour Name 	tDot11fIEESEVersion                     ESEVersion;
11417*5113495bSYour Name 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11418*5113495bSYour Name 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11419*5113495bSYour Name 	tDot11fIEWscBeaconProbeRes              WscBeaconProbeRes;
11420*5113495bSYour Name 	tDot11fIEP2PBeaconProbeRes              P2PBeaconProbeRes;
11421*5113495bSYour Name 	tDot11fIEVendor1IE                      Vendor1IE;
11422*5113495bSYour Name 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11423*5113495bSYour Name 	tDot11fIEVendor3IE                      Vendor3IE;
11424*5113495bSYour Name 	tDot11fIEhs20vendor_ie                  hs20vendor_ie;
11425*5113495bSYour Name 	tDot11fIEQComVendorIE                   QComVendorIE;
11426*5113495bSYour Name 	tDot11fIEMBO_IE                         MBO_IE;
11427*5113495bSYour Name 	tDot11fIEqcn_ie                         qcn_ie;
11428*5113495bSYour Name 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11429*5113495bSYour Name } tDot11fBeaconIEs;
11430*5113495bSYour Name 
11431*5113495bSYour Name #define DOT11F_BEACONIES (9)
11432*5113495bSYour Name 
11433*5113495bSYour Name #ifdef __cplusplus
11434*5113495bSYour Name extern "C" {
11435*5113495bSYour Name #endif /* C++ */
11436*5113495bSYour Name 
11437*5113495bSYour Name uint32_t dot11f_unpack_beacon_i_es(tpAniSirGlobal pCtx,
11438*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11439*5113495bSYour Name 	tDot11fBeaconIEs * pFrm, bool append_ie);
11440*5113495bSYour Name uint32_t dot11f_pack_beacon_i_es(tpAniSirGlobal pCtx,
11441*5113495bSYour Name 	tDot11fBeaconIEs *pFrm, uint8_t *pBuf,
11442*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11443*5113495bSYour Name uint32_t dot11f_get_packed_beacon_i_es_size(tpAniSirGlobal pCtx,
11444*5113495bSYour Name 	tDot11fBeaconIEs *pFrm,
11445*5113495bSYour Name 	uint32_t *pnNeeded);
11446*5113495bSYour Name 
11447*5113495bSYour Name #ifdef __cplusplus
11448*5113495bSYour Name } /* End extern "C". */
11449*5113495bSYour Name #endif /* C++ */
11450*5113495bSYour Name 
11451*5113495bSYour Name typedef struct sDot11fChannelSwitch{
11452*5113495bSYour Name 	tDot11fFfCategory                    Category;
11453*5113495bSYour Name 	tDot11fFfAction                      Action;
11454*5113495bSYour Name 	tDot11fIEChanSwitchAnn               ChanSwitchAnn;
11455*5113495bSYour Name 	tDot11fIEsec_chan_offset_ele         sec_chan_offset_ele;
11456*5113495bSYour Name 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
11457*5113495bSYour Name } tDot11fChannelSwitch;
11458*5113495bSYour Name 
11459*5113495bSYour Name #define DOT11F_CHANNELSWITCH (10)
11460*5113495bSYour Name 
11461*5113495bSYour Name #ifdef __cplusplus
11462*5113495bSYour Name extern "C" {
11463*5113495bSYour Name #endif /* C++ */
11464*5113495bSYour Name 
11465*5113495bSYour Name uint32_t dot11f_unpack_channel_switch(tpAniSirGlobal pCtx,
11466*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11467*5113495bSYour Name 	tDot11fChannelSwitch * pFrm, bool append_ie);
11468*5113495bSYour Name uint32_t dot11f_pack_channel_switch(tpAniSirGlobal pCtx,
11469*5113495bSYour Name 	tDot11fChannelSwitch *pFrm, uint8_t *pBuf,
11470*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11471*5113495bSYour Name uint32_t dot11f_get_packed_channel_switch_size(tpAniSirGlobal pCtx,
11472*5113495bSYour Name 	tDot11fChannelSwitch *pFrm,
11473*5113495bSYour Name 	uint32_t *pnNeeded);
11474*5113495bSYour Name 
11475*5113495bSYour Name #ifdef __cplusplus
11476*5113495bSYour Name } /* End extern "C". */
11477*5113495bSYour Name #endif /* C++ */
11478*5113495bSYour Name 
11479*5113495bSYour Name typedef struct sDot11fDeAuth{
11480*5113495bSYour Name 	tDot11fFfReason           Reason;
11481*5113495bSYour Name 	tDot11fIEP2PDeAuth        P2PDeAuth;
11482*5113495bSYour Name } tDot11fDeAuth;
11483*5113495bSYour Name 
11484*5113495bSYour Name #define DOT11F_DEAUTH (11)
11485*5113495bSYour Name 
11486*5113495bSYour Name #ifdef __cplusplus
11487*5113495bSYour Name extern "C" {
11488*5113495bSYour Name #endif /* C++ */
11489*5113495bSYour Name 
11490*5113495bSYour Name uint32_t dot11f_unpack_de_auth(tpAniSirGlobal pCtx,
11491*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11492*5113495bSYour Name 	tDot11fDeAuth * pFrm, bool append_ie);
11493*5113495bSYour Name uint32_t dot11f_pack_de_auth(tpAniSirGlobal pCtx,
11494*5113495bSYour Name 	tDot11fDeAuth *pFrm, uint8_t *pBuf,
11495*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11496*5113495bSYour Name uint32_t dot11f_get_packed_de_auth_size(tpAniSirGlobal pCtx,
11497*5113495bSYour Name 	tDot11fDeAuth *pFrm,
11498*5113495bSYour Name 	uint32_t *pnNeeded);
11499*5113495bSYour Name 
11500*5113495bSYour Name #ifdef __cplusplus
11501*5113495bSYour Name } /* End extern "C". */
11502*5113495bSYour Name #endif /* C++ */
11503*5113495bSYour Name 
11504*5113495bSYour Name typedef struct sDot11fDelTS{
11505*5113495bSYour Name 	tDot11fFfCategory        Category;
11506*5113495bSYour Name 	tDot11fFfAction          Action;
11507*5113495bSYour Name 	tDot11fFfTSInfo          TSInfo;
11508*5113495bSYour Name 	tDot11fFfReason          Reason;
11509*5113495bSYour Name } tDot11fDelTS;
11510*5113495bSYour Name 
11511*5113495bSYour Name #define DOT11F_DELTS (12)
11512*5113495bSYour Name 
11513*5113495bSYour Name #ifdef __cplusplus
11514*5113495bSYour Name extern "C" {
11515*5113495bSYour Name #endif /* C++ */
11516*5113495bSYour Name 
11517*5113495bSYour Name uint32_t dot11f_unpack_del_ts(tpAniSirGlobal pCtx,
11518*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11519*5113495bSYour Name 	tDot11fDelTS * pFrm, bool append_ie);
11520*5113495bSYour Name uint32_t dot11f_pack_del_ts(tpAniSirGlobal pCtx,
11521*5113495bSYour Name 	tDot11fDelTS *pFrm, uint8_t *pBuf,
11522*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11523*5113495bSYour Name uint32_t dot11f_get_packed_del_ts_size(tpAniSirGlobal pCtx,
11524*5113495bSYour Name 	tDot11fDelTS *pFrm,
11525*5113495bSYour Name 	uint32_t *pnNeeded);
11526*5113495bSYour Name 
11527*5113495bSYour Name #ifdef __cplusplus
11528*5113495bSYour Name } /* End extern "C". */
11529*5113495bSYour Name #endif /* C++ */
11530*5113495bSYour Name 
11531*5113495bSYour Name typedef struct sDot11fDisassociation{
11532*5113495bSYour Name 	tDot11fFfReason             Reason;
11533*5113495bSYour Name 	tDot11fIEP2PDisAssoc        P2PDisAssoc;
11534*5113495bSYour Name } tDot11fDisassociation;
11535*5113495bSYour Name 
11536*5113495bSYour Name #define DOT11F_DISASSOCIATION (13)
11537*5113495bSYour Name 
11538*5113495bSYour Name #ifdef __cplusplus
11539*5113495bSYour Name extern "C" {
11540*5113495bSYour Name #endif /* C++ */
11541*5113495bSYour Name 
11542*5113495bSYour Name uint32_t dot11f_unpack_disassociation(tpAniSirGlobal pCtx,
11543*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11544*5113495bSYour Name 	tDot11fDisassociation * pFrm, bool append_ie);
11545*5113495bSYour Name uint32_t dot11f_pack_disassociation(tpAniSirGlobal pCtx,
11546*5113495bSYour Name 	tDot11fDisassociation *pFrm, uint8_t *pBuf,
11547*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11548*5113495bSYour Name uint32_t dot11f_get_packed_disassociation_size(tpAniSirGlobal pCtx,
11549*5113495bSYour Name 	tDot11fDisassociation *pFrm,
11550*5113495bSYour Name 	uint32_t *pnNeeded);
11551*5113495bSYour Name 
11552*5113495bSYour Name #ifdef __cplusplus
11553*5113495bSYour Name } /* End extern "C". */
11554*5113495bSYour Name #endif /* C++ */
11555*5113495bSYour Name 
11556*5113495bSYour Name typedef struct sDot11fLinkMeasurementReport{
11557*5113495bSYour Name 	tDot11fFfCategory           Category;
11558*5113495bSYour Name 	tDot11fFfAction             Action;
11559*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
11560*5113495bSYour Name 	tDot11fFfTPCEleID           TPCEleID;
11561*5113495bSYour Name 	tDot11fFfTPCEleLen          TPCEleLen;
11562*5113495bSYour Name 	tDot11fFfTxPower            TxPower;
11563*5113495bSYour Name 	tDot11fFfLinkMargin         LinkMargin;
11564*5113495bSYour Name 	tDot11fFfRxAntennaId        RxAntennaId;
11565*5113495bSYour Name 	tDot11fFfTxAntennaId        TxAntennaId;
11566*5113495bSYour Name 	tDot11fFfRCPI               RCPI;
11567*5113495bSYour Name 	tDot11fFfRSNI               RSNI;
11568*5113495bSYour Name } tDot11fLinkMeasurementReport;
11569*5113495bSYour Name 
11570*5113495bSYour Name #define DOT11F_LINKMEASUREMENTREPORT (14)
11571*5113495bSYour Name 
11572*5113495bSYour Name #ifdef __cplusplus
11573*5113495bSYour Name extern "C" {
11574*5113495bSYour Name #endif /* C++ */
11575*5113495bSYour Name 
11576*5113495bSYour Name uint32_t dot11f_unpack_link_measurement_report(tpAniSirGlobal pCtx,
11577*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11578*5113495bSYour Name 	tDot11fLinkMeasurementReport * pFrm, bool append_ie);
11579*5113495bSYour Name uint32_t dot11f_pack_link_measurement_report(tpAniSirGlobal pCtx,
11580*5113495bSYour Name 	tDot11fLinkMeasurementReport *pFrm, uint8_t *pBuf,
11581*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11582*5113495bSYour Name uint32_t dot11f_get_packed_link_measurement_report_size(tpAniSirGlobal pCtx,
11583*5113495bSYour Name 	tDot11fLinkMeasurementReport *pFrm,
11584*5113495bSYour Name 	uint32_t *pnNeeded);
11585*5113495bSYour Name 
11586*5113495bSYour Name #ifdef __cplusplus
11587*5113495bSYour Name } /* End extern "C". */
11588*5113495bSYour Name #endif /* C++ */
11589*5113495bSYour Name 
11590*5113495bSYour Name typedef struct sDot11fLinkMeasurementRequest{
11591*5113495bSYour Name 	tDot11fFfCategory           Category;
11592*5113495bSYour Name 	tDot11fFfAction             Action;
11593*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
11594*5113495bSYour Name 	tDot11fFfTxPower            TxPower;
11595*5113495bSYour Name 	tDot11fFfMaxTxPower         MaxTxPower;
11596*5113495bSYour Name } tDot11fLinkMeasurementRequest;
11597*5113495bSYour Name 
11598*5113495bSYour Name #define DOT11F_LINKMEASUREMENTREQUEST (15)
11599*5113495bSYour Name 
11600*5113495bSYour Name #ifdef __cplusplus
11601*5113495bSYour Name extern "C" {
11602*5113495bSYour Name #endif /* C++ */
11603*5113495bSYour Name 
11604*5113495bSYour Name uint32_t dot11f_unpack_link_measurement_request(tpAniSirGlobal pCtx,
11605*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11606*5113495bSYour Name 	tDot11fLinkMeasurementRequest * pFrm, bool append_ie);
11607*5113495bSYour Name uint32_t dot11f_pack_link_measurement_request(tpAniSirGlobal pCtx,
11608*5113495bSYour Name 	tDot11fLinkMeasurementRequest *pFrm, uint8_t *pBuf,
11609*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11610*5113495bSYour Name uint32_t dot11f_get_packed_link_measurement_request_size(tpAniSirGlobal pCtx,
11611*5113495bSYour Name 	tDot11fLinkMeasurementRequest *pFrm,
11612*5113495bSYour Name 	uint32_t *pnNeeded);
11613*5113495bSYour Name 
11614*5113495bSYour Name #ifdef __cplusplus
11615*5113495bSYour Name } /* End extern "C". */
11616*5113495bSYour Name #endif /* C++ */
11617*5113495bSYour Name 
11618*5113495bSYour Name typedef struct sDot11fMeasurementReport{
11619*5113495bSYour Name 	tDot11fFfCategory                 Category;
11620*5113495bSYour Name 	tDot11fFfAction                   Action;
11621*5113495bSYour Name 	tDot11fFfDialogToken              DialogToken;
11622*5113495bSYour Name 	tDot11fIEMeasurementReport        MeasurementReport;
11623*5113495bSYour Name } tDot11fMeasurementReport;
11624*5113495bSYour Name 
11625*5113495bSYour Name #define DOT11F_MEASUREMENTREPORT (16)
11626*5113495bSYour Name 
11627*5113495bSYour Name #ifdef __cplusplus
11628*5113495bSYour Name extern "C" {
11629*5113495bSYour Name #endif /* C++ */
11630*5113495bSYour Name 
11631*5113495bSYour Name uint32_t dot11f_unpack_measurement_report(tpAniSirGlobal pCtx,
11632*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11633*5113495bSYour Name 	tDot11fMeasurementReport * pFrm, bool append_ie);
11634*5113495bSYour Name uint32_t dot11f_pack_measurement_report(tpAniSirGlobal pCtx,
11635*5113495bSYour Name 	tDot11fMeasurementReport *pFrm, uint8_t *pBuf,
11636*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11637*5113495bSYour Name uint32_t dot11f_get_packed_measurement_report_size(tpAniSirGlobal pCtx,
11638*5113495bSYour Name 	tDot11fMeasurementReport *pFrm,
11639*5113495bSYour Name 	uint32_t *pnNeeded);
11640*5113495bSYour Name 
11641*5113495bSYour Name #ifdef __cplusplus
11642*5113495bSYour Name } /* End extern "C". */
11643*5113495bSYour Name #endif /* C++ */
11644*5113495bSYour Name 
11645*5113495bSYour Name typedef struct sDot11fMeasurementRequest{
11646*5113495bSYour Name 	tDot11fFfCategory                  Category;
11647*5113495bSYour Name 	tDot11fFfAction                    Action;
11648*5113495bSYour Name 	tDot11fFfDialogToken               DialogToken;
11649*5113495bSYour Name 	uint16_t                           num_MeasurementRequest;
11650*5113495bSYour Name 	tDot11fIEMeasurementRequest        MeasurementRequest[4];
11651*5113495bSYour Name } tDot11fMeasurementRequest;
11652*5113495bSYour Name 
11653*5113495bSYour Name #define DOT11F_MEASUREMENTREQUEST (17)
11654*5113495bSYour Name 
11655*5113495bSYour Name #ifdef __cplusplus
11656*5113495bSYour Name extern "C" {
11657*5113495bSYour Name #endif /* C++ */
11658*5113495bSYour Name 
11659*5113495bSYour Name uint32_t dot11f_unpack_measurement_request(tpAniSirGlobal pCtx,
11660*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11661*5113495bSYour Name 	tDot11fMeasurementRequest * pFrm, bool append_ie);
11662*5113495bSYour Name uint32_t dot11f_pack_measurement_request(tpAniSirGlobal pCtx,
11663*5113495bSYour Name 	tDot11fMeasurementRequest *pFrm, uint8_t *pBuf,
11664*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11665*5113495bSYour Name uint32_t dot11f_get_packed_measurement_request_size(tpAniSirGlobal pCtx,
11666*5113495bSYour Name 	tDot11fMeasurementRequest *pFrm,
11667*5113495bSYour Name 	uint32_t *pnNeeded);
11668*5113495bSYour Name 
11669*5113495bSYour Name #ifdef __cplusplus
11670*5113495bSYour Name } /* End extern "C". */
11671*5113495bSYour Name #endif /* C++ */
11672*5113495bSYour Name 
11673*5113495bSYour Name typedef struct sDot11fNeighborReportRequest{
11674*5113495bSYour Name 	tDot11fFfCategory           Category;
11675*5113495bSYour Name 	tDot11fFfAction             Action;
11676*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
11677*5113495bSYour Name 	tDot11fIESSID               SSID;
11678*5113495bSYour Name } tDot11fNeighborReportRequest;
11679*5113495bSYour Name 
11680*5113495bSYour Name #define DOT11F_NEIGHBORREPORTREQUEST (18)
11681*5113495bSYour Name 
11682*5113495bSYour Name #ifdef __cplusplus
11683*5113495bSYour Name extern "C" {
11684*5113495bSYour Name #endif /* C++ */
11685*5113495bSYour Name 
11686*5113495bSYour Name uint32_t dot11f_unpack_neighbor_report_request(tpAniSirGlobal pCtx,
11687*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11688*5113495bSYour Name 	tDot11fNeighborReportRequest * pFrm, bool append_ie);
11689*5113495bSYour Name uint32_t dot11f_pack_neighbor_report_request(tpAniSirGlobal pCtx,
11690*5113495bSYour Name 	tDot11fNeighborReportRequest *pFrm, uint8_t *pBuf,
11691*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11692*5113495bSYour Name uint32_t dot11f_get_packed_neighbor_report_request_size(tpAniSirGlobal pCtx,
11693*5113495bSYour Name 	tDot11fNeighborReportRequest *pFrm,
11694*5113495bSYour Name 	uint32_t *pnNeeded);
11695*5113495bSYour Name 
11696*5113495bSYour Name #ifdef __cplusplus
11697*5113495bSYour Name } /* End extern "C". */
11698*5113495bSYour Name #endif /* C++ */
11699*5113495bSYour Name 
11700*5113495bSYour Name typedef struct sDot11fNeighborReportResponse{
11701*5113495bSYour Name 	tDot11fFfCategory              Category;
11702*5113495bSYour Name 	tDot11fFfAction                Action;
11703*5113495bSYour Name 	tDot11fFfDialogToken           DialogToken;
11704*5113495bSYour Name 	uint16_t                       num_NeighborReport;
11705*5113495bSYour Name 	tDot11fIENeighborReport        NeighborReport[15];
11706*5113495bSYour Name } tDot11fNeighborReportResponse;
11707*5113495bSYour Name 
11708*5113495bSYour Name #define DOT11F_NEIGHBORREPORTRESPONSE (19)
11709*5113495bSYour Name 
11710*5113495bSYour Name #ifdef __cplusplus
11711*5113495bSYour Name extern "C" {
11712*5113495bSYour Name #endif /* C++ */
11713*5113495bSYour Name 
11714*5113495bSYour Name uint32_t dot11f_unpack_neighbor_report_response(tpAniSirGlobal pCtx,
11715*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11716*5113495bSYour Name 	tDot11fNeighborReportResponse * pFrm, bool append_ie);
11717*5113495bSYour Name uint32_t dot11f_pack_neighbor_report_response(tpAniSirGlobal pCtx,
11718*5113495bSYour Name 	tDot11fNeighborReportResponse *pFrm, uint8_t *pBuf,
11719*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11720*5113495bSYour Name uint32_t dot11f_get_packed_neighbor_report_response_size(tpAniSirGlobal pCtx,
11721*5113495bSYour Name 	tDot11fNeighborReportResponse *pFrm,
11722*5113495bSYour Name 	uint32_t *pnNeeded);
11723*5113495bSYour Name 
11724*5113495bSYour Name #ifdef __cplusplus
11725*5113495bSYour Name } /* End extern "C". */
11726*5113495bSYour Name #endif /* C++ */
11727*5113495bSYour Name 
11728*5113495bSYour Name typedef struct sDot11fOperatingMode{
11729*5113495bSYour Name 	tDot11fFfCategory             Category;
11730*5113495bSYour Name 	tDot11fFfAction               Action;
11731*5113495bSYour Name 	tDot11fFfOperatingMode        OperatingMode;
11732*5113495bSYour Name } tDot11fOperatingMode;
11733*5113495bSYour Name 
11734*5113495bSYour Name #define DOT11F_OPERATINGMODE (20)
11735*5113495bSYour Name 
11736*5113495bSYour Name #ifdef __cplusplus
11737*5113495bSYour Name extern "C" {
11738*5113495bSYour Name #endif /* C++ */
11739*5113495bSYour Name 
11740*5113495bSYour Name uint32_t dot11f_unpack_operating_mode(tpAniSirGlobal pCtx,
11741*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11742*5113495bSYour Name 	tDot11fOperatingMode * pFrm, bool append_ie);
11743*5113495bSYour Name uint32_t dot11f_pack_operating_mode(tpAniSirGlobal pCtx,
11744*5113495bSYour Name 	tDot11fOperatingMode *pFrm, uint8_t *pBuf,
11745*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11746*5113495bSYour Name uint32_t dot11f_get_packed_operating_mode_size(tpAniSirGlobal pCtx,
11747*5113495bSYour Name 	tDot11fOperatingMode *pFrm,
11748*5113495bSYour Name 	uint32_t *pnNeeded);
11749*5113495bSYour Name 
11750*5113495bSYour Name #ifdef __cplusplus
11751*5113495bSYour Name } /* End extern "C". */
11752*5113495bSYour Name #endif /* C++ */
11753*5113495bSYour Name 
11754*5113495bSYour Name typedef struct sDot11fProbeRequest{
11755*5113495bSYour Name 	tDot11fIESSID                    SSID;
11756*5113495bSYour Name 	tDot11fIESuppRates               SuppRates;
11757*5113495bSYour Name 	tDot11fIERequestedInfo           RequestedInfo;
11758*5113495bSYour Name 	tDot11fIEExtSuppRates            ExtSuppRates;
11759*5113495bSYour Name 	tDot11fIEDSParams                DSParams;
11760*5113495bSYour Name 	tDot11fIEHTCaps                  HTCaps;
11761*5113495bSYour Name 	tDot11fIEExtCap                  ExtCap;
11762*5113495bSYour Name 	tDot11fIEVHTCaps                 VHTCaps;
11763*5113495bSYour Name 	tDot11fIEhe_cap                  he_cap;
11764*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap        he_6ghz_band_cap;
11765*5113495bSYour Name 	tDot11fIEeht_cap                 eht_cap;
11766*5113495bSYour Name 	tDot11fIEmlo_ie                  mlo_ie;
11767*5113495bSYour Name 	tDot11fIEWscProbeReq             WscProbeReq;
11768*5113495bSYour Name 	tDot11fIEWFATPC                  WFATPC;
11769*5113495bSYour Name 	tDot11fIEP2PProbeReq             P2PProbeReq;
11770*5113495bSYour Name 	tDot11fIEqcn_ie                  qcn_ie;
11771*5113495bSYour Name } tDot11fProbeRequest;
11772*5113495bSYour Name 
11773*5113495bSYour Name #define DOT11F_PROBEREQUEST (21)
11774*5113495bSYour Name 
11775*5113495bSYour Name #ifdef __cplusplus
11776*5113495bSYour Name extern "C" {
11777*5113495bSYour Name #endif /* C++ */
11778*5113495bSYour Name 
11779*5113495bSYour Name uint32_t dot11f_unpack_probe_request(tpAniSirGlobal pCtx,
11780*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11781*5113495bSYour Name 	tDot11fProbeRequest * pFrm, bool append_ie);
11782*5113495bSYour Name uint32_t dot11f_pack_probe_request(tpAniSirGlobal pCtx,
11783*5113495bSYour Name 	tDot11fProbeRequest *pFrm, uint8_t *pBuf,
11784*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11785*5113495bSYour Name uint32_t dot11f_get_packed_probe_request_size(tpAniSirGlobal pCtx,
11786*5113495bSYour Name 	tDot11fProbeRequest *pFrm,
11787*5113495bSYour Name 	uint32_t *pnNeeded);
11788*5113495bSYour Name 
11789*5113495bSYour Name #ifdef __cplusplus
11790*5113495bSYour Name } /* End extern "C". */
11791*5113495bSYour Name #endif /* C++ */
11792*5113495bSYour Name 
11793*5113495bSYour Name typedef struct sDot11fProbeResponse{
11794*5113495bSYour Name 	tDot11fFfTimeStamp                      TimeStamp;
11795*5113495bSYour Name 	tDot11fFfBeaconInterval                 BeaconInterval;
11796*5113495bSYour Name 	tDot11fFfCapabilities                   Capabilities;
11797*5113495bSYour Name 	tDot11fIESSID                           SSID;
11798*5113495bSYour Name 	tDot11fIESuppRates                      SuppRates;
11799*5113495bSYour Name 	tDot11fIEFHParamSet                     FHParamSet;
11800*5113495bSYour Name 	tDot11fIEDSParams                       DSParams;
11801*5113495bSYour Name 	tDot11fIECFParams                       CFParams;
11802*5113495bSYour Name 	tDot11fIECountry                        Country;
11803*5113495bSYour Name 	tDot11fIEFHParams                       FHParams;
11804*5113495bSYour Name 	tDot11fIEFHPattTable                    FHPattTable;
11805*5113495bSYour Name 	tDot11fIEPowerConstraints               PowerConstraints;
11806*5113495bSYour Name 	tDot11fIEChanSwitchAnn                  ChanSwitchAnn;
11807*5113495bSYour Name 	tDot11fIEQuiet                          Quiet;
11808*5113495bSYour Name 	tDot11fIETPCReport                      TPCReport;
11809*5113495bSYour Name 	tDot11fIEERPInfo                        ERPInfo;
11810*5113495bSYour Name 	tDot11fIEExtSuppRates                   ExtSuppRates;
11811*5113495bSYour Name 	tDot11fIERSNOpaque                      RSNOpaque;
11812*5113495bSYour Name 	tDot11fIEQBSSLoad                       QBSSLoad;
11813*5113495bSYour Name 	tDot11fIEEDCAParamSet                   EDCAParamSet;
11814*5113495bSYour Name 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
11815*5113495bSYour Name 	tDot11fIEAPChannelReport                APChannelReport;
11816*5113495bSYour Name 	tDot11fIEMobilityDomain                 MobilityDomain;
11817*5113495bSYour Name 	tDot11fIEext_chan_switch_ann            ext_chan_switch_ann;
11818*5113495bSYour Name 	tDot11fIESuppOperatingClasses           SuppOperatingClasses;
11819*5113495bSYour Name 	tDot11fIEHTCaps                         HTCaps;
11820*5113495bSYour Name 	tDot11fIEHTInfo                         HTInfo;
11821*5113495bSYour Name 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
11822*5113495bSYour Name 	tDot11fIEExtCap                         ExtCap;
11823*5113495bSYour Name 	tDot11fIEVHTCaps                        VHTCaps;
11824*5113495bSYour Name 	tDot11fIEVHTOperation                   VHTOperation;
11825*5113495bSYour Name 	uint16_t                                num_transmit_power_env;
11826*5113495bSYour Name 	tDot11fIEtransmit_power_env             transmit_power_env[8];
11827*5113495bSYour Name 	tDot11fIEChannelSwitchWrapper           ChannelSwitchWrapper;
11828*5113495bSYour Name 	tDot11fIEVHTExtBssLoad                  VHTExtBssLoad;
11829*5113495bSYour Name 	tDot11fIEfils_indication                fils_indication;
11830*5113495bSYour Name 	tDot11fIEmax_chan_switch_time           max_chan_switch_time;
11831*5113495bSYour Name 	tDot11fIEesp_information                esp_information;
11832*5113495bSYour Name 	tDot11fIEhe_cap                         he_cap;
11833*5113495bSYour Name 	tDot11fIEhe_op                          he_op;
11834*5113495bSYour Name 	tDot11fIEspatial_reuse                  spatial_reuse;
11835*5113495bSYour Name 	tDot11fIEbss_color_change               bss_color_change;
11836*5113495bSYour Name 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
11837*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
11838*5113495bSYour Name 	tDot11fIEsec_chan_offset_ele            sec_chan_offset_ele;
11839*5113495bSYour Name 	tDot11fIEWAPI                           WAPI;
11840*5113495bSYour Name 	tDot11fIEESETxmitPower                  ESETxmitPower;
11841*5113495bSYour Name 	tDot11fIEeht_cap                        eht_cap;
11842*5113495bSYour Name 	tDot11fIEeht_op                         eht_op;
11843*5113495bSYour Name 	tDot11fIEmlo_ie                         mlo_ie;
11844*5113495bSYour Name 	uint16_t                                num_t2lm_ie;
11845*5113495bSYour Name 	tDot11fIEt2lm_ie                        t2lm_ie[2];
11846*5113495bSYour Name 	tDot11fIEWPA                            WPA;
11847*5113495bSYour Name 	tDot11fIEWMMInfoAp                      WMMInfoAp;
11848*5113495bSYour Name 	tDot11fIEWMMParams                      WMMParams;
11849*5113495bSYour Name 	tDot11fIEWMMCaps                        WMMCaps;
11850*5113495bSYour Name 	tDot11fIEESEVersion                     ESEVersion;
11851*5113495bSYour Name 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
11852*5113495bSYour Name 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
11853*5113495bSYour Name 	tDot11fIEWscProbeRes                    WscProbeRes;
11854*5113495bSYour Name 	tDot11fIEP2PProbeRes                    P2PProbeRes;
11855*5113495bSYour Name 	tDot11fIEVendor1IE                      Vendor1IE;
11856*5113495bSYour Name 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
11857*5113495bSYour Name 	tDot11fIEVendor3IE                      Vendor3IE;
11858*5113495bSYour Name 	tDot11fIEhs20vendor_ie                  hs20vendor_ie;
11859*5113495bSYour Name 	tDot11fIEQComVendorIE                   QComVendorIE;
11860*5113495bSYour Name 	tDot11fIEMBO_IE                         MBO_IE;
11861*5113495bSYour Name 	tDot11fIEqcn_ie                         qcn_ie;
11862*5113495bSYour Name 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
11863*5113495bSYour Name } tDot11fProbeResponse;
11864*5113495bSYour Name 
11865*5113495bSYour Name #define DOT11F_PROBERESPONSE (22)
11866*5113495bSYour Name 
11867*5113495bSYour Name #ifdef __cplusplus
11868*5113495bSYour Name extern "C" {
11869*5113495bSYour Name #endif /* C++ */
11870*5113495bSYour Name 
11871*5113495bSYour Name uint32_t dot11f_unpack_probe_response(tpAniSirGlobal pCtx,
11872*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11873*5113495bSYour Name 	tDot11fProbeResponse * pFrm, bool append_ie);
11874*5113495bSYour Name uint32_t dot11f_pack_probe_response(tpAniSirGlobal pCtx,
11875*5113495bSYour Name 	tDot11fProbeResponse *pFrm, uint8_t *pBuf,
11876*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11877*5113495bSYour Name uint32_t dot11f_get_packed_probe_response_size(tpAniSirGlobal pCtx,
11878*5113495bSYour Name 	tDot11fProbeResponse *pFrm,
11879*5113495bSYour Name 	uint32_t *pnNeeded);
11880*5113495bSYour Name 
11881*5113495bSYour Name #ifdef __cplusplus
11882*5113495bSYour Name } /* End extern "C". */
11883*5113495bSYour Name #endif /* C++ */
11884*5113495bSYour Name 
11885*5113495bSYour Name typedef struct sDot11fQosMapConfigure{
11886*5113495bSYour Name 	tDot11fFfCategory         Category;
11887*5113495bSYour Name 	tDot11fFfAction           Action;
11888*5113495bSYour Name 	tDot11fIEQosMapSet        QosMapSet;
11889*5113495bSYour Name } tDot11fQosMapConfigure;
11890*5113495bSYour Name 
11891*5113495bSYour Name #define DOT11F_QOSMAPCONFIGURE (23)
11892*5113495bSYour Name 
11893*5113495bSYour Name #ifdef __cplusplus
11894*5113495bSYour Name extern "C" {
11895*5113495bSYour Name #endif /* C++ */
11896*5113495bSYour Name 
11897*5113495bSYour Name uint32_t dot11f_unpack_qos_map_configure(tpAniSirGlobal pCtx,
11898*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11899*5113495bSYour Name 	tDot11fQosMapConfigure * pFrm, bool append_ie);
11900*5113495bSYour Name uint32_t dot11f_pack_qos_map_configure(tpAniSirGlobal pCtx,
11901*5113495bSYour Name 	tDot11fQosMapConfigure *pFrm, uint8_t *pBuf,
11902*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11903*5113495bSYour Name uint32_t dot11f_get_packed_qos_map_configure_size(tpAniSirGlobal pCtx,
11904*5113495bSYour Name 	tDot11fQosMapConfigure *pFrm,
11905*5113495bSYour Name 	uint32_t *pnNeeded);
11906*5113495bSYour Name 
11907*5113495bSYour Name #ifdef __cplusplus
11908*5113495bSYour Name } /* End extern "C". */
11909*5113495bSYour Name #endif /* C++ */
11910*5113495bSYour Name 
11911*5113495bSYour Name typedef struct sDot11fRadioMeasurementReport{
11912*5113495bSYour Name 	tDot11fFfCategory                 Category;
11913*5113495bSYour Name 	tDot11fFfAction                   Action;
11914*5113495bSYour Name 	tDot11fFfDialogToken              DialogToken;
11915*5113495bSYour Name 	uint16_t                          num_MeasurementReport;
11916*5113495bSYour Name 	tDot11fIEMeasurementReport        MeasurementReport[1];
11917*5113495bSYour Name } tDot11fRadioMeasurementReport;
11918*5113495bSYour Name 
11919*5113495bSYour Name #define DOT11F_RADIOMEASUREMENTREPORT (24)
11920*5113495bSYour Name 
11921*5113495bSYour Name #ifdef __cplusplus
11922*5113495bSYour Name extern "C" {
11923*5113495bSYour Name #endif /* C++ */
11924*5113495bSYour Name 
11925*5113495bSYour Name uint32_t dot11f_unpack_radio_measurement_report(tpAniSirGlobal pCtx,
11926*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11927*5113495bSYour Name 	tDot11fRadioMeasurementReport * pFrm, bool append_ie);
11928*5113495bSYour Name uint32_t dot11f_pack_radio_measurement_report(tpAniSirGlobal pCtx,
11929*5113495bSYour Name 	tDot11fRadioMeasurementReport *pFrm, uint8_t *pBuf,
11930*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11931*5113495bSYour Name uint32_t dot11f_get_packed_radio_measurement_report_size(tpAniSirGlobal pCtx,
11932*5113495bSYour Name 	tDot11fRadioMeasurementReport *pFrm,
11933*5113495bSYour Name 	uint32_t *pnNeeded);
11934*5113495bSYour Name 
11935*5113495bSYour Name #ifdef __cplusplus
11936*5113495bSYour Name } /* End extern "C". */
11937*5113495bSYour Name #endif /* C++ */
11938*5113495bSYour Name 
11939*5113495bSYour Name typedef struct sDot11fRadioMeasurementRequest{
11940*5113495bSYour Name 	tDot11fFfCategory                  Category;
11941*5113495bSYour Name 	tDot11fFfAction                    Action;
11942*5113495bSYour Name 	tDot11fFfDialogToken               DialogToken;
11943*5113495bSYour Name 	tDot11fFfNumOfRepetitions          NumOfRepetitions;
11944*5113495bSYour Name 	uint16_t                           num_MeasurementRequest;
11945*5113495bSYour Name 	tDot11fIEMeasurementRequest        MeasurementRequest[5];
11946*5113495bSYour Name } tDot11fRadioMeasurementRequest;
11947*5113495bSYour Name 
11948*5113495bSYour Name #define DOT11F_RADIOMEASUREMENTREQUEST (25)
11949*5113495bSYour Name 
11950*5113495bSYour Name #ifdef __cplusplus
11951*5113495bSYour Name extern "C" {
11952*5113495bSYour Name #endif /* C++ */
11953*5113495bSYour Name 
11954*5113495bSYour Name uint32_t dot11f_unpack_radio_measurement_request(tpAniSirGlobal pCtx,
11955*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
11956*5113495bSYour Name 	tDot11fRadioMeasurementRequest * pFrm, bool append_ie);
11957*5113495bSYour Name uint32_t dot11f_pack_radio_measurement_request(tpAniSirGlobal pCtx,
11958*5113495bSYour Name 	tDot11fRadioMeasurementRequest *pFrm, uint8_t *pBuf,
11959*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
11960*5113495bSYour Name uint32_t dot11f_get_packed_radio_measurement_request_size(tpAniSirGlobal pCtx,
11961*5113495bSYour Name 	tDot11fRadioMeasurementRequest *pFrm,
11962*5113495bSYour Name 	uint32_t *pnNeeded);
11963*5113495bSYour Name 
11964*5113495bSYour Name #ifdef __cplusplus
11965*5113495bSYour Name } /* End extern "C". */
11966*5113495bSYour Name #endif /* C++ */
11967*5113495bSYour Name 
11968*5113495bSYour Name typedef struct sDot11fReAssocRequest{
11969*5113495bSYour Name 	tDot11fFfCapabilities                Capabilities;
11970*5113495bSYour Name 	tDot11fFfListenInterval              ListenInterval;
11971*5113495bSYour Name 	tDot11fFfCurrentAPAddress            CurrentAPAddress;
11972*5113495bSYour Name 	tDot11fIESSID                        SSID;
11973*5113495bSYour Name 	tDot11fIESuppRates                   SuppRates;
11974*5113495bSYour Name 	tDot11fIEExtSuppRates                ExtSuppRates;
11975*5113495bSYour Name 	tDot11fIEPowerCaps                   PowerCaps;
11976*5113495bSYour Name 	tDot11fIESuppChannels                SuppChannels;
11977*5113495bSYour Name 	tDot11fIERSNOpaque                   RSNOpaque;
11978*5113495bSYour Name 	tDot11fIEQOSCapsStation              QOSCapsStation;
11979*5113495bSYour Name 	tDot11fIERRMEnabledCap               RRMEnabledCap;
11980*5113495bSYour Name 	tDot11fIEMobilityDomain              MobilityDomain;
11981*5113495bSYour Name 	tDot11fIEFTInfo                      FTInfo;
11982*5113495bSYour Name 	uint16_t                             num_RICDataDesc;
11983*5113495bSYour Name 	tDot11fIERICDataDesc                 RICDataDesc[2];
11984*5113495bSYour Name 	tDot11fIESuppOperatingClasses        SuppOperatingClasses;
11985*5113495bSYour Name 	tDot11fIEHTCaps                      HTCaps;
11986*5113495bSYour Name 	tDot11fIEExtCap                      ExtCap;
11987*5113495bSYour Name 	tDot11fIEVHTCaps                     VHTCaps;
11988*5113495bSYour Name 	tDot11fIEOperatingMode               OperatingMode;
11989*5113495bSYour Name 	tDot11fIEbss_max_idle_period         bss_max_idle_period;
11990*5113495bSYour Name 	tDot11fIEhe_cap                      he_cap;
11991*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap            he_6ghz_band_cap;
11992*5113495bSYour Name 	tDot11fIEWAPIOpaque                  WAPIOpaque;
11993*5113495bSYour Name 	tDot11fIEWAPI                        WAPI;
11994*5113495bSYour Name 	tDot11fIEQosMapSet                   QosMapSet;
11995*5113495bSYour Name 	tDot11fIEESECckmOpaque               ESECckmOpaque;
11996*5113495bSYour Name 	tDot11fIEeht_cap                     eht_cap;
11997*5113495bSYour Name 	tDot11fIEmlo_ie                      mlo_ie;
11998*5113495bSYour Name 	uint16_t                             num_t2lm_ie;
11999*5113495bSYour Name 	tDot11fIEt2lm_ie                     t2lm_ie[2];
12000*5113495bSYour Name 	tDot11fIEWPAOpaque                   WPAOpaque;
12001*5113495bSYour Name 	tDot11fIEWMMCaps                     WMMCaps;
12002*5113495bSYour Name 	tDot11fIEWMMInfoStation              WMMInfoStation;
12003*5113495bSYour Name 	tDot11fIEWscIEOpaque                 WscIEOpaque;
12004*5113495bSYour Name 	tDot11fIEESERadMgmtCap               ESERadMgmtCap;
12005*5113495bSYour Name 	tDot11fIEESEVersion                  ESEVersion;
12006*5113495bSYour Name 	uint16_t                             num_WMMTSPEC;
12007*5113495bSYour Name 	tDot11fIEWMMTSPEC                    WMMTSPEC[4];
12008*5113495bSYour Name 	tDot11fIEESETrafStrmRateSet          ESETrafStrmRateSet;
12009*5113495bSYour Name 	tDot11fIEP2PIEOpaque                 P2PIEOpaque;
12010*5113495bSYour Name 	tDot11fIEWFDIEOpaque                 WFDIEOpaque;
12011*5113495bSYour Name 	tDot11fIEvendor_vht_ie               vendor_vht_ie;
12012*5113495bSYour Name 	tDot11fIEhs20vendor_ie               hs20vendor_ie;
12013*5113495bSYour Name } tDot11fReAssocRequest;
12014*5113495bSYour Name 
12015*5113495bSYour Name #define DOT11F_REASSOCREQUEST (26)
12016*5113495bSYour Name 
12017*5113495bSYour Name #ifdef __cplusplus
12018*5113495bSYour Name extern "C" {
12019*5113495bSYour Name #endif /* C++ */
12020*5113495bSYour Name 
12021*5113495bSYour Name uint32_t dot11f_unpack_re_assoc_request(tpAniSirGlobal pCtx,
12022*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12023*5113495bSYour Name 	tDot11fReAssocRequest * pFrm, bool append_ie);
12024*5113495bSYour Name uint32_t dot11f_pack_re_assoc_request(tpAniSirGlobal pCtx,
12025*5113495bSYour Name 	tDot11fReAssocRequest *pFrm, uint8_t *pBuf,
12026*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12027*5113495bSYour Name uint32_t dot11f_get_packed_re_assoc_request_size(tpAniSirGlobal pCtx,
12028*5113495bSYour Name 	tDot11fReAssocRequest *pFrm,
12029*5113495bSYour Name 	uint32_t *pnNeeded);
12030*5113495bSYour Name 
12031*5113495bSYour Name #ifdef __cplusplus
12032*5113495bSYour Name } /* End extern "C". */
12033*5113495bSYour Name #endif /* C++ */
12034*5113495bSYour Name 
12035*5113495bSYour Name typedef struct sDot11fReAssocResponse{
12036*5113495bSYour Name 	tDot11fFfCapabilities                   Capabilities;
12037*5113495bSYour Name 	tDot11fFfStatus                         Status;
12038*5113495bSYour Name 	tDot11fFfAID                            AID;
12039*5113495bSYour Name 	tDot11fIESuppRates                      SuppRates;
12040*5113495bSYour Name 	tDot11fIEExtSuppRates                   ExtSuppRates;
12041*5113495bSYour Name 	tDot11fIEEDCAParamSet                   EDCAParamSet;
12042*5113495bSYour Name 	tDot11fIERCPIIE                         RCPIIE;
12043*5113495bSYour Name 	tDot11fIERSNIIE                         RSNIIE;
12044*5113495bSYour Name 	tDot11fIERRMEnabledCap                  RRMEnabledCap;
12045*5113495bSYour Name 	tDot11fIERSNOpaque                      RSNOpaque;
12046*5113495bSYour Name 	tDot11fIEMobilityDomain                 MobilityDomain;
12047*5113495bSYour Name 	tDot11fIEFTInfo                         FTInfo;
12048*5113495bSYour Name 	uint16_t                                num_RICDataDesc;
12049*5113495bSYour Name 	tDot11fIERICDataDesc                    RICDataDesc[2];
12050*5113495bSYour Name 	tDot11fIETimeoutInterval                TimeoutInterval;
12051*5113495bSYour Name 	tDot11fIEHTCaps                         HTCaps;
12052*5113495bSYour Name 	tDot11fIEHTInfo                         HTInfo;
12053*5113495bSYour Name 	tDot11fIEOBSSScanParameters             OBSSScanParameters;
12054*5113495bSYour Name 	tDot11fIEExtCap                         ExtCap;
12055*5113495bSYour Name 	tDot11fIEbss_max_idle_period            bss_max_idle_period;
12056*5113495bSYour Name 	tDot11fIEVHTCaps                        VHTCaps;
12057*5113495bSYour Name 	tDot11fIEVHTOperation                   VHTOperation;
12058*5113495bSYour Name 	tDot11fIEOperatingMode                  OperatingMode;
12059*5113495bSYour Name 	tDot11fIEhe_cap                         he_cap;
12060*5113495bSYour Name 	tDot11fIEhe_op                          he_op;
12061*5113495bSYour Name 	tDot11fIEspatial_reuse                  spatial_reuse;
12062*5113495bSYour Name 	tDot11fIEbss_color_change               bss_color_change;
12063*5113495bSYour Name 	tDot11fIEmu_edca_param_set              mu_edca_param_set;
12064*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap               he_6ghz_band_cap;
12065*5113495bSYour Name 	tDot11fIEQosMapSet                      QosMapSet;
12066*5113495bSYour Name 	tDot11fIEESETxmitPower                  ESETxmitPower;
12067*5113495bSYour Name 	tDot11fIEeht_cap                        eht_cap;
12068*5113495bSYour Name 	tDot11fIEeht_op                         eht_op;
12069*5113495bSYour Name 	tDot11fIEmlo_ie                         mlo_ie;
12070*5113495bSYour Name 	uint16_t                                num_t2lm_ie;
12071*5113495bSYour Name 	tDot11fIEt2lm_ie                        t2lm_ie[2];
12072*5113495bSYour Name 	tDot11fIEWPA                            WPA;
12073*5113495bSYour Name 	tDot11fIEWMMParams                      WMMParams;
12074*5113495bSYour Name 	tDot11fIEESERadMgmtCap                  ESERadMgmtCap;
12075*5113495bSYour Name 	tDot11fIEESETrafStrmMet                 ESETrafStrmMet;
12076*5113495bSYour Name 	uint16_t                                num_WMMTSPEC;
12077*5113495bSYour Name 	tDot11fIEWMMTSPEC                       WMMTSPEC[4];
12078*5113495bSYour Name 	tDot11fIEESETrafStrmRateSet             ESETrafStrmRateSet;
12079*5113495bSYour Name 	tDot11fIEWscReassocRes                  WscReassocRes;
12080*5113495bSYour Name 	tDot11fIEP2PAssocRes                    P2PAssocRes;
12081*5113495bSYour Name 	tDot11fIEvendor_vht_ie                  vendor_vht_ie;
12082*5113495bSYour Name 	tDot11fIEMBO_IE                         MBO_IE;
12083*5113495bSYour Name 	tDot11fIEreduced_neighbor_report        reduced_neighbor_report;
12084*5113495bSYour Name } tDot11fReAssocResponse;
12085*5113495bSYour Name 
12086*5113495bSYour Name #define DOT11F_REASSOCRESPONSE (27)
12087*5113495bSYour Name 
12088*5113495bSYour Name #ifdef __cplusplus
12089*5113495bSYour Name extern "C" {
12090*5113495bSYour Name #endif /* C++ */
12091*5113495bSYour Name 
12092*5113495bSYour Name uint32_t dot11f_unpack_re_assoc_response(tpAniSirGlobal pCtx,
12093*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12094*5113495bSYour Name 	tDot11fReAssocResponse * pFrm, bool append_ie);
12095*5113495bSYour Name uint32_t dot11f_pack_re_assoc_response(tpAniSirGlobal pCtx,
12096*5113495bSYour Name 	tDot11fReAssocResponse *pFrm, uint8_t *pBuf,
12097*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12098*5113495bSYour Name uint32_t dot11f_get_packed_re_assoc_response_size(tpAniSirGlobal pCtx,
12099*5113495bSYour Name 	tDot11fReAssocResponse *pFrm,
12100*5113495bSYour Name 	uint32_t *pnNeeded);
12101*5113495bSYour Name 
12102*5113495bSYour Name #ifdef __cplusplus
12103*5113495bSYour Name } /* End extern "C". */
12104*5113495bSYour Name #endif /* C++ */
12105*5113495bSYour Name 
12106*5113495bSYour Name typedef struct sDot11fSMPowerSave{
12107*5113495bSYour Name 	tDot11fFfCategory              Category;
12108*5113495bSYour Name 	tDot11fFfAction                Action;
12109*5113495bSYour Name 	tDot11fFfSMPowerModeSet        SMPowerModeSet;
12110*5113495bSYour Name } tDot11fSMPowerSave;
12111*5113495bSYour Name 
12112*5113495bSYour Name #define DOT11F_SMPOWERSAVE (28)
12113*5113495bSYour Name 
12114*5113495bSYour Name #ifdef __cplusplus
12115*5113495bSYour Name extern "C" {
12116*5113495bSYour Name #endif /* C++ */
12117*5113495bSYour Name 
12118*5113495bSYour Name uint32_t dot11f_unpack_sm_power_save(tpAniSirGlobal pCtx,
12119*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12120*5113495bSYour Name 	tDot11fSMPowerSave * pFrm, bool append_ie);
12121*5113495bSYour Name uint32_t dot11f_pack_sm_power_save(tpAniSirGlobal pCtx,
12122*5113495bSYour Name 	tDot11fSMPowerSave *pFrm, uint8_t *pBuf,
12123*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12124*5113495bSYour Name uint32_t dot11f_get_packed_sm_power_save_size(tpAniSirGlobal pCtx,
12125*5113495bSYour Name 	tDot11fSMPowerSave *pFrm,
12126*5113495bSYour Name 	uint32_t *pnNeeded);
12127*5113495bSYour Name 
12128*5113495bSYour Name #ifdef __cplusplus
12129*5113495bSYour Name } /* End extern "C". */
12130*5113495bSYour Name #endif /* C++ */
12131*5113495bSYour Name 
12132*5113495bSYour Name typedef struct sDot11fSaQueryReq{
12133*5113495bSYour Name 	tDot11fFfCategory             Category;
12134*5113495bSYour Name 	tDot11fFfAction               Action;
12135*5113495bSYour Name 	tDot11fFfTransactionId        TransactionId;
12136*5113495bSYour Name 	tDot11fIEoci                  oci;
12137*5113495bSYour Name } tDot11fSaQueryReq;
12138*5113495bSYour Name 
12139*5113495bSYour Name #define DOT11F_SAQUERYREQ (29)
12140*5113495bSYour Name 
12141*5113495bSYour Name #ifdef __cplusplus
12142*5113495bSYour Name extern "C" {
12143*5113495bSYour Name #endif /* C++ */
12144*5113495bSYour Name 
12145*5113495bSYour Name uint32_t dot11f_unpack_sa_query_req(tpAniSirGlobal pCtx,
12146*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12147*5113495bSYour Name 	tDot11fSaQueryReq * pFrm, bool append_ie);
12148*5113495bSYour Name uint32_t dot11f_pack_sa_query_req(tpAniSirGlobal pCtx,
12149*5113495bSYour Name 	tDot11fSaQueryReq *pFrm, uint8_t *pBuf,
12150*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12151*5113495bSYour Name uint32_t dot11f_get_packed_sa_query_req_size(tpAniSirGlobal pCtx,
12152*5113495bSYour Name 	tDot11fSaQueryReq *pFrm,
12153*5113495bSYour Name 	uint32_t *pnNeeded);
12154*5113495bSYour Name 
12155*5113495bSYour Name #ifdef __cplusplus
12156*5113495bSYour Name } /* End extern "C". */
12157*5113495bSYour Name #endif /* C++ */
12158*5113495bSYour Name 
12159*5113495bSYour Name typedef struct sDot11fSaQueryRsp{
12160*5113495bSYour Name 	tDot11fFfCategory             Category;
12161*5113495bSYour Name 	tDot11fFfAction               Action;
12162*5113495bSYour Name 	tDot11fFfTransactionId        TransactionId;
12163*5113495bSYour Name 	tDot11fIEoci                  oci;
12164*5113495bSYour Name } tDot11fSaQueryRsp;
12165*5113495bSYour Name 
12166*5113495bSYour Name #define DOT11F_SAQUERYRSP (30)
12167*5113495bSYour Name 
12168*5113495bSYour Name #ifdef __cplusplus
12169*5113495bSYour Name extern "C" {
12170*5113495bSYour Name #endif /* C++ */
12171*5113495bSYour Name 
12172*5113495bSYour Name uint32_t dot11f_unpack_sa_query_rsp(tpAniSirGlobal pCtx,
12173*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12174*5113495bSYour Name 	tDot11fSaQueryRsp * pFrm, bool append_ie);
12175*5113495bSYour Name uint32_t dot11f_pack_sa_query_rsp(tpAniSirGlobal pCtx,
12176*5113495bSYour Name 	tDot11fSaQueryRsp *pFrm, uint8_t *pBuf,
12177*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12178*5113495bSYour Name uint32_t dot11f_get_packed_sa_query_rsp_size(tpAniSirGlobal pCtx,
12179*5113495bSYour Name 	tDot11fSaQueryRsp *pFrm,
12180*5113495bSYour Name 	uint32_t *pnNeeded);
12181*5113495bSYour Name 
12182*5113495bSYour Name #ifdef __cplusplus
12183*5113495bSYour Name } /* End extern "C". */
12184*5113495bSYour Name #endif /* C++ */
12185*5113495bSYour Name 
12186*5113495bSYour Name typedef struct sDot11fTDLSDisReq{
12187*5113495bSYour Name 	tDot11fFfCategory              Category;
12188*5113495bSYour Name 	tDot11fFfAction                Action;
12189*5113495bSYour Name 	tDot11fFfDialogToken           DialogToken;
12190*5113495bSYour Name 	tDot11fIELinkIdentifier        LinkIdentifier;
12191*5113495bSYour Name } tDot11fTDLSDisReq;
12192*5113495bSYour Name 
12193*5113495bSYour Name #define DOT11F_TDLSDISREQ (31)
12194*5113495bSYour Name 
12195*5113495bSYour Name #ifdef __cplusplus
12196*5113495bSYour Name extern "C" {
12197*5113495bSYour Name #endif /* C++ */
12198*5113495bSYour Name 
12199*5113495bSYour Name uint32_t dot11f_unpack_tdls_dis_req(tpAniSirGlobal pCtx,
12200*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12201*5113495bSYour Name 	tDot11fTDLSDisReq * pFrm, bool append_ie);
12202*5113495bSYour Name uint32_t dot11f_pack_tdls_dis_req(tpAniSirGlobal pCtx,
12203*5113495bSYour Name 	tDot11fTDLSDisReq *pFrm, uint8_t *pBuf,
12204*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12205*5113495bSYour Name uint32_t dot11f_get_packed_tdls_dis_req_size(tpAniSirGlobal pCtx,
12206*5113495bSYour Name 	tDot11fTDLSDisReq *pFrm,
12207*5113495bSYour Name 	uint32_t *pnNeeded);
12208*5113495bSYour Name 
12209*5113495bSYour Name #ifdef __cplusplus
12210*5113495bSYour Name } /* End extern "C". */
12211*5113495bSYour Name #endif /* C++ */
12212*5113495bSYour Name 
12213*5113495bSYour Name typedef struct sDot11fTDLSDisRsp{
12214*5113495bSYour Name 	tDot11fFfCategory                      Category;
12215*5113495bSYour Name 	tDot11fFfAction                        Action;
12216*5113495bSYour Name 	tDot11fFfDialogToken                   DialogToken;
12217*5113495bSYour Name 	tDot11fFfCapabilities                  Capabilities;
12218*5113495bSYour Name 	tDot11fIESuppRates                     SuppRates;
12219*5113495bSYour Name 	tDot11fIEExtSuppRates                  ExtSuppRates;
12220*5113495bSYour Name 	tDot11fIESuppChannels                  SuppChannels;
12221*5113495bSYour Name 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
12222*5113495bSYour Name 	tDot11fIERSN                           RSN;
12223*5113495bSYour Name 	tDot11fIEExtCap                        ExtCap;
12224*5113495bSYour Name 	tDot11fIEFTInfo                        FTInfo;
12225*5113495bSYour Name 	tDot11fIETimeoutInterval               TimeoutInterval;
12226*5113495bSYour Name 	tDot11fIERICData                       RICData;
12227*5113495bSYour Name 	tDot11fIEHTCaps                        HTCaps;
12228*5113495bSYour Name 	tDot11fIEht2040_bss_coexistence        ht2040_bss_coexistence;
12229*5113495bSYour Name 	tDot11fIELinkIdentifier                LinkIdentifier;
12230*5113495bSYour Name 	tDot11fIEVHTCaps                       VHTCaps;
12231*5113495bSYour Name 	tDot11fIEhe_cap                        he_cap;
12232*5113495bSYour Name } tDot11fTDLSDisRsp;
12233*5113495bSYour Name 
12234*5113495bSYour Name #define DOT11F_TDLSDISRSP (32)
12235*5113495bSYour Name 
12236*5113495bSYour Name #ifdef __cplusplus
12237*5113495bSYour Name extern "C" {
12238*5113495bSYour Name #endif /* C++ */
12239*5113495bSYour Name 
12240*5113495bSYour Name uint32_t dot11f_unpack_tdls_dis_rsp(tpAniSirGlobal pCtx,
12241*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12242*5113495bSYour Name 	tDot11fTDLSDisRsp * pFrm, bool append_ie);
12243*5113495bSYour Name uint32_t dot11f_pack_tdls_dis_rsp(tpAniSirGlobal pCtx,
12244*5113495bSYour Name 	tDot11fTDLSDisRsp *pFrm, uint8_t *pBuf,
12245*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12246*5113495bSYour Name uint32_t dot11f_get_packed_tdls_dis_rsp_size(tpAniSirGlobal pCtx,
12247*5113495bSYour Name 	tDot11fTDLSDisRsp *pFrm,
12248*5113495bSYour Name 	uint32_t *pnNeeded);
12249*5113495bSYour Name 
12250*5113495bSYour Name #ifdef __cplusplus
12251*5113495bSYour Name } /* End extern "C". */
12252*5113495bSYour Name #endif /* C++ */
12253*5113495bSYour Name 
12254*5113495bSYour Name typedef struct sDot11fTDLSPeerTrafficInd{
12255*5113495bSYour Name 	tDot11fFfCategory              Category;
12256*5113495bSYour Name 	tDot11fFfAction                Action;
12257*5113495bSYour Name 	tDot11fFfDialogToken           DialogToken;
12258*5113495bSYour Name 	tDot11fIELinkIdentifier        LinkIdentifier;
12259*5113495bSYour Name 	tDot11fIEPTIControl            PTIControl;
12260*5113495bSYour Name 	tDot11fIEPUBufferStatus        PUBufferStatus;
12261*5113495bSYour Name } tDot11fTDLSPeerTrafficInd;
12262*5113495bSYour Name 
12263*5113495bSYour Name #define DOT11F_TDLSPEERTRAFFICIND (33)
12264*5113495bSYour Name 
12265*5113495bSYour Name #ifdef __cplusplus
12266*5113495bSYour Name extern "C" {
12267*5113495bSYour Name #endif /* C++ */
12268*5113495bSYour Name 
12269*5113495bSYour Name uint32_t dot11f_unpack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx,
12270*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12271*5113495bSYour Name 	tDot11fTDLSPeerTrafficInd * pFrm, bool append_ie);
12272*5113495bSYour Name uint32_t dot11f_pack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx,
12273*5113495bSYour Name 	tDot11fTDLSPeerTrafficInd *pFrm, uint8_t *pBuf,
12274*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12275*5113495bSYour Name uint32_t dot11f_get_packed_tdls_peer_traffic_ind_size(tpAniSirGlobal pCtx,
12276*5113495bSYour Name 	tDot11fTDLSPeerTrafficInd *pFrm,
12277*5113495bSYour Name 	uint32_t *pnNeeded);
12278*5113495bSYour Name 
12279*5113495bSYour Name #ifdef __cplusplus
12280*5113495bSYour Name } /* End extern "C". */
12281*5113495bSYour Name #endif /* C++ */
12282*5113495bSYour Name 
12283*5113495bSYour Name typedef struct sDot11fTDLSPeerTrafficRsp{
12284*5113495bSYour Name 	tDot11fFfCategory              Category;
12285*5113495bSYour Name 	tDot11fFfAction                Action;
12286*5113495bSYour Name 	tDot11fFfDialogToken           DialogToken;
12287*5113495bSYour Name 	tDot11fIELinkIdentifier        LinkIdentifier;
12288*5113495bSYour Name } tDot11fTDLSPeerTrafficRsp;
12289*5113495bSYour Name 
12290*5113495bSYour Name #define DOT11F_TDLSPEERTRAFFICRSP (34)
12291*5113495bSYour Name 
12292*5113495bSYour Name #ifdef __cplusplus
12293*5113495bSYour Name extern "C" {
12294*5113495bSYour Name #endif /* C++ */
12295*5113495bSYour Name 
12296*5113495bSYour Name uint32_t dot11f_unpack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx,
12297*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12298*5113495bSYour Name 	tDot11fTDLSPeerTrafficRsp * pFrm, bool append_ie);
12299*5113495bSYour Name uint32_t dot11f_pack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx,
12300*5113495bSYour Name 	tDot11fTDLSPeerTrafficRsp *pFrm, uint8_t *pBuf,
12301*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12302*5113495bSYour Name uint32_t dot11f_get_packed_tdls_peer_traffic_rsp_size(tpAniSirGlobal pCtx,
12303*5113495bSYour Name 	tDot11fTDLSPeerTrafficRsp *pFrm,
12304*5113495bSYour Name 	uint32_t *pnNeeded);
12305*5113495bSYour Name 
12306*5113495bSYour Name #ifdef __cplusplus
12307*5113495bSYour Name } /* End extern "C". */
12308*5113495bSYour Name #endif /* C++ */
12309*5113495bSYour Name 
12310*5113495bSYour Name typedef struct sDot11fTDLSSetupCnf{
12311*5113495bSYour Name 	tDot11fFfCategory               Category;
12312*5113495bSYour Name 	tDot11fFfAction                 Action;
12313*5113495bSYour Name 	tDot11fFfStatus                 Status;
12314*5113495bSYour Name 	tDot11fFfDialogToken            DialogToken;
12315*5113495bSYour Name 	tDot11fIERSN                    RSN;
12316*5113495bSYour Name 	tDot11fIEEDCAParamSet           EDCAParamSet;
12317*5113495bSYour Name 	tDot11fIEFTInfo                 FTInfo;
12318*5113495bSYour Name 	tDot11fIETimeoutInterval        TimeoutInterval;
12319*5113495bSYour Name 	tDot11fIEHTInfo                 HTInfo;
12320*5113495bSYour Name 	tDot11fIELinkIdentifier         LinkIdentifier;
12321*5113495bSYour Name 	tDot11fIEWMMParams              WMMParams;
12322*5113495bSYour Name 	tDot11fIEVHTOperation           VHTOperation;
12323*5113495bSYour Name 	tDot11fIEOperatingMode          OperatingMode;
12324*5113495bSYour Name 	tDot11fIEhe_op                  he_op;
12325*5113495bSYour Name } tDot11fTDLSSetupCnf;
12326*5113495bSYour Name 
12327*5113495bSYour Name #define DOT11F_TDLSSETUPCNF (35)
12328*5113495bSYour Name 
12329*5113495bSYour Name #ifdef __cplusplus
12330*5113495bSYour Name extern "C" {
12331*5113495bSYour Name #endif /* C++ */
12332*5113495bSYour Name 
12333*5113495bSYour Name uint32_t dot11f_unpack_tdls_setup_cnf(tpAniSirGlobal pCtx,
12334*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12335*5113495bSYour Name 	tDot11fTDLSSetupCnf * pFrm, bool append_ie);
12336*5113495bSYour Name uint32_t dot11f_pack_tdls_setup_cnf(tpAniSirGlobal pCtx,
12337*5113495bSYour Name 	tDot11fTDLSSetupCnf *pFrm, uint8_t *pBuf,
12338*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12339*5113495bSYour Name uint32_t dot11f_get_packed_tdls_setup_cnf_size(tpAniSirGlobal pCtx,
12340*5113495bSYour Name 	tDot11fTDLSSetupCnf *pFrm,
12341*5113495bSYour Name 	uint32_t *pnNeeded);
12342*5113495bSYour Name 
12343*5113495bSYour Name #ifdef __cplusplus
12344*5113495bSYour Name } /* End extern "C". */
12345*5113495bSYour Name #endif /* C++ */
12346*5113495bSYour Name 
12347*5113495bSYour Name typedef struct sDot11fTDLSSetupReq{
12348*5113495bSYour Name 	tDot11fFfCategory                      Category;
12349*5113495bSYour Name 	tDot11fFfAction                        Action;
12350*5113495bSYour Name 	tDot11fFfDialogToken                   DialogToken;
12351*5113495bSYour Name 	tDot11fFfCapabilities                  Capabilities;
12352*5113495bSYour Name 	tDot11fIESuppRates                     SuppRates;
12353*5113495bSYour Name 	tDot11fIECountry                       Country;
12354*5113495bSYour Name 	tDot11fIEExtSuppRates                  ExtSuppRates;
12355*5113495bSYour Name 	tDot11fIESuppChannels                  SuppChannels;
12356*5113495bSYour Name 	tDot11fIERSN                           RSN;
12357*5113495bSYour Name 	tDot11fIEExtCap                        ExtCap;
12358*5113495bSYour Name 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
12359*5113495bSYour Name 	tDot11fIEQOSCapsStation                QOSCapsStation;
12360*5113495bSYour Name 	tDot11fIEFTInfo                        FTInfo;
12361*5113495bSYour Name 	tDot11fIETimeoutInterval               TimeoutInterval;
12362*5113495bSYour Name 	tDot11fIERICData                       RICData;
12363*5113495bSYour Name 	tDot11fIEHTCaps                        HTCaps;
12364*5113495bSYour Name 	tDot11fIEht2040_bss_coexistence        ht2040_bss_coexistence;
12365*5113495bSYour Name 	tDot11fIELinkIdentifier                LinkIdentifier;
12366*5113495bSYour Name 	tDot11fIEWMMInfoStation                WMMInfoStation;
12367*5113495bSYour Name 	tDot11fIEAID                           AID;
12368*5113495bSYour Name 	tDot11fIEVHTCaps                       VHTCaps;
12369*5113495bSYour Name 	tDot11fIEhe_cap                        he_cap;
12370*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap              he_6ghz_band_cap;
12371*5113495bSYour Name } tDot11fTDLSSetupReq;
12372*5113495bSYour Name 
12373*5113495bSYour Name #define DOT11F_TDLSSETUPREQ (36)
12374*5113495bSYour Name 
12375*5113495bSYour Name #ifdef __cplusplus
12376*5113495bSYour Name extern "C" {
12377*5113495bSYour Name #endif /* C++ */
12378*5113495bSYour Name 
12379*5113495bSYour Name uint32_t dot11f_unpack_tdls_setup_req(tpAniSirGlobal pCtx,
12380*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12381*5113495bSYour Name 	tDot11fTDLSSetupReq * pFrm, bool append_ie);
12382*5113495bSYour Name uint32_t dot11f_pack_tdls_setup_req(tpAniSirGlobal pCtx,
12383*5113495bSYour Name 	tDot11fTDLSSetupReq *pFrm, uint8_t *pBuf,
12384*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12385*5113495bSYour Name uint32_t dot11f_get_packed_tdls_setup_req_size(tpAniSirGlobal pCtx,
12386*5113495bSYour Name 	tDot11fTDLSSetupReq *pFrm,
12387*5113495bSYour Name 	uint32_t *pnNeeded);
12388*5113495bSYour Name 
12389*5113495bSYour Name #ifdef __cplusplus
12390*5113495bSYour Name } /* End extern "C". */
12391*5113495bSYour Name #endif /* C++ */
12392*5113495bSYour Name 
12393*5113495bSYour Name typedef struct sDot11fTDLSSetupRsp{
12394*5113495bSYour Name 	tDot11fFfCategory                      Category;
12395*5113495bSYour Name 	tDot11fFfAction                        Action;
12396*5113495bSYour Name 	tDot11fFfStatus                        Status;
12397*5113495bSYour Name 	tDot11fFfDialogToken                   DialogToken;
12398*5113495bSYour Name 	tDot11fFfCapabilities                  Capabilities;
12399*5113495bSYour Name 	tDot11fIESuppRates                     SuppRates;
12400*5113495bSYour Name 	tDot11fIECountry                       Country;
12401*5113495bSYour Name 	tDot11fIEExtSuppRates                  ExtSuppRates;
12402*5113495bSYour Name 	tDot11fIESuppChannels                  SuppChannels;
12403*5113495bSYour Name 	tDot11fIERSN                           RSN;
12404*5113495bSYour Name 	tDot11fIEExtCap                        ExtCap;
12405*5113495bSYour Name 	tDot11fIESuppOperatingClasses          SuppOperatingClasses;
12406*5113495bSYour Name 	tDot11fIEQOSCapsStation                QOSCapsStation;
12407*5113495bSYour Name 	tDot11fIEFTInfo                        FTInfo;
12408*5113495bSYour Name 	tDot11fIETimeoutInterval               TimeoutInterval;
12409*5113495bSYour Name 	tDot11fIERICData                       RICData;
12410*5113495bSYour Name 	tDot11fIEHTCaps                        HTCaps;
12411*5113495bSYour Name 	tDot11fIEht2040_bss_coexistence        ht2040_bss_coexistence;
12412*5113495bSYour Name 	tDot11fIELinkIdentifier                LinkIdentifier;
12413*5113495bSYour Name 	tDot11fIEWMMInfoStation                WMMInfoStation;
12414*5113495bSYour Name 	tDot11fIEAID                           AID;
12415*5113495bSYour Name 	tDot11fIEVHTCaps                       VHTCaps;
12416*5113495bSYour Name 	tDot11fIEOperatingMode                 OperatingMode;
12417*5113495bSYour Name 	tDot11fIEhe_cap                        he_cap;
12418*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap              he_6ghz_band_cap;
12419*5113495bSYour Name } tDot11fTDLSSetupRsp;
12420*5113495bSYour Name 
12421*5113495bSYour Name #define DOT11F_TDLSSETUPRSP (37)
12422*5113495bSYour Name 
12423*5113495bSYour Name #ifdef __cplusplus
12424*5113495bSYour Name extern "C" {
12425*5113495bSYour Name #endif /* C++ */
12426*5113495bSYour Name 
12427*5113495bSYour Name uint32_t dot11f_unpack_tdls_setup_rsp(tpAniSirGlobal pCtx,
12428*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12429*5113495bSYour Name 	tDot11fTDLSSetupRsp * pFrm, bool append_ie);
12430*5113495bSYour Name uint32_t dot11f_pack_tdls_setup_rsp(tpAniSirGlobal pCtx,
12431*5113495bSYour Name 	tDot11fTDLSSetupRsp *pFrm, uint8_t *pBuf,
12432*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12433*5113495bSYour Name uint32_t dot11f_get_packed_tdls_setup_rsp_size(tpAniSirGlobal pCtx,
12434*5113495bSYour Name 	tDot11fTDLSSetupRsp *pFrm,
12435*5113495bSYour Name 	uint32_t *pnNeeded);
12436*5113495bSYour Name 
12437*5113495bSYour Name #ifdef __cplusplus
12438*5113495bSYour Name } /* End extern "C". */
12439*5113495bSYour Name #endif /* C++ */
12440*5113495bSYour Name 
12441*5113495bSYour Name typedef struct sDot11fTDLSTeardown{
12442*5113495bSYour Name 	tDot11fFfCategory              Category;
12443*5113495bSYour Name 	tDot11fFfAction                Action;
12444*5113495bSYour Name 	tDot11fFfReason                Reason;
12445*5113495bSYour Name 	tDot11fIEFTInfo                FTInfo;
12446*5113495bSYour Name 	tDot11fIELinkIdentifier        LinkIdentifier;
12447*5113495bSYour Name } tDot11fTDLSTeardown;
12448*5113495bSYour Name 
12449*5113495bSYour Name #define DOT11F_TDLSTEARDOWN (38)
12450*5113495bSYour Name 
12451*5113495bSYour Name #ifdef __cplusplus
12452*5113495bSYour Name extern "C" {
12453*5113495bSYour Name #endif /* C++ */
12454*5113495bSYour Name 
12455*5113495bSYour Name uint32_t dot11f_unpack_tdls_teardown(tpAniSirGlobal pCtx,
12456*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12457*5113495bSYour Name 	tDot11fTDLSTeardown * pFrm, bool append_ie);
12458*5113495bSYour Name uint32_t dot11f_pack_tdls_teardown(tpAniSirGlobal pCtx,
12459*5113495bSYour Name 	tDot11fTDLSTeardown *pFrm, uint8_t *pBuf,
12460*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12461*5113495bSYour Name uint32_t dot11f_get_packed_tdls_teardown_size(tpAniSirGlobal pCtx,
12462*5113495bSYour Name 	tDot11fTDLSTeardown *pFrm,
12463*5113495bSYour Name 	uint32_t *pnNeeded);
12464*5113495bSYour Name 
12465*5113495bSYour Name #ifdef __cplusplus
12466*5113495bSYour Name } /* End extern "C". */
12467*5113495bSYour Name #endif /* C++ */
12468*5113495bSYour Name 
12469*5113495bSYour Name typedef struct sDot11fTPCReport{
12470*5113495bSYour Name 	tDot11fFfCategory           Category;
12471*5113495bSYour Name 	tDot11fFfAction             Action;
12472*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
12473*5113495bSYour Name 	tDot11fIETPCReport          TPCReport;
12474*5113495bSYour Name } tDot11fTPCReport;
12475*5113495bSYour Name 
12476*5113495bSYour Name #define DOT11F_TPCREPORT (39)
12477*5113495bSYour Name 
12478*5113495bSYour Name #ifdef __cplusplus
12479*5113495bSYour Name extern "C" {
12480*5113495bSYour Name #endif /* C++ */
12481*5113495bSYour Name 
12482*5113495bSYour Name uint32_t dot11f_unpack_tpc_report(tpAniSirGlobal pCtx,
12483*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12484*5113495bSYour Name 	tDot11fTPCReport * pFrm, bool append_ie);
12485*5113495bSYour Name uint32_t dot11f_pack_tpc_report(tpAniSirGlobal pCtx,
12486*5113495bSYour Name 	tDot11fTPCReport *pFrm, uint8_t *pBuf,
12487*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12488*5113495bSYour Name uint32_t dot11f_get_packed_tpc_report_size(tpAniSirGlobal pCtx,
12489*5113495bSYour Name 	tDot11fTPCReport *pFrm,
12490*5113495bSYour Name 	uint32_t *pnNeeded);
12491*5113495bSYour Name 
12492*5113495bSYour Name #ifdef __cplusplus
12493*5113495bSYour Name } /* End extern "C". */
12494*5113495bSYour Name #endif /* C++ */
12495*5113495bSYour Name 
12496*5113495bSYour Name typedef struct sDot11fTPCRequest{
12497*5113495bSYour Name 	tDot11fFfCategory           Category;
12498*5113495bSYour Name 	tDot11fFfAction             Action;
12499*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
12500*5113495bSYour Name 	tDot11fIETPCRequest         TPCRequest;
12501*5113495bSYour Name } tDot11fTPCRequest;
12502*5113495bSYour Name 
12503*5113495bSYour Name #define DOT11F_TPCREQUEST (40)
12504*5113495bSYour Name 
12505*5113495bSYour Name #ifdef __cplusplus
12506*5113495bSYour Name extern "C" {
12507*5113495bSYour Name #endif /* C++ */
12508*5113495bSYour Name 
12509*5113495bSYour Name uint32_t dot11f_unpack_tpc_request(tpAniSirGlobal pCtx,
12510*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12511*5113495bSYour Name 	tDot11fTPCRequest * pFrm, bool append_ie);
12512*5113495bSYour Name uint32_t dot11f_pack_tpc_request(tpAniSirGlobal pCtx,
12513*5113495bSYour Name 	tDot11fTPCRequest *pFrm, uint8_t *pBuf,
12514*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12515*5113495bSYour Name uint32_t dot11f_get_packed_tpc_request_size(tpAniSirGlobal pCtx,
12516*5113495bSYour Name 	tDot11fTPCRequest *pFrm,
12517*5113495bSYour Name 	uint32_t *pnNeeded);
12518*5113495bSYour Name 
12519*5113495bSYour Name #ifdef __cplusplus
12520*5113495bSYour Name } /* End extern "C". */
12521*5113495bSYour Name #endif /* C++ */
12522*5113495bSYour Name 
12523*5113495bSYour Name typedef struct sDot11fTimingAdvertisementFrame{
12524*5113495bSYour Name 	tDot11fFfTimeStamp                TimeStamp;
12525*5113495bSYour Name 	tDot11fFfCapabilities             Capabilities;
12526*5113495bSYour Name 	tDot11fIECountry                  Country;
12527*5113495bSYour Name 	tDot11fIEPowerConstraints         PowerConstraints;
12528*5113495bSYour Name 	tDot11fIETimeAdvertisement        TimeAdvertisement;
12529*5113495bSYour Name 	tDot11fIEExtCap                   ExtCap;
12530*5113495bSYour Name 	tDot11fIEVendor1IE                Vendor1IE;
12531*5113495bSYour Name 	tDot11fIEVendor3IE                Vendor3IE;
12532*5113495bSYour Name } tDot11fTimingAdvertisementFrame;
12533*5113495bSYour Name 
12534*5113495bSYour Name #define DOT11F_TIMINGADVERTISEMENTFRAME (41)
12535*5113495bSYour Name 
12536*5113495bSYour Name #ifdef __cplusplus
12537*5113495bSYour Name extern "C" {
12538*5113495bSYour Name #endif /* C++ */
12539*5113495bSYour Name 
12540*5113495bSYour Name uint32_t dot11f_unpack_timing_advertisement_frame(tpAniSirGlobal pCtx,
12541*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12542*5113495bSYour Name 	tDot11fTimingAdvertisementFrame * pFrm, bool append_ie);
12543*5113495bSYour Name uint32_t dot11f_pack_timing_advertisement_frame(tpAniSirGlobal pCtx,
12544*5113495bSYour Name 	tDot11fTimingAdvertisementFrame *pFrm, uint8_t *pBuf,
12545*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12546*5113495bSYour Name uint32_t dot11f_get_packed_timing_advertisement_frame_size(tpAniSirGlobal pCtx,
12547*5113495bSYour Name 	tDot11fTimingAdvertisementFrame *pFrm,
12548*5113495bSYour Name 	uint32_t *pnNeeded);
12549*5113495bSYour Name 
12550*5113495bSYour Name #ifdef __cplusplus
12551*5113495bSYour Name } /* End extern "C". */
12552*5113495bSYour Name #endif /* C++ */
12553*5113495bSYour Name 
12554*5113495bSYour Name typedef struct sDot11fVHTGidManagementActionFrame{
12555*5113495bSYour Name 	tDot11fFfCategory                        Category;
12556*5113495bSYour Name 	tDot11fFfAction                          Action;
12557*5113495bSYour Name 	tDot11fFfVhtMembershipStatusArray        VhtMembershipStatusArray;
12558*5113495bSYour Name 	tDot11fFfVhtUserPositionArray            VhtUserPositionArray;
12559*5113495bSYour Name } tDot11fVHTGidManagementActionFrame;
12560*5113495bSYour Name 
12561*5113495bSYour Name #define DOT11F_VHTGIDMANAGEMENTACTIONFRAME (42)
12562*5113495bSYour Name 
12563*5113495bSYour Name #ifdef __cplusplus
12564*5113495bSYour Name extern "C" {
12565*5113495bSYour Name #endif /* C++ */
12566*5113495bSYour Name 
12567*5113495bSYour Name uint32_t dot11f_unpack_vht_gid_management_action_frame(tpAniSirGlobal pCtx,
12568*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12569*5113495bSYour Name 	tDot11fVHTGidManagementActionFrame * pFrm, bool append_ie);
12570*5113495bSYour Name uint32_t dot11f_pack_vht_gid_management_action_frame(tpAniSirGlobal pCtx,
12571*5113495bSYour Name 	tDot11fVHTGidManagementActionFrame *pFrm, uint8_t *pBuf,
12572*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12573*5113495bSYour Name uint32_t dot11f_get_packed_vht_gid_management_action_frame_size(tpAniSirGlobal pCtx,
12574*5113495bSYour Name 	tDot11fVHTGidManagementActionFrame *pFrm,
12575*5113495bSYour Name 	uint32_t *pnNeeded);
12576*5113495bSYour Name 
12577*5113495bSYour Name #ifdef __cplusplus
12578*5113495bSYour Name } /* End extern "C". */
12579*5113495bSYour Name #endif /* C++ */
12580*5113495bSYour Name 
12581*5113495bSYour Name typedef struct sDot11fWMMAddTSRequest{
12582*5113495bSYour Name 	tDot11fFfCategory                  Category;
12583*5113495bSYour Name 	tDot11fFfAction                    Action;
12584*5113495bSYour Name 	tDot11fFfDialogToken               DialogToken;
12585*5113495bSYour Name 	tDot11fFfStatusCode                StatusCode;
12586*5113495bSYour Name 	tDot11fIEWMMTSPEC                  WMMTSPEC;
12587*5113495bSYour Name 	tDot11fIEESETrafStrmRateSet        ESETrafStrmRateSet;
12588*5113495bSYour Name } tDot11fWMMAddTSRequest;
12589*5113495bSYour Name 
12590*5113495bSYour Name #define DOT11F_WMMADDTSREQUEST (43)
12591*5113495bSYour Name 
12592*5113495bSYour Name #ifdef __cplusplus
12593*5113495bSYour Name extern "C" {
12594*5113495bSYour Name #endif /* C++ */
12595*5113495bSYour Name 
12596*5113495bSYour Name uint32_t dot11f_unpack_wmm_add_ts_request(tpAniSirGlobal pCtx,
12597*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12598*5113495bSYour Name 	tDot11fWMMAddTSRequest * pFrm, bool append_ie);
12599*5113495bSYour Name uint32_t dot11f_pack_wmm_add_ts_request(tpAniSirGlobal pCtx,
12600*5113495bSYour Name 	tDot11fWMMAddTSRequest *pFrm, uint8_t *pBuf,
12601*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12602*5113495bSYour Name uint32_t dot11f_get_packed_wmm_add_ts_request_size(tpAniSirGlobal pCtx,
12603*5113495bSYour Name 	tDot11fWMMAddTSRequest *pFrm,
12604*5113495bSYour Name 	uint32_t *pnNeeded);
12605*5113495bSYour Name 
12606*5113495bSYour Name #ifdef __cplusplus
12607*5113495bSYour Name } /* End extern "C". */
12608*5113495bSYour Name #endif /* C++ */
12609*5113495bSYour Name 
12610*5113495bSYour Name typedef struct sDot11fWMMAddTSResponse{
12611*5113495bSYour Name 	tDot11fFfCategory              Category;
12612*5113495bSYour Name 	tDot11fFfAction                Action;
12613*5113495bSYour Name 	tDot11fFfDialogToken           DialogToken;
12614*5113495bSYour Name 	tDot11fFfStatusCode            StatusCode;
12615*5113495bSYour Name 	tDot11fIEWMMTSPEC              WMMTSPEC;
12616*5113495bSYour Name 	tDot11fIEESETrafStrmMet        ESETrafStrmMet;
12617*5113495bSYour Name } tDot11fWMMAddTSResponse;
12618*5113495bSYour Name 
12619*5113495bSYour Name #define DOT11F_WMMADDTSRESPONSE (44)
12620*5113495bSYour Name 
12621*5113495bSYour Name #ifdef __cplusplus
12622*5113495bSYour Name extern "C" {
12623*5113495bSYour Name #endif /* C++ */
12624*5113495bSYour Name 
12625*5113495bSYour Name uint32_t dot11f_unpack_wmm_add_ts_response(tpAniSirGlobal pCtx,
12626*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12627*5113495bSYour Name 	tDot11fWMMAddTSResponse * pFrm, bool append_ie);
12628*5113495bSYour Name uint32_t dot11f_pack_wmm_add_ts_response(tpAniSirGlobal pCtx,
12629*5113495bSYour Name 	tDot11fWMMAddTSResponse *pFrm, uint8_t *pBuf,
12630*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12631*5113495bSYour Name uint32_t dot11f_get_packed_wmm_add_ts_response_size(tpAniSirGlobal pCtx,
12632*5113495bSYour Name 	tDot11fWMMAddTSResponse *pFrm,
12633*5113495bSYour Name 	uint32_t *pnNeeded);
12634*5113495bSYour Name 
12635*5113495bSYour Name #ifdef __cplusplus
12636*5113495bSYour Name } /* End extern "C". */
12637*5113495bSYour Name #endif /* C++ */
12638*5113495bSYour Name 
12639*5113495bSYour Name typedef struct sDot11fWMMDelTS{
12640*5113495bSYour Name 	tDot11fFfCategory           Category;
12641*5113495bSYour Name 	tDot11fFfAction             Action;
12642*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
12643*5113495bSYour Name 	tDot11fFfStatusCode         StatusCode;
12644*5113495bSYour Name 	tDot11fIEWMMTSPEC           WMMTSPEC;
12645*5113495bSYour Name } tDot11fWMMDelTS;
12646*5113495bSYour Name 
12647*5113495bSYour Name #define DOT11F_WMMDELTS (45)
12648*5113495bSYour Name 
12649*5113495bSYour Name #ifdef __cplusplus
12650*5113495bSYour Name extern "C" {
12651*5113495bSYour Name #endif /* C++ */
12652*5113495bSYour Name 
12653*5113495bSYour Name uint32_t dot11f_unpack_wmm_del_ts(tpAniSirGlobal pCtx,
12654*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12655*5113495bSYour Name 	tDot11fWMMDelTS * pFrm, bool append_ie);
12656*5113495bSYour Name uint32_t dot11f_pack_wmm_del_ts(tpAniSirGlobal pCtx,
12657*5113495bSYour Name 	tDot11fWMMDelTS *pFrm, uint8_t *pBuf,
12658*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12659*5113495bSYour Name uint32_t dot11f_get_packed_wmm_del_ts_size(tpAniSirGlobal pCtx,
12660*5113495bSYour Name 	tDot11fWMMDelTS *pFrm,
12661*5113495bSYour Name 	uint32_t *pnNeeded);
12662*5113495bSYour Name 
12663*5113495bSYour Name #ifdef __cplusplus
12664*5113495bSYour Name } /* End extern "C". */
12665*5113495bSYour Name #endif /* C++ */
12666*5113495bSYour Name 
12667*5113495bSYour Name typedef struct sDot11faddba_req{
12668*5113495bSYour Name 	tDot11fFfCategory                  Category;
12669*5113495bSYour Name 	tDot11fFfAction                    Action;
12670*5113495bSYour Name 	tDot11fFfDialogToken               DialogToken;
12671*5113495bSYour Name 	tDot11fFfaddba_param_set           addba_param_set;
12672*5113495bSYour Name 	tDot11fFfba_timeout                ba_timeout;
12673*5113495bSYour Name 	tDot11fFfba_start_seq_ctrl         ba_start_seq_ctrl;
12674*5113495bSYour Name 	tDot11fIEaddba_extn_element        addba_extn_element;
12675*5113495bSYour Name } tDot11faddba_req;
12676*5113495bSYour Name 
12677*5113495bSYour Name #define DOT11F_ADDBA_REQ (46)
12678*5113495bSYour Name 
12679*5113495bSYour Name #ifdef __cplusplus
12680*5113495bSYour Name extern "C" {
12681*5113495bSYour Name #endif /* C++ */
12682*5113495bSYour Name 
12683*5113495bSYour Name uint32_t dot11f_unpack_addba_req(tpAniSirGlobal pCtx,
12684*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12685*5113495bSYour Name 	tDot11faddba_req * pFrm, bool append_ie);
12686*5113495bSYour Name uint32_t dot11f_pack_addba_req(tpAniSirGlobal pCtx,
12687*5113495bSYour Name 	tDot11faddba_req *pFrm, uint8_t *pBuf,
12688*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12689*5113495bSYour Name uint32_t dot11f_get_packed_addba_req_size(tpAniSirGlobal pCtx,
12690*5113495bSYour Name 	tDot11faddba_req *pFrm,
12691*5113495bSYour Name 	uint32_t *pnNeeded);
12692*5113495bSYour Name 
12693*5113495bSYour Name #ifdef __cplusplus
12694*5113495bSYour Name } /* End extern "C". */
12695*5113495bSYour Name #endif /* C++ */
12696*5113495bSYour Name 
12697*5113495bSYour Name typedef struct sDot11faddba_rsp{
12698*5113495bSYour Name 	tDot11fFfCategory                  Category;
12699*5113495bSYour Name 	tDot11fFfAction                    Action;
12700*5113495bSYour Name 	tDot11fFfDialogToken               DialogToken;
12701*5113495bSYour Name 	tDot11fFfStatus                    Status;
12702*5113495bSYour Name 	tDot11fFfaddba_param_set           addba_param_set;
12703*5113495bSYour Name 	tDot11fFfba_timeout                ba_timeout;
12704*5113495bSYour Name 	tDot11fIEaddba_extn_element        addba_extn_element;
12705*5113495bSYour Name } tDot11faddba_rsp;
12706*5113495bSYour Name 
12707*5113495bSYour Name #define DOT11F_ADDBA_RSP (47)
12708*5113495bSYour Name 
12709*5113495bSYour Name #ifdef __cplusplus
12710*5113495bSYour Name extern "C" {
12711*5113495bSYour Name #endif /* C++ */
12712*5113495bSYour Name 
12713*5113495bSYour Name uint32_t dot11f_unpack_addba_rsp(tpAniSirGlobal pCtx,
12714*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12715*5113495bSYour Name 	tDot11faddba_rsp * pFrm, bool append_ie);
12716*5113495bSYour Name uint32_t dot11f_pack_addba_rsp(tpAniSirGlobal pCtx,
12717*5113495bSYour Name 	tDot11faddba_rsp *pFrm, uint8_t *pBuf,
12718*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12719*5113495bSYour Name uint32_t dot11f_get_packed_addba_rsp_size(tpAniSirGlobal pCtx,
12720*5113495bSYour Name 	tDot11faddba_rsp *pFrm,
12721*5113495bSYour Name 	uint32_t *pnNeeded);
12722*5113495bSYour Name 
12723*5113495bSYour Name #ifdef __cplusplus
12724*5113495bSYour Name } /* End extern "C". */
12725*5113495bSYour Name #endif /* C++ */
12726*5113495bSYour Name 
12727*5113495bSYour Name typedef struct sDot11fdelba_req{
12728*5113495bSYour Name 	tDot11fFfCategory               Category;
12729*5113495bSYour Name 	tDot11fFfAction                 Action;
12730*5113495bSYour Name 	tDot11fFfdelba_param_set        delba_param_set;
12731*5113495bSYour Name 	tDot11fFfReason                 Reason;
12732*5113495bSYour Name } tDot11fdelba_req;
12733*5113495bSYour Name 
12734*5113495bSYour Name #define DOT11F_DELBA_REQ (48)
12735*5113495bSYour Name 
12736*5113495bSYour Name #ifdef __cplusplus
12737*5113495bSYour Name extern "C" {
12738*5113495bSYour Name #endif /* C++ */
12739*5113495bSYour Name 
12740*5113495bSYour Name uint32_t dot11f_unpack_delba_req(tpAniSirGlobal pCtx,
12741*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12742*5113495bSYour Name 	tDot11fdelba_req * pFrm, bool append_ie);
12743*5113495bSYour Name uint32_t dot11f_pack_delba_req(tpAniSirGlobal pCtx,
12744*5113495bSYour Name 	tDot11fdelba_req *pFrm, uint8_t *pBuf,
12745*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12746*5113495bSYour Name uint32_t dot11f_get_packed_delba_req_size(tpAniSirGlobal pCtx,
12747*5113495bSYour Name 	tDot11fdelba_req *pFrm,
12748*5113495bSYour Name 	uint32_t *pnNeeded);
12749*5113495bSYour Name 
12750*5113495bSYour Name #ifdef __cplusplus
12751*5113495bSYour Name } /* End extern "C". */
12752*5113495bSYour Name #endif /* C++ */
12753*5113495bSYour Name 
12754*5113495bSYour Name typedef struct sDot11fepcs_neg_req{
12755*5113495bSYour Name 	tDot11fFfCategory           Category;
12756*5113495bSYour Name 	tDot11fFfAction             Action;
12757*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
12758*5113495bSYour Name } tDot11fepcs_neg_req;
12759*5113495bSYour Name 
12760*5113495bSYour Name #define DOT11F_EPCS_NEG_REQ (49)
12761*5113495bSYour Name 
12762*5113495bSYour Name #ifdef __cplusplus
12763*5113495bSYour Name extern "C" {
12764*5113495bSYour Name #endif /* C++ */
12765*5113495bSYour Name 
12766*5113495bSYour Name uint32_t dot11f_unpack_epcs_neg_req(tpAniSirGlobal pCtx,
12767*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12768*5113495bSYour Name 	tDot11fepcs_neg_req * pFrm, bool append_ie);
12769*5113495bSYour Name uint32_t dot11f_pack_epcs_neg_req(tpAniSirGlobal pCtx,
12770*5113495bSYour Name 	tDot11fepcs_neg_req *pFrm, uint8_t *pBuf,
12771*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12772*5113495bSYour Name uint32_t dot11f_get_packed_epcs_neg_reqSize(tpAniSirGlobal pCtx,
12773*5113495bSYour Name 	tDot11fepcs_neg_req *pFrm,
12774*5113495bSYour Name 	uint32_t *pnNeeded);
12775*5113495bSYour Name 
12776*5113495bSYour Name #ifdef __cplusplus
12777*5113495bSYour Name } /* End extern "C". */
12778*5113495bSYour Name #endif /* C++ */
12779*5113495bSYour Name 
12780*5113495bSYour Name typedef struct sDot11fepcs_neg_rsp{
12781*5113495bSYour Name 	tDot11fFfCategory           Category;
12782*5113495bSYour Name 	tDot11fFfAction             Action;
12783*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
12784*5113495bSYour Name 	tDot11fFfStatus             Status;
12785*5113495bSYour Name } tDot11fepcs_neg_rsp;
12786*5113495bSYour Name 
12787*5113495bSYour Name #define DOT11F_EPCS_NEG_RSP (50)
12788*5113495bSYour Name 
12789*5113495bSYour Name #ifdef __cplusplus
12790*5113495bSYour Name extern "C" {
12791*5113495bSYour Name #endif /* C++ */
12792*5113495bSYour Name 
12793*5113495bSYour Name uint32_t dot11f_unpack_epcs_neg_rsp(tpAniSirGlobal pCtx,
12794*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12795*5113495bSYour Name 	tDot11fepcs_neg_rsp * pFrm, bool append_ie);
12796*5113495bSYour Name uint32_t dot11f_pack_epcs_neg_rsp(tpAniSirGlobal pCtx,
12797*5113495bSYour Name 	tDot11fepcs_neg_rsp *pFrm, uint8_t *pBuf,
12798*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12799*5113495bSYour Name uint32_t dot11f_get_packed_epcs_neg_rspSize(tpAniSirGlobal pCtx,
12800*5113495bSYour Name 	tDot11fepcs_neg_rsp *pFrm,
12801*5113495bSYour Name 	uint32_t *pnNeeded);
12802*5113495bSYour Name 
12803*5113495bSYour Name #ifdef __cplusplus
12804*5113495bSYour Name } /* End extern "C". */
12805*5113495bSYour Name #endif /* C++ */
12806*5113495bSYour Name 
12807*5113495bSYour Name typedef struct sDot11fepcs_teardown{
12808*5113495bSYour Name 	tDot11fFfCategory        Category;
12809*5113495bSYour Name 	tDot11fFfAction          Action;
12810*5113495bSYour Name } tDot11fepcs_teardown;
12811*5113495bSYour Name 
12812*5113495bSYour Name #define DOT11F_EPCS_TEARDOWN (51)
12813*5113495bSYour Name 
12814*5113495bSYour Name #ifdef __cplusplus
12815*5113495bSYour Name extern "C" {
12816*5113495bSYour Name #endif /* C++ */
12817*5113495bSYour Name 
12818*5113495bSYour Name uint32_t dot11f_unpack_epcs_teardown(tpAniSirGlobal pCtx,
12819*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12820*5113495bSYour Name 	tDot11fepcs_teardown * pFrm, bool append_ie);
12821*5113495bSYour Name uint32_t dot11f_pack_epcs_teardown(tpAniSirGlobal pCtx,
12822*5113495bSYour Name 	tDot11fepcs_teardown *pFrm, uint8_t *pBuf,
12823*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12824*5113495bSYour Name uint32_t dot11f_get_packed_epcs_teardownSize(tpAniSirGlobal pCtx,
12825*5113495bSYour Name 	tDot11fepcs_teardown *pFrm,
12826*5113495bSYour Name 	uint32_t *pnNeeded);
12827*5113495bSYour Name 
12828*5113495bSYour Name #ifdef __cplusplus
12829*5113495bSYour Name } /* End extern "C". */
12830*5113495bSYour Name #endif /* C++ */
12831*5113495bSYour Name 
12832*5113495bSYour Name typedef struct sDot11fext_channel_switch_action_frame{
12833*5113495bSYour Name 	tDot11fFfCategory                          Category;
12834*5113495bSYour Name 	tDot11fFfAction                            Action;
12835*5113495bSYour Name 	tDot11fFfext_chan_switch_ann_action        ext_chan_switch_ann_action;
12836*5113495bSYour Name 	tDot11fIEWiderBWChanSwitchAnn              WiderBWChanSwitchAnn;
12837*5113495bSYour Name 	tDot11fIEqcn_ie                            qcn_ie;
12838*5113495bSYour Name 	tDot11fIEbw_ind_element                    bw_ind_element;
12839*5113495bSYour Name } tDot11fext_channel_switch_action_frame;
12840*5113495bSYour Name 
12841*5113495bSYour Name #define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME (52)
12842*5113495bSYour Name 
12843*5113495bSYour Name #ifdef __cplusplus
12844*5113495bSYour Name extern "C" {
12845*5113495bSYour Name #endif /* C++ */
12846*5113495bSYour Name 
12847*5113495bSYour Name uint32_t dot11f_unpack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx,
12848*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12849*5113495bSYour Name 	tDot11fext_channel_switch_action_frame * pFrm, bool append_ie);
12850*5113495bSYour Name uint32_t dot11f_pack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx,
12851*5113495bSYour Name 	tDot11fext_channel_switch_action_frame *pFrm, uint8_t *pBuf,
12852*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12853*5113495bSYour Name uint32_t dot11f_get_packed_ext_channel_switch_action_frame_size(tpAniSirGlobal pCtx,
12854*5113495bSYour Name 	tDot11fext_channel_switch_action_frame *pFrm,
12855*5113495bSYour Name 	uint32_t *pnNeeded);
12856*5113495bSYour Name 
12857*5113495bSYour Name #ifdef __cplusplus
12858*5113495bSYour Name } /* End extern "C". */
12859*5113495bSYour Name #endif /* C++ */
12860*5113495bSYour Name 
12861*5113495bSYour Name typedef struct sDot11fht2040_bss_coexistence_mgmt_action_frame{
12862*5113495bSYour Name 	tDot11fFfCategory                            Category;
12863*5113495bSYour Name 	tDot11fFfAction                              Action;
12864*5113495bSYour Name 	tDot11fIEht2040_bss_coexistence              ht2040_bss_coexistence;
12865*5113495bSYour Name 	tDot11fIEht2040_bss_intolerant_report        ht2040_bss_intolerant_report;
12866*5113495bSYour Name } tDot11fht2040_bss_coexistence_mgmt_action_frame;
12867*5113495bSYour Name 
12868*5113495bSYour Name #define DOT11F_HT2040_BSS_COEXISTENCE_MGMT_ACTION_FRAME (53)
12869*5113495bSYour Name 
12870*5113495bSYour Name #ifdef __cplusplus
12871*5113495bSYour Name extern "C" {
12872*5113495bSYour Name #endif /* C++ */
12873*5113495bSYour Name 
12874*5113495bSYour Name uint32_t dot11f_unpack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx,
12875*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12876*5113495bSYour Name 	tDot11fht2040_bss_coexistence_mgmt_action_frame * pFrm, bool append_ie);
12877*5113495bSYour Name uint32_t dot11f_pack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx,
12878*5113495bSYour Name 	tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm, uint8_t *pBuf,
12879*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12880*5113495bSYour Name uint32_t dot11f_get_packed_ht2040_bss_coexistence_mgmt_action_frameSize(tpAniSirGlobal pCtx,
12881*5113495bSYour Name 	tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm,
12882*5113495bSYour Name 	uint32_t *pnNeeded);
12883*5113495bSYour Name 
12884*5113495bSYour Name #ifdef __cplusplus
12885*5113495bSYour Name } /* End extern "C". */
12886*5113495bSYour Name #endif /* C++ */
12887*5113495bSYour Name 
12888*5113495bSYour Name typedef struct sDot11fmscs_request_action_frame{
12889*5113495bSYour Name 	tDot11fFfCategory                  Category;
12890*5113495bSYour Name 	tDot11fFfAction                    Action;
12891*5113495bSYour Name 	tDot11fFfDialogToken               DialogToken;
12892*5113495bSYour Name 	tDot11fIEdescriptor_element        descriptor_element;
12893*5113495bSYour Name } tDot11fmscs_request_action_frame;
12894*5113495bSYour Name 
12895*5113495bSYour Name #define DOT11F_MSCS_REQUEST_ACTION_FRAME (54)
12896*5113495bSYour Name 
12897*5113495bSYour Name #ifdef __cplusplus
12898*5113495bSYour Name extern "C" {
12899*5113495bSYour Name #endif /* C++ */
12900*5113495bSYour Name 
12901*5113495bSYour Name uint32_t dot11f_unpack_mscs_request_action_frame(tpAniSirGlobal pCtx,
12902*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12903*5113495bSYour Name 	tDot11fmscs_request_action_frame * pFrm, bool append_ie);
12904*5113495bSYour Name uint32_t dot11f_pack_mscs_request_action_frame(tpAniSirGlobal pCtx,
12905*5113495bSYour Name 	tDot11fmscs_request_action_frame *pFrm, uint8_t *pBuf,
12906*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12907*5113495bSYour Name uint32_t dot11f_get_packed_mscs_request_action_frameSize(tpAniSirGlobal pCtx,
12908*5113495bSYour Name 	tDot11fmscs_request_action_frame *pFrm,
12909*5113495bSYour Name 	uint32_t *pnNeeded);
12910*5113495bSYour Name 
12911*5113495bSYour Name #ifdef __cplusplus
12912*5113495bSYour Name } /* End extern "C". */
12913*5113495bSYour Name #endif /* C++ */
12914*5113495bSYour Name 
12915*5113495bSYour Name typedef struct sDot11fp2p_oper_chan_change_confirm{
12916*5113495bSYour Name 	tDot11fFfCategory                  Category;
12917*5113495bSYour Name 	tDot11fFfp2p_action_oui            p2p_action_oui;
12918*5113495bSYour Name 	tDot11fFfp2p_action_subtype        p2p_action_subtype;
12919*5113495bSYour Name 	tDot11fFfDialogToken               DialogToken;
12920*5113495bSYour Name 	tDot11fIEHTCaps                    HTCaps;
12921*5113495bSYour Name 	tDot11fIEVHTCaps                   VHTCaps;
12922*5113495bSYour Name 	tDot11fIEOperatingMode             OperatingMode;
12923*5113495bSYour Name } tDot11fp2p_oper_chan_change_confirm;
12924*5113495bSYour Name 
12925*5113495bSYour Name #define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (55)
12926*5113495bSYour Name 
12927*5113495bSYour Name #ifdef __cplusplus
12928*5113495bSYour Name extern "C" {
12929*5113495bSYour Name #endif /* C++ */
12930*5113495bSYour Name 
12931*5113495bSYour Name uint32_t dot11f_unpack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx,
12932*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12933*5113495bSYour Name 	tDot11fp2p_oper_chan_change_confirm * pFrm, bool append_ie);
12934*5113495bSYour Name uint32_t dot11f_pack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx,
12935*5113495bSYour Name 	tDot11fp2p_oper_chan_change_confirm *pFrm, uint8_t *pBuf,
12936*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12937*5113495bSYour Name uint32_t dot11f_get_packed_p2p_oper_chan_change_confirmSize(tpAniSirGlobal pCtx,
12938*5113495bSYour Name 	tDot11fp2p_oper_chan_change_confirm *pFrm,
12939*5113495bSYour Name 	uint32_t *pnNeeded);
12940*5113495bSYour Name 
12941*5113495bSYour Name #ifdef __cplusplus
12942*5113495bSYour Name } /* End extern "C". */
12943*5113495bSYour Name #endif /* C++ */
12944*5113495bSYour Name 
12945*5113495bSYour Name typedef struct sDot11ft2lm_neg_req{
12946*5113495bSYour Name 	tDot11fFfCategory           Category;
12947*5113495bSYour Name 	tDot11fFfAction             Action;
12948*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
12949*5113495bSYour Name 	uint16_t                    num_t2lm_ie;
12950*5113495bSYour Name 	tDot11fIEt2lm_ie            t2lm_ie[2];
12951*5113495bSYour Name } tDot11ft2lm_neg_req;
12952*5113495bSYour Name 
12953*5113495bSYour Name #define DOT11F_T2LM_NEG_REQ (56)
12954*5113495bSYour Name 
12955*5113495bSYour Name #ifdef __cplusplus
12956*5113495bSYour Name extern "C" {
12957*5113495bSYour Name #endif /* C++ */
12958*5113495bSYour Name 
12959*5113495bSYour Name uint32_t dot11f_unpack_t2lm_neg_req(tpAniSirGlobal pCtx,
12960*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12961*5113495bSYour Name 	tDot11ft2lm_neg_req * pFrm, bool append_ie);
12962*5113495bSYour Name uint32_t dot11f_pack_t2lm_neg_req(tpAniSirGlobal pCtx,
12963*5113495bSYour Name 	tDot11ft2lm_neg_req *pFrm, uint8_t *pBuf,
12964*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12965*5113495bSYour Name uint32_t dot11f_get_packed_t2lm_neg_reqSize(tpAniSirGlobal pCtx,
12966*5113495bSYour Name 	tDot11ft2lm_neg_req *pFrm,
12967*5113495bSYour Name 	uint32_t *pnNeeded);
12968*5113495bSYour Name 
12969*5113495bSYour Name #ifdef __cplusplus
12970*5113495bSYour Name } /* End extern "C". */
12971*5113495bSYour Name #endif /* C++ */
12972*5113495bSYour Name 
12973*5113495bSYour Name typedef struct sDot11ft2lm_neg_rsp{
12974*5113495bSYour Name 	tDot11fFfCategory           Category;
12975*5113495bSYour Name 	tDot11fFfAction             Action;
12976*5113495bSYour Name 	tDot11fFfDialogToken        DialogToken;
12977*5113495bSYour Name 	tDot11fFfStatus             Status;
12978*5113495bSYour Name } tDot11ft2lm_neg_rsp;
12979*5113495bSYour Name 
12980*5113495bSYour Name #define DOT11F_T2LM_NEG_RSP (57)
12981*5113495bSYour Name 
12982*5113495bSYour Name #ifdef __cplusplus
12983*5113495bSYour Name extern "C" {
12984*5113495bSYour Name #endif /* C++ */
12985*5113495bSYour Name 
12986*5113495bSYour Name uint32_t dot11f_unpack_t2lm_neg_rsp(tpAniSirGlobal pCtx,
12987*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
12988*5113495bSYour Name 	tDot11ft2lm_neg_rsp * pFrm, bool append_ie);
12989*5113495bSYour Name uint32_t dot11f_pack_t2lm_neg_rsp(tpAniSirGlobal pCtx,
12990*5113495bSYour Name 	tDot11ft2lm_neg_rsp *pFrm, uint8_t *pBuf,
12991*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
12992*5113495bSYour Name uint32_t dot11f_get_packed_t2lm_neg_rspSize(tpAniSirGlobal pCtx,
12993*5113495bSYour Name 	tDot11ft2lm_neg_rsp *pFrm,
12994*5113495bSYour Name 	uint32_t *pnNeeded);
12995*5113495bSYour Name 
12996*5113495bSYour Name #ifdef __cplusplus
12997*5113495bSYour Name } /* End extern "C". */
12998*5113495bSYour Name #endif /* C++ */
12999*5113495bSYour Name 
13000*5113495bSYour Name typedef struct sDot11ft2lm_teardown{
13001*5113495bSYour Name 	tDot11fFfCategory        Category;
13002*5113495bSYour Name 	tDot11fFfAction          Action;
13003*5113495bSYour Name } tDot11ft2lm_teardown;
13004*5113495bSYour Name 
13005*5113495bSYour Name #define DOT11F_T2LM_TEARDOWN (58)
13006*5113495bSYour Name 
13007*5113495bSYour Name #ifdef __cplusplus
13008*5113495bSYour Name extern "C" {
13009*5113495bSYour Name #endif /* C++ */
13010*5113495bSYour Name 
13011*5113495bSYour Name uint32_t dot11f_unpack_t2lm_teardown(tpAniSirGlobal pCtx,
13012*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
13013*5113495bSYour Name 	tDot11ft2lm_teardown * pFrm, bool append_ie);
13014*5113495bSYour Name uint32_t dot11f_pack_t2lm_teardown(tpAniSirGlobal pCtx,
13015*5113495bSYour Name 	tDot11ft2lm_teardown *pFrm, uint8_t *pBuf,
13016*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
13017*5113495bSYour Name uint32_t dot11f_get_packed_t2lm_teardownSize(tpAniSirGlobal pCtx,
13018*5113495bSYour Name 	tDot11ft2lm_teardown *pFrm,
13019*5113495bSYour Name 	uint32_t *pnNeeded);
13020*5113495bSYour Name 
13021*5113495bSYour Name #ifdef __cplusplus
13022*5113495bSYour Name } /* End extern "C". */
13023*5113495bSYour Name #endif /* C++ */
13024*5113495bSYour Name 
13025*5113495bSYour Name typedef struct sDot11fvendor_action_frame{
13026*5113495bSYour Name 	tDot11fFfCategory                     Category;
13027*5113495bSYour Name 	tDot11fFfvendor_oui                   vendor_oui;
13028*5113495bSYour Name 	tDot11fFfvendor_action_subtype        vendor_action_subtype;
13029*5113495bSYour Name } tDot11fvendor_action_frame;
13030*5113495bSYour Name 
13031*5113495bSYour Name #define DOT11F_VENDOR_ACTION_FRAME (59)
13032*5113495bSYour Name 
13033*5113495bSYour Name #ifdef __cplusplus
13034*5113495bSYour Name extern "C" {
13035*5113495bSYour Name #endif /* C++ */
13036*5113495bSYour Name 
13037*5113495bSYour Name uint32_t dot11f_unpack_vendor_action_frame(tpAniSirGlobal pCtx,
13038*5113495bSYour Name 	uint8_t *pBuf, uint32_t nBuf,
13039*5113495bSYour Name 	tDot11fvendor_action_frame * pFrm, bool append_ie);
13040*5113495bSYour Name uint32_t dot11f_pack_vendor_action_frame(tpAniSirGlobal pCtx,
13041*5113495bSYour Name 	tDot11fvendor_action_frame *pFrm, uint8_t *pBuf,
13042*5113495bSYour Name 	uint32_t nBuf, uint32_t *pnConsumed);
13043*5113495bSYour Name uint32_t dot11f_get_packed_vendor_action_frameSize(tpAniSirGlobal pCtx,
13044*5113495bSYour Name 	tDot11fvendor_action_frame *pFrm,
13045*5113495bSYour Name 	uint32_t *pnNeeded);
13046*5113495bSYour Name 
13047*5113495bSYour Name #ifdef __cplusplus
13048*5113495bSYour Name } /* End extern "C". */
13049*5113495bSYour Name #endif /* C++ */
13050*5113495bSYour Name 
13051*5113495bSYour Name #endif /* DOT11F_H */
13052