blob: 7fe0dc4fcf47ecf7b831299f1d57004c25f4c027 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
2 * Copyright (c) 2012, Code Aurora Forum. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/**
23 */
24
25#ifndef DOT11F_H
26#define DOT11F_H
27/**
28 * \file dot11f.h
29 *
30 * \brief Structures, function prototypes & definitions
31 * for working with 802.11 Frames
32 *
33 *
34 * Copyright (C) 2012 Airgo Networks, Incorporated.
35 *
36 *
37 * This file was automatically generated by 'framesc'
38 * Tue May 15 13:12:01 2012 from the following file(s):
39 *
40 * dot11f.frms
41 *
42 * PLEASE DON'T EDIT THIS FILE BY HAND!
43 *
44 * Instead, please update the input files & re-run
45 * 'framesc' For more information on 'framesc' & the
46 * frames language, run 'framesc --help'.
47 *
48 *
49 */
50
51typedef tANI_U32 tDOT11F_U64[2];
52
53#if defined ( _MSC_VER )
54# pragma warning (disable: 4214) /* nonstandard extension used */
55#endif /* Microsoft C/C++ bit field types other than int */
56
57/*
58 * Frames Return Codes:
59 *
60 * Success is indicated by a return value of zero. Failure is indicated
61 * by the presence of the high bit. Warnings encountered in the course
62 * of a successful parse are indicated by various bits in the lower 31
63 * being turned on.
64 *
65 * For instance, a return value of 0x0000000a would indicate that the
66 * parse succeeded, but that a mandatory IE wasn't present, and some IE
67 * was found to be corrupt.
68 *
69 *
70 */
71
72#define DOT11F_PARSE_SUCCESS ( 0x00000000 )
73#define DOT11F_UNKNOWN_IES ( 0x00000001 )
74#define DOT11F_MANDATORY_IE_MISSING ( 0x00000002 )
75#define DOT11F_INCOMPLETE_IE ( 0x00000004 )
76#define DOT11F_SKIPPED_BAD_IE ( 0x00000008 )
77#define DOT11F_LAST_IE_TOO_LONG ( 0x00000010 )
78#define DOT11F_DUPLICATE_IE ( 0x00000020 )
79#define DOT11F_BAD_FIXED_VALUE ( 0x00000040 )
80#define DOT11F_INCOMPLETE_TLV ( 0x00000080 )
81#define DOT11F_INVALID_TLV_LENGTH ( 0x00000100 )
82#define DOT11F_SKIPPED_BAD_TLV ( 0x00000200 )
83#define DOT11F_UNKNOWN_TLVS ( 0x00000400 )
84#define DOT11F_LAST_TLV_TOO_LONG ( 0x00000800 )
85#define DOT11F_INTERNAL_ERROR ( 0x10000001 )
86#define DOT11F_MISSING_FIXED_FIELD ( 0x10000002 )
87#define DOT11F_BAD_INPUT_BUFFER ( 0x10000003 )
88#define DOT11F_BAD_OUTPUT_BUFFER ( 0x10000004 )
89#define DOT11F_BUFFER_OVERFLOW ( 0x10000005 )
90#define DOT11F_MANDATORY_TLV_MISSING ( 0x00001000 )
91#define DOT11F_FAILED(code) ( (code) & 0x10000000 )
92#define DOT11F_WARNED(code) ( ( ( 0 == (code) ) & 0x10000000 ) && code)
93#define DOT11F_SUCCEEDED(code) ( (code) == 0 )
94
95/*********************************************************************
96 * Fixed Fields *
97 ********************************************************************/
98
99typedef struct sDot11fFfAID {
100 tANI_U16 associd;
101} tDot11fFfAID;
102
103#define DOT11F_FF_AID_LEN ( 2 )
104
105void dot11fUnpackFfAID(tpAniSirGlobal, tANI_U8*, tDot11fFfAID*);
106
107void dot11fPackFfAID(tpAniSirGlobal, tDot11fFfAID*, tANI_U8*);
108
109typedef struct sDot11fFfAction {
110 tANI_U8 action;
111} tDot11fFfAction;
112
113#define DOT11F_FF_ACTION_LEN ( 1 )
114
115void dot11fUnpackFfAction(tpAniSirGlobal, tANI_U8*, tDot11fFfAction*);
116
117void dot11fPackFfAction(tpAniSirGlobal, tDot11fFfAction*, tANI_U8*);
118
119typedef struct sDot11fFfAddBAParameterSet {
120 tANI_U16 amsduSupported: 1;
121 tANI_U16 policy: 1;
122 tANI_U16 tid: 4;
123 tANI_U16 bufferSize: 10;
124} tDot11fFfAddBAParameterSet;
125
126#define DOT11F_FF_ADDBAPARAMETERSET_LEN ( 2 )
127
128void dot11fUnpackFfAddBAParameterSet(tpAniSirGlobal, tANI_U8*, tDot11fFfAddBAParameterSet*);
129
130void dot11fPackFfAddBAParameterSet(tpAniSirGlobal, tDot11fFfAddBAParameterSet*, tANI_U8*);
131
132#define ADDBAPARAMETERSET_AMSDUSUPPORTED_OFFSET 0
133#define ADDBAPARAMETERSET_AMSDUSUPPORTED_WIDTH 1
134#define ADDBAPARAMETERSET_POLICY_OFFSET 1
135#define ADDBAPARAMETERSET_POLICY_WIDTH 1
136#define ADDBAPARAMETERSET_TID_OFFSET 2
137#define ADDBAPARAMETERSET_TID_WIDTH 4
138#define ADDBAPARAMETERSET_BUFFERSIZE_OFFSET 6
139#define ADDBAPARAMETERSET_BUFFERSIZE_WIDTH 10
140
141typedef struct sDot11fFfAuthAlgo {
142 tANI_U16 algo;
143} tDot11fFfAuthAlgo;
144
145#define DOT11F_FF_AUTHALGO_LEN ( 2 )
146
147void dot11fUnpackFfAuthAlgo(tpAniSirGlobal, tANI_U8*, tDot11fFfAuthAlgo*);
148
149void dot11fPackFfAuthAlgo(tpAniSirGlobal, tDot11fFfAuthAlgo*, tANI_U8*);
150
151typedef struct sDot11fFfAuthSeqNo {
152 tANI_U16 no;
153} tDot11fFfAuthSeqNo;
154
155#define DOT11F_FF_AUTHSEQNO_LEN ( 2 )
156
157void dot11fUnpackFfAuthSeqNo(tpAniSirGlobal, tANI_U8*, tDot11fFfAuthSeqNo*);
158
159void dot11fPackFfAuthSeqNo(tpAniSirGlobal, tDot11fFfAuthSeqNo*, tANI_U8*);
160
161typedef struct sDot11fFfBAStartingSequenceControl {
162 tANI_U16 fragNumber: 4;
163 tANI_U16 ssn: 12;
164} tDot11fFfBAStartingSequenceControl;
165
166#define DOT11F_FF_BASTARTINGSEQUENCECONTROL_LEN ( 2 )
167
168void dot11fUnpackFfBAStartingSequenceControl(tpAniSirGlobal, tANI_U8*, tDot11fFfBAStartingSequenceControl*);
169
170void dot11fPackFfBAStartingSequenceControl(tpAniSirGlobal, tDot11fFfBAStartingSequenceControl*, tANI_U8*);
171
172#define BASTARTINGSEQUENCECONTROL_FRAGNUMBER_OFFSET 0
173#define BASTARTINGSEQUENCECONTROL_FRAGNUMBER_WIDTH 4
174#define BASTARTINGSEQUENCECONTROL_SSN_OFFSET 4
175#define BASTARTINGSEQUENCECONTROL_SSN_WIDTH 12
176
177typedef struct sDot11fFfBATimeout {
178 tANI_U16 timeout;
179} tDot11fFfBATimeout;
180
181#define DOT11F_FF_BATIMEOUT_LEN ( 2 )
182
183void dot11fUnpackFfBATimeout(tpAniSirGlobal, tANI_U8*, tDot11fFfBATimeout*);
184
185void dot11fPackFfBATimeout(tpAniSirGlobal, tDot11fFfBATimeout*, tANI_U8*);
186
187typedef struct sDot11fFfBeaconInterval {
188 tANI_U16 interval;
189} tDot11fFfBeaconInterval;
190
191#define DOT11F_FF_BEACONINTERVAL_LEN ( 2 )
192
193void dot11fUnpackFfBeaconInterval(tpAniSirGlobal, tANI_U8*, tDot11fFfBeaconInterval*);
194
195void dot11fPackFfBeaconInterval(tpAniSirGlobal, tDot11fFfBeaconInterval*, tANI_U8*);
196
197typedef struct sDot11fFfCapabilities {
198 tANI_U16 ess: 1;
199 tANI_U16 ibss: 1;
200 tANI_U16 cfPollable: 1;
201 tANI_U16 cfPollReq: 1;
202 tANI_U16 privacy: 1;
203 tANI_U16 shortPreamble: 1;
204 tANI_U16 pbcc: 1;
205 tANI_U16 channelAgility: 1;
206 tANI_U16 spectrumMgt: 1;
207 tANI_U16 qos: 1;
208 tANI_U16 shortSlotTime: 1;
209 tANI_U16 apsd: 1;
210 tANI_U16 rrm: 1;
211 tANI_U16 dsssOfdm: 1;
212 tANI_U16 delayedBA: 1;
213 tANI_U16 immediateBA: 1;
214} tDot11fFfCapabilities;
215
216#define DOT11F_FF_CAPABILITIES_LEN ( 2 )
217
218void dot11fUnpackFfCapabilities(tpAniSirGlobal, tANI_U8*, tDot11fFfCapabilities*);
219
220void dot11fPackFfCapabilities(tpAniSirGlobal, tDot11fFfCapabilities*, tANI_U8*);
221
222#define CAPABILITIES_ESS_OFFSET 0
223#define CAPABILITIES_ESS_WIDTH 1
224#define CAPABILITIES_IBSS_OFFSET 1
225#define CAPABILITIES_IBSS_WIDTH 1
226#define CAPABILITIES_CFPOLLABLE_OFFSET 2
227#define CAPABILITIES_CFPOLLABLE_WIDTH 1
228#define CAPABILITIES_CFPOLLREQ_OFFSET 3
229#define CAPABILITIES_CFPOLLREQ_WIDTH 1
230#define CAPABILITIES_PRIVACY_OFFSET 4
231#define CAPABILITIES_PRIVACY_WIDTH 1
232#define CAPABILITIES_SHORTPREAMBLE_OFFSET 5
233#define CAPABILITIES_SHORTPREAMBLE_WIDTH 1
234#define CAPABILITIES_PBCC_OFFSET 6
235#define CAPABILITIES_PBCC_WIDTH 1
236#define CAPABILITIES_CHANNELAGILITY_OFFSET 7
237#define CAPABILITIES_CHANNELAGILITY_WIDTH 1
238#define CAPABILITIES_SPECTRUMMGT_OFFSET 8
239#define CAPABILITIES_SPECTRUMMGT_WIDTH 1
240#define CAPABILITIES_QOS_OFFSET 9
241#define CAPABILITIES_QOS_WIDTH 1
242#define CAPABILITIES_SHORTSLOTTIME_OFFSET 10
243#define CAPABILITIES_SHORTSLOTTIME_WIDTH 1
244#define CAPABILITIES_APSD_OFFSET 11
245#define CAPABILITIES_APSD_WIDTH 1
246#define CAPABILITIES_RRM_OFFSET 12
247#define CAPABILITIES_RRM_WIDTH 1
248#define CAPABILITIES_DSSSOFDM_OFFSET 13
249#define CAPABILITIES_DSSSOFDM_WIDTH 1
250#define CAPABILITIES_DELAYEDBA_OFFSET 14
251#define CAPABILITIES_DELAYEDBA_WIDTH 1
252#define CAPABILITIES_IMMEDIATEBA_OFFSET 15
253#define CAPABILITIES_IMMEDIATEBA_WIDTH 1
254
255typedef struct sDot11fFfCategory {
256 tANI_U8 category;
257} tDot11fFfCategory;
258
259#define DOT11F_FF_CATEGORY_LEN ( 1 )
260
261void dot11fUnpackFfCategory(tpAniSirGlobal, tANI_U8*, tDot11fFfCategory*);
262
263void dot11fPackFfCategory(tpAniSirGlobal, tDot11fFfCategory*, tANI_U8*);
264
265typedef struct sDot11fFfCurrentAPAddress {
266 tANI_U8 mac[6];
267} tDot11fFfCurrentAPAddress;
268
269#define DOT11F_FF_CURRENTAPADDRESS_LEN ( 6 )
270
271void dot11fUnpackFfCurrentAPAddress(tpAniSirGlobal, tANI_U8*, tDot11fFfCurrentAPAddress*);
272
273void dot11fPackFfCurrentAPAddress(tpAniSirGlobal, tDot11fFfCurrentAPAddress*, tANI_U8*);
274
275typedef struct sDot11fFfDelBAParameterSet {
276 tANI_U16 reserved: 11;
277 tANI_U16 initiator: 1;
278 tANI_U16 tid: 4;
279} tDot11fFfDelBAParameterSet;
280
281#define DOT11F_FF_DELBAPARAMETERSET_LEN ( 2 )
282
283void dot11fUnpackFfDelBAParameterSet(tpAniSirGlobal, tANI_U8*, tDot11fFfDelBAParameterSet*);
284
285void dot11fPackFfDelBAParameterSet(tpAniSirGlobal, tDot11fFfDelBAParameterSet*, tANI_U8*);
286
287#define DELBAPARAMETERSET_RESERVED_OFFSET 0
288#define DELBAPARAMETERSET_RESERVED_WIDTH 11
289#define DELBAPARAMETERSET_INITIATOR_OFFSET 11
290#define DELBAPARAMETERSET_INITIATOR_WIDTH 1
291#define DELBAPARAMETERSET_TID_OFFSET 12
292#define DELBAPARAMETERSET_TID_WIDTH 4
293
294typedef struct sDot11fFfDialogToken {
295 tANI_U8 token;
296} tDot11fFfDialogToken;
297
298#define DOT11F_FF_DIALOGTOKEN_LEN ( 1 )
299
300void dot11fUnpackFfDialogToken(tpAniSirGlobal, tANI_U8*, tDot11fFfDialogToken*);
301
302void dot11fPackFfDialogToken(tpAniSirGlobal, tDot11fFfDialogToken*, tANI_U8*);
303
304typedef struct sDot11fFfLinkMargin {
305 tANI_U8 linkMargin;
306} tDot11fFfLinkMargin;
307
308#define DOT11F_FF_LINKMARGIN_LEN ( 1 )
309
310void dot11fUnpackFfLinkMargin(tpAniSirGlobal, tANI_U8*, tDot11fFfLinkMargin*);
311
312void dot11fPackFfLinkMargin(tpAniSirGlobal, tDot11fFfLinkMargin*, tANI_U8*);
313
314typedef struct sDot11fFfListenInterval {
315 tANI_U16 interval;
316} tDot11fFfListenInterval;
317
318#define DOT11F_FF_LISTENINTERVAL_LEN ( 2 )
319
320void dot11fUnpackFfListenInterval(tpAniSirGlobal, tANI_U8*, tDot11fFfListenInterval*);
321
322void dot11fPackFfListenInterval(tpAniSirGlobal, tDot11fFfListenInterval*, tANI_U8*);
323
324typedef struct sDot11fFfMaxTxPower {
325 tANI_U8 maxTxPower;
326} tDot11fFfMaxTxPower;
327
328#define DOT11F_FF_MAXTXPOWER_LEN ( 1 )
329
330void dot11fUnpackFfMaxTxPower(tpAniSirGlobal, tANI_U8*, tDot11fFfMaxTxPower*);
331
332void dot11fPackFfMaxTxPower(tpAniSirGlobal, tDot11fFfMaxTxPower*, tANI_U8*);
333
334typedef struct sDot11fFfNumOfRepetitions {
335 tANI_U16 repetitions;
336} tDot11fFfNumOfRepetitions;
337
338#define DOT11F_FF_NUMOFREPETITIONS_LEN ( 2 )
339
340void dot11fUnpackFfNumOfRepetitions(tpAniSirGlobal, tANI_U8*, tDot11fFfNumOfRepetitions*);
341
342void dot11fPackFfNumOfRepetitions(tpAniSirGlobal, tDot11fFfNumOfRepetitions*, tANI_U8*);
343
344typedef struct sDot11fFfP2POUI {
345 tANI_U32 oui;
346} tDot11fFfP2POUI;
347
348#define DOT11F_FF_P2POUI_LEN ( 4 )
349
350void dot11fUnpackFfP2POUI(tpAniSirGlobal, tANI_U8*, tDot11fFfP2POUI*);
351
352void dot11fPackFfP2POUI(tpAniSirGlobal, tDot11fFfP2POUI*, tANI_U8*);
353
354typedef struct sDot11fFfP2POUISubType {
355 tANI_U8 ouiSubtype;
356} tDot11fFfP2POUISubType;
357
358#define DOT11F_FF_P2POUISUBTYPE_LEN ( 1 )
359
360void dot11fUnpackFfP2POUISubType(tpAniSirGlobal, tANI_U8*, tDot11fFfP2POUISubType*);
361
362void dot11fPackFfP2POUISubType(tpAniSirGlobal, tDot11fFfP2POUISubType*, tANI_U8*);
363
364typedef struct sDot11fFfRCPI {
365 tANI_U8 rcpi;
366} tDot11fFfRCPI;
367
368#define DOT11F_FF_RCPI_LEN ( 1 )
369
370void dot11fUnpackFfRCPI(tpAniSirGlobal, tANI_U8*, tDot11fFfRCPI*);
371
372void dot11fPackFfRCPI(tpAniSirGlobal, tDot11fFfRCPI*, tANI_U8*);
373
374typedef struct sDot11fFfRSNI {
375 tANI_U8 rsni;
376} tDot11fFfRSNI;
377
378#define DOT11F_FF_RSNI_LEN ( 1 )
379
380void dot11fUnpackFfRSNI(tpAniSirGlobal, tANI_U8*, tDot11fFfRSNI*);
381
382void dot11fPackFfRSNI(tpAniSirGlobal, tDot11fFfRSNI*, tANI_U8*);
383
384typedef struct sDot11fFfReason {
385 tANI_U16 code;
386} tDot11fFfReason;
387
388#define DOT11F_FF_REASON_LEN ( 2 )
389
390void dot11fUnpackFfReason(tpAniSirGlobal, tANI_U8*, tDot11fFfReason*);
391
392void dot11fPackFfReason(tpAniSirGlobal, tDot11fFfReason*, tANI_U8*);
393
394typedef struct sDot11fFfRxAntennaId {
395 tANI_U8 antennaId;
396} tDot11fFfRxAntennaId;
397
398#define DOT11F_FF_RXANTENNAID_LEN ( 1 )
399
400void dot11fUnpackFfRxAntennaId(tpAniSirGlobal, tANI_U8*, tDot11fFfRxAntennaId*);
401
402void dot11fPackFfRxAntennaId(tpAniSirGlobal, tDot11fFfRxAntennaId*, tANI_U8*);
403
404typedef struct sDot11fFfSMPowerModeSet {
405 tANI_U8 PowerSave_En: 1;
406 tANI_U8 Mode: 1;
407 tANI_U8 reserved: 6;
408} tDot11fFfSMPowerModeSet;
409
410#define DOT11F_FF_SMPOWERMODESET_LEN ( 1 )
411
412void dot11fUnpackFfSMPowerModeSet(tpAniSirGlobal, tANI_U8*, tDot11fFfSMPowerModeSet*);
413
414void dot11fPackFfSMPowerModeSet(tpAniSirGlobal, tDot11fFfSMPowerModeSet*, tANI_U8*);
415
416#define SMPOWERMODESET_POWERSAVE_EN_OFFSET 0
417#define SMPOWERMODESET_POWERSAVE_EN_WIDTH 1
418#define SMPOWERMODESET_MODE_OFFSET 1
419#define SMPOWERMODESET_MODE_WIDTH 1
420#define SMPOWERMODESET_RESERVED_OFFSET 2
421#define SMPOWERMODESET_RESERVED_WIDTH 6
422
423typedef struct sDot11fFfStatus {
424 tANI_U16 status;
425} tDot11fFfStatus;
426
427#define DOT11F_FF_STATUS_LEN ( 2 )
428
429void dot11fUnpackFfStatus(tpAniSirGlobal, tANI_U8*, tDot11fFfStatus*);
430
431void dot11fPackFfStatus(tpAniSirGlobal, tDot11fFfStatus*, tANI_U8*);
432
433typedef struct sDot11fFfStatusCode {
434 tANI_U8 statusCode;
435} tDot11fFfStatusCode;
436
437#define DOT11F_FF_STATUSCODE_LEN ( 1 )
438
439void dot11fUnpackFfStatusCode(tpAniSirGlobal, tANI_U8*, tDot11fFfStatusCode*);
440
441void dot11fPackFfStatusCode(tpAniSirGlobal, tDot11fFfStatusCode*, tANI_U8*);
442
443typedef struct sDot11fFfTPCEleID {
444 tANI_U8 TPCId;
445} tDot11fFfTPCEleID;
446
447#define DOT11F_FF_TPCELEID_LEN ( 1 )
448
449void dot11fUnpackFfTPCEleID(tpAniSirGlobal, tANI_U8*, tDot11fFfTPCEleID*);
450
451void dot11fPackFfTPCEleID(tpAniSirGlobal, tDot11fFfTPCEleID*, tANI_U8*);
452
453typedef struct sDot11fFfTPCEleLen {
454 tANI_U8 TPCLen;
455} tDot11fFfTPCEleLen;
456
457#define DOT11F_FF_TPCELELEN_LEN ( 1 )
458
459void dot11fUnpackFfTPCEleLen(tpAniSirGlobal, tANI_U8*, tDot11fFfTPCEleLen*);
460
461void dot11fPackFfTPCEleLen(tpAniSirGlobal, tDot11fFfTPCEleLen*, tANI_U8*);
462
463typedef struct sDot11fFfTSInfo {
464 tANI_U32 traffic_type: 1;
465 tANI_U32 tsid: 4;
466 tANI_U32 direction: 2;
467 tANI_U32 access_policy: 2;
468 tANI_U32 aggregation: 1;
469 tANI_U32 psb: 1;
470 tANI_U32 user_priority: 3;
471 tANI_U32 tsinfo_ack_pol: 2;
472 tANI_U32 schedule: 1;
473 tANI_U32 unused: 15;
474} tDot11fFfTSInfo;
475
476#define DOT11F_FF_TSINFO_LEN ( 3 )
477
478void dot11fUnpackFfTSInfo(tpAniSirGlobal, tANI_U8*, tDot11fFfTSInfo*);
479
480void dot11fPackFfTSInfo(tpAniSirGlobal, tDot11fFfTSInfo*, tANI_U8*);
481
482#define TSINFO_TRAFFIC_TYPE_OFFSET 0
483#define TSINFO_TRAFFIC_TYPE_WIDTH 1
484#define TSINFO_TSID_OFFSET 1
485#define TSINFO_TSID_WIDTH 4
486#define TSINFO_DIRECTION_OFFSET 5
487#define TSINFO_DIRECTION_WIDTH 2
488#define TSINFO_ACCESS_POLICY_OFFSET 7
489#define TSINFO_ACCESS_POLICY_WIDTH 2
490#define TSINFO_AGGREGATION_OFFSET 9
491#define TSINFO_AGGREGATION_WIDTH 1
492#define TSINFO_PSB_OFFSET 10
493#define TSINFO_PSB_WIDTH 1
494#define TSINFO_USER_PRIORITY_OFFSET 11
495#define TSINFO_USER_PRIORITY_WIDTH 3
496#define TSINFO_TSINFO_ACK_POL_OFFSET 14
497#define TSINFO_TSINFO_ACK_POL_WIDTH 2
498#define TSINFO_SCHEDULE_OFFSET 16
499#define TSINFO_SCHEDULE_WIDTH 1
500#define TSINFO_UNUSED_OFFSET 17
501#define TSINFO_UNUSED_WIDTH 15
502
503typedef struct sDot11fFfTimeStamp {
504 tDOT11F_U64 timestamp;
505} tDot11fFfTimeStamp;
506
507#define DOT11F_FF_TIMESTAMP_LEN ( 8 )
508
509void dot11fUnpackFfTimeStamp(tpAniSirGlobal, tANI_U8*, tDot11fFfTimeStamp*);
510
511void dot11fPackFfTimeStamp(tpAniSirGlobal, tDot11fFfTimeStamp*, tANI_U8*);
512
513typedef struct sDot11fFfTxAntennaId {
514 tANI_U8 antennaId;
515} tDot11fFfTxAntennaId;
516
517#define DOT11F_FF_TXANTENNAID_LEN ( 1 )
518
519void dot11fUnpackFfTxAntennaId(tpAniSirGlobal, tANI_U8*, tDot11fFfTxAntennaId*);
520
521void dot11fPackFfTxAntennaId(tpAniSirGlobal, tDot11fFfTxAntennaId*, tANI_U8*);
522
523typedef struct sDot11fFfTxPower {
524 tANI_U8 txPower;
525} tDot11fFfTxPower;
526
527#define DOT11F_FF_TXPOWER_LEN ( 1 )
528
529void dot11fUnpackFfTxPower(tpAniSirGlobal, tANI_U8*, tDot11fFfTxPower*);
530
531void dot11fPackFfTxPower(tpAniSirGlobal, tDot11fFfTxPower*, tANI_U8*);
532
533/*********************************************************************
534 * TLVs *
535 ********************************************************************/
536
537// ID 1 (0x0001)
538typedef struct sDot11fTLVAuthorizedMACs {
539 tANI_U8 present;
540 tANI_U8 mac[6];
541} tDot11fTLVAuthorizedMACs;
542
543#define DOT11F_TLV_AUTHORIZEDMACS ( 1 )
544
545// N.B. These #defines do *not* include the ID & length
546#define DOT11F_TLV_AUTHORIZEDMACS_MIN_LEN ( 6 )
547
548#define DOT11F_TLV_AUTHORIZEDMACS_MAX_LEN ( 6 )
549
550#ifdef __cplusplus
551extern "C" {
552#endif /* C++ */
553tANI_U32 dot11fUnpackTlvAuthorizedMACs(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVAuthorizedMACs*);
554
555tANI_U32 dot11fPackTlvAuthorizedMACs(tpAniSirGlobal, tDot11fTLVAuthorizedMACs*, tANI_U8*, tANI_U32, tANI_U32*);
556
557tANI_U32 dot11fGetPackedTlvAuthorizedMACs(tpAniSirGlobal, tDot11fTLVAuthorizedMACs*, tANI_U32*);
558
559#ifdef __cplusplus
560}; /* End extern "C". */
561#endif /* C++ */
562// ID 3 (0x0003)
563typedef struct sDot11fTLVRequestToEnroll {
564 tANI_U8 present;
565 tANI_U8 req;
566} tDot11fTLVRequestToEnroll;
567
568#define DOT11F_TLV_REQUESTTOENROLL ( 3 )
569
570// N.B. These #defines do *not* include the ID & length
571#define DOT11F_TLV_REQUESTTOENROLL_MIN_LEN ( 1 )
572
573#define DOT11F_TLV_REQUESTTOENROLL_MAX_LEN ( 1 )
574
575#ifdef __cplusplus
576extern "C" {
577#endif /* C++ */
578tANI_U32 dot11fUnpackTlvRequestToEnroll(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVRequestToEnroll*);
579
580tANI_U32 dot11fPackTlvRequestToEnroll(tpAniSirGlobal, tDot11fTLVRequestToEnroll*, tANI_U8*, tANI_U32, tANI_U32*);
581
582tANI_U32 dot11fGetPackedTlvRequestToEnroll(tpAniSirGlobal, tDot11fTLVRequestToEnroll*, tANI_U32*);
583
584#ifdef __cplusplus
585}; /* End extern "C". */
586#endif /* C++ */
587// ID 0 (0x0000)
588typedef struct sDot11fTLVVersion2 {
589 tANI_U8 present;
590 tANI_U8 minor: 4;
591 tANI_U8 major: 4;
592} tDot11fTLVVersion2;
593
594#define DOT11F_TLV_VERSION2 ( 0 )
595
596// N.B. These #defines do *not* include the ID & length
597#define DOT11F_TLV_VERSION2_MIN_LEN ( 1 )
598
599#define DOT11F_TLV_VERSION2_MAX_LEN ( 1 )
600
601#ifdef __cplusplus
602extern "C" {
603#endif /* C++ */
604tANI_U32 dot11fUnpackTlvVersion2(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVVersion2*);
605
606tANI_U32 dot11fPackTlvVersion2(tpAniSirGlobal, tDot11fTLVVersion2*, tANI_U8*, tANI_U32, tANI_U32*);
607
608tANI_U32 dot11fGetPackedTlvVersion2(tpAniSirGlobal, tDot11fTLVVersion2*, tANI_U32*);
609
610#ifdef __cplusplus
611}; /* End extern "C". */
612#endif /* C++ */
613// ID 4183 (0x1057)
614typedef struct sDot11fTLVAPSetupLocked {
615 tANI_U8 present;
616 tANI_U8 fLocked;
617} tDot11fTLVAPSetupLocked;
618
619#define DOT11F_TLV_APSETUPLOCKED ( 4183 )
620
621// N.B. These #defines do *not* include the ID & length
622#define DOT11F_TLV_APSETUPLOCKED_MIN_LEN ( 3 )
623
624#define DOT11F_TLV_APSETUPLOCKED_MAX_LEN ( 3 )
625
626#ifdef __cplusplus
627extern "C" {
628#endif /* C++ */
629tANI_U32 dot11fUnpackTlvAPSetupLocked(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVAPSetupLocked*);
630
631tANI_U32 dot11fPackTlvAPSetupLocked(tpAniSirGlobal, tDot11fTLVAPSetupLocked*, tANI_U8*, tANI_U32, tANI_U32*);
632
633tANI_U32 dot11fGetPackedTlvAPSetupLocked(tpAniSirGlobal, tDot11fTLVAPSetupLocked*, tANI_U32*);
634
635#ifdef __cplusplus
636}; /* End extern "C". */
637#endif /* C++ */
638// ID 4098 (0x1002)
639typedef struct sDot11fTLVAssociationState {
640 tANI_U8 present;
641 tANI_U16 state;
642} tDot11fTLVAssociationState;
643
644#define DOT11F_TLV_ASSOCIATIONSTATE ( 4098 )
645
646// N.B. These #defines do *not* include the ID & length
647#define DOT11F_TLV_ASSOCIATIONSTATE_MIN_LEN ( 4 )
648
649#define DOT11F_TLV_ASSOCIATIONSTATE_MAX_LEN ( 4 )
650
651#ifdef __cplusplus
652extern "C" {
653#endif /* C++ */
654tANI_U32 dot11fUnpackTlvAssociationState(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVAssociationState*);
655
656tANI_U32 dot11fPackTlvAssociationState(tpAniSirGlobal, tDot11fTLVAssociationState*, tANI_U8*, tANI_U32, tANI_U32*);
657
658tANI_U32 dot11fGetPackedTlvAssociationState(tpAniSirGlobal, tDot11fTLVAssociationState*, tANI_U32*);
659
660#ifdef __cplusplus
661}; /* End extern "C". */
662#endif /* C++ */
663// ID 11 (0x000b)
664typedef struct sDot11fTLVChannelList {
665 tANI_U8 present;
666 tANI_U8 countryString[3];
667 tANI_U8 num_channelList;
668 tANI_U8 channelList[251];
669} tDot11fTLVChannelList;
670
671#define DOT11F_TLV_CHANNELLIST ( 11 )
672
673// N.B. These #defines do *not* include the ID & length
674#define DOT11F_TLV_CHANNELLIST_MIN_LEN ( 4 )
675
676#define DOT11F_TLV_CHANNELLIST_MAX_LEN ( 255 )
677
678#ifdef __cplusplus
679extern "C" {
680#endif /* C++ */
681tANI_U32 dot11fUnpackTlvChannelList(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVChannelList*);
682
683tANI_U32 dot11fPackTlvChannelList(tpAniSirGlobal, tDot11fTLVChannelList*, tANI_U8*, tANI_U32, tANI_U32*);
684
685tANI_U32 dot11fGetPackedTlvChannelList(tpAniSirGlobal, tDot11fTLVChannelList*, tANI_U32*);
686
687#ifdef __cplusplus
688}; /* End extern "C". */
689#endif /* C++ */
690// ID 4104 (0x1008)
691typedef struct sDot11fTLVConfigMethods {
692 tANI_U8 present;
693 tANI_U16 methods;
694} tDot11fTLVConfigMethods;
695
696#define DOT11F_TLV_CONFIGMETHODS ( 4104 )
697
698// N.B. These #defines do *not* include the ID & length
699#define DOT11F_TLV_CONFIGMETHODS_MIN_LEN ( 4 )
700
701#define DOT11F_TLV_CONFIGMETHODS_MAX_LEN ( 4 )
702
703#ifdef __cplusplus
704extern "C" {
705#endif /* C++ */
706tANI_U32 dot11fUnpackTlvConfigMethods(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVConfigMethods*);
707
708tANI_U32 dot11fPackTlvConfigMethods(tpAniSirGlobal, tDot11fTLVConfigMethods*, tANI_U8*, tANI_U32, tANI_U32*);
709
710tANI_U32 dot11fGetPackedTlvConfigMethods(tpAniSirGlobal, tDot11fTLVConfigMethods*, tANI_U32*);
711
712#ifdef __cplusplus
713}; /* End extern "C". */
714#endif /* C++ */
715// ID 4105 (0x1009)
716typedef struct sDot11fTLVConfigurationError {
717 tANI_U8 present;
718 tANI_U16 error;
719} tDot11fTLVConfigurationError;
720
721#define DOT11F_TLV_CONFIGURATIONERROR ( 4105 )
722
723// N.B. These #defines do *not* include the ID & length
724#define DOT11F_TLV_CONFIGURATIONERROR_MIN_LEN ( 4 )
725
726#define DOT11F_TLV_CONFIGURATIONERROR_MAX_LEN ( 4 )
727
728#ifdef __cplusplus
729extern "C" {
730#endif /* C++ */
731tANI_U32 dot11fUnpackTlvConfigurationError(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVConfigurationError*);
732
733tANI_U32 dot11fPackTlvConfigurationError(tpAniSirGlobal, tDot11fTLVConfigurationError*, tANI_U8*, tANI_U32, tANI_U32*);
734
735tANI_U32 dot11fGetPackedTlvConfigurationError(tpAniSirGlobal, tDot11fTLVConfigurationError*, tANI_U32*);
736
737#ifdef __cplusplus
738}; /* End extern "C". */
739#endif /* C++ */
740// ID 5 (0x0005)
741typedef struct sDot11fTLVConfigurationTimeout {
742 tANI_U8 present;
743 tANI_U8 GOConfigTimeout;
744 tANI_U8 CLConfigTimeout;
745} tDot11fTLVConfigurationTimeout;
746
747#define DOT11F_TLV_CONFIGURATIONTIMEOUT ( 5 )
748
749// N.B. These #defines do *not* include the ID & length
750#define DOT11F_TLV_CONFIGURATIONTIMEOUT_MIN_LEN ( 3 )
751
752#define DOT11F_TLV_CONFIGURATIONTIMEOUT_MAX_LEN ( 3 )
753
754#ifdef __cplusplus
755extern "C" {
756#endif /* C++ */
757tANI_U32 dot11fUnpackTlvConfigurationTimeout(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVConfigurationTimeout*);
758
759tANI_U32 dot11fPackTlvConfigurationTimeout(tpAniSirGlobal, tDot11fTLVConfigurationTimeout*, tANI_U8*, tANI_U32, tANI_U32*);
760
761tANI_U32 dot11fGetPackedTlvConfigurationTimeout(tpAniSirGlobal, tDot11fTLVConfigurationTimeout*, tANI_U32*);
762
763#ifdef __cplusplus
764}; /* End extern "C". */
765#endif /* C++ */
766// ID 4113 (0x1011)
767typedef struct sDot11fTLVDeviceName {
768 tANI_U8 present;
769 tANI_U8 num_text;
770 tANI_U8 text[32];
771} tDot11fTLVDeviceName;
772
773#define DOT11F_TLV_DEVICENAME ( 4113 )
774
775// N.B. These #defines do *not* include the ID & length
776#define DOT11F_TLV_DEVICENAME_MIN_LEN ( 2 )
777
778#define DOT11F_TLV_DEVICENAME_MAX_LEN ( 34 )
779
780#ifdef __cplusplus
781extern "C" {
782#endif /* C++ */
783tANI_U32 dot11fUnpackTlvDeviceName(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVDeviceName*);
784
785tANI_U32 dot11fPackTlvDeviceName(tpAniSirGlobal, tDot11fTLVDeviceName*, tANI_U8*, tANI_U32, tANI_U32*);
786
787tANI_U32 dot11fGetPackedTlvDeviceName(tpAniSirGlobal, tDot11fTLVDeviceName*, tANI_U32*);
788
789#ifdef __cplusplus
790}; /* End extern "C". */
791#endif /* C++ */
792// ID 4114 (0x1012)
793typedef struct sDot11fTLVDevicePasswordID {
794 tANI_U8 present;
795 tANI_U16 id;
796} tDot11fTLVDevicePasswordID;
797
798#define DOT11F_TLV_DEVICEPASSWORDID ( 4114 )
799
800// N.B. These #defines do *not* include the ID & length
801#define DOT11F_TLV_DEVICEPASSWORDID_MIN_LEN ( 4 )
802
803#define DOT11F_TLV_DEVICEPASSWORDID_MAX_LEN ( 4 )
804
805#ifdef __cplusplus
806extern "C" {
807#endif /* C++ */
808tANI_U32 dot11fUnpackTlvDevicePasswordID(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVDevicePasswordID*);
809
810tANI_U32 dot11fPackTlvDevicePasswordID(tpAniSirGlobal, tDot11fTLVDevicePasswordID*, tANI_U8*, tANI_U32, tANI_U32*);
811
812tANI_U32 dot11fGetPackedTlvDevicePasswordID(tpAniSirGlobal, tDot11fTLVDevicePasswordID*, tANI_U32*);
813
814#ifdef __cplusplus
815}; /* End extern "C". */
816#endif /* C++ */
817// ID 8 (0x0008)
818typedef struct sDot11fTLVExtendedListenTiming {
819 tANI_U8 present;
820 tANI_U16 availibilityPeriod;
821 tANI_U16 availibilityInterval;
822} tDot11fTLVExtendedListenTiming;
823
824#define DOT11F_TLV_EXTENDEDLISTENTIMING ( 8 )
825
826// N.B. These #defines do *not* include the ID & length
827#define DOT11F_TLV_EXTENDEDLISTENTIMING_MIN_LEN ( 5 )
828
829#define DOT11F_TLV_EXTENDEDLISTENTIMING_MAX_LEN ( 5 )
830
831#ifdef __cplusplus
832extern "C" {
833#endif /* C++ */
834tANI_U32 dot11fUnpackTlvExtendedListenTiming(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVExtendedListenTiming*);
835
836tANI_U32 dot11fPackTlvExtendedListenTiming(tpAniSirGlobal, tDot11fTLVExtendedListenTiming*, tANI_U8*, tANI_U32, tANI_U32*);
837
838tANI_U32 dot11fGetPackedTlvExtendedListenTiming(tpAniSirGlobal, tDot11fTLVExtendedListenTiming*, tANI_U32*);
839
840#ifdef __cplusplus
841}; /* End extern "C". */
842#endif /* C++ */
843// ID 4 (0x0004)
844typedef struct sDot11fTLVGOIntent {
845 tANI_U8 present;
846 tANI_U8 GOIntent;
847} tDot11fTLVGOIntent;
848
849#define DOT11F_TLV_GOINTENT ( 4 )
850
851// N.B. These #defines do *not* include the ID & length
852#define DOT11F_TLV_GOINTENT_MIN_LEN ( 2 )
853
854#define DOT11F_TLV_GOINTENT_MAX_LEN ( 2 )
855
856#ifdef __cplusplus
857extern "C" {
858#endif /* C++ */
859tANI_U32 dot11fUnpackTlvGOIntent(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVGOIntent*);
860
861tANI_U32 dot11fPackTlvGOIntent(tpAniSirGlobal, tDot11fTLVGOIntent*, tANI_U8*, tANI_U32, tANI_U32*);
862
863tANI_U32 dot11fGetPackedTlvGOIntent(tpAniSirGlobal, tDot11fTLVGOIntent*, tANI_U32*);
864
865#ifdef __cplusplus
866}; /* End extern "C". */
867#endif /* C++ */
868// ID 9 (0x0009)
869typedef struct sDot11fTLVIntendedP2PInterfaceAddress {
870 tANI_U8 present;
871 tANI_U8 P2PInterfaceAddress[6];
872} tDot11fTLVIntendedP2PInterfaceAddress;
873
874#define DOT11F_TLV_INTENDEDP2PINTERFACEADDRESS ( 9 )
875
876// N.B. These #defines do *not* include the ID & length
877#define DOT11F_TLV_INTENDEDP2PINTERFACEADDRESS_MIN_LEN ( 7 )
878
879#define DOT11F_TLV_INTENDEDP2PINTERFACEADDRESS_MAX_LEN ( 7 )
880
881#ifdef __cplusplus
882extern "C" {
883#endif /* C++ */
884tANI_U32 dot11fUnpackTlvIntendedP2PInterfaceAddress(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVIntendedP2PInterfaceAddress*);
885
886tANI_U32 dot11fPackTlvIntendedP2PInterfaceAddress(tpAniSirGlobal, tDot11fTLVIntendedP2PInterfaceAddress*, tANI_U8*, tANI_U32, tANI_U32*);
887
888tANI_U32 dot11fGetPackedTlvIntendedP2PInterfaceAddress(tpAniSirGlobal, tDot11fTLVIntendedP2PInterfaceAddress*, tANI_U32*);
889
890#ifdef __cplusplus
891}; /* End extern "C". */
892#endif /* C++ */
893// ID 18 (0x0012)
894typedef struct sDot11fTLVInvitationFlags {
895 tANI_U8 present;
896 tANI_U8 invitationFlags;
897} tDot11fTLVInvitationFlags;
898
899#define DOT11F_TLV_INVITATIONFLAGS ( 18 )
900
901// N.B. These #defines do *not* include the ID & length
902#define DOT11F_TLV_INVITATIONFLAGS_MIN_LEN ( 2 )
903
904#define DOT11F_TLV_INVITATIONFLAGS_MAX_LEN ( 2 )
905
906#ifdef __cplusplus
907extern "C" {
908#endif /* C++ */
909tANI_U32 dot11fUnpackTlvInvitationFlags(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVInvitationFlags*);
910
911tANI_U32 dot11fPackTlvInvitationFlags(tpAniSirGlobal, tDot11fTLVInvitationFlags*, tANI_U8*, tANI_U32, tANI_U32*);
912
913tANI_U32 dot11fGetPackedTlvInvitationFlags(tpAniSirGlobal, tDot11fTLVInvitationFlags*, tANI_U32*);
914
915#ifdef __cplusplus
916}; /* End extern "C". */
917#endif /* C++ */
918// ID 6 (0x0006)
919typedef struct sDot11fTLVListenChannel {
920 tANI_U8 present;
921 tANI_U8 countryString[3];
922 tANI_U8 regulatoryClass;
923 tANI_U8 channel;
924} tDot11fTLVListenChannel;
925
926#define DOT11F_TLV_LISTENCHANNEL ( 6 )
927
928// N.B. These #defines do *not* include the ID & length
929#define DOT11F_TLV_LISTENCHANNEL_MIN_LEN ( 6 )
930
931#define DOT11F_TLV_LISTENCHANNEL_MAX_LEN ( 6 )
932
933#ifdef __cplusplus
934extern "C" {
935#endif /* C++ */
936tANI_U32 dot11fUnpackTlvListenChannel(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVListenChannel*);
937
938tANI_U32 dot11fPackTlvListenChannel(tpAniSirGlobal, tDot11fTLVListenChannel*, tANI_U8*, tANI_U32, tANI_U32*);
939
940tANI_U32 dot11fGetPackedTlvListenChannel(tpAniSirGlobal, tDot11fTLVListenChannel*, tANI_U32*);
941
942#ifdef __cplusplus
943}; /* End extern "C". */
944#endif /* C++ */
945// ID 4129 (0x1021)
946typedef struct sDot11fTLVManufacturer {
947 tANI_U8 present;
948 tANI_U8 num_name;
949 tANI_U8 name[64];
950} tDot11fTLVManufacturer;
951
952#define DOT11F_TLV_MANUFACTURER ( 4129 )
953
954// N.B. These #defines do *not* include the ID & length
955#define DOT11F_TLV_MANUFACTURER_MIN_LEN ( 2 )
956
957#define DOT11F_TLV_MANUFACTURER_MAX_LEN ( 66 )
958
959#ifdef __cplusplus
960extern "C" {
961#endif /* C++ */
962tANI_U32 dot11fUnpackTlvManufacturer(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVManufacturer*);
963
964tANI_U32 dot11fPackTlvManufacturer(tpAniSirGlobal, tDot11fTLVManufacturer*, tANI_U8*, tANI_U32, tANI_U32*);
965
966tANI_U32 dot11fGetPackedTlvManufacturer(tpAniSirGlobal, tDot11fTLVManufacturer*, tANI_U32*);
967
968#ifdef __cplusplus
969}; /* End extern "C". */
970#endif /* C++ */
971// ID 1 (0x0001)
972typedef struct sDot11fTLVMinorReasonCode {
973 tANI_U8 present;
974 tANI_U8 minorReasonCode;
975} tDot11fTLVMinorReasonCode;
976
977#define DOT11F_TLV_MINORREASONCODE ( 1 )
978
979// N.B. These #defines do *not* include the ID & length
980#define DOT11F_TLV_MINORREASONCODE_MIN_LEN ( 2 )
981
982#define DOT11F_TLV_MINORREASONCODE_MAX_LEN ( 2 )
983
984#ifdef __cplusplus
985extern "C" {
986#endif /* C++ */
987tANI_U32 dot11fUnpackTlvMinorReasonCode(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVMinorReasonCode*);
988
989tANI_U32 dot11fPackTlvMinorReasonCode(tpAniSirGlobal, tDot11fTLVMinorReasonCode*, tANI_U8*, tANI_U32, tANI_U32*);
990
991tANI_U32 dot11fGetPackedTlvMinorReasonCode(tpAniSirGlobal, tDot11fTLVMinorReasonCode*, tANI_U32*);
992
993#ifdef __cplusplus
994}; /* End extern "C". */
995#endif /* C++ */
996// ID 4131 (0x1023)
997typedef struct sDot11fTLVModelName {
998 tANI_U8 present;
999 tANI_U8 num_text;
1000 tANI_U8 text[32];
1001} tDot11fTLVModelName;
1002
1003#define DOT11F_TLV_MODELNAME ( 4131 )
1004
1005// N.B. These #defines do *not* include the ID & length
1006#define DOT11F_TLV_MODELNAME_MIN_LEN ( 2 )
1007
1008#define DOT11F_TLV_MODELNAME_MAX_LEN ( 34 )
1009
1010#ifdef __cplusplus
1011extern "C" {
1012#endif /* C++ */
1013tANI_U32 dot11fUnpackTlvModelName(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVModelName*);
1014
1015tANI_U32 dot11fPackTlvModelName(tpAniSirGlobal, tDot11fTLVModelName*, tANI_U8*, tANI_U32, tANI_U32*);
1016
1017tANI_U32 dot11fGetPackedTlvModelName(tpAniSirGlobal, tDot11fTLVModelName*, tANI_U32*);
1018
1019#ifdef __cplusplus
1020}; /* End extern "C". */
1021#endif /* C++ */
1022// ID 4132 (0x1024)
1023typedef struct sDot11fTLVModelNumber {
1024 tANI_U8 present;
1025 tANI_U8 num_text;
1026 tANI_U8 text[32];
1027} tDot11fTLVModelNumber;
1028
1029#define DOT11F_TLV_MODELNUMBER ( 4132 )
1030
1031// N.B. These #defines do *not* include the ID & length
1032#define DOT11F_TLV_MODELNUMBER_MIN_LEN ( 2 )
1033
1034#define DOT11F_TLV_MODELNUMBER_MAX_LEN ( 34 )
1035
1036#ifdef __cplusplus
1037extern "C" {
1038#endif /* C++ */
1039tANI_U32 dot11fUnpackTlvModelNumber(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVModelNumber*);
1040
1041tANI_U32 dot11fPackTlvModelNumber(tpAniSirGlobal, tDot11fTLVModelNumber*, tANI_U8*, tANI_U32, tANI_U32*);
1042
1043tANI_U32 dot11fGetPackedTlvModelNumber(tpAniSirGlobal, tDot11fTLVModelNumber*, tANI_U32*);
1044
1045#ifdef __cplusplus
1046}; /* End extern "C". */
1047#endif /* C++ */
1048// ID 12 (0x000c)
1049typedef struct sDot11fTLVNoticeOfAbsence {
1050 tANI_U8 present;
1051 tANI_U8 index;
1052 tANI_U8 CTSWindowOppPS;
1053 tANI_U8 num_NoADesc;
1054 tANI_U8 NoADesc[36];
1055} tDot11fTLVNoticeOfAbsence;
1056
1057#define DOT11F_TLV_NOTICEOFABSENCE ( 12 )
1058
1059// N.B. These #defines do *not* include the ID & length
1060#define DOT11F_TLV_NOTICEOFABSENCE_MIN_LEN ( 3 )
1061
1062#define DOT11F_TLV_NOTICEOFABSENCE_MAX_LEN ( 39 )
1063
1064#ifdef __cplusplus
1065extern "C" {
1066#endif /* C++ */
1067tANI_U32 dot11fUnpackTlvNoticeOfAbsence(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVNoticeOfAbsence*);
1068
1069tANI_U32 dot11fPackTlvNoticeOfAbsence(tpAniSirGlobal, tDot11fTLVNoticeOfAbsence*, tANI_U8*, tANI_U32, tANI_U32*);
1070
1071tANI_U32 dot11fGetPackedTlvNoticeOfAbsence(tpAniSirGlobal, tDot11fTLVNoticeOfAbsence*, tANI_U32*);
1072
1073#ifdef __cplusplus
1074}; /* End extern "C". */
1075#endif /* C++ */
1076// ID 17 (0x0011)
1077typedef struct sDot11fTLVOperatingChannel {
1078 tANI_U8 present;
1079 tANI_U8 countryString[3];
1080 tANI_U8 regulatoryClass;
1081 tANI_U8 channel;
1082} tDot11fTLVOperatingChannel;
1083
1084#define DOT11F_TLV_OPERATINGCHANNEL ( 17 )
1085
1086// N.B. These #defines do *not* include the ID & length
1087#define DOT11F_TLV_OPERATINGCHANNEL_MIN_LEN ( 6 )
1088
1089#define DOT11F_TLV_OPERATINGCHANNEL_MAX_LEN ( 6 )
1090
1091#ifdef __cplusplus
1092extern "C" {
1093#endif /* C++ */
1094tANI_U32 dot11fUnpackTlvOperatingChannel(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVOperatingChannel*);
1095
1096tANI_U32 dot11fPackTlvOperatingChannel(tpAniSirGlobal, tDot11fTLVOperatingChannel*, tANI_U8*, tANI_U32, tANI_U32*);
1097
1098tANI_U32 dot11fGetPackedTlvOperatingChannel(tpAniSirGlobal, tDot11fTLVOperatingChannel*, tANI_U32*);
1099
1100#ifdef __cplusplus
1101}; /* End extern "C". */
1102#endif /* C++ */
1103// ID 2 (0x0002)
1104typedef struct sDot11fTLVP2PCapability {
1105 tANI_U8 present;
1106 tANI_U8 deviceCapability;
1107 tANI_U8 groupCapability;
1108} tDot11fTLVP2PCapability;
1109
1110#define DOT11F_TLV_P2PCAPABILITY ( 2 )
1111
1112// N.B. These #defines do *not* include the ID & length
1113#define DOT11F_TLV_P2PCAPABILITY_MIN_LEN ( 3 )
1114
1115#define DOT11F_TLV_P2PCAPABILITY_MAX_LEN ( 3 )
1116
1117#ifdef __cplusplus
1118extern "C" {
1119#endif /* C++ */
1120tANI_U32 dot11fUnpackTlvP2PCapability(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PCapability*);
1121
1122tANI_U32 dot11fPackTlvP2PCapability(tpAniSirGlobal, tDot11fTLVP2PCapability*, tANI_U8*, tANI_U32, tANI_U32*);
1123
1124tANI_U32 dot11fGetPackedTlvP2PCapability(tpAniSirGlobal, tDot11fTLVP2PCapability*, tANI_U32*);
1125
1126#ifdef __cplusplus
1127}; /* End extern "C". */
1128#endif /* C++ */
1129// ID 3 (0x0003)
1130typedef struct sDot11fTLVP2PDeviceId {
1131 tANI_U8 present;
1132 tANI_U8 P2PDeviceAddress[6];
1133} tDot11fTLVP2PDeviceId;
1134
1135#define DOT11F_TLV_P2PDEVICEID ( 3 )
1136
1137// N.B. These #defines do *not* include the ID & length
1138#define DOT11F_TLV_P2PDEVICEID_MIN_LEN ( 7 )
1139
1140#define DOT11F_TLV_P2PDEVICEID_MAX_LEN ( 7 )
1141
1142#ifdef __cplusplus
1143extern "C" {
1144#endif /* C++ */
1145tANI_U32 dot11fUnpackTlvP2PDeviceId(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PDeviceId*);
1146
1147tANI_U32 dot11fPackTlvP2PDeviceId(tpAniSirGlobal, tDot11fTLVP2PDeviceId*, tANI_U8*, tANI_U32, tANI_U32*);
1148
1149tANI_U32 dot11fGetPackedTlvP2PDeviceId(tpAniSirGlobal, tDot11fTLVP2PDeviceId*, tANI_U32*);
1150
1151#ifdef __cplusplus
1152}; /* End extern "C". */
1153#endif /* C++ */
1154// ID 13 (0x000d)
1155typedef struct sDot11fTLVP2PDeviceInfo {
1156 tANI_U8 present;
1157 tANI_U8 P2PDeviceAddress[6];
1158 tANI_U16 configMethod;
1159 tANI_U8 primaryDeviceType[8];
1160 tDot11fTLVDeviceName DeviceName;
1161} tDot11fTLVP2PDeviceInfo;
1162
1163#define DOT11F_TLV_P2PDEVICEINFO ( 13 )
1164
1165// N.B. These #defines do *not* include the ID & length
1166#define DOT11F_TLV_P2PDEVICEINFO_MIN_LEN ( 17 )
1167
1168#define DOT11F_TLV_P2PDEVICEINFO_MAX_LEN ( 53 )
1169
1170#ifdef __cplusplus
1171extern "C" {
1172#endif /* C++ */
1173tANI_U32 dot11fUnpackTlvP2PDeviceInfo(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PDeviceInfo*);
1174
1175tANI_U32 dot11fPackTlvP2PDeviceInfo(tpAniSirGlobal, tDot11fTLVP2PDeviceInfo*, tANI_U8*, tANI_U32, tANI_U32*);
1176
1177tANI_U32 dot11fGetPackedTlvP2PDeviceInfo(tpAniSirGlobal, tDot11fTLVP2PDeviceInfo*, tANI_U32*);
1178
1179#ifdef __cplusplus
1180}; /* End extern "C". */
1181#endif /* C++ */
1182// ID 7 (0x0007)
1183typedef struct sDot11fTLVP2PGroupBssid {
1184 tANI_U8 present;
1185 tANI_U8 P2PGroupBssid[6];
1186} tDot11fTLVP2PGroupBssid;
1187
1188#define DOT11F_TLV_P2PGROUPBSSID ( 7 )
1189
1190// N.B. These #defines do *not* include the ID & length
1191#define DOT11F_TLV_P2PGROUPBSSID_MIN_LEN ( 7 )
1192
1193#define DOT11F_TLV_P2PGROUPBSSID_MAX_LEN ( 7 )
1194
1195#ifdef __cplusplus
1196extern "C" {
1197#endif /* C++ */
1198tANI_U32 dot11fUnpackTlvP2PGroupBssid(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PGroupBssid*);
1199
1200tANI_U32 dot11fPackTlvP2PGroupBssid(tpAniSirGlobal, tDot11fTLVP2PGroupBssid*, tANI_U8*, tANI_U32, tANI_U32*);
1201
1202tANI_U32 dot11fGetPackedTlvP2PGroupBssid(tpAniSirGlobal, tDot11fTLVP2PGroupBssid*, tANI_U32*);
1203
1204#ifdef __cplusplus
1205}; /* End extern "C". */
1206#endif /* C++ */
1207// ID 15 (0x000f)
1208typedef struct sDot11fTLVP2PGroupId {
1209 tANI_U8 present;
1210 tANI_U8 deviceAddress[6];
1211 tANI_U8 num_ssid;
1212 tANI_U8 ssid[32];
1213} tDot11fTLVP2PGroupId;
1214
1215#define DOT11F_TLV_P2PGROUPID ( 15 )
1216
1217// N.B. These #defines do *not* include the ID & length
1218#define DOT11F_TLV_P2PGROUPID_MIN_LEN ( 7 )
1219
1220#define DOT11F_TLV_P2PGROUPID_MAX_LEN ( 39 )
1221
1222#ifdef __cplusplus
1223extern "C" {
1224#endif /* C++ */
1225tANI_U32 dot11fUnpackTlvP2PGroupId(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PGroupId*);
1226
1227tANI_U32 dot11fPackTlvP2PGroupId(tpAniSirGlobal, tDot11fTLVP2PGroupId*, tANI_U8*, tANI_U32, tANI_U32*);
1228
1229tANI_U32 dot11fGetPackedTlvP2PGroupId(tpAniSirGlobal, tDot11fTLVP2PGroupId*, tANI_U32*);
1230
1231#ifdef __cplusplus
1232}; /* End extern "C". */
1233#endif /* C++ */
1234// ID 14 (0x000e)
1235typedef struct sDot11fTLVP2PGroupInfo {
1236 tANI_U8 present;
1237 tANI_U8 num_P2PClientInfoDesc;
1238 tANI_U8 P2PClientInfoDesc[1024];
1239} tDot11fTLVP2PGroupInfo;
1240
1241#define DOT11F_TLV_P2PGROUPINFO ( 14 )
1242
1243// N.B. These #defines do *not* include the ID & length
1244#define DOT11F_TLV_P2PGROUPINFO_MIN_LEN ( 1 )
1245
1246#define DOT11F_TLV_P2PGROUPINFO_MAX_LEN ( 1025 )
1247
1248#ifdef __cplusplus
1249extern "C" {
1250#endif /* C++ */
1251tANI_U32 dot11fUnpackTlvP2PGroupInfo(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PGroupInfo*);
1252
1253tANI_U32 dot11fPackTlvP2PGroupInfo(tpAniSirGlobal, tDot11fTLVP2PGroupInfo*, tANI_U8*, tANI_U32, tANI_U32*);
1254
1255tANI_U32 dot11fGetPackedTlvP2PGroupInfo(tpAniSirGlobal, tDot11fTLVP2PGroupInfo*, tANI_U32*);
1256
1257#ifdef __cplusplus
1258}; /* End extern "C". */
1259#endif /* C++ */
1260// ID 0 (0x0000)
1261typedef struct sDot11fTLVP2PStatus {
1262 tANI_U8 present;
1263 tANI_U8 status;
1264} tDot11fTLVP2PStatus;
1265
1266#define DOT11F_TLV_P2PSTATUS ( 0 )
1267
1268// N.B. These #defines do *not* include the ID & length
1269#define DOT11F_TLV_P2PSTATUS_MIN_LEN ( 2 )
1270
1271#define DOT11F_TLV_P2PSTATUS_MAX_LEN ( 2 )
1272
1273#ifdef __cplusplus
1274extern "C" {
1275#endif /* C++ */
1276tANI_U32 dot11fUnpackTlvP2PStatus(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PStatus*);
1277
1278tANI_U32 dot11fPackTlvP2PStatus(tpAniSirGlobal, tDot11fTLVP2PStatus*, tANI_U8*, tANI_U32, tANI_U32*);
1279
1280tANI_U32 dot11fGetPackedTlvP2PStatus(tpAniSirGlobal, tDot11fTLVP2PStatus*, tANI_U32*);
1281
1282#ifdef __cplusplus
1283}; /* End extern "C". */
1284#endif /* C++ */
1285// ID 4180 (0x1054)
1286typedef struct sDot11fTLVPrimaryDeviceType {
1287 tANI_U8 present;
1288 tANI_U16 primary_category;
1289 tANI_U8 oui[4];
1290 tANI_U16 sub_category;
1291} tDot11fTLVPrimaryDeviceType;
1292
1293#define DOT11F_TLV_PRIMARYDEVICETYPE ( 4180 )
1294
1295// N.B. These #defines do *not* include the ID & length
1296#define DOT11F_TLV_PRIMARYDEVICETYPE_MIN_LEN ( 10 )
1297
1298#define DOT11F_TLV_PRIMARYDEVICETYPE_MAX_LEN ( 10 )
1299
1300#ifdef __cplusplus
1301extern "C" {
1302#endif /* C++ */
1303tANI_U32 dot11fUnpackTlvPrimaryDeviceType(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVPrimaryDeviceType*);
1304
1305tANI_U32 dot11fPackTlvPrimaryDeviceType(tpAniSirGlobal, tDot11fTLVPrimaryDeviceType*, tANI_U8*, tANI_U32, tANI_U32*);
1306
1307tANI_U32 dot11fGetPackedTlvPrimaryDeviceType(tpAniSirGlobal, tDot11fTLVPrimaryDeviceType*, tANI_U32*);
1308
1309#ifdef __cplusplus
1310}; /* End extern "C". */
1311#endif /* C++ */
1312// ID 4156 (0x103c)
1313typedef struct sDot11fTLVRFBands {
1314 tANI_U8 present;
1315 tANI_U8 bands;
1316} tDot11fTLVRFBands;
1317
1318#define DOT11F_TLV_RFBANDS ( 4156 )
1319
1320// N.B. These #defines do *not* include the ID & length
1321#define DOT11F_TLV_RFBANDS_MIN_LEN ( 3 )
1322
1323#define DOT11F_TLV_RFBANDS_MAX_LEN ( 3 )
1324
1325#ifdef __cplusplus
1326extern "C" {
1327#endif /* C++ */
1328tANI_U32 dot11fUnpackTlvRFBands(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVRFBands*);
1329
1330tANI_U32 dot11fPackTlvRFBands(tpAniSirGlobal, tDot11fTLVRFBands*, tANI_U8*, tANI_U32, tANI_U32*);
1331
1332tANI_U32 dot11fGetPackedTlvRFBands(tpAniSirGlobal, tDot11fTLVRFBands*, tANI_U32*);
1333
1334#ifdef __cplusplus
1335}; /* End extern "C". */
1336#endif /* C++ */
1337// ID 4202 (0x106a)
1338typedef struct sDot11fTLVRequestDeviceType {
1339 tANI_U8 present;
1340 tANI_U16 primary_category;
1341 tANI_U8 oui[4];
1342 tANI_U16 sub_category;
1343} tDot11fTLVRequestDeviceType;
1344
1345#define DOT11F_TLV_REQUESTDEVICETYPE ( 4202 )
1346
1347// N.B. These #defines do *not* include the ID & length
1348#define DOT11F_TLV_REQUESTDEVICETYPE_MIN_LEN ( 10 )
1349
1350#define DOT11F_TLV_REQUESTDEVICETYPE_MAX_LEN ( 10 )
1351
1352#ifdef __cplusplus
1353extern "C" {
1354#endif /* C++ */
1355tANI_U32 dot11fUnpackTlvRequestDeviceType(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVRequestDeviceType*);
1356
1357tANI_U32 dot11fPackTlvRequestDeviceType(tpAniSirGlobal, tDot11fTLVRequestDeviceType*, tANI_U8*, tANI_U32, tANI_U32*);
1358
1359tANI_U32 dot11fGetPackedTlvRequestDeviceType(tpAniSirGlobal, tDot11fTLVRequestDeviceType*, tANI_U32*);
1360
1361#ifdef __cplusplus
1362}; /* End extern "C". */
1363#endif /* C++ */
1364// ID 4154 (0x103a)
1365typedef struct sDot11fTLVRequestType {
1366 tANI_U8 present;
1367 tANI_U8 reqType;
1368} tDot11fTLVRequestType;
1369
1370#define DOT11F_TLV_REQUESTTYPE ( 4154 )
1371
1372// N.B. These #defines do *not* include the ID & length
1373#define DOT11F_TLV_REQUESTTYPE_MIN_LEN ( 3 )
1374
1375#define DOT11F_TLV_REQUESTTYPE_MAX_LEN ( 3 )
1376
1377#ifdef __cplusplus
1378extern "C" {
1379#endif /* C++ */
1380tANI_U32 dot11fUnpackTlvRequestType(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVRequestType*);
1381
1382tANI_U32 dot11fPackTlvRequestType(tpAniSirGlobal, tDot11fTLVRequestType*, tANI_U8*, tANI_U32, tANI_U32*);
1383
1384tANI_U32 dot11fGetPackedTlvRequestType(tpAniSirGlobal, tDot11fTLVRequestType*, tANI_U32*);
1385
1386#ifdef __cplusplus
1387}; /* End extern "C". */
1388#endif /* C++ */
1389// ID 4155 (0x103b)
1390typedef struct sDot11fTLVResponseType {
1391 tANI_U8 present;
1392 tANI_U8 resType;
1393} tDot11fTLVResponseType;
1394
1395#define DOT11F_TLV_RESPONSETYPE ( 4155 )
1396
1397// N.B. These #defines do *not* include the ID & length
1398#define DOT11F_TLV_RESPONSETYPE_MIN_LEN ( 3 )
1399
1400#define DOT11F_TLV_RESPONSETYPE_MAX_LEN ( 3 )
1401
1402#ifdef __cplusplus
1403extern "C" {
1404#endif /* C++ */
1405tANI_U32 dot11fUnpackTlvResponseType(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVResponseType*);
1406
1407tANI_U32 dot11fPackTlvResponseType(tpAniSirGlobal, tDot11fTLVResponseType*, tANI_U8*, tANI_U32, tANI_U32*);
1408
1409tANI_U32 dot11fGetPackedTlvResponseType(tpAniSirGlobal, tDot11fTLVResponseType*, tANI_U32*);
1410
1411#ifdef __cplusplus
1412}; /* End extern "C". */
1413#endif /* C++ */
1414// ID 4161 (0x1041)
1415typedef struct sDot11fTLVSelectedRegistrar {
1416 tANI_U8 present;
1417 tANI_U8 selected;
1418} tDot11fTLVSelectedRegistrar;
1419
1420#define DOT11F_TLV_SELECTEDREGISTRAR ( 4161 )
1421
1422// N.B. These #defines do *not* include the ID & length
1423#define DOT11F_TLV_SELECTEDREGISTRAR_MIN_LEN ( 3 )
1424
1425#define DOT11F_TLV_SELECTEDREGISTRAR_MAX_LEN ( 3 )
1426
1427#ifdef __cplusplus
1428extern "C" {
1429#endif /* C++ */
1430tANI_U32 dot11fUnpackTlvSelectedRegistrar(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVSelectedRegistrar*);
1431
1432tANI_U32 dot11fPackTlvSelectedRegistrar(tpAniSirGlobal, tDot11fTLVSelectedRegistrar*, tANI_U8*, tANI_U32, tANI_U32*);
1433
1434tANI_U32 dot11fGetPackedTlvSelectedRegistrar(tpAniSirGlobal, tDot11fTLVSelectedRegistrar*, tANI_U32*);
1435
1436#ifdef __cplusplus
1437}; /* End extern "C". */
1438#endif /* C++ */
1439// ID 4179 (0x1053)
1440typedef struct sDot11fTLVSelectedRegistrarConfigMethods {
1441 tANI_U8 present;
1442 tANI_U16 methods;
1443} tDot11fTLVSelectedRegistrarConfigMethods;
1444
1445#define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS ( 4179 )
1446
1447// N.B. These #defines do *not* include the ID & length
1448#define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MIN_LEN ( 4 )
1449
1450#define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MAX_LEN ( 4 )
1451
1452#ifdef __cplusplus
1453extern "C" {
1454#endif /* C++ */
1455tANI_U32 dot11fUnpackTlvSelectedRegistrarConfigMethods(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVSelectedRegistrarConfigMethods*);
1456
1457tANI_U32 dot11fPackTlvSelectedRegistrarConfigMethods(tpAniSirGlobal, tDot11fTLVSelectedRegistrarConfigMethods*, tANI_U8*, tANI_U32, tANI_U32*);
1458
1459tANI_U32 dot11fGetPackedTlvSelectedRegistrarConfigMethods(tpAniSirGlobal, tDot11fTLVSelectedRegistrarConfigMethods*, tANI_U32*);
1460
1461#ifdef __cplusplus
1462}; /* End extern "C". */
1463#endif /* C++ */
1464// ID 4162 (0x1042)
1465typedef struct sDot11fTLVSerialNumber {
1466 tANI_U8 present;
1467 tANI_U8 num_text;
1468 tANI_U8 text[32];
1469} tDot11fTLVSerialNumber;
1470
1471#define DOT11F_TLV_SERIALNUMBER ( 4162 )
1472
1473// N.B. These #defines do *not* include the ID & length
1474#define DOT11F_TLV_SERIALNUMBER_MIN_LEN ( 2 )
1475
1476#define DOT11F_TLV_SERIALNUMBER_MAX_LEN ( 34 )
1477
1478#ifdef __cplusplus
1479extern "C" {
1480#endif /* C++ */
1481tANI_U32 dot11fUnpackTlvSerialNumber(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVSerialNumber*);
1482
1483tANI_U32 dot11fPackTlvSerialNumber(tpAniSirGlobal, tDot11fTLVSerialNumber*, tANI_U8*, tANI_U32, tANI_U32*);
1484
1485tANI_U32 dot11fGetPackedTlvSerialNumber(tpAniSirGlobal, tDot11fTLVSerialNumber*, tANI_U32*);
1486
1487#ifdef __cplusplus
1488}; /* End extern "C". */
1489#endif /* C++ */
1490// ID 4167 (0x1047)
1491typedef struct sDot11fTLVUUID_E {
1492 tANI_U8 present;
1493 tANI_U8 uuid[16];
1494} tDot11fTLVUUID_E;
1495
1496#define DOT11F_TLV_UUID_E ( 4167 )
1497
1498// N.B. These #defines do *not* include the ID & length
1499#define DOT11F_TLV_UUID_E_MIN_LEN ( 18 )
1500
1501#define DOT11F_TLV_UUID_E_MAX_LEN ( 18 )
1502
1503#ifdef __cplusplus
1504extern "C" {
1505#endif /* C++ */
1506tANI_U32 dot11fUnpackTlvUUID_E(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVUUID_E*);
1507
1508tANI_U32 dot11fPackTlvUUID_E(tpAniSirGlobal, tDot11fTLVUUID_E*, tANI_U8*, tANI_U32, tANI_U32*);
1509
1510tANI_U32 dot11fGetPackedTlvUUID_E(tpAniSirGlobal, tDot11fTLVUUID_E*, tANI_U32*);
1511
1512#ifdef __cplusplus
1513}; /* End extern "C". */
1514#endif /* C++ */
1515// ID 4168 (0x1048)
1516typedef struct sDot11fTLVUUID_R {
1517 tANI_U8 present;
1518 tANI_U8 uuid[16];
1519} tDot11fTLVUUID_R;
1520
1521#define DOT11F_TLV_UUID_R ( 4168 )
1522
1523// N.B. These #defines do *not* include the ID & length
1524#define DOT11F_TLV_UUID_R_MIN_LEN ( 18 )
1525
1526#define DOT11F_TLV_UUID_R_MAX_LEN ( 18 )
1527
1528#ifdef __cplusplus
1529extern "C" {
1530#endif /* C++ */
1531tANI_U32 dot11fUnpackTlvUUID_R(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVUUID_R*);
1532
1533tANI_U32 dot11fPackTlvUUID_R(tpAniSirGlobal, tDot11fTLVUUID_R*, tANI_U8*, tANI_U32, tANI_U32*);
1534
1535tANI_U32 dot11fGetPackedTlvUUID_R(tpAniSirGlobal, tDot11fTLVUUID_R*, tANI_U32*);
1536
1537#ifdef __cplusplus
1538}; /* End extern "C". */
1539#endif /* C++ */
1540// ID 4169 (0x1049)
1541typedef struct sDot11fTLVVendorExtension {
1542 tANI_U8 present;
1543 tANI_U8 vendorId[3];
1544 tDot11fTLVVersion2 Version2;
1545 tDot11fTLVAuthorizedMACs AuthorizedMACs;
1546 tDot11fTLVRequestToEnroll RequestToEnroll;
1547} tDot11fTLVVendorExtension;
1548
1549#define DOT11F_TLV_VENDOREXTENSION ( 4169 )
1550
1551// N.B. These #defines do *not* include the ID & length
1552#define DOT11F_TLV_VENDOREXTENSION_MIN_LEN ( 5 )
1553
1554#define DOT11F_TLV_VENDOREXTENSION_MAX_LEN ( 19 )
1555
1556#ifdef __cplusplus
1557extern "C" {
1558#endif /* C++ */
1559tANI_U32 dot11fUnpackTlvVendorExtension(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVVendorExtension*);
1560
1561tANI_U32 dot11fPackTlvVendorExtension(tpAniSirGlobal, tDot11fTLVVendorExtension*, tANI_U8*, tANI_U32, tANI_U32*);
1562
1563tANI_U32 dot11fGetPackedTlvVendorExtension(tpAniSirGlobal, tDot11fTLVVendorExtension*, tANI_U32*);
1564
1565#ifdef __cplusplus
1566}; /* End extern "C". */
1567#endif /* C++ */
1568// ID 4170 (0x104a)
1569typedef struct sDot11fTLVVersion {
1570 tANI_U8 present;
1571 tANI_U8 minor: 4;
1572 tANI_U8 major: 4;
1573} tDot11fTLVVersion;
1574
1575#define DOT11F_TLV_VERSION ( 4170 )
1576
1577// N.B. These #defines do *not* include the ID & length
1578#define DOT11F_TLV_VERSION_MIN_LEN ( 3 )
1579
1580#define DOT11F_TLV_VERSION_MAX_LEN ( 3 )
1581
1582#ifdef __cplusplus
1583extern "C" {
1584#endif /* C++ */
1585tANI_U32 dot11fUnpackTlvVersion(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVVersion*);
1586
1587tANI_U32 dot11fPackTlvVersion(tpAniSirGlobal, tDot11fTLVVersion*, tANI_U8*, tANI_U32, tANI_U32*);
1588
1589tANI_U32 dot11fGetPackedTlvVersion(tpAniSirGlobal, tDot11fTLVVersion*, tANI_U32*);
1590
1591#ifdef __cplusplus
1592}; /* End extern "C". */
1593#endif /* C++ */
1594// ID 4164 (0x1044)
1595typedef struct sDot11fTLVWPSState {
1596 tANI_U8 present;
1597 tANI_U8 state;
1598} tDot11fTLVWPSState;
1599
1600#define DOT11F_TLV_WPSSTATE ( 4164 )
1601
1602// N.B. These #defines do *not* include the ID & length
1603#define DOT11F_TLV_WPSSTATE_MIN_LEN ( 3 )
1604
1605#define DOT11F_TLV_WPSSTATE_MAX_LEN ( 3 )
1606
1607#ifdef __cplusplus
1608extern "C" {
1609#endif /* C++ */
1610tANI_U32 dot11fUnpackTlvWPSState(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVWPSState*);
1611
1612tANI_U32 dot11fPackTlvWPSState(tpAniSirGlobal, tDot11fTLVWPSState*, tANI_U8*, tANI_U32, tANI_U32*);
1613
1614tANI_U32 dot11fGetPackedTlvWPSState(tpAniSirGlobal, tDot11fTLVWPSState*, tANI_U32*);
1615
1616#ifdef __cplusplus
1617}; /* End extern "C". */
1618#endif /* C++ */
1619// ID 16 (0x0010)
1620typedef struct sDot11fTLVP2PInterface {
1621 tANI_U8 present;
1622 tANI_U8 P2PDeviceAddress[6];
1623} tDot11fTLVP2PInterface;
1624
1625#define DOT11F_TLV_P2PINTERFACE ( 16 )
1626
1627// N.B. These #defines do *not* include the ID & length
1628#define DOT11F_TLV_P2PINTERFACE_MIN_LEN ( 7 )
1629
1630#define DOT11F_TLV_P2PINTERFACE_MAX_LEN ( 7 )
1631
1632#ifdef __cplusplus
1633extern "C" {
1634#endif /* C++ */
1635tANI_U32 dot11fUnpackTlvP2PInterface(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PInterface*);
1636
1637tANI_U32 dot11fPackTlvP2PInterface(tpAniSirGlobal, tDot11fTLVP2PInterface*, tANI_U8*, tANI_U32, tANI_U32*);
1638
1639tANI_U32 dot11fGetPackedTlvP2PInterface(tpAniSirGlobal, tDot11fTLVP2PInterface*, tANI_U32*);
1640
1641#ifdef __cplusplus
1642}; /* End extern "C". */
1643#endif /* C++ */
1644// ID 10 (0x000a)
1645typedef struct sDot11fTLVP2PManageability {
1646 tANI_U8 present;
1647 tANI_U8 manageability;
1648} tDot11fTLVP2PManageability;
1649
1650#define DOT11F_TLV_P2PMANAGEABILITY ( 10 )
1651
1652// N.B. These #defines do *not* include the ID & length
1653#define DOT11F_TLV_P2PMANAGEABILITY_MIN_LEN ( 2 )
1654
1655#define DOT11F_TLV_P2PMANAGEABILITY_MAX_LEN ( 2 )
1656
1657#ifdef __cplusplus
1658extern "C" {
1659#endif /* C++ */
1660tANI_U32 dot11fUnpackTlvP2PManageability(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PManageability*);
1661
1662tANI_U32 dot11fPackTlvP2PManageability(tpAniSirGlobal, tDot11fTLVP2PManageability*, tANI_U8*, tANI_U32, tANI_U32*);
1663
1664tANI_U32 dot11fGetPackedTlvP2PManageability(tpAniSirGlobal, tDot11fTLVP2PManageability*, tANI_U32*);
1665
1666#ifdef __cplusplus
1667}; /* End extern "C". */
1668#endif /* C++ */
1669/*********************************************************************
1670 * Information Elements *
1671 ********************************************************************/
1672
1673// EID 1 (0x01)
1674typedef struct sDot11fIEAPName {
1675 tANI_U8 present;
1676 tANI_U8 num_name;
1677 tANI_U8 name[32];
1678} tDot11fIEAPName;
1679
1680#define DOT11F_EID_APNAME ( 1 )
1681
1682// N.B. These #defines do *not* include the EID & length
1683#define DOT11F_IE_APNAME_MIN_LEN ( 1 )
1684
1685#define DOT11F_IE_APNAME_MAX_LEN ( 32 )
1686
1687#ifdef __cplusplus
1688extern "C" {
1689#endif /* C++ */
1690tANI_U32 dot11fUnpackIeAPName(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEAPName*);
1691
1692tANI_U32 dot11fPackIeAPName(tpAniSirGlobal, tDot11fIEAPName*, tANI_U8*, tANI_U32, tANI_U32*);
1693
1694tANI_U32 dot11fGetPackedIEAPName(tpAniSirGlobal, tDot11fIEAPName*, tANI_U32*);
1695
1696#ifdef __cplusplus
1697}; /* End extern "C". */
1698#endif /* C++ */
1699// EID 4 (0x04)
1700typedef struct sDot11fIEBPIndicator {
1701 tANI_U8 present;
1702 tANI_U8 indicator;
1703 tANI_U8 type;
1704} tDot11fIEBPIndicator;
1705
1706#define DOT11F_EID_BPINDICATOR ( 4 )
1707
1708// N.B. These #defines do *not* include the EID & length
1709#define DOT11F_IE_BPINDICATOR_MIN_LEN ( 2 )
1710
1711#define DOT11F_IE_BPINDICATOR_MAX_LEN ( 2 )
1712
1713#ifdef __cplusplus
1714extern "C" {
1715#endif /* C++ */
1716tANI_U32 dot11fUnpackIeBPIndicator(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEBPIndicator*);
1717
1718tANI_U32 dot11fPackIeBPIndicator(tpAniSirGlobal, tDot11fIEBPIndicator*, tANI_U8*, tANI_U32, tANI_U32*);
1719
1720tANI_U32 dot11fGetPackedIEBPIndicator(tpAniSirGlobal, tDot11fIEBPIndicator*, tANI_U32*);
1721
1722#ifdef __cplusplus
1723}; /* End extern "C". */
1724#endif /* C++ */
1725// EID 2 (0x02)
1726typedef struct sDot11fIECondensedCountryStr {
1727 tANI_U8 present;
1728 tANI_U8 countryStr[2];
1729} tDot11fIECondensedCountryStr;
1730
1731#define DOT11F_EID_CONDENSEDCOUNTRYSTR ( 2 )
1732
1733// N.B. These #defines do *not* include the EID & length
1734#define DOT11F_IE_CONDENSEDCOUNTRYSTR_MIN_LEN ( 2 )
1735
1736#define DOT11F_IE_CONDENSEDCOUNTRYSTR_MAX_LEN ( 2 )
1737
1738#ifdef __cplusplus
1739extern "C" {
1740#endif /* C++ */
1741tANI_U32 dot11fUnpackIeCondensedCountryStr(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECondensedCountryStr*);
1742
1743tANI_U32 dot11fPackIeCondensedCountryStr(tpAniSirGlobal, tDot11fIECondensedCountryStr*, tANI_U8*, tANI_U32, tANI_U32*);
1744
1745tANI_U32 dot11fGetPackedIECondensedCountryStr(tpAniSirGlobal, tDot11fIECondensedCountryStr*, tANI_U32*);
1746
1747#ifdef __cplusplus
1748}; /* End extern "C". */
1749#endif /* C++ */
1750// EID 2 (0x02)
1751typedef struct sDot11fIEGTK {
1752 tANI_U8 present;
1753 tANI_U16 keyId: 2;
1754 tANI_U16 reserved: 14;
1755 tANI_U8 keyLength;
1756 tANI_U8 RSC[8];
1757 tANI_U8 num_key;
1758 tANI_U8 key[32];
1759} tDot11fIEGTK;
1760
1761#define DOT11F_EID_GTK ( 2 )
1762
1763// N.B. These #defines do *not* include the EID & length
1764#define DOT11F_IE_GTK_MIN_LEN ( 16 )
1765
1766#define DOT11F_IE_GTK_MAX_LEN ( 43 )
1767
1768#ifdef __cplusplus
1769extern "C" {
1770#endif /* C++ */
1771tANI_U32 dot11fUnpackIeGTK(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEGTK*);
1772
1773tANI_U32 dot11fPackIeGTK(tpAniSirGlobal, tDot11fIEGTK*, tANI_U8*, tANI_U32, tANI_U32*);
1774
1775tANI_U32 dot11fGetPackedIEGTK(tpAniSirGlobal, tDot11fIEGTK*, tANI_U32*);
1776
1777#ifdef __cplusplus
1778}; /* End extern "C". */
1779#endif /* C++ */
1780// EID 2 (0x02)
1781typedef struct sDot11fIEHCF {
1782 tANI_U8 present;
1783 tANI_U8 enabled;
1784} tDot11fIEHCF;
1785
1786#define DOT11F_EID_HCF ( 2 )
1787
1788// N.B. These #defines do *not* include the EID & length
1789#define DOT11F_IE_HCF_MIN_LEN ( 1 )
1790
1791#define DOT11F_IE_HCF_MAX_LEN ( 1 )
1792
1793#ifdef __cplusplus
1794extern "C" {
1795#endif /* C++ */
1796tANI_U32 dot11fUnpackIeHCF(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEHCF*);
1797
1798tANI_U32 dot11fPackIeHCF(tpAniSirGlobal, tDot11fIEHCF*, tANI_U8*, tANI_U32, tANI_U32*);
1799
1800tANI_U32 dot11fGetPackedIEHCF(tpAniSirGlobal, tDot11fIEHCF*, tANI_U32*);
1801
1802#ifdef __cplusplus
1803}; /* End extern "C". */
1804#endif /* C++ */
1805// EID 9 (0x09)
1806typedef struct sDot11fIELLAttr {
1807 tANI_U8 present;
1808 tANI_U32 defer_threshold;
1809} tDot11fIELLAttr;
1810
1811#define DOT11F_EID_LLATTR ( 9 )
1812
1813// N.B. These #defines do *not* include the EID & length
1814#define DOT11F_IE_LLATTR_MIN_LEN ( 4 )
1815
1816#define DOT11F_IE_LLATTR_MAX_LEN ( 4 )
1817
1818#ifdef __cplusplus
1819extern "C" {
1820#endif /* C++ */
1821tANI_U32 dot11fUnpackIeLLAttr(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIELLAttr*);
1822
1823tANI_U32 dot11fPackIeLLAttr(tpAniSirGlobal, tDot11fIELLAttr*, tANI_U8*, tANI_U32, tANI_U32*);
1824
1825tANI_U32 dot11fGetPackedIELLAttr(tpAniSirGlobal, tDot11fIELLAttr*, tANI_U32*);
1826
1827#ifdef __cplusplus
1828}; /* End extern "C". */
1829#endif /* C++ */
1830// EID 8 (0x08)
1831typedef struct sDot11fIELoadBalance {
1832 tANI_U8 present;
1833 tANI_U8 bssid[6];
1834 tANI_U8 channel;
1835} tDot11fIELoadBalance;
1836
1837#define DOT11F_EID_LOADBALANCE ( 8 )
1838
1839// N.B. These #defines do *not* include the EID & length
1840#define DOT11F_IE_LOADBALANCE_MIN_LEN ( 7 )
1841
1842#define DOT11F_IE_LOADBALANCE_MAX_LEN ( 7 )
1843
1844#ifdef __cplusplus
1845extern "C" {
1846#endif /* C++ */
1847tANI_U32 dot11fUnpackIeLoadBalance(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIELoadBalance*);
1848
1849tANI_U32 dot11fPackIeLoadBalance(tpAniSirGlobal, tDot11fIELoadBalance*, tANI_U8*, tANI_U32, tANI_U32*);
1850
1851tANI_U32 dot11fGetPackedIELoadBalance(tpAniSirGlobal, tDot11fIELoadBalance*, tANI_U32*);
1852
1853#ifdef __cplusplus
1854}; /* End extern "C". */
1855#endif /* C++ */
1856// EID 6 (0x06)
1857typedef struct sDot11fIELoadInfo {
1858 tANI_U8 present;
1859 tANI_U16 num_stas;
1860 tANI_U16 channel_util;
1861} tDot11fIELoadInfo;
1862
1863#define DOT11F_EID_LOADINFO ( 6 )
1864
1865// N.B. These #defines do *not* include the EID & length
1866#define DOT11F_IE_LOADINFO_MIN_LEN ( 4 )
1867
1868#define DOT11F_IE_LOADINFO_MAX_LEN ( 4 )
1869
1870#ifdef __cplusplus
1871extern "C" {
1872#endif /* C++ */
1873tANI_U32 dot11fUnpackIeLoadInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIELoadInfo*);
1874
1875tANI_U32 dot11fPackIeLoadInfo(tpAniSirGlobal, tDot11fIELoadInfo*, tANI_U8*, tANI_U32, tANI_U32*);
1876
1877tANI_U32 dot11fGetPackedIELoadInfo(tpAniSirGlobal, tDot11fIELoadInfo*, tANI_U32*);
1878
1879#ifdef __cplusplus
1880}; /* End extern "C". */
1881#endif /* C++ */
1882// EID 7 (0x07)
1883typedef struct sDot11fIEPropAssocType {
1884 tANI_U8 present;
1885 tANI_U8 type;
1886} tDot11fIEPropAssocType;
1887
1888#define DOT11F_EID_PROPASSOCTYPE ( 7 )
1889
1890// N.B. These #defines do *not* include the EID & length
1891#define DOT11F_IE_PROPASSOCTYPE_MIN_LEN ( 1 )
1892
1893#define DOT11F_IE_PROPASSOCTYPE_MAX_LEN ( 1 )
1894
1895#ifdef __cplusplus
1896extern "C" {
1897#endif /* C++ */
1898tANI_U32 dot11fUnpackIePropAssocType(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropAssocType*);
1899
1900tANI_U32 dot11fPackIePropAssocType(tpAniSirGlobal, tDot11fIEPropAssocType*, tANI_U8*, tANI_U32, tANI_U32*);
1901
1902tANI_U32 dot11fGetPackedIEPropAssocType(tpAniSirGlobal, tDot11fIEPropAssocType*, tANI_U32*);
1903
1904#ifdef __cplusplus
1905}; /* End extern "C". */
1906#endif /* C++ */
1907// EID 10 (0x0a)
1908typedef struct sDot11fIEPropCapability {
1909 tANI_U8 present;
1910 tANI_U16 capability;
1911} tDot11fIEPropCapability;
1912
1913#define DOT11F_EID_PROPCAPABILITY ( 10 )
1914
1915// N.B. These #defines do *not* include the EID & length
1916#define DOT11F_IE_PROPCAPABILITY_MIN_LEN ( 2 )
1917
1918#define DOT11F_IE_PROPCAPABILITY_MAX_LEN ( 2 )
1919
1920#ifdef __cplusplus
1921extern "C" {
1922#endif /* C++ */
1923tANI_U32 dot11fUnpackIePropCapability(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropCapability*);
1924
1925tANI_U32 dot11fPackIePropCapability(tpAniSirGlobal, tDot11fIEPropCapability*, tANI_U8*, tANI_U32, tANI_U32*);
1926
1927tANI_U32 dot11fGetPackedIEPropCapability(tpAniSirGlobal, tDot11fIEPropCapability*, tANI_U32*);
1928
1929#ifdef __cplusplus
1930}; /* End extern "C". */
1931#endif /* C++ */
1932// EID 15 (0x0f)
1933typedef struct sDot11fIEPropChannSwitchAnn {
1934 tANI_U8 present;
1935 tANI_U8 mode;
1936 tANI_U8 primary_channel;
1937 tANI_U8 sub_band;
1938 tANI_U8 channel_switch_count;
1939} tDot11fIEPropChannSwitchAnn;
1940
1941#define DOT11F_EID_PROPCHANNSWITCHANN ( 15 )
1942
1943// N.B. These #defines do *not* include the EID & length
1944#define DOT11F_IE_PROPCHANNSWITCHANN_MIN_LEN ( 4 )
1945
1946#define DOT11F_IE_PROPCHANNSWITCHANN_MAX_LEN ( 4 )
1947
1948#ifdef __cplusplus
1949extern "C" {
1950#endif /* C++ */
1951tANI_U32 dot11fUnpackIePropChannSwitchAnn(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropChannSwitchAnn*);
1952
1953tANI_U32 dot11fPackIePropChannSwitchAnn(tpAniSirGlobal, tDot11fIEPropChannSwitchAnn*, tANI_U8*, tANI_U32, tANI_U32*);
1954
1955tANI_U32 dot11fGetPackedIEPropChannSwitchAnn(tpAniSirGlobal, tDot11fIEPropChannSwitchAnn*, tANI_U32*);
1956
1957#ifdef __cplusplus
1958}; /* End extern "C". */
1959#endif /* C++ */
1960// EID 12 (0x0c)
1961typedef struct sDot11fIEPropEDCAParams {
1962 tANI_U8 present;
1963 tANI_U8 qos;
1964 tANI_U8 reserved;
1965 tANI_U8 acbe_aifsn: 4;
1966 tANI_U8 acbe_acm: 1;
1967 tANI_U8 acbe_aci: 2;
1968 tANI_U8 unused1: 1;
1969 tANI_U8 acbe_min: 4;
1970 tANI_U8 acbe_max: 4;
1971 tANI_U16 acbe_txoplimit;
1972 tANI_U8 acbk_aifsn: 4;
1973 tANI_U8 acbk_acm: 1;
1974 tANI_U8 acbk_aci: 2;
1975 tANI_U8 unused2: 1;
1976 tANI_U8 acbk_min: 4;
1977 tANI_U8 acbk_max: 4;
1978 tANI_U16 acbk_txoplimit;
1979 tANI_U8 acvi_aifsn: 4;
1980 tANI_U8 acvi_acm: 1;
1981 tANI_U8 acvi_aci: 2;
1982 tANI_U8 unused3: 1;
1983 tANI_U8 acvi_min: 4;
1984 tANI_U8 acvi_max: 4;
1985 tANI_U16 acvi_txoplimit;
1986 tANI_U8 acvo_aifsn: 4;
1987 tANI_U8 acvo_acm: 1;
1988 tANI_U8 acvo_aci: 2;
1989 tANI_U8 unused4: 1;
1990 tANI_U8 acvo_min: 4;
1991 tANI_U8 acvo_max: 4;
1992 tANI_U16 acvo_txoplimit;
1993} tDot11fIEPropEDCAParams;
1994
1995#define DOT11F_EID_PROPEDCAPARAMS ( 12 )
1996
1997// N.B. These #defines do *not* include the EID & length
1998#define DOT11F_IE_PROPEDCAPARAMS_MIN_LEN ( 18 )
1999
2000#define DOT11F_IE_PROPEDCAPARAMS_MAX_LEN ( 18 )
2001
2002#ifdef __cplusplus
2003extern "C" {
2004#endif /* C++ */
2005tANI_U32 dot11fUnpackIePropEDCAParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropEDCAParams*);
2006
2007tANI_U32 dot11fPackIePropEDCAParams(tpAniSirGlobal, tDot11fIEPropEDCAParams*, tANI_U8*, tANI_U32, tANI_U32*);
2008
2009tANI_U32 dot11fGetPackedIEPropEDCAParams(tpAniSirGlobal, tDot11fIEPropEDCAParams*, tANI_U32*);
2010
2011#ifdef __cplusplus
2012}; /* End extern "C". */
2013#endif /* C++ */
2014// EID 16 (0x10)
2015typedef struct sDot11fIEPropQuietBSS {
2016 tANI_U8 present;
2017 tANI_U8 quiet_count;
2018 tANI_U8 quiet_period;
2019 tANI_U16 quiet_duration;
2020 tANI_U16 quiet_offset;
2021} tDot11fIEPropQuietBSS;
2022
2023#define DOT11F_EID_PROPQUIETBSS ( 16 )
2024
2025// N.B. These #defines do *not* include the EID & length
2026#define DOT11F_IE_PROPQUIETBSS_MIN_LEN ( 6 )
2027
2028#define DOT11F_IE_PROPQUIETBSS_MAX_LEN ( 6 )
2029
2030#ifdef __cplusplus
2031extern "C" {
2032#endif /* C++ */
2033tANI_U32 dot11fUnpackIePropQuietBSS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropQuietBSS*);
2034
2035tANI_U32 dot11fPackIePropQuietBSS(tpAniSirGlobal, tDot11fIEPropQuietBSS*, tANI_U8*, tANI_U32, tANI_U32*);
2036
2037tANI_U32 dot11fGetPackedIEPropQuietBSS(tpAniSirGlobal, tDot11fIEPropQuietBSS*, tANI_U32*);
2038
2039#ifdef __cplusplus
2040}; /* End extern "C". */
2041#endif /* C++ */
2042// EID 0 (0x00)
2043typedef struct sDot11fIEPropSuppRates {
2044 tANI_U8 present;
2045 tANI_U8 num_rates;
2046 tANI_U8 rates[12];
2047} tDot11fIEPropSuppRates;
2048
2049#define DOT11F_EID_PROPSUPPRATES ( 0 )
2050
2051// N.B. These #defines do *not* include the EID & length
2052#define DOT11F_IE_PROPSUPPRATES_MIN_LEN ( 1 )
2053
2054#define DOT11F_IE_PROPSUPPRATES_MAX_LEN ( 12 )
2055
2056#ifdef __cplusplus
2057extern "C" {
2058#endif /* C++ */
2059tANI_U32 dot11fUnpackIePropSuppRates(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropSuppRates*);
2060
2061tANI_U32 dot11fPackIePropSuppRates(tpAniSirGlobal, tDot11fIEPropSuppRates*, tANI_U8*, tANI_U32, tANI_U32*);
2062
2063tANI_U32 dot11fGetPackedIEPropSuppRates(tpAniSirGlobal, tDot11fIEPropSuppRates*, tANI_U32*);
2064
2065#ifdef __cplusplus
2066}; /* End extern "C". */
2067#endif /* C++ */
2068// EID 3 (0x03)
2069typedef struct sDot11fIER0KH_ID {
2070 tANI_U8 present;
2071 tANI_U8 num_PMK_R0_ID;
2072 tANI_U8 PMK_R0_ID[48];
2073} tDot11fIER0KH_ID;
2074
2075#define DOT11F_EID_R0KH_ID ( 3 )
2076
2077// N.B. These #defines do *not* include the EID & length
2078#define DOT11F_IE_R0KH_ID_MIN_LEN ( 1 )
2079
2080#define DOT11F_IE_R0KH_ID_MAX_LEN ( 48 )
2081
2082#ifdef __cplusplus
2083extern "C" {
2084#endif /* C++ */
2085tANI_U32 dot11fUnpackIeR0KH_ID(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIER0KH_ID*);
2086
2087tANI_U32 dot11fPackIeR0KH_ID(tpAniSirGlobal, tDot11fIER0KH_ID*, tANI_U8*, tANI_U32, tANI_U32*);
2088
2089tANI_U32 dot11fGetPackedIER0KH_ID(tpAniSirGlobal, tDot11fIER0KH_ID*, tANI_U32*);
2090
2091#ifdef __cplusplus
2092}; /* End extern "C". */
2093#endif /* C++ */
2094// EID 1 (0x01)
2095typedef struct sDot11fIER1KH_ID {
2096 tANI_U8 present;
2097 tANI_U8 PMK_R1_ID[6];
2098} tDot11fIER1KH_ID;
2099
2100#define DOT11F_EID_R1KH_ID ( 1 )
2101
2102// N.B. These #defines do *not* include the EID & length
2103#define DOT11F_IE_R1KH_ID_MIN_LEN ( 6 )
2104
2105#define DOT11F_IE_R1KH_ID_MAX_LEN ( 6 )
2106
2107#ifdef __cplusplus
2108extern "C" {
2109#endif /* C++ */
2110tANI_U32 dot11fUnpackIeR1KH_ID(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIER1KH_ID*);
2111
2112tANI_U32 dot11fPackIeR1KH_ID(tpAniSirGlobal, tDot11fIER1KH_ID*, tANI_U8*, tANI_U32, tANI_U32*);
2113
2114tANI_U32 dot11fGetPackedIER1KH_ID(tpAniSirGlobal, tDot11fIER1KH_ID*, tANI_U32*);
2115
2116#ifdef __cplusplus
2117}; /* End extern "C". */
2118#endif /* C++ */
2119// EID 1 (0x01)
2120typedef struct sDot11fIETSFInfo {
2121 tANI_U8 present;
2122 tANI_U16 TsfOffset;
2123 tANI_U16 BeaconIntvl;
2124} tDot11fIETSFInfo;
2125
2126#define DOT11F_EID_TSFINFO ( 1 )
2127
2128// N.B. These #defines do *not* include the EID & length
2129#define DOT11F_IE_TSFINFO_MIN_LEN ( 4 )
2130
2131#define DOT11F_IE_TSFINFO_MAX_LEN ( 4 )
2132
2133#ifdef __cplusplus
2134extern "C" {
2135#endif /* C++ */
2136tANI_U32 dot11fUnpackIeTSFInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETSFInfo*);
2137
2138tANI_U32 dot11fPackIeTSFInfo(tpAniSirGlobal, tDot11fIETSFInfo*, tANI_U8*, tANI_U32, tANI_U32*);
2139
2140tANI_U32 dot11fGetPackedIETSFInfo(tpAniSirGlobal, tDot11fIETSFInfo*, tANI_U32*);
2141
2142#ifdef __cplusplus
2143}; /* End extern "C". */
2144#endif /* C++ */
2145// EID 18 (0x12)
2146typedef struct sDot11fIETaurus {
2147 tANI_U8 present;
2148 tANI_U16 baTIDBitmap;
2149 tANI_U16 baPolicy;
2150 tANI_U16 baBufferSize: 12;
2151 tANI_U16 rsvd: 4;
2152} tDot11fIETaurus;
2153
2154#define DOT11F_EID_TAURUS ( 18 )
2155
2156// N.B. These #defines do *not* include the EID & length
2157#define DOT11F_IE_TAURUS_MIN_LEN ( 6 )
2158
2159#define DOT11F_IE_TAURUS_MAX_LEN ( 6 )
2160
2161#ifdef __cplusplus
2162extern "C" {
2163#endif /* C++ */
2164tANI_U32 dot11fUnpackIeTaurus(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETaurus*);
2165
2166tANI_U32 dot11fPackIeTaurus(tpAniSirGlobal, tDot11fIETaurus*, tANI_U8*, tANI_U32, tANI_U32*);
2167
2168tANI_U32 dot11fGetPackedIETaurus(tpAniSirGlobal, tDot11fIETaurus*, tANI_U32*);
2169
2170#ifdef __cplusplus
2171}; /* End extern "C". */
2172#endif /* C++ */
2173// EID 14 (0x0e)
2174typedef struct sDot11fIETitan {
2175 tANI_U8 present;
2176 tANI_U8 concat_tcid_bitmap;
2177 tANI_U8 compression_tcid_bitmap;
2178 tANI_U8 cb_state;
2179 tANI_U8 rev_fcs_state;
2180} tDot11fIETitan;
2181
2182#define DOT11F_EID_TITAN ( 14 )
2183
2184// N.B. These #defines do *not* include the EID & length
2185#define DOT11F_IE_TITAN_MIN_LEN ( 4 )
2186
2187#define DOT11F_IE_TITAN_MAX_LEN ( 4 )
2188
2189#ifdef __cplusplus
2190extern "C" {
2191#endif /* C++ */
2192tANI_U32 dot11fUnpackIeTitan(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETitan*);
2193
2194tANI_U32 dot11fPackIeTitan(tpAniSirGlobal, tDot11fIETitan*, tANI_U8*, tANI_U32, tANI_U32*);
2195
2196tANI_U32 dot11fGetPackedIETitan(tpAniSirGlobal, tDot11fIETitan*, tANI_U32*);
2197
2198#ifdef __cplusplus
2199}; /* End extern "C". */
2200#endif /* C++ */
2201// EID 17 (0x11)
2202typedef struct sDot11fIETriggerStaBgScan {
2203 tANI_U8 present;
2204 tANI_U8 enable;
2205} tDot11fIETriggerStaBgScan;
2206
2207#define DOT11F_EID_TRIGGERSTABGSCAN ( 17 )
2208
2209// N.B. These #defines do *not* include the EID & length
2210#define DOT11F_IE_TRIGGERSTABGSCAN_MIN_LEN ( 1 )
2211
2212#define DOT11F_IE_TRIGGERSTABGSCAN_MAX_LEN ( 1 )
2213
2214#ifdef __cplusplus
2215extern "C" {
2216#endif /* C++ */
2217tANI_U32 dot11fUnpackIeTriggerStaBgScan(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETriggerStaBgScan*);
2218
2219tANI_U32 dot11fPackIeTriggerStaBgScan(tpAniSirGlobal, tDot11fIETriggerStaBgScan*, tANI_U8*, tANI_U32, tANI_U32*);
2220
2221tANI_U32 dot11fGetPackedIETriggerStaBgScan(tpAniSirGlobal, tDot11fIETriggerStaBgScan*, tANI_U32*);
2222
2223#ifdef __cplusplus
2224}; /* End extern "C". */
2225#endif /* C++ */
2226// EID 11 (0x0b)
2227typedef struct sDot11fIEVersion {
2228 tANI_U8 present;
2229 tANI_U32 chip_rev;
2230 tANI_U8 card_type;
2231 tANI_U8 num_build_version;
2232 tANI_U8 build_version[20];
2233} tDot11fIEVersion;
2234
2235#define DOT11F_EID_VERSION ( 11 )
2236
2237// N.B. These #defines do *not* include the EID & length
2238#define DOT11F_IE_VERSION_MIN_LEN ( 5 )
2239
2240#define DOT11F_IE_VERSION_MAX_LEN ( 25 )
2241
2242#ifdef __cplusplus
2243extern "C" {
2244#endif /* C++ */
2245tANI_U32 dot11fUnpackIeVersion(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEVersion*);
2246
2247tANI_U32 dot11fPackIeVersion(tpAniSirGlobal, tDot11fIEVersion*, tANI_U8*, tANI_U32, tANI_U32*);
2248
2249tANI_U32 dot11fGetPackedIEVersion(tpAniSirGlobal, tDot11fIEVersion*, tANI_U32*);
2250
2251#ifdef __cplusplus
2252}; /* End extern "C". */
2253#endif /* C++ */
2254// EID 3 (0x03)
2255typedef struct sDot11fIEWDS {
2256 tANI_U8 present;
2257 tANI_U8 num_wdsData;
2258 tANI_U8 wdsData[64];
2259} tDot11fIEWDS;
2260
2261#define DOT11F_EID_WDS ( 3 )
2262
2263// N.B. These #defines do *not* include the EID & length
2264#define DOT11F_IE_WDS_MIN_LEN ( 0 )
2265
2266#define DOT11F_IE_WDS_MAX_LEN ( 64 )
2267
2268#ifdef __cplusplus
2269extern "C" {
2270#endif /* C++ */
2271tANI_U32 dot11fUnpackIeWDS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWDS*);
2272
2273tANI_U32 dot11fPackIeWDS(tpAniSirGlobal, tDot11fIEWDS*, tANI_U8*, tANI_U32, tANI_U32*);
2274
2275tANI_U32 dot11fGetPackedIEWDS(tpAniSirGlobal, tDot11fIEWDS*, tANI_U32*);
2276
2277#ifdef __cplusplus
2278}; /* End extern "C". */
2279#endif /* C++ */
2280// EID 51 (0x33)
2281typedef struct sDot11fIEAPChannelReport {
2282 tANI_U8 present;
2283 tANI_U8 regulatoryClass;
2284 tANI_U8 num_channelList;
2285 tANI_U8 channelList[50];
2286} tDot11fIEAPChannelReport;
2287
2288#define DOT11F_EID_APCHANNELREPORT ( 51 )
2289
2290// N.B. These #defines do *not* include the EID & length
2291#define DOT11F_IE_APCHANNELREPORT_MIN_LEN ( 1 )
2292
2293#define DOT11F_IE_APCHANNELREPORT_MAX_LEN ( 51 )
2294
2295#ifdef __cplusplus
2296extern "C" {
2297#endif /* C++ */
2298tANI_U32 dot11fUnpackIeAPChannelReport(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEAPChannelReport*);
2299
2300tANI_U32 dot11fPackIeAPChannelReport(tpAniSirGlobal, tDot11fIEAPChannelReport*, tANI_U8*, tANI_U32, tANI_U32*);
2301
2302tANI_U32 dot11fGetPackedIEAPChannelReport(tpAniSirGlobal, tDot11fIEAPChannelReport*, tANI_U32*);
2303
2304#ifdef __cplusplus
2305}; /* End extern "C". */
2306#endif /* C++ */
2307// EID 2 (0x02)
2308typedef struct sDot11fIEBcnReportingDetail {
2309 tANI_U8 present;
2310 tANI_U8 reportingDetail;
2311} tDot11fIEBcnReportingDetail;
2312
2313#define DOT11F_EID_BCNREPORTINGDETAIL ( 2 )
2314
2315// N.B. These #defines do *not* include the EID & length
2316#define DOT11F_IE_BCNREPORTINGDETAIL_MIN_LEN ( 1 )
2317
2318#define DOT11F_IE_BCNREPORTINGDETAIL_MAX_LEN ( 1 )
2319
2320#ifdef __cplusplus
2321extern "C" {
2322#endif /* C++ */
2323tANI_U32 dot11fUnpackIeBcnReportingDetail(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEBcnReportingDetail*);
2324
2325tANI_U32 dot11fPackIeBcnReportingDetail(tpAniSirGlobal, tDot11fIEBcnReportingDetail*, tANI_U8*, tANI_U32, tANI_U32*);
2326
2327tANI_U32 dot11fGetPackedIEBcnReportingDetail(tpAniSirGlobal, tDot11fIEBcnReportingDetail*, tANI_U32*);
2328
2329#ifdef __cplusplus
2330}; /* End extern "C". */
2331#endif /* C++ */
2332// EID 1 (0x01)
2333typedef struct sDot11fIEBeaconReportFrmBody {
2334 tANI_U8 present;
2335 tANI_U8 num_reportedFields;
2336 tANI_U8 reportedFields[224];
2337} tDot11fIEBeaconReportFrmBody;
2338
2339#define DOT11F_EID_BEACONREPORTFRMBODY ( 1 )
2340
2341// N.B. These #defines do *not* include the EID & length
2342#define DOT11F_IE_BEACONREPORTFRMBODY_MIN_LEN ( 0 )
2343
2344#define DOT11F_IE_BEACONREPORTFRMBODY_MAX_LEN ( 224 )
2345
2346#ifdef __cplusplus
2347extern "C" {
2348#endif /* C++ */
2349tANI_U32 dot11fUnpackIeBeaconReportFrmBody(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEBeaconReportFrmBody*);
2350
2351tANI_U32 dot11fPackIeBeaconReportFrmBody(tpAniSirGlobal, tDot11fIEBeaconReportFrmBody*, tANI_U8*, tANI_U32, tANI_U32*);
2352
2353tANI_U32 dot11fGetPackedIEBeaconReportFrmBody(tpAniSirGlobal, tDot11fIEBeaconReportFrmBody*, tANI_U32*);
2354
2355#ifdef __cplusplus
2356}; /* End extern "C". */
2357#endif /* C++ */
2358// EID 1 (0x01)
2359typedef struct sDot11fIEBeaconReporting {
2360 tANI_U8 present;
2361 tANI_U8 reportingCondition;
2362 tANI_U8 threshold;
2363} tDot11fIEBeaconReporting;
2364
2365#define DOT11F_EID_BEACONREPORTING ( 1 )
2366
2367// N.B. These #defines do *not* include the EID & length
2368#define DOT11F_IE_BEACONREPORTING_MIN_LEN ( 2 )
2369
2370#define DOT11F_IE_BEACONREPORTING_MAX_LEN ( 2 )
2371
2372#ifdef __cplusplus
2373extern "C" {
2374#endif /* C++ */
2375tANI_U32 dot11fUnpackIeBeaconReporting(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEBeaconReporting*);
2376
2377tANI_U32 dot11fPackIeBeaconReporting(tpAniSirGlobal, tDot11fIEBeaconReporting*, tANI_U8*, tANI_U32, tANI_U32*);
2378
2379tANI_U32 dot11fGetPackedIEBeaconReporting(tpAniSirGlobal, tDot11fIEBeaconReporting*, tANI_U32*);
2380
2381#ifdef __cplusplus
2382}; /* End extern "C". */
2383#endif /* C++ */
2384// EID 66 (0x42)
2385typedef struct sDot11fIEMeasurementPilot {
2386 tANI_U8 present;
2387 tANI_U8 measurementPilot;
2388 tANI_U8 num_vendorSpecific;
2389 tANI_U8 vendorSpecific[255];
2390} tDot11fIEMeasurementPilot;
2391
2392#define DOT11F_EID_MEASUREMENTPILOT ( 66 )
2393
2394// N.B. These #defines do *not* include the EID & length
2395#define DOT11F_IE_MEASUREMENTPILOT_MIN_LEN ( 1 )
2396
2397#define DOT11F_IE_MEASUREMENTPILOT_MAX_LEN ( 256 )
2398
2399#ifdef __cplusplus
2400extern "C" {
2401#endif /* C++ */
2402tANI_U32 dot11fUnpackIeMeasurementPilot(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMeasurementPilot*);
2403
2404tANI_U32 dot11fPackIeMeasurementPilot(tpAniSirGlobal, tDot11fIEMeasurementPilot*, tANI_U8*, tANI_U32, tANI_U32*);
2405
2406tANI_U32 dot11fGetPackedIEMeasurementPilot(tpAniSirGlobal, tDot11fIEMeasurementPilot*, tANI_U32*);
2407
2408#ifdef __cplusplus
2409}; /* End extern "C". */
2410#endif /* C++ */
2411// EID 71 (0x47)
2412typedef struct sDot11fIEMultiBssid {
2413 tANI_U8 present;
2414 tANI_U8 maxBSSIDIndicator;
2415 tANI_U8 num_vendorSpecific;
2416 tANI_U8 vendorSpecific[255];
2417} tDot11fIEMultiBssid;
2418
2419#define DOT11F_EID_MULTIBSSID ( 71 )
2420
2421// N.B. These #defines do *not* include the EID & length
2422#define DOT11F_IE_MULTIBSSID_MIN_LEN ( 1 )
2423
2424#define DOT11F_IE_MULTIBSSID_MAX_LEN ( 256 )
2425
2426#ifdef __cplusplus
2427extern "C" {
2428#endif /* C++ */
2429tANI_U32 dot11fUnpackIeMultiBssid(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMultiBssid*);
2430
2431tANI_U32 dot11fPackIeMultiBssid(tpAniSirGlobal, tDot11fIEMultiBssid*, tANI_U8*, tANI_U32, tANI_U32*);
2432
2433tANI_U32 dot11fGetPackedIEMultiBssid(tpAniSirGlobal, tDot11fIEMultiBssid*, tANI_U32*);
2434
2435#ifdef __cplusplus
2436}; /* End extern "C". */
2437#endif /* C++ */
2438// EID 57 (0x39)
2439typedef struct sDot11fIERICData {
2440 tANI_U8 present;
2441 tANI_U8 Identifier;
2442 tANI_U8 resourceDescCount;
2443 tANI_U16 statusCode;
2444} tDot11fIERICData;
2445
2446#define DOT11F_EID_RICDATA ( 57 )
2447
2448// N.B. These #defines do *not* include the EID & length
2449#define DOT11F_IE_RICDATA_MIN_LEN ( 4 )
2450
2451#define DOT11F_IE_RICDATA_MAX_LEN ( 4 )
2452
2453#ifdef __cplusplus
2454extern "C" {
2455#endif /* C++ */
2456tANI_U32 dot11fUnpackIeRICData(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERICData*);
2457
2458tANI_U32 dot11fPackIeRICData(tpAniSirGlobal, tDot11fIERICData*, tANI_U8*, tANI_U32, tANI_U32*);
2459
2460tANI_U32 dot11fGetPackedIERICData(tpAniSirGlobal, tDot11fIERICData*, tANI_U32*);
2461
2462#ifdef __cplusplus
2463}; /* End extern "C". */
2464#endif /* C++ */
2465// EID 75 (0x4b)
2466typedef struct sDot11fIERICDescriptor {
2467 tANI_U8 present;
2468 tANI_U8 resourceType;
2469 tANI_U8 num_variableData;
2470 tANI_U8 variableData[255];
2471} tDot11fIERICDescriptor;
2472
2473#define DOT11F_EID_RICDESCRIPTOR ( 75 )
2474
2475// N.B. These #defines do *not* include the EID & length
2476#define DOT11F_IE_RICDESCRIPTOR_MIN_LEN ( 1 )
2477
2478#define DOT11F_IE_RICDESCRIPTOR_MAX_LEN ( 256 )
2479
2480#ifdef __cplusplus
2481extern "C" {
2482#endif /* C++ */
2483tANI_U32 dot11fUnpackIeRICDescriptor(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERICDescriptor*);
2484
2485tANI_U32 dot11fPackIeRICDescriptor(tpAniSirGlobal, tDot11fIERICDescriptor*, tANI_U8*, tANI_U32, tANI_U32*);
2486
2487tANI_U32 dot11fGetPackedIERICDescriptor(tpAniSirGlobal, tDot11fIERICDescriptor*, tANI_U32*);
2488
2489#ifdef __cplusplus
2490}; /* End extern "C". */
2491#endif /* C++ */
2492// EID 70 (0x46)
2493typedef struct sDot11fIERRMEnabledCap {
2494 tANI_U8 present;
2495 tANI_U8 LinkMeasurement: 1;
2496 tANI_U8 NeighborRpt: 1;
2497 tANI_U8 parallel: 1;
2498 tANI_U8 repeated: 1;
2499 tANI_U8 BeaconPassive: 1;
2500 tANI_U8 BeaconActive: 1;
2501 tANI_U8 BeaconTable: 1;
2502 tANI_U8 BeaconRepCond: 1;
2503 tANI_U8 FrameMeasurement: 1;
2504 tANI_U8 ChannelLoad: 1;
2505 tANI_U8 NoiseHistogram: 1;
2506 tANI_U8 statistics: 1;
2507 tANI_U8 LCIMeasurement: 1;
2508 tANI_U8 LCIAzimuth: 1;
2509 tANI_U8 TCMCapability: 1;
2510 tANI_U8 triggeredTCM: 1;
2511 tANI_U8 APChanReport: 1;
2512 tANI_U8 RRMMIBEnabled: 1;
2513 tANI_U8 operatingChanMax: 3;
2514 tANI_U8 nonOperatinChanMax: 3;
2515 tANI_U8 MeasurementPilot: 3;
2516 tANI_U8 MeasurementPilotEnabled: 1;
2517 tANI_U8 NeighborTSFOffset: 1;
2518 tANI_U8 RCPIMeasurement: 1;
2519 tANI_U8 RSNIMeasurement: 1;
2520 tANI_U8 BssAvgAccessDelay: 1;
2521 tANI_U8 BSSAvailAdmission: 1;
2522 tANI_U8 AntennaInformation: 1;
2523 tANI_U8 reserved: 6;
2524} tDot11fIERRMEnabledCap;
2525
2526#define DOT11F_EID_RRMENABLEDCAP ( 70 )
2527
2528// N.B. These #defines do *not* include the EID & length
2529#define DOT11F_IE_RRMENABLEDCAP_MIN_LEN ( 5 )
2530
2531#define DOT11F_IE_RRMENABLEDCAP_MAX_LEN ( 5 )
2532
2533#ifdef __cplusplus
2534extern "C" {
2535#endif /* C++ */
2536tANI_U32 dot11fUnpackIeRRMEnabledCap(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERRMEnabledCap*);
2537
2538tANI_U32 dot11fPackIeRRMEnabledCap(tpAniSirGlobal, tDot11fIERRMEnabledCap*, tANI_U8*, tANI_U32, tANI_U32*);
2539
2540tANI_U32 dot11fGetPackedIERRMEnabledCap(tpAniSirGlobal, tDot11fIERRMEnabledCap*, tANI_U32*);
2541
2542#ifdef __cplusplus
2543}; /* End extern "C". */
2544#endif /* C++ */
2545// EID 10 (0x0a)
2546typedef struct sDot11fIERequestedInfo {
2547 tANI_U8 present;
2548 tANI_U8 num_requested_eids;
2549 tANI_U8 requested_eids[255];
2550} tDot11fIERequestedInfo;
2551
2552#define DOT11F_EID_REQUESTEDINFO ( 10 )
2553
2554// N.B. These #defines do *not* include the EID & length
2555#define DOT11F_IE_REQUESTEDINFO_MIN_LEN ( 0 )
2556
2557#define DOT11F_IE_REQUESTEDINFO_MAX_LEN ( 255 )
2558
2559#ifdef __cplusplus
2560extern "C" {
2561#endif /* C++ */
2562tANI_U32 dot11fUnpackIeRequestedInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERequestedInfo*);
2563
2564tANI_U32 dot11fPackIeRequestedInfo(tpAniSirGlobal, tDot11fIERequestedInfo*, tANI_U8*, tANI_U32, tANI_U32*);
2565
2566tANI_U32 dot11fGetPackedIERequestedInfo(tpAniSirGlobal, tDot11fIERequestedInfo*, tANI_U32*);
2567
2568#ifdef __cplusplus
2569}; /* End extern "C". */
2570#endif /* C++ */
2571// EID 0 (0x00)
2572typedef struct sDot11fIESSID {
2573 tANI_U8 present;
2574 tANI_U8 num_ssid;
2575 tANI_U8 ssid[32];
2576} tDot11fIESSID;
2577
2578#define DOT11F_EID_SSID ( 0 )
2579
2580// N.B. These #defines do *not* include the EID & length
2581#define DOT11F_IE_SSID_MIN_LEN ( 0 )
2582
2583#define DOT11F_IE_SSID_MAX_LEN ( 32 )
2584
2585#ifdef __cplusplus
2586extern "C" {
2587#endif /* C++ */
2588tANI_U32 dot11fUnpackIeSSID(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIESSID*);
2589
2590tANI_U32 dot11fPackIeSSID(tpAniSirGlobal, tDot11fIESSID*, tANI_U8*, tANI_U32, tANI_U32*);
2591
2592tANI_U32 dot11fGetPackedIESSID(tpAniSirGlobal, tDot11fIESSID*, tANI_U32*);
2593
2594#ifdef __cplusplus
2595}; /* End extern "C". */
2596#endif /* C++ */
2597// EID 15 (0x0f)
2598typedef struct sDot11fIESchedule {
2599 tANI_U8 present;
2600 tANI_U16 aggregation: 1;
2601 tANI_U16 tsid: 4;
2602 tANI_U16 direction: 2;
2603 tANI_U16 reserved: 9;
2604 tANI_U32 service_start_time;
2605 tANI_U32 service_interval;
2606 tANI_U16 max_service_dur;
2607 tANI_U16 spec_interval;
2608} tDot11fIESchedule;
2609
2610#define DOT11F_EID_SCHEDULE ( 15 )
2611
2612// N.B. These #defines do *not* include the EID & length
2613#define DOT11F_IE_SCHEDULE_MIN_LEN ( 14 )
2614
2615#define DOT11F_IE_SCHEDULE_MAX_LEN ( 14 )
2616
2617#ifdef __cplusplus
2618extern "C" {
2619#endif /* C++ */
2620tANI_U32 dot11fUnpackIeSchedule(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIESchedule*);
2621
2622tANI_U32 dot11fPackIeSchedule(tpAniSirGlobal, tDot11fIESchedule*, tANI_U8*, tANI_U32, tANI_U32*);
2623
2624tANI_U32 dot11fGetPackedIESchedule(tpAniSirGlobal, tDot11fIESchedule*, tANI_U32*);
2625
2626#ifdef __cplusplus
2627}; /* End extern "C". */
2628#endif /* C++ */
2629// EID 14 (0x0e)
2630typedef struct sDot11fIETCLAS {
2631 tANI_U8 present;
2632 tANI_U8 user_priority;
2633 tANI_U8 classifier_type;
2634 tANI_U8 classifier_mask;
2635 union
2636 {
2637 struct
2638 {
2639 tANI_U8 source[6];
2640 tANI_U8 dest[6];
2641 tANI_U16 type;
2642 } EthParams; /* classifier_type = 0 */
2643 struct
2644 {
2645 tANI_U8 version;
2646 union
2647 {
2648 struct
2649 {
2650 tANI_U8 source[4];
2651 tANI_U8 dest[4];
2652 tANI_U16 src_port;
2653 tANI_U16 dest_port;
2654 tANI_U8 DSCP;
2655 tANI_U8 proto;
2656 tANI_U8 reserved;
2657 } IpV4Params; /* version = 4 */
2658 struct
2659 {
2660 tANI_U8 source[16];
2661 tANI_U8 dest[16];
2662 tANI_U16 src_port;
2663 tANI_U16 dest_port;
2664 tANI_U8 flow_label[3];
2665 } IpV6Params; /* version = 6 */
2666 } params;
2667 } IpParams; /* classifier_type = 1 */
2668 struct
2669 {
2670 tANI_U16 tag_type;
2671 } Params8021dq; /* classifier_type = 2 */
2672 } info;
2673} tDot11fIETCLAS;
2674
2675#define DOT11F_EID_TCLAS ( 14 )
2676
2677// N.B. These #defines do *not* include the EID & length
2678#define DOT11F_IE_TCLAS_MIN_LEN ( 5 )
2679
2680#define DOT11F_IE_TCLAS_MAX_LEN ( 43 )
2681
2682#ifdef __cplusplus
2683extern "C" {
2684#endif /* C++ */
2685tANI_U32 dot11fUnpackIeTCLAS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETCLAS*);
2686
2687tANI_U32 dot11fPackIeTCLAS(tpAniSirGlobal, tDot11fIETCLAS*, tANI_U8*, tANI_U32, tANI_U32*);
2688
2689tANI_U32 dot11fGetPackedIETCLAS(tpAniSirGlobal, tDot11fIETCLAS*, tANI_U32*);
2690
2691#ifdef __cplusplus
2692}; /* End extern "C". */
2693#endif /* C++ */
2694// EID 44 (0x2c)
2695typedef struct sDot11fIETCLASSPROC {
2696 tANI_U8 present;
2697 tANI_U8 processing;
2698} tDot11fIETCLASSPROC;
2699
2700#define DOT11F_EID_TCLASSPROC ( 44 )
2701
2702// N.B. These #defines do *not* include the EID & length
2703#define DOT11F_IE_TCLASSPROC_MIN_LEN ( 1 )
2704
2705#define DOT11F_IE_TCLASSPROC_MAX_LEN ( 1 )
2706
2707#ifdef __cplusplus
2708extern "C" {
2709#endif /* C++ */
2710tANI_U32 dot11fUnpackIeTCLASSPROC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETCLASSPROC*);
2711
2712tANI_U32 dot11fPackIeTCLASSPROC(tpAniSirGlobal, tDot11fIETCLASSPROC*, tANI_U8*, tANI_U32, tANI_U32*);
2713
2714tANI_U32 dot11fGetPackedIETCLASSPROC(tpAniSirGlobal, tDot11fIETCLASSPROC*, tANI_U32*);
2715
2716#ifdef __cplusplus
2717}; /* End extern "C". */
2718#endif /* C++ */
2719// EID 43 (0x2b)
2720typedef struct sDot11fIETSDelay {
2721 tANI_U8 present;
2722 tANI_U32 delay;
2723} tDot11fIETSDelay;
2724
2725#define DOT11F_EID_TSDELAY ( 43 )
2726
2727// N.B. These #defines do *not* include the EID & length
2728#define DOT11F_IE_TSDELAY_MIN_LEN ( 4 )
2729
2730#define DOT11F_IE_TSDELAY_MAX_LEN ( 4 )
2731
2732#ifdef __cplusplus
2733extern "C" {
2734#endif /* C++ */
2735tANI_U32 dot11fUnpackIeTSDelay(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETSDelay*);
2736
2737tANI_U32 dot11fPackIeTSDelay(tpAniSirGlobal, tDot11fIETSDelay*, tANI_U8*, tANI_U32, tANI_U32*);
2738
2739tANI_U32 dot11fGetPackedIETSDelay(tpAniSirGlobal, tDot11fIETSDelay*, tANI_U32*);
2740
2741#ifdef __cplusplus
2742}; /* End extern "C". */
2743#endif /* C++ */
2744// EID 13 (0x0d)
2745typedef struct sDot11fIETSPEC {
2746 tANI_U8 present;
2747 tANI_U16 traffic_type: 1;
2748 tANI_U16 tsid: 4;
2749 tANI_U16 direction: 2;
2750 tANI_U16 access_policy: 2;
2751 tANI_U16 aggregation: 1;
2752 tANI_U16 psb: 1;
2753 tANI_U16 user_priority: 3;
2754 tANI_U16 tsinfo_ack_pol: 2;
2755 tANI_U8 schedule: 1;
2756 tANI_U8 unused: 7;
2757 tANI_U16 size: 15;
2758 tANI_U16 fixed: 1;
2759 tANI_U16 max_msdu_size;
2760 tANI_U32 min_service_int;
2761 tANI_U32 max_service_int;
2762 tANI_U32 inactivity_int;
2763 tANI_U32 suspension_int;
2764 tANI_U32 service_start_time;
2765 tANI_U32 min_data_rate;
2766 tANI_U32 mean_data_rate;
2767 tANI_U32 peak_data_rate;
2768 tANI_U32 burst_size;
2769 tANI_U32 delay_bound;
2770 tANI_U32 min_phy_rate;
2771 tANI_U16 surplus_bw_allowance;
2772 tANI_U16 medium_time;
2773} tDot11fIETSPEC;
2774
2775#define DOT11F_EID_TSPEC ( 13 )
2776
2777// N.B. These #defines do *not* include the EID & length
2778#define DOT11F_IE_TSPEC_MIN_LEN ( 55 )
2779
2780#define DOT11F_IE_TSPEC_MAX_LEN ( 55 )
2781
2782#ifdef __cplusplus
2783extern "C" {
2784#endif /* C++ */
2785tANI_U32 dot11fUnpackIeTSPEC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETSPEC*);
2786
2787tANI_U32 dot11fPackIeTSPEC(tpAniSirGlobal, tDot11fIETSPEC*, tANI_U8*, tANI_U32, tANI_U32*);
2788
2789tANI_U32 dot11fGetPackedIETSPEC(tpAniSirGlobal, tDot11fIETSPEC*, tANI_U32*);
2790
2791#ifdef __cplusplus
2792}; /* End extern "C". */
2793#endif /* C++ */
2794// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x09}
2795typedef struct sDot11fIEWMMSchedule {
2796 tANI_U8 present;
2797 tANI_U8 version /* Must be 1! */;
2798 tANI_U16 aggregation: 1;
2799 tANI_U16 tsid: 4;
2800 tANI_U16 direction: 2;
2801 tANI_U16 reserved: 9;
2802 tANI_U32 service_start_time;
2803 tANI_U32 service_interval;
2804 tANI_U16 max_service_dur;
2805 tANI_U16 spec_interval;
2806} tDot11fIEWMMSchedule;
2807
2808#define DOT11F_EID_WMMSCHEDULE ( 221 )
2809
2810// N.B. These #defines do *not* include the EID & length
2811#define DOT11F_IE_WMMSCHEDULE_MIN_LEN ( 20 )
2812
2813#define DOT11F_IE_WMMSCHEDULE_MAX_LEN ( 20 )
2814
2815#ifdef __cplusplus
2816extern "C" {
2817#endif /* C++ */
2818tANI_U32 dot11fUnpackIeWMMSchedule(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMSchedule*);
2819
2820tANI_U32 dot11fPackIeWMMSchedule(tpAniSirGlobal, tDot11fIEWMMSchedule*, tANI_U8*, tANI_U32, tANI_U32*);
2821
2822tANI_U32 dot11fGetPackedIEWMMSchedule(tpAniSirGlobal, tDot11fIEWMMSchedule*, tANI_U32*);
2823
2824#ifdef __cplusplus
2825}; /* End extern "C". */
2826#endif /* C++ */
2827// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x06}
2828typedef struct sDot11fIEWMMTCLAS {
2829 tANI_U8 present;
2830 tANI_U8 version /* Must be 1! */;
2831 tANI_U8 user_priority;
2832 tANI_U8 classifier_type;
2833 tANI_U8 classifier_mask;
2834 union
2835 {
2836 struct
2837 {
2838 tANI_U8 source[6];
2839 tANI_U8 dest[6];
2840 tANI_U16 type;
2841 } EthParams; /* classifier_type = 0 */
2842 struct
2843 {
2844 tANI_U8 version;
2845 union
2846 {
2847 struct
2848 {
2849 tANI_U8 source[4];
2850 tANI_U8 dest[4];
2851 tANI_U16 src_port;
2852 tANI_U16 dest_port;
2853 tANI_U8 DSCP;
2854 tANI_U8 proto;
2855 tANI_U8 reserved;
2856 } IpV4Params; /* version = 4 */
2857 struct
2858 {
2859 tANI_U8 source[16];
2860 tANI_U8 dest[16];
2861 tANI_U16 src_port;
2862 tANI_U16 dest_port;
2863 tANI_U8 flow_label[3];
2864 } IpV6Params; /* version = 6 */
2865 } params;
2866 } IpParams; /* classifier_type = 1 */
2867 struct
2868 {
2869 tANI_U16 tag_type;
2870 } Params8021dq; /* classifier_type = 2 */
2871 } info;
2872} tDot11fIEWMMTCLAS;
2873
2874#define DOT11F_EID_WMMTCLAS ( 221 )
2875
2876// N.B. These #defines do *not* include the EID & length
2877#define DOT11F_IE_WMMTCLAS_MIN_LEN ( 11 )
2878
2879#define DOT11F_IE_WMMTCLAS_MAX_LEN ( 49 )
2880
2881#ifdef __cplusplus
2882extern "C" {
2883#endif /* C++ */
2884tANI_U32 dot11fUnpackIeWMMTCLAS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMTCLAS*);
2885
2886tANI_U32 dot11fPackIeWMMTCLAS(tpAniSirGlobal, tDot11fIEWMMTCLAS*, tANI_U8*, tANI_U32, tANI_U32*);
2887
2888tANI_U32 dot11fGetPackedIEWMMTCLAS(tpAniSirGlobal, tDot11fIEWMMTCLAS*, tANI_U32*);
2889
2890#ifdef __cplusplus
2891}; /* End extern "C". */
2892#endif /* C++ */
2893// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x07}
2894typedef struct sDot11fIEWMMTCLASPROC {
2895 tANI_U8 present;
2896 tANI_U8 version /* Must be 1! */;
2897 tANI_U8 processing;
2898} tDot11fIEWMMTCLASPROC;
2899
2900#define DOT11F_EID_WMMTCLASPROC ( 221 )
2901
2902// N.B. These #defines do *not* include the EID & length
2903#define DOT11F_IE_WMMTCLASPROC_MIN_LEN ( 7 )
2904
2905#define DOT11F_IE_WMMTCLASPROC_MAX_LEN ( 7 )
2906
2907#ifdef __cplusplus
2908extern "C" {
2909#endif /* C++ */
2910tANI_U32 dot11fUnpackIeWMMTCLASPROC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMTCLASPROC*);
2911
2912tANI_U32 dot11fPackIeWMMTCLASPROC(tpAniSirGlobal, tDot11fIEWMMTCLASPROC*, tANI_U8*, tANI_U32, tANI_U32*);
2913
2914tANI_U32 dot11fGetPackedIEWMMTCLASPROC(tpAniSirGlobal, tDot11fIEWMMTCLASPROC*, tANI_U32*);
2915
2916#ifdef __cplusplus
2917}; /* End extern "C". */
2918#endif /* C++ */
2919// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x08}
2920typedef struct sDot11fIEWMMTSDelay {
2921 tANI_U8 present;
2922 tANI_U8 version /* Must be 1! */;
2923 tANI_U32 delay;
2924} tDot11fIEWMMTSDelay;
2925
2926#define DOT11F_EID_WMMTSDELAY ( 221 )
2927
2928// N.B. These #defines do *not* include the EID & length
2929#define DOT11F_IE_WMMTSDELAY_MIN_LEN ( 10 )
2930
2931#define DOT11F_IE_WMMTSDELAY_MAX_LEN ( 10 )
2932
2933#ifdef __cplusplus
2934extern "C" {
2935#endif /* C++ */
2936tANI_U32 dot11fUnpackIeWMMTSDelay(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMTSDelay*);
2937
2938tANI_U32 dot11fPackIeWMMTSDelay(tpAniSirGlobal, tDot11fIEWMMTSDelay*, tANI_U8*, tANI_U32, tANI_U32*);
2939
2940tANI_U32 dot11fGetPackedIEWMMTSDelay(tpAniSirGlobal, tDot11fIEWMMTSDelay*, tANI_U32*);
2941
2942#ifdef __cplusplus
2943}; /* End extern "C". */
2944#endif /* C++ */
2945// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x02}
2946typedef struct sDot11fIEWMMTSPEC {
2947 tANI_U8 present;
2948 tANI_U8 version /* Must be 1! */;
2949 tANI_U16 traffic_type: 1;
2950 tANI_U16 tsid: 4;
2951 tANI_U16 direction: 2;
2952 tANI_U16 access_policy: 2;
2953 tANI_U16 aggregation: 1;
2954 tANI_U16 psb: 1;
2955 tANI_U16 user_priority: 3;
2956 tANI_U16 tsinfo_ack_pol: 2;
2957 tANI_U8 tsinfo_rsvd: 7;
2958 tANI_U8 burst_size_defn: 1;
2959 tANI_U16 size: 15;
2960 tANI_U16 fixed: 1;
2961 tANI_U16 max_msdu_size;
2962 tANI_U32 min_service_int;
2963 tANI_U32 max_service_int;
2964 tANI_U32 inactivity_int;
2965 tANI_U32 suspension_int;
2966 tANI_U32 service_start_time;
2967 tANI_U32 min_data_rate;
2968 tANI_U32 mean_data_rate;
2969 tANI_U32 peak_data_rate;
2970 tANI_U32 burst_size;
2971 tANI_U32 delay_bound;
2972 tANI_U32 min_phy_rate;
2973 tANI_U16 surplus_bw_allowance;
2974 tANI_U16 medium_time;
2975} tDot11fIEWMMTSPEC;
2976
2977#define DOT11F_EID_WMMTSPEC ( 221 )
2978
2979// N.B. These #defines do *not* include the EID & length
2980#define DOT11F_IE_WMMTSPEC_MIN_LEN ( 61 )
2981
2982#define DOT11F_IE_WMMTSPEC_MAX_LEN ( 61 )
2983
2984#ifdef __cplusplus
2985extern "C" {
2986#endif /* C++ */
2987tANI_U32 dot11fUnpackIeWMMTSPEC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMTSPEC*);
2988
2989tANI_U32 dot11fPackIeWMMTSPEC(tpAniSirGlobal, tDot11fIEWMMTSPEC*, tANI_U8*, tANI_U32, tANI_U32*);
2990
2991tANI_U32 dot11fGetPackedIEWMMTSPEC(tpAniSirGlobal, tDot11fIEWMMTSPEC*, tANI_U32*);
2992
2993#ifdef __cplusplus
2994}; /* End extern "C". */
2995#endif /* C++ */
2996// EID 221 (0xdd) {OUI 0x00, 0x0a, 0xf5}
2997typedef struct sDot11fIEAirgo {
2998 tANI_U8 present;
2999 tDot11fIEPropSuppRates PropSuppRates;
3000 tDot11fIEAPName APName;
3001 tDot11fIEHCF HCF;
3002 tDot11fIEWDS WDS;
3003 tDot11fIEBPIndicator BPIndicator;
3004 tDot11fIELoadInfo LoadInfo;
3005 tDot11fIELoadBalance LoadBalance;
3006 tDot11fIEPropAssocType PropAssocType;
3007 tDot11fIELLAttr LLAttr;
3008 tDot11fIEPropCapability PropCapability;
3009 tDot11fIEVersion Version;
3010 tDot11fIEPropEDCAParams PropEDCAParams;
3011 tDot11fIETitan Titan;
3012 tDot11fIEPropChannSwitchAnn PropChannSwitchAnn;
3013 tDot11fIEPropQuietBSS PropQuietBSS;
3014 tDot11fIETriggerStaBgScan TriggerStaBgScan;
3015 tDot11fIETaurus Taurus;
3016} tDot11fIEAirgo;
3017
3018#define DOT11F_EID_AIRGO ( 221 )
3019
3020// N.B. These #defines do *not* include the EID & length
3021#define DOT11F_IE_AIRGO_MIN_LEN ( 3 )
3022
3023#define DOT11F_IE_AIRGO_MAX_LEN ( 230 )
3024
3025#ifdef __cplusplus
3026extern "C" {
3027#endif /* C++ */
3028tANI_U32 dot11fUnpackIeAirgo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEAirgo*);
3029
3030tANI_U32 dot11fPackIeAirgo(tpAniSirGlobal, tDot11fIEAirgo*, tANI_U8*, tANI_U32, tANI_U32*);
3031
3032tANI_U32 dot11fGetPackedIEAirgo(tpAniSirGlobal, tDot11fIEAirgo*, tANI_U32*);
3033
3034#ifdef __cplusplus
3035}; /* End extern "C". */
3036#endif /* C++ */
3037// EID 156 (0x9c) {OUI 0x00, 0x40, 0x96, 0x00}
3038typedef struct sDot11fIECCXCckmOpaque {
3039 tANI_U8 present;
3040 tANI_U8 num_data;
3041 tANI_U8 data[20];
3042} tDot11fIECCXCckmOpaque;
3043
3044#define DOT11F_EID_CCXCCKMOPAQUE ( 156 )
3045
3046// N.B. These #defines do *not* include the EID & length
3047#define DOT11F_IE_CCXCCKMOPAQUE_MIN_LEN ( 10 )
3048
3049#define DOT11F_IE_CCXCCKMOPAQUE_MAX_LEN ( 24 )
3050
3051#ifdef __cplusplus
3052extern "C" {
3053#endif /* C++ */
3054tANI_U32 dot11fUnpackIeCCXCckmOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECCXCckmOpaque*);
3055
3056tANI_U32 dot11fPackIeCCXCckmOpaque(tpAniSirGlobal, tDot11fIECCXCckmOpaque*, tANI_U8*, tANI_U32, tANI_U32*);
3057
3058tANI_U32 dot11fGetPackedIECCXCckmOpaque(tpAniSirGlobal, tDot11fIECCXCckmOpaque*, tANI_U32*);
3059
3060#ifdef __cplusplus
3061}; /* End extern "C". */
3062#endif /* C++ */
3063// EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x01}
3064typedef struct sDot11fIECCXRadMgmtCap {
3065 tANI_U8 present;
3066 tANI_U8 mgmt_state;
3067 tANI_U8 mbssid_mask: 3;
3068 tANI_U8 reserved: 5;
3069} tDot11fIECCXRadMgmtCap;
3070
3071#define DOT11F_EID_CCXRADMGMTCAP ( 221 )
3072
3073// N.B. These #defines do *not* include the EID & length
3074#define DOT11F_IE_CCXRADMGMTCAP_MIN_LEN ( 6 )
3075
3076#define DOT11F_IE_CCXRADMGMTCAP_MAX_LEN ( 6 )
3077
3078#ifdef __cplusplus
3079extern "C" {
3080#endif /* C++ */
3081tANI_U32 dot11fUnpackIeCCXRadMgmtCap(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECCXRadMgmtCap*);
3082
3083tANI_U32 dot11fPackIeCCXRadMgmtCap(tpAniSirGlobal, tDot11fIECCXRadMgmtCap*, tANI_U8*, tANI_U32, tANI_U32*);
3084
3085tANI_U32 dot11fGetPackedIECCXRadMgmtCap(tpAniSirGlobal, tDot11fIECCXRadMgmtCap*, tANI_U32*);
3086
3087#ifdef __cplusplus
3088}; /* End extern "C". */
3089#endif /* C++ */
3090// EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x07}
3091typedef struct sDot11fIECCXTrafStrmMet {
3092 tANI_U8 present;
3093 tANI_U8 tsid;
3094 tANI_U8 state;
3095 tANI_U16 msmt_interval;
3096} tDot11fIECCXTrafStrmMet;
3097
3098#define DOT11F_EID_CCXTRAFSTRMMET ( 221 )
3099
3100// N.B. These #defines do *not* include the EID & length
3101#define DOT11F_IE_CCXTRAFSTRMMET_MIN_LEN ( 8 )
3102
3103#define DOT11F_IE_CCXTRAFSTRMMET_MAX_LEN ( 8 )
3104
3105#ifdef __cplusplus
3106extern "C" {
3107#endif /* C++ */
3108tANI_U32 dot11fUnpackIeCCXTrafStrmMet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECCXTrafStrmMet*);
3109
3110tANI_U32 dot11fPackIeCCXTrafStrmMet(tpAniSirGlobal, tDot11fIECCXTrafStrmMet*, tANI_U8*, tANI_U32, tANI_U32*);
3111
3112tANI_U32 dot11fGetPackedIECCXTrafStrmMet(tpAniSirGlobal, tDot11fIECCXTrafStrmMet*, tANI_U32*);
3113
3114#ifdef __cplusplus
3115}; /* End extern "C". */
3116#endif /* C++ */
3117// EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x08}
3118typedef struct sDot11fIECCXTrafStrmRateSet {
3119 tANI_U8 present;
3120 tANI_U8 tsid;
3121 tANI_U8 num_tsrates;
3122 tANI_U8 tsrates[8];
3123} tDot11fIECCXTrafStrmRateSet;
3124
3125#define DOT11F_EID_CCXTRAFSTRMRATESET ( 221 )
3126
3127// N.B. These #defines do *not* include the EID & length
3128#define DOT11F_IE_CCXTRAFSTRMRATESET_MIN_LEN ( 5 )
3129
3130#define DOT11F_IE_CCXTRAFSTRMRATESET_MAX_LEN ( 13 )
3131
3132#ifdef __cplusplus
3133extern "C" {
3134#endif /* C++ */
3135tANI_U32 dot11fUnpackIeCCXTrafStrmRateSet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECCXTrafStrmRateSet*);
3136
3137tANI_U32 dot11fPackIeCCXTrafStrmRateSet(tpAniSirGlobal, tDot11fIECCXTrafStrmRateSet*, tANI_U8*, tANI_U32, tANI_U32*);
3138
3139tANI_U32 dot11fGetPackedIECCXTrafStrmRateSet(tpAniSirGlobal, tDot11fIECCXTrafStrmRateSet*, tANI_U32*);
3140
3141#ifdef __cplusplus
3142}; /* End extern "C". */
3143#endif /* C++ */
3144// EID 150 (0x96) {OUI 0x00, 0x40, 0x96, 0x00}
3145typedef struct sDot11fIECCXTxmitPower {
3146 tANI_U8 present;
3147 tANI_U8 power_limit;
3148 tANI_U8 reserved;
3149} tDot11fIECCXTxmitPower;
3150
3151#define DOT11F_EID_CCXTXMITPOWER ( 150 )
3152
3153// N.B. These #defines do *not* include the EID & length
3154#define DOT11F_IE_CCXTXMITPOWER_MIN_LEN ( 6 )
3155
3156#define DOT11F_IE_CCXTXMITPOWER_MAX_LEN ( 6 )
3157
3158#ifdef __cplusplus
3159extern "C" {
3160#endif /* C++ */
3161tANI_U32 dot11fUnpackIeCCXTxmitPower(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECCXTxmitPower*);
3162
3163tANI_U32 dot11fPackIeCCXTxmitPower(tpAniSirGlobal, tDot11fIECCXTxmitPower*, tANI_U8*, tANI_U32, tANI_U32*);
3164
3165tANI_U32 dot11fGetPackedIECCXTxmitPower(tpAniSirGlobal, tDot11fIECCXTxmitPower*, tANI_U32*);
3166
3167#ifdef __cplusplus
3168}; /* End extern "C". */
3169#endif /* C++ */
3170// EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x03}
3171typedef struct sDot11fIECCXVersion {
3172 tANI_U8 present;
3173 tANI_U8 version;
3174} tDot11fIECCXVersion;
3175
3176#define DOT11F_EID_CCXVERSION ( 221 )
3177
3178// N.B. These #defines do *not* include the EID & length
3179#define DOT11F_IE_CCXVERSION_MIN_LEN ( 5 )
3180
3181#define DOT11F_IE_CCXVERSION_MAX_LEN ( 5 )
3182
3183#ifdef __cplusplus
3184extern "C" {
3185#endif /* C++ */
3186tANI_U32 dot11fUnpackIeCCXVersion(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECCXVersion*);
3187
3188tANI_U32 dot11fPackIeCCXVersion(tpAniSirGlobal, tDot11fIECCXVersion*, tANI_U8*, tANI_U32, tANI_U32*);
3189
3190tANI_U32 dot11fGetPackedIECCXVersion(tpAniSirGlobal, tDot11fIECCXVersion*, tANI_U32*);
3191
3192#ifdef __cplusplus
3193}; /* End extern "C". */
3194#endif /* C++ */
3195// EID 4 (0x04)
3196typedef struct sDot11fIECFParams {
3197 tANI_U8 present;
3198 tANI_U8 cfp_count;
3199 tANI_U8 cfp_period;
3200 tANI_U16 cfp_maxduration;
3201 tANI_U16 cfp_durremaining;
3202} tDot11fIECFParams;
3203
3204#define DOT11F_EID_CFPARAMS ( 4 )
3205
3206// N.B. These #defines do *not* include the EID & length
3207#define DOT11F_IE_CFPARAMS_MIN_LEN ( 6 )
3208
3209#define DOT11F_IE_CFPARAMS_MAX_LEN ( 6 )
3210
3211#ifdef __cplusplus
3212extern "C" {
3213#endif /* C++ */
3214tANI_U32 dot11fUnpackIeCFParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECFParams*);
3215
3216tANI_U32 dot11fPackIeCFParams(tpAniSirGlobal, tDot11fIECFParams*, tANI_U8*, tANI_U32, tANI_U32*);
3217
3218tANI_U32 dot11fGetPackedIECFParams(tpAniSirGlobal, tDot11fIECFParams*, tANI_U32*);
3219
3220#ifdef __cplusplus
3221}; /* End extern "C". */
3222#endif /* C++ */
3223// EID 16 (0x10)
3224typedef struct sDot11fIEChallengeText {
3225 tANI_U8 present;
3226 tANI_U8 num_text;
3227 tANI_U8 text[253];
3228} tDot11fIEChallengeText;
3229
3230#define DOT11F_EID_CHALLENGETEXT ( 16 )
3231
3232// N.B. These #defines do *not* include the EID & length
3233#define DOT11F_IE_CHALLENGETEXT_MIN_LEN ( 1 )
3234
3235#define DOT11F_IE_CHALLENGETEXT_MAX_LEN ( 253 )
3236
3237#ifdef __cplusplus
3238extern "C" {
3239#endif /* C++ */
3240tANI_U32 dot11fUnpackIeChallengeText(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEChallengeText*);
3241
3242tANI_U32 dot11fPackIeChallengeText(tpAniSirGlobal, tDot11fIEChallengeText*, tANI_U8*, tANI_U32, tANI_U32*);
3243
3244tANI_U32 dot11fGetPackedIEChallengeText(tpAniSirGlobal, tDot11fIEChallengeText*, tANI_U32*);
3245
3246#ifdef __cplusplus
3247}; /* End extern "C". */
3248#endif /* C++ */
3249// EID 37 (0x25)
3250typedef struct sDot11fIEChanSwitchAnn {
3251 tANI_U8 present;
3252 tANI_U8 switchMode;
3253 tANI_U8 newChannel;
3254 tANI_U8 switchCount;
3255} tDot11fIEChanSwitchAnn;
3256
3257#define DOT11F_EID_CHANSWITCHANN ( 37 )
3258
3259// N.B. These #defines do *not* include the EID & length
3260#define DOT11F_IE_CHANSWITCHANN_MIN_LEN ( 3 )
3261
3262#define DOT11F_IE_CHANSWITCHANN_MAX_LEN ( 3 )
3263
3264#ifdef __cplusplus
3265extern "C" {
3266#endif /* C++ */
3267tANI_U32 dot11fUnpackIeChanSwitchAnn(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEChanSwitchAnn*);
3268
3269tANI_U32 dot11fPackIeChanSwitchAnn(tpAniSirGlobal, tDot11fIEChanSwitchAnn*, tANI_U8*, tANI_U32, tANI_U32*);
3270
3271tANI_U32 dot11fGetPackedIEChanSwitchAnn(tpAniSirGlobal, tDot11fIEChanSwitchAnn*, tANI_U32*);
3272
3273#ifdef __cplusplus
3274}; /* End extern "C". */
3275#endif /* C++ */
3276// EID 7 (0x07)
3277typedef struct sDot11fIECountry {
3278 tANI_U8 present;
3279 tANI_U8 country[3];
3280 tANI_U8 num_triplets;
3281 tANI_U8 triplets[84][3];
3282} tDot11fIECountry;
3283
3284#define DOT11F_EID_COUNTRY ( 7 )
3285
3286// N.B. These #defines do *not* include the EID & length
3287#define DOT11F_IE_COUNTRY_MIN_LEN ( 3 )
3288
3289#define DOT11F_IE_COUNTRY_MAX_LEN ( 255 )
3290
3291#ifdef __cplusplus
3292extern "C" {
3293#endif /* C++ */
3294tANI_U32 dot11fUnpackIeCountry(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECountry*);
3295
3296tANI_U32 dot11fPackIeCountry(tpAniSirGlobal, tDot11fIECountry*, tANI_U8*, tANI_U32, tANI_U32*);
3297
3298tANI_U32 dot11fGetPackedIECountry(tpAniSirGlobal, tDot11fIECountry*, tANI_U32*);
3299
3300#ifdef __cplusplus
3301}; /* End extern "C". */
3302#endif /* C++ */
3303// EID 3 (0x03)
3304typedef struct sDot11fIEDSParams {
3305 tANI_U8 present;
3306 tANI_U8 curr_channel;
3307} tDot11fIEDSParams;
3308
3309#define DOT11F_EID_DSPARAMS ( 3 )
3310
3311// N.B. These #defines do *not* include the EID & length
3312#define DOT11F_IE_DSPARAMS_MIN_LEN ( 1 )
3313
3314#define DOT11F_IE_DSPARAMS_MAX_LEN ( 1 )
3315
3316#ifdef __cplusplus
3317extern "C" {
3318#endif /* C++ */
3319tANI_U32 dot11fUnpackIeDSParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEDSParams*);
3320
3321tANI_U32 dot11fPackIeDSParams(tpAniSirGlobal, tDot11fIEDSParams*, tANI_U8*, tANI_U32, tANI_U32*);
3322
3323tANI_U32 dot11fGetPackedIEDSParams(tpAniSirGlobal, tDot11fIEDSParams*, tANI_U32*);
3324
3325#ifdef __cplusplus
3326}; /* End extern "C". */
3327#endif /* C++ */
3328// EID 12 (0x0c)
3329typedef struct sDot11fIEEDCAParamSet {
3330 tANI_U8 present;
3331 tANI_U8 qos;
3332 tANI_U8 reserved;
3333 tANI_U8 acbe_aifsn: 4;
3334 tANI_U8 acbe_acm: 1;
3335 tANI_U8 acbe_aci: 2;
3336 tANI_U8 unused1: 1;
3337 tANI_U8 acbe_acwmin: 4;
3338 tANI_U8 acbe_acwmax: 4;
3339 tANI_U16 acbe_txoplimit;
3340 tANI_U8 acbk_aifsn: 4;
3341 tANI_U8 acbk_acm: 1;
3342 tANI_U8 acbk_aci: 2;
3343 tANI_U8 unused2: 1;
3344 tANI_U8 acbk_acwmin: 4;
3345 tANI_U8 acbk_acwmax: 4;
3346 tANI_U16 acbk_txoplimit;
3347 tANI_U8 acvi_aifsn: 4;
3348 tANI_U8 acvi_acm: 1;
3349 tANI_U8 acvi_aci: 2;
3350 tANI_U8 unused3: 1;
3351 tANI_U8 acvi_acwmin: 4;
3352 tANI_U8 acvi_acwmax: 4;
3353 tANI_U16 acvi_txoplimit;
3354 tANI_U8 acvo_aifsn: 4;
3355 tANI_U8 acvo_acm: 1;
3356 tANI_U8 acvo_aci: 2;
3357 tANI_U8 unused4: 1;
3358 tANI_U8 acvo_acwmin: 4;
3359 tANI_U8 acvo_acwmax: 4;
3360 tANI_U16 acvo_txoplimit;
3361} tDot11fIEEDCAParamSet;
3362
3363#define DOT11F_EID_EDCAPARAMSET ( 12 )
3364
3365// N.B. These #defines do *not* include the EID & length
3366#define DOT11F_IE_EDCAPARAMSET_MIN_LEN ( 18 )
3367
3368#define DOT11F_IE_EDCAPARAMSET_MAX_LEN ( 18 )
3369
3370#ifdef __cplusplus
3371extern "C" {
3372#endif /* C++ */
3373tANI_U32 dot11fUnpackIeEDCAParamSet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEEDCAParamSet*);
3374
3375tANI_U32 dot11fPackIeEDCAParamSet(tpAniSirGlobal, tDot11fIEEDCAParamSet*, tANI_U8*, tANI_U32, tANI_U32*);
3376
3377tANI_U32 dot11fGetPackedIEEDCAParamSet(tpAniSirGlobal, tDot11fIEEDCAParamSet*, tANI_U32*);
3378
3379#ifdef __cplusplus
3380}; /* End extern "C". */
3381#endif /* C++ */
3382// EID 42 (0x2a)
3383typedef struct sDot11fIEERPInfo {
3384 tANI_U8 present;
3385 tANI_U8 non_erp_present: 1;
3386 tANI_U8 use_prot: 1;
3387 tANI_U8 barker_preamble: 1;
3388 tANI_U8 unused: 5;
3389} tDot11fIEERPInfo;
3390
3391#define DOT11F_EID_ERPINFO ( 42 )
3392
3393// N.B. These #defines do *not* include the EID & length
3394#define DOT11F_IE_ERPINFO_MIN_LEN ( 1 )
3395
3396#define DOT11F_IE_ERPINFO_MAX_LEN ( 1 )
3397
3398#ifdef __cplusplus
3399extern "C" {
3400#endif /* C++ */
3401tANI_U32 dot11fUnpackIeERPInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEERPInfo*);
3402
3403tANI_U32 dot11fPackIeERPInfo(tpAniSirGlobal, tDot11fIEERPInfo*, tANI_U8*, tANI_U32, tANI_U32*);
3404
3405tANI_U32 dot11fGetPackedIEERPInfo(tpAniSirGlobal, tDot11fIEERPInfo*, tANI_U32*);
3406
3407#ifdef __cplusplus
3408}; /* End extern "C". */
3409#endif /* C++ */
3410// EID 62 (0x3e)
3411typedef struct sDot11fIEExtChanSwitchAnn {
3412 tANI_U8 present;
3413 tANI_U8 secondaryChannelOffset;
3414} tDot11fIEExtChanSwitchAnn;
3415
3416#define DOT11F_EID_EXTCHANSWITCHANN ( 62 )
3417
3418// N.B. These #defines do *not* include the EID & length
3419#define DOT11F_IE_EXTCHANSWITCHANN_MIN_LEN ( 1 )
3420
3421#define DOT11F_IE_EXTCHANSWITCHANN_MAX_LEN ( 1 )
3422
3423#ifdef __cplusplus
3424extern "C" {
3425#endif /* C++ */
3426tANI_U32 dot11fUnpackIeExtChanSwitchAnn(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEExtChanSwitchAnn*);
3427
3428tANI_U32 dot11fPackIeExtChanSwitchAnn(tpAniSirGlobal, tDot11fIEExtChanSwitchAnn*, tANI_U8*, tANI_U32, tANI_U32*);
3429
3430tANI_U32 dot11fGetPackedIEExtChanSwitchAnn(tpAniSirGlobal, tDot11fIEExtChanSwitchAnn*, tANI_U32*);
3431
3432#ifdef __cplusplus
3433}; /* End extern "C". */
3434#endif /* C++ */
3435// EID 50 (0x32)
3436typedef struct sDot11fIEExtSuppRates {
3437 tANI_U8 present;
3438 tANI_U8 num_rates;
3439 tANI_U8 rates[12];
3440} tDot11fIEExtSuppRates;
3441
3442#define DOT11F_EID_EXTSUPPRATES ( 50 )
3443
3444// N.B. These #defines do *not* include the EID & length
3445#define DOT11F_IE_EXTSUPPRATES_MIN_LEN ( 1 )
3446
3447#define DOT11F_IE_EXTSUPPRATES_MAX_LEN ( 12 )
3448
3449#ifdef __cplusplus
3450extern "C" {
3451#endif /* C++ */
3452tANI_U32 dot11fUnpackIeExtSuppRates(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEExtSuppRates*);
3453
3454tANI_U32 dot11fPackIeExtSuppRates(tpAniSirGlobal, tDot11fIEExtSuppRates*, tANI_U8*, tANI_U32, tANI_U32*);
3455
3456tANI_U32 dot11fGetPackedIEExtSuppRates(tpAniSirGlobal, tDot11fIEExtSuppRates*, tANI_U32*);
3457
3458#ifdef __cplusplus
3459}; /* End extern "C". */
3460#endif /* C++ */
3461// EID 2 (0x02)
3462typedef struct sDot11fIEFHParamSet {
3463 tANI_U8 present;
3464 tANI_U16 dwell_time;
3465 tANI_U8 hop_set;
3466 tANI_U8 hop_pattern;
3467 tANI_U8 hop_index;
3468} tDot11fIEFHParamSet;
3469
3470#define DOT11F_EID_FHPARAMSET ( 2 )
3471
3472// N.B. These #defines do *not* include the EID & length
3473#define DOT11F_IE_FHPARAMSET_MIN_LEN ( 5 )
3474
3475#define DOT11F_IE_FHPARAMSET_MAX_LEN ( 5 )
3476
3477#ifdef __cplusplus
3478extern "C" {
3479#endif /* C++ */
3480tANI_U32 dot11fUnpackIeFHParamSet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFHParamSet*);
3481
3482tANI_U32 dot11fPackIeFHParamSet(tpAniSirGlobal, tDot11fIEFHParamSet*, tANI_U8*, tANI_U32, tANI_U32*);
3483
3484tANI_U32 dot11fGetPackedIEFHParamSet(tpAniSirGlobal, tDot11fIEFHParamSet*, tANI_U32*);
3485
3486#ifdef __cplusplus
3487}; /* End extern "C". */
3488#endif /* C++ */
3489// EID 8 (0x08)
3490typedef struct sDot11fIEFHParams {
3491 tANI_U8 present;
3492 tANI_U8 radix;
3493 tANI_U8 nchannels;
3494} tDot11fIEFHParams;
3495
3496#define DOT11F_EID_FHPARAMS ( 8 )
3497
3498// N.B. These #defines do *not* include the EID & length
3499#define DOT11F_IE_FHPARAMS_MIN_LEN ( 2 )
3500
3501#define DOT11F_IE_FHPARAMS_MAX_LEN ( 2 )
3502
3503#ifdef __cplusplus
3504extern "C" {
3505#endif /* C++ */
3506tANI_U32 dot11fUnpackIeFHParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFHParams*);
3507
3508tANI_U32 dot11fPackIeFHParams(tpAniSirGlobal, tDot11fIEFHParams*, tANI_U8*, tANI_U32, tANI_U32*);
3509
3510tANI_U32 dot11fGetPackedIEFHParams(tpAniSirGlobal, tDot11fIEFHParams*, tANI_U32*);
3511
3512#ifdef __cplusplus
3513}; /* End extern "C". */
3514#endif /* C++ */
3515// EID 9 (0x09)
3516typedef struct sDot11fIEFHPattTable {
3517 tANI_U8 present;
3518 tANI_U8 flag;
3519 tANI_U8 nsets;
3520 tANI_U8 modulus;
3521 tANI_U8 offset;
3522 tANI_U8 num_randtable;
3523 tANI_U8 randtable[251];
3524} tDot11fIEFHPattTable;
3525
3526#define DOT11F_EID_FHPATTTABLE ( 9 )
3527
3528// N.B. These #defines do *not* include the EID & length
3529#define DOT11F_IE_FHPATTTABLE_MIN_LEN ( 4 )
3530
3531#define DOT11F_IE_FHPATTTABLE_MAX_LEN ( 255 )
3532
3533#ifdef __cplusplus
3534extern "C" {
3535#endif /* C++ */
3536tANI_U32 dot11fUnpackIeFHPattTable(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFHPattTable*);
3537
3538tANI_U32 dot11fPackIeFHPattTable(tpAniSirGlobal, tDot11fIEFHPattTable*, tANI_U8*, tANI_U32, tANI_U32*);
3539
3540tANI_U32 dot11fGetPackedIEFHPattTable(tpAniSirGlobal, tDot11fIEFHPattTable*, tANI_U32*);
3541
3542#ifdef __cplusplus
3543}; /* End extern "C". */
3544#endif /* C++ */
3545// EID 55 (0x37)
3546typedef struct sDot11fIEFTInfo {
3547 tANI_U8 present;
3548 tANI_U16 reserved: 8;
3549 tANI_U16 IECount: 8;
3550 tANI_U8 MIC[16];
3551 tANI_U8 Anonce[32];
3552 tANI_U8 Snonce[32];
3553 tDot11fIER1KH_ID R1KH_ID;
3554 tDot11fIEGTK GTK;
3555 tDot11fIER0KH_ID R0KH_ID;
3556} tDot11fIEFTInfo;
3557
3558#define DOT11F_EID_FTINFO ( 55 )
3559
3560// N.B. These #defines do *not* include the EID & length
3561#define DOT11F_IE_FTINFO_MIN_LEN ( 82 )
3562
3563#define DOT11F_IE_FTINFO_MAX_LEN ( 185 )
3564
3565#ifdef __cplusplus
3566extern "C" {
3567#endif /* C++ */
3568tANI_U32 dot11fUnpackIeFTInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFTInfo*);
3569
3570tANI_U32 dot11fPackIeFTInfo(tpAniSirGlobal, tDot11fIEFTInfo*, tANI_U8*, tANI_U32, tANI_U32*);
3571
3572tANI_U32 dot11fGetPackedIEFTInfo(tpAniSirGlobal, tDot11fIEFTInfo*, tANI_U32*);
3573
3574#ifdef __cplusplus
3575}; /* End extern "C". */
3576#endif /* C++ */
3577// EID 56 (0x38)
3578typedef struct sDot11fIEFTTimeoutInterval {
3579 tANI_U8 present;
3580 tANI_U8 timeoutType;
3581 tANI_U32 timeoutValue;
3582} tDot11fIEFTTimeoutInterval;
3583
3584#define DOT11F_EID_FTTIMEOUTINTERVAL ( 56 )
3585
3586// N.B. These #defines do *not* include the EID & length
3587#define DOT11F_IE_FTTIMEOUTINTERVAL_MIN_LEN ( 5 )
3588
3589#define DOT11F_IE_FTTIMEOUTINTERVAL_MAX_LEN ( 5 )
3590
3591#ifdef __cplusplus
3592extern "C" {
3593#endif /* C++ */
3594tANI_U32 dot11fUnpackIeFTTimeoutInterval(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFTTimeoutInterval*);
3595
3596tANI_U32 dot11fPackIeFTTimeoutInterval(tpAniSirGlobal, tDot11fIEFTTimeoutInterval*, tANI_U8*, tANI_U32, tANI_U32*);
3597
3598tANI_U32 dot11fGetPackedIEFTTimeoutInterval(tpAniSirGlobal, tDot11fIEFTTimeoutInterval*, tANI_U32*);
3599
3600#ifdef __cplusplus
3601}; /* End extern "C". */
3602#endif /* C++ */
3603// EID 45 (0x2d)
3604typedef struct sDot11fIEHTCaps {
3605 tANI_U8 present;
3606 tANI_U16 advCodingCap: 1;
3607 tANI_U16 supportedChannelWidthSet: 1;
3608 tANI_U16 mimoPowerSave: 2;
3609 tANI_U16 greenField: 1;
3610 tANI_U16 shortGI20MHz: 1;
3611 tANI_U16 shortGI40MHz: 1;
3612 tANI_U16 txSTBC: 1;
3613 tANI_U16 rxSTBC: 2;
3614 tANI_U16 delayedBA: 1;
3615 tANI_U16 maximalAMSDUsize: 1;
3616 tANI_U16 dsssCckMode40MHz: 1;
3617 tANI_U16 psmp: 1;
3618 tANI_U16 stbcControlFrame: 1;
3619 tANI_U16 lsigTXOPProtection: 1;
3620 tANI_U8 maxRxAMPDUFactor: 2;
3621 tANI_U8 mpduDensity: 3;
3622 tANI_U8 reserved1: 3;
3623 tANI_U8 supportedMCSSet[16];
3624 tANI_U16 pco: 1;
3625 tANI_U16 transitionTime: 2;
3626 tANI_U16 reserved2: 5;
3627 tANI_U16 mcsFeedback: 2;
3628 tANI_U16 reserved3: 6;
3629 tANI_U32 txBF: 1;
3630 tANI_U32 rxStaggeredSounding: 1;
3631 tANI_U32 txStaggeredSounding: 1;
3632 tANI_U32 rxZLF: 1;
3633 tANI_U32 txZLF: 1;
3634 tANI_U32 implicitTxBF: 1;
3635 tANI_U32 calibration: 2;
3636 tANI_U32 explicitCSITxBF: 1;
3637 tANI_U32 explicitUncompressedSteeringMatrix: 1;
3638 tANI_U32 explicitBFCSIFeedback: 3;
3639 tANI_U32 explicitUncompressedSteeringMatrixFeedback: 3;
3640 tANI_U32 explicitCompressedSteeringMatrixFeedback: 3;
3641 tANI_U32 csiNumBFAntennae: 2;
3642 tANI_U32 uncompressedSteeringMatrixBFAntennae: 2;
3643 tANI_U32 compressedSteeringMatrixBFAntennae: 2;
3644 tANI_U32 reserved4: 7;
3645 tANI_U8 antennaSelection: 1;
3646 tANI_U8 explicitCSIFeedbackTx: 1;
3647 tANI_U8 antennaIndicesFeedbackTx: 1;
3648 tANI_U8 explicitCSIFeedback: 1;
3649 tANI_U8 antennaIndicesFeedback: 1;
3650 tANI_U8 rxAS: 1;
3651 tANI_U8 txSoundingPPDUs: 1;
3652 tANI_U8 reserved5: 1;
3653 tANI_U8 num_rsvd;
3654 tANI_U8 rsvd[32];
3655} tDot11fIEHTCaps;
3656
3657#define DOT11F_EID_HTCAPS ( 45 )
3658
3659// N.B. These #defines do *not* include the EID & length
3660#define DOT11F_IE_HTCAPS_MIN_LEN ( 26 )
3661
3662#define DOT11F_IE_HTCAPS_MAX_LEN ( 58 )
3663
3664#ifdef __cplusplus
3665extern "C" {
3666#endif /* C++ */
3667tANI_U32 dot11fUnpackIeHTCaps(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEHTCaps*);
3668
3669tANI_U32 dot11fPackIeHTCaps(tpAniSirGlobal, tDot11fIEHTCaps*, tANI_U8*, tANI_U32, tANI_U32*);
3670
3671tANI_U32 dot11fGetPackedIEHTCaps(tpAniSirGlobal, tDot11fIEHTCaps*, tANI_U32*);
3672
3673#ifdef __cplusplus
3674}; /* End extern "C". */
3675#endif /* C++ */
3676// EID 61 (0x3d)
3677typedef struct sDot11fIEHTInfo {
3678 tANI_U8 present;
3679 tANI_U8 primaryChannel;
3680 tANI_U8 secondaryChannelOffset: 2;
3681 tANI_U8 recommendedTxWidthSet: 1;
3682 tANI_U8 rifsMode: 1;
3683 tANI_U8 controlledAccessOnly: 1;
3684 tANI_U8 serviceIntervalGranularity: 3;
3685 tANI_U16 opMode: 2;
3686 tANI_U16 nonGFDevicesPresent: 1;
3687 tANI_U16 transmitBurstLimit: 1;
3688 tANI_U16 obssNonHTStaPresent: 1;
3689 tANI_U16 reserved: 11;
3690 tANI_U16 basicSTBCMCS: 7;
3691 tANI_U16 dualCTSProtection: 1;
3692 tANI_U16 secondaryBeacon: 1;
3693 tANI_U16 lsigTXOPProtectionFullSupport: 1;
3694 tANI_U16 pcoActive: 1;
3695 tANI_U16 pcoPhase: 1;
3696 tANI_U16 reserved2: 4;
3697 tANI_U8 basicMCSSet[16];
3698 tANI_U8 num_rsvd;
3699 tANI_U8 rsvd[32];
3700} tDot11fIEHTInfo;
3701
3702#define DOT11F_EID_HTINFO ( 61 )
3703
3704// N.B. These #defines do *not* include the EID & length
3705#define DOT11F_IE_HTINFO_MIN_LEN ( 22 )
3706
3707#define DOT11F_IE_HTINFO_MAX_LEN ( 54 )
3708
3709#ifdef __cplusplus
3710extern "C" {
3711#endif /* C++ */
3712tANI_U32 dot11fUnpackIeHTInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEHTInfo*);
3713
3714tANI_U32 dot11fPackIeHTInfo(tpAniSirGlobal, tDot11fIEHTInfo*, tANI_U8*, tANI_U32, tANI_U32*);
3715
3716tANI_U32 dot11fGetPackedIEHTInfo(tpAniSirGlobal, tDot11fIEHTInfo*, tANI_U32*);
3717
3718#ifdef __cplusplus
3719}; /* End extern "C". */
3720#endif /* C++ */
3721// EID 6 (0x06)
3722typedef struct sDot11fIEIBSSParams {
3723 tANI_U8 present;
3724 tANI_U16 atim;
3725} tDot11fIEIBSSParams;
3726
3727#define DOT11F_EID_IBSSPARAMS ( 6 )
3728
3729// N.B. These #defines do *not* include the EID & length
3730#define DOT11F_IE_IBSSPARAMS_MIN_LEN ( 2 )
3731
3732#define DOT11F_IE_IBSSPARAMS_MAX_LEN ( 2 )
3733
3734#ifdef __cplusplus
3735extern "C" {
3736#endif /* C++ */
3737tANI_U32 dot11fUnpackIeIBSSParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEIBSSParams*);
3738
3739tANI_U32 dot11fPackIeIBSSParams(tpAniSirGlobal, tDot11fIEIBSSParams*, tANI_U8*, tANI_U32, tANI_U32*);
3740
3741tANI_U32 dot11fGetPackedIEIBSSParams(tpAniSirGlobal, tDot11fIEIBSSParams*, tANI_U32*);
3742
3743#ifdef __cplusplus
3744}; /* End extern "C". */
3745#endif /* C++ */
3746// EID 39 (0x27)
3747typedef struct sDot11fIEMeasurementReport {
3748 tANI_U8 present;
3749 tANI_U8 token;
3750 tANI_U8 late: 1;
3751 tANI_U8 incapable: 1;
3752 tANI_U8 refused: 1;
3753 tANI_U8 unused: 5;
3754 tANI_U8 type;
3755 union
3756 {
3757 struct
3758 {
3759 tANI_U8 channel;
3760 tDOT11F_U64 meas_start_time;
3761 tANI_U16 meas_duration;
3762 tANI_U8 bss: 1;
3763 tANI_U8 ofdm_preamble: 1;
3764 tANI_U8 unid_signal: 1;
3765 tANI_U8 rader: 1;
3766 tANI_U8 unmeasured: 1;
3767 tANI_U8 unused: 3;
3768 } Basic; /* type = 0 */
3769 struct
3770 {
3771 tANI_U8 channel;
3772 tDOT11F_U64 meas_start_time;
3773 tANI_U16 meas_duration;
3774 tANI_U8 cca_busy_fraction;
3775 } CCA; /* type = 1 */
3776 struct
3777 {
3778 tANI_U8 channel;
3779 tDOT11F_U64 meas_start_time;
3780 tANI_U16 meas_duration;
3781 tANI_U8 rpi0_density;
3782 tANI_U8 rpi1_density;
3783 tANI_U8 rpi2_density;
3784 tANI_U8 rpi3_density;
3785 tANI_U8 rpi4_density;
3786 tANI_U8 rpi5_density;
3787 tANI_U8 rpi6_density;
3788 tANI_U8 rpi7_density;
3789 } RPIHistogram; /* type = 2 */
3790 struct
3791 {
3792 tANI_U8 regClass;
3793 tANI_U8 channel;
3794 tDOT11F_U64 meas_start_time;
3795 tANI_U16 meas_duration;
3796 tANI_U8 condensed_PHY: 7;
3797 tANI_U8 reported_frame_type: 1;
3798 tANI_U8 RCPI;
3799 tANI_U8 RSNI;
3800 tANI_U8 BSSID[6];
3801 tANI_U8 antenna_id;
3802 tANI_U32 parent_TSF;
3803 tDot11fIEBeaconReportFrmBody BeaconReportFrmBody;
3804 } Beacon; /* type = 5 */
3805 } report;
3806} tDot11fIEMeasurementReport;
3807
3808#define DOT11F_EID_MEASUREMENTREPORT ( 39 )
3809
3810// N.B. These #defines do *not* include the EID & length
3811#define DOT11F_IE_MEASUREMENTREPORT_MIN_LEN ( 3 )
3812
3813#define DOT11F_IE_MEASUREMENTREPORT_MAX_LEN ( 29 )
3814
3815#ifdef __cplusplus
3816extern "C" {
3817#endif /* C++ */
3818tANI_U32 dot11fUnpackIeMeasurementReport(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMeasurementReport*);
3819
3820tANI_U32 dot11fPackIeMeasurementReport(tpAniSirGlobal, tDot11fIEMeasurementReport*, tANI_U8*, tANI_U32, tANI_U32*);
3821
3822tANI_U32 dot11fGetPackedIEMeasurementReport(tpAniSirGlobal, tDot11fIEMeasurementReport*, tANI_U32*);
3823
3824#ifdef __cplusplus
3825}; /* End extern "C". */
3826#endif /* C++ */
3827// EID 38 (0x26)
3828typedef struct sDot11fIEMeasurementRequest {
3829 tANI_U8 present;
3830 tANI_U8 measurement_token;
3831 tANI_U8 parallel: 1;
3832 tANI_U8 enable: 1;
3833 tANI_U8 request: 1;
3834 tANI_U8 report: 1;
3835 tANI_U8 durationMandatory: 1;
3836 tANI_U8 unused: 3;
3837 tANI_U8 measurement_type;
3838 union
3839 {
3840 struct
3841 {
3842 tANI_U8 channel_no;
3843 tANI_U8 meas_start_time[8];
3844 tANI_U16 meas_duration;
3845 } Basic; /* measurement_type = 0 */
3846 struct
3847 {
3848 tANI_U8 channel_no;
3849 tANI_U8 meas_start_time[8];
3850 tANI_U16 meas_duration;
3851 } CCA; /* measurement_type = 1 */
3852 struct
3853 {
3854 tANI_U8 channel_no;
3855 tANI_U8 meas_start_time[8];
3856 tANI_U16 meas_duration;
3857 } RPIHistogram; /* measurement_type = 2 */
3858 struct
3859 {
3860 tANI_U8 regClass;
3861 tANI_U8 channel;
3862 tANI_U16 randomization;
3863 tANI_U16 meas_duration;
3864 tANI_U8 meas_mode;
3865 tANI_U8 BSSID[6];
3866 tDot11fIESSID SSID;
3867 tDot11fIEBeaconReporting BeaconReporting;
3868 tDot11fIEBcnReportingDetail BcnReportingDetail;
3869 tDot11fIERequestedInfo RequestedInfo;
3870 tANI_U16 num_APChannelReport;
3871 tDot11fIEAPChannelReport APChannelReport[2];
3872 } Beacon; /* measurement_type = 5 */
3873 } measurement_request;
3874} tDot11fIEMeasurementRequest;
3875
3876#define DOT11F_EID_MEASUREMENTREQUEST ( 38 )
3877
3878// N.B. These #defines do *not* include the EID & length
3879#define DOT11F_IE_MEASUREMENTREQUEST_MIN_LEN ( 14 )
3880
3881#define DOT11F_IE_MEASUREMENTREQUEST_MAX_LEN ( 16 )
3882
3883#ifdef __cplusplus
3884extern "C" {
3885#endif /* C++ */
3886tANI_U32 dot11fUnpackIeMeasurementRequest(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMeasurementRequest*);
3887
3888tANI_U32 dot11fPackIeMeasurementRequest(tpAniSirGlobal, tDot11fIEMeasurementRequest*, tANI_U8*, tANI_U32, tANI_U32*);
3889
3890tANI_U32 dot11fGetPackedIEMeasurementRequest(tpAniSirGlobal, tDot11fIEMeasurementRequest*, tANI_U32*);
3891
3892#ifdef __cplusplus
3893}; /* End extern "C". */
3894#endif /* C++ */
3895// EID 54 (0x36)
3896typedef struct sDot11fIEMobilityDomain {
3897 tANI_U8 present;
3898 tANI_U16 MDID;
3899 tANI_U8 overDSCap: 1;
3900 tANI_U8 resourceReqCap: 1;
3901 tANI_U8 reserved: 6;
3902} tDot11fIEMobilityDomain;
3903
3904#define DOT11F_EID_MOBILITYDOMAIN ( 54 )
3905
3906// N.B. These #defines do *not* include the EID & length
3907#define DOT11F_IE_MOBILITYDOMAIN_MIN_LEN ( 3 )
3908
3909#define DOT11F_IE_MOBILITYDOMAIN_MAX_LEN ( 3 )
3910
3911#ifdef __cplusplus
3912extern "C" {
3913#endif /* C++ */
3914tANI_U32 dot11fUnpackIeMobilityDomain(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMobilityDomain*);
3915
3916tANI_U32 dot11fPackIeMobilityDomain(tpAniSirGlobal, tDot11fIEMobilityDomain*, tANI_U8*, tANI_U32, tANI_U32*);
3917
3918tANI_U32 dot11fGetPackedIEMobilityDomain(tpAniSirGlobal, tDot11fIEMobilityDomain*, tANI_U32*);
3919
3920#ifdef __cplusplus
3921}; /* End extern "C". */
3922#endif /* C++ */
3923// EID 52 (0x34)
3924typedef struct sDot11fIENeighborReport {
3925 tANI_U8 present;
3926 tANI_U8 bssid[6];
3927 tANI_U8 APReachability: 2;
3928 tANI_U8 Security: 1;
3929 tANI_U8 KeyScope: 1;
3930 tANI_U8 SpecMgmtCap: 1;
3931 tANI_U8 QosCap: 1;
3932 tANI_U8 apsd: 1;
3933 tANI_U8 rrm: 1;
3934 tANI_U8 DelayedBA: 1;
3935 tANI_U8 ImmBA: 1;
3936 tANI_U8 MobilityDomain: 1;
3937 tANI_U8 reserved: 5;
3938 tANI_U16 reserved1;
3939 tANI_U8 regulatoryClass;
3940 tANI_U8 channel;
3941 tANI_U8 PhyType;
3942 tDot11fIETSFInfo TSFInfo;
3943 tDot11fIECondensedCountryStr CondensedCountryStr;
3944 tDot11fIEMeasurementPilot MeasurementPilot;
3945 tDot11fIERRMEnabledCap RRMEnabledCap;
3946 tDot11fIEMultiBssid MultiBssid;
3947} tDot11fIENeighborReport;
3948
3949#define DOT11F_EID_NEIGHBORREPORT ( 52 )
3950
3951// N.B. These #defines do *not* include the EID & length
3952#define DOT11F_IE_NEIGHBORREPORT_MIN_LEN ( 13 )
3953
3954#define DOT11F_IE_NEIGHBORREPORT_MAX_LEN ( 546 )
3955
3956#ifdef __cplusplus
3957extern "C" {
3958#endif /* C++ */
3959tANI_U32 dot11fUnpackIeNeighborReport(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIENeighborReport*);
3960
3961tANI_U32 dot11fPackIeNeighborReport(tpAniSirGlobal, tDot11fIENeighborReport*, tANI_U8*, tANI_U32, tANI_U32*);
3962
3963tANI_U32 dot11fGetPackedIENeighborReport(tpAniSirGlobal, tDot11fIENeighborReport*, tANI_U32*);
3964
3965#ifdef __cplusplus
3966}; /* End extern "C". */
3967#endif /* C++ */
3968// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
3969typedef struct sDot11fIEP2PAssocReq {
3970 tANI_U8 present;
3971 tDot11fTLVP2PCapability P2PCapability;
3972 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
3973 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
3974} tDot11fIEP2PAssocReq;
3975
3976#define DOT11F_EID_P2PASSOCREQ ( 221 )
3977
3978// N.B. These #defines do *not* include the EID & length
3979#define DOT11F_IE_P2PASSOCREQ_MIN_LEN ( 4 )
3980
3981#define DOT11F_IE_P2PASSOCREQ_MAX_LEN ( 71 )
3982
3983#ifdef __cplusplus
3984extern "C" {
3985#endif /* C++ */
3986tANI_U32 dot11fUnpackIeP2PAssocReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PAssocReq*);
3987
3988tANI_U32 dot11fPackIeP2PAssocReq(tpAniSirGlobal, tDot11fIEP2PAssocReq*, tANI_U8*, tANI_U32, tANI_U32*);
3989
3990tANI_U32 dot11fGetPackedIEP2PAssocReq(tpAniSirGlobal, tDot11fIEP2PAssocReq*, tANI_U32*);
3991
3992#ifdef __cplusplus
3993}; /* End extern "C". */
3994#endif /* C++ */
3995// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
3996typedef struct sDot11fIEP2PAssocRes {
3997 tANI_U8 present;
3998 tDot11fTLVP2PStatus P2PStatus;
3999 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
4000} tDot11fIEP2PAssocRes;
4001
4002#define DOT11F_EID_P2PASSOCRES ( 221 )
4003
4004// N.B. These #defines do *not* include the EID & length
4005#define DOT11F_IE_P2PASSOCRES_MIN_LEN ( 4 )
4006
4007#define DOT11F_IE_P2PASSOCRES_MAX_LEN ( 15 )
4008
4009#ifdef __cplusplus
4010extern "C" {
4011#endif /* C++ */
4012tANI_U32 dot11fUnpackIeP2PAssocRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PAssocRes*);
4013
4014tANI_U32 dot11fPackIeP2PAssocRes(tpAniSirGlobal, tDot11fIEP2PAssocRes*, tANI_U8*, tANI_U32, tANI_U32*);
4015
4016tANI_U32 dot11fGetPackedIEP2PAssocRes(tpAniSirGlobal, tDot11fIEP2PAssocRes*, tANI_U32*);
4017
4018#ifdef __cplusplus
4019}; /* End extern "C". */
4020#endif /* C++ */
4021// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4022typedef struct sDot11fIEP2PBeacon {
4023 tANI_U8 present;
4024 tDot11fTLVP2PCapability P2PCapability;
4025 tDot11fTLVP2PDeviceId P2PDeviceId;
4026 tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
4027} tDot11fIEP2PBeacon;
4028
4029#define DOT11F_EID_P2PBEACON ( 221 )
4030
4031// N.B. These #defines do *not* include the EID & length
4032#define DOT11F_IE_P2PBEACON_MIN_LEN ( 4 )
4033
4034#define DOT11F_IE_P2PBEACON_MAX_LEN ( 59 )
4035
4036#ifdef __cplusplus
4037extern "C" {
4038#endif /* C++ */
4039tANI_U32 dot11fUnpackIeP2PBeacon(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PBeacon*);
4040
4041tANI_U32 dot11fPackIeP2PBeacon(tpAniSirGlobal, tDot11fIEP2PBeacon*, tANI_U8*, tANI_U32, tANI_U32*);
4042
4043tANI_U32 dot11fGetPackedIEP2PBeacon(tpAniSirGlobal, tDot11fIEP2PBeacon*, tANI_U32*);
4044
4045#ifdef __cplusplus
4046}; /* End extern "C". */
4047#endif /* C++ */
4048// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4049typedef struct sDot11fIEP2PBeaconProbeRes {
4050 tANI_U8 present;
4051 tDot11fTLVP2PCapability P2PCapability;
4052 tDot11fTLVP2PDeviceId P2PDeviceId;
4053 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
4054 tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
4055 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
4056 tDot11fTLVP2PGroupInfo P2PGroupInfo;
4057} tDot11fIEP2PBeaconProbeRes;
4058
4059#define DOT11F_EID_P2PBEACONPROBERES ( 221 )
4060
4061// N.B. These #defines do *not* include the EID & length
4062#define DOT11F_IE_P2PBEACONPROBERES_MIN_LEN ( 4 )
4063
4064#define DOT11F_IE_P2PBEACONPROBERES_MAX_LEN ( 1148 )
4065
4066#ifdef __cplusplus
4067extern "C" {
4068#endif /* C++ */
4069tANI_U32 dot11fUnpackIeP2PBeaconProbeRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PBeaconProbeRes*);
4070
4071tANI_U32 dot11fPackIeP2PBeaconProbeRes(tpAniSirGlobal, tDot11fIEP2PBeaconProbeRes*, tANI_U8*, tANI_U32, tANI_U32*);
4072
4073tANI_U32 dot11fGetPackedIEP2PBeaconProbeRes(tpAniSirGlobal, tDot11fIEP2PBeaconProbeRes*, tANI_U32*);
4074
4075#ifdef __cplusplus
4076}; /* End extern "C". */
4077#endif /* C++ */
4078// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4079typedef struct sDot11fIEP2PDeAuth {
4080 tANI_U8 present;
4081 tDot11fTLVMinorReasonCode MinorReasonCode;
4082} tDot11fIEP2PDeAuth;
4083
4084#define DOT11F_EID_P2PDEAUTH ( 221 )
4085
4086// N.B. These #defines do *not* include the EID & length
4087#define DOT11F_IE_P2PDEAUTH_MIN_LEN ( 4 )
4088
4089#define DOT11F_IE_P2PDEAUTH_MAX_LEN ( 8 )
4090
4091#ifdef __cplusplus
4092extern "C" {
4093#endif /* C++ */
4094tANI_U32 dot11fUnpackIeP2PDeAuth(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PDeAuth*);
4095
4096tANI_U32 dot11fPackIeP2PDeAuth(tpAniSirGlobal, tDot11fIEP2PDeAuth*, tANI_U8*, tANI_U32, tANI_U32*);
4097
4098tANI_U32 dot11fGetPackedIEP2PDeAuth(tpAniSirGlobal, tDot11fIEP2PDeAuth*, tANI_U32*);
4099
4100#ifdef __cplusplus
4101}; /* End extern "C". */
4102#endif /* C++ */
4103// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4104typedef struct sDot11fIEP2PDeviceDiscoverabilityReq {
4105 tANI_U8 present;
4106 tDot11fTLVP2PDeviceId P2PDeviceId;
4107 tDot11fTLVP2PGroupId P2PGroupId;
4108} tDot11fIEP2PDeviceDiscoverabilityReq;
4109
4110#define DOT11F_EID_P2PDEVICEDISCOVERABILITYREQ ( 221 )
4111
4112// N.B. These #defines do *not* include the EID & length
4113#define DOT11F_IE_P2PDEVICEDISCOVERABILITYREQ_MIN_LEN ( 4 )
4114
4115#define DOT11F_IE_P2PDEVICEDISCOVERABILITYREQ_MAX_LEN ( 54 )
4116
4117#ifdef __cplusplus
4118extern "C" {
4119#endif /* C++ */
4120tANI_U32 dot11fUnpackIeP2PDeviceDiscoverabilityReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PDeviceDiscoverabilityReq*);
4121
4122tANI_U32 dot11fPackIeP2PDeviceDiscoverabilityReq(tpAniSirGlobal, tDot11fIEP2PDeviceDiscoverabilityReq*, tANI_U8*, tANI_U32, tANI_U32*);
4123
4124tANI_U32 dot11fGetPackedIEP2PDeviceDiscoverabilityReq(tpAniSirGlobal, tDot11fIEP2PDeviceDiscoverabilityReq*, tANI_U32*);
4125
4126#ifdef __cplusplus
4127}; /* End extern "C". */
4128#endif /* C++ */
4129// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4130typedef struct sDot11fIEP2PDeviceDiscoverabilityRes {
4131 tANI_U8 present;
4132 tDot11fTLVP2PStatus P2PStatus;
4133} tDot11fIEP2PDeviceDiscoverabilityRes;
4134
4135#define DOT11F_EID_P2PDEVICEDISCOVERABILITYRES ( 221 )
4136
4137// N.B. These #defines do *not* include the EID & length
4138#define DOT11F_IE_P2PDEVICEDISCOVERABILITYRES_MIN_LEN ( 4 )
4139
4140#define DOT11F_IE_P2PDEVICEDISCOVERABILITYRES_MAX_LEN ( 8 )
4141
4142#ifdef __cplusplus
4143extern "C" {
4144#endif /* C++ */
4145tANI_U32 dot11fUnpackIeP2PDeviceDiscoverabilityRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PDeviceDiscoverabilityRes*);
4146
4147tANI_U32 dot11fPackIeP2PDeviceDiscoverabilityRes(tpAniSirGlobal, tDot11fIEP2PDeviceDiscoverabilityRes*, tANI_U8*, tANI_U32, tANI_U32*);
4148
4149tANI_U32 dot11fGetPackedIEP2PDeviceDiscoverabilityRes(tpAniSirGlobal, tDot11fIEP2PDeviceDiscoverabilityRes*, tANI_U32*);
4150
4151#ifdef __cplusplus
4152}; /* End extern "C". */
4153#endif /* C++ */
4154// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4155typedef struct sDot11fIEP2PDisAssoc {
4156 tANI_U8 present;
4157 tDot11fTLVMinorReasonCode MinorReasonCode;
4158} tDot11fIEP2PDisAssoc;
4159
4160#define DOT11F_EID_P2PDISASSOC ( 221 )
4161
4162// N.B. These #defines do *not* include the EID & length
4163#define DOT11F_IE_P2PDISASSOC_MIN_LEN ( 4 )
4164
4165#define DOT11F_IE_P2PDISASSOC_MAX_LEN ( 8 )
4166
4167#ifdef __cplusplus
4168extern "C" {
4169#endif /* C++ */
4170tANI_U32 dot11fUnpackIeP2PDisAssoc(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PDisAssoc*);
4171
4172tANI_U32 dot11fPackIeP2PDisAssoc(tpAniSirGlobal, tDot11fIEP2PDisAssoc*, tANI_U8*, tANI_U32, tANI_U32*);
4173
4174tANI_U32 dot11fGetPackedIEP2PDisAssoc(tpAniSirGlobal, tDot11fIEP2PDisAssoc*, tANI_U32*);
4175
4176#ifdef __cplusplus
4177}; /* End extern "C". */
4178#endif /* C++ */
4179// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4180typedef struct sDot11fIEP2PGONegCnf {
4181 tANI_U8 present;
4182 tDot11fTLVP2PStatus P2PStatus;
4183 tDot11fTLVP2PCapability P2PCapability;
4184 tDot11fTLVOperatingChannel OperatingChannel;
4185 tDot11fTLVChannelList ChannelList;
4186 tDot11fTLVP2PGroupId P2PGroupId;
4187} tDot11fIEP2PGONegCnf;
4188
4189#define DOT11F_EID_P2PGONEGCNF ( 221 )
4190
4191// N.B. These #defines do *not* include the EID & length
4192#define DOT11F_IE_P2PGONEGCNF_MIN_LEN ( 4 )
4193
4194#define DOT11F_IE_P2PGONEGCNF_MAX_LEN ( 319 )
4195
4196#ifdef __cplusplus
4197extern "C" {
4198#endif /* C++ */
4199tANI_U32 dot11fUnpackIeP2PGONegCnf(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PGONegCnf*);
4200
4201tANI_U32 dot11fPackIeP2PGONegCnf(tpAniSirGlobal, tDot11fIEP2PGONegCnf*, tANI_U8*, tANI_U32, tANI_U32*);
4202
4203tANI_U32 dot11fGetPackedIEP2PGONegCnf(tpAniSirGlobal, tDot11fIEP2PGONegCnf*, tANI_U32*);
4204
4205#ifdef __cplusplus
4206}; /* End extern "C". */
4207#endif /* C++ */
4208// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4209typedef struct sDot11fIEP2PGONegReq {
4210 tANI_U8 present;
4211 tDot11fTLVP2PCapability P2PCapability;
4212 tDot11fTLVGOIntent GOIntent;
4213 tDot11fTLVConfigurationTimeout ConfigurationTimeout;
4214 tDot11fTLVListenChannel ListenChannel;
4215 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
4216 tDot11fTLVIntendedP2PInterfaceAddress IntendedP2PInterfaceAddress;
4217 tDot11fTLVChannelList ChannelList;
4218 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
4219 tDot11fTLVOperatingChannel OperatingChannel;
4220} tDot11fIEP2PGONegReq;
4221
4222#define DOT11F_EID_P2PGONEGREQ ( 221 )
4223
4224// N.B. These #defines do *not* include the EID & length
4225#define DOT11F_IE_P2PGONEGREQ_MIN_LEN ( 4 )
4226
4227#define DOT11F_IE_P2PGONEGREQ_MAX_LEN ( 362 )
4228
4229#ifdef __cplusplus
4230extern "C" {
4231#endif /* C++ */
4232tANI_U32 dot11fUnpackIeP2PGONegReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PGONegReq*);
4233
4234tANI_U32 dot11fPackIeP2PGONegReq(tpAniSirGlobal, tDot11fIEP2PGONegReq*, tANI_U8*, tANI_U32, tANI_U32*);
4235
4236tANI_U32 dot11fGetPackedIEP2PGONegReq(tpAniSirGlobal, tDot11fIEP2PGONegReq*, tANI_U32*);
4237
4238#ifdef __cplusplus
4239}; /* End extern "C". */
4240#endif /* C++ */
4241// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4242typedef struct sDot11fIEP2PGONegRes {
4243 tANI_U8 present;
4244 tDot11fTLVP2PStatus P2PStatus;
4245 tDot11fTLVP2PCapability P2PCapability;
4246 tDot11fTLVGOIntent GOIntent;
4247 tDot11fTLVConfigurationTimeout ConfigurationTimeout;
4248 tDot11fTLVOperatingChannel OperatingChannel;
4249 tDot11fTLVIntendedP2PInterfaceAddress IntendedP2PInterfaceAddress;
4250 tDot11fTLVChannelList ChannelList;
4251 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
4252 tDot11fTLVP2PGroupId P2PGroupId;
4253} tDot11fIEP2PGONegRes;
4254
4255#define DOT11F_EID_P2PGONEGRES ( 221 )
4256
4257// N.B. These #defines do *not* include the EID & length
4258#define DOT11F_IE_P2PGONEGRES_MIN_LEN ( 4 )
4259
4260#define DOT11F_IE_P2PGONEGRES_MAX_LEN ( 392 )
4261
4262#ifdef __cplusplus
4263extern "C" {
4264#endif /* C++ */
4265tANI_U32 dot11fUnpackIeP2PGONegRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PGONegRes*);
4266
4267tANI_U32 dot11fPackIeP2PGONegRes(tpAniSirGlobal, tDot11fIEP2PGONegRes*, tANI_U8*, tANI_U32, tANI_U32*);
4268
4269tANI_U32 dot11fGetPackedIEP2PGONegRes(tpAniSirGlobal, tDot11fIEP2PGONegRes*, tANI_U32*);
4270
4271#ifdef __cplusplus
4272}; /* End extern "C". */
4273#endif /* C++ */
4274// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
4275typedef struct sDot11fIEP2PGONegWPS {
4276 tANI_U8 present;
4277 tDot11fTLVVersion Version;
4278 tDot11fTLVDevicePasswordID DevicePasswordID;
4279} tDot11fIEP2PGONegWPS;
4280
4281#define DOT11F_EID_P2PGONEGWPS ( 221 )
4282
4283// N.B. These #defines do *not* include the EID & length
4284#define DOT11F_IE_P2PGONEGWPS_MIN_LEN ( 4 )
4285
4286#define DOT11F_IE_P2PGONEGWPS_MAX_LEN ( 15 )
4287
4288#ifdef __cplusplus
4289extern "C" {
4290#endif /* C++ */
4291tANI_U32 dot11fUnpackIeP2PGONegWPS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PGONegWPS*);
4292
4293tANI_U32 dot11fPackIeP2PGONegWPS(tpAniSirGlobal, tDot11fIEP2PGONegWPS*, tANI_U8*, tANI_U32, tANI_U32*);
4294
4295tANI_U32 dot11fGetPackedIEP2PGONegWPS(tpAniSirGlobal, tDot11fIEP2PGONegWPS*, tANI_U32*);
4296
4297#ifdef __cplusplus
4298}; /* End extern "C". */
4299#endif /* C++ */
4300// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09}
4301typedef struct sDot11fIEP2PIEOpaque {
4302 tANI_U8 present;
4303 tANI_U8 num_data;
4304 tANI_U8 data[249];
4305} tDot11fIEP2PIEOpaque;
4306
4307#define DOT11F_EID_P2PIEOPAQUE ( 221 )
4308
4309// N.B. These #defines do *not* include the EID & length
4310#define DOT11F_IE_P2PIEOPAQUE_MIN_LEN ( 6 )
4311
4312#define DOT11F_IE_P2PIEOPAQUE_MAX_LEN ( 253 )
4313
4314#ifdef __cplusplus
4315extern "C" {
4316#endif /* C++ */
4317tANI_U32 dot11fUnpackIeP2PIEOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PIEOpaque*);
4318
4319tANI_U32 dot11fPackIeP2PIEOpaque(tpAniSirGlobal, tDot11fIEP2PIEOpaque*, tANI_U8*, tANI_U32, tANI_U32*);
4320
4321tANI_U32 dot11fGetPackedIEP2PIEOpaque(tpAniSirGlobal, tDot11fIEP2PIEOpaque*, tANI_U32*);
4322
4323#ifdef __cplusplus
4324}; /* End extern "C". */
4325#endif /* C++ */
4326// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4327typedef struct sDot11fIEP2PInvitationReq {
4328 tANI_U8 present;
4329 tDot11fTLVConfigurationTimeout ConfigurationTimeout;
4330 tDot11fTLVInvitationFlags InvitationFlags;
4331 tDot11fTLVOperatingChannel OperatingChannel;
4332 tDot11fTLVP2PGroupBssid P2PGroupBssid;
4333 tDot11fTLVChannelList ChannelList;
4334 tDot11fTLVP2PGroupId P2PGroupId;
4335 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
4336} tDot11fIEP2PInvitationReq;
4337
4338#define DOT11F_EID_P2PINVITATIONREQ ( 221 )
4339
4340// N.B. These #defines do *not* include the EID & length
4341#define DOT11F_IE_P2PINVITATIONREQ_MIN_LEN ( 4 )
4342
4343#define DOT11F_IE_P2PINVITATIONREQ_MAX_LEN ( 383 )
4344
4345#ifdef __cplusplus
4346extern "C" {
4347#endif /* C++ */
4348tANI_U32 dot11fUnpackIeP2PInvitationReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PInvitationReq*);
4349
4350tANI_U32 dot11fPackIeP2PInvitationReq(tpAniSirGlobal, tDot11fIEP2PInvitationReq*, tANI_U8*, tANI_U32, tANI_U32*);
4351
4352tANI_U32 dot11fGetPackedIEP2PInvitationReq(tpAniSirGlobal, tDot11fIEP2PInvitationReq*, tANI_U32*);
4353
4354#ifdef __cplusplus
4355}; /* End extern "C". */
4356#endif /* C++ */
4357// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4358typedef struct sDot11fIEP2PInvitationRes {
4359 tANI_U8 present;
4360 tDot11fTLVP2PStatus P2PStatus;
4361 tDot11fTLVConfigurationTimeout ConfigurationTimeout;
4362 tDot11fTLVOperatingChannel OperatingChannel;
4363 tDot11fTLVP2PGroupBssid P2PGroupBssid;
4364 tDot11fTLVChannelList ChannelList;
4365} tDot11fIEP2PInvitationRes;
4366
4367#define DOT11F_EID_P2PINVITATIONRES ( 221 )
4368
4369// N.B. These #defines do *not* include the EID & length
4370#define DOT11F_IE_P2PINVITATIONRES_MIN_LEN ( 4 )
4371
4372#define DOT11F_IE_P2PINVITATIONRES_MAX_LEN ( 287 )
4373
4374#ifdef __cplusplus
4375extern "C" {
4376#endif /* C++ */
4377tANI_U32 dot11fUnpackIeP2PInvitationRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PInvitationRes*);
4378
4379tANI_U32 dot11fPackIeP2PInvitationRes(tpAniSirGlobal, tDot11fIEP2PInvitationRes*, tANI_U8*, tANI_U32, tANI_U32*);
4380
4381tANI_U32 dot11fGetPackedIEP2PInvitationRes(tpAniSirGlobal, tDot11fIEP2PInvitationRes*, tANI_U32*);
4382
4383#ifdef __cplusplus
4384}; /* End extern "C". */
4385#endif /* C++ */
4386// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4387typedef struct sDot11fIEP2PNoticeOfAbsence {
4388 tANI_U8 present;
4389 tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
4390} tDot11fIEP2PNoticeOfAbsence;
4391
4392#define DOT11F_EID_P2PNOTICEOFABSENCE ( 221 )
4393
4394// N.B. These #defines do *not* include the EID & length
4395#define DOT11F_IE_P2PNOTICEOFABSENCE_MIN_LEN ( 4 )
4396
4397#define DOT11F_IE_P2PNOTICEOFABSENCE_MAX_LEN ( 45 )
4398
4399#ifdef __cplusplus
4400extern "C" {
4401#endif /* C++ */
4402tANI_U32 dot11fUnpackIeP2PNoticeOfAbsence(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PNoticeOfAbsence*);
4403
4404tANI_U32 dot11fPackIeP2PNoticeOfAbsence(tpAniSirGlobal, tDot11fIEP2PNoticeOfAbsence*, tANI_U8*, tANI_U32, tANI_U32*);
4405
4406tANI_U32 dot11fGetPackedIEP2PNoticeOfAbsence(tpAniSirGlobal, tDot11fIEP2PNoticeOfAbsence*, tANI_U32*);
4407
4408#ifdef __cplusplus
4409}; /* End extern "C". */
4410#endif /* C++ */
4411// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4412typedef struct sDot11fIEP2PPresenceResponse {
4413 tANI_U8 present;
4414 tDot11fTLVP2PStatus P2PStatus;
4415 tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
4416} tDot11fIEP2PPresenceResponse;
4417
4418#define DOT11F_EID_P2PPRESENCERESPONSE ( 221 )
4419
4420// N.B. These #defines do *not* include the EID & length
4421#define DOT11F_IE_P2PPRESENCERESPONSE_MIN_LEN ( 4 )
4422
4423#define DOT11F_IE_P2PPRESENCERESPONSE_MAX_LEN ( 49 )
4424
4425#ifdef __cplusplus
4426extern "C" {
4427#endif /* C++ */
4428tANI_U32 dot11fUnpackIeP2PPresenceResponse(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PPresenceResponse*);
4429
4430tANI_U32 dot11fPackIeP2PPresenceResponse(tpAniSirGlobal, tDot11fIEP2PPresenceResponse*, tANI_U8*, tANI_U32, tANI_U32*);
4431
4432tANI_U32 dot11fGetPackedIEP2PPresenceResponse(tpAniSirGlobal, tDot11fIEP2PPresenceResponse*, tANI_U32*);
4433
4434#ifdef __cplusplus
4435}; /* End extern "C". */
4436#endif /* C++ */
4437// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4438typedef struct sDot11fIEP2PProbeReq {
4439 tANI_U8 present;
4440 tDot11fTLVP2PCapability P2PCapability;
4441 tDot11fTLVP2PDeviceId P2PDeviceId;
4442 tDot11fTLVListenChannel ListenChannel;
4443 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
4444 tDot11fTLVOperatingChannel OperatingChannel;
4445} tDot11fIEP2PProbeReq;
4446
4447#define DOT11F_EID_P2PPROBEREQ ( 221 )
4448
4449// N.B. These #defines do *not* include the EID & length
4450#define DOT11F_IE_P2PPROBEREQ_MIN_LEN ( 4 )
4451
4452#define DOT11F_IE_P2PPROBEREQ_MAX_LEN ( 41 )
4453
4454#ifdef __cplusplus
4455extern "C" {
4456#endif /* C++ */
4457tANI_U32 dot11fUnpackIeP2PProbeReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PProbeReq*);
4458
4459tANI_U32 dot11fPackIeP2PProbeReq(tpAniSirGlobal, tDot11fIEP2PProbeReq*, tANI_U8*, tANI_U32, tANI_U32*);
4460
4461tANI_U32 dot11fGetPackedIEP2PProbeReq(tpAniSirGlobal, tDot11fIEP2PProbeReq*, tANI_U32*);
4462
4463#ifdef __cplusplus
4464}; /* End extern "C". */
4465#endif /* C++ */
4466// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4467typedef struct sDot11fIEP2PProbeRes {
4468 tANI_U8 present;
4469 tDot11fTLVP2PCapability P2PCapability;
4470 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
4471 tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
4472 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
4473 tDot11fTLVP2PGroupInfo P2PGroupInfo;
4474} tDot11fIEP2PProbeRes;
4475
4476#define DOT11F_EID_P2PPROBERES ( 221 )
4477
4478// N.B. These #defines do *not* include the EID & length
4479#define DOT11F_IE_P2PPROBERES_MIN_LEN ( 4 )
4480
4481#define DOT11F_IE_P2PPROBERES_MAX_LEN ( 1139 )
4482
4483#ifdef __cplusplus
4484extern "C" {
4485#endif /* C++ */
4486tANI_U32 dot11fUnpackIeP2PProbeRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PProbeRes*);
4487
4488tANI_U32 dot11fPackIeP2PProbeRes(tpAniSirGlobal, tDot11fIEP2PProbeRes*, tANI_U8*, tANI_U32, tANI_U32*);
4489
4490tANI_U32 dot11fGetPackedIEP2PProbeRes(tpAniSirGlobal, tDot11fIEP2PProbeRes*, tANI_U32*);
4491
4492#ifdef __cplusplus
4493}; /* End extern "C". */
4494#endif /* C++ */
4495// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
4496typedef struct sDot11fIEP2PProvisionDiscoveryReq {
4497 tANI_U8 present;
4498 tDot11fTLVP2PCapability P2PCapability;
4499 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
4500 tDot11fTLVP2PGroupId P2PGroupId;
4501} tDot11fIEP2PProvisionDiscoveryReq;
4502
4503#define DOT11F_EID_P2PPROVISIONDISCOVERYREQ ( 221 )
4504
4505// N.B. These #defines do *not* include the EID & length
4506#define DOT11F_IE_P2PPROVISIONDISCOVERYREQ_MIN_LEN ( 4 )
4507
4508#define DOT11F_IE_P2PPROVISIONDISCOVERYREQ_MAX_LEN ( 105 )
4509
4510#ifdef __cplusplus
4511extern "C" {
4512#endif /* C++ */
4513tANI_U32 dot11fUnpackIeP2PProvisionDiscoveryReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PProvisionDiscoveryReq*);
4514
4515tANI_U32 dot11fPackIeP2PProvisionDiscoveryReq(tpAniSirGlobal, tDot11fIEP2PProvisionDiscoveryReq*, tANI_U8*, tANI_U32, tANI_U32*);
4516
4517tANI_U32 dot11fGetPackedIEP2PProvisionDiscoveryReq(tpAniSirGlobal, tDot11fIEP2PProvisionDiscoveryReq*, tANI_U32*);
4518
4519#ifdef __cplusplus
4520}; /* End extern "C". */
4521#endif /* C++ */
4522// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
4523typedef struct sDot11fIEP2PWSCProvisionDiscoveryRes {
4524 tANI_U8 present;
4525 tDot11fTLVConfigMethods ConfigMethods;
4526} tDot11fIEP2PWSCProvisionDiscoveryRes;
4527
4528#define DOT11F_EID_P2PWSCPROVISIONDISCOVERYRES ( 221 )
4529
4530// N.B. These #defines do *not* include the EID & length
4531#define DOT11F_IE_P2PWSCPROVISIONDISCOVERYRES_MIN_LEN ( 4 )
4532
4533#define DOT11F_IE_P2PWSCPROVISIONDISCOVERYRES_MAX_LEN ( 10 )
4534
4535#ifdef __cplusplus
4536extern "C" {
4537#endif /* C++ */
4538tANI_U32 dot11fUnpackIeP2PWSCProvisionDiscoveryRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PWSCProvisionDiscoveryRes*);
4539
4540tANI_U32 dot11fPackIeP2PWSCProvisionDiscoveryRes(tpAniSirGlobal, tDot11fIEP2PWSCProvisionDiscoveryRes*, tANI_U8*, tANI_U32, tANI_U32*);
4541
4542tANI_U32 dot11fGetPackedIEP2PWSCProvisionDiscoveryRes(tpAniSirGlobal, tDot11fIEP2PWSCProvisionDiscoveryRes*, tANI_U32*);
4543
4544#ifdef __cplusplus
4545}; /* End extern "C". */
4546#endif /* C++ */
4547// EID 33 (0x21)
4548typedef struct sDot11fIEPowerCaps {
4549 tANI_U8 present;
4550 tANI_U8 minTxPower;
4551 tANI_U8 maxTxPower;
4552} tDot11fIEPowerCaps;
4553
4554#define DOT11F_EID_POWERCAPS ( 33 )
4555
4556// N.B. These #defines do *not* include the EID & length
4557#define DOT11F_IE_POWERCAPS_MIN_LEN ( 2 )
4558
4559#define DOT11F_IE_POWERCAPS_MAX_LEN ( 2 )
4560
4561#ifdef __cplusplus
4562extern "C" {
4563#endif /* C++ */
4564tANI_U32 dot11fUnpackIePowerCaps(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPowerCaps*);
4565
4566tANI_U32 dot11fPackIePowerCaps(tpAniSirGlobal, tDot11fIEPowerCaps*, tANI_U8*, tANI_U32, tANI_U32*);
4567
4568tANI_U32 dot11fGetPackedIEPowerCaps(tpAniSirGlobal, tDot11fIEPowerCaps*, tANI_U32*);
4569
4570#ifdef __cplusplus
4571}; /* End extern "C". */
4572#endif /* C++ */
4573// EID 32 (0x20)
4574typedef struct sDot11fIEPowerConstraints {
4575 tANI_U8 present;
4576 tANI_U8 localPowerConstraints;
4577} tDot11fIEPowerConstraints;
4578
4579#define DOT11F_EID_POWERCONSTRAINTS ( 32 )
4580
4581// N.B. These #defines do *not* include the EID & length
4582#define DOT11F_IE_POWERCONSTRAINTS_MIN_LEN ( 1 )
4583
4584#define DOT11F_IE_POWERCONSTRAINTS_MAX_LEN ( 1 )
4585
4586#ifdef __cplusplus
4587extern "C" {
4588#endif /* C++ */
4589tANI_U32 dot11fUnpackIePowerConstraints(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPowerConstraints*);
4590
4591tANI_U32 dot11fPackIePowerConstraints(tpAniSirGlobal, tDot11fIEPowerConstraints*, tANI_U8*, tANI_U32, tANI_U32*);
4592
4593tANI_U32 dot11fGetPackedIEPowerConstraints(tpAniSirGlobal, tDot11fIEPowerConstraints*, tANI_U32*);
4594
4595#ifdef __cplusplus
4596}; /* End extern "C". */
4597#endif /* C++ */
4598// EID 11 (0x0b)
4599typedef struct sDot11fIEQBSSLoad {
4600 tANI_U8 present;
4601 tANI_U16 stacount;
4602 tANI_U8 chautil;
4603 tANI_U16 avail;
4604} tDot11fIEQBSSLoad;
4605
4606#define DOT11F_EID_QBSSLOAD ( 11 )
4607
4608// N.B. These #defines do *not* include the EID & length
4609#define DOT11F_IE_QBSSLOAD_MIN_LEN ( 5 )
4610
4611#define DOT11F_IE_QBSSLOAD_MAX_LEN ( 5 )
4612
4613#ifdef __cplusplus
4614extern "C" {
4615#endif /* C++ */
4616tANI_U32 dot11fUnpackIeQBSSLoad(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEQBSSLoad*);
4617
4618tANI_U32 dot11fPackIeQBSSLoad(tpAniSirGlobal, tDot11fIEQBSSLoad*, tANI_U8*, tANI_U32, tANI_U32*);
4619
4620tANI_U32 dot11fGetPackedIEQBSSLoad(tpAniSirGlobal, tDot11fIEQBSSLoad*, tANI_U32*);
4621
4622#ifdef __cplusplus
4623}; /* End extern "C". */
4624#endif /* C++ */
4625// EID 46 (0x2e)
4626typedef struct sDot11fIEQOSCapsAp {
4627 tANI_U8 present;
4628 tANI_U8 reserved: 1;
4629 tANI_U8 txopreq: 1;
4630 tANI_U8 qreq: 1;
4631 tANI_U8 qack: 1;
4632 tANI_U8 count: 4;
4633} tDot11fIEQOSCapsAp;
4634
4635#define DOT11F_EID_QOSCAPSAP ( 46 )
4636
4637// N.B. These #defines do *not* include the EID & length
4638#define DOT11F_IE_QOSCAPSAP_MIN_LEN ( 1 )
4639
4640#define DOT11F_IE_QOSCAPSAP_MAX_LEN ( 1 )
4641
4642#ifdef __cplusplus
4643extern "C" {
4644#endif /* C++ */
4645tANI_U32 dot11fUnpackIeQOSCapsAp(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEQOSCapsAp*);
4646
4647tANI_U32 dot11fPackIeQOSCapsAp(tpAniSirGlobal, tDot11fIEQOSCapsAp*, tANI_U8*, tANI_U32, tANI_U32*);
4648
4649tANI_U32 dot11fGetPackedIEQOSCapsAp(tpAniSirGlobal, tDot11fIEQOSCapsAp*, tANI_U32*);
4650
4651#ifdef __cplusplus
4652}; /* End extern "C". */
4653#endif /* C++ */
4654// EID 46 (0x2e)
4655typedef struct sDot11fIEQOSCapsStation {
4656 tANI_U8 present;
4657 tANI_U8 more_data_ack: 1;
4658 tANI_U8 max_sp_length: 2;
4659 tANI_U8 qack: 1;
4660 tANI_U8 acbe_uapsd: 1;
4661 tANI_U8 acbk_uapsd: 1;
4662 tANI_U8 acvi_uapsd: 1;
4663 tANI_U8 acvo_uapsd: 1;
4664} tDot11fIEQOSCapsStation;
4665
4666#define DOT11F_EID_QOSCAPSSTATION ( 46 )
4667
4668// N.B. These #defines do *not* include the EID & length
4669#define DOT11F_IE_QOSCAPSSTATION_MIN_LEN ( 1 )
4670
4671#define DOT11F_IE_QOSCAPSSTATION_MAX_LEN ( 1 )
4672
4673#ifdef __cplusplus
4674extern "C" {
4675#endif /* C++ */
4676tANI_U32 dot11fUnpackIeQOSCapsStation(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEQOSCapsStation*);
4677
4678tANI_U32 dot11fPackIeQOSCapsStation(tpAniSirGlobal, tDot11fIEQOSCapsStation*, tANI_U8*, tANI_U32, tANI_U32*);
4679
4680tANI_U32 dot11fGetPackedIEQOSCapsStation(tpAniSirGlobal, tDot11fIEQOSCapsStation*, tANI_U32*);
4681
4682#ifdef __cplusplus
4683}; /* End extern "C". */
4684#endif /* C++ */
4685// EID 40 (0x28)
4686typedef struct sDot11fIEQuiet {
4687 tANI_U8 present;
4688 tANI_U8 count;
4689 tANI_U8 period;
4690 tANI_U16 duration;
4691 tANI_U16 offset;
4692} tDot11fIEQuiet;
4693
4694#define DOT11F_EID_QUIET ( 40 )
4695
4696// N.B. These #defines do *not* include the EID & length
4697#define DOT11F_IE_QUIET_MIN_LEN ( 6 )
4698
4699#define DOT11F_IE_QUIET_MAX_LEN ( 6 )
4700
4701#ifdef __cplusplus
4702extern "C" {
4703#endif /* C++ */
4704tANI_U32 dot11fUnpackIeQuiet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEQuiet*);
4705
4706tANI_U32 dot11fPackIeQuiet(tpAniSirGlobal, tDot11fIEQuiet*, tANI_U8*, tANI_U32, tANI_U32*);
4707
4708tANI_U32 dot11fGetPackedIEQuiet(tpAniSirGlobal, tDot11fIEQuiet*, tANI_U32*);
4709
4710#ifdef __cplusplus
4711}; /* End extern "C". */
4712#endif /* C++ */
4713// EID 53 (0x35)
4714typedef struct sDot11fIERCPIIE {
4715 tANI_U8 present;
4716 tANI_U8 rcpi;
4717} tDot11fIERCPIIE;
4718
4719#define DOT11F_EID_RCPIIE ( 53 )
4720
4721// N.B. These #defines do *not* include the EID & length
4722#define DOT11F_IE_RCPIIE_MIN_LEN ( 1 )
4723
4724#define DOT11F_IE_RCPIIE_MAX_LEN ( 1 )
4725
4726#ifdef __cplusplus
4727extern "C" {
4728#endif /* C++ */
4729tANI_U32 dot11fUnpackIeRCPIIE(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERCPIIE*);
4730
4731tANI_U32 dot11fPackIeRCPIIE(tpAniSirGlobal, tDot11fIERCPIIE*, tANI_U8*, tANI_U32, tANI_U32*);
4732
4733tANI_U32 dot11fGetPackedIERCPIIE(tpAniSirGlobal, tDot11fIERCPIIE*, tANI_U32*);
4734
4735#ifdef __cplusplus
4736}; /* End extern "C". */
4737#endif /* C++ */
4738// EID 57 (0x39)
4739typedef struct sDot11fIERICDataDesc {
4740 tANI_U8 present;
4741 tDot11fIERICData RICData;
4742 tDot11fIERICDescriptor RICDescriptor;
4743 tDot11fIETSPEC TSPEC;
4744 tANI_U16 num_TCLAS;
4745 tDot11fIETCLAS TCLAS[2];
4746 tDot11fIETCLASSPROC TCLASSPROC;
4747 tDot11fIETSDelay TSDelay;
4748 tDot11fIESchedule Schedule;
4749 tDot11fIEWMMTSPEC WMMTSPEC;
4750 tANI_U16 num_WMMTCLAS;
4751 tDot11fIEWMMTCLAS WMMTCLAS[2];
4752 tDot11fIEWMMTCLASPROC WMMTCLASPROC;
4753 tDot11fIEWMMTSDelay WMMTSDelay;
4754 tDot11fIEWMMSchedule WMMSchedule;
4755} tDot11fIERICDataDesc;
4756
4757#define DOT11F_EID_RICDATADESC ( 57 )
4758
4759// N.B. These #defines do *not* include the EID & length
4760#define DOT11F_IE_RICDATADESC_MIN_LEN ( 0 )
4761
4762#define DOT11F_IE_RICDATADESC_MAX_LEN ( 548 )
4763
4764#ifdef __cplusplus
4765extern "C" {
4766#endif /* C++ */
4767tANI_U32 dot11fUnpackIeRICDataDesc(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERICDataDesc*);
4768
4769tANI_U32 dot11fPackIeRICDataDesc(tpAniSirGlobal, tDot11fIERICDataDesc*, tANI_U8*, tANI_U32, tANI_U32*);
4770
4771tANI_U32 dot11fGetPackedIERICDataDesc(tpAniSirGlobal, tDot11fIERICDataDesc*, tANI_U32*);
4772
4773#ifdef __cplusplus
4774}; /* End extern "C". */
4775#endif /* C++ */
4776// EID 48 (0x30)
4777typedef struct sDot11fIERSN {
4778 tANI_U8 present;
4779 tANI_U16 version /* Must be 1! */;
4780 tANI_U8 gp_cipher_suite[4];
4781 tANI_U16 pwise_cipher_suite_count;
4782 tANI_U8 pwise_cipher_suites[4][4];
4783 tANI_U16 akm_suite_count;
4784 tANI_U8 akm_suites[4][4];
4785 tANI_U16 preauth: 1;
4786 tANI_U16 no_pwise: 1;
4787 tANI_U16 PTKSA_replay_counter: 2;
4788 tANI_U16 GTKSA_replay_counter: 2;
4789 tANI_U16 reserved: 10;
4790 tANI_U16 pmkid_count;
4791 tANI_U8 pmkid[4][16];
4792} tDot11fIERSN;
4793
4794#define DOT11F_EID_RSN ( 48 )
4795
4796// N.B. These #defines do *not* include the EID & length
4797#define DOT11F_IE_RSN_MIN_LEN ( 6 )
4798
4799#define DOT11F_IE_RSN_MAX_LEN ( 110 )
4800
4801#ifdef __cplusplus
4802extern "C" {
4803#endif /* C++ */
4804tANI_U32 dot11fUnpackIeRSN(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERSN*);
4805
4806tANI_U32 dot11fPackIeRSN(tpAniSirGlobal, tDot11fIERSN*, tANI_U8*, tANI_U32, tANI_U32*);
4807
4808tANI_U32 dot11fGetPackedIERSN(tpAniSirGlobal, tDot11fIERSN*, tANI_U32*);
4809
4810#ifdef __cplusplus
4811}; /* End extern "C". */
4812#endif /* C++ */
4813// EID 65 (0x41)
4814typedef struct sDot11fIERSNIIE {
4815 tANI_U8 present;
4816 tANI_U8 rsni;
4817} tDot11fIERSNIIE;
4818
4819#define DOT11F_EID_RSNIIE ( 65 )
4820
4821// N.B. These #defines do *not* include the EID & length
4822#define DOT11F_IE_RSNIIE_MIN_LEN ( 1 )
4823
4824#define DOT11F_IE_RSNIIE_MAX_LEN ( 1 )
4825
4826#ifdef __cplusplus
4827extern "C" {
4828#endif /* C++ */
4829tANI_U32 dot11fUnpackIeRSNIIE(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERSNIIE*);
4830
4831tANI_U32 dot11fPackIeRSNIIE(tpAniSirGlobal, tDot11fIERSNIIE*, tANI_U8*, tANI_U32, tANI_U32*);
4832
4833tANI_U32 dot11fGetPackedIERSNIIE(tpAniSirGlobal, tDot11fIERSNIIE*, tANI_U32*);
4834
4835#ifdef __cplusplus
4836}; /* End extern "C". */
4837#endif /* C++ */
4838// EID 48 (0x30)
4839typedef struct sDot11fIERSNOpaque {
4840 tANI_U8 present;
4841 tANI_U8 num_data;
4842 tANI_U8 data[253];
4843} tDot11fIERSNOpaque;
4844
4845#define DOT11F_EID_RSNOPAQUE ( 48 )
4846
4847// N.B. These #defines do *not* include the EID & length
4848#define DOT11F_IE_RSNOPAQUE_MIN_LEN ( 6 )
4849
4850#define DOT11F_IE_RSNOPAQUE_MAX_LEN ( 253 )
4851
4852#ifdef __cplusplus
4853extern "C" {
4854#endif /* C++ */
4855tANI_U32 dot11fUnpackIeRSNOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERSNOpaque*);
4856
4857tANI_U32 dot11fPackIeRSNOpaque(tpAniSirGlobal, tDot11fIERSNOpaque*, tANI_U8*, tANI_U32, tANI_U32*);
4858
4859tANI_U32 dot11fGetPackedIERSNOpaque(tpAniSirGlobal, tDot11fIERSNOpaque*, tANI_U32*);
4860
4861#ifdef __cplusplus
4862}; /* End extern "C". */
4863#endif /* C++ */
4864// EID 36 (0x24)
4865typedef struct sDot11fIESuppChannels {
4866 tANI_U8 present;
4867 tANI_U8 num_bands;
4868 tANI_U8 bands[48][2];
4869} tDot11fIESuppChannels;
4870
4871#define DOT11F_EID_SUPPCHANNELS ( 36 )
4872
4873// N.B. These #defines do *not* include the EID & length
4874#define DOT11F_IE_SUPPCHANNELS_MIN_LEN ( 2 )
4875
4876#define DOT11F_IE_SUPPCHANNELS_MAX_LEN ( 96 )
4877
4878#ifdef __cplusplus
4879extern "C" {
4880#endif /* C++ */
4881tANI_U32 dot11fUnpackIeSuppChannels(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIESuppChannels*);
4882
4883tANI_U32 dot11fPackIeSuppChannels(tpAniSirGlobal, tDot11fIESuppChannels*, tANI_U8*, tANI_U32, tANI_U32*);
4884
4885tANI_U32 dot11fGetPackedIESuppChannels(tpAniSirGlobal, tDot11fIESuppChannels*, tANI_U32*);
4886
4887#ifdef __cplusplus
4888}; /* End extern "C". */
4889#endif /* C++ */
4890// EID 1 (0x01)
4891typedef struct sDot11fIESuppRates {
4892 tANI_U8 present;
4893 tANI_U8 num_rates;
4894 tANI_U8 rates[12];
4895} tDot11fIESuppRates;
4896
4897#define DOT11F_EID_SUPPRATES ( 1 )
4898
4899// N.B. These #defines do *not* include the EID & length
4900#define DOT11F_IE_SUPPRATES_MIN_LEN ( 0 )
4901
4902#define DOT11F_IE_SUPPRATES_MAX_LEN ( 12 )
4903
4904#define DOT11F_IS_BG_RATE(_x) (((_x) == 02) || \
4905 ((_x) == 04) || \
4906 ((_x) == 11) || \
4907 ((_x) == 22) || \
4908 ((_x) == 12) || \
4909 ((_x) == 18) || \
4910 ((_x) == 24) || \
4911 ((_x) == 36) || \
4912 ((_x) == 48) || \
4913 ((_x) == 72) || \
4914 ((_x) == 96) || \
4915 ((_x) == 108))
4916
4917#ifdef __cplusplus
4918extern "C" {
4919#endif /* C++ */
4920tANI_U32 dot11fUnpackIeSuppRates(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIESuppRates*);
4921
4922tANI_U32 dot11fPackIeSuppRates(tpAniSirGlobal, tDot11fIESuppRates*, tANI_U8*, tANI_U32, tANI_U32*);
4923
4924tANI_U32 dot11fGetPackedIESuppRates(tpAniSirGlobal, tDot11fIESuppRates*, tANI_U32*);
4925
4926#ifdef __cplusplus
4927}; /* End extern "C". */
4928#endif /* C++ */
4929// EID 5 (0x05)
4930typedef struct sDot11fIETIM {
4931 tANI_U8 present;
4932 tANI_U8 dtim_count;
4933 tANI_U8 dtim_period;
4934 tANI_U8 bmpctl;
4935 tANI_U8 num_vbmp;
4936 tANI_U8 vbmp[251];
4937} tDot11fIETIM;
4938
4939#define DOT11F_EID_TIM ( 5 )
4940
4941// N.B. These #defines do *not* include the EID & length
4942#define DOT11F_IE_TIM_MIN_LEN ( 4 )
4943
4944#define DOT11F_IE_TIM_MAX_LEN ( 254 )
4945
4946#ifdef __cplusplus
4947extern "C" {
4948#endif /* C++ */
4949tANI_U32 dot11fUnpackIeTIM(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETIM*);
4950
4951tANI_U32 dot11fPackIeTIM(tpAniSirGlobal, tDot11fIETIM*, tANI_U8*, tANI_U32, tANI_U32*);
4952
4953tANI_U32 dot11fGetPackedIETIM(tpAniSirGlobal, tDot11fIETIM*, tANI_U32*);
4954
4955#ifdef __cplusplus
4956}; /* End extern "C". */
4957#endif /* C++ */
4958// EID 35 (0x23)
4959typedef struct sDot11fIETPCReport {
4960 tANI_U8 present;
4961 tANI_U8 tx_power;
4962 tANI_U8 link_margin;
4963} tDot11fIETPCReport;
4964
4965#define DOT11F_EID_TPCREPORT ( 35 )
4966
4967// N.B. These #defines do *not* include the EID & length
4968#define DOT11F_IE_TPCREPORT_MIN_LEN ( 2 )
4969
4970#define DOT11F_IE_TPCREPORT_MAX_LEN ( 2 )
4971
4972#ifdef __cplusplus
4973extern "C" {
4974#endif /* C++ */
4975tANI_U32 dot11fUnpackIeTPCReport(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETPCReport*);
4976
4977tANI_U32 dot11fPackIeTPCReport(tpAniSirGlobal, tDot11fIETPCReport*, tANI_U8*, tANI_U32, tANI_U32*);
4978
4979tANI_U32 dot11fGetPackedIETPCReport(tpAniSirGlobal, tDot11fIETPCReport*, tANI_U32*);
4980
4981#ifdef __cplusplus
4982}; /* End extern "C". */
4983#endif /* C++ */
4984// EID 34 (0x22)
4985typedef struct sDot11fIETPCRequest {
4986 tANI_U8 present;
4987} tDot11fIETPCRequest;
4988
4989#define DOT11F_EID_TPCREQUEST ( 34 )
4990
4991// N.B. These #defines do *not* include the EID & length
4992#define DOT11F_IE_TPCREQUEST_MIN_LEN ( 0 )
4993
4994#define DOT11F_IE_TPCREQUEST_MAX_LEN ( 0 )
4995
4996#ifdef __cplusplus
4997extern "C" {
4998#endif /* C++ */
4999tANI_U32 dot11fUnpackIeTPCRequest(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETPCRequest*);
5000
5001tANI_U32 dot11fPackIeTPCRequest(tpAniSirGlobal, tDot11fIETPCRequest*, tANI_U8*, tANI_U32, tANI_U32*);
5002
5003tANI_U32 dot11fGetPackedIETPCRequest(tpAniSirGlobal, tDot11fIETPCRequest*, tANI_U32*);
5004
5005#ifdef __cplusplus
5006}; /* End extern "C". */
5007#endif /* C++ */
5008// EID 68 (0x44)
5009typedef struct sDot11fIEWAPI {
5010 tANI_U8 present;
5011 tANI_U16 version /* Must be 1! */;
5012 tANI_U16 akm_suite_count;
5013 tANI_U8 akm_suites[4][4];
5014 tANI_U16 unicast_cipher_suite_count;
5015 tANI_U8 unicast_cipher_suites[4][4];
5016 tANI_U8 multicast_cipher_suite[4];
5017 tANI_U16 preauth: 1;
5018 tANI_U16 reserved: 15;
5019 tANI_U16 bkid_count;
5020 tANI_U8 bkid[4][16];
5021} tDot11fIEWAPI;
5022
5023#define DOT11F_EID_WAPI ( 68 )
5024
5025// N.B. These #defines do *not* include the EID & length
5026#define DOT11F_IE_WAPI_MIN_LEN ( 12 )
5027
5028#define DOT11F_IE_WAPI_MAX_LEN ( 110 )
5029
5030#ifdef __cplusplus
5031extern "C" {
5032#endif /* C++ */
5033tANI_U32 dot11fUnpackIeWAPI(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWAPI*);
5034
5035tANI_U32 dot11fPackIeWAPI(tpAniSirGlobal, tDot11fIEWAPI*, tANI_U8*, tANI_U32, tANI_U32*);
5036
5037tANI_U32 dot11fGetPackedIEWAPI(tpAniSirGlobal, tDot11fIEWAPI*, tANI_U32*);
5038
5039#ifdef __cplusplus
5040}; /* End extern "C". */
5041#endif /* C++ */
5042// EID 68 (0x44)
5043typedef struct sDot11fIEWAPIOpaque {
5044 tANI_U8 present;
5045 tANI_U8 num_data;
5046 tANI_U8 data[253];
5047} tDot11fIEWAPIOpaque;
5048
5049#define DOT11F_EID_WAPIOPAQUE ( 68 )
5050
5051// N.B. These #defines do *not* include the EID & length
5052#define DOT11F_IE_WAPIOPAQUE_MIN_LEN ( 6 )
5053
5054#define DOT11F_IE_WAPIOPAQUE_MAX_LEN ( 253 )
5055
5056#ifdef __cplusplus
5057extern "C" {
5058#endif /* C++ */
5059tANI_U32 dot11fUnpackIeWAPIOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWAPIOpaque*);
5060
5061tANI_U32 dot11fPackIeWAPIOpaque(tpAniSirGlobal, tDot11fIEWAPIOpaque*, tANI_U8*, tANI_U32, tANI_U32*);
5062
5063tANI_U32 dot11fGetPackedIEWAPIOpaque(tpAniSirGlobal, tDot11fIEWAPIOpaque*, tANI_U32*);
5064
5065#ifdef __cplusplus
5066}; /* End extern "C". */
5067#endif /* C++ */
5068// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x08, 0x00}
5069typedef struct sDot11fIEWFATPC {
5070 tANI_U8 present;
5071 tANI_U8 txPower;
5072 tANI_U8 linkMargin;
5073} tDot11fIEWFATPC;
5074
5075#define DOT11F_EID_WFATPC ( 221 )
5076
5077// N.B. These #defines do *not* include the EID & length
5078#define DOT11F_IE_WFATPC_MIN_LEN ( 7 )
5079
5080#define DOT11F_IE_WFATPC_MAX_LEN ( 7 )
5081
5082#ifdef __cplusplus
5083extern "C" {
5084#endif /* C++ */
5085tANI_U32 dot11fUnpackIeWFATPC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWFATPC*);
5086
5087tANI_U32 dot11fPackIeWFATPC(tpAniSirGlobal, tDot11fIEWFATPC*, tANI_U8*, tANI_U32, tANI_U32*);
5088
5089tANI_U32 dot11fGetPackedIEWFATPC(tpAniSirGlobal, tDot11fIEWFATPC*, tANI_U32*);
5090
5091#ifdef __cplusplus
5092}; /* End extern "C". */
5093#endif /* C++ */
5094// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05}
5095typedef struct sDot11fIEWMMCaps {
5096 tANI_U8 present;
5097 tANI_U8 version /* Must be 1! */;
5098 tANI_U8 reserved: 4;
5099 tANI_U8 qack: 1;
5100 tANI_U8 queue_request: 1;
5101 tANI_U8 txop_request: 1;
5102 tANI_U8 more_ack: 1;
5103} tDot11fIEWMMCaps;
5104
5105#define DOT11F_EID_WMMCAPS ( 221 )
5106
5107// N.B. These #defines do *not* include the EID & length
5108#define DOT11F_IE_WMMCAPS_MIN_LEN ( 7 )
5109
5110#define DOT11F_IE_WMMCAPS_MAX_LEN ( 7 )
5111
5112#ifdef __cplusplus
5113extern "C" {
5114#endif /* C++ */
5115tANI_U32 dot11fUnpackIeWMMCaps(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMCaps*);
5116
5117tANI_U32 dot11fPackIeWMMCaps(tpAniSirGlobal, tDot11fIEWMMCaps*, tANI_U8*, tANI_U32, tANI_U32*);
5118
5119tANI_U32 dot11fGetPackedIEWMMCaps(tpAniSirGlobal, tDot11fIEWMMCaps*, tANI_U32*);
5120
5121#ifdef __cplusplus
5122}; /* End extern "C". */
5123#endif /* C++ */
5124// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00}
5125typedef struct sDot11fIEWMMInfoAp {
5126 tANI_U8 present;
5127 tANI_U8 version;
5128 tANI_U8 param_set_count: 4;
5129 tANI_U8 reserved: 3;
5130 tANI_U8 uapsd: 1;
5131} tDot11fIEWMMInfoAp;
5132
5133#define DOT11F_EID_WMMINFOAP ( 221 )
5134
5135// N.B. These #defines do *not* include the EID & length
5136#define DOT11F_IE_WMMINFOAP_MIN_LEN ( 7 )
5137
5138#define DOT11F_IE_WMMINFOAP_MAX_LEN ( 7 )
5139
5140#ifdef __cplusplus
5141extern "C" {
5142#endif /* C++ */
5143tANI_U32 dot11fUnpackIeWMMInfoAp(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMInfoAp*);
5144
5145tANI_U32 dot11fPackIeWMMInfoAp(tpAniSirGlobal, tDot11fIEWMMInfoAp*, tANI_U8*, tANI_U32, tANI_U32*);
5146
5147tANI_U32 dot11fGetPackedIEWMMInfoAp(tpAniSirGlobal, tDot11fIEWMMInfoAp*, tANI_U32*);
5148
5149#ifdef __cplusplus
5150}; /* End extern "C". */
5151#endif /* C++ */
5152// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00}
5153typedef struct sDot11fIEWMMInfoStation {
5154 tANI_U8 present;
5155 tANI_U8 version;
5156 tANI_U8 acvo_uapsd: 1;
5157 tANI_U8 acvi_uapsd: 1;
5158 tANI_U8 acbk_uapsd: 1;
5159 tANI_U8 acbe_uapsd: 1;
5160 tANI_U8 reserved1: 1;
5161 tANI_U8 max_sp_length: 2;
5162 tANI_U8 reserved2: 1;
5163} tDot11fIEWMMInfoStation;
5164
5165#define DOT11F_EID_WMMINFOSTATION ( 221 )
5166
5167// N.B. These #defines do *not* include the EID & length
5168#define DOT11F_IE_WMMINFOSTATION_MIN_LEN ( 7 )
5169
5170#define DOT11F_IE_WMMINFOSTATION_MAX_LEN ( 7 )
5171
5172#ifdef __cplusplus
5173extern "C" {
5174#endif /* C++ */
5175tANI_U32 dot11fUnpackIeWMMInfoStation(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMInfoStation*);
5176
5177tANI_U32 dot11fPackIeWMMInfoStation(tpAniSirGlobal, tDot11fIEWMMInfoStation*, tANI_U8*, tANI_U32, tANI_U32*);
5178
5179tANI_U32 dot11fGetPackedIEWMMInfoStation(tpAniSirGlobal, tDot11fIEWMMInfoStation*, tANI_U32*);
5180
5181#ifdef __cplusplus
5182}; /* End extern "C". */
5183#endif /* C++ */
5184// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01}
5185typedef struct sDot11fIEWMMParams {
5186 tANI_U8 present;
5187 tANI_U8 version /* Must be 1! */;
5188 tANI_U8 qosInfo;
5189 tANI_U8 reserved2;
5190 tANI_U8 acbe_aifsn: 4;
5191 tANI_U8 acbe_acm: 1;
5192 tANI_U8 acbe_aci: 2;
5193 tANI_U8 unused1: 1;
5194 tANI_U8 acbe_acwmin: 4;
5195 tANI_U8 acbe_acwmax: 4;
5196 tANI_U16 acbe_txoplimit;
5197 tANI_U8 acbk_aifsn: 4;
5198 tANI_U8 acbk_acm: 1;
5199 tANI_U8 acbk_aci: 2;
5200 tANI_U8 unused2: 1;
5201 tANI_U8 acbk_acwmin: 4;
5202 tANI_U8 acbk_acwmax: 4;
5203 tANI_U16 acbk_txoplimit;
5204 tANI_U8 acvi_aifsn: 4;
5205 tANI_U8 acvi_acm: 1;
5206 tANI_U8 acvi_aci: 2;
5207 tANI_U8 unused3: 1;
5208 tANI_U8 acvi_acwmin: 4;
5209 tANI_U8 acvi_acwmax: 4;
5210 tANI_U16 acvi_txoplimit;
5211 tANI_U8 acvo_aifsn: 4;
5212 tANI_U8 acvo_acm: 1;
5213 tANI_U8 acvo_aci: 2;
5214 tANI_U8 unused4: 1;
5215 tANI_U8 acvo_acwmin: 4;
5216 tANI_U8 acvo_acwmax: 4;
5217 tANI_U16 acvo_txoplimit;
5218} tDot11fIEWMMParams;
5219
5220#define DOT11F_EID_WMMPARAMS ( 221 )
5221
5222// N.B. These #defines do *not* include the EID & length
5223#define DOT11F_IE_WMMPARAMS_MIN_LEN ( 24 )
5224
5225#define DOT11F_IE_WMMPARAMS_MAX_LEN ( 24 )
5226
5227#ifdef __cplusplus
5228extern "C" {
5229#endif /* C++ */
5230tANI_U32 dot11fUnpackIeWMMParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMParams*);
5231
5232tANI_U32 dot11fPackIeWMMParams(tpAniSirGlobal, tDot11fIEWMMParams*, tANI_U8*, tANI_U32, tANI_U32*);
5233
5234tANI_U32 dot11fGetPackedIEWMMParams(tpAniSirGlobal, tDot11fIEWMMParams*, tANI_U32*);
5235
5236#ifdef __cplusplus
5237}; /* End extern "C". */
5238#endif /* C++ */
5239// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01}
5240typedef struct sDot11fIEWPA {
5241 tANI_U8 present;
5242 tANI_U16 version /* Must be 1! */;
5243 tANI_U8 multicast_cipher_present; //field added to fix the bug in dot11fPackIEWPA
5244 tANI_U8 multicast_cipher[4];
5245 tANI_U16 unicast_cipher_count;
5246 tANI_U8 unicast_ciphers[4][4];
5247 tANI_U16 auth_suite_count;
5248 tANI_U8 auth_suites[4][4];
5249 tANI_U16 caps;
5250} tDot11fIEWPA;
5251
5252#define DOT11F_EID_WPA ( 221 )
5253
5254// N.B. These #defines do *not* include the EID & length
5255#define DOT11F_IE_WPA_MIN_LEN ( 6 )
5256
5257#define DOT11F_IE_WPA_MAX_LEN ( 48 )
5258
5259#ifdef __cplusplus
5260extern "C" {
5261#endif /* C++ */
5262tANI_U32 dot11fUnpackIeWPA(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWPA*);
5263
5264tANI_U32 dot11fPackIeWPA(tpAniSirGlobal, tDot11fIEWPA*, tANI_U8*, tANI_U32, tANI_U32*);
5265
5266tANI_U32 dot11fGetPackedIEWPA(tpAniSirGlobal, tDot11fIEWPA*, tANI_U32*);
5267
5268#ifdef __cplusplus
5269}; /* End extern "C". */
5270#endif /* C++ */
5271// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01}
5272typedef struct sDot11fIEWPAOpaque {
5273 tANI_U8 present;
5274 tANI_U8 num_data;
5275 tANI_U8 data[249];
5276} tDot11fIEWPAOpaque;
5277
5278#define DOT11F_EID_WPAOPAQUE ( 221 )
5279
5280// N.B. These #defines do *not* include the EID & length
5281#define DOT11F_IE_WPAOPAQUE_MIN_LEN ( 6 )
5282
5283#define DOT11F_IE_WPAOPAQUE_MAX_LEN ( 253 )
5284
5285#ifdef __cplusplus
5286extern "C" {
5287#endif /* C++ */
5288tANI_U32 dot11fUnpackIeWPAOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWPAOpaque*);
5289
5290tANI_U32 dot11fPackIeWPAOpaque(tpAniSirGlobal, tDot11fIEWPAOpaque*, tANI_U8*, tANI_U32, tANI_U32*);
5291
5292tANI_U32 dot11fGetPackedIEWPAOpaque(tpAniSirGlobal, tDot11fIEWPAOpaque*, tANI_U32*);
5293
5294#ifdef __cplusplus
5295}; /* End extern "C". */
5296#endif /* C++ */
5297// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
5298typedef struct sDot11fIEWSC {
5299 tANI_U8 present;
5300 tDot11fTLVVersion Version;
5301 tDot11fTLVWPSState WPSState;
5302 tDot11fTLVAPSetupLocked APSetupLocked;
5303 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
5304 tDot11fTLVUUID_E UUID_E;
5305 tDot11fTLVUUID_R UUID_R;
5306 tDot11fTLVRFBands RFBands;
5307 tDot11fTLVSelectedRegistrar SelectedRegistrar;
5308 tDot11fTLVConfigMethods ConfigMethods;
5309 tDot11fTLVAssociationState AssociationState;
5310 tDot11fTLVConfigurationError ConfigurationError;
5311 tDot11fTLVManufacturer Manufacturer;
5312 tDot11fTLVModelName ModelName;
5313 tDot11fTLVModelNumber ModelNumber;
5314 tDot11fTLVSerialNumber SerialNumber;
5315 tDot11fTLVDeviceName DeviceName;
5316 tDot11fTLVDevicePasswordID DevicePasswordID;
5317 tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
5318 tDot11fTLVRequestType RequestType;
5319 tDot11fTLVResponseType ResponseType;
5320 tDot11fTLVVendorExtension VendorExtension;
5321 tDot11fTLVRequestDeviceType RequestDeviceType;
5322} tDot11fIEWSC;
5323
5324#define DOT11F_EID_WSC ( 221 )
5325
5326// N.B. These #defines do *not* include the EID & length
5327#define DOT11F_IE_WSC_MIN_LEN ( 4 )
5328
5329#define DOT11F_IE_WSC_MAX_LEN ( 366 )
5330
5331#ifdef __cplusplus
5332extern "C" {
5333#endif /* C++ */
5334tANI_U32 dot11fUnpackIeWSC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWSC*);
5335
5336tANI_U32 dot11fPackIeWSC(tpAniSirGlobal, tDot11fIEWSC*, tANI_U8*, tANI_U32, tANI_U32*);
5337
5338tANI_U32 dot11fGetPackedIEWSC(tpAniSirGlobal, tDot11fIEWSC*, tANI_U32*);
5339
5340#ifdef __cplusplus
5341}; /* End extern "C". */
5342#endif /* C++ */
5343// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
5344typedef struct sDot11fIEWscAssocReq {
5345 tANI_U8 present;
5346 tDot11fTLVVersion Version;
5347 tDot11fTLVRequestType RequestType;
5348 tDot11fTLVVendorExtension VendorExtension;
5349} tDot11fIEWscAssocReq;
5350
5351#define DOT11F_EID_WSCASSOCREQ ( 221 )
5352
5353// N.B. These #defines do *not* include the EID & length
5354#define DOT11F_IE_WSCASSOCREQ_MIN_LEN ( 4 )
5355
5356#define DOT11F_IE_WSCASSOCREQ_MAX_LEN ( 35 )
5357
5358#ifdef __cplusplus
5359extern "C" {
5360#endif /* C++ */
5361tANI_U32 dot11fUnpackIeWscAssocReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscAssocReq*);
5362
5363tANI_U32 dot11fPackIeWscAssocReq(tpAniSirGlobal, tDot11fIEWscAssocReq*, tANI_U8*, tANI_U32, tANI_U32*);
5364
5365tANI_U32 dot11fGetPackedIEWscAssocReq(tpAniSirGlobal, tDot11fIEWscAssocReq*, tANI_U32*);
5366
5367#ifdef __cplusplus
5368}; /* End extern "C". */
5369#endif /* C++ */
5370// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
5371typedef struct sDot11fIEWscAssocRes {
5372 tANI_U8 present;
5373 tDot11fTLVVersion Version;
5374 tDot11fTLVResponseType ResponseType;
5375 tDot11fTLVVendorExtension VendorExtension;
5376} tDot11fIEWscAssocRes;
5377
5378#define DOT11F_EID_WSCASSOCRES ( 221 )
5379
5380// N.B. These #defines do *not* include the EID & length
5381#define DOT11F_IE_WSCASSOCRES_MIN_LEN ( 4 )
5382
5383#define DOT11F_IE_WSCASSOCRES_MAX_LEN ( 35 )
5384
5385#ifdef __cplusplus
5386extern "C" {
5387#endif /* C++ */
5388tANI_U32 dot11fUnpackIeWscAssocRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscAssocRes*);
5389
5390tANI_U32 dot11fPackIeWscAssocRes(tpAniSirGlobal, tDot11fIEWscAssocRes*, tANI_U8*, tANI_U32, tANI_U32*);
5391
5392tANI_U32 dot11fGetPackedIEWscAssocRes(tpAniSirGlobal, tDot11fIEWscAssocRes*, tANI_U32*);
5393
5394#ifdef __cplusplus
5395}; /* End extern "C". */
5396#endif /* C++ */
5397// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
5398typedef struct sDot11fIEWscBeacon {
5399 tANI_U8 present;
5400 tDot11fTLVVersion Version;
5401 tDot11fTLVWPSState WPSState;
5402 tDot11fTLVAPSetupLocked APSetupLocked;
5403 tDot11fTLVSelectedRegistrar SelectedRegistrar;
5404 tDot11fTLVDevicePasswordID DevicePasswordID;
5405 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
5406 tDot11fTLVUUID_E UUID_E;
5407 tDot11fTLVRFBands RFBands;
5408 tDot11fTLVVendorExtension VendorExtension;
5409} tDot11fIEWscBeacon;
5410
5411#define DOT11F_EID_WSCBEACON ( 221 )
5412
5413// N.B. These #defines do *not* include the EID & length
5414#define DOT11F_IE_WSCBEACON_MIN_LEN ( 4 )
5415
5416#define DOT11F_IE_WSCBEACON_MAX_LEN ( 82 )
5417
5418#ifdef __cplusplus
5419extern "C" {
5420#endif /* C++ */
5421tANI_U32 dot11fUnpackIeWscBeacon(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscBeacon*);
5422
5423tANI_U32 dot11fPackIeWscBeacon(tpAniSirGlobal, tDot11fIEWscBeacon*, tANI_U8*, tANI_U32, tANI_U32*);
5424
5425tANI_U32 dot11fGetPackedIEWscBeacon(tpAniSirGlobal, tDot11fIEWscBeacon*, tANI_U32*);
5426
5427#ifdef __cplusplus
5428}; /* End extern "C". */
5429#endif /* C++ */
5430// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
5431typedef struct sDot11fIEWscBeaconProbeRes {
5432 tANI_U8 present;
5433 tDot11fTLVVersion Version;
5434 tDot11fTLVWPSState WPSState;
5435 tDot11fTLVAPSetupLocked APSetupLocked;
5436 tDot11fTLVSelectedRegistrar SelectedRegistrar;
5437 tDot11fTLVDevicePasswordID DevicePasswordID;
5438 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
5439 tDot11fTLVResponseType ResponseType;
5440 tDot11fTLVUUID_E UUID_E;
5441 tDot11fTLVManufacturer Manufacturer;
5442 tDot11fTLVModelName ModelName;
5443 tDot11fTLVModelNumber ModelNumber;
5444 tDot11fTLVSerialNumber SerialNumber;
5445 tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
5446 tDot11fTLVDeviceName DeviceName;
5447 tDot11fTLVConfigMethods ConfigMethods;
5448 tDot11fTLVRFBands RFBands;
5449 tDot11fTLVVendorExtension VendorExtension;
5450} tDot11fIEWscBeaconProbeRes;
5451
5452#define DOT11F_EID_WSCBEACONPROBERES ( 221 )
5453
5454// N.B. These #defines do *not* include the EID & length
5455#define DOT11F_IE_WSCBEACONPROBERES_MIN_LEN ( 4 )
5456
5457#define DOT11F_IE_WSCBEACONPROBERES_MAX_LEN ( 317 )
5458
5459#ifdef __cplusplus
5460extern "C" {
5461#endif /* C++ */
5462tANI_U32 dot11fUnpackIeWscBeaconProbeRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscBeaconProbeRes*);
5463
5464tANI_U32 dot11fPackIeWscBeaconProbeRes(tpAniSirGlobal, tDot11fIEWscBeaconProbeRes*, tANI_U8*, tANI_U32, tANI_U32*);
5465
5466tANI_U32 dot11fGetPackedIEWscBeaconProbeRes(tpAniSirGlobal, tDot11fIEWscBeaconProbeRes*, tANI_U32*);
5467
5468#ifdef __cplusplus
5469}; /* End extern "C". */
5470#endif /* C++ */
5471// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04}
5472typedef struct sDot11fIEWscIEOpaque {
5473 tANI_U8 present;
5474 tANI_U8 num_data;
5475 tANI_U8 data[249];
5476} tDot11fIEWscIEOpaque;
5477
5478#define DOT11F_EID_WSCIEOPAQUE ( 221 )
5479
5480// N.B. These #defines do *not* include the EID & length
5481#define DOT11F_IE_WSCIEOPAQUE_MIN_LEN ( 6 )
5482
5483#define DOT11F_IE_WSCIEOPAQUE_MAX_LEN ( 253 )
5484
5485#ifdef __cplusplus
5486extern "C" {
5487#endif /* C++ */
5488tANI_U32 dot11fUnpackIeWscIEOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscIEOpaque*);
5489
5490tANI_U32 dot11fPackIeWscIEOpaque(tpAniSirGlobal, tDot11fIEWscIEOpaque*, tANI_U8*, tANI_U32, tANI_U32*);
5491
5492tANI_U32 dot11fGetPackedIEWscIEOpaque(tpAniSirGlobal, tDot11fIEWscIEOpaque*, tANI_U32*);
5493
5494#ifdef __cplusplus
5495}; /* End extern "C". */
5496#endif /* C++ */
5497// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
5498typedef struct sDot11fIEWscProbeReq {
5499 tANI_U8 present;
5500 tDot11fTLVVersion Version;
5501 tDot11fTLVRequestType RequestType;
5502 tDot11fTLVConfigMethods ConfigMethods;
5503 tDot11fTLVUUID_E UUID_E;
5504 tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
5505 tDot11fTLVRFBands RFBands;
5506 tDot11fTLVAssociationState AssociationState;
5507 tDot11fTLVConfigurationError ConfigurationError;
5508 tDot11fTLVDevicePasswordID DevicePasswordID;
5509 tDot11fTLVManufacturer Manufacturer;
5510 tDot11fTLVModelName ModelName;
5511 tDot11fTLVModelNumber ModelNumber;
5512 tDot11fTLVDeviceName DeviceName;
5513 tDot11fTLVVendorExtension VendorExtension;
5514 tDot11fTLVRequestDeviceType RequestDeviceType;
5515} tDot11fIEWscProbeReq;
5516
5517#define DOT11F_EID_WSCPROBEREQ ( 221 )
5518
5519// N.B. These #defines do *not* include the EID & length
5520#define DOT11F_IE_WSCPROBEREQ_MIN_LEN ( 4 )
5521
5522#define DOT11F_IE_WSCPROBEREQ_MAX_LEN ( 284 )
5523
5524#ifdef __cplusplus
5525extern "C" {
5526#endif /* C++ */
5527tANI_U32 dot11fUnpackIeWscProbeReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscProbeReq*);
5528
5529tANI_U32 dot11fPackIeWscProbeReq(tpAniSirGlobal, tDot11fIEWscProbeReq*, tANI_U8*, tANI_U32, tANI_U32*);
5530
5531tANI_U32 dot11fGetPackedIEWscProbeReq(tpAniSirGlobal, tDot11fIEWscProbeReq*, tANI_U32*);
5532
5533#ifdef __cplusplus
5534}; /* End extern "C". */
5535#endif /* C++ */
5536// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
5537typedef struct sDot11fIEWscProbeRes {
5538 tANI_U8 present;
5539 tDot11fTLVVersion Version;
5540 tDot11fTLVWPSState WPSState;
5541 tDot11fTLVAPSetupLocked APSetupLocked;
5542 tDot11fTLVSelectedRegistrar SelectedRegistrar;
5543 tDot11fTLVDevicePasswordID DevicePasswordID;
5544 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
5545 tDot11fTLVResponseType ResponseType;
5546 tDot11fTLVUUID_E UUID_E;
5547 tDot11fTLVManufacturer Manufacturer;
5548 tDot11fTLVModelName ModelName;
5549 tDot11fTLVModelNumber ModelNumber;
5550 tDot11fTLVSerialNumber SerialNumber;
5551 tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
5552 tDot11fTLVDeviceName DeviceName;
5553 tDot11fTLVConfigMethods ConfigMethods;
5554 tDot11fTLVRFBands RFBands;
5555 tDot11fTLVVendorExtension VendorExtension;
5556} tDot11fIEWscProbeRes;
5557
5558#define DOT11F_EID_WSCPROBERES ( 221 )
5559
5560// N.B. These #defines do *not* include the EID & length
5561#define DOT11F_IE_WSCPROBERES_MIN_LEN ( 4 )
5562
5563#define DOT11F_IE_WSCPROBERES_MAX_LEN ( 317 )
5564
5565#ifdef __cplusplus
5566extern "C" {
5567#endif /* C++ */
5568tANI_U32 dot11fUnpackIeWscProbeRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscProbeRes*);
5569
5570tANI_U32 dot11fPackIeWscProbeRes(tpAniSirGlobal, tDot11fIEWscProbeRes*, tANI_U8*, tANI_U32, tANI_U32*);
5571
5572tANI_U32 dot11fGetPackedIEWscProbeRes(tpAniSirGlobal, tDot11fIEWscProbeRes*, tANI_U32*);
5573
5574#ifdef __cplusplus
5575}; /* End extern "C". */
5576#endif /* C++ */
5577// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
5578typedef struct sDot11fIEWscReassocRes {
5579 tANI_U8 present;
5580 tDot11fTLVVersion Version;
5581 tDot11fTLVResponseType ResponseType;
5582 tDot11fTLVVendorExtension VendorExtension;
5583} tDot11fIEWscReassocRes;
5584
5585#define DOT11F_EID_WSCREASSOCRES ( 221 )
5586
5587// N.B. These #defines do *not* include the EID & length
5588#define DOT11F_IE_WSCREASSOCRES_MIN_LEN ( 4 )
5589
5590#define DOT11F_IE_WSCREASSOCRES_MAX_LEN ( 35 )
5591
5592#ifdef __cplusplus
5593extern "C" {
5594#endif /* C++ */
5595tANI_U32 dot11fUnpackIeWscReassocRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscReassocRes*);
5596
5597tANI_U32 dot11fPackIeWscReassocRes(tpAniSirGlobal, tDot11fIEWscReassocRes*, tANI_U8*, tANI_U32, tANI_U32*);
5598
5599tANI_U32 dot11fGetPackedIEWscReassocRes(tpAniSirGlobal, tDot11fIEWscReassocRes*, tANI_U32*);
5600
5601#ifdef __cplusplus
5602}; /* End extern "C". */
5603#endif /* C++ */
5604/************************************************************************
5605 * Frames
5606 **********************************************************************/
5607
5608typedef struct sDot11fAddBAReq{
5609 tDot11fFfCategory Category;
5610 tDot11fFfAction Action;
5611 tDot11fFfDialogToken DialogToken;
5612 tDot11fFfAddBAParameterSet AddBAParameterSet;
5613 tDot11fFfBATimeout BATimeout;
5614 tDot11fFfBAStartingSequenceControl BAStartingSequenceControl;
5615} tDot11fAddBAReq;
5616
5617#define DOT11F_ADDBAREQ ( 1 )
5618
5619#ifdef __cplusplus
5620extern "C" {
5621#endif /* C++ */
5622
5623tANI_U32 dot11fUnpackAddBAReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAddBAReq *pFrm);
5624tANI_U32 dot11fPackAddBAReq(tpAniSirGlobal pCtx, tDot11fAddBAReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5625tANI_U32 dot11fGetPackedAddBAReqSize(tpAniSirGlobal pCtx, tDot11fAddBAReq *pFrm, tANI_U32 *pnNeeded);
5626
5627#ifdef __cplusplus
5628} /* End extern "C". */
5629#endif /* C++ */
5630
5631typedef struct sDot11fAddBARsp{
5632 tDot11fFfCategory Category;
5633 tDot11fFfAction Action;
5634 tDot11fFfDialogToken DialogToken;
5635 tDot11fFfStatus Status;
5636 tDot11fFfAddBAParameterSet AddBAParameterSet;
5637 tDot11fFfBATimeout BATimeout;
5638} tDot11fAddBARsp;
5639
5640#define DOT11F_ADDBARSP ( 2 )
5641
5642#ifdef __cplusplus
5643extern "C" {
5644#endif /* C++ */
5645
5646tANI_U32 dot11fUnpackAddBARsp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAddBARsp *pFrm);
5647tANI_U32 dot11fPackAddBARsp(tpAniSirGlobal pCtx, tDot11fAddBARsp *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5648tANI_U32 dot11fGetPackedAddBARspSize(tpAniSirGlobal pCtx, tDot11fAddBARsp *pFrm, tANI_U32 *pnNeeded);
5649
5650#ifdef __cplusplus
5651} /* End extern "C". */
5652#endif /* C++ */
5653
5654typedef struct sDot11fAddTSRequest{
5655 tDot11fFfCategory Category;
5656 tDot11fFfAction Action;
5657 tDot11fFfDialogToken DialogToken;
5658 tDot11fIETSPEC TSPEC;
5659 tANI_U16 num_TCLAS;
5660 tDot11fIETCLAS TCLAS[2];
5661 tDot11fIETCLASSPROC TCLASSPROC;
5662 tDot11fIEWMMTSPEC WMMTSPEC;
5663 tANI_U16 num_WMMTCLAS;
5664 tDot11fIEWMMTCLAS WMMTCLAS[2];
5665 tDot11fIEWMMTCLASPROC WMMTCLASPROC;
5666 tDot11fIECCXTrafStrmRateSet CCXTrafStrmRateSet;
5667} tDot11fAddTSRequest;
5668
5669#define DOT11F_ADDTSREQUEST ( 3 )
5670
5671#ifdef __cplusplus
5672extern "C" {
5673#endif /* C++ */
5674
5675tANI_U32 dot11fUnpackAddTSRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAddTSRequest *pFrm);
5676tANI_U32 dot11fPackAddTSRequest(tpAniSirGlobal pCtx, tDot11fAddTSRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5677tANI_U32 dot11fGetPackedAddTSRequestSize(tpAniSirGlobal pCtx, tDot11fAddTSRequest *pFrm, tANI_U32 *pnNeeded);
5678
5679#ifdef __cplusplus
5680} /* End extern "C". */
5681#endif /* C++ */
5682
5683typedef struct sDot11fAddTSResponse{
5684 tDot11fFfCategory Category;
5685 tDot11fFfAction Action;
5686 tDot11fFfDialogToken DialogToken;
5687 tDot11fFfStatus Status;
5688 tDot11fIETSDelay TSDelay;
5689 tDot11fIETSPEC TSPEC;
5690 tANI_U16 num_TCLAS;
5691 tDot11fIETCLAS TCLAS[2];
5692 tDot11fIETCLASSPROC TCLASSPROC;
5693 tDot11fIESchedule Schedule;
5694 tDot11fIEWMMTSDelay WMMTSDelay;
5695 tDot11fIEWMMSchedule WMMSchedule;
5696 tDot11fIEWMMTSPEC WMMTSPEC;
5697 tANI_U16 num_WMMTCLAS;
5698 tDot11fIEWMMTCLAS WMMTCLAS[2];
5699 tDot11fIEWMMTCLASPROC WMMTCLASPROC;
5700 tDot11fIECCXTrafStrmMet CCXTrafStrmMet;
5701} tDot11fAddTSResponse;
5702
5703#define DOT11F_ADDTSRESPONSE ( 4 )
5704
5705#ifdef __cplusplus
5706extern "C" {
5707#endif /* C++ */
5708
5709tANI_U32 dot11fUnpackAddTSResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAddTSResponse *pFrm);
5710tANI_U32 dot11fPackAddTSResponse(tpAniSirGlobal pCtx, tDot11fAddTSResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5711tANI_U32 dot11fGetPackedAddTSResponseSize(tpAniSirGlobal pCtx, tDot11fAddTSResponse *pFrm, tANI_U32 *pnNeeded);
5712
5713#ifdef __cplusplus
5714} /* End extern "C". */
5715#endif /* C++ */
5716
5717typedef struct sDot11fAssocRequest{
5718 tDot11fFfCapabilities Capabilities;
5719 tDot11fFfListenInterval ListenInterval;
5720 tDot11fIESSID SSID;
5721 tDot11fIESuppRates SuppRates;
5722 tDot11fIEExtSuppRates ExtSuppRates;
5723 tDot11fIEPowerCaps PowerCaps;
5724 tDot11fIESuppChannels SuppChannels;
5725 tDot11fIERSNOpaque RSNOpaque;
5726 tDot11fIEQOSCapsStation QOSCapsStation;
5727 tDot11fIERRMEnabledCap RRMEnabledCap;
5728 tDot11fIEMobilityDomain MobilityDomain;
5729 tDot11fIEWPAOpaque WPAOpaque;
5730 tDot11fIEHTCaps HTCaps;
5731 tDot11fIEWMMCaps WMMCaps;
5732 tDot11fIEWMMInfoStation WMMInfoStation;
5733 tDot11fIEAirgo Airgo;
5734 tDot11fIEWscIEOpaque WscIEOpaque;
5735 tDot11fIEWAPIOpaque WAPIOpaque;
5736 tDot11fIECCXRadMgmtCap CCXRadMgmtCap;
5737 tDot11fIECCXVersion CCXVersion;
5738 tDot11fIEP2PIEOpaque P2PIEOpaque;
5739} tDot11fAssocRequest;
5740
5741#define DOT11F_ASSOCREQUEST ( 5 )
5742
5743#ifdef __cplusplus
5744extern "C" {
5745#endif /* C++ */
5746
5747tANI_U32 dot11fUnpackAssocRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAssocRequest *pFrm);
5748tANI_U32 dot11fPackAssocRequest(tpAniSirGlobal pCtx, tDot11fAssocRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5749tANI_U32 dot11fGetPackedAssocRequestSize(tpAniSirGlobal pCtx, tDot11fAssocRequest *pFrm, tANI_U32 *pnNeeded);
5750
5751#ifdef __cplusplus
5752} /* End extern "C". */
5753#endif /* C++ */
5754
5755typedef struct sDot11fAssocResponse{
5756 tDot11fFfCapabilities Capabilities;
5757 tDot11fFfStatus Status;
5758 tDot11fFfAID AID;
5759 tDot11fIESuppRates SuppRates;
5760 tDot11fIEExtSuppRates ExtSuppRates;
5761 tDot11fIEEDCAParamSet EDCAParamSet;
5762 tDot11fIERCPIIE RCPIIE;
5763 tDot11fIERSNIIE RSNIIE;
5764 tDot11fIERRMEnabledCap RRMEnabledCap;
5765 tDot11fIEMobilityDomain MobilityDomain;
5766 tDot11fIEFTInfo FTInfo;
5767 tANI_U16 num_RICDataDesc;
5768 tDot11fIERICDataDesc RICDataDesc[2];
5769 tDot11fIEWPA WPA;
5770 tDot11fIEHTCaps HTCaps;
5771 tDot11fIEHTInfo HTInfo;
5772 tDot11fIEWMMParams WMMParams;
5773 tDot11fIEWMMCaps WMMCaps;
5774 tDot11fIECCXRadMgmtCap CCXRadMgmtCap;
5775 tDot11fIECCXTrafStrmMet CCXTrafStrmMet;
5776 tDot11fIECCXTxmitPower CCXTxmitPower;
5777 tANI_U16 num_WMMTSPEC;
5778 tDot11fIEWMMTSPEC WMMTSPEC[4];
5779 tDot11fIEAirgo Airgo;
5780 tDot11fIEWscAssocRes WscAssocRes;
5781 tDot11fIEP2PAssocRes P2PAssocRes;
5782} tDot11fAssocResponse;
5783
5784#define DOT11F_ASSOCRESPONSE ( 6 )
5785
5786#ifdef __cplusplus
5787extern "C" {
5788#endif /* C++ */
5789
5790tANI_U32 dot11fUnpackAssocResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAssocResponse *pFrm);
5791tANI_U32 dot11fPackAssocResponse(tpAniSirGlobal pCtx, tDot11fAssocResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5792tANI_U32 dot11fGetPackedAssocResponseSize(tpAniSirGlobal pCtx, tDot11fAssocResponse *pFrm, tANI_U32 *pnNeeded);
5793
5794#ifdef __cplusplus
5795} /* End extern "C". */
5796#endif /* C++ */
5797
5798typedef struct sDot11fAuthentication{
5799 tDot11fFfAuthAlgo AuthAlgo;
5800 tDot11fFfAuthSeqNo AuthSeqNo;
5801 tDot11fFfStatus Status;
5802 tDot11fIEChallengeText ChallengeText;
5803 tDot11fIERSNOpaque RSNOpaque;
5804 tDot11fIEMobilityDomain MobilityDomain;
5805 tDot11fIEFTInfo FTInfo;
5806 tDot11fIEFTTimeoutInterval FTTimeoutInterval;
5807 tANI_U16 num_RICDataDesc;
5808 tDot11fIERICDataDesc RICDataDesc[2];
5809} tDot11fAuthentication;
5810
5811#define DOT11F_AUTHENTICATION ( 7 )
5812
5813#ifdef __cplusplus
5814extern "C" {
5815#endif /* C++ */
5816
5817tANI_U32 dot11fUnpackAuthentication(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAuthentication *pFrm);
5818tANI_U32 dot11fPackAuthentication(tpAniSirGlobal pCtx, tDot11fAuthentication *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5819tANI_U32 dot11fGetPackedAuthenticationSize(tpAniSirGlobal pCtx, tDot11fAuthentication *pFrm, tANI_U32 *pnNeeded);
5820
5821#ifdef __cplusplus
5822} /* End extern "C". */
5823#endif /* C++ */
5824
5825typedef struct sDot11fBeacon{
5826 tDot11fFfTimeStamp TimeStamp;
5827 tDot11fFfBeaconInterval BeaconInterval;
5828 tDot11fFfCapabilities Capabilities;
5829 tDot11fIESSID SSID;
5830 tDot11fIESuppRates SuppRates;
5831 tDot11fIEFHParamSet FHParamSet;
5832 tDot11fIEDSParams DSParams;
5833 tDot11fIECFParams CFParams;
5834 tDot11fIEIBSSParams IBSSParams;
5835 tDot11fIETIM TIM;
5836 tDot11fIECountry Country;
5837 tDot11fIEFHParams FHParams;
5838 tDot11fIEFHPattTable FHPattTable;
5839 tDot11fIEPowerConstraints PowerConstraints;
5840 tDot11fIEChanSwitchAnn ChanSwitchAnn;
5841 tDot11fIEQuiet Quiet;
5842 tDot11fIETPCReport TPCReport;
5843 tDot11fIEERPInfo ERPInfo;
5844 tDot11fIEExtSuppRates ExtSuppRates;
5845 tDot11fIERSN RSN;
5846 tDot11fIEQBSSLoad QBSSLoad;
5847 tDot11fIEEDCAParamSet EDCAParamSet;
5848 tDot11fIEQOSCapsAp QOSCapsAp;
5849 tDot11fIEAPChannelReport APChannelReport;
5850 tDot11fIERRMEnabledCap RRMEnabledCap;
5851 tDot11fIEMobilityDomain MobilityDomain;
5852 tDot11fIEWPA WPA;
5853 tDot11fIEHTCaps HTCaps;
5854 tDot11fIEHTInfo HTInfo;
5855 tDot11fIEExtChanSwitchAnn ExtChanSwitchAnn;
5856 tDot11fIEWMMInfoAp WMMInfoAp;
5857 tDot11fIEWMMParams WMMParams;
5858 tDot11fIEWMMCaps WMMCaps;
5859 tDot11fIEWAPI WAPI;
5860 tDot11fIECCXRadMgmtCap CCXRadMgmtCap;
5861 tDot11fIECCXTrafStrmMet CCXTrafStrmMet;
5862 tDot11fIECCXTxmitPower CCXTxmitPower;
5863 tDot11fIEAirgo Airgo;
5864 tDot11fIEWscBeacon WscBeacon;
5865 tDot11fIEP2PBeacon P2PBeacon;
5866} tDot11fBeacon;
5867
5868#define DOT11F_BEACON ( 8 )
5869
5870#ifdef __cplusplus
5871extern "C" {
5872#endif /* C++ */
5873
5874tANI_U32 dot11fUnpackBeacon(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeacon *pFrm);
5875tANI_U32 dot11fPackBeacon(tpAniSirGlobal pCtx, tDot11fBeacon *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5876tANI_U32 dot11fGetPackedBeaconSize(tpAniSirGlobal pCtx, tDot11fBeacon *pFrm, tANI_U32 *pnNeeded);
5877
5878#ifdef __cplusplus
5879} /* End extern "C". */
5880#endif /* C++ */
5881
5882typedef struct sDot11fBeacon1{
5883 tDot11fFfTimeStamp TimeStamp;
5884 tDot11fFfBeaconInterval BeaconInterval;
5885 tDot11fFfCapabilities Capabilities;
5886 tDot11fIESSID SSID;
5887 tDot11fIESuppRates SuppRates;
5888 tDot11fIEDSParams DSParams;
5889 tDot11fIEIBSSParams IBSSParams;
5890} tDot11fBeacon1;
5891
5892#define DOT11F_BEACON1 ( 9 )
5893
5894#ifdef __cplusplus
5895extern "C" {
5896#endif /* C++ */
5897
5898tANI_U32 dot11fUnpackBeacon1(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeacon1 *pFrm);
5899tANI_U32 dot11fPackBeacon1(tpAniSirGlobal pCtx, tDot11fBeacon1 *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5900tANI_U32 dot11fGetPackedBeacon1Size(tpAniSirGlobal pCtx, tDot11fBeacon1 *pFrm, tANI_U32 *pnNeeded);
5901
5902#ifdef __cplusplus
5903} /* End extern "C". */
5904#endif /* C++ */
5905
5906typedef struct sDot11fBeacon2{
5907 tDot11fIECountry Country;
5908 tDot11fIEPowerConstraints PowerConstraints;
5909 tDot11fIEChanSwitchAnn ChanSwitchAnn;
5910 tDot11fIEQuiet Quiet;
5911 tDot11fIETPCReport TPCReport;
5912 tDot11fIEERPInfo ERPInfo;
5913 tDot11fIEExtSuppRates ExtSuppRates;
5914 tDot11fIERSN RSN;
5915 tDot11fIEEDCAParamSet EDCAParamSet;
5916 tDot11fIEAPChannelReport APChannelReport;
5917 tDot11fIERRMEnabledCap RRMEnabledCap;
5918 tDot11fIEMobilityDomain MobilityDomain;
5919 tDot11fIEWPA WPA;
5920 tDot11fIEHTCaps HTCaps;
5921 tDot11fIEHTInfo HTInfo;
5922 tDot11fIEExtChanSwitchAnn ExtChanSwitchAnn;
5923 tDot11fIEWMMInfoAp WMMInfoAp;
5924 tDot11fIEWMMParams WMMParams;
5925 tDot11fIEWMMCaps WMMCaps;
5926 tDot11fIEAirgo Airgo;
5927 tDot11fIEWscBeacon WscBeacon;
5928 tDot11fIEWAPI WAPI;
5929 tDot11fIECCXRadMgmtCap CCXRadMgmtCap;
5930 tDot11fIECCXTrafStrmMet CCXTrafStrmMet;
5931 tDot11fIECCXTxmitPower CCXTxmitPower;
5932 tDot11fIEP2PBeacon P2PBeacon;
5933} tDot11fBeacon2;
5934
5935#define DOT11F_BEACON2 ( 10 )
5936
5937#ifdef __cplusplus
5938extern "C" {
5939#endif /* C++ */
5940
5941tANI_U32 dot11fUnpackBeacon2(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeacon2 *pFrm);
5942tANI_U32 dot11fPackBeacon2(tpAniSirGlobal pCtx, tDot11fBeacon2 *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5943tANI_U32 dot11fGetPackedBeacon2Size(tpAniSirGlobal pCtx, tDot11fBeacon2 *pFrm, tANI_U32 *pnNeeded);
5944
5945#ifdef __cplusplus
5946} /* End extern "C". */
5947#endif /* C++ */
5948
5949typedef struct sDot11fBeaconIEs{
5950 tDot11fIESSID SSID;
5951 tDot11fIESuppRates SuppRates;
5952 tDot11fIEFHParamSet FHParamSet;
5953 tDot11fIEDSParams DSParams;
5954 tDot11fIECFParams CFParams;
5955 tDot11fIEIBSSParams IBSSParams;
5956 tDot11fIETIM TIM;
5957 tDot11fIECountry Country;
5958 tDot11fIEFHParams FHParams;
5959 tDot11fIEFHPattTable FHPattTable;
5960 tDot11fIEPowerConstraints PowerConstraints;
5961 tDot11fIEChanSwitchAnn ChanSwitchAnn;
5962 tDot11fIEQuiet Quiet;
5963 tDot11fIETPCReport TPCReport;
5964 tDot11fIEERPInfo ERPInfo;
5965 tDot11fIEExtSuppRates ExtSuppRates;
5966 tDot11fIERSN RSN;
5967 tDot11fIEQBSSLoad QBSSLoad;
5968 tDot11fIEEDCAParamSet EDCAParamSet;
5969 tDot11fIEQOSCapsAp QOSCapsAp;
5970 tDot11fIEAPChannelReport APChannelReport;
5971 tDot11fIERRMEnabledCap RRMEnabledCap;
5972 tDot11fIEMobilityDomain MobilityDomain;
5973 tDot11fIEWPA WPA;
5974 tDot11fIEHTCaps HTCaps;
5975 tDot11fIEHTInfo HTInfo;
5976 tDot11fIEExtChanSwitchAnn ExtChanSwitchAnn;
5977 tDot11fIEWMMInfoAp WMMInfoAp;
5978 tDot11fIEWMMParams WMMParams;
5979 tDot11fIEWMMCaps WMMCaps;
5980 tDot11fIEWAPI WAPI;
5981 tDot11fIECCXVersion CCXVersion;
5982 tDot11fIECCXRadMgmtCap CCXRadMgmtCap;
5983 tDot11fIECCXTrafStrmMet CCXTrafStrmMet;
5984 tDot11fIECCXTxmitPower CCXTxmitPower;
5985 tDot11fIEAirgo Airgo;
5986 tDot11fIEWscBeaconProbeRes WscBeaconProbeRes;
5987 tDot11fIEP2PBeaconProbeRes P2PBeaconProbeRes;
5988} tDot11fBeaconIEs;
5989
5990#define DOT11F_BEACONIES ( 11 )
5991
5992#ifdef __cplusplus
5993extern "C" {
5994#endif /* C++ */
5995
5996tANI_U32 dot11fUnpackBeaconIEs(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeaconIEs *pFrm);
5997tANI_U32 dot11fPackBeaconIEs(tpAniSirGlobal pCtx, tDot11fBeaconIEs *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
5998tANI_U32 dot11fGetPackedBeaconIEsSize(tpAniSirGlobal pCtx, tDot11fBeaconIEs *pFrm, tANI_U32 *pnNeeded);
5999
6000#ifdef __cplusplus
6001} /* End extern "C". */
6002#endif /* C++ */
6003
6004typedef struct sDot11fChannelSwitch{
6005 tDot11fFfCategory Category;
6006 tDot11fFfAction Action;
6007 tDot11fIEChanSwitchAnn ChanSwitchAnn;
6008 tDot11fIEExtChanSwitchAnn ExtChanSwitchAnn;
6009} tDot11fChannelSwitch;
6010
6011#define DOT11F_CHANNELSWITCH ( 12 )
6012
6013#ifdef __cplusplus
6014extern "C" {
6015#endif /* C++ */
6016
6017tANI_U32 dot11fUnpackChannelSwitch(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fChannelSwitch *pFrm);
6018tANI_U32 dot11fPackChannelSwitch(tpAniSirGlobal pCtx, tDot11fChannelSwitch *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6019tANI_U32 dot11fGetPackedChannelSwitchSize(tpAniSirGlobal pCtx, tDot11fChannelSwitch *pFrm, tANI_U32 *pnNeeded);
6020
6021#ifdef __cplusplus
6022} /* End extern "C". */
6023#endif /* C++ */
6024
6025typedef struct sDot11fDeAuth{
6026 tDot11fFfReason Reason;
6027 tDot11fIEP2PDeAuth P2PDeAuth;
6028} tDot11fDeAuth;
6029
6030#define DOT11F_DEAUTH ( 13 )
6031
6032#ifdef __cplusplus
6033extern "C" {
6034#endif /* C++ */
6035
6036tANI_U32 dot11fUnpackDeAuth(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDeAuth *pFrm);
6037tANI_U32 dot11fPackDeAuth(tpAniSirGlobal pCtx, tDot11fDeAuth *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6038tANI_U32 dot11fGetPackedDeAuthSize(tpAniSirGlobal pCtx, tDot11fDeAuth *pFrm, tANI_U32 *pnNeeded);
6039
6040#ifdef __cplusplus
6041} /* End extern "C". */
6042#endif /* C++ */
6043
6044typedef struct sDot11fDelBAInd{
6045 tDot11fFfCategory Category;
6046 tDot11fFfAction Action;
6047 tDot11fFfDelBAParameterSet DelBAParameterSet;
6048 tDot11fFfReason Reason;
6049} tDot11fDelBAInd;
6050
6051#define DOT11F_DELBAIND ( 14 )
6052
6053#ifdef __cplusplus
6054extern "C" {
6055#endif /* C++ */
6056
6057tANI_U32 dot11fUnpackDelBAInd(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDelBAInd *pFrm);
6058tANI_U32 dot11fPackDelBAInd(tpAniSirGlobal pCtx, tDot11fDelBAInd *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6059tANI_U32 dot11fGetPackedDelBAIndSize(tpAniSirGlobal pCtx, tDot11fDelBAInd *pFrm, tANI_U32 *pnNeeded);
6060
6061#ifdef __cplusplus
6062} /* End extern "C". */
6063#endif /* C++ */
6064
6065typedef struct sDot11fDelTS{
6066 tDot11fFfCategory Category;
6067 tDot11fFfAction Action;
6068 tDot11fFfTSInfo TSInfo;
6069 tDot11fFfReason Reason;
6070} tDot11fDelTS;
6071
6072#define DOT11F_DELTS ( 15 )
6073
6074#ifdef __cplusplus
6075extern "C" {
6076#endif /* C++ */
6077
6078tANI_U32 dot11fUnpackDelTS(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDelTS *pFrm);
6079tANI_U32 dot11fPackDelTS(tpAniSirGlobal pCtx, tDot11fDelTS *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6080tANI_U32 dot11fGetPackedDelTSSize(tpAniSirGlobal pCtx, tDot11fDelTS *pFrm, tANI_U32 *pnNeeded);
6081
6082#ifdef __cplusplus
6083} /* End extern "C". */
6084#endif /* C++ */
6085
6086typedef struct sDot11fDeviceDiscoverabilityReq{
6087 tDot11fFfCategory Category;
6088 tDot11fFfAction Action;
6089 tDot11fFfP2POUI P2POUI;
6090 tDot11fFfP2POUISubType P2POUISubType;
6091 tDot11fFfDialogToken DialogToken;
6092 tDot11fIEP2PDeviceDiscoverabilityReq P2PDeviceDiscoverabilityReq;
6093} tDot11fDeviceDiscoverabilityReq;
6094
6095#define DOT11F_DEVICEDISCOVERABILITYREQ ( 16 )
6096
6097#ifdef __cplusplus
6098extern "C" {
6099#endif /* C++ */
6100
6101tANI_U32 dot11fUnpackDeviceDiscoverabilityReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDeviceDiscoverabilityReq *pFrm);
6102tANI_U32 dot11fPackDeviceDiscoverabilityReq(tpAniSirGlobal pCtx, tDot11fDeviceDiscoverabilityReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6103tANI_U32 dot11fGetPackedDeviceDiscoverabilityReqSize(tpAniSirGlobal pCtx, tDot11fDeviceDiscoverabilityReq *pFrm, tANI_U32 *pnNeeded);
6104
6105#ifdef __cplusplus
6106} /* End extern "C". */
6107#endif /* C++ */
6108
6109typedef struct sDot11fDeviceDiscoverabilityRes{
6110 tDot11fFfCategory Category;
6111 tDot11fFfAction Action;
6112 tDot11fFfP2POUI P2POUI;
6113 tDot11fFfP2POUISubType P2POUISubType;
6114 tDot11fFfDialogToken DialogToken;
6115 tDot11fIEP2PDeviceDiscoverabilityRes P2PDeviceDiscoverabilityRes;
6116} tDot11fDeviceDiscoverabilityRes;
6117
6118#define DOT11F_DEVICEDISCOVERABILITYRES ( 17 )
6119
6120#ifdef __cplusplus
6121extern "C" {
6122#endif /* C++ */
6123
6124tANI_U32 dot11fUnpackDeviceDiscoverabilityRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDeviceDiscoverabilityRes *pFrm);
6125tANI_U32 dot11fPackDeviceDiscoverabilityRes(tpAniSirGlobal pCtx, tDot11fDeviceDiscoverabilityRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6126tANI_U32 dot11fGetPackedDeviceDiscoverabilityResSize(tpAniSirGlobal pCtx, tDot11fDeviceDiscoverabilityRes *pFrm, tANI_U32 *pnNeeded);
6127
6128#ifdef __cplusplus
6129} /* End extern "C". */
6130#endif /* C++ */
6131
6132typedef struct sDot11fDisassociation{
6133 tDot11fFfReason Reason;
6134 tDot11fIEP2PDisAssoc P2PDisAssoc;
6135} tDot11fDisassociation;
6136
6137#define DOT11F_DISASSOCIATION ( 18 )
6138
6139#ifdef __cplusplus
6140extern "C" {
6141#endif /* C++ */
6142
6143tANI_U32 dot11fUnpackDisassociation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDisassociation *pFrm);
6144tANI_U32 dot11fPackDisassociation(tpAniSirGlobal pCtx, tDot11fDisassociation *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6145tANI_U32 dot11fGetPackedDisassociationSize(tpAniSirGlobal pCtx, tDot11fDisassociation *pFrm, tANI_U32 *pnNeeded);
6146
6147#ifdef __cplusplus
6148} /* End extern "C". */
6149#endif /* C++ */
6150
6151typedef struct sDot11fGODiscoverabilityReq{
6152 tDot11fFfCategory Category;
6153 tDot11fFfP2POUI P2POUI;
6154 tDot11fFfP2POUISubType P2POUISubType;
6155 tDot11fFfDialogToken DialogToken;
6156} tDot11fGODiscoverabilityReq;
6157
6158#define DOT11F_GODISCOVERABILITYREQ ( 19 )
6159
6160#ifdef __cplusplus
6161extern "C" {
6162#endif /* C++ */
6163
6164tANI_U32 dot11fUnpackGODiscoverabilityReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fGODiscoverabilityReq *pFrm);
6165tANI_U32 dot11fPackGODiscoverabilityReq(tpAniSirGlobal pCtx, tDot11fGODiscoverabilityReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6166tANI_U32 dot11fGetPackedGODiscoverabilityReqSize(tpAniSirGlobal pCtx, tDot11fGODiscoverabilityReq *pFrm, tANI_U32 *pnNeeded);
6167
6168#ifdef __cplusplus
6169} /* End extern "C". */
6170#endif /* C++ */
6171
6172typedef struct sDot11fGONegCnf{
6173 tDot11fFfCategory Category;
6174 tDot11fFfAction Action;
6175 tDot11fFfP2POUI P2POUI;
6176 tDot11fFfP2POUISubType P2POUISubType;
6177 tDot11fFfDialogToken DialogToken;
6178 tDot11fIEP2PGONegCnf P2PGONegCnf;
6179} tDot11fGONegCnf;
6180
6181#define DOT11F_GONEGCNF ( 20 )
6182
6183#ifdef __cplusplus
6184extern "C" {
6185#endif /* C++ */
6186
6187tANI_U32 dot11fUnpackGONegCnf(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fGONegCnf *pFrm);
6188tANI_U32 dot11fPackGONegCnf(tpAniSirGlobal pCtx, tDot11fGONegCnf *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6189tANI_U32 dot11fGetPackedGONegCnfSize(tpAniSirGlobal pCtx, tDot11fGONegCnf *pFrm, tANI_U32 *pnNeeded);
6190
6191#ifdef __cplusplus
6192} /* End extern "C". */
6193#endif /* C++ */
6194
6195typedef struct sDot11fGONegReq{
6196 tDot11fFfCategory Category;
6197 tDot11fFfAction Action;
6198 tDot11fFfP2POUI P2POUI;
6199 tDot11fFfP2POUISubType P2POUISubType;
6200 tDot11fFfDialogToken DialogToken;
6201 tDot11fIEP2PGONegWPS P2PGONegWPS;
6202 tDot11fIEP2PGONegReq P2PGONegReq;
6203} tDot11fGONegReq;
6204
6205#define DOT11F_GONEGREQ ( 21 )
6206
6207#ifdef __cplusplus
6208extern "C" {
6209#endif /* C++ */
6210
6211tANI_U32 dot11fUnpackGONegReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fGONegReq *pFrm);
6212tANI_U32 dot11fPackGONegReq(tpAniSirGlobal pCtx, tDot11fGONegReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6213tANI_U32 dot11fGetPackedGONegReqSize(tpAniSirGlobal pCtx, tDot11fGONegReq *pFrm, tANI_U32 *pnNeeded);
6214
6215#ifdef __cplusplus
6216} /* End extern "C". */
6217#endif /* C++ */
6218
6219typedef struct sDot11fGONegRes{
6220 tDot11fFfCategory Category;
6221 tDot11fFfAction Action;
6222 tDot11fFfP2POUI P2POUI;
6223 tDot11fFfP2POUISubType P2POUISubType;
6224 tDot11fFfDialogToken DialogToken;
6225 tDot11fIEP2PGONegWPS P2PGONegWPS;
6226 tDot11fIEP2PGONegRes P2PGONegRes;
6227} tDot11fGONegRes;
6228
6229#define DOT11F_GONEGRES ( 22 )
6230
6231#ifdef __cplusplus
6232extern "C" {
6233#endif /* C++ */
6234
6235tANI_U32 dot11fUnpackGONegRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fGONegRes *pFrm);
6236tANI_U32 dot11fPackGONegRes(tpAniSirGlobal pCtx, tDot11fGONegRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6237tANI_U32 dot11fGetPackedGONegResSize(tpAniSirGlobal pCtx, tDot11fGONegRes *pFrm, tANI_U32 *pnNeeded);
6238
6239#ifdef __cplusplus
6240} /* End extern "C". */
6241#endif /* C++ */
6242
6243typedef struct sDot11fInvitationReq{
6244 tDot11fFfCategory Category;
6245 tDot11fFfAction Action;
6246 tDot11fFfP2POUI P2POUI;
6247 tDot11fFfP2POUISubType P2POUISubType;
6248 tDot11fFfDialogToken DialogToken;
6249 tDot11fIEP2PInvitationReq P2PInvitationReq;
6250} tDot11fInvitationReq;
6251
6252#define DOT11F_INVITATIONREQ ( 23 )
6253
6254#ifdef __cplusplus
6255extern "C" {
6256#endif /* C++ */
6257
6258tANI_U32 dot11fUnpackInvitationReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fInvitationReq *pFrm);
6259tANI_U32 dot11fPackInvitationReq(tpAniSirGlobal pCtx, tDot11fInvitationReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6260tANI_U32 dot11fGetPackedInvitationReqSize(tpAniSirGlobal pCtx, tDot11fInvitationReq *pFrm, tANI_U32 *pnNeeded);
6261
6262#ifdef __cplusplus
6263} /* End extern "C". */
6264#endif /* C++ */
6265
6266typedef struct sDot11fInvitationRes{
6267 tDot11fFfCategory Category;
6268 tDot11fFfAction Action;
6269 tDot11fFfP2POUI P2POUI;
6270 tDot11fFfP2POUISubType P2POUISubType;
6271 tDot11fFfDialogToken DialogToken;
6272 tDot11fIEP2PInvitationRes P2PInvitationRes;
6273} tDot11fInvitationRes;
6274
6275#define DOT11F_INVITATIONRES ( 24 )
6276
6277#ifdef __cplusplus
6278extern "C" {
6279#endif /* C++ */
6280
6281tANI_U32 dot11fUnpackInvitationRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fInvitationRes *pFrm);
6282tANI_U32 dot11fPackInvitationRes(tpAniSirGlobal pCtx, tDot11fInvitationRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6283tANI_U32 dot11fGetPackedInvitationResSize(tpAniSirGlobal pCtx, tDot11fInvitationRes *pFrm, tANI_U32 *pnNeeded);
6284
6285#ifdef __cplusplus
6286} /* End extern "C". */
6287#endif /* C++ */
6288
6289typedef struct sDot11fLinkMeasurementReport{
6290 tDot11fFfCategory Category;
6291 tDot11fFfAction Action;
6292 tDot11fFfDialogToken DialogToken;
6293 tDot11fFfTPCEleID TPCEleID;
6294 tDot11fFfTPCEleLen TPCEleLen;
6295 tDot11fFfTxPower TxPower;
6296 tDot11fFfLinkMargin LinkMargin;
6297 tDot11fFfRxAntennaId RxAntennaId;
6298 tDot11fFfTxAntennaId TxAntennaId;
6299 tDot11fFfRCPI RCPI;
6300 tDot11fFfRSNI RSNI;
6301} tDot11fLinkMeasurementReport;
6302
6303#define DOT11F_LINKMEASUREMENTREPORT ( 25 )
6304
6305#ifdef __cplusplus
6306extern "C" {
6307#endif /* C++ */
6308
6309tANI_U32 dot11fUnpackLinkMeasurementReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fLinkMeasurementReport *pFrm);
6310tANI_U32 dot11fPackLinkMeasurementReport(tpAniSirGlobal pCtx, tDot11fLinkMeasurementReport *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6311tANI_U32 dot11fGetPackedLinkMeasurementReportSize(tpAniSirGlobal pCtx, tDot11fLinkMeasurementReport *pFrm, tANI_U32 *pnNeeded);
6312
6313#ifdef __cplusplus
6314} /* End extern "C". */
6315#endif /* C++ */
6316
6317typedef struct sDot11fLinkMeasurementRequest{
6318 tDot11fFfCategory Category;
6319 tDot11fFfAction Action;
6320 tDot11fFfDialogToken DialogToken;
6321 tDot11fFfTxPower TxPower;
6322 tDot11fFfMaxTxPower MaxTxPower;
6323} tDot11fLinkMeasurementRequest;
6324
6325#define DOT11F_LINKMEASUREMENTREQUEST ( 26 )
6326
6327#ifdef __cplusplus
6328extern "C" {
6329#endif /* C++ */
6330
6331tANI_U32 dot11fUnpackLinkMeasurementRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fLinkMeasurementRequest *pFrm);
6332tANI_U32 dot11fPackLinkMeasurementRequest(tpAniSirGlobal pCtx, tDot11fLinkMeasurementRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6333tANI_U32 dot11fGetPackedLinkMeasurementRequestSize(tpAniSirGlobal pCtx, tDot11fLinkMeasurementRequest *pFrm, tANI_U32 *pnNeeded);
6334
6335#ifdef __cplusplus
6336} /* End extern "C". */
6337#endif /* C++ */
6338
6339typedef struct sDot11fMeasurementReport{
6340 tDot11fFfCategory Category;
6341 tDot11fFfAction Action;
6342 tDot11fFfDialogToken DialogToken;
6343 tDot11fIEMeasurementReport MeasurementReport;
6344} tDot11fMeasurementReport;
6345
6346#define DOT11F_MEASUREMENTREPORT ( 27 )
6347
6348#ifdef __cplusplus
6349extern "C" {
6350#endif /* C++ */
6351
6352tANI_U32 dot11fUnpackMeasurementReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fMeasurementReport *pFrm);
6353tANI_U32 dot11fPackMeasurementReport(tpAniSirGlobal pCtx, tDot11fMeasurementReport *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6354tANI_U32 dot11fGetPackedMeasurementReportSize(tpAniSirGlobal pCtx, tDot11fMeasurementReport *pFrm, tANI_U32 *pnNeeded);
6355
6356#ifdef __cplusplus
6357} /* End extern "C". */
6358#endif /* C++ */
6359
6360typedef struct sDot11fMeasurementRequest{
6361 tDot11fFfCategory Category;
6362 tDot11fFfAction Action;
6363 tDot11fFfDialogToken DialogToken;
6364 tANI_U16 num_MeasurementRequest;
6365 tDot11fIEMeasurementRequest MeasurementRequest[4];
6366} tDot11fMeasurementRequest;
6367
6368#define DOT11F_MEASUREMENTREQUEST ( 28 )
6369
6370#ifdef __cplusplus
6371extern "C" {
6372#endif /* C++ */
6373
6374tANI_U32 dot11fUnpackMeasurementRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fMeasurementRequest *pFrm);
6375tANI_U32 dot11fPackMeasurementRequest(tpAniSirGlobal pCtx, tDot11fMeasurementRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6376tANI_U32 dot11fGetPackedMeasurementRequestSize(tpAniSirGlobal pCtx, tDot11fMeasurementRequest *pFrm, tANI_U32 *pnNeeded);
6377
6378#ifdef __cplusplus
6379} /* End extern "C". */
6380#endif /* C++ */
6381
6382typedef struct sDot11fNeighborReportRequest{
6383 tDot11fFfCategory Category;
6384 tDot11fFfAction Action;
6385 tDot11fFfDialogToken DialogToken;
6386 tDot11fIESSID SSID;
6387} tDot11fNeighborReportRequest;
6388
6389#define DOT11F_NEIGHBORREPORTREQUEST ( 29 )
6390
6391#ifdef __cplusplus
6392extern "C" {
6393#endif /* C++ */
6394
6395tANI_U32 dot11fUnpackNeighborReportRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fNeighborReportRequest *pFrm);
6396tANI_U32 dot11fPackNeighborReportRequest(tpAniSirGlobal pCtx, tDot11fNeighborReportRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6397tANI_U32 dot11fGetPackedNeighborReportRequestSize(tpAniSirGlobal pCtx, tDot11fNeighborReportRequest *pFrm, tANI_U32 *pnNeeded);
6398
6399#ifdef __cplusplus
6400} /* End extern "C". */
6401#endif /* C++ */
6402
6403typedef struct sDot11fNeighborReportResponse{
6404 tDot11fFfCategory Category;
6405 tDot11fFfAction Action;
6406 tDot11fFfDialogToken DialogToken;
6407 tANI_U16 num_NeighborReport;
6408 tDot11fIENeighborReport NeighborReport[4];
6409} tDot11fNeighborReportResponse;
6410
6411#define DOT11F_NEIGHBORREPORTRESPONSE ( 30 )
6412
6413#ifdef __cplusplus
6414extern "C" {
6415#endif /* C++ */
6416
6417tANI_U32 dot11fUnpackNeighborReportResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fNeighborReportResponse *pFrm);
6418tANI_U32 dot11fPackNeighborReportResponse(tpAniSirGlobal pCtx, tDot11fNeighborReportResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6419tANI_U32 dot11fGetPackedNeighborReportResponseSize(tpAniSirGlobal pCtx, tDot11fNeighborReportResponse *pFrm, tANI_U32 *pnNeeded);
6420
6421#ifdef __cplusplus
6422} /* End extern "C". */
6423#endif /* C++ */
6424
6425typedef struct sDot11fNoticeOfAbs{
6426 tDot11fFfCategory Category;
6427 tDot11fFfP2POUI P2POUI;
6428 tDot11fFfP2POUISubType P2POUISubType;
6429 tDot11fFfDialogToken DialogToken;
6430 tDot11fIEP2PNoticeOfAbsence P2PNoticeOfAbsence;
6431} tDot11fNoticeOfAbs;
6432
6433#define DOT11F_NOTICEOFABS ( 31 )
6434
6435#ifdef __cplusplus
6436extern "C" {
6437#endif /* C++ */
6438
6439tANI_U32 dot11fUnpackNoticeOfAbs(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fNoticeOfAbs *pFrm);
6440tANI_U32 dot11fPackNoticeOfAbs(tpAniSirGlobal pCtx, tDot11fNoticeOfAbs *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6441tANI_U32 dot11fGetPackedNoticeOfAbsSize(tpAniSirGlobal pCtx, tDot11fNoticeOfAbs *pFrm, tANI_U32 *pnNeeded);
6442
6443#ifdef __cplusplus
6444} /* End extern "C". */
6445#endif /* C++ */
6446
6447typedef struct sDot11fPresenceReq{
6448 tDot11fFfCategory Category;
6449 tDot11fFfP2POUI P2POUI;
6450 tDot11fFfP2POUISubType P2POUISubType;
6451 tDot11fFfDialogToken DialogToken;
6452 tDot11fIEP2PNoticeOfAbsence P2PNoticeOfAbsence;
6453} tDot11fPresenceReq;
6454
6455#define DOT11F_PRESENCEREQ ( 32 )
6456
6457#ifdef __cplusplus
6458extern "C" {
6459#endif /* C++ */
6460
6461tANI_U32 dot11fUnpackPresenceReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fPresenceReq *pFrm);
6462tANI_U32 dot11fPackPresenceReq(tpAniSirGlobal pCtx, tDot11fPresenceReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6463tANI_U32 dot11fGetPackedPresenceReqSize(tpAniSirGlobal pCtx, tDot11fPresenceReq *pFrm, tANI_U32 *pnNeeded);
6464
6465#ifdef __cplusplus
6466} /* End extern "C". */
6467#endif /* C++ */
6468
6469typedef struct sDot11fPresenceRes{
6470 tDot11fFfCategory Category;
6471 tDot11fFfP2POUI P2POUI;
6472 tDot11fFfP2POUISubType P2POUISubType;
6473 tDot11fFfDialogToken DialogToken;
6474 tDot11fIEP2PPresenceResponse P2PPresenceResponse;
6475} tDot11fPresenceRes;
6476
6477#define DOT11F_PRESENCERES ( 33 )
6478
6479#ifdef __cplusplus
6480extern "C" {
6481#endif /* C++ */
6482
6483tANI_U32 dot11fUnpackPresenceRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fPresenceRes *pFrm);
6484tANI_U32 dot11fPackPresenceRes(tpAniSirGlobal pCtx, tDot11fPresenceRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6485tANI_U32 dot11fGetPackedPresenceResSize(tpAniSirGlobal pCtx, tDot11fPresenceRes *pFrm, tANI_U32 *pnNeeded);
6486
6487#ifdef __cplusplus
6488} /* End extern "C". */
6489#endif /* C++ */
6490
6491typedef struct sDot11fProbeRequest{
6492 tDot11fIESSID SSID;
6493 tDot11fIESuppRates SuppRates;
6494 tDot11fIERequestedInfo RequestedInfo;
6495 tDot11fIEExtSuppRates ExtSuppRates;
6496 tDot11fIEDSParams DSParams;
6497 tDot11fIEHTCaps HTCaps;
6498 tDot11fIEWscProbeReq WscProbeReq;
6499 tDot11fIEWFATPC WFATPC;
6500 tDot11fIEP2PProbeReq P2PProbeReq;
6501} tDot11fProbeRequest;
6502
6503#define DOT11F_PROBEREQUEST ( 34 )
6504
6505#ifdef __cplusplus
6506extern "C" {
6507#endif /* C++ */
6508
6509tANI_U32 dot11fUnpackProbeRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProbeRequest *pFrm);
6510tANI_U32 dot11fPackProbeRequest(tpAniSirGlobal pCtx, tDot11fProbeRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6511tANI_U32 dot11fGetPackedProbeRequestSize(tpAniSirGlobal pCtx, tDot11fProbeRequest *pFrm, tANI_U32 *pnNeeded);
6512
6513#ifdef __cplusplus
6514} /* End extern "C". */
6515#endif /* C++ */
6516
6517typedef struct sDot11fProbeResponse{
6518 tDot11fFfTimeStamp TimeStamp;
6519 tDot11fFfBeaconInterval BeaconInterval;
6520 tDot11fFfCapabilities Capabilities;
6521 tDot11fIESSID SSID;
6522 tDot11fIESuppRates SuppRates;
6523 tDot11fIEFHParamSet FHParamSet;
6524 tDot11fIEDSParams DSParams;
6525 tDot11fIECFParams CFParams;
6526 tDot11fIEIBSSParams IBSSParams;
6527 tDot11fIECountry Country;
6528 tDot11fIEFHParams FHParams;
6529 tDot11fIEFHPattTable FHPattTable;
6530 tDot11fIEPowerConstraints PowerConstraints;
6531 tDot11fIEChanSwitchAnn ChanSwitchAnn;
6532 tDot11fIEQuiet Quiet;
6533 tDot11fIETPCReport TPCReport;
6534 tDot11fIEERPInfo ERPInfo;
6535 tDot11fIEExtSuppRates ExtSuppRates;
6536 tDot11fIERSN RSN;
6537 tDot11fIEQBSSLoad QBSSLoad;
6538 tDot11fIEEDCAParamSet EDCAParamSet;
6539 tDot11fIERRMEnabledCap RRMEnabledCap;
6540 tDot11fIEAPChannelReport APChannelReport;
6541 tDot11fIEMobilityDomain MobilityDomain;
6542 tDot11fIEWPA WPA;
6543 tDot11fIEHTCaps HTCaps;
6544 tDot11fIEHTInfo HTInfo;
6545 tDot11fIEExtChanSwitchAnn ExtChanSwitchAnn;
6546 tDot11fIEWMMInfoAp WMMInfoAp;
6547 tDot11fIEWMMParams WMMParams;
6548 tDot11fIEWMMCaps WMMCaps;
6549 tDot11fIEWAPI WAPI;
6550 tDot11fIECCXRadMgmtCap CCXRadMgmtCap;
6551 tDot11fIECCXTrafStrmMet CCXTrafStrmMet;
6552 tDot11fIECCXTxmitPower CCXTxmitPower;
6553 tDot11fIEAirgo Airgo;
6554 tDot11fIEWscProbeRes WscProbeRes;
6555 tDot11fIEP2PProbeRes P2PProbeRes;
6556} tDot11fProbeResponse;
6557
6558#define DOT11F_PROBERESPONSE ( 35 )
6559
6560#ifdef __cplusplus
6561extern "C" {
6562#endif /* C++ */
6563
6564tANI_U32 dot11fUnpackProbeResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProbeResponse *pFrm);
6565tANI_U32 dot11fPackProbeResponse(tpAniSirGlobal pCtx, tDot11fProbeResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6566tANI_U32 dot11fGetPackedProbeResponseSize(tpAniSirGlobal pCtx, tDot11fProbeResponse *pFrm, tANI_U32 *pnNeeded);
6567
6568#ifdef __cplusplus
6569} /* End extern "C". */
6570#endif /* C++ */
6571
6572typedef struct sDot11fProvisionDiscoveryReq{
6573 tDot11fFfCategory Category;
6574 tDot11fFfAction Action;
6575 tDot11fFfP2POUI P2POUI;
6576 tDot11fFfP2POUISubType P2POUISubType;
6577 tDot11fFfDialogToken DialogToken;
6578 tDot11fIEP2PProvisionDiscoveryReq P2PProvisionDiscoveryReq;
6579} tDot11fProvisionDiscoveryReq;
6580
6581#define DOT11F_PROVISIONDISCOVERYREQ ( 36 )
6582
6583#ifdef __cplusplus
6584extern "C" {
6585#endif /* C++ */
6586
6587tANI_U32 dot11fUnpackProvisionDiscoveryReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProvisionDiscoveryReq *pFrm);
6588tANI_U32 dot11fPackProvisionDiscoveryReq(tpAniSirGlobal pCtx, tDot11fProvisionDiscoveryReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6589tANI_U32 dot11fGetPackedProvisionDiscoveryReqSize(tpAniSirGlobal pCtx, tDot11fProvisionDiscoveryReq *pFrm, tANI_U32 *pnNeeded);
6590
6591#ifdef __cplusplus
6592} /* End extern "C". */
6593#endif /* C++ */
6594
6595typedef struct sDot11fProvisionDiscoveryRes{
6596 tDot11fFfCategory Category;
6597 tDot11fFfAction Action;
6598 tDot11fFfP2POUI P2POUI;
6599 tDot11fFfP2POUISubType P2POUISubType;
6600 tDot11fFfDialogToken DialogToken;
6601 tDot11fIEP2PWSCProvisionDiscoveryRes P2PWSCProvisionDiscoveryRes;
6602} tDot11fProvisionDiscoveryRes;
6603
6604#define DOT11F_PROVISIONDISCOVERYRES ( 37 )
6605
6606#ifdef __cplusplus
6607extern "C" {
6608#endif /* C++ */
6609
6610tANI_U32 dot11fUnpackProvisionDiscoveryRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProvisionDiscoveryRes *pFrm);
6611tANI_U32 dot11fPackProvisionDiscoveryRes(tpAniSirGlobal pCtx, tDot11fProvisionDiscoveryRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6612tANI_U32 dot11fGetPackedProvisionDiscoveryResSize(tpAniSirGlobal pCtx, tDot11fProvisionDiscoveryRes *pFrm, tANI_U32 *pnNeeded);
6613
6614#ifdef __cplusplus
6615} /* End extern "C". */
6616#endif /* C++ */
6617
6618typedef struct sDot11fRadioMeasurementReport{
6619 tDot11fFfCategory Category;
6620 tDot11fFfAction Action;
6621 tDot11fFfDialogToken DialogToken;
6622 tANI_U16 num_MeasurementReport;
6623 tDot11fIEMeasurementReport MeasurementReport[4];
6624} tDot11fRadioMeasurementReport;
6625
6626#define DOT11F_RADIOMEASUREMENTREPORT ( 38 )
6627
6628#ifdef __cplusplus
6629extern "C" {
6630#endif /* C++ */
6631
6632tANI_U32 dot11fUnpackRadioMeasurementReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fRadioMeasurementReport *pFrm);
6633tANI_U32 dot11fPackRadioMeasurementReport(tpAniSirGlobal pCtx, tDot11fRadioMeasurementReport *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6634tANI_U32 dot11fGetPackedRadioMeasurementReportSize(tpAniSirGlobal pCtx, tDot11fRadioMeasurementReport *pFrm, tANI_U32 *pnNeeded);
6635
6636#ifdef __cplusplus
6637} /* End extern "C". */
6638#endif /* C++ */
6639
6640typedef struct sDot11fRadioMeasurementRequest{
6641 tDot11fFfCategory Category;
6642 tDot11fFfAction Action;
6643 tDot11fFfDialogToken DialogToken;
6644 tDot11fFfNumOfRepetitions NumOfRepetitions;
6645 tANI_U16 num_MeasurementRequest;
6646 tDot11fIEMeasurementRequest MeasurementRequest[2];
6647} tDot11fRadioMeasurementRequest;
6648
6649#define DOT11F_RADIOMEASUREMENTREQUEST ( 39 )
6650
6651#ifdef __cplusplus
6652extern "C" {
6653#endif /* C++ */
6654
6655tANI_U32 dot11fUnpackRadioMeasurementRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fRadioMeasurementRequest *pFrm);
6656tANI_U32 dot11fPackRadioMeasurementRequest(tpAniSirGlobal pCtx, tDot11fRadioMeasurementRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6657tANI_U32 dot11fGetPackedRadioMeasurementRequestSize(tpAniSirGlobal pCtx, tDot11fRadioMeasurementRequest *pFrm, tANI_U32 *pnNeeded);
6658
6659#ifdef __cplusplus
6660} /* End extern "C". */
6661#endif /* C++ */
6662
6663typedef struct sDot11fReAssocRequest{
6664 tDot11fFfCapabilities Capabilities;
6665 tDot11fFfListenInterval ListenInterval;
6666 tDot11fFfCurrentAPAddress CurrentAPAddress;
6667 tDot11fIESSID SSID;
6668 tDot11fIESuppRates SuppRates;
6669 tDot11fIEExtSuppRates ExtSuppRates;
6670 tDot11fIEPowerCaps PowerCaps;
6671 tDot11fIESuppChannels SuppChannels;
6672 tDot11fIERSNOpaque RSNOpaque;
6673 tDot11fIEQOSCapsStation QOSCapsStation;
6674 tDot11fIERRMEnabledCap RRMEnabledCap;
6675 tDot11fIEMobilityDomain MobilityDomain;
6676 tDot11fIEFTInfo FTInfo;
6677 tANI_U16 num_RICDataDesc;
6678 tDot11fIERICDataDesc RICDataDesc[2];
6679 tDot11fIEWPAOpaque WPAOpaque;
6680 tDot11fIEHTCaps HTCaps;
6681 tDot11fIEWMMCaps WMMCaps;
6682 tDot11fIEWMMInfoStation WMMInfoStation;
6683 tDot11fIEAirgo Airgo;
6684 tDot11fIEWscIEOpaque WscIEOpaque;
6685 tDot11fIEWAPIOpaque WAPIOpaque;
6686 tDot11fIECCXRadMgmtCap CCXRadMgmtCap;
6687 tDot11fIECCXVersion CCXVersion;
6688 tDot11fIECCXCckmOpaque CCXCckmOpaque;
6689 tANI_U16 num_WMMTSPEC;
6690 tDot11fIEWMMTSPEC WMMTSPEC[4];
6691 tDot11fIECCXTrafStrmRateSet CCXTrafStrmRateSet;
6692 tDot11fIEP2PIEOpaque P2PIEOpaque;
6693} tDot11fReAssocRequest;
6694
6695#define DOT11F_REASSOCREQUEST ( 40 )
6696
6697#ifdef __cplusplus
6698extern "C" {
6699#endif /* C++ */
6700
6701tANI_U32 dot11fUnpackReAssocRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fReAssocRequest *pFrm);
6702tANI_U32 dot11fPackReAssocRequest(tpAniSirGlobal pCtx, tDot11fReAssocRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6703tANI_U32 dot11fGetPackedReAssocRequestSize(tpAniSirGlobal pCtx, tDot11fReAssocRequest *pFrm, tANI_U32 *pnNeeded);
6704
6705#ifdef __cplusplus
6706} /* End extern "C". */
6707#endif /* C++ */
6708
6709typedef struct sDot11fReAssocResponse{
6710 tDot11fFfCapabilities Capabilities;
6711 tDot11fFfStatus Status;
6712 tDot11fFfAID AID;
6713 tDot11fIESuppRates SuppRates;
6714 tDot11fIEExtSuppRates ExtSuppRates;
6715 tDot11fIEEDCAParamSet EDCAParamSet;
6716 tDot11fIERCPIIE RCPIIE;
6717 tDot11fIERSNIIE RSNIIE;
6718 tDot11fIERRMEnabledCap RRMEnabledCap;
6719 tDot11fIERSNOpaque RSNOpaque;
6720 tDot11fIEMobilityDomain MobilityDomain;
6721 tDot11fIEFTInfo FTInfo;
6722 tANI_U16 num_RICDataDesc;
6723 tDot11fIERICDataDesc RICDataDesc[2];
6724 tDot11fIEWPA WPA;
6725 tDot11fIEHTCaps HTCaps;
6726 tDot11fIEHTInfo HTInfo;
6727 tDot11fIEWMMParams WMMParams;
6728 tDot11fIECCXRadMgmtCap CCXRadMgmtCap;
6729 tDot11fIECCXTrafStrmMet CCXTrafStrmMet;
6730 tDot11fIECCXTxmitPower CCXTxmitPower;
6731 tANI_U16 num_WMMTSPEC;
6732 tDot11fIEWMMTSPEC WMMTSPEC[4];
6733 tDot11fIECCXTrafStrmRateSet CCXTrafStrmRateSet;
6734 tDot11fIEAirgo Airgo;
6735 tDot11fIEWscReassocRes WscReassocRes;
6736 tDot11fIEP2PAssocRes P2PAssocRes;
6737} tDot11fReAssocResponse;
6738
6739#define DOT11F_REASSOCRESPONSE ( 41 )
6740
6741#ifdef __cplusplus
6742extern "C" {
6743#endif /* C++ */
6744
6745tANI_U32 dot11fUnpackReAssocResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fReAssocResponse *pFrm);
6746tANI_U32 dot11fPackReAssocResponse(tpAniSirGlobal pCtx, tDot11fReAssocResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6747tANI_U32 dot11fGetPackedReAssocResponseSize(tpAniSirGlobal pCtx, tDot11fReAssocResponse *pFrm, tANI_U32 *pnNeeded);
6748
6749#ifdef __cplusplus
6750} /* End extern "C". */
6751#endif /* C++ */
6752
6753typedef struct sDot11fSMPowerSave{
6754 tDot11fFfCategory Category;
6755 tDot11fFfAction Action;
6756 tDot11fFfSMPowerModeSet SMPowerModeSet;
6757} tDot11fSMPowerSave;
6758
6759#define DOT11F_SMPOWERSAVE ( 42 )
6760
6761#ifdef __cplusplus
6762extern "C" {
6763#endif /* C++ */
6764
6765tANI_U32 dot11fUnpackSMPowerSave(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fSMPowerSave *pFrm);
6766tANI_U32 dot11fPackSMPowerSave(tpAniSirGlobal pCtx, tDot11fSMPowerSave *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6767tANI_U32 dot11fGetPackedSMPowerSaveSize(tpAniSirGlobal pCtx, tDot11fSMPowerSave *pFrm, tANI_U32 *pnNeeded);
6768
6769#ifdef __cplusplus
6770} /* End extern "C". */
6771#endif /* C++ */
6772
6773typedef struct sDot11fTPCReport{
6774 tDot11fFfCategory Category;
6775 tDot11fFfAction Action;
6776 tDot11fFfDialogToken DialogToken;
6777 tDot11fIETPCReport TPCReport;
6778} tDot11fTPCReport;
6779
6780#define DOT11F_TPCREPORT ( 43 )
6781
6782#ifdef __cplusplus
6783extern "C" {
6784#endif /* C++ */
6785
6786tANI_U32 dot11fUnpackTPCReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTPCReport *pFrm);
6787tANI_U32 dot11fPackTPCReport(tpAniSirGlobal pCtx, tDot11fTPCReport *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6788tANI_U32 dot11fGetPackedTPCReportSize(tpAniSirGlobal pCtx, tDot11fTPCReport *pFrm, tANI_U32 *pnNeeded);
6789
6790#ifdef __cplusplus
6791} /* End extern "C". */
6792#endif /* C++ */
6793
6794typedef struct sDot11fTPCRequest{
6795 tDot11fFfCategory Category;
6796 tDot11fFfAction Action;
6797 tDot11fFfDialogToken DialogToken;
6798 tDot11fIETPCRequest TPCRequest;
6799} tDot11fTPCRequest;
6800
6801#define DOT11F_TPCREQUEST ( 44 )
6802
6803#ifdef __cplusplus
6804extern "C" {
6805#endif /* C++ */
6806
6807tANI_U32 dot11fUnpackTPCRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTPCRequest *pFrm);
6808tANI_U32 dot11fPackTPCRequest(tpAniSirGlobal pCtx, tDot11fTPCRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6809tANI_U32 dot11fGetPackedTPCRequestSize(tpAniSirGlobal pCtx, tDot11fTPCRequest *pFrm, tANI_U32 *pnNeeded);
6810
6811#ifdef __cplusplus
6812} /* End extern "C". */
6813#endif /* C++ */
6814
6815typedef struct sDot11fWMMAddTSRequest{
6816 tDot11fFfCategory Category;
6817 tDot11fFfAction Action;
6818 tDot11fFfDialogToken DialogToken;
6819 tDot11fFfStatusCode StatusCode;
6820 tDot11fIEWMMTSPEC WMMTSPEC;
6821 tDot11fIECCXTrafStrmRateSet CCXTrafStrmRateSet;
6822} tDot11fWMMAddTSRequest;
6823
6824#define DOT11F_WMMADDTSREQUEST ( 45 )
6825
6826#ifdef __cplusplus
6827extern "C" {
6828#endif /* C++ */
6829
6830tANI_U32 dot11fUnpackWMMAddTSRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fWMMAddTSRequest *pFrm);
6831tANI_U32 dot11fPackWMMAddTSRequest(tpAniSirGlobal pCtx, tDot11fWMMAddTSRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6832tANI_U32 dot11fGetPackedWMMAddTSRequestSize(tpAniSirGlobal pCtx, tDot11fWMMAddTSRequest *pFrm, tANI_U32 *pnNeeded);
6833
6834#ifdef __cplusplus
6835} /* End extern "C". */
6836#endif /* C++ */
6837
6838typedef struct sDot11fWMMAddTSResponse{
6839 tDot11fFfCategory Category;
6840 tDot11fFfAction Action;
6841 tDot11fFfDialogToken DialogToken;
6842 tDot11fFfStatusCode StatusCode;
6843 tDot11fIEWMMTSPEC WMMTSPEC;
6844 tDot11fIECCXTrafStrmMet CCXTrafStrmMet;
6845} tDot11fWMMAddTSResponse;
6846
6847#define DOT11F_WMMADDTSRESPONSE ( 46 )
6848
6849#ifdef __cplusplus
6850extern "C" {
6851#endif /* C++ */
6852
6853tANI_U32 dot11fUnpackWMMAddTSResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fWMMAddTSResponse *pFrm);
6854tANI_U32 dot11fPackWMMAddTSResponse(tpAniSirGlobal pCtx, tDot11fWMMAddTSResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6855tANI_U32 dot11fGetPackedWMMAddTSResponseSize(tpAniSirGlobal pCtx, tDot11fWMMAddTSResponse *pFrm, tANI_U32 *pnNeeded);
6856
6857#ifdef __cplusplus
6858} /* End extern "C". */
6859#endif /* C++ */
6860
6861typedef struct sDot11fWMMDelTS{
6862 tDot11fFfCategory Category;
6863 tDot11fFfAction Action;
6864 tDot11fFfDialogToken DialogToken;
6865 tDot11fFfStatusCode StatusCode;
6866 tDot11fIEWMMTSPEC WMMTSPEC;
6867} tDot11fWMMDelTS;
6868
6869#define DOT11F_WMMDELTS ( 47 )
6870
6871#ifdef __cplusplus
6872extern "C" {
6873#endif /* C++ */
6874
6875tANI_U32 dot11fUnpackWMMDelTS(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fWMMDelTS *pFrm);
6876tANI_U32 dot11fPackWMMDelTS(tpAniSirGlobal pCtx, tDot11fWMMDelTS *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
6877tANI_U32 dot11fGetPackedWMMDelTSSize(tpAniSirGlobal pCtx, tDot11fWMMDelTS *pFrm, tANI_U32 *pnNeeded);
6878
6879#ifdef __cplusplus
6880} /* End extern "C". */
6881#endif /* C++ */
6882
6883#endif /* DOT11F_H */