blob: 2b2317d896f6d8e7e3b993679bcfebf5b9b39a78 [file] [log] [blame]
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001/*
Abhishek Singh7dcb85b2017-12-27 15:15:01 +05302 * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003 *
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all
7 * copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
17 */
18
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080019#ifndef DOT11F_H
20#define DOT11F_H
21/*
22 * \file dot11f.h
23 *
24 * \brief Structures, function prototypes & definitions
25 * for working with 802.11 Frames
26 *
27 *
28 * This file was automatically generated by 'framesc'
Vignesh Viswanathan7813a3d2018-08-27 19:09:00 +053029 * Mon Aug 27 19:08:28 2018 from the following file(s):
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080030 *
31 * dot11f.frms
32 *
33 * PLEASE DON'T EDIT THIS FILE BY HAND!
34 *
35 * Instead, please update the input files & re-run
36 * 'framesc' For more information on 'framesc' & the
37 * frames language, run 'framesc --help'.
38 *
39 */
40
41typedef uint32_t tDOT11F_U64[2];
42
43#if defined (_MSC_VER)
44#pragma warning (disable:4214) /* nonstandard extension used */
45#endif /* Microsoft C/C++ bit field types other than int */
46
Naveen Rawat1ade9a82018-01-19 14:57:23 -080047#if !defined __must_check
48#define __must_check
49#endif
50
Naveen Rawat69623ef2018-04-27 16:11:01 -070051#if !defined unlikely
52#define unlikely(x) (x)
53#endif
54
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080055/*
56 * Frames Return Codes:
57 *
58 * Success is indicated by a return value of zero. Failure is indicated
59 * by the presence of the high bit. Warnings encountered in the course
60 * of a successful parse are indicated by various bits in the lower 31
61 * being turned on.
62 *
63 * For instance, a return value of 0x0000000a would indicate that the
64 * parse succeeded, but that a mandatory IE wasn't present, and some IE
65 * was found to be corrupt.
66 *
67 *
68 */
69
70#define DOT11F_PARSE_SUCCESS (0x00000000)
71#define DOT11F_UNKNOWN_IES (0x00000001)
72#define DOT11F_MANDATORY_IE_MISSING (0x00000002)
73#define DOT11F_INCOMPLETE_IE (0x00000004)
74#define DOT11F_SKIPPED_BAD_IE (0x00000008)
75#define DOT11F_LAST_IE_TOO_LONG (0x00000010)
76#define DOT11F_DUPLICATE_IE (0x00000020)
77#define DOT11F_BAD_FIXED_VALUE (0x00000040)
78#define DOT11F_INCOMPLETE_TLV (0x00000080)
79#define DOT11F_INVALID_TLV_LENGTH (0x00000100)
80#define DOT11F_SKIPPED_BAD_TLV (0x00000200)
81#define DOT11F_UNKNOWN_TLVS (0x00000400)
82#define DOT11F_LAST_TLV_TOO_LONG (0x00000800)
Naveen Rawat1ade9a82018-01-19 14:57:23 -080083#define DOT11F_MANDATORY_TLV_MISSING (0x00001000)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080084#define DOT11F_INTERNAL_ERROR (0x10000001)
85#define DOT11F_MISSING_FIXED_FIELD (0x10000002)
86#define DOT11F_BAD_INPUT_BUFFER (0x10000003)
87#define DOT11F_BAD_OUTPUT_BUFFER (0x10000004)
88#define DOT11F_BUFFER_OVERFLOW (0x10000005)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080089#define DOT11F_FAILED(code) ((code) & 0x10000000)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080090#define DOT11F_SUCCEEDED(code) ((code) == 0)
Naveen Rawat9ff3e242017-06-09 14:25:45 -070091#define DOT11F_WARNED(code) (!DOT11F_SUCCEEDED(code) && !DOT11F_FAILED(code))
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080092
93/*********************************************************************
94 * Fixed Fields *
95 ********************************************************************/
96
97typedef struct sDot11fFfAID {
98 uint16_t associd;
99} tDot11fFfAID;
100
101#define DOT11F_FF_AID_LEN (2)
102
103void dot11f_unpack_ff_AID(tpAniSirGlobal, uint8_t *, tDot11fFfAID *);
104
105void dot11f_pack_ff_aid(tpAniSirGlobal, tDot11fFfAID *, uint8_t *);
106
107typedef struct sDot11fFfAction {
108 uint8_t action;
109} tDot11fFfAction;
110
111#define DOT11F_FF_ACTION_LEN (1)
112
113void dot11f_unpack_ff_action(tpAniSirGlobal, uint8_t *, tDot11fFfAction *);
114
115void dot11f_pack_ff_action(tpAniSirGlobal, tDot11fFfAction *, uint8_t *);
116
117typedef struct sDot11fFfAuthAlgo {
118 uint16_t algo;
119} tDot11fFfAuthAlgo;
120
121#define DOT11F_FF_AUTHALGO_LEN (2)
122
123void dot11f_unpack_ff_AuthAlgo(tpAniSirGlobal, uint8_t *,
124 tDot11fFfAuthAlgo *);
125
126void dot11f_pack_ff_auth_algo(tpAniSirGlobal, tDot11fFfAuthAlgo *, uint8_t *);
127
128typedef struct sDot11fFfAuthSeqNo {
129 uint16_t no;
130} tDot11fFfAuthSeqNo;
131
132#define DOT11F_FF_AUTHSEQNO_LEN (2)
133
134void dot11f_unpack_ff_AuthSeqNo(tpAniSirGlobal, uint8_t *,
135 tDot11fFfAuthSeqNo *);
136
137void dot11f_pack_ff_auth_seq_no(tpAniSirGlobal, tDot11fFfAuthSeqNo *,
138 uint8_t *);
139
140typedef struct sDot11fFfBeaconInterval {
141 uint16_t interval;
142} tDot11fFfBeaconInterval;
143
144#define DOT11F_FF_BEACONINTERVAL_LEN (2)
145
146void dot11f_unpack_ff_BeaconInterval(tpAniSirGlobal, uint8_t *,
147 tDot11fFfBeaconInterval *);
148
149void dot11f_pack_ff_beacon_interval(tpAniSirGlobal, tDot11fFfBeaconInterval *,
150 uint8_t *);
151
152typedef struct sDot11fFfCapabilities {
153 uint16_t ess:1;
154 uint16_t ibss:1;
155 uint16_t cfPollable:1;
156 uint16_t cfPollReq:1;
157 uint16_t privacy:1;
158 uint16_t shortPreamble:1;
159 uint16_t pbcc:1;
160 uint16_t channelAgility:1;
161 uint16_t spectrumMgt:1;
162 uint16_t qos:1;
163 uint16_t shortSlotTime:1;
164 uint16_t apsd:1;
165 uint16_t rrm:1;
166 uint16_t dsssOfdm:1;
167 uint16_t delayedBA:1;
168 uint16_t immediateBA:1;
169} tDot11fFfCapabilities;
170
171#define DOT11F_FF_CAPABILITIES_LEN (2)
172
173void dot11f_unpack_ff_capabilities(tpAniSirGlobal, uint8_t *,
174 tDot11fFfCapabilities *);
175
176void dot11f_pack_ff_capabilities(tpAniSirGlobal, tDot11fFfCapabilities *,
177 uint8_t *);
178
179#define CAPABILITIES_ESS_OFFSET 0
180#define CAPABILITIES_ESS_WIDTH 1
181#define CAPABILITIES_IBSS_OFFSET 1
182#define CAPABILITIES_IBSS_WIDTH 1
183#define CAPABILITIES_CFPOLLABLE_OFFSET 2
184#define CAPABILITIES_CFPOLLABLE_WIDTH 1
185#define CAPABILITIES_CFPOLLREQ_OFFSET 3
186#define CAPABILITIES_CFPOLLREQ_WIDTH 1
187#define CAPABILITIES_PRIVACY_OFFSET 4
188#define CAPABILITIES_PRIVACY_WIDTH 1
189#define CAPABILITIES_SHORTPREAMBLE_OFFSET 5
190#define CAPABILITIES_SHORTPREAMBLE_WIDTH 1
191#define CAPABILITIES_PBCC_OFFSET 6
192#define CAPABILITIES_PBCC_WIDTH 1
193#define CAPABILITIES_CHANNELAGILITY_OFFSET 7
194#define CAPABILITIES_CHANNELAGILITY_WIDTH 1
195#define CAPABILITIES_SPECTRUMMGT_OFFSET 8
196#define CAPABILITIES_SPECTRUMMGT_WIDTH 1
197#define CAPABILITIES_QOS_OFFSET 9
198#define CAPABILITIES_QOS_WIDTH 1
199#define CAPABILITIES_SHORTSLOTTIME_OFFSET 10
200#define CAPABILITIES_SHORTSLOTTIME_WIDTH 1
201#define CAPABILITIES_APSD_OFFSET 11
202#define CAPABILITIES_APSD_WIDTH 1
203#define CAPABILITIES_RRM_OFFSET 12
204#define CAPABILITIES_RRM_WIDTH 1
205#define CAPABILITIES_DSSSOFDM_OFFSET 13
206#define CAPABILITIES_DSSSOFDM_WIDTH 1
207#define CAPABILITIES_DELAYEDBA_OFFSET 14
208#define CAPABILITIES_DELAYEDBA_WIDTH 1
209#define CAPABILITIES_IMMEDIATEBA_OFFSET 15
210#define CAPABILITIES_IMMEDIATEBA_WIDTH 1
211
212typedef struct sDot11fFfCategory {
213 uint8_t category;
214} tDot11fFfCategory;
215
216#define DOT11F_FF_CATEGORY_LEN (1)
217
218void dot11f_unpack_ff_category(tpAniSirGlobal, uint8_t *,
219 tDot11fFfCategory *);
220
221void dot11f_pack_ff_category(tpAniSirGlobal, tDot11fFfCategory *, uint8_t *);
222
223typedef struct sDot11fFfCurrentAPAddress {
224 uint8_t mac[6];
225} tDot11fFfCurrentAPAddress;
226
227#define DOT11F_FF_CURRENTAPADDRESS_LEN (6)
228
229void dot11f_unpack_ff_current_ap_address(tpAniSirGlobal, uint8_t *,
230 tDot11fFfCurrentAPAddress *);
231
232void dot11f_pack_ff_current_ap_address(tpAniSirGlobal,
233 tDot11fFfCurrentAPAddress *,
234 uint8_t *);
235
236
237typedef struct sDot11fFfDialogToken {
238 uint8_t token;
239} tDot11fFfDialogToken;
240
241#define DOT11F_FF_DIALOGTOKEN_LEN (1)
242
243void dot11f_unpack_ff_dialog_token(tpAniSirGlobal, uint8_t *,
244 tDot11fFfDialogToken *);
245
246void dot11f_pack_ff_dialog_token(tpAniSirGlobal, tDot11fFfDialogToken *,
247 uint8_t *);
248
249typedef struct sDot11fFfLinkMargin {
250 uint8_t linkMargin;
251} tDot11fFfLinkMargin;
252
253#define DOT11F_FF_LINKMARGIN_LEN (1)
254
255void dot11f_unpack_ff_link_margin(tpAniSirGlobal, uint8_t *,
256 tDot11fFfLinkMargin *);
257
258void dot11f_pack_ff_link_margin(tpAniSirGlobal, tDot11fFfLinkMargin *,
259 uint8_t *);
260
261typedef struct sDot11fFfListenInterval {
262 uint16_t interval;
263} tDot11fFfListenInterval;
264
265#define DOT11F_FF_LISTENINTERVAL_LEN (2)
266
267void dot11f_unpack_ff_ListenInterval(tpAniSirGlobal, uint8_t *,
268 tDot11fFfListenInterval *);
269
270void dot11f_pack_ff_listen_interval(tpAniSirGlobal, tDot11fFfListenInterval *,
271 uint8_t *);
272
273typedef struct sDot11fFfMaxTxPower {
274 uint8_t maxTxPower;
275} tDot11fFfMaxTxPower;
276
277#define DOT11F_FF_MAXTXPOWER_LEN (1)
278
279void dot11f_unpack_ff_max_tx_power(tpAniSirGlobal, uint8_t *,
280 tDot11fFfMaxTxPower *);
281
282void dot11f_pack_ff_max_tx_power(tpAniSirGlobal, tDot11fFfMaxTxPower *,
283 uint8_t *);
284
285typedef struct sDot11fFfNumOfRepetitions {
286 uint16_t repetitions;
287} tDot11fFfNumOfRepetitions;
288
289#define DOT11F_FF_NUMOFREPETITIONS_LEN (2)
290
291void dot11f_unpack_ff_num_of_repetitions(tpAniSirGlobal, uint8_t *,
292 tDot11fFfNumOfRepetitions *);
293
294void dot11f_pack_ff_num_of_repetitions(tpAniSirGlobal,
295 tDot11fFfNumOfRepetitions *,
296 uint8_t *);
297
298
299typedef struct sDot11fFfOperatingMode {
300 uint8_t chanWidth:2;
301 uint8_t reserved:2;
302 uint8_t rxNSS:3;
303 uint8_t rxNSSType:1;
304} tDot11fFfOperatingMode;
305
306#define DOT11F_FF_OPERATINGMODE_LEN (1)
307
308void dot11f_unpack_ff_operating_mode(tpAniSirGlobal, uint8_t *,
309 tDot11fFfOperatingMode *);
310
311void dot11f_pack_ff_operating_mode(tpAniSirGlobal, tDot11fFfOperatingMode *,
312 uint8_t *);
313
314#define OPERATINGMODE_CHANWIDTH_OFFSET 0
315#define OPERATINGMODE_CHANWIDTH_WIDTH 2
316#define OPERATINGMODE_RESERVED_OFFSET 2
317#define OPERATINGMODE_RESERVED_WIDTH 2
318#define OPERATINGMODE_RXNSS_OFFSET 4
319#define OPERATINGMODE_RXNSS_WIDTH 3
320#define OPERATINGMODE_RXNSSTYPE_OFFSET 7
321#define OPERATINGMODE_RXNSSTYPE_WIDTH 1
322
323typedef struct sDot11fFfRCPI {
324 uint8_t rcpi;
325} tDot11fFfRCPI;
326
327#define DOT11F_FF_RCPI_LEN (1)
328
329void dot11f_unpack_ff_rcpi(tpAniSirGlobal, uint8_t *, tDot11fFfRCPI *);
330
331void dot11f_pack_ff_rcpi(tpAniSirGlobal, tDot11fFfRCPI *, uint8_t *);
332
333typedef struct sDot11fFfRSNI {
334 uint8_t rsni;
335} tDot11fFfRSNI;
336
337#define DOT11F_FF_RSNI_LEN (1)
338
339void dot11f_unpack_ff_rsni(tpAniSirGlobal, uint8_t *, tDot11fFfRSNI *);
340
341void dot11f_pack_ff_rsni(tpAniSirGlobal, tDot11fFfRSNI *, uint8_t *);
342
343typedef struct sDot11fFfReason {
344 uint16_t code;
345} tDot11fFfReason;
346
347#define DOT11F_FF_REASON_LEN (2)
348
349void dot11f_unpack_ff_Reason(tpAniSirGlobal, uint8_t *, tDot11fFfReason *);
350
351void dot11f_pack_ff_reason(tpAniSirGlobal, tDot11fFfReason *, uint8_t *);
352
353typedef struct sDot11fFfRxAntennaId {
354 uint8_t antennaId;
355} tDot11fFfRxAntennaId;
356
357#define DOT11F_FF_RXANTENNAID_LEN (1)
358
359void dot11f_unpack_ff_rx_antenna_id(tpAniSirGlobal, uint8_t *,
360 tDot11fFfRxAntennaId *);
361
362void dot11f_pack_ff_rx_antenna_id(tpAniSirGlobal, tDot11fFfRxAntennaId *,
363 uint8_t *);
364
365typedef struct sDot11fFfSMPowerModeSet {
366 uint8_t PowerSave_En:1;
367 uint8_t Mode:1;
368 uint8_t reserved:6;
369} tDot11fFfSMPowerModeSet;
370
371#define DOT11F_FF_SMPOWERMODESET_LEN (1)
372
373void dot11f_unpack_ff_sm_power_mode_set(tpAniSirGlobal, uint8_t *,
374 tDot11fFfSMPowerModeSet *);
375
376void dot11f_pack_ff_sm_power_mode_set(tpAniSirGlobal, tDot11fFfSMPowerModeSet *,
377 uint8_t *);
378
379#define SMPOWERMODESET_POWERSAVE_EN_OFFSET 0
380#define SMPOWERMODESET_POWERSAVE_EN_WIDTH 1
381#define SMPOWERMODESET_MODE_OFFSET 1
382#define SMPOWERMODESET_MODE_WIDTH 1
383#define SMPOWERMODESET_RESERVED_OFFSET 2
384#define SMPOWERMODESET_RESERVED_WIDTH 6
385
386typedef struct sDot11fFfStatus {
387 uint16_t status;
388} tDot11fFfStatus;
389
390#define DOT11F_FF_STATUS_LEN (2)
391
392void dot11f_unpack_ff_Status(tpAniSirGlobal, uint8_t *, tDot11fFfStatus *);
393
394void dot11f_pack_ff_status(tpAniSirGlobal, tDot11fFfStatus *, uint8_t *);
395
396typedef struct sDot11fFfStatusCode {
397 uint8_t statusCode;
398} tDot11fFfStatusCode;
399
400#define DOT11F_FF_STATUSCODE_LEN (1)
401
402void dot11f_unpack_ff_status_code(tpAniSirGlobal, uint8_t *,
403 tDot11fFfStatusCode *);
404
405void dot11f_pack_ff_status_code(tpAniSirGlobal, tDot11fFfStatusCode *,
406 uint8_t *);
407
408typedef struct sDot11fFfTPCEleID {
409 uint8_t TPCId;
410} tDot11fFfTPCEleID;
411
412#define DOT11F_FF_TPCELEID_LEN (1)
413
414void dot11f_unpack_ff_tpc_ele_id(tpAniSirGlobal, uint8_t *,
415 tDot11fFfTPCEleID *);
416
417void dot11f_pack_ff_tpc_ele_id(tpAniSirGlobal, tDot11fFfTPCEleID *, uint8_t *);
418
419typedef struct sDot11fFfTPCEleLen {
420 uint8_t TPCLen;
421} tDot11fFfTPCEleLen;
422
423#define DOT11F_FF_TPCELELEN_LEN (1)
424
425void dot11f_unpack_ff_tpc_ele_len(tpAniSirGlobal, uint8_t *,
426 tDot11fFfTPCEleLen *);
427
428void dot11f_pack_ff_tpc_ele_len(tpAniSirGlobal, tDot11fFfTPCEleLen *,
429 uint8_t *);
430
431typedef struct sDot11fFfTSInfo {
432 uint32_t traffic_type:1;
433 uint32_t tsid:4;
434 uint32_t direction:2;
435 uint32_t access_policy:2;
436 uint32_t aggregation:1;
437 uint32_t psb:1;
438 uint32_t user_priority:3;
439 uint32_t tsinfo_ack_pol:2;
440 uint32_t schedule:1;
441 uint32_t unused:15;
442} tDot11fFfTSInfo;
443
444#define DOT11F_FF_TSINFO_LEN (3)
445
446void dot11f_unpack_ff_ts_info(tpAniSirGlobal, uint8_t *, tDot11fFfTSInfo *);
447
448void dot11f_pack_ff_ts_info(tpAniSirGlobal, tDot11fFfTSInfo *, uint8_t *);
449
450#define TSINFO_TRAFFIC_TYPE_OFFSET 0
451#define TSINFO_TRAFFIC_TYPE_WIDTH 1
452#define TSINFO_TSID_OFFSET 1
453#define TSINFO_TSID_WIDTH 4
454#define TSINFO_DIRECTION_OFFSET 5
455#define TSINFO_DIRECTION_WIDTH 2
456#define TSINFO_ACCESS_POLICY_OFFSET 7
457#define TSINFO_ACCESS_POLICY_WIDTH 2
458#define TSINFO_AGGREGATION_OFFSET 9
459#define TSINFO_AGGREGATION_WIDTH 1
460#define TSINFO_PSB_OFFSET 10
461#define TSINFO_PSB_WIDTH 1
462#define TSINFO_USER_PRIORITY_OFFSET 11
463#define TSINFO_USER_PRIORITY_WIDTH 3
464#define TSINFO_TSINFO_ACK_POL_OFFSET 14
465#define TSINFO_TSINFO_ACK_POL_WIDTH 2
466#define TSINFO_SCHEDULE_OFFSET 16
467#define TSINFO_SCHEDULE_WIDTH 1
468#define TSINFO_UNUSED_OFFSET 17
469#define TSINFO_UNUSED_WIDTH 15
470
471typedef struct sDot11fFfTimeStamp {
472 tDOT11F_U64 timestamp;
473} tDot11fFfTimeStamp;
474
475#define DOT11F_FF_TIMESTAMP_LEN (8)
476
477void dot11f_unpack_ff_time_stamp(tpAniSirGlobal, uint8_t *,
478 tDot11fFfTimeStamp *);
479
480void dot11f_pack_ff_time_stamp(tpAniSirGlobal, tDot11fFfTimeStamp *,
481 uint8_t *);
482
483typedef struct sDot11fFfTransactionId {
484 uint8_t transId[2];
485} tDot11fFfTransactionId;
486
487#define DOT11F_FF_TRANSACTIONID_LEN (2)
488
489void dot11f_unpack_ff_transaction_id(tpAniSirGlobal, uint8_t *,
490 tDot11fFfTransactionId *);
491
492void dot11f_pack_ff_transaction_id(tpAniSirGlobal, tDot11fFfTransactionId *,
493 uint8_t *);
494
495typedef struct sDot11fFfTxAntennaId {
496 uint8_t antennaId;
497} tDot11fFfTxAntennaId;
498
499#define DOT11F_FF_TXANTENNAID_LEN (1)
500
501void dot11f_unpack_ff_tx_antenna_id(tpAniSirGlobal, uint8_t *,
502 tDot11fFfTxAntennaId *);
503
504void dot11f_pack_ff_tx_antenna_id(tpAniSirGlobal, tDot11fFfTxAntennaId *,
505 uint8_t *);
506
507typedef struct sDot11fFfTxPower {
508 uint8_t txPower;
509} tDot11fFfTxPower;
510
511#define DOT11F_FF_TXPOWER_LEN (1)
512
513void dot11f_unpack_ff_tx_power(tpAniSirGlobal, uint8_t *,
514 tDot11fFfTxPower *);
515
516void dot11f_pack_ff_tx_power(tpAniSirGlobal, tDot11fFfTxPower *, uint8_t *);
517
518typedef struct sDot11fFfVhtMembershipStatusArray {
519 uint8_t membershipStatusArray[8];
520} tDot11fFfVhtMembershipStatusArray;
521
522#define DOT11F_FF_VHTMEMBERSHIPSTATUSARRAY_LEN (8)
523
524void dot11f_unpack_ff_vht_membership_status_array(tpAniSirGlobal, uint8_t *,
525 tDot11fFfVhtMembershipStatusArray *);
526
527void dot11f_pack_ff_vht_membership_status_array(tpAniSirGlobal,
528 tDot11fFfVhtMembershipStatusArray *,
529 uint8_t *);
530
531
532typedef struct sDot11fFfVhtUserPositionArray {
533 uint8_t userPositionArray[16];
534} tDot11fFfVhtUserPositionArray;
535
536#define DOT11F_FF_VHTUSERPOSITIONARRAY_LEN (16)
537
538void dot11f_unpack_ff_vht_user_position_array(tpAniSirGlobal, uint8_t *,
539 tDot11fFfVhtUserPositionArray *);
540
541void dot11f_pack_ff_vht_user_position_array(tpAniSirGlobal,
542 tDot11fFfVhtUserPositionArray *,
543 uint8_t *);
544
545
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -0800546typedef struct sDot11fFfaddba_param_set {
547 uint16_t amsdu_supp:1;
548 uint16_t policy:1;
549 uint16_t tid:4;
550 uint16_t buff_size:10;
551} tDot11fFfaddba_param_set;
552
553#define DOT11F_FF_ADDBA_PARAM_SET_LEN (2)
554
555void dot11f_unpack_ff_addba_param_set(tpAniSirGlobal, uint8_t *,
556 tDot11fFfaddba_param_set *);
557
558void dot11f_pack_ff_addba_param_set(tpAniSirGlobal, tDot11fFfaddba_param_set *,
559 uint8_t *);
560
561#define ADDBA_PARAM_SET_AMSDU_SUPP_OFFSET 0
562#define ADDBA_PARAM_SET_AMSDU_SUPP_WIDTH 1
563#define ADDBA_PARAM_SET_POLICY_OFFSET 1
564#define ADDBA_PARAM_SET_POLICY_WIDTH 1
565#define ADDBA_PARAM_SET_TID_OFFSET 2
566#define ADDBA_PARAM_SET_TID_WIDTH 4
567#define ADDBA_PARAM_SET_BUFF_SIZE_OFFSET 6
568#define ADDBA_PARAM_SET_BUFF_SIZE_WIDTH 10
569
570typedef struct sDot11fFfba_start_seq_ctrl {
571 uint16_t frag_number:4;
572 uint16_t ssn:12;
573} tDot11fFfba_start_seq_ctrl;
574
575#define DOT11F_FF_BA_START_SEQ_CTRL_LEN (2)
576
577void dot11f_unpack_ff_ba_start_seq_ctrl(tpAniSirGlobal, uint8_t *,
578 tDot11fFfba_start_seq_ctrl *);
579
580void dot11f_pack_ff_ba_start_seq_ctrl(tpAniSirGlobal,
581 tDot11fFfba_start_seq_ctrl *,
582 uint8_t *);
583
584
585#define BA_START_SEQ_CTRL_FRAG_NUMBER_OFFSET 0
586#define BA_START_SEQ_CTRL_FRAG_NUMBER_WIDTH 4
587#define BA_START_SEQ_CTRL_SSN_OFFSET 4
588#define BA_START_SEQ_CTRL_SSN_WIDTH 12
589
590typedef struct sDot11fFfba_timeout {
591 uint16_t timeout;
592} tDot11fFfba_timeout;
593
594#define DOT11F_FF_BA_TIMEOUT_LEN (2)
595
596void dot11f_unpack_ff_ba_timeout(tpAniSirGlobal, uint8_t *,
597 tDot11fFfba_timeout *);
598
599void dot11f_pack_ff_ba_timeout(tpAniSirGlobal, tDot11fFfba_timeout *,
600 uint8_t *);
601
602typedef struct sDot11fFfdelba_param_set {
603 uint16_t reserved:11;
604 uint16_t initiator:1;
605 uint16_t tid:4;
606} tDot11fFfdelba_param_set;
607
608#define DOT11F_FF_DELBA_PARAM_SET_LEN (2)
609
610void dot11f_unpack_ff_delba_param_set(tpAniSirGlobal, uint8_t *,
611 tDot11fFfdelba_param_set *);
612
613void dot11f_pack_ff_delba_param_set(tpAniSirGlobal, tDot11fFfdelba_param_set *,
614 uint8_t *);
615
616#define DELBA_PARAM_SET_RESERVED_OFFSET 0
617#define DELBA_PARAM_SET_RESERVED_WIDTH 11
618#define DELBA_PARAM_SET_INITIATOR_OFFSET 11
619#define DELBA_PARAM_SET_INITIATOR_WIDTH 1
620#define DELBA_PARAM_SET_TID_OFFSET 12
621#define DELBA_PARAM_SET_TID_WIDTH 4
622
Abhishek Singh518323d2015-10-19 17:42:01 +0530623typedef struct sDot11fFfext_chan_switch_ann_action {
624 uint32_t switch_mode:8;
625 uint32_t op_class:8;
626 uint32_t new_channel:8;
627 uint32_t switch_count:8;
628} tDot11fFfext_chan_switch_ann_action;
629
630#define DOT11F_FF_EXT_CHAN_SWITCH_ANN_ACTION_LEN (4)
631
632void dot11f_unpack_ff_ext_chan_switch_ann_action(tpAniSirGlobal, uint8_t *,
633 tDot11fFfext_chan_switch_ann_action *);
634
635void dot11f_pack_ff_ext_chan_switch_ann_action(tpAniSirGlobal,
636 tDot11fFfext_chan_switch_ann_action *,
637 uint8_t *);
638
639
640#define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_OFFSET 0
641#define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_WIDTH 8
642#define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_OFFSET 8
643#define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_WIDTH 8
644#define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_OFFSET 16
645#define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_WIDTH 8
646#define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_OFFSET 24
647#define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_WIDTH 8
648
Abhishek Singh5695e2a2016-10-28 10:39:12 +0530649typedef struct sDot11fFfp2p_action_oui {
650 uint8_t oui_data[4];
651} tDot11fFfp2p_action_oui;
652
653#define DOT11F_FF_P2P_ACTION_OUI_LEN (4)
654
655void dot11f_unpack_ff_p2p_action_oui(tpAniSirGlobal, uint8_t *,
656 tDot11fFfp2p_action_oui *);
657
658void dot11f_pack_ff_p2p_action_oui(tpAniSirGlobal, tDot11fFfp2p_action_oui *,
659 uint8_t *);
660
661typedef struct sDot11fFfp2p_action_subtype {
662 uint8_t subtype;
663} tDot11fFfp2p_action_subtype;
664
665#define DOT11F_FF_P2P_ACTION_SUBTYPE_LEN (1)
666
667void dot11f_unpack_ff_p2p_action_subtype(tpAniSirGlobal, uint8_t *,
668 tDot11fFfp2p_action_subtype *);
669
670void dot11f_pack_ff_p2p_action_subtype(tpAniSirGlobal,
671 tDot11fFfp2p_action_subtype *,
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -0800672 uint8_t *);
Abhishek Singh5695e2a2016-10-28 10:39:12 +0530673
674
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800675/*********************************************************************
676 * TLVs *
677 ********************************************************************/
678
679
680/* ID 1 (0x0001) */
681typedef struct sDot11fTLVAuthorizedMACs {
682 uint8_t present;
683 uint8_t mac[6];
684} tDot11fTLVAuthorizedMACs;
685
686#define DOT11F_TLV_AUTHORIZEDMACS (1)
687
688/* N.B. These #defines do *not* include the ID & length */
689#define DOT11F_TLV_AUTHORIZEDMACS_MIN_LEN (6)
690
691#define DOT11F_TLV_AUTHORIZEDMACS_MAX_LEN (6)
692
693#ifdef __cplusplus
694extern "C" {
695#endif /* C++ */
696uint32_t dot11f_unpack_tlv_authorized_ma_cs(
697 tpAniSirGlobal,
698 uint8_t *,
699 uint16_t,
700 tDot11fTLVAuthorizedMACs*);
701
702uint32_t dot11f_pack_tlv_authorized_ma_cs(
703 tpAniSirGlobal,
704 tDot11fTLVAuthorizedMACs *,
705 uint8_t *,
706 uint32_t,
707 uint32_t*);
708
709uint32_t dot11f_get_packed_tlv_AuthorizedMACs(
710 tpAniSirGlobal,
711 tDot11fTLVAuthorizedMACs *,
712 uint32_t*);
713
714#ifdef __cplusplus
715}; /* End extern "C". */
716#endif /* C++ */
717
718/* ID 3 (0x0003) */
719typedef struct sDot11fTLVRequestToEnroll {
720 uint8_t present;
721 uint8_t req;
722} tDot11fTLVRequestToEnroll;
723
724#define DOT11F_TLV_REQUESTTOENROLL (3)
725
726/* N.B. These #defines do *not* include the ID & length */
727#define DOT11F_TLV_REQUESTTOENROLL_MIN_LEN (1)
728
729#define DOT11F_TLV_REQUESTTOENROLL_MAX_LEN (1)
730
731#ifdef __cplusplus
732extern "C" {
733#endif /* C++ */
734uint32_t dot11f_unpack_tlv_RequestToEnroll(
735 tpAniSirGlobal,
736 uint8_t *,
737 uint16_t,
738 tDot11fTLVRequestToEnroll*);
739
740uint32_t dot11f_pack_tlv_request_to_enroll(
741 tpAniSirGlobal,
742 tDot11fTLVRequestToEnroll *,
743 uint8_t *,
744 uint32_t,
745 uint32_t*);
746
747uint32_t dot11f_get_packed_tlv_RequestToEnroll(
748 tpAniSirGlobal,
749 tDot11fTLVRequestToEnroll *,
750 uint32_t*);
751
752#ifdef __cplusplus
753}; /* End extern "C". */
754#endif /* C++ */
755
756/* ID 0 (0x0000) */
757typedef struct sDot11fTLVVersion2 {
758 uint8_t present;
759 uint8_t minor:4;
760 uint8_t major:4;
761} tDot11fTLVVersion2;
762
763#define DOT11F_TLV_VERSION2 (0)
764
765/* N.B. These #defines do *not* include the ID & length */
766#define DOT11F_TLV_VERSION2_MIN_LEN (1)
767
768#define DOT11F_TLV_VERSION2_MAX_LEN (1)
769
770#ifdef __cplusplus
771extern "C" {
772#endif /* C++ */
773uint32_t dot11f_unpack_tlv_version2(
774 tpAniSirGlobal,
775 uint8_t *,
776 uint16_t,
777 tDot11fTLVVersion2*);
778
779uint32_t dot11f_pack_tlv_version2(
780 tpAniSirGlobal,
781 tDot11fTLVVersion2 *,
782 uint8_t *,
783 uint32_t,
784 uint32_t*);
785
786uint32_t dot11f_get_packed_tlv_Version2(
787 tpAniSirGlobal,
788 tDot11fTLVVersion2 *,
789 uint32_t*);
790
791#ifdef __cplusplus
792}; /* End extern "C". */
793#endif /* C++ */
794
795/* ID 4183 (0x1057) */
796typedef struct sDot11fTLVAPSetupLocked {
797 uint8_t present;
798 uint8_t fLocked;
799} tDot11fTLVAPSetupLocked;
800
801#define DOT11F_TLV_APSETUPLOCKED (4183)
802
803/* N.B. These #defines do *not* include the ID & length */
804#define DOT11F_TLV_APSETUPLOCKED_MIN_LEN (3)
805
806#define DOT11F_TLV_APSETUPLOCKED_MAX_LEN (3)
807
808#ifdef __cplusplus
809extern "C" {
810#endif /* C++ */
811uint32_t dot11f_unpack_tlv_APSetupLocked(
812 tpAniSirGlobal,
813 uint8_t *,
814 uint16_t,
815 tDot11fTLVAPSetupLocked*);
816
817uint32_t dot11f_pack_tlv_ap_setup_locked(
818 tpAniSirGlobal,
819 tDot11fTLVAPSetupLocked *,
820 uint8_t *,
821 uint32_t,
822 uint32_t*);
823
824uint32_t dot11f_get_packed_tlv_APSetupLocked(
825 tpAniSirGlobal,
826 tDot11fTLVAPSetupLocked *,
827 uint32_t*);
828
829#ifdef __cplusplus
830}; /* End extern "C". */
831#endif /* C++ */
832
833/* ID 4098 (0x1002) */
834typedef struct sDot11fTLVAssociationState {
835 uint8_t present;
836 uint16_t state;
837} tDot11fTLVAssociationState;
838
839#define DOT11F_TLV_ASSOCIATIONSTATE (4098)
840
841/* N.B. These #defines do *not* include the ID & length */
842#define DOT11F_TLV_ASSOCIATIONSTATE_MIN_LEN (4)
843
844#define DOT11F_TLV_ASSOCIATIONSTATE_MAX_LEN (4)
845
846#ifdef __cplusplus
847extern "C" {
848#endif /* C++ */
849uint32_t dot11f_unpack_tlv_AssociationState(
850 tpAniSirGlobal,
851 uint8_t *,
852 uint16_t,
853 tDot11fTLVAssociationState*);
854
855uint32_t dot11f_pack_tlv_association_state(
856 tpAniSirGlobal,
857 tDot11fTLVAssociationState *,
858 uint8_t *,
859 uint32_t,
860 uint32_t*);
861
862uint32_t dot11f_get_packed_tlv_AssociationState(
863 tpAniSirGlobal,
864 tDot11fTLVAssociationState *,
865 uint32_t*);
866
867#ifdef __cplusplus
868}; /* End extern "C". */
869#endif /* C++ */
870
871/* ID 4104 (0x1008) */
872typedef struct sDot11fTLVConfigMethods {
873 uint8_t present;
874 uint16_t methods;
875} tDot11fTLVConfigMethods;
876
877#define DOT11F_TLV_CONFIGMETHODS (4104)
878
879/* N.B. These #defines do *not* include the ID & length */
880#define DOT11F_TLV_CONFIGMETHODS_MIN_LEN (4)
881
882#define DOT11F_TLV_CONFIGMETHODS_MAX_LEN (4)
883
884#ifdef __cplusplus
885extern "C" {
886#endif /* C++ */
887uint32_t dot11f_unpack_tlv_ConfigMethods(
888 tpAniSirGlobal,
889 uint8_t *,
890 uint16_t,
891 tDot11fTLVConfigMethods*);
892
893uint32_t dot11f_pack_tlv_config_methods(
894 tpAniSirGlobal,
895 tDot11fTLVConfigMethods *,
896 uint8_t *,
897 uint32_t,
898 uint32_t*);
899
900uint32_t dot11f_get_packed_tlv_ConfigMethods(
901 tpAniSirGlobal,
902 tDot11fTLVConfigMethods *,
903 uint32_t*);
904
905#ifdef __cplusplus
906}; /* End extern "C". */
907#endif /* C++ */
908
909/* ID 4105 (0x1009) */
910typedef struct sDot11fTLVConfigurationError {
911 uint8_t present;
912 uint16_t error;
913} tDot11fTLVConfigurationError;
914
915#define DOT11F_TLV_CONFIGURATIONERROR (4105)
916
917/* N.B. These #defines do *not* include the ID & length */
918#define DOT11F_TLV_CONFIGURATIONERROR_MIN_LEN (4)
919
920#define DOT11F_TLV_CONFIGURATIONERROR_MAX_LEN (4)
921
922#ifdef __cplusplus
923extern "C" {
924#endif /* C++ */
925uint32_t dot11f_unpack_tlv_ConfigurationError(
926 tpAniSirGlobal,
927 uint8_t *,
928 uint16_t,
929 tDot11fTLVConfigurationError*);
930
931uint32_t dot11f_pack_tlv_configuration_error(
932 tpAniSirGlobal,
933 tDot11fTLVConfigurationError *,
934 uint8_t *,
935 uint32_t,
936 uint32_t*);
937
938uint32_t dot11f_get_packed_tlv_ConfigurationError(
939 tpAniSirGlobal,
940 tDot11fTLVConfigurationError *,
941 uint32_t*);
942
943#ifdef __cplusplus
944}; /* End extern "C". */
945#endif /* C++ */
946
947/* ID 4113 (0x1011) */
948typedef struct sDot11fTLVDeviceName {
949 uint8_t present;
950 uint8_t num_text;
951 uint8_t text[32];
952} tDot11fTLVDeviceName;
953
954#define DOT11F_TLV_DEVICENAME (4113)
955
956/* N.B. These #defines do *not* include the ID & length */
957#define DOT11F_TLV_DEVICENAME_MIN_LEN (2)
958
959#define DOT11F_TLV_DEVICENAME_MAX_LEN (34)
960
961#ifdef __cplusplus
962extern "C" {
963#endif /* C++ */
964uint32_t dot11f_unpack_tlv_device_name(
965 tpAniSirGlobal,
966 uint8_t *,
967 uint16_t,
968 tDot11fTLVDeviceName*);
969
970uint32_t dot11f_pack_tlv_device_name(
971 tpAniSirGlobal,
972 tDot11fTLVDeviceName *,
973 uint8_t *,
974 uint32_t,
975 uint32_t*);
976
977uint32_t dot11f_get_packed_tlv_DeviceName(
978 tpAniSirGlobal,
979 tDot11fTLVDeviceName *,
980 uint32_t*);
981
982#ifdef __cplusplus
983}; /* End extern "C". */
984#endif /* C++ */
985
986/* ID 4114 (0x1012) */
987typedef struct sDot11fTLVDevicePasswordID {
988 uint8_t present;
989 uint16_t id;
990} tDot11fTLVDevicePasswordID;
991
992#define DOT11F_TLV_DEVICEPASSWORDID (4114)
993
994/* N.B. These #defines do *not* include the ID & length */
995#define DOT11F_TLV_DEVICEPASSWORDID_MIN_LEN (4)
996
997#define DOT11F_TLV_DEVICEPASSWORDID_MAX_LEN (4)
998
999#ifdef __cplusplus
1000extern "C" {
1001#endif /* C++ */
1002uint32_t dot11f_unpack_tlv_DevicePasswordID(
1003 tpAniSirGlobal,
1004 uint8_t *,
1005 uint16_t,
1006 tDot11fTLVDevicePasswordID*);
1007
1008uint32_t dot11f_pack_tlv_device_password_id(
1009 tpAniSirGlobal,
1010 tDot11fTLVDevicePasswordID *,
1011 uint8_t *,
1012 uint32_t,
1013 uint32_t*);
1014
1015uint32_t dot11f_get_packed_tlv_DevicePasswordID(
1016 tpAniSirGlobal,
1017 tDot11fTLVDevicePasswordID *,
1018 uint32_t*);
1019
1020#ifdef __cplusplus
1021}; /* End extern "C". */
1022#endif /* C++ */
1023
1024/* ID 8 (0x0008) */
1025typedef struct sDot11fTLVExtendedListenTiming {
1026 uint8_t present;
1027 uint16_t availibilityPeriod;
1028 uint16_t availibilityInterval;
1029} tDot11fTLVExtendedListenTiming;
1030
1031#define DOT11F_TLV_EXTENDEDLISTENTIMING (8)
1032
1033/* N.B. These #defines do *not* include the ID & length */
1034#define DOT11F_TLV_EXTENDEDLISTENTIMING_MIN_LEN (5)
1035
1036#define DOT11F_TLV_EXTENDEDLISTENTIMING_MAX_LEN (5)
1037
1038#ifdef __cplusplus
1039extern "C" {
1040#endif /* C++ */
1041uint32_t dot11f_unpack_tlv_extended_listen_timing(
1042 tpAniSirGlobal,
1043 uint8_t *,
1044 uint16_t,
1045 tDot11fTLVExtendedListenTiming*);
1046
1047uint32_t dot11f_pack_tlv_extended_listen_timing(
1048 tpAniSirGlobal,
1049 tDot11fTLVExtendedListenTiming *,
1050 uint8_t *,
1051 uint32_t,
1052 uint32_t*);
1053
1054uint32_t dot11f_get_packed_tlv_ExtendedListenTiming(
1055 tpAniSirGlobal,
1056 tDot11fTLVExtendedListenTiming *,
1057 uint32_t*);
1058
1059#ifdef __cplusplus
1060}; /* End extern "C". */
1061#endif /* C++ */
1062
1063/* ID 6 (0x0006) */
1064typedef struct sDot11fTLVListenChannel {
1065 uint8_t present;
1066 uint8_t countryString[3];
1067 uint8_t regulatoryClass;
1068 uint8_t channel;
1069} tDot11fTLVListenChannel;
1070
1071#define DOT11F_TLV_LISTENCHANNEL (6)
1072
1073/* N.B. These #defines do *not* include the ID & length */
1074#define DOT11F_TLV_LISTENCHANNEL_MIN_LEN (6)
1075
1076#define DOT11F_TLV_LISTENCHANNEL_MAX_LEN (6)
1077
1078#ifdef __cplusplus
1079extern "C" {
1080#endif /* C++ */
1081uint32_t dot11f_unpack_tlv_listen_channel(
1082 tpAniSirGlobal,
1083 uint8_t *,
1084 uint16_t,
1085 tDot11fTLVListenChannel*);
1086
1087uint32_t dot11f_pack_tlv_listen_channel(
1088 tpAniSirGlobal,
1089 tDot11fTLVListenChannel *,
1090 uint8_t *,
1091 uint32_t,
1092 uint32_t*);
1093
1094uint32_t dot11f_get_packed_tlv_ListenChannel(
1095 tpAniSirGlobal,
1096 tDot11fTLVListenChannel *,
1097 uint32_t*);
1098
1099#ifdef __cplusplus
1100}; /* End extern "C". */
1101#endif /* C++ */
1102
1103/* ID 4129 (0x1021) */
1104typedef struct sDot11fTLVManufacturer {
1105 uint8_t present;
1106 uint8_t num_name;
1107 uint8_t name[64];
1108} tDot11fTLVManufacturer;
1109
1110#define DOT11F_TLV_MANUFACTURER (4129)
1111
1112/* N.B. These #defines do *not* include the ID & length */
1113#define DOT11F_TLV_MANUFACTURER_MIN_LEN (2)
1114
1115#define DOT11F_TLV_MANUFACTURER_MAX_LEN (66)
1116
1117#ifdef __cplusplus
1118extern "C" {
1119#endif /* C++ */
1120uint32_t dot11f_unpack_tlv_manufacturer(
1121 tpAniSirGlobal,
1122 uint8_t *,
1123 uint16_t,
1124 tDot11fTLVManufacturer*);
1125
1126uint32_t dot11f_pack_tlv_manufacturer(
1127 tpAniSirGlobal,
1128 tDot11fTLVManufacturer *,
1129 uint8_t *,
1130 uint32_t,
1131 uint32_t*);
1132
1133uint32_t dot11f_get_packed_tlv_Manufacturer(
1134 tpAniSirGlobal,
1135 tDot11fTLVManufacturer *,
1136 uint32_t*);
1137
1138#ifdef __cplusplus
1139}; /* End extern "C". */
1140#endif /* C++ */
1141
1142/* ID 1 (0x0001) */
1143typedef struct sDot11fTLVMinorReasonCode {
1144 uint8_t present;
1145 uint8_t minorReasonCode;
1146} tDot11fTLVMinorReasonCode;
1147
1148#define DOT11F_TLV_MINORREASONCODE (1)
1149
1150/* N.B. These #defines do *not* include the ID & length */
1151#define DOT11F_TLV_MINORREASONCODE_MIN_LEN (2)
1152
1153#define DOT11F_TLV_MINORREASONCODE_MAX_LEN (2)
1154
1155#ifdef __cplusplus
1156extern "C" {
1157#endif /* C++ */
1158uint32_t dot11f_unpack_tlv_MinorReasonCode(
1159 tpAniSirGlobal,
1160 uint8_t *,
1161 uint16_t,
1162 tDot11fTLVMinorReasonCode*);
1163
1164uint32_t dot11f_pack_tlv_minor_reason_code(
1165 tpAniSirGlobal,
1166 tDot11fTLVMinorReasonCode *,
1167 uint8_t *,
1168 uint32_t,
1169 uint32_t*);
1170
1171uint32_t dot11f_get_packed_tlv_MinorReasonCode(
1172 tpAniSirGlobal,
1173 tDot11fTLVMinorReasonCode *,
1174 uint32_t*);
1175
1176#ifdef __cplusplus
1177}; /* End extern "C". */
1178#endif /* C++ */
1179
1180/* ID 4131 (0x1023) */
1181typedef struct sDot11fTLVModelName {
1182 uint8_t present;
1183 uint8_t num_text;
1184 uint8_t text[32];
1185} tDot11fTLVModelName;
1186
1187#define DOT11F_TLV_MODELNAME (4131)
1188
1189/* N.B. These #defines do *not* include the ID & length */
1190#define DOT11F_TLV_MODELNAME_MIN_LEN (2)
1191
1192#define DOT11F_TLV_MODELNAME_MAX_LEN (34)
1193
1194#ifdef __cplusplus
1195extern "C" {
1196#endif /* C++ */
1197uint32_t dot11f_unpack_tlv_model_name(
1198 tpAniSirGlobal,
1199 uint8_t *,
1200 uint16_t,
1201 tDot11fTLVModelName*);
1202
1203uint32_t dot11f_pack_tlv_model_name(
1204 tpAniSirGlobal,
1205 tDot11fTLVModelName *,
1206 uint8_t *,
1207 uint32_t,
1208 uint32_t*);
1209
1210uint32_t dot11f_get_packed_tlv_ModelName(
1211 tpAniSirGlobal,
1212 tDot11fTLVModelName *,
1213 uint32_t*);
1214
1215#ifdef __cplusplus
1216}; /* End extern "C". */
1217#endif /* C++ */
1218
1219/* ID 4132 (0x1024) */
1220typedef struct sDot11fTLVModelNumber {
1221 uint8_t present;
1222 uint8_t num_text;
1223 uint8_t text[32];
1224} tDot11fTLVModelNumber;
1225
1226#define DOT11F_TLV_MODELNUMBER (4132)
1227
1228/* N.B. These #defines do *not* include the ID & length */
1229#define DOT11F_TLV_MODELNUMBER_MIN_LEN (2)
1230
1231#define DOT11F_TLV_MODELNUMBER_MAX_LEN (34)
1232
1233#ifdef __cplusplus
1234extern "C" {
1235#endif /* C++ */
1236uint32_t dot11f_unpack_tlv_model_number(
1237 tpAniSirGlobal,
1238 uint8_t *,
1239 uint16_t,
1240 tDot11fTLVModelNumber*);
1241
1242uint32_t dot11f_pack_tlv_model_number(
1243 tpAniSirGlobal,
1244 tDot11fTLVModelNumber *,
1245 uint8_t *,
1246 uint32_t,
1247 uint32_t*);
1248
1249uint32_t dot11f_get_packed_tlv_ModelNumber(
1250 tpAniSirGlobal,
1251 tDot11fTLVModelNumber *,
1252 uint32_t*);
1253
1254#ifdef __cplusplus
1255}; /* End extern "C". */
1256#endif /* C++ */
1257
1258/* ID 12 (0x000c) */
1259typedef struct sDot11fTLVNoticeOfAbsence {
1260 uint8_t present;
1261 uint8_t index;
1262 uint8_t CTSWindowOppPS;
1263 uint8_t num_NoADesc;
1264 uint8_t NoADesc[36];
1265} tDot11fTLVNoticeOfAbsence;
1266
1267#define DOT11F_TLV_NOTICEOFABSENCE (12)
1268
1269/* N.B. These #defines do *not* include the ID & length */
1270#define DOT11F_TLV_NOTICEOFABSENCE_MIN_LEN (3)
1271
1272#define DOT11F_TLV_NOTICEOFABSENCE_MAX_LEN (39)
1273
1274#ifdef __cplusplus
1275extern "C" {
1276#endif /* C++ */
1277uint32_t dot11f_unpack_tlv_notice_of_absence(
1278 tpAniSirGlobal,
1279 uint8_t *,
1280 uint16_t,
1281 tDot11fTLVNoticeOfAbsence*);
1282
1283uint32_t dot11f_pack_tlv_notice_of_absence(
1284 tpAniSirGlobal,
1285 tDot11fTLVNoticeOfAbsence *,
1286 uint8_t *,
1287 uint32_t,
1288 uint32_t*);
1289
1290uint32_t dot11f_get_packed_tlv_NoticeOfAbsence(
1291 tpAniSirGlobal,
1292 tDot11fTLVNoticeOfAbsence *,
1293 uint32_t*);
1294
1295#ifdef __cplusplus
1296}; /* End extern "C". */
1297#endif /* C++ */
1298
1299/* ID 17 (0x0011) */
1300typedef struct sDot11fTLVOperatingChannel {
1301 uint8_t present;
1302 uint8_t countryString[3];
1303 uint8_t regulatoryClass;
1304 uint8_t channel;
1305} tDot11fTLVOperatingChannel;
1306
1307#define DOT11F_TLV_OPERATINGCHANNEL (17)
1308
1309/* N.B. These #defines do *not* include the ID & length */
1310#define DOT11F_TLV_OPERATINGCHANNEL_MIN_LEN (6)
1311
1312#define DOT11F_TLV_OPERATINGCHANNEL_MAX_LEN (6)
1313
1314#ifdef __cplusplus
1315extern "C" {
1316#endif /* C++ */
1317uint32_t dot11f_unpack_tlv_operating_channel(
1318 tpAniSirGlobal,
1319 uint8_t *,
1320 uint16_t,
1321 tDot11fTLVOperatingChannel*);
1322
1323uint32_t dot11f_pack_tlv_operating_channel(
1324 tpAniSirGlobal,
1325 tDot11fTLVOperatingChannel *,
1326 uint8_t *,
1327 uint32_t,
1328 uint32_t*);
1329
1330uint32_t dot11f_get_packed_tlv_OperatingChannel(
1331 tpAniSirGlobal,
1332 tDot11fTLVOperatingChannel *,
1333 uint32_t*);
1334
1335#ifdef __cplusplus
1336}; /* End extern "C". */
1337#endif /* C++ */
1338
1339/* ID 2 (0x0002) */
1340typedef struct sDot11fTLVP2PCapability {
1341 uint8_t present;
1342 uint8_t deviceCapability;
1343 uint8_t groupCapability;
1344} tDot11fTLVP2PCapability;
1345
1346#define DOT11F_TLV_P2PCAPABILITY (2)
1347
1348/* N.B. These #defines do *not* include the ID & length */
1349#define DOT11F_TLV_P2PCAPABILITY_MIN_LEN (3)
1350
1351#define DOT11F_TLV_P2PCAPABILITY_MAX_LEN (3)
1352
1353#ifdef __cplusplus
1354extern "C" {
1355#endif /* C++ */
1356uint32_t dot11f_unpack_tlv_p2_p_capability(
1357 tpAniSirGlobal,
1358 uint8_t *,
1359 uint16_t,
1360 tDot11fTLVP2PCapability*);
1361
1362uint32_t dot11f_pack_tlv_p2_p_capability(
1363 tpAniSirGlobal,
1364 tDot11fTLVP2PCapability *,
1365 uint8_t *,
1366 uint32_t,
1367 uint32_t*);
1368
1369uint32_t dot11f_get_packed_tlv_P2PCapability(
1370 tpAniSirGlobal,
1371 tDot11fTLVP2PCapability *,
1372 uint32_t*);
1373
1374#ifdef __cplusplus
1375}; /* End extern "C". */
1376#endif /* C++ */
1377
1378/* ID 3 (0x0003) */
1379typedef struct sDot11fTLVP2PDeviceId {
1380 uint8_t present;
1381 uint8_t P2PDeviceAddress[6];
1382} tDot11fTLVP2PDeviceId;
1383
1384#define DOT11F_TLV_P2PDEVICEID (3)
1385
1386/* N.B. These #defines do *not* include the ID & length */
1387#define DOT11F_TLV_P2PDEVICEID_MIN_LEN (7)
1388
1389#define DOT11F_TLV_P2PDEVICEID_MAX_LEN (7)
1390
1391#ifdef __cplusplus
1392extern "C" {
1393#endif /* C++ */
1394uint32_t dot11f_unpack_tlv_p2_p_device_id(
1395 tpAniSirGlobal,
1396 uint8_t *,
1397 uint16_t,
1398 tDot11fTLVP2PDeviceId*);
1399
1400uint32_t dot11f_pack_tlv_p2_p_device_id(
1401 tpAniSirGlobal,
1402 tDot11fTLVP2PDeviceId *,
1403 uint8_t *,
1404 uint32_t,
1405 uint32_t*);
1406
1407uint32_t dot11f_get_packed_tlv_P2PDeviceId(
1408 tpAniSirGlobal,
1409 tDot11fTLVP2PDeviceId *,
1410 uint32_t*);
1411
1412#ifdef __cplusplus
1413}; /* End extern "C". */
1414#endif /* C++ */
1415
1416/* ID 13 (0x000d) */
1417typedef struct sDot11fTLVP2PDeviceInfo {
1418 uint8_t present;
1419 uint8_t P2PDeviceAddress[6];
1420 uint16_t configMethod;
1421 uint8_t primaryDeviceType[8];
1422 tDot11fTLVDeviceName DeviceName;
1423} tDot11fTLVP2PDeviceInfo;
1424
1425#define DOT11F_TLV_P2PDEVICEINFO (13)
1426
1427/* N.B. These #defines do *not* include the ID & length */
1428#define DOT11F_TLV_P2PDEVICEINFO_MIN_LEN (17)
1429
1430#define DOT11F_TLV_P2PDEVICEINFO_MAX_LEN (53)
1431
1432#ifdef __cplusplus
1433extern "C" {
1434#endif /* C++ */
1435uint32_t dot11f_unpack_tlv_p2_p_device_info(
1436 tpAniSirGlobal,
1437 uint8_t *,
1438 uint16_t,
1439 tDot11fTLVP2PDeviceInfo*);
1440
1441uint32_t dot11f_pack_tlv_p2_p_device_info(
1442 tpAniSirGlobal,
1443 tDot11fTLVP2PDeviceInfo *,
1444 uint8_t *,
1445 uint32_t,
1446 uint32_t*);
1447
1448uint32_t dot11f_get_packed_tlv_P2PDeviceInfo(
1449 tpAniSirGlobal,
1450 tDot11fTLVP2PDeviceInfo *,
1451 uint32_t*);
1452
1453#ifdef __cplusplus
1454}; /* End extern "C". */
1455#endif /* C++ */
1456
1457/* ID 14 (0x000e) */
1458typedef struct sDot11fTLVP2PGroupInfo {
1459 uint8_t present;
1460 uint8_t num_P2PClientInfoDesc;
1461 uint8_t P2PClientInfoDesc[1024];
1462} tDot11fTLVP2PGroupInfo;
1463
1464#define DOT11F_TLV_P2PGROUPINFO (14)
1465
1466/* N.B. These #defines do *not* include the ID & length */
1467#define DOT11F_TLV_P2PGROUPINFO_MIN_LEN (1)
1468
1469#define DOT11F_TLV_P2PGROUPINFO_MAX_LEN (1025)
1470
1471#ifdef __cplusplus
1472extern "C" {
1473#endif /* C++ */
1474uint32_t dot11f_unpack_tlv_p2_p_group_info(
1475 tpAniSirGlobal,
1476 uint8_t *,
1477 uint16_t,
1478 tDot11fTLVP2PGroupInfo*);
1479
1480uint32_t dot11f_pack_tlv_p2_p_group_info(
1481 tpAniSirGlobal,
1482 tDot11fTLVP2PGroupInfo *,
1483 uint8_t *,
1484 uint32_t,
1485 uint32_t*);
1486
1487uint32_t dot11f_get_packed_tlv_P2PGroupInfo(
1488 tpAniSirGlobal,
1489 tDot11fTLVP2PGroupInfo *,
1490 uint32_t*);
1491
1492#ifdef __cplusplus
1493}; /* End extern "C". */
1494#endif /* C++ */
1495
1496/* ID 0 (0x0000) */
1497typedef struct sDot11fTLVP2PStatus {
1498 uint8_t present;
1499 uint8_t status;
1500} tDot11fTLVP2PStatus;
1501
1502#define DOT11F_TLV_P2PSTATUS (0)
1503
1504/* N.B. These #defines do *not* include the ID & length */
1505#define DOT11F_TLV_P2PSTATUS_MIN_LEN (2)
1506
1507#define DOT11F_TLV_P2PSTATUS_MAX_LEN (2)
1508
1509#ifdef __cplusplus
1510extern "C" {
1511#endif /* C++ */
1512uint32_t dot11f_unpack_tlv_P2PStatus(
1513 tpAniSirGlobal,
1514 uint8_t *,
1515 uint16_t,
1516 tDot11fTLVP2PStatus*);
1517
1518uint32_t dot11f_pack_tlv_p2_p_status(
1519 tpAniSirGlobal,
1520 tDot11fTLVP2PStatus *,
1521 uint8_t *,
1522 uint32_t,
1523 uint32_t*);
1524
1525uint32_t dot11f_get_packed_tlv_P2PStatus(
1526 tpAniSirGlobal,
1527 tDot11fTLVP2PStatus *,
1528 uint32_t*);
1529
1530#ifdef __cplusplus
1531}; /* End extern "C". */
1532#endif /* C++ */
1533
1534/* ID 4180 (0x1054) */
1535typedef struct sDot11fTLVPrimaryDeviceType {
1536 uint8_t present;
1537 uint16_t primary_category;
1538 uint8_t oui[4];
1539 uint16_t sub_category;
1540} tDot11fTLVPrimaryDeviceType;
1541
1542#define DOT11F_TLV_PRIMARYDEVICETYPE (4180)
1543
1544/* N.B. These #defines do *not* include the ID & length */
1545#define DOT11F_TLV_PRIMARYDEVICETYPE_MIN_LEN (10)
1546
1547#define DOT11F_TLV_PRIMARYDEVICETYPE_MAX_LEN (10)
1548
1549#ifdef __cplusplus
1550extern "C" {
1551#endif /* C++ */
1552uint32_t dot11f_unpack_tlv_primary_device_type(
1553 tpAniSirGlobal,
1554 uint8_t *,
1555 uint16_t,
1556 tDot11fTLVPrimaryDeviceType*);
1557
1558uint32_t dot11f_pack_tlv_primary_device_type(
1559 tpAniSirGlobal,
1560 tDot11fTLVPrimaryDeviceType *,
1561 uint8_t *,
1562 uint32_t,
1563 uint32_t*);
1564
1565uint32_t dot11f_get_packed_tlv_PrimaryDeviceType(
1566 tpAniSirGlobal,
1567 tDot11fTLVPrimaryDeviceType *,
1568 uint32_t*);
1569
1570#ifdef __cplusplus
1571}; /* End extern "C". */
1572#endif /* C++ */
1573
1574/* ID 4156 (0x103c) */
1575typedef struct sDot11fTLVRFBands {
1576 uint8_t present;
1577 uint8_t bands;
1578} tDot11fTLVRFBands;
1579
1580#define DOT11F_TLV_RFBANDS (4156)
1581
1582/* N.B. These #defines do *not* include the ID & length */
1583#define DOT11F_TLV_RFBANDS_MIN_LEN (3)
1584
1585#define DOT11F_TLV_RFBANDS_MAX_LEN (3)
1586
1587#ifdef __cplusplus
1588extern "C" {
1589#endif /* C++ */
1590uint32_t dot11f_unpack_tlv_RFBands(
1591 tpAniSirGlobal,
1592 uint8_t *,
1593 uint16_t,
1594 tDot11fTLVRFBands*);
1595
1596uint32_t dot11f_pack_tlv_rf_bands(
1597 tpAniSirGlobal,
1598 tDot11fTLVRFBands *,
1599 uint8_t *,
1600 uint32_t,
1601 uint32_t*);
1602
1603uint32_t dot11f_get_packed_tlv_RFBands(
1604 tpAniSirGlobal,
1605 tDot11fTLVRFBands *,
1606 uint32_t*);
1607
1608#ifdef __cplusplus
1609}; /* End extern "C". */
1610#endif /* C++ */
1611
1612/* ID 4202 (0x106a) */
1613typedef struct sDot11fTLVRequestDeviceType {
1614 uint8_t present;
1615 uint16_t primary_category;
1616 uint8_t oui[4];
1617 uint16_t sub_category;
1618} tDot11fTLVRequestDeviceType;
1619
1620#define DOT11F_TLV_REQUESTDEVICETYPE (4202)
1621
1622/* N.B. These #defines do *not* include the ID & length */
1623#define DOT11F_TLV_REQUESTDEVICETYPE_MIN_LEN (10)
1624
1625#define DOT11F_TLV_REQUESTDEVICETYPE_MAX_LEN (10)
1626
1627#ifdef __cplusplus
1628extern "C" {
1629#endif /* C++ */
1630uint32_t dot11f_unpack_tlv_request_device_type(
1631 tpAniSirGlobal,
1632 uint8_t *,
1633 uint16_t,
1634 tDot11fTLVRequestDeviceType*);
1635
1636uint32_t dot11f_pack_tlv_request_device_type(
1637 tpAniSirGlobal,
1638 tDot11fTLVRequestDeviceType *,
1639 uint8_t *,
1640 uint32_t,
1641 uint32_t*);
1642
1643uint32_t dot11f_get_packed_tlv_RequestDeviceType(
1644 tpAniSirGlobal,
1645 tDot11fTLVRequestDeviceType *,
1646 uint32_t*);
1647
1648#ifdef __cplusplus
1649}; /* End extern "C". */
1650#endif /* C++ */
1651
1652/* ID 4154 (0x103a) */
1653typedef struct sDot11fTLVRequestType {
1654 uint8_t present;
1655 uint8_t reqType;
1656} tDot11fTLVRequestType;
1657
1658#define DOT11F_TLV_REQUESTTYPE (4154)
1659
1660/* N.B. These #defines do *not* include the ID & length */
1661#define DOT11F_TLV_REQUESTTYPE_MIN_LEN (3)
1662
1663#define DOT11F_TLV_REQUESTTYPE_MAX_LEN (3)
1664
1665#ifdef __cplusplus
1666extern "C" {
1667#endif /* C++ */
1668uint32_t dot11f_unpack_tlv_RequestType(
1669 tpAniSirGlobal,
1670 uint8_t *,
1671 uint16_t,
1672 tDot11fTLVRequestType*);
1673
1674uint32_t dot11f_pack_tlv_request_type(
1675 tpAniSirGlobal,
1676 tDot11fTLVRequestType *,
1677 uint8_t *,
1678 uint32_t,
1679 uint32_t*);
1680
1681uint32_t dot11f_get_packed_tlv_RequestType(
1682 tpAniSirGlobal,
1683 tDot11fTLVRequestType *,
1684 uint32_t*);
1685
1686#ifdef __cplusplus
1687}; /* End extern "C". */
1688#endif /* C++ */
1689
1690/* ID 4155 (0x103b) */
1691typedef struct sDot11fTLVResponseType {
1692 uint8_t present;
1693 uint8_t resType;
1694} tDot11fTLVResponseType;
1695
1696#define DOT11F_TLV_RESPONSETYPE (4155)
1697
1698/* N.B. These #defines do *not* include the ID & length */
1699#define DOT11F_TLV_RESPONSETYPE_MIN_LEN (3)
1700
1701#define DOT11F_TLV_RESPONSETYPE_MAX_LEN (3)
1702
1703#ifdef __cplusplus
1704extern "C" {
1705#endif /* C++ */
1706uint32_t dot11f_unpack_tlv_ResponseType(
1707 tpAniSirGlobal,
1708 uint8_t *,
1709 uint16_t,
1710 tDot11fTLVResponseType*);
1711
1712uint32_t dot11f_pack_tlv_response_type(
1713 tpAniSirGlobal,
1714 tDot11fTLVResponseType *,
1715 uint8_t *,
1716 uint32_t,
1717 uint32_t*);
1718
1719uint32_t dot11f_get_packed_tlv_ResponseType(
1720 tpAniSirGlobal,
1721 tDot11fTLVResponseType *,
1722 uint32_t*);
1723
1724#ifdef __cplusplus
1725}; /* End extern "C". */
1726#endif /* C++ */
1727
1728/* ID 4161 (0x1041) */
1729typedef struct sDot11fTLVSelectedRegistrar {
1730 uint8_t present;
1731 uint8_t selected;
1732} tDot11fTLVSelectedRegistrar;
1733
1734#define DOT11F_TLV_SELECTEDREGISTRAR (4161)
1735
1736/* N.B. These #defines do *not* include the ID & length */
1737#define DOT11F_TLV_SELECTEDREGISTRAR_MIN_LEN (3)
1738
1739#define DOT11F_TLV_SELECTEDREGISTRAR_MAX_LEN (3)
1740
1741#ifdef __cplusplus
1742extern "C" {
1743#endif /* C++ */
1744uint32_t dot11f_unpack_tlv_SelectedRegistrar(
1745 tpAniSirGlobal,
1746 uint8_t *,
1747 uint16_t,
1748 tDot11fTLVSelectedRegistrar*);
1749
1750uint32_t dot11f_pack_tlv_selected_registrar(
1751 tpAniSirGlobal,
1752 tDot11fTLVSelectedRegistrar *,
1753 uint8_t *,
1754 uint32_t,
1755 uint32_t*);
1756
1757uint32_t dot11f_get_packed_tlv_SelectedRegistrar(
1758 tpAniSirGlobal,
1759 tDot11fTLVSelectedRegistrar *,
1760 uint32_t*);
1761
1762#ifdef __cplusplus
1763}; /* End extern "C". */
1764#endif /* C++ */
1765
1766/* ID 4179 (0x1053) */
1767typedef struct sDot11fTLVSelectedRegistrarConfigMethods {
1768 uint8_t present;
1769 uint16_t methods;
1770} tDot11fTLVSelectedRegistrarConfigMethods;
1771
1772#define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS (4179)
1773
1774/* N.B. These #defines do *not* include the ID & length */
1775#define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MIN_LEN (4)
1776
1777#define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MAX_LEN (4)
1778
1779#ifdef __cplusplus
1780extern "C" {
1781#endif /* C++ */
1782uint32_t dot11f_unpack_tlv_SelectedRegistrarConfigMethods(
1783 tpAniSirGlobal,
1784 uint8_t *,
1785 uint16_t,
1786 tDot11fTLVSelectedRegistrarConfigMethods*);
1787
1788uint32_t dot11f_pack_tlv_selected_registrar_config_methods(
1789 tpAniSirGlobal,
1790 tDot11fTLVSelectedRegistrarConfigMethods *,
1791 uint8_t *,
1792 uint32_t,
1793 uint32_t*);
1794
1795uint32_t dot11f_get_packed_tlv_SelectedRegistrarConfigMethods(
1796 tpAniSirGlobal,
1797 tDot11fTLVSelectedRegistrarConfigMethods *,
1798 uint32_t*);
1799
1800#ifdef __cplusplus
1801}; /* End extern "C". */
1802#endif /* C++ */
1803
1804/* ID 4162 (0x1042) */
1805typedef struct sDot11fTLVSerialNumber {
1806 uint8_t present;
1807 uint8_t num_text;
1808 uint8_t text[32];
1809} tDot11fTLVSerialNumber;
1810
1811#define DOT11F_TLV_SERIALNUMBER (4162)
1812
1813/* N.B. These #defines do *not* include the ID & length */
1814#define DOT11F_TLV_SERIALNUMBER_MIN_LEN (2)
1815
1816#define DOT11F_TLV_SERIALNUMBER_MAX_LEN (34)
1817
1818#ifdef __cplusplus
1819extern "C" {
1820#endif /* C++ */
1821uint32_t dot11f_unpack_tlv_serial_number(
1822 tpAniSirGlobal,
1823 uint8_t *,
1824 uint16_t,
1825 tDot11fTLVSerialNumber*);
1826
1827uint32_t dot11f_pack_tlv_serial_number(
1828 tpAniSirGlobal,
1829 tDot11fTLVSerialNumber *,
1830 uint8_t *,
1831 uint32_t,
1832 uint32_t*);
1833
1834uint32_t dot11f_get_packed_tlv_SerialNumber(
1835 tpAniSirGlobal,
1836 tDot11fTLVSerialNumber *,
1837 uint32_t*);
1838
1839#ifdef __cplusplus
1840}; /* End extern "C". */
1841#endif /* C++ */
1842
1843/* ID 4167 (0x1047) */
1844typedef struct sDot11fTLVUUID_E {
1845 uint8_t present;
1846 uint8_t uuid[16];
1847} tDot11fTLVUUID_E;
1848
1849#define DOT11F_TLV_UUID_E (4167)
1850
1851/* N.B. These #defines do *not* include the ID & length */
1852#define DOT11F_TLV_UUID_E_MIN_LEN (18)
1853
1854#define DOT11F_TLV_UUID_E_MAX_LEN (18)
1855
1856#ifdef __cplusplus
1857extern "C" {
1858#endif /* C++ */
1859uint32_t dot11f_unpack_tlv_uuid_e(
1860 tpAniSirGlobal,
1861 uint8_t *,
1862 uint16_t,
1863 tDot11fTLVUUID_E*);
1864
1865uint32_t dot11f_pack_tlv_uuid_e(
1866 tpAniSirGlobal,
1867 tDot11fTLVUUID_E *,
1868 uint8_t *,
1869 uint32_t,
1870 uint32_t*);
1871
1872uint32_t dot11f_get_packed_tlv_UUID_E(
1873 tpAniSirGlobal,
1874 tDot11fTLVUUID_E *,
1875 uint32_t*);
1876
1877#ifdef __cplusplus
1878}; /* End extern "C". */
1879#endif /* C++ */
1880
1881/* ID 4168 (0x1048) */
1882typedef struct sDot11fTLVUUID_R {
1883 uint8_t present;
1884 uint8_t uuid[16];
1885} tDot11fTLVUUID_R;
1886
1887#define DOT11F_TLV_UUID_R (4168)
1888
1889/* N.B. These #defines do *not* include the ID & length */
1890#define DOT11F_TLV_UUID_R_MIN_LEN (18)
1891
1892#define DOT11F_TLV_UUID_R_MAX_LEN (18)
1893
1894#ifdef __cplusplus
1895extern "C" {
1896#endif /* C++ */
1897uint32_t dot11f_unpack_tlv_uuid_r(
1898 tpAniSirGlobal,
1899 uint8_t *,
1900 uint16_t,
1901 tDot11fTLVUUID_R*);
1902
1903uint32_t dot11f_pack_tlv_uuid_r(
1904 tpAniSirGlobal,
1905 tDot11fTLVUUID_R *,
1906 uint8_t *,
1907 uint32_t,
1908 uint32_t*);
1909
1910uint32_t dot11f_get_packed_tlv_UUID_R(
1911 tpAniSirGlobal,
1912 tDot11fTLVUUID_R *,
1913 uint32_t*);
1914
1915#ifdef __cplusplus
1916}; /* End extern "C". */
1917#endif /* C++ */
1918
1919/* ID 4169 (0x1049) */
1920typedef struct sDot11fTLVVendorExtension {
1921 uint8_t present;
1922 uint8_t vendorId[3];
1923 tDot11fTLVVersion2 Version2;
1924 tDot11fTLVAuthorizedMACs AuthorizedMACs;
1925 tDot11fTLVRequestToEnroll RequestToEnroll;
1926} tDot11fTLVVendorExtension;
1927
1928#define DOT11F_TLV_VENDOREXTENSION (4169)
1929
1930/* N.B. These #defines do *not* include the ID & length */
1931#define DOT11F_TLV_VENDOREXTENSION_MIN_LEN (5)
1932
1933#define DOT11F_TLV_VENDOREXTENSION_MAX_LEN (19)
1934
1935#ifdef __cplusplus
1936extern "C" {
1937#endif /* C++ */
1938uint32_t dot11f_unpack_tlv_vendor_extension(
1939 tpAniSirGlobal,
1940 uint8_t *,
1941 uint16_t,
1942 tDot11fTLVVendorExtension*);
1943
1944uint32_t dot11f_pack_tlv_vendor_extension(
1945 tpAniSirGlobal,
1946 tDot11fTLVVendorExtension *,
1947 uint8_t *,
1948 uint32_t,
1949 uint32_t*);
1950
1951uint32_t dot11f_get_packed_tlv_VendorExtension(
1952 tpAniSirGlobal,
1953 tDot11fTLVVendorExtension *,
1954 uint32_t*);
1955
1956#ifdef __cplusplus
1957}; /* End extern "C". */
1958#endif /* C++ */
1959
1960/* ID 4170 (0x104a) */
1961typedef struct sDot11fTLVVersion {
1962 uint8_t present;
1963 uint8_t minor:4;
1964 uint8_t major:4;
1965} tDot11fTLVVersion;
1966
1967#define DOT11F_TLV_VERSION (4170)
1968
1969/* N.B. These #defines do *not* include the ID & length */
1970#define DOT11F_TLV_VERSION_MIN_LEN (3)
1971
1972#define DOT11F_TLV_VERSION_MAX_LEN (3)
1973
1974#ifdef __cplusplus
1975extern "C" {
1976#endif /* C++ */
1977uint32_t dot11f_unpack_tlv_version(
1978 tpAniSirGlobal,
1979 uint8_t *,
1980 uint16_t,
1981 tDot11fTLVVersion*);
1982
1983uint32_t dot11f_pack_tlv_version(
1984 tpAniSirGlobal,
1985 tDot11fTLVVersion *,
1986 uint8_t *,
1987 uint32_t,
1988 uint32_t*);
1989
1990uint32_t dot11f_get_packed_tlv_Version(
1991 tpAniSirGlobal,
1992 tDot11fTLVVersion *,
1993 uint32_t*);
1994
1995#ifdef __cplusplus
1996}; /* End extern "C". */
1997#endif /* C++ */
1998
1999/* ID 4164 (0x1044) */
2000typedef struct sDot11fTLVWPSState {
2001 uint8_t present;
2002 uint8_t state;
2003} tDot11fTLVWPSState;
2004
2005#define DOT11F_TLV_WPSSTATE (4164)
2006
2007/* N.B. These #defines do *not* include the ID & length */
2008#define DOT11F_TLV_WPSSTATE_MIN_LEN (3)
2009
2010#define DOT11F_TLV_WPSSTATE_MAX_LEN (3)
2011
2012#ifdef __cplusplus
2013extern "C" {
2014#endif /* C++ */
2015uint32_t dot11f_unpack_tlv_WPSState(
2016 tpAniSirGlobal,
2017 uint8_t *,
2018 uint16_t,
2019 tDot11fTLVWPSState*);
2020
2021uint32_t dot11f_pack_tlv_wps_state(
2022 tpAniSirGlobal,
2023 tDot11fTLVWPSState *,
2024 uint8_t *,
2025 uint32_t,
2026 uint32_t*);
2027
2028uint32_t dot11f_get_packed_tlv_WPSState(
2029 tpAniSirGlobal,
2030 tDot11fTLVWPSState *,
2031 uint32_t*);
2032
2033#ifdef __cplusplus
2034}; /* End extern "C". */
2035#endif /* C++ */
2036
Abhishek Singh951eed82017-07-06 16:53:19 +05302037/* ID 4 (0x0004) */
2038typedef struct sDot11fTLVassoc_disallowed {
2039 uint8_t present;
2040 uint8_t reason_code;
2041} tDot11fTLVassoc_disallowed;
2042
2043#define DOT11F_TLV_ASSOC_DISALLOWED (4)
2044
2045/* N.B. These #defines do *not* include the ID & length */
2046#define DOT11F_TLV_ASSOC_DISALLOWED_MIN_LEN (1)
2047
2048#define DOT11F_TLV_ASSOC_DISALLOWED_MAX_LEN (1)
2049
2050#ifdef __cplusplus
2051extern "C" {
2052#endif /* C++ */
2053uint32_t dot11f_unpack_tlv_assoc_disallowed(
2054 tpAniSirGlobal,
2055 uint8_t *,
2056 uint16_t,
2057 tDot11fTLVassoc_disallowed*);
2058
2059uint32_t dot11f_pack_tlv_assoc_disallowed(
2060 tpAniSirGlobal,
2061 tDot11fTLVassoc_disallowed *,
2062 uint8_t *,
2063 uint32_t,
2064 uint32_t*);
2065
2066uint32_t dot11f_get_packed_tlv_assoc_disallowed(
2067 tpAniSirGlobal,
2068 tDot11fTLVassoc_disallowed *,
2069 uint32_t*);
2070
2071#ifdef __cplusplus
2072}; /* End extern "C". */
2073#endif /* C++ */
2074
2075/* ID 8 (0x0008) */
2076typedef struct sDot11fTLVassoc_retry_delay {
2077 uint8_t present;
2078 uint16_t delay;
2079} tDot11fTLVassoc_retry_delay;
2080
2081#define DOT11F_TLV_ASSOC_RETRY_DELAY (8)
2082
2083/* N.B. These #defines do *not* include the ID & length */
2084#define DOT11F_TLV_ASSOC_RETRY_DELAY_MIN_LEN (2)
2085
2086#define DOT11F_TLV_ASSOC_RETRY_DELAY_MAX_LEN (2)
2087
2088#ifdef __cplusplus
2089extern "C" {
2090#endif /* C++ */
2091uint32_t dot11f_unpack_tlv_assoc_retry_delay(
2092 tpAniSirGlobal,
2093 uint8_t *,
2094 uint16_t,
2095 tDot11fTLVassoc_retry_delay*);
2096
2097uint32_t dot11f_pack_tlv_assoc_retry_delay(
2098 tpAniSirGlobal,
2099 tDot11fTLVassoc_retry_delay *,
2100 uint8_t *,
2101 uint32_t,
2102 uint32_t*);
2103
2104uint32_t dot11f_get_packed_tlv_assoc_retry_delay(
2105 tpAniSirGlobal,
2106 tDot11fTLVassoc_retry_delay *,
2107 uint32_t*);
2108
2109#ifdef __cplusplus
2110}; /* End extern "C". */
2111#endif /* C++ */
2112
2113/* ID 3 (0x0003) */
2114typedef struct sDot11fTLVcellular_data_cap {
2115 uint8_t present;
2116 uint8_t cellular_connectivity;
2117} tDot11fTLVcellular_data_cap;
2118
2119#define DOT11F_TLV_CELLULAR_DATA_CAP (3)
2120
2121/* N.B. These #defines do *not* include the ID & length */
2122#define DOT11F_TLV_CELLULAR_DATA_CAP_MIN_LEN (1)
2123
2124#define DOT11F_TLV_CELLULAR_DATA_CAP_MAX_LEN (1)
2125
2126#ifdef __cplusplus
2127extern "C" {
2128#endif /* C++ */
2129uint32_t dot11f_unpack_tlv_cellular_data_cap(
2130 tpAniSirGlobal,
2131 uint8_t *,
2132 uint16_t,
2133 tDot11fTLVcellular_data_cap*);
2134
2135uint32_t dot11f_pack_tlv_cellular_data_cap(
2136 tpAniSirGlobal,
2137 tDot11fTLVcellular_data_cap *,
2138 uint8_t *,
2139 uint32_t,
2140 uint32_t*);
2141
2142uint32_t dot11f_get_packed_tlv_cellular_data_cap(
2143 tpAniSirGlobal,
2144 tDot11fTLVcellular_data_cap *,
2145 uint32_t*);
2146
2147#ifdef __cplusplus
2148}; /* End extern "C". */
2149#endif /* C++ */
2150
2151/* ID 5 (0x0005) */
2152typedef struct sDot11fTLVcellular_data_con_pref {
2153 uint8_t present;
2154 uint8_t cellular_preference;
2155} tDot11fTLVcellular_data_con_pref;
2156
2157#define DOT11F_TLV_CELLULAR_DATA_CON_PREF (5)
2158
2159/* N.B. These #defines do *not* include the ID & length */
2160#define DOT11F_TLV_CELLULAR_DATA_CON_PREF_MIN_LEN (1)
2161
2162#define DOT11F_TLV_CELLULAR_DATA_CON_PREF_MAX_LEN (1)
2163
2164#ifdef __cplusplus
2165extern "C" {
2166#endif /* C++ */
2167uint32_t dot11f_unpack_tlv_cellular_data_con_pref(
2168 tpAniSirGlobal,
2169 uint8_t *,
2170 uint16_t,
2171 tDot11fTLVcellular_data_con_pref*);
2172
2173uint32_t dot11f_pack_tlv_cellular_data_con_pref(
2174 tpAniSirGlobal,
2175 tDot11fTLVcellular_data_con_pref *,
2176 uint8_t *,
2177 uint32_t,
2178 uint32_t*);
2179
2180uint32_t dot11f_get_packed_tlv_cellular_data_con_pref(
2181 tpAniSirGlobal,
2182 tDot11fTLVcellular_data_con_pref *,
2183 uint32_t*);
2184
2185#ifdef __cplusplus
2186}; /* End extern "C". */
2187#endif /* C++ */
2188
2189/* ID 1 (0x0001) */
2190typedef struct sDot11fTLVmbo_ap_cap {
2191 uint8_t present;
2192 uint8_t mbo_cap_ind;
2193} tDot11fTLVmbo_ap_cap;
2194
2195#define DOT11F_TLV_MBO_AP_CAP (1)
2196
2197/* N.B. These #defines do *not* include the ID & length */
2198#define DOT11F_TLV_MBO_AP_CAP_MIN_LEN (1)
2199
2200#define DOT11F_TLV_MBO_AP_CAP_MAX_LEN (1)
2201
2202#ifdef __cplusplus
2203extern "C" {
2204#endif /* C++ */
2205uint32_t dot11f_unpack_tlv_mbo_ap_cap(
2206 tpAniSirGlobal,
2207 uint8_t *,
2208 uint16_t,
2209 tDot11fTLVmbo_ap_cap*);
2210
2211uint32_t dot11f_pack_tlv_mbo_ap_cap(
2212 tpAniSirGlobal,
2213 tDot11fTLVmbo_ap_cap *,
2214 uint8_t *,
2215 uint32_t,
2216 uint32_t*);
2217
2218uint32_t dot11f_get_packed_tlv_mbo_ap_cap(
2219 tpAniSirGlobal,
2220 tDot11fTLVmbo_ap_cap *,
2221 uint32_t*);
2222
2223#ifdef __cplusplus
2224}; /* End extern "C". */
2225#endif /* C++ */
2226
2227/* ID 2 (0x0002) */
2228typedef struct sDot11fTLVnon_prefferd_chan_rep {
2229 uint8_t present;
2230 uint8_t oper_class;
2231 uint8_t num_channel_report;
2232 uint8_t channel_report[254];
2233} tDot11fTLVnon_prefferd_chan_rep;
2234
2235#define DOT11F_TLV_NON_PREFFERD_CHAN_REP (2)
2236
2237/* N.B. These #defines do *not* include the ID & length */
2238#define DOT11F_TLV_NON_PREFFERD_CHAN_REP_MIN_LEN (4)
2239
2240#define DOT11F_TLV_NON_PREFFERD_CHAN_REP_MAX_LEN (255)
2241
2242#ifdef __cplusplus
2243extern "C" {
2244#endif /* C++ */
2245uint32_t dot11f_unpack_tlv_non_prefferd_chan_rep(
2246 tpAniSirGlobal,
2247 uint8_t *,
2248 uint16_t,
2249 tDot11fTLVnon_prefferd_chan_rep*);
2250
2251uint32_t dot11f_pack_tlv_non_prefferd_chan_rep(
2252 tpAniSirGlobal,
2253 tDot11fTLVnon_prefferd_chan_rep *,
2254 uint8_t *,
2255 uint32_t,
2256 uint32_t*);
2257
2258uint32_t dot11f_get_packed_tlv_non_prefferd_chan_rep(
2259 tpAniSirGlobal,
2260 tDot11fTLVnon_prefferd_chan_rep *,
2261 uint32_t*);
2262
2263#ifdef __cplusplus
2264}; /* End extern "C". */
2265#endif /* C++ */
2266
2267/* ID 101 (0x0065) */
2268typedef struct sDot11fTLVoce_cap {
2269 uint8_t present;
2270 uint8_t oce_release:3;
2271 uint8_t is_sta_cfon:1;
2272 uint8_t non_oce_ap_present:1;
2273 uint8_t reserved:3;
2274} tDot11fTLVoce_cap;
2275
2276#define DOT11F_TLV_OCE_CAP (101)
2277
2278/* N.B. These #defines do *not* include the ID & length */
2279#define DOT11F_TLV_OCE_CAP_MIN_LEN (1)
2280
2281#define DOT11F_TLV_OCE_CAP_MAX_LEN (1)
2282
2283#ifdef __cplusplus
2284extern "C" {
2285#endif /* C++ */
2286uint32_t dot11f_unpack_tlv_oce_cap(
2287 tpAniSirGlobal,
2288 uint8_t *,
2289 uint16_t,
2290 tDot11fTLVoce_cap*);
2291
2292uint32_t dot11f_pack_tlv_oce_cap(
2293 tpAniSirGlobal,
2294 tDot11fTLVoce_cap *,
2295 uint8_t *,
2296 uint32_t,
2297 uint32_t*);
2298
2299uint32_t dot11f_get_packed_tlv_oce_cap(
2300 tpAniSirGlobal,
2301 tDot11fTLVoce_cap *,
2302 uint32_t*);
2303
2304#ifdef __cplusplus
2305}; /* End extern "C". */
2306#endif /* C++ */
2307
2308/* ID 103 (0x0067) */
2309typedef struct sDot11fTLVreduced_wan_metrics {
2310 uint8_t present;
2311 uint8_t downlink_av_cap:4;
2312 uint8_t uplink_av_cap:4;
2313} tDot11fTLVreduced_wan_metrics;
2314
2315#define DOT11F_TLV_REDUCED_WAN_METRICS (103)
2316
2317/* N.B. These #defines do *not* include the ID & length */
2318#define DOT11F_TLV_REDUCED_WAN_METRICS_MIN_LEN (1)
2319
2320#define DOT11F_TLV_REDUCED_WAN_METRICS_MAX_LEN (1)
2321
2322#ifdef __cplusplus
2323extern "C" {
2324#endif /* C++ */
2325uint32_t dot11f_unpack_tlv_reduced_wan_metrics(
2326 tpAniSirGlobal,
2327 uint8_t *,
2328 uint16_t,
2329 tDot11fTLVreduced_wan_metrics*);
2330
2331uint32_t dot11f_pack_tlv_reduced_wan_metrics(
2332 tpAniSirGlobal,
2333 tDot11fTLVreduced_wan_metrics *,
2334 uint8_t *,
2335 uint32_t,
2336 uint32_t*);
2337
2338uint32_t dot11f_get_packed_tlv_reduced_wan_metrics(
2339 tpAniSirGlobal,
2340 tDot11fTLVreduced_wan_metrics *,
2341 uint32_t*);
2342
2343#ifdef __cplusplus
2344}; /* End extern "C". */
2345#endif /* C++ */
2346
2347/* ID 102 (0x0066) */
2348typedef struct sDot11fTLVrssi_assoc_rej {
2349 uint8_t present;
2350 uint8_t delta_rssi;
2351 uint8_t retry_delay;
2352} tDot11fTLVrssi_assoc_rej;
2353
2354#define DOT11F_TLV_RSSI_ASSOC_REJ (102)
2355
2356/* N.B. These #defines do *not* include the ID & length */
2357#define DOT11F_TLV_RSSI_ASSOC_REJ_MIN_LEN (2)
2358
2359#define DOT11F_TLV_RSSI_ASSOC_REJ_MAX_LEN (2)
2360
2361#ifdef __cplusplus
2362extern "C" {
2363#endif /* C++ */
2364uint32_t dot11f_unpack_tlv_rssi_assoc_rej(
2365 tpAniSirGlobal,
2366 uint8_t *,
2367 uint16_t,
2368 tDot11fTLVrssi_assoc_rej*);
2369
2370uint32_t dot11f_pack_tlv_rssi_assoc_rej(
2371 tpAniSirGlobal,
2372 tDot11fTLVrssi_assoc_rej *,
2373 uint8_t *,
2374 uint32_t,
2375 uint32_t*);
2376
2377uint32_t dot11f_get_packed_tlv_rssi_assoc_rej(
2378 tpAniSirGlobal,
2379 tDot11fTLVrssi_assoc_rej *,
2380 uint32_t*);
2381
2382#ifdef __cplusplus
2383}; /* End extern "C". */
2384#endif /* C++ */
2385
2386/* ID 6 (0x0006) */
2387typedef struct sDot11fTLVtransition_reason {
2388 uint8_t present;
2389 uint8_t transition_reason_code;
2390} tDot11fTLVtransition_reason;
2391
2392#define DOT11F_TLV_TRANSITION_REASON (6)
2393
2394/* N.B. These #defines do *not* include the ID & length */
2395#define DOT11F_TLV_TRANSITION_REASON_MIN_LEN (1)
2396
2397#define DOT11F_TLV_TRANSITION_REASON_MAX_LEN (1)
2398
2399#ifdef __cplusplus
2400extern "C" {
2401#endif /* C++ */
2402uint32_t dot11f_unpack_tlv_transition_reason(
2403 tpAniSirGlobal,
2404 uint8_t *,
2405 uint16_t,
2406 tDot11fTLVtransition_reason*);
2407
2408uint32_t dot11f_pack_tlv_transition_reason(
2409 tpAniSirGlobal,
2410 tDot11fTLVtransition_reason *,
2411 uint8_t *,
2412 uint32_t,
2413 uint32_t*);
2414
2415uint32_t dot11f_get_packed_tlv_transition_reason(
2416 tpAniSirGlobal,
2417 tDot11fTLVtransition_reason *,
2418 uint32_t*);
2419
2420#ifdef __cplusplus
2421}; /* End extern "C". */
2422#endif /* C++ */
2423
2424/* ID 7 (0x0007) */
2425typedef struct sDot11fTLVtransition_reject_reason {
2426 uint8_t present;
2427 uint8_t transition_reject_code;
2428} tDot11fTLVtransition_reject_reason;
2429
2430#define DOT11F_TLV_TRANSITION_REJECT_REASON (7)
2431
2432/* N.B. These #defines do *not* include the ID & length */
2433#define DOT11F_TLV_TRANSITION_REJECT_REASON_MIN_LEN (1)
2434
2435#define DOT11F_TLV_TRANSITION_REJECT_REASON_MAX_LEN (1)
2436
2437#ifdef __cplusplus
2438extern "C" {
2439#endif /* C++ */
2440uint32_t dot11f_unpack_tlv_transition_reject_reason(
2441 tpAniSirGlobal,
2442 uint8_t *,
2443 uint16_t,
2444 tDot11fTLVtransition_reject_reason*);
2445
2446uint32_t dot11f_pack_tlv_transition_reject_reason(
2447 tpAniSirGlobal,
2448 tDot11fTLVtransition_reject_reason *,
2449 uint8_t *,
2450 uint32_t,
2451 uint32_t*);
2452
2453uint32_t dot11f_get_packed_tlv_transition_reject_reason(
2454 tpAniSirGlobal,
2455 tDot11fTLVtransition_reject_reason *,
2456 uint32_t*);
2457
2458#ifdef __cplusplus
2459}; /* End extern "C". */
2460#endif /* C++ */
2461
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002462/* ID 16 (0x0010) */
2463typedef struct sDot11fTLVP2PInterface {
2464 uint8_t present;
2465 uint8_t P2PDeviceAddress[6];
2466} tDot11fTLVP2PInterface;
2467
2468#define DOT11F_TLV_P2PINTERFACE (16)
2469
2470/* N.B. These #defines do *not* include the ID & length */
2471#define DOT11F_TLV_P2PINTERFACE_MIN_LEN (7)
2472
2473#define DOT11F_TLV_P2PINTERFACE_MAX_LEN (7)
2474
2475#ifdef __cplusplus
2476extern "C" {
2477#endif /* C++ */
2478uint32_t dot11f_unpack_tlv_p2_p_interface(
2479 tpAniSirGlobal,
2480 uint8_t *,
2481 uint16_t,
2482 tDot11fTLVP2PInterface*);
2483
2484uint32_t dot11f_pack_tlv_p2_p_interface(
2485 tpAniSirGlobal,
2486 tDot11fTLVP2PInterface *,
2487 uint8_t *,
2488 uint32_t,
2489 uint32_t*);
2490
2491uint32_t dot11f_get_packed_tlv_P2PInterface(
2492 tpAniSirGlobal,
2493 tDot11fTLVP2PInterface *,
2494 uint32_t*);
2495
2496#ifdef __cplusplus
2497}; /* End extern "C". */
2498#endif /* C++ */
2499
2500/* ID 10 (0x000a) */
2501typedef struct sDot11fTLVP2PManageability {
2502 uint8_t present;
2503 uint8_t manageability;
2504} tDot11fTLVP2PManageability;
2505
2506#define DOT11F_TLV_P2PMANAGEABILITY (10)
2507
2508/* N.B. These #defines do *not* include the ID & length */
2509#define DOT11F_TLV_P2PMANAGEABILITY_MIN_LEN (2)
2510
2511#define DOT11F_TLV_P2PMANAGEABILITY_MAX_LEN (2)
2512
2513#ifdef __cplusplus
2514extern "C" {
2515#endif /* C++ */
2516uint32_t dot11f_unpack_tlv_P2PManageability(
2517 tpAniSirGlobal,
2518 uint8_t *,
2519 uint16_t,
2520 tDot11fTLVP2PManageability*);
2521
2522uint32_t dot11f_pack_tlv_p2_p_manageability(
2523 tpAniSirGlobal,
2524 tDot11fTLVP2PManageability *,
2525 uint8_t *,
2526 uint32_t,
2527 uint32_t*);
2528
2529uint32_t dot11f_get_packed_tlv_P2PManageability(
2530 tpAniSirGlobal,
2531 tDot11fTLVP2PManageability *,
2532 uint32_t*);
2533
2534#ifdef __cplusplus
2535}; /* End extern "C". */
2536#endif /* C++ */
2537/*********************************************************************
2538 * Information Elements *
2539 ********************************************************************/
2540
2541
2542/* EID 2 (0x02) */
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002543typedef struct sDot11fIEGTK {
2544 uint8_t present;
2545 uint16_t keyId:2;
2546 uint16_t reserved:14;
2547 uint8_t keyLength;
2548 uint8_t RSC[8];
2549 uint8_t num_key;
2550 uint8_t key[32];
2551} tDot11fIEGTK;
2552
2553#define DOT11F_EID_GTK (2)
2554
2555/* N.B. These #defines do *not* include the EID & length */
2556#define DOT11F_IE_GTK_MIN_LEN (16)
2557
2558#define DOT11F_IE_GTK_MAX_LEN (43)
2559
2560#ifdef __cplusplus
2561extern "C" {
2562#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002563__must_check uint32_t dot11f_unpack_ie_gtk(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002564 tpAniSirGlobal,
2565 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002566 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302567 tDot11fIEGTK*,
2568 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002569
2570uint32_t dot11f_pack_ie_gtk(
2571 tpAniSirGlobal,
2572 tDot11fIEGTK *,
2573 uint8_t *,
2574 uint32_t,
2575 uint32_t*);
2576
2577uint32_t dot11f_get_packed_ie_GTK(
2578 tpAniSirGlobal,
2579 tDot11fIEGTK *,
2580 uint32_t*);
2581
2582#ifdef __cplusplus
2583}; /* End extern "C". */
2584#endif /* C++ */
2585
2586/* EID 4 (0x04) */
2587typedef struct sDot11fIEIGTK {
2588 uint8_t present;
2589 uint8_t keyID[2];
2590 uint8_t IPN[6];
2591 uint8_t keyLength;
2592 uint8_t key[24];
2593} tDot11fIEIGTK;
2594
2595#define DOT11F_EID_IGTK (4)
2596
2597/* N.B. These #defines do *not* include the EID & length */
2598#define DOT11F_IE_IGTK_MIN_LEN (33)
2599
2600#define DOT11F_IE_IGTK_MAX_LEN (33)
2601
2602#ifdef __cplusplus
2603extern "C" {
2604#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002605__must_check uint32_t dot11f_unpack_ie_igtk(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002606 tpAniSirGlobal,
2607 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002608 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302609 tDot11fIEIGTK*,
2610 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002611
2612uint32_t dot11f_pack_ie_igtk(
2613 tpAniSirGlobal,
2614 tDot11fIEIGTK *,
2615 uint8_t *,
2616 uint32_t,
2617 uint32_t*);
2618
2619uint32_t dot11f_get_packed_ie_IGTK(
2620 tpAniSirGlobal,
2621 tDot11fIEIGTK *,
2622 uint32_t*);
2623
2624#ifdef __cplusplus
2625}; /* End extern "C". */
2626#endif /* C++ */
2627
2628/* EID 3 (0x03) */
2629typedef struct sDot11fIER0KH_ID {
2630 uint8_t present;
2631 uint8_t num_PMK_R0_ID;
2632 uint8_t PMK_R0_ID[48];
2633} tDot11fIER0KH_ID;
2634
2635#define DOT11F_EID_R0KH_ID (3)
2636
2637/* N.B. These #defines do *not* include the EID & length */
2638#define DOT11F_IE_R0KH_ID_MIN_LEN (1)
2639
2640#define DOT11F_IE_R0KH_ID_MAX_LEN (48)
2641
2642#ifdef __cplusplus
2643extern "C" {
2644#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002645__must_check uint32_t dot11f_unpack_ie_r0_kh_id(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002646 tpAniSirGlobal,
2647 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002648 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302649 tDot11fIER0KH_ID*,
2650 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002651
2652uint32_t dot11f_pack_ie_r0_kh_id(
2653 tpAniSirGlobal,
2654 tDot11fIER0KH_ID *,
2655 uint8_t *,
2656 uint32_t,
2657 uint32_t*);
2658
2659uint32_t dot11f_get_packed_ie_R0KH_ID(
2660 tpAniSirGlobal,
2661 tDot11fIER0KH_ID *,
2662 uint32_t*);
2663
2664#ifdef __cplusplus
2665}; /* End extern "C". */
2666#endif /* C++ */
2667
2668/* EID 1 (0x01) */
2669typedef struct sDot11fIER1KH_ID {
2670 uint8_t present;
2671 uint8_t PMK_R1_ID[6];
2672} tDot11fIER1KH_ID;
2673
2674#define DOT11F_EID_R1KH_ID (1)
2675
2676/* N.B. These #defines do *not* include the EID & length */
2677#define DOT11F_IE_R1KH_ID_MIN_LEN (6)
2678
2679#define DOT11F_IE_R1KH_ID_MAX_LEN (6)
2680
2681#ifdef __cplusplus
2682extern "C" {
2683#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002684__must_check uint32_t dot11f_unpack_ie_r1_kh_id(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002685 tpAniSirGlobal,
2686 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002687 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302688 tDot11fIER1KH_ID*,
2689 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002690
2691uint32_t dot11f_pack_ie_r1_kh_id(
2692 tpAniSirGlobal,
2693 tDot11fIER1KH_ID *,
2694 uint8_t *,
2695 uint32_t,
2696 uint32_t*);
2697
2698uint32_t dot11f_get_packed_ie_R1KH_ID(
2699 tpAniSirGlobal,
2700 tDot11fIER1KH_ID *,
2701 uint32_t*);
2702
2703#ifdef __cplusplus
2704}; /* End extern "C". */
2705#endif /* C++ */
2706
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002707/* EID 51 (0x33) */
2708typedef struct sDot11fIEAPChannelReport {
2709 uint8_t present;
2710 uint8_t regulatoryClass;
2711 uint8_t num_channelList;
2712 uint8_t channelList[50];
2713} tDot11fIEAPChannelReport;
2714
2715#define DOT11F_EID_APCHANNELREPORT (51)
2716
2717/* N.B. These #defines do *not* include the EID & length */
2718#define DOT11F_IE_APCHANNELREPORT_MIN_LEN (1)
2719
2720#define DOT11F_IE_APCHANNELREPORT_MAX_LEN (51)
2721
2722#ifdef __cplusplus
2723extern "C" {
2724#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002725__must_check uint32_t dot11f_unpack_ie_ap_channel_report(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002726 tpAniSirGlobal,
2727 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002728 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302729 tDot11fIEAPChannelReport*,
2730 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002731
2732uint32_t dot11f_pack_ie_ap_channel_report(
2733 tpAniSirGlobal,
2734 tDot11fIEAPChannelReport *,
2735 uint8_t *,
2736 uint32_t,
2737 uint32_t*);
2738
2739uint32_t dot11f_get_packed_ie_APChannelReport(
2740 tpAniSirGlobal,
2741 tDot11fIEAPChannelReport *,
2742 uint32_t*);
2743
2744#ifdef __cplusplus
2745}; /* End extern "C". */
2746#endif /* C++ */
2747
2748/* EID 2 (0x02) */
2749typedef struct sDot11fIEBcnReportingDetail {
2750 uint8_t present;
2751 uint8_t reportingDetail;
2752} tDot11fIEBcnReportingDetail;
2753
2754#define DOT11F_EID_BCNREPORTINGDETAIL (2)
2755
2756/* N.B. These #defines do *not* include the EID & length */
2757#define DOT11F_IE_BCNREPORTINGDETAIL_MIN_LEN (1)
2758
2759#define DOT11F_IE_BCNREPORTINGDETAIL_MAX_LEN (1)
2760
2761#ifdef __cplusplus
2762extern "C" {
2763#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002764__must_check uint32_t dot11f_unpack_ie_bcn_reporting_detail(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002765 tpAniSirGlobal,
2766 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002767 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302768 tDot11fIEBcnReportingDetail*,
2769 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002770
2771uint32_t dot11f_pack_ie_bcn_reporting_detail(
2772 tpAniSirGlobal,
2773 tDot11fIEBcnReportingDetail *,
2774 uint8_t *,
2775 uint32_t,
2776 uint32_t*);
2777
2778uint32_t dot11f_get_packed_ie_BcnReportingDetail(
2779 tpAniSirGlobal,
2780 tDot11fIEBcnReportingDetail *,
2781 uint32_t*);
2782
2783#ifdef __cplusplus
2784}; /* End extern "C". */
2785#endif /* C++ */
2786
2787/* EID 1 (0x01) */
2788typedef struct sDot11fIEBeaconReportFrmBody {
2789 uint8_t present;
2790 uint8_t num_reportedFields;
2791 uint8_t reportedFields[224];
2792} tDot11fIEBeaconReportFrmBody;
2793
2794#define DOT11F_EID_BEACONREPORTFRMBODY (1)
2795
2796/* N.B. These #defines do *not* include the EID & length */
2797#define DOT11F_IE_BEACONREPORTFRMBODY_MIN_LEN (0)
2798
2799#define DOT11F_IE_BEACONREPORTFRMBODY_MAX_LEN (224)
2800
2801#ifdef __cplusplus
2802extern "C" {
2803#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002804__must_check uint32_t dot11f_unpack_ie_beacon_report_frm_body(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002805 tpAniSirGlobal,
2806 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002807 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302808 tDot11fIEBeaconReportFrmBody*,
2809 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002810
2811uint32_t dot11f_pack_ie_beacon_report_frm_body(
2812 tpAniSirGlobal,
2813 tDot11fIEBeaconReportFrmBody *,
2814 uint8_t *,
2815 uint32_t,
2816 uint32_t*);
2817
2818uint32_t dot11f_get_packed_ie_BeaconReportFrmBody(
2819 tpAniSirGlobal,
2820 tDot11fIEBeaconReportFrmBody *,
2821 uint32_t*);
2822
2823#ifdef __cplusplus
2824}; /* End extern "C". */
2825#endif /* C++ */
2826
2827/* EID 1 (0x01) */
2828typedef struct sDot11fIEBeaconReporting {
2829 uint8_t present;
2830 uint8_t reportingCondition;
2831 uint8_t threshold;
2832} tDot11fIEBeaconReporting;
2833
2834#define DOT11F_EID_BEACONREPORTING (1)
2835
2836/* N.B. These #defines do *not* include the EID & length */
2837#define DOT11F_IE_BEACONREPORTING_MIN_LEN (2)
2838
2839#define DOT11F_IE_BEACONREPORTING_MAX_LEN (2)
2840
2841#ifdef __cplusplus
2842extern "C" {
2843#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002844__must_check uint32_t dot11f_unpack_ie_beacon_reporting(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002845 tpAniSirGlobal,
2846 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002847 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302848 tDot11fIEBeaconReporting*,
2849 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002850
2851uint32_t dot11f_pack_ie_beacon_reporting(
2852 tpAniSirGlobal,
2853 tDot11fIEBeaconReporting *,
2854 uint8_t *,
2855 uint32_t,
2856 uint32_t*);
2857
2858uint32_t dot11f_get_packed_ie_BeaconReporting(
2859 tpAniSirGlobal,
2860 tDot11fIEBeaconReporting *,
2861 uint32_t*);
2862
2863#ifdef __cplusplus
2864}; /* End extern "C". */
2865#endif /* C++ */
2866
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08002867/* EID 2 (0x02) */
2868typedef struct sDot11fIECondensedCountryStr {
2869 uint8_t present;
2870 uint8_t countryStr[2];
2871} tDot11fIECondensedCountryStr;
2872
2873#define DOT11F_EID_CONDENSEDCOUNTRYSTR (2)
2874
2875/* N.B. These #defines do *not* include the EID & length */
2876#define DOT11F_IE_CONDENSEDCOUNTRYSTR_MIN_LEN (2)
2877
2878#define DOT11F_IE_CONDENSEDCOUNTRYSTR_MAX_LEN (2)
2879
2880#ifdef __cplusplus
2881extern "C" {
2882#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002883__must_check uint32_t dot11f_unpack_ie_condensed_country_str(
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08002884 tpAniSirGlobal,
2885 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002886 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302887 tDot11fIECondensedCountryStr*,
2888 bool);
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08002889
2890uint32_t dot11f_pack_ie_condensed_country_str(
2891 tpAniSirGlobal,
2892 tDot11fIECondensedCountryStr *,
2893 uint8_t *,
2894 uint32_t,
2895 uint32_t*);
2896
2897uint32_t dot11f_get_packed_ie_CondensedCountryStr(
2898 tpAniSirGlobal,
2899 tDot11fIECondensedCountryStr *,
2900 uint32_t*);
2901
2902#ifdef __cplusplus
2903}; /* End extern "C". */
2904#endif /* C++ */
2905
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002906/* EID 66 (0x42) */
2907typedef struct sDot11fIEMeasurementPilot {
2908 uint8_t present;
2909 uint8_t measurementPilot;
2910 uint8_t num_vendorSpecific;
2911 uint8_t vendorSpecific[255];
2912} tDot11fIEMeasurementPilot;
2913
2914#define DOT11F_EID_MEASUREMENTPILOT (66)
2915
2916/* N.B. These #defines do *not* include the EID & length */
2917#define DOT11F_IE_MEASUREMENTPILOT_MIN_LEN (1)
2918
2919#define DOT11F_IE_MEASUREMENTPILOT_MAX_LEN (256)
2920
2921#ifdef __cplusplus
2922extern "C" {
2923#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002924__must_check uint32_t dot11f_unpack_ie_measurement_pilot(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002925 tpAniSirGlobal,
2926 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002927 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302928 tDot11fIEMeasurementPilot*,
2929 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002930
2931uint32_t dot11f_pack_ie_measurement_pilot(
2932 tpAniSirGlobal,
2933 tDot11fIEMeasurementPilot *,
2934 uint8_t *,
2935 uint32_t,
2936 uint32_t*);
2937
2938uint32_t dot11f_get_packed_ie_MeasurementPilot(
2939 tpAniSirGlobal,
2940 tDot11fIEMeasurementPilot *,
2941 uint32_t*);
2942
2943#ifdef __cplusplus
2944}; /* End extern "C". */
2945#endif /* C++ */
2946
2947/* EID 71 (0x47) */
2948typedef struct sDot11fIEMultiBssid {
2949 uint8_t present;
2950 uint8_t maxBSSIDIndicator;
2951 uint8_t num_vendorSpecific;
2952 uint8_t vendorSpecific[255];
2953} tDot11fIEMultiBssid;
2954
2955#define DOT11F_EID_MULTIBSSID (71)
2956
2957/* N.B. These #defines do *not* include the EID & length */
2958#define DOT11F_IE_MULTIBSSID_MIN_LEN (1)
2959
2960#define DOT11F_IE_MULTIBSSID_MAX_LEN (256)
2961
2962#ifdef __cplusplus
2963extern "C" {
2964#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08002965__must_check uint32_t dot11f_unpack_ie_multi_bssid(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002966 tpAniSirGlobal,
2967 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07002968 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05302969 tDot11fIEMultiBssid*,
2970 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002971
2972uint32_t dot11f_pack_ie_multi_bssid(
2973 tpAniSirGlobal,
2974 tDot11fIEMultiBssid *,
2975 uint8_t *,
2976 uint32_t,
2977 uint32_t*);
2978
2979uint32_t dot11f_get_packed_ie_MultiBssid(
2980 tpAniSirGlobal,
2981 tDot11fIEMultiBssid *,
2982 uint32_t*);
2983
2984#ifdef __cplusplus
2985}; /* End extern "C". */
2986#endif /* C++ */
2987
2988/* EID 57 (0x39) */
2989typedef struct sDot11fIERICData {
2990 uint8_t present;
2991 uint8_t Identifier;
2992 uint8_t resourceDescCount;
2993 uint16_t statusCode;
2994} tDot11fIERICData;
2995
2996#define DOT11F_EID_RICDATA (57)
2997
2998/* N.B. These #defines do *not* include the EID & length */
2999#define DOT11F_IE_RICDATA_MIN_LEN (4)
3000
3001#define DOT11F_IE_RICDATA_MAX_LEN (4)
3002
3003#ifdef __cplusplus
3004extern "C" {
3005#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003006__must_check uint32_t dot11f_unpack_ie_ric_data(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003007 tpAniSirGlobal,
3008 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003009 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303010 tDot11fIERICData*,
3011 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003012
3013uint32_t dot11f_pack_ie_ric_data(
3014 tpAniSirGlobal,
3015 tDot11fIERICData *,
3016 uint8_t *,
3017 uint32_t,
3018 uint32_t*);
3019
3020uint32_t dot11f_get_packed_ie_RICData(
3021 tpAniSirGlobal,
3022 tDot11fIERICData *,
3023 uint32_t*);
3024
3025#ifdef __cplusplus
3026}; /* End extern "C". */
3027#endif /* C++ */
3028
3029/* EID 75 (0x4b) */
3030typedef struct sDot11fIERICDescriptor {
3031 uint8_t present;
3032 uint8_t resourceType;
3033 uint8_t num_variableData;
3034 uint8_t variableData[255];
3035} tDot11fIERICDescriptor;
3036
3037#define DOT11F_EID_RICDESCRIPTOR (75)
3038
3039/* N.B. These #defines do *not* include the EID & length */
3040#define DOT11F_IE_RICDESCRIPTOR_MIN_LEN (1)
3041
3042#define DOT11F_IE_RICDESCRIPTOR_MAX_LEN (256)
3043
3044#ifdef __cplusplus
3045extern "C" {
3046#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003047__must_check uint32_t dot11f_unpack_ie_ric_descriptor(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003048 tpAniSirGlobal,
3049 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003050 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303051 tDot11fIERICDescriptor*,
3052 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003053
3054uint32_t dot11f_pack_ie_ric_descriptor(
3055 tpAniSirGlobal,
3056 tDot11fIERICDescriptor *,
3057 uint8_t *,
3058 uint32_t,
3059 uint32_t*);
3060
3061uint32_t dot11f_get_packed_ie_RICDescriptor(
3062 tpAniSirGlobal,
3063 tDot11fIERICDescriptor *,
3064 uint32_t*);
3065
3066#ifdef __cplusplus
3067}; /* End extern "C". */
3068#endif /* C++ */
3069
3070/* EID 70 (0x46) */
3071typedef struct sDot11fIERRMEnabledCap {
3072 uint8_t present;
3073 uint8_t LinkMeasurement:1;
3074 uint8_t NeighborRpt:1;
3075 uint8_t parallel:1;
3076 uint8_t repeated:1;
3077 uint8_t BeaconPassive:1;
3078 uint8_t BeaconActive:1;
3079 uint8_t BeaconTable:1;
3080 uint8_t BeaconRepCond:1;
3081 uint8_t FrameMeasurement:1;
3082 uint8_t ChannelLoad:1;
3083 uint8_t NoiseHistogram:1;
3084 uint8_t statistics:1;
3085 uint8_t LCIMeasurement:1;
3086 uint8_t LCIAzimuth:1;
3087 uint8_t TCMCapability:1;
3088 uint8_t triggeredTCM:1;
3089 uint8_t APChanReport:1;
3090 uint8_t RRMMIBEnabled:1;
3091 uint8_t operatingChanMax:3;
3092 uint8_t nonOperatinChanMax:3;
3093 uint8_t MeasurementPilot:3;
3094 uint8_t MeasurementPilotEnabled:1;
3095 uint8_t NeighborTSFOffset:1;
3096 uint8_t RCPIMeasurement:1;
3097 uint8_t RSNIMeasurement:1;
3098 uint8_t BssAvgAccessDelay:1;
3099 uint8_t BSSAvailAdmission:1;
3100 uint8_t AntennaInformation:1;
3101 uint8_t fine_time_meas_rpt:1;
3102 uint8_t lci_capability:1;
3103 uint8_t reserved:4;
3104} tDot11fIERRMEnabledCap;
3105
3106#define DOT11F_EID_RRMENABLEDCAP (70)
3107
3108/* N.B. These #defines do *not* include the EID & length */
3109#define DOT11F_IE_RRMENABLEDCAP_MIN_LEN (5)
3110
3111#define DOT11F_IE_RRMENABLEDCAP_MAX_LEN (5)
3112
3113#ifdef __cplusplus
3114extern "C" {
3115#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003116__must_check uint32_t dot11f_unpack_ie_rrm_enabled_cap(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003117 tpAniSirGlobal,
3118 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003119 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303120 tDot11fIERRMEnabledCap*,
3121 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003122
3123uint32_t dot11f_pack_ie_rrm_enabled_cap(
3124 tpAniSirGlobal,
3125 tDot11fIERRMEnabledCap *,
3126 uint8_t *,
3127 uint32_t,
3128 uint32_t*);
3129
3130uint32_t dot11f_get_packed_ie_RRMEnabledCap(
3131 tpAniSirGlobal,
3132 tDot11fIERRMEnabledCap *,
3133 uint32_t*);
3134
3135#ifdef __cplusplus
3136}; /* End extern "C". */
3137#endif /* C++ */
3138
3139/* EID 10 (0x0a) */
3140typedef struct sDot11fIERequestedInfo {
3141 uint8_t present;
3142 uint8_t num_requested_eids;
3143 uint8_t requested_eids[255];
3144} tDot11fIERequestedInfo;
3145
3146#define DOT11F_EID_REQUESTEDINFO (10)
3147
3148/* N.B. These #defines do *not* include the EID & length */
3149#define DOT11F_IE_REQUESTEDINFO_MIN_LEN (0)
3150
3151#define DOT11F_IE_REQUESTEDINFO_MAX_LEN (255)
3152
3153#ifdef __cplusplus
3154extern "C" {
3155#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003156__must_check uint32_t dot11f_unpack_ie_requested_info(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003157 tpAniSirGlobal,
3158 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003159 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303160 tDot11fIERequestedInfo*,
3161 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003162
3163uint32_t dot11f_pack_ie_requested_info(
3164 tpAniSirGlobal,
3165 tDot11fIERequestedInfo *,
3166 uint8_t *,
3167 uint32_t,
3168 uint32_t*);
3169
3170uint32_t dot11f_get_packed_ie_RequestedInfo(
3171 tpAniSirGlobal,
3172 tDot11fIERequestedInfo *,
3173 uint32_t*);
3174
3175#ifdef __cplusplus
3176}; /* End extern "C". */
3177#endif /* C++ */
3178
3179/* EID 0 (0x00) */
3180typedef struct sDot11fIESSID {
3181 uint8_t present;
3182 uint8_t num_ssid;
3183 uint8_t ssid[32];
3184} tDot11fIESSID;
3185
3186#define DOT11F_EID_SSID (0)
3187
3188/* N.B. These #defines do *not* include the EID & length */
3189#define DOT11F_IE_SSID_MIN_LEN (0)
3190
3191#define DOT11F_IE_SSID_MAX_LEN (32)
3192
3193#ifdef __cplusplus
3194extern "C" {
3195#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003196__must_check uint32_t dot11f_unpack_ie_ssid(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003197 tpAniSirGlobal,
3198 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003199 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303200 tDot11fIESSID*,
3201 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003202
3203uint32_t dot11f_pack_ie_ssid(
3204 tpAniSirGlobal,
3205 tDot11fIESSID *,
3206 uint8_t *,
3207 uint32_t,
3208 uint32_t*);
3209
3210uint32_t dot11f_get_packed_ie_SSID(
3211 tpAniSirGlobal,
3212 tDot11fIESSID *,
3213 uint32_t*);
3214
3215#ifdef __cplusplus
3216}; /* End extern "C". */
3217#endif /* C++ */
3218
3219/* EID 15 (0x0f) */
3220typedef struct sDot11fIESchedule {
3221 uint8_t present;
3222 uint16_t aggregation:1;
3223 uint16_t tsid:4;
3224 uint16_t direction:2;
3225 uint16_t reserved:9;
3226 uint32_t service_start_time;
3227 uint32_t service_interval;
3228 uint16_t max_service_dur;
3229 uint16_t spec_interval;
3230} tDot11fIESchedule;
3231
3232#define DOT11F_EID_SCHEDULE (15)
3233
3234/* N.B. These #defines do *not* include the EID & length */
3235#define DOT11F_IE_SCHEDULE_MIN_LEN (14)
3236
3237#define DOT11F_IE_SCHEDULE_MAX_LEN (14)
3238
3239#ifdef __cplusplus
3240extern "C" {
3241#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003242__must_check uint32_t dot11f_unpack_ie_schedule(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003243 tpAniSirGlobal,
3244 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003245 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303246 tDot11fIESchedule*,
3247 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003248
3249uint32_t dot11f_pack_ie_schedule(
3250 tpAniSirGlobal,
3251 tDot11fIESchedule *,
3252 uint8_t *,
3253 uint32_t,
3254 uint32_t*);
3255
3256uint32_t dot11f_get_packed_ie_Schedule(
3257 tpAniSirGlobal,
3258 tDot11fIESchedule *,
3259 uint32_t*);
3260
3261#ifdef __cplusplus
3262}; /* End extern "C". */
3263#endif /* C++ */
3264
3265/* EID 14 (0x0e) */
3266typedef struct sDot11fIETCLAS {
3267 uint8_t present;
3268 uint8_t user_priority;
3269 uint8_t classifier_type;
3270 uint8_t classifier_mask;
3271 union {
3272 struct {
3273 uint8_t source[6];
3274 uint8_t dest[6];
3275 uint16_t type;
3276 } EthParams; /* classifier_type = 0 */
3277 struct {
3278 uint8_t version;
3279 union {
3280 struct {
3281 uint8_t source[4];
3282 uint8_t dest[4];
3283 uint16_t src_port;
3284 uint16_t dest_port;
3285 uint8_t DSCP;
3286 uint8_t proto;
3287 uint8_t reserved;
3288 } IpV4Params; /* version = 4 */
3289 struct {
3290 uint8_t source[16];
3291 uint8_t dest[16];
3292 uint16_t src_port;
3293 uint16_t dest_port;
3294 uint8_t flow_label[3];
3295 } IpV6Params; /* version = 6 */
3296 } params;
3297 } IpParams; /* classifier_type = 1 */
3298 struct {
3299 uint16_t tag_type;
3300 } Params8021dq; /* classifier_type = 2 */
3301 } info;
3302} tDot11fIETCLAS;
3303
3304#define DOT11F_EID_TCLAS (14)
3305
3306/* N.B. These #defines do *not* include the EID & length */
3307#define DOT11F_IE_TCLAS_MIN_LEN (5)
3308
3309#define DOT11F_IE_TCLAS_MAX_LEN (43)
3310
3311#ifdef __cplusplus
3312extern "C" {
3313#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003314__must_check uint32_t dot11f_unpack_ie_tclas(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003315 tpAniSirGlobal,
3316 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003317 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303318 tDot11fIETCLAS*,
3319 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003320
3321uint32_t dot11f_pack_ie_tclas(
3322 tpAniSirGlobal,
3323 tDot11fIETCLAS *,
3324 uint8_t *,
3325 uint32_t,
3326 uint32_t*);
3327
3328uint32_t dot11f_get_packed_ietclas(
3329 tpAniSirGlobal,
3330 tDot11fIETCLAS *,
3331 uint32_t*);
3332
3333#ifdef __cplusplus
3334}; /* End extern "C". */
3335#endif /* C++ */
3336
3337/* EID 44 (0x2c) */
3338typedef struct sDot11fIETCLASSPROC {
3339 uint8_t present;
3340 uint8_t processing;
3341} tDot11fIETCLASSPROC;
3342
3343#define DOT11F_EID_TCLASSPROC (44)
3344
3345/* N.B. These #defines do *not* include the EID & length */
3346#define DOT11F_IE_TCLASSPROC_MIN_LEN (1)
3347
3348#define DOT11F_IE_TCLASSPROC_MAX_LEN (1)
3349
3350#ifdef __cplusplus
3351extern "C" {
3352#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003353__must_check uint32_t dot11f_unpack_ie_tclasSPROC(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003354 tpAniSirGlobal,
3355 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003356 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303357 tDot11fIETCLASSPROC*,
3358 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003359
3360uint32_t dot11f_pack_ie_tclassproc(
3361 tpAniSirGlobal,
3362 tDot11fIETCLASSPROC *,
3363 uint8_t *,
3364 uint32_t,
3365 uint32_t*);
3366
3367uint32_t dot11f_get_packed_ietclasSPROC(
3368 tpAniSirGlobal,
3369 tDot11fIETCLASSPROC *,
3370 uint32_t*);
3371
3372#ifdef __cplusplus
3373}; /* End extern "C". */
3374#endif /* C++ */
3375
3376/* EID 43 (0x2b) */
3377typedef struct sDot11fIETSDelay {
3378 uint8_t present;
3379 uint32_t delay;
3380} tDot11fIETSDelay;
3381
3382#define DOT11F_EID_TSDELAY (43)
3383
3384/* N.B. These #defines do *not* include the EID & length */
3385#define DOT11F_IE_TSDELAY_MIN_LEN (4)
3386
3387#define DOT11F_IE_TSDELAY_MAX_LEN (4)
3388
3389#ifdef __cplusplus
3390extern "C" {
3391#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003392__must_check uint32_t dot11f_unpack_ie_ts_delay(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003393 tpAniSirGlobal,
3394 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003395 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303396 tDot11fIETSDelay*,
3397 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003398
3399uint32_t dot11f_pack_ie_ts_delay(
3400 tpAniSirGlobal,
3401 tDot11fIETSDelay *,
3402 uint8_t *,
3403 uint32_t,
3404 uint32_t*);
3405
3406uint32_t dot11f_get_packed_ie_TSDelay(
3407 tpAniSirGlobal,
3408 tDot11fIETSDelay *,
3409 uint32_t*);
3410
3411#ifdef __cplusplus
3412}; /* End extern "C". */
3413#endif /* C++ */
3414
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08003415/* EID 1 (0x01) */
3416typedef struct sDot11fIETSFInfo {
3417 uint8_t present;
3418 uint16_t TsfOffset;
3419 uint16_t BeaconIntvl;
3420} tDot11fIETSFInfo;
3421
3422#define DOT11F_EID_TSFINFO (1)
3423
3424/* N.B. These #defines do *not* include the EID & length */
3425#define DOT11F_IE_TSFINFO_MIN_LEN (4)
3426
3427#define DOT11F_IE_TSFINFO_MAX_LEN (4)
3428
3429#ifdef __cplusplus
3430extern "C" {
3431#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003432__must_check uint32_t dot11f_unpack_ie_tsf_info(
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08003433 tpAniSirGlobal,
3434 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003435 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303436 tDot11fIETSFInfo*,
3437 bool);
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08003438
3439uint32_t dot11f_pack_ie_tsf_info(
3440 tpAniSirGlobal,
3441 tDot11fIETSFInfo *,
3442 uint8_t *,
3443 uint32_t,
3444 uint32_t*);
3445
3446uint32_t dot11f_get_packed_ie_TSFInfo(
3447 tpAniSirGlobal,
3448 tDot11fIETSFInfo *,
3449 uint32_t*);
3450
3451#ifdef __cplusplus
3452}; /* End extern "C". */
3453#endif /* C++ */
3454
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003455/* EID 13 (0x0d) */
3456typedef struct sDot11fIETSPEC {
3457 uint8_t present;
3458 uint16_t traffic_type:1;
3459 uint16_t tsid:4;
3460 uint16_t direction:2;
3461 uint16_t access_policy:2;
3462 uint16_t aggregation:1;
3463 uint16_t psb:1;
3464 uint16_t user_priority:3;
3465 uint16_t tsinfo_ack_pol:2;
3466 uint8_t schedule:1;
3467 uint8_t unused:7;
3468 uint16_t size:15;
3469 uint16_t fixed:1;
3470 uint16_t max_msdu_size;
3471 uint32_t min_service_int;
3472 uint32_t max_service_int;
3473 uint32_t inactivity_int;
3474 uint32_t suspension_int;
3475 uint32_t service_start_time;
3476 uint32_t min_data_rate;
3477 uint32_t mean_data_rate;
3478 uint32_t peak_data_rate;
3479 uint32_t burst_size;
3480 uint32_t delay_bound;
3481 uint32_t min_phy_rate;
3482 uint16_t surplus_bw_allowance;
3483 uint16_t medium_time;
3484} tDot11fIETSPEC;
3485
3486#define DOT11F_EID_TSPEC (13)
3487
3488/* N.B. These #defines do *not* include the EID & length */
3489#define DOT11F_IE_TSPEC_MIN_LEN (55)
3490
3491#define DOT11F_IE_TSPEC_MAX_LEN (55)
3492
3493#ifdef __cplusplus
3494extern "C" {
3495#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003496__must_check uint32_t dot11f_unpack_ie_tspec(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003497 tpAniSirGlobal,
3498 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003499 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303500 tDot11fIETSPEC*,
3501 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003502
3503uint32_t dot11f_pack_ie_tspec(
3504 tpAniSirGlobal,
3505 tDot11fIETSPEC *,
3506 uint8_t *,
3507 uint32_t,
3508 uint32_t*);
3509
3510uint32_t dot11f_get_packed_ie_TSPEC(
3511 tpAniSirGlobal,
3512 tDot11fIETSPEC *,
3513 uint32_t*);
3514
3515#ifdef __cplusplus
3516}; /* End extern "C". */
3517#endif /* C++ */
3518
3519/* EID 191 (0xbf) */
3520typedef struct sDot11fIEVHTCaps {
3521 uint8_t present;
3522 uint32_t maxMPDULen:2;
3523 uint32_t supportedChannelWidthSet:2;
3524 uint32_t ldpcCodingCap:1;
3525 uint32_t shortGI80MHz:1;
3526 uint32_t shortGI160and80plus80MHz:1;
3527 uint32_t txSTBC:1;
3528 uint32_t rxSTBC:3;
3529 uint32_t suBeamFormerCap:1;
3530 uint32_t suBeamformeeCap:1;
3531 uint32_t csnofBeamformerAntSup:3;
3532 uint32_t numSoundingDim:3;
3533 uint32_t muBeamformerCap:1;
3534 uint32_t muBeamformeeCap:1;
3535 uint32_t vhtTXOPPS:1;
3536 uint32_t htcVHTCap:1;
3537 uint32_t maxAMPDULenExp:3;
3538 uint32_t vhtLinkAdaptCap:2;
3539 uint32_t rxAntPattern:1;
3540 uint32_t txAntPattern:1;
3541 uint32_t reserved1:2;
3542 uint16_t rxMCSMap;
3543 uint16_t rxHighSupDataRate:13;
3544 uint16_t reserved2:3;
3545 uint16_t txMCSMap;
3546 uint16_t txSupDataRate:13;
3547 uint16_t reserved3:3;
3548} tDot11fIEVHTCaps;
3549
3550#define DOT11F_EID_VHTCAPS (191)
3551
3552/* N.B. These #defines do *not* include the EID & length */
3553#define DOT11F_IE_VHTCAPS_MIN_LEN (12)
3554
3555#define DOT11F_IE_VHTCAPS_MAX_LEN (12)
3556
3557#ifdef __cplusplus
3558extern "C" {
3559#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003560__must_check uint32_t dot11f_unpack_ie_vht_caps(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003561 tpAniSirGlobal,
3562 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003563 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303564 tDot11fIEVHTCaps*,
3565 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003566
3567uint32_t dot11f_pack_ie_vht_caps(
3568 tpAniSirGlobal,
3569 tDot11fIEVHTCaps *,
3570 uint8_t *,
3571 uint32_t,
3572 uint32_t*);
3573
3574uint32_t dot11f_get_packed_ie_VHTCaps(
3575 tpAniSirGlobal,
3576 tDot11fIEVHTCaps *,
3577 uint32_t*);
3578
3579#ifdef __cplusplus
3580}; /* End extern "C". */
3581#endif /* C++ */
3582
3583/* EID 192 (0xc0) */
3584typedef struct sDot11fIEVHTOperation {
3585 uint8_t present;
3586 uint8_t chanWidth;
3587 uint8_t chanCenterFreqSeg1;
3588 uint8_t chanCenterFreqSeg2;
3589 uint16_t basicMCSSet;
3590} tDot11fIEVHTOperation;
3591
3592#define DOT11F_EID_VHTOPERATION (192)
3593
3594/* N.B. These #defines do *not* include the EID & length */
3595#define DOT11F_IE_VHTOPERATION_MIN_LEN (5)
3596
3597#define DOT11F_IE_VHTOPERATION_MAX_LEN (5)
3598
3599#ifdef __cplusplus
3600extern "C" {
3601#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003602__must_check uint32_t dot11f_unpack_ie_vht_operation(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003603 tpAniSirGlobal,
3604 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003605 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303606 tDot11fIEVHTOperation*,
3607 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003608
3609uint32_t dot11f_pack_ie_vht_operation(
3610 tpAniSirGlobal,
3611 tDot11fIEVHTOperation *,
3612 uint8_t *,
3613 uint32_t,
3614 uint32_t*);
3615
3616uint32_t dot11f_get_packed_ie_VHTOperation(
3617 tpAniSirGlobal,
3618 tDot11fIEVHTOperation *,
3619 uint32_t*);
3620
3621#ifdef __cplusplus
3622}; /* End extern "C". */
3623#endif /* C++ */
3624
3625/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x09} */
3626typedef struct sDot11fIEWMMSchedule {
3627 uint8_t present;
3628 uint8_t version /* Must be 1! */;
3629 uint16_t aggregation:1;
3630 uint16_t tsid:4;
3631 uint16_t direction:2;
3632 uint16_t reserved:9;
3633 uint32_t service_start_time;
3634 uint32_t service_interval;
3635 uint16_t max_service_dur;
3636 uint16_t spec_interval;
3637} tDot11fIEWMMSchedule;
3638
3639#define DOT11F_EID_WMMSCHEDULE (221)
3640
3641/* N.B. These #defines do *not* include the EID & length */
3642#define DOT11F_IE_WMMSCHEDULE_MIN_LEN (20)
3643
3644#define DOT11F_IE_WMMSCHEDULE_MAX_LEN (20)
3645
3646#ifdef __cplusplus
3647extern "C" {
3648#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003649__must_check uint32_t dot11f_unpack_ie_wmm_schedule(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003650 tpAniSirGlobal,
3651 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003652 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303653 tDot11fIEWMMSchedule*,
3654 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003655
3656uint32_t dot11f_pack_ie_wmm_schedule(
3657 tpAniSirGlobal,
3658 tDot11fIEWMMSchedule *,
3659 uint8_t *,
3660 uint32_t,
3661 uint32_t*);
3662
3663uint32_t dot11f_get_packed_ie_WMMSchedule(
3664 tpAniSirGlobal,
3665 tDot11fIEWMMSchedule *,
3666 uint32_t*);
3667
3668#ifdef __cplusplus
3669}; /* End extern "C". */
3670#endif /* C++ */
3671
3672/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x06} */
3673typedef struct sDot11fIEWMMTCLAS {
3674 uint8_t present;
3675 uint8_t version /* Must be 1! */;
3676 uint8_t user_priority;
3677 uint8_t classifier_type;
3678 uint8_t classifier_mask;
3679 union {
3680 struct {
3681 uint8_t source[6];
3682 uint8_t dest[6];
3683 uint16_t type;
3684 } EthParams; /* classifier_type = 0 */
3685 struct {
3686 uint8_t version;
3687 union {
3688 struct {
3689 uint8_t source[4];
3690 uint8_t dest[4];
3691 uint16_t src_port;
3692 uint16_t dest_port;
3693 uint8_t DSCP;
3694 uint8_t proto;
3695 uint8_t reserved;
3696 } IpV4Params; /* version = 4 */
3697 struct {
3698 uint8_t source[16];
3699 uint8_t dest[16];
3700 uint16_t src_port;
3701 uint16_t dest_port;
3702 uint8_t flow_label[3];
3703 } IpV6Params; /* version = 6 */
3704 } params;
3705 } IpParams; /* classifier_type = 1 */
3706 struct {
3707 uint16_t tag_type;
3708 } Params8021dq; /* classifier_type = 2 */
3709 } info;
3710} tDot11fIEWMMTCLAS;
3711
3712#define DOT11F_EID_WMMTCLAS (221)
3713
3714/* N.B. These #defines do *not* include the EID & length */
3715#define DOT11F_IE_WMMTCLAS_MIN_LEN (11)
3716
3717#define DOT11F_IE_WMMTCLAS_MAX_LEN (49)
3718
3719#ifdef __cplusplus
3720extern "C" {
3721#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003722__must_check uint32_t dot11f_unpack_ie_wmmtclas(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003723 tpAniSirGlobal,
3724 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003725 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303726 tDot11fIEWMMTCLAS*,
3727 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003728
3729uint32_t dot11f_pack_ie_wmmtclas(
3730 tpAniSirGlobal,
3731 tDot11fIEWMMTCLAS *,
3732 uint8_t *,
3733 uint32_t,
3734 uint32_t*);
3735
3736uint32_t dot11f_get_packed_iewmmtclas(
3737 tpAniSirGlobal,
3738 tDot11fIEWMMTCLAS *,
3739 uint32_t*);
3740
3741#ifdef __cplusplus
3742}; /* End extern "C". */
3743#endif /* C++ */
3744
3745/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x07} */
3746typedef struct sDot11fIEWMMTCLASPROC {
3747 uint8_t present;
3748 uint8_t version /* Must be 1! */;
3749 uint8_t processing;
3750} tDot11fIEWMMTCLASPROC;
3751
3752#define DOT11F_EID_WMMTCLASPROC (221)
3753
3754/* N.B. These #defines do *not* include the EID & length */
3755#define DOT11F_IE_WMMTCLASPROC_MIN_LEN (7)
3756
3757#define DOT11F_IE_WMMTCLASPROC_MAX_LEN (7)
3758
3759#ifdef __cplusplus
3760extern "C" {
3761#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003762__must_check uint32_t dot11f_unpack_ie_wmmtclasproc(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003763 tpAniSirGlobal,
3764 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003765 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303766 tDot11fIEWMMTCLASPROC*,
3767 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003768
3769uint32_t dot11f_pack_ie_wmmtclasproc(
3770 tpAniSirGlobal,
3771 tDot11fIEWMMTCLASPROC *,
3772 uint8_t *,
3773 uint32_t,
3774 uint32_t*);
3775
3776uint32_t dot11f_get_packed_iewmmtclasPROC(
3777 tpAniSirGlobal,
3778 tDot11fIEWMMTCLASPROC *,
3779 uint32_t*);
3780
3781#ifdef __cplusplus
3782}; /* End extern "C". */
3783#endif /* C++ */
3784
3785/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x08} */
3786typedef struct sDot11fIEWMMTSDelay {
3787 uint8_t present;
3788 uint8_t version /* Must be 1! */;
3789 uint32_t delay;
3790} tDot11fIEWMMTSDelay;
3791
3792#define DOT11F_EID_WMMTSDELAY (221)
3793
3794/* N.B. These #defines do *not* include the EID & length */
3795#define DOT11F_IE_WMMTSDELAY_MIN_LEN (10)
3796
3797#define DOT11F_IE_WMMTSDELAY_MAX_LEN (10)
3798
3799#ifdef __cplusplus
3800extern "C" {
3801#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003802__must_check uint32_t dot11f_unpack_ie_wmmts_delay(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003803 tpAniSirGlobal,
3804 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003805 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303806 tDot11fIEWMMTSDelay*,
3807 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003808
3809uint32_t dot11f_pack_ie_wmmts_delay(
3810 tpAniSirGlobal,
3811 tDot11fIEWMMTSDelay *,
3812 uint8_t *,
3813 uint32_t,
3814 uint32_t*);
3815
3816uint32_t dot11f_get_packed_ie_WMMTSDelay(
3817 tpAniSirGlobal,
3818 tDot11fIEWMMTSDelay *,
3819 uint32_t*);
3820
3821#ifdef __cplusplus
3822}; /* End extern "C". */
3823#endif /* C++ */
3824
3825/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x02} */
3826typedef struct sDot11fIEWMMTSPEC {
3827 uint8_t present;
3828 uint8_t version /* Must be 1! */;
3829 uint16_t traffic_type:1;
3830 uint16_t tsid:4;
3831 uint16_t direction:2;
3832 uint16_t access_policy:2;
3833 uint16_t aggregation:1;
3834 uint16_t psb:1;
3835 uint16_t user_priority:3;
3836 uint16_t tsinfo_ack_pol:2;
3837 uint8_t tsinfo_rsvd:7;
3838 uint8_t burst_size_defn:1;
3839 uint16_t size:15;
3840 uint16_t fixed:1;
3841 uint16_t max_msdu_size;
3842 uint32_t min_service_int;
3843 uint32_t max_service_int;
3844 uint32_t inactivity_int;
3845 uint32_t suspension_int;
3846 uint32_t service_start_time;
3847 uint32_t min_data_rate;
3848 uint32_t mean_data_rate;
3849 uint32_t peak_data_rate;
3850 uint32_t burst_size;
3851 uint32_t delay_bound;
3852 uint32_t min_phy_rate;
3853 uint16_t surplus_bw_allowance;
3854 uint16_t medium_time;
3855} tDot11fIEWMMTSPEC;
3856
3857#define DOT11F_EID_WMMTSPEC (221)
3858
3859/* N.B. These #defines do *not* include the EID & length */
3860#define DOT11F_IE_WMMTSPEC_MIN_LEN (61)
3861
3862#define DOT11F_IE_WMMTSPEC_MAX_LEN (61)
3863
3864#ifdef __cplusplus
3865extern "C" {
3866#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003867__must_check uint32_t dot11f_unpack_ie_wmmtspec(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003868 tpAniSirGlobal,
3869 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003870 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303871 tDot11fIEWMMTSPEC*,
3872 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003873
3874uint32_t dot11f_pack_ie_wmmtspec(
3875 tpAniSirGlobal,
3876 tDot11fIEWMMTSPEC *,
3877 uint8_t *,
3878 uint32_t,
3879 uint32_t*);
3880
3881uint32_t dot11f_get_packed_ie_WMMTSPEC(
3882 tpAniSirGlobal,
3883 tDot11fIEWMMTSPEC *,
3884 uint32_t*);
3885
3886#ifdef __cplusplus
3887}; /* End extern "C". */
3888#endif /* C++ */
3889
3890/* EID 194 (0xc2) */
3891typedef struct sDot11fIEWiderBWChanSwitchAnn {
3892 uint8_t present;
3893 uint8_t newChanWidth;
3894 uint8_t newCenterChanFreq0;
3895 uint8_t newCenterChanFreq1;
3896} tDot11fIEWiderBWChanSwitchAnn;
3897
3898#define DOT11F_EID_WIDERBWCHANSWITCHANN (194)
3899
3900/* N.B. These #defines do *not* include the EID & length */
3901#define DOT11F_IE_WIDERBWCHANSWITCHANN_MIN_LEN (3)
3902
3903#define DOT11F_IE_WIDERBWCHANSWITCHANN_MAX_LEN (3)
3904
3905#ifdef __cplusplus
3906extern "C" {
3907#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003908__must_check uint32_t dot11f_unpack_ie_wider_bw_chan_switch_ann(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003909 tpAniSirGlobal,
3910 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003911 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303912 tDot11fIEWiderBWChanSwitchAnn*,
3913 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003914
3915uint32_t dot11f_pack_ie_wider_bw_chan_switch_ann(
3916 tpAniSirGlobal,
3917 tDot11fIEWiderBWChanSwitchAnn *,
3918 uint8_t *,
3919 uint32_t,
3920 uint32_t*);
3921
3922uint32_t dot11f_get_packed_ie_WiderBWChanSwitchAnn(
3923 tpAniSirGlobal,
3924 tDot11fIEWiderBWChanSwitchAnn *,
3925 uint32_t*);
3926
3927#ifdef __cplusplus
3928}; /* End extern "C". */
3929#endif /* C++ */
3930
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08003931/* EID 1 (0x01) */
3932typedef struct sDot11fIEazimuth_req {
3933 uint8_t present;
3934 uint8_t request;
3935} tDot11fIEazimuth_req;
3936
3937#define DOT11F_EID_AZIMUTH_REQ (1)
3938
3939/* N.B. These #defines do *not* include the EID & length */
3940#define DOT11F_IE_AZIMUTH_REQ_MIN_LEN (1)
3941
3942#define DOT11F_IE_AZIMUTH_REQ_MAX_LEN (1)
3943
3944#ifdef __cplusplus
3945extern "C" {
3946#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08003947__must_check uint32_t dot11f_unpack_ie_azimuth_req(
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08003948 tpAniSirGlobal,
3949 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07003950 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05303951 tDot11fIEazimuth_req*,
3952 bool);
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08003953
3954uint32_t dot11f_pack_ie_azimuth_req(
3955 tpAniSirGlobal,
3956 tDot11fIEazimuth_req *,
3957 uint8_t *,
3958 uint32_t,
3959 uint32_t*);
3960
3961uint32_t dot11f_get_packed_ie_azimuth_req(
3962 tpAniSirGlobal,
3963 tDot11fIEazimuth_req *,
3964 uint32_t*);
3965
3966#ifdef __cplusplus
3967}; /* End extern "C". */
3968#endif /* C++ */
3969
Vignesh Viswanathan3b4bf982018-06-05 15:04:23 +05303970/* EID 2 (0x02) */
3971typedef struct sDot11fIEbeacon_report_frm_body_fragment_id {
3972 uint8_t present;
3973 uint16_t beacon_report_id:8;
3974 uint16_t fragment_id_number:7;
3975 uint16_t more_fragments:1;
3976} tDot11fIEbeacon_report_frm_body_fragment_id;
3977
3978#define DOT11F_EID_BEACON_REPORT_FRM_BODY_FRAGMENT_ID (2)
3979
3980/* N.B. These #defines do *not* include the EID & length */
3981#define DOT11F_IE_BEACON_REPORT_FRM_BODY_FRAGMENT_ID_MIN_LEN (2)
3982
3983#define DOT11F_IE_BEACON_REPORT_FRM_BODY_FRAGMENT_ID_MAX_LEN (2)
3984
3985#ifdef __cplusplus
3986extern "C" {
3987#endif /* C++ */
3988__must_check uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id(
3989 tpAniSirGlobal,
3990 uint8_t *,
3991 uint8_t,
3992 tDot11fIEbeacon_report_frm_body_fragment_id*,
3993 bool);
3994
3995uint32_t dot11f_pack_ie_beacon_report_frm_body_fragment_id(
3996 tpAniSirGlobal,
3997 tDot11fIEbeacon_report_frm_body_fragment_id *,
3998 uint8_t *,
3999 uint32_t,
4000 uint32_t*);
4001
4002uint32_t dot11f_get_packed_ie_beacon_report_frm_body_fragment_id(
4003 tpAniSirGlobal,
4004 tDot11fIEbeacon_report_frm_body_fragment_id *,
4005 uint32_t*);
4006
4007#ifdef __cplusplus
4008}; /* End extern "C". */
4009#endif /* C++ */
4010
4011/* EID 164 (0xa4) */
4012typedef struct sDot11fIElast_beacon_report_indication {
4013 uint8_t present;
4014 uint8_t last_fragment;
4015} tDot11fIElast_beacon_report_indication;
4016
4017#define DOT11F_EID_LAST_BEACON_REPORT_INDICATION (164)
4018
4019/* N.B. These #defines do *not* include the EID & length */
4020#define DOT11F_IE_LAST_BEACON_REPORT_INDICATION_MIN_LEN (1)
4021
4022#define DOT11F_IE_LAST_BEACON_REPORT_INDICATION_MAX_LEN (1)
4023
4024#ifdef __cplusplus
4025extern "C" {
4026#endif /* C++ */
4027__must_check uint32_t dot11f_unpack_ie_last_beacon_report_indication(
4028 tpAniSirGlobal,
4029 uint8_t *,
4030 uint8_t,
4031 tDot11fIElast_beacon_report_indication*,
4032 bool);
4033
4034uint32_t dot11f_pack_ie_last_beacon_report_indication(
4035 tpAniSirGlobal,
4036 tDot11fIElast_beacon_report_indication *,
4037 uint8_t *,
4038 uint32_t,
4039 uint32_t*);
4040
4041uint32_t dot11f_get_packed_ie_last_beacon_report_indication(
4042 tpAniSirGlobal,
4043 tDot11fIElast_beacon_report_indication *,
4044 uint32_t*);
4045
4046#ifdef __cplusplus
4047}; /* End extern "C". */
4048#endif /* C++ */
4049
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08004050/* EID 4 (0x04) */
4051typedef struct sDot11fIEmax_age {
4052 uint8_t present;
4053 uint16_t max_age;
4054} tDot11fIEmax_age;
4055
4056#define DOT11F_EID_MAX_AGE (4)
4057
4058/* N.B. These #defines do *not* include the EID & length */
4059#define DOT11F_IE_MAX_AGE_MIN_LEN (2)
4060
4061#define DOT11F_IE_MAX_AGE_MAX_LEN (2)
4062
4063#ifdef __cplusplus
4064extern "C" {
4065#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004066__must_check uint32_t dot11f_unpack_ie_max_age(
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08004067 tpAniSirGlobal,
4068 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004069 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304070 tDot11fIEmax_age*,
4071 bool);
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08004072
4073uint32_t dot11f_pack_ie_max_age(
4074 tpAniSirGlobal,
4075 tDot11fIEmax_age *,
4076 uint8_t *,
4077 uint32_t,
4078 uint32_t*);
4079
4080uint32_t dot11f_get_packed_ie_max_age(
4081 tpAniSirGlobal,
4082 tDot11fIEmax_age *,
4083 uint32_t*);
4084
4085#ifdef __cplusplus
4086}; /* End extern "C". */
4087#endif /* C++ */
4088
4089/* EID 52 (0x34) */
4090typedef struct sDot11fIEneighbor_rpt {
4091 uint8_t present;
4092 uint8_t bssid[6];
4093 uint8_t APReachability:2;
4094 uint8_t Security:1;
4095 uint8_t KeyScope:1;
4096 uint8_t SpecMgmtCap:1;
4097 uint8_t QosCap:1;
4098 uint8_t apsd:1;
4099 uint8_t rrm:1;
4100 uint8_t DelayedBA:1;
4101 uint8_t ImmBA:1;
4102 uint8_t MobilityDomain:1;
4103 uint8_t reserved:5;
4104 uint16_t reserved1;
4105 uint8_t regulatoryClass;
4106 uint8_t channel;
4107 uint8_t PhyType;
4108 tDot11fIETSFInfo TSFInfo;
4109 tDot11fIECondensedCountryStr CondensedCountryStr;
4110 tDot11fIEMeasurementPilot MeasurementPilot;
4111 tDot11fIERRMEnabledCap RRMEnabledCap;
4112 tDot11fIEMultiBssid MultiBssid;
4113} tDot11fIEneighbor_rpt;
4114
4115#define DOT11F_EID_NEIGHBOR_RPT (52)
4116
4117/* N.B. These #defines do *not* include the EID & length */
4118#define DOT11F_IE_NEIGHBOR_RPT_MIN_LEN (13)
4119
4120#define DOT11F_IE_NEIGHBOR_RPT_MAX_LEN (546)
4121
4122#ifdef __cplusplus
4123extern "C" {
4124#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004125__must_check uint32_t dot11f_unpack_ie_neighbor_rpt(
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08004126 tpAniSirGlobal,
4127 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004128 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304129 tDot11fIEneighbor_rpt*,
4130 bool);
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08004131
4132uint32_t dot11f_pack_ie_neighbor_rpt(
4133 tpAniSirGlobal,
4134 tDot11fIEneighbor_rpt *,
4135 uint8_t *,
4136 uint32_t,
4137 uint32_t*);
4138
4139uint32_t dot11f_get_packed_ie_neighbor_rpt(
4140 tpAniSirGlobal,
4141 tDot11fIEneighbor_rpt *,
4142 uint32_t*);
4143
4144#ifdef __cplusplus
4145}; /* End extern "C". */
4146#endif /* C++ */
4147
4148/* EID 2 (0x02) */
4149typedef struct sDot11fIEreq_mac_addr {
4150 uint8_t present;
4151 uint8_t addr[6];
4152} tDot11fIEreq_mac_addr;
4153
4154#define DOT11F_EID_REQ_MAC_ADDR (2)
4155
4156/* N.B. These #defines do *not* include the EID & length */
4157#define DOT11F_IE_REQ_MAC_ADDR_MIN_LEN (6)
4158
4159#define DOT11F_IE_REQ_MAC_ADDR_MAX_LEN (6)
4160
4161#ifdef __cplusplus
4162extern "C" {
4163#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004164__must_check uint32_t dot11f_unpack_ie_req_mac_addr(
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08004165 tpAniSirGlobal,
4166 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004167 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304168 tDot11fIEreq_mac_addr*,
4169 bool);
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08004170
4171uint32_t dot11f_pack_ie_req_mac_addr(
4172 tpAniSirGlobal,
4173 tDot11fIEreq_mac_addr *,
4174 uint8_t *,
4175 uint32_t,
4176 uint32_t*);
4177
4178uint32_t dot11f_get_packed_ie_req_mac_addr(
4179 tpAniSirGlobal,
4180 tDot11fIEreq_mac_addr *,
4181 uint32_t*);
4182
4183#ifdef __cplusplus
4184}; /* End extern "C". */
4185#endif /* C++ */
4186
4187/* EID 3 (0x03) */
4188typedef struct sDot11fIEtgt_mac_addr {
4189 uint8_t present;
4190 uint8_t addr[6];
4191} tDot11fIEtgt_mac_addr;
4192
4193#define DOT11F_EID_TGT_MAC_ADDR (3)
4194
4195/* N.B. These #defines do *not* include the EID & length */
4196#define DOT11F_IE_TGT_MAC_ADDR_MIN_LEN (6)
4197
4198#define DOT11F_IE_TGT_MAC_ADDR_MAX_LEN (6)
4199
4200#ifdef __cplusplus
4201extern "C" {
4202#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004203__must_check uint32_t dot11f_unpack_ie_tgt_mac_addr(
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08004204 tpAniSirGlobal,
4205 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004206 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304207 tDot11fIEtgt_mac_addr*,
4208 bool);
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08004209
4210uint32_t dot11f_pack_ie_tgt_mac_addr(
4211 tpAniSirGlobal,
4212 tDot11fIEtgt_mac_addr *,
4213 uint8_t *,
4214 uint32_t,
4215 uint32_t*);
4216
4217uint32_t dot11f_get_packed_ie_tgt_mac_addr(
4218 tpAniSirGlobal,
4219 tDot11fIEtgt_mac_addr *,
4220 uint32_t*);
4221
4222#ifdef __cplusplus
4223}; /* End extern "C". */
4224#endif /* C++ */
4225
Abhishek Singh37456d22016-08-29 16:05:11 +05304226/* EID 195 (0xc3) */
4227typedef struct sDot11fIEvht_transmit_power_env {
4228 uint8_t present;
4229 uint8_t num_bytes;
4230 uint8_t bytes[5];
4231} tDot11fIEvht_transmit_power_env;
4232
4233#define DOT11F_EID_VHT_TRANSMIT_POWER_ENV (195)
4234
4235/* N.B. These #defines do *not* include the EID & length */
4236#define DOT11F_IE_VHT_TRANSMIT_POWER_ENV_MIN_LEN (2)
4237
4238#define DOT11F_IE_VHT_TRANSMIT_POWER_ENV_MAX_LEN (5)
4239
4240#ifdef __cplusplus
4241extern "C" {
4242#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004243__must_check uint32_t dot11f_unpack_ie_vht_transmit_power_env(
Abhishek Singh37456d22016-08-29 16:05:11 +05304244 tpAniSirGlobal,
4245 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004246 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304247 tDot11fIEvht_transmit_power_env*,
4248 bool);
Abhishek Singh37456d22016-08-29 16:05:11 +05304249
4250uint32_t dot11f_pack_ie_vht_transmit_power_env(
4251 tpAniSirGlobal,
4252 tDot11fIEvht_transmit_power_env *,
4253 uint8_t *,
4254 uint32_t,
4255 uint32_t*);
4256
4257uint32_t dot11f_get_packed_ie_vht_transmit_power_env(
4258 tpAniSirGlobal,
4259 tDot11fIEvht_transmit_power_env *,
4260 uint32_t*);
4261
4262#ifdef __cplusplus
4263}; /* End extern "C". */
4264#endif /* C++ */
4265
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004266/* EID 197 (0xc5) */
4267typedef struct sDot11fIEAID {
4268 uint8_t present;
4269 uint16_t assocId;
4270} tDot11fIEAID;
4271
4272#define DOT11F_EID_AID (197)
4273
4274/* N.B. These #defines do *not* include the EID & length */
4275#define DOT11F_IE_AID_MIN_LEN (2)
4276
4277#define DOT11F_IE_AID_MAX_LEN (2)
4278
4279#ifdef __cplusplus
4280extern "C" {
4281#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004282__must_check uint32_t dot11f_unpack_ie_aid(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004283 tpAniSirGlobal,
4284 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004285 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304286 tDot11fIEAID*,
4287 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004288
4289uint32_t dot11f_pack_ie_aid(
4290 tpAniSirGlobal,
4291 tDot11fIEAID *,
4292 uint8_t *,
4293 uint32_t,
4294 uint32_t*);
4295
4296uint32_t dot11f_get_packed_ie_AID(
4297 tpAniSirGlobal,
4298 tDot11fIEAID *,
4299 uint32_t*);
4300
4301#ifdef __cplusplus
4302}; /* End extern "C". */
4303#endif /* C++ */
4304
4305/* EID 4 (0x04) */
4306typedef struct sDot11fIECFParams {
4307 uint8_t present;
4308 uint8_t cfp_count;
4309 uint8_t cfp_period;
4310 uint16_t cfp_maxduration;
4311 uint16_t cfp_durremaining;
4312} tDot11fIECFParams;
4313
4314#define DOT11F_EID_CFPARAMS (4)
4315
4316/* N.B. These #defines do *not* include the EID & length */
4317#define DOT11F_IE_CFPARAMS_MIN_LEN (6)
4318
4319#define DOT11F_IE_CFPARAMS_MAX_LEN (6)
4320
4321#ifdef __cplusplus
4322extern "C" {
4323#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004324__must_check uint32_t dot11f_unpack_ie_cf_params(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004325 tpAniSirGlobal,
4326 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004327 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304328 tDot11fIECFParams*,
4329 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004330
4331uint32_t dot11f_pack_ie_cf_params(
4332 tpAniSirGlobal,
4333 tDot11fIECFParams *,
4334 uint8_t *,
4335 uint32_t,
4336 uint32_t*);
4337
4338uint32_t dot11f_get_packed_ie_CFParams(
4339 tpAniSirGlobal,
4340 tDot11fIECFParams *,
4341 uint32_t*);
4342
4343#ifdef __cplusplus
4344}; /* End extern "C". */
4345#endif /* C++ */
4346
4347/* EID 16 (0x10) */
4348typedef struct sDot11fIEChallengeText {
4349 uint8_t present;
4350 uint8_t num_text;
4351 uint8_t text[253];
4352} tDot11fIEChallengeText;
4353
4354#define DOT11F_EID_CHALLENGETEXT (16)
4355
4356/* N.B. These #defines do *not* include the EID & length */
4357#define DOT11F_IE_CHALLENGETEXT_MIN_LEN (1)
4358
4359#define DOT11F_IE_CHALLENGETEXT_MAX_LEN (253)
4360
4361#ifdef __cplusplus
4362extern "C" {
4363#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004364__must_check uint32_t dot11f_unpack_ie_challenge_text(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004365 tpAniSirGlobal,
4366 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004367 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304368 tDot11fIEChallengeText*,
4369 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004370
4371uint32_t dot11f_pack_ie_challenge_text(
4372 tpAniSirGlobal,
4373 tDot11fIEChallengeText *,
4374 uint8_t *,
4375 uint32_t,
4376 uint32_t*);
4377
4378uint32_t dot11f_get_packed_ie_ChallengeText(
4379 tpAniSirGlobal,
4380 tDot11fIEChallengeText *,
4381 uint32_t*);
4382
4383#ifdef __cplusplus
4384}; /* End extern "C". */
4385#endif /* C++ */
4386
4387/* EID 37 (0x25) */
4388typedef struct sDot11fIEChanSwitchAnn {
4389 uint8_t present;
4390 uint8_t switchMode;
4391 uint8_t newChannel;
4392 uint8_t switchCount;
4393} tDot11fIEChanSwitchAnn;
4394
4395#define DOT11F_EID_CHANSWITCHANN (37)
4396
4397/* N.B. These #defines do *not* include the EID & length */
4398#define DOT11F_IE_CHANSWITCHANN_MIN_LEN (3)
4399
4400#define DOT11F_IE_CHANSWITCHANN_MAX_LEN (3)
4401
4402#ifdef __cplusplus
4403extern "C" {
4404#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004405__must_check uint32_t dot11f_unpack_ie_chan_switch_ann(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004406 tpAniSirGlobal,
4407 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004408 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304409 tDot11fIEChanSwitchAnn*,
4410 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004411
4412uint32_t dot11f_pack_ie_chan_switch_ann(
4413 tpAniSirGlobal,
4414 tDot11fIEChanSwitchAnn *,
4415 uint8_t *,
4416 uint32_t,
4417 uint32_t*);
4418
4419uint32_t dot11f_get_packed_ie_ChanSwitchAnn(
4420 tpAniSirGlobal,
4421 tDot11fIEChanSwitchAnn *,
4422 uint32_t*);
4423
4424#ifdef __cplusplus
4425}; /* End extern "C". */
4426#endif /* C++ */
4427
4428/* EID 196 (0xc4) */
4429typedef struct sDot11fIEChannelSwitchWrapper {
Ankit Guptaf42c3c22016-10-06 15:27:10 -07004430 uint8_t present;
4431 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
Abhishek Singh37456d22016-08-29 16:05:11 +05304432 tDot11fIEvht_transmit_power_env vht_transmit_power_env;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004433} tDot11fIEChannelSwitchWrapper;
4434
4435#define DOT11F_EID_CHANNELSWITCHWRAPPER (196)
4436
4437/* N.B. These #defines do *not* include the EID & length */
4438#define DOT11F_IE_CHANNELSWITCHWRAPPER_MIN_LEN (0)
4439
Abhishek Singh37456d22016-08-29 16:05:11 +05304440#define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (12)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004441
4442#ifdef __cplusplus
4443extern "C" {
4444#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004445__must_check uint32_t dot11f_unpack_ie_channel_switch_wrapper(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004446 tpAniSirGlobal,
4447 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004448 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304449 tDot11fIEChannelSwitchWrapper*,
4450 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004451
4452uint32_t dot11f_pack_ie_channel_switch_wrapper(
4453 tpAniSirGlobal,
4454 tDot11fIEChannelSwitchWrapper *,
4455 uint8_t *,
4456 uint32_t,
4457 uint32_t*);
4458
4459uint32_t dot11f_get_packed_ie_channel_switch_wrapper(
4460 tpAniSirGlobal,
4461 tDot11fIEChannelSwitchWrapper *,
4462 uint32_t*);
4463
4464#ifdef __cplusplus
4465}; /* End extern "C". */
4466#endif /* C++ */
4467
4468/* EID 7 (0x07) */
4469typedef struct sDot11fIECountry {
4470 uint8_t present;
4471 uint8_t country[3];
4472 uint8_t num_triplets;
4473 uint8_t triplets[84][3];
4474} tDot11fIECountry;
4475
4476#define DOT11F_EID_COUNTRY (7)
4477
4478/* N.B. These #defines do *not* include the EID & length */
4479#define DOT11F_IE_COUNTRY_MIN_LEN (3)
4480
4481#define DOT11F_IE_COUNTRY_MAX_LEN (255)
4482
4483#ifdef __cplusplus
4484extern "C" {
4485#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004486__must_check uint32_t dot11f_unpack_ie_country(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004487 tpAniSirGlobal,
4488 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004489 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304490 tDot11fIECountry*,
4491 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004492
4493uint32_t dot11f_pack_ie_country(
4494 tpAniSirGlobal,
4495 tDot11fIECountry *,
4496 uint8_t *,
4497 uint32_t,
4498 uint32_t*);
4499
4500uint32_t dot11f_get_packed_ie_country(
4501 tpAniSirGlobal,
4502 tDot11fIECountry *,
4503 uint32_t*);
4504
4505#ifdef __cplusplus
4506}; /* End extern "C". */
4507#endif /* C++ */
4508
4509/* EID 3 (0x03) */
4510typedef struct sDot11fIEDSParams {
4511 uint8_t present;
4512 uint8_t curr_channel;
4513} tDot11fIEDSParams;
4514
4515#define DOT11F_EID_DSPARAMS (3)
4516
4517/* N.B. These #defines do *not* include the EID & length */
4518#define DOT11F_IE_DSPARAMS_MIN_LEN (1)
4519
4520#define DOT11F_IE_DSPARAMS_MAX_LEN (1)
4521
4522#ifdef __cplusplus
4523extern "C" {
4524#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004525__must_check uint32_t dot11f_unpack_ie_DSParams(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004526 tpAniSirGlobal,
4527 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004528 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304529 tDot11fIEDSParams*,
4530 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004531
4532uint32_t dot11f_pack_ie_ds_params(
4533 tpAniSirGlobal,
4534 tDot11fIEDSParams *,
4535 uint8_t *,
4536 uint32_t,
4537 uint32_t*);
4538
4539uint32_t dot11f_get_packed_ie_DSParams(
4540 tpAniSirGlobal,
4541 tDot11fIEDSParams *,
4542 uint32_t*);
4543
4544#ifdef __cplusplus
4545}; /* End extern "C". */
4546#endif /* C++ */
4547
4548/* EID 12 (0x0c) */
4549typedef struct sDot11fIEEDCAParamSet {
4550 uint8_t present;
4551 uint8_t qos;
4552 uint8_t reserved;
4553 uint8_t acbe_aifsn:4;
4554 uint8_t acbe_acm:1;
4555 uint8_t acbe_aci:2;
4556 uint8_t unused1:1;
4557 uint8_t acbe_acwmin:4;
4558 uint8_t acbe_acwmax:4;
4559 uint16_t acbe_txoplimit;
4560 uint8_t acbk_aifsn:4;
4561 uint8_t acbk_acm:1;
4562 uint8_t acbk_aci:2;
4563 uint8_t unused2:1;
4564 uint8_t acbk_acwmin:4;
4565 uint8_t acbk_acwmax:4;
4566 uint16_t acbk_txoplimit;
4567 uint8_t acvi_aifsn:4;
4568 uint8_t acvi_acm:1;
4569 uint8_t acvi_aci:2;
4570 uint8_t unused3:1;
4571 uint8_t acvi_acwmin:4;
4572 uint8_t acvi_acwmax:4;
4573 uint16_t acvi_txoplimit;
4574 uint8_t acvo_aifsn:4;
4575 uint8_t acvo_acm:1;
4576 uint8_t acvo_aci:2;
4577 uint8_t unused4:1;
4578 uint8_t acvo_acwmin:4;
4579 uint8_t acvo_acwmax:4;
4580 uint16_t acvo_txoplimit;
4581} tDot11fIEEDCAParamSet;
4582
4583#define DOT11F_EID_EDCAPARAMSET (12)
4584
4585/* N.B. These #defines do *not* include the EID & length */
4586#define DOT11F_IE_EDCAPARAMSET_MIN_LEN (18)
4587
4588#define DOT11F_IE_EDCAPARAMSET_MAX_LEN (18)
4589
4590#ifdef __cplusplus
4591extern "C" {
4592#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004593__must_check uint32_t dot11f_unpack_ie_edca_param_set(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004594 tpAniSirGlobal,
4595 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004596 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304597 tDot11fIEEDCAParamSet*,
4598 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004599
4600uint32_t dot11f_pack_ie_edca_param_set(
4601 tpAniSirGlobal,
4602 tDot11fIEEDCAParamSet *,
4603 uint8_t *,
4604 uint32_t,
4605 uint32_t*);
4606
4607uint32_t dot11f_get_packed_ie_EDCAParamSet(
4608 tpAniSirGlobal,
4609 tDot11fIEEDCAParamSet *,
4610 uint32_t*);
4611
4612#ifdef __cplusplus
4613}; /* End extern "C". */
4614#endif /* C++ */
4615
4616/* EID 42 (0x2a) */
4617typedef struct sDot11fIEERPInfo {
4618 uint8_t present;
4619 uint8_t non_erp_present:1;
4620 uint8_t use_prot:1;
4621 uint8_t barker_preamble:1;
4622 uint8_t unused:5;
4623} tDot11fIEERPInfo;
4624
4625#define DOT11F_EID_ERPINFO (42)
4626
4627/* N.B. These #defines do *not* include the EID & length */
4628#define DOT11F_IE_ERPINFO_MIN_LEN (1)
4629
4630#define DOT11F_IE_ERPINFO_MAX_LEN (1)
4631
4632#ifdef __cplusplus
4633extern "C" {
4634#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004635__must_check uint32_t dot11f_unpack_ie_erp_info(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004636 tpAniSirGlobal,
4637 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004638 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304639 tDot11fIEERPInfo*,
4640 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004641
4642uint32_t dot11f_pack_ie_erp_info(
4643 tpAniSirGlobal,
4644 tDot11fIEERPInfo *,
4645 uint8_t *,
4646 uint32_t,
4647 uint32_t*);
4648
4649uint32_t dot11f_get_packed_ie_ERPInfo(
4650 tpAniSirGlobal,
4651 tDot11fIEERPInfo *,
4652 uint32_t*);
4653
4654#ifdef __cplusplus
4655}; /* End extern "C". */
4656#endif /* C++ */
4657
4658/* EID 156 (0x9c) {OUI 0x00, 0x40, 0x96, 0x00} */
4659typedef struct sDot11fIEESECckmOpaque {
4660 uint8_t present;
4661 uint8_t num_data;
4662 uint8_t data[20];
4663} tDot11fIEESECckmOpaque;
4664
4665#define DOT11F_EID_ESECCKMOPAQUE (156)
4666
4667/* N.B. These #defines do *not* include the EID & length */
4668#define DOT11F_IE_ESECCKMOPAQUE_MIN_LEN (10)
4669
4670#define DOT11F_IE_ESECCKMOPAQUE_MAX_LEN (24)
4671
4672#ifdef __cplusplus
4673extern "C" {
4674#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004675__must_check uint32_t dot11f_unpack_ie_ese_cckm_opaque(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004676 tpAniSirGlobal,
4677 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004678 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304679 tDot11fIEESECckmOpaque*,
4680 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004681
4682uint32_t dot11f_pack_ie_ese_cckm_opaque(
4683 tpAniSirGlobal,
4684 tDot11fIEESECckmOpaque *,
4685 uint8_t *,
4686 uint32_t,
4687 uint32_t*);
4688
4689uint32_t dot11f_get_packed_ie_ESECckmOpaque(
4690 tpAniSirGlobal,
4691 tDot11fIEESECckmOpaque *,
4692 uint32_t*);
4693
4694#ifdef __cplusplus
4695}; /* End extern "C". */
4696#endif /* C++ */
4697
4698/* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x01} */
4699typedef struct sDot11fIEESERadMgmtCap {
4700 uint8_t present;
4701 uint8_t mgmt_state;
4702 uint8_t mbssid_mask:3;
4703 uint8_t reserved:5;
4704} tDot11fIEESERadMgmtCap;
4705
4706#define DOT11F_EID_ESERADMGMTCAP (221)
4707
4708/* N.B. These #defines do *not* include the EID & length */
4709#define DOT11F_IE_ESERADMGMTCAP_MIN_LEN (6)
4710
4711#define DOT11F_IE_ESERADMGMTCAP_MAX_LEN (6)
4712
4713#ifdef __cplusplus
4714extern "C" {
4715#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004716__must_check uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004717 tpAniSirGlobal,
4718 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004719 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304720 tDot11fIEESERadMgmtCap*,
4721 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004722
4723uint32_t dot11f_pack_ie_ese_rad_mgmt_cap(
4724 tpAniSirGlobal,
4725 tDot11fIEESERadMgmtCap *,
4726 uint8_t *,
4727 uint32_t,
4728 uint32_t*);
4729
4730uint32_t dot11f_get_packed_ie_ESERadMgmtCap(
4731 tpAniSirGlobal,
4732 tDot11fIEESERadMgmtCap *,
4733 uint32_t*);
4734
4735#ifdef __cplusplus
4736}; /* End extern "C". */
4737#endif /* C++ */
4738
4739/* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x07} */
4740typedef struct sDot11fIEESETrafStrmMet {
4741 uint8_t present;
4742 uint8_t tsid;
4743 uint8_t state;
4744 uint16_t msmt_interval;
4745} tDot11fIEESETrafStrmMet;
4746
4747#define DOT11F_EID_ESETRAFSTRMMET (221)
4748
4749/* N.B. These #defines do *not* include the EID & length */
4750#define DOT11F_IE_ESETRAFSTRMMET_MIN_LEN (8)
4751
4752#define DOT11F_IE_ESETRAFSTRMMET_MAX_LEN (8)
4753
4754#ifdef __cplusplus
4755extern "C" {
4756#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004757__must_check uint32_t dot11f_unpack_ie_ese_traf_strm_met(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004758 tpAniSirGlobal,
4759 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004760 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304761 tDot11fIEESETrafStrmMet*,
4762 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004763
4764uint32_t dot11f_pack_ie_ese_traf_strm_met(
4765 tpAniSirGlobal,
4766 tDot11fIEESETrafStrmMet *,
4767 uint8_t *,
4768 uint32_t,
4769 uint32_t*);
4770
4771uint32_t dot11f_get_packed_ie_ESETrafStrmMet(
4772 tpAniSirGlobal,
4773 tDot11fIEESETrafStrmMet *,
4774 uint32_t*);
4775
4776#ifdef __cplusplus
4777}; /* End extern "C". */
4778#endif /* C++ */
4779
4780/* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x08} */
4781typedef struct sDot11fIEESETrafStrmRateSet {
4782 uint8_t present;
4783 uint8_t tsid;
4784 uint8_t num_tsrates;
4785 uint8_t tsrates[8];
4786} tDot11fIEESETrafStrmRateSet;
4787
4788#define DOT11F_EID_ESETRAFSTRMRATESET (221)
4789
4790/* N.B. These #defines do *not* include the EID & length */
4791#define DOT11F_IE_ESETRAFSTRMRATESET_MIN_LEN (5)
4792
4793#define DOT11F_IE_ESETRAFSTRMRATESET_MAX_LEN (13)
4794
4795#ifdef __cplusplus
4796extern "C" {
4797#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004798__must_check uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004799 tpAniSirGlobal,
4800 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004801 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304802 tDot11fIEESETrafStrmRateSet*,
4803 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004804
4805uint32_t dot11f_pack_ie_ese_traf_strm_rate_set(
4806 tpAniSirGlobal,
4807 tDot11fIEESETrafStrmRateSet *,
4808 uint8_t *,
4809 uint32_t,
4810 uint32_t*);
4811
4812uint32_t dot11f_get_packed_ie_ESETrafStrmRateSet(
4813 tpAniSirGlobal,
4814 tDot11fIEESETrafStrmRateSet *,
4815 uint32_t*);
4816
4817#ifdef __cplusplus
4818}; /* End extern "C". */
4819#endif /* C++ */
4820
4821/* EID 150 (0x96) {OUI 0x00, 0x40, 0x96, 0x00} */
4822typedef struct sDot11fIEESETxmitPower {
4823 uint8_t present;
4824 uint8_t power_limit;
4825 uint8_t reserved;
4826} tDot11fIEESETxmitPower;
4827
4828#define DOT11F_EID_ESETXMITPOWER (150)
4829
4830/* N.B. These #defines do *not* include the EID & length */
4831#define DOT11F_IE_ESETXMITPOWER_MIN_LEN (6)
4832
4833#define DOT11F_IE_ESETXMITPOWER_MAX_LEN (6)
4834
4835#ifdef __cplusplus
4836extern "C" {
4837#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004838__must_check uint32_t dot11f_unpack_ie_ese_txmit_power(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004839 tpAniSirGlobal,
4840 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004841 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304842 tDot11fIEESETxmitPower*,
4843 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004844
4845uint32_t dot11f_pack_ie_ese_txmit_power(
4846 tpAniSirGlobal,
4847 tDot11fIEESETxmitPower *,
4848 uint8_t *,
4849 uint32_t,
4850 uint32_t*);
4851
4852uint32_t dot11f_get_packed_ie_ESETxmitPower(
4853 tpAniSirGlobal,
4854 tDot11fIEESETxmitPower *,
4855 uint32_t*);
4856
4857#ifdef __cplusplus
4858}; /* End extern "C". */
4859#endif /* C++ */
4860
4861/* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x03} */
4862typedef struct sDot11fIEESEVersion {
4863 uint8_t present;
4864 uint8_t version;
4865} tDot11fIEESEVersion;
4866
4867#define DOT11F_EID_ESEVERSION (221)
4868
4869/* N.B. These #defines do *not* include the EID & length */
4870#define DOT11F_IE_ESEVERSION_MIN_LEN (5)
4871
4872#define DOT11F_IE_ESEVERSION_MAX_LEN (5)
4873
4874#ifdef __cplusplus
4875extern "C" {
4876#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004877__must_check uint32_t dot11f_unpack_ie_ese_version(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004878 tpAniSirGlobal,
4879 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004880 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304881 tDot11fIEESEVersion*,
4882 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004883
4884uint32_t dot11f_pack_ie_ese_version(
4885 tpAniSirGlobal,
4886 tDot11fIEESEVersion *,
4887 uint8_t *,
4888 uint32_t,
4889 uint32_t*);
4890
4891uint32_t dot11f_get_packed_ie_ESEVersion(
4892 tpAniSirGlobal,
4893 tDot11fIEESEVersion *,
4894 uint32_t*);
4895
4896#ifdef __cplusplus
4897}; /* End extern "C". */
4898#endif /* C++ */
4899
4900/* EID 127 (0x7f) */
4901typedef struct sDot11fIEExtCap {
4902 uint8_t present;
4903 uint8_t num_bytes;
Selvaraj, Sridhar2c46d832017-03-13 17:55:48 +05304904 uint8_t bytes[15];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004905} tDot11fIEExtCap;
4906
4907#define DOT11F_EID_EXTCAP (127)
4908
4909/* N.B. These #defines do *not* include the EID & length */
Hu Wang411e0cc2016-10-28 14:56:01 +08004910#define DOT11F_IE_EXTCAP_MIN_LEN (1)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004911
Selvaraj, Sridhar2c46d832017-03-13 17:55:48 +05304912#define DOT11F_IE_EXTCAP_MAX_LEN (15)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004913
4914#ifdef __cplusplus
4915extern "C" {
4916#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004917__must_check uint32_t dot11f_unpack_ie_ext_cap(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004918 tpAniSirGlobal,
4919 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004920 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304921 tDot11fIEExtCap*,
4922 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004923
4924uint32_t dot11f_pack_ie_ext_cap(
4925 tpAniSirGlobal,
4926 tDot11fIEExtCap *,
4927 uint8_t *,
4928 uint32_t,
4929 uint32_t*);
4930
4931uint32_t dot11f_get_packed_ie_ExtCap(
4932 tpAniSirGlobal,
4933 tDot11fIEExtCap *,
4934 uint32_t*);
4935
4936#ifdef __cplusplus
4937}; /* End extern "C". */
4938#endif /* C++ */
4939
4940/* EID 50 (0x32) */
4941typedef struct sDot11fIEExtSuppRates {
4942 uint8_t present;
4943 uint8_t num_rates;
4944 uint8_t rates[12];
4945} tDot11fIEExtSuppRates;
4946
4947#define DOT11F_EID_EXTSUPPRATES (50)
4948
4949/* N.B. These #defines do *not* include the EID & length */
4950#define DOT11F_IE_EXTSUPPRATES_MIN_LEN (1)
4951
4952#define DOT11F_IE_EXTSUPPRATES_MAX_LEN (12)
4953
4954#ifdef __cplusplus
4955extern "C" {
4956#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004957__must_check uint32_t dot11f_unpack_ie_ext_supp_rates(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004958 tpAniSirGlobal,
4959 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07004960 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05304961 tDot11fIEExtSuppRates*,
4962 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004963
4964uint32_t dot11f_pack_ie_ext_supp_rates(
4965 tpAniSirGlobal,
4966 tDot11fIEExtSuppRates *,
4967 uint8_t *,
4968 uint32_t,
4969 uint32_t*);
4970
4971uint32_t dot11f_get_packed_ie_ExtSuppRates(
4972 tpAniSirGlobal,
4973 tDot11fIEExtSuppRates *,
4974 uint32_t*);
4975
4976#ifdef __cplusplus
4977}; /* End extern "C". */
4978#endif /* C++ */
4979
4980/* EID 2 (0x02) */
4981typedef struct sDot11fIEFHParamSet {
4982 uint8_t present;
4983 uint16_t dwell_time;
4984 uint8_t hop_set;
4985 uint8_t hop_pattern;
4986 uint8_t hop_index;
4987} tDot11fIEFHParamSet;
4988
4989#define DOT11F_EID_FHPARAMSET (2)
4990
4991/* N.B. These #defines do *not* include the EID & length */
4992#define DOT11F_IE_FHPARAMSET_MIN_LEN (5)
4993
4994#define DOT11F_IE_FHPARAMSET_MAX_LEN (5)
4995
4996#ifdef __cplusplus
4997extern "C" {
4998#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08004999__must_check uint32_t dot11f_unpack_ie_fh_param_set(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005000 tpAniSirGlobal,
5001 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005002 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305003 tDot11fIEFHParamSet*,
5004 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005005
5006uint32_t dot11f_pack_ie_fh_param_set(
5007 tpAniSirGlobal,
5008 tDot11fIEFHParamSet *,
5009 uint8_t *,
5010 uint32_t,
5011 uint32_t*);
5012
5013uint32_t dot11f_get_packed_ie_FHParamSet(
5014 tpAniSirGlobal,
5015 tDot11fIEFHParamSet *,
5016 uint32_t*);
5017
5018#ifdef __cplusplus
5019}; /* End extern "C". */
5020#endif /* C++ */
5021
5022/* EID 8 (0x08) */
5023typedef struct sDot11fIEFHParams {
5024 uint8_t present;
5025 uint8_t radix;
5026 uint8_t nchannels;
5027} tDot11fIEFHParams;
5028
5029#define DOT11F_EID_FHPARAMS (8)
5030
5031/* N.B. These #defines do *not* include the EID & length */
5032#define DOT11F_IE_FHPARAMS_MIN_LEN (2)
5033
5034#define DOT11F_IE_FHPARAMS_MAX_LEN (2)
5035
5036#ifdef __cplusplus
5037extern "C" {
5038#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005039__must_check uint32_t dot11f_unpack_ie_fh_params(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005040 tpAniSirGlobal,
5041 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005042 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305043 tDot11fIEFHParams*,
5044 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005045
5046uint32_t dot11f_pack_ie_fh_params(
5047 tpAniSirGlobal,
5048 tDot11fIEFHParams *,
5049 uint8_t *,
5050 uint32_t,
5051 uint32_t*);
5052
5053uint32_t dot11f_get_packed_ie_FHParams(
5054 tpAniSirGlobal,
5055 tDot11fIEFHParams *,
5056 uint32_t*);
5057
5058#ifdef __cplusplus
5059}; /* End extern "C". */
5060#endif /* C++ */
5061
5062/* EID 9 (0x09) */
5063typedef struct sDot11fIEFHPattTable {
5064 uint8_t present;
5065 uint8_t flag;
5066 uint8_t nsets;
5067 uint8_t modulus;
5068 uint8_t offset;
5069 uint8_t num_randtable;
5070 uint8_t randtable[251];
5071} tDot11fIEFHPattTable;
5072
5073#define DOT11F_EID_FHPATTTABLE (9)
5074
5075/* N.B. These #defines do *not* include the EID & length */
5076#define DOT11F_IE_FHPATTTABLE_MIN_LEN (4)
5077
5078#define DOT11F_IE_FHPATTTABLE_MAX_LEN (255)
5079
5080#ifdef __cplusplus
5081extern "C" {
5082#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005083__must_check uint32_t dot11f_unpack_ie_fh_patt_table(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005084 tpAniSirGlobal,
5085 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005086 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305087 tDot11fIEFHPattTable*,
5088 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005089
5090uint32_t dot11f_pack_ie_fh_patt_table(
5091 tpAniSirGlobal,
5092 tDot11fIEFHPattTable *,
5093 uint8_t *,
5094 uint32_t,
5095 uint32_t*);
5096
5097uint32_t dot11f_get_packed_ie_FHPattTable(
5098 tpAniSirGlobal,
5099 tDot11fIEFHPattTable *,
5100 uint32_t*);
5101
5102#ifdef __cplusplus
5103}; /* End extern "C". */
5104#endif /* C++ */
5105
5106/* EID 55 (0x37) */
5107typedef struct sDot11fIEFTInfo {
5108 uint8_t present;
5109 uint16_t reserved:8;
5110 uint16_t IECount:8;
5111 uint8_t MIC[16];
5112 uint8_t Anonce[32];
5113 uint8_t Snonce[32];
5114 tDot11fIER1KH_ID R1KH_ID;
5115 tDot11fIEGTK GTK;
5116 tDot11fIER0KH_ID R0KH_ID;
5117 tDot11fIEIGTK IGTK;
5118} tDot11fIEFTInfo;
5119
5120#define DOT11F_EID_FTINFO (55)
5121
5122/* N.B. These #defines do *not* include the EID & length */
5123#define DOT11F_IE_FTINFO_MIN_LEN (82)
5124
5125#define DOT11F_IE_FTINFO_MAX_LEN (220)
5126
5127#ifdef __cplusplus
5128extern "C" {
5129#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005130__must_check uint32_t dot11f_unpack_ie_ft_info(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005131 tpAniSirGlobal,
5132 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005133 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305134 tDot11fIEFTInfo*,
5135 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005136
5137uint32_t dot11f_pack_ie_ft_info(
5138 tpAniSirGlobal,
5139 tDot11fIEFTInfo *,
5140 uint8_t *,
5141 uint32_t,
5142 uint32_t*);
5143
5144uint32_t dot11f_get_packed_ieft_info(
5145 tpAniSirGlobal,
5146 tDot11fIEFTInfo *,
5147 uint32_t*);
5148
5149#ifdef __cplusplus
5150}; /* End extern "C". */
5151#endif /* C++ */
5152
5153/* EID 45 (0x2d) */
5154typedef struct sDot11fIEHTCaps {
5155 uint8_t present;
5156 uint16_t advCodingCap:1;
5157 uint16_t supportedChannelWidthSet:1;
5158 uint16_t mimoPowerSave:2;
5159 uint16_t greenField:1;
5160 uint16_t shortGI20MHz:1;
5161 uint16_t shortGI40MHz:1;
5162 uint16_t txSTBC:1;
5163 uint16_t rxSTBC:2;
5164 uint16_t delayedBA:1;
5165 uint16_t maximalAMSDUsize:1;
5166 uint16_t dsssCckMode40MHz:1;
5167 uint16_t psmp:1;
5168 uint16_t stbcControlFrame:1;
5169 uint16_t lsigTXOPProtection:1;
5170 uint8_t maxRxAMPDUFactor:2;
5171 uint8_t mpduDensity:3;
5172 uint8_t reserved1:3;
5173 uint8_t supportedMCSSet[16];
5174 uint16_t pco:1;
5175 uint16_t transitionTime:2;
5176 uint16_t reserved2:5;
5177 uint16_t mcsFeedback:2;
5178 uint16_t reserved3:6;
5179 uint32_t txBF:1;
5180 uint32_t rxStaggeredSounding:1;
5181 uint32_t txStaggeredSounding:1;
5182 uint32_t rxZLF:1;
5183 uint32_t txZLF:1;
5184 uint32_t implicitTxBF:1;
5185 uint32_t calibration:2;
5186 uint32_t explicitCSITxBF:1;
5187 uint32_t explicitUncompressedSteeringMatrix:1;
5188 uint32_t explicitBFCSIFeedback:3;
5189 uint32_t explicitUncompressedSteeringMatrixFeedback:3;
5190 uint32_t explicitCompressedSteeringMatrixFeedback:3;
5191 uint32_t csiNumBFAntennae:2;
5192 uint32_t uncompressedSteeringMatrixBFAntennae:2;
5193 uint32_t compressedSteeringMatrixBFAntennae:2;
5194 uint32_t reserved4:7;
5195 uint8_t antennaSelection:1;
5196 uint8_t explicitCSIFeedbackTx:1;
5197 uint8_t antennaIndicesFeedbackTx:1;
5198 uint8_t explicitCSIFeedback:1;
5199 uint8_t antennaIndicesFeedback:1;
5200 uint8_t rxAS:1;
5201 uint8_t txSoundingPPDUs:1;
5202 uint8_t reserved5:1;
5203 uint8_t num_rsvd;
5204 uint8_t rsvd[32];
5205} tDot11fIEHTCaps;
5206
5207#define DOT11F_EID_HTCAPS (45)
5208
5209/* N.B. These #defines do *not* include the EID & length */
5210#define DOT11F_IE_HTCAPS_MIN_LEN (26)
5211
5212#define DOT11F_IE_HTCAPS_MAX_LEN (58)
5213
5214#ifdef __cplusplus
5215extern "C" {
5216#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005217__must_check uint32_t dot11f_unpack_ie_ht_caps(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005218 tpAniSirGlobal,
5219 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005220 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305221 tDot11fIEHTCaps*,
5222 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005223
5224uint32_t dot11f_pack_ie_ht_caps(
5225 tpAniSirGlobal,
5226 tDot11fIEHTCaps *,
5227 uint8_t *,
5228 uint32_t,
5229 uint32_t*);
5230
5231uint32_t dot11f_get_packed_ie_HTCaps(
5232 tpAniSirGlobal,
5233 tDot11fIEHTCaps *,
5234 uint32_t*);
5235
5236#ifdef __cplusplus
5237}; /* End extern "C". */
5238#endif /* C++ */
5239
5240/* EID 61 (0x3d) */
5241typedef struct sDot11fIEHTInfo {
5242 uint8_t present;
5243 uint8_t primaryChannel;
5244 uint8_t secondaryChannelOffset:2;
5245 uint8_t recommendedTxWidthSet:1;
5246 uint8_t rifsMode:1;
5247 uint8_t controlledAccessOnly:1;
5248 uint8_t serviceIntervalGranularity:3;
5249 uint16_t opMode:2;
5250 uint16_t nonGFDevicesPresent:1;
5251 uint16_t transmitBurstLimit:1;
5252 uint16_t obssNonHTStaPresent:1;
5253 uint16_t reserved:11;
5254 uint16_t basicSTBCMCS:7;
5255 uint16_t dualCTSProtection:1;
5256 uint16_t secondaryBeacon:1;
5257 uint16_t lsigTXOPProtectionFullSupport:1;
5258 uint16_t pcoActive:1;
5259 uint16_t pcoPhase:1;
5260 uint16_t reserved2:4;
5261 uint8_t basicMCSSet[16];
5262 uint8_t num_rsvd;
5263 uint8_t rsvd[32];
5264} tDot11fIEHTInfo;
5265
5266#define DOT11F_EID_HTINFO (61)
5267
5268/* N.B. These #defines do *not* include the EID & length */
5269#define DOT11F_IE_HTINFO_MIN_LEN (22)
5270
5271#define DOT11F_IE_HTINFO_MAX_LEN (54)
5272
5273#ifdef __cplusplus
5274extern "C" {
5275#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005276__must_check uint32_t dot11f_unpack_ie_ht_info(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005277 tpAniSirGlobal,
5278 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005279 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305280 tDot11fIEHTInfo*,
5281 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005282
5283uint32_t dot11f_pack_ie_ht_info(
5284 tpAniSirGlobal,
5285 tDot11fIEHTInfo *,
5286 uint8_t *,
5287 uint32_t,
5288 uint32_t*);
5289
5290uint32_t dot11f_get_packed_ie_HTInfo(
5291 tpAniSirGlobal,
5292 tDot11fIEHTInfo *,
5293 uint32_t*);
5294
5295#ifdef __cplusplus
5296}; /* End extern "C". */
5297#endif /* C++ */
5298
5299/* EID 6 (0x06) */
5300typedef struct sDot11fIEIBSSParams {
5301 uint8_t present;
5302 uint16_t atim;
5303} tDot11fIEIBSSParams;
5304
5305#define DOT11F_EID_IBSSPARAMS (6)
5306
5307/* N.B. These #defines do *not* include the EID & length */
5308#define DOT11F_IE_IBSSPARAMS_MIN_LEN (2)
5309
5310#define DOT11F_IE_IBSSPARAMS_MAX_LEN (2)
5311
5312#ifdef __cplusplus
5313extern "C" {
5314#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005315__must_check uint32_t dot11f_unpack_ie_ibss_params(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005316 tpAniSirGlobal,
5317 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005318 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305319 tDot11fIEIBSSParams*,
5320 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005321
5322uint32_t dot11f_pack_ie_ibss_params(
5323 tpAniSirGlobal,
5324 tDot11fIEIBSSParams *,
5325 uint8_t *,
5326 uint32_t,
5327 uint32_t*);
5328
5329uint32_t dot11f_get_packed_ie_IBSSParams(
5330 tpAniSirGlobal,
5331 tDot11fIEIBSSParams *,
5332 uint32_t*);
5333
5334#ifdef __cplusplus
5335}; /* End extern "C". */
5336#endif /* C++ */
5337
5338/* EID 101 (0x65) */
5339typedef struct sDot11fIELinkIdentifier {
5340 uint8_t present;
5341 uint8_t bssid[6];
5342 uint8_t InitStaAddr[6];
5343 uint8_t RespStaAddr[6];
5344} tDot11fIELinkIdentifier;
5345
5346#define DOT11F_EID_LINKIDENTIFIER (101)
5347
5348/* N.B. These #defines do *not* include the EID & length */
5349#define DOT11F_IE_LINKIDENTIFIER_MIN_LEN (18)
5350
5351#define DOT11F_IE_LINKIDENTIFIER_MAX_LEN (18)
5352
5353#ifdef __cplusplus
5354extern "C" {
5355#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005356__must_check uint32_t dot11f_unpack_ie_link_identifier(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005357 tpAniSirGlobal,
5358 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005359 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305360 tDot11fIELinkIdentifier*,
5361 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005362
5363uint32_t dot11f_pack_ie_link_identifier(
5364 tpAniSirGlobal,
5365 tDot11fIELinkIdentifier *,
5366 uint8_t *,
5367 uint32_t,
5368 uint32_t*);
5369
5370uint32_t dot11f_get_packed_ie_LinkIdentifier(
5371 tpAniSirGlobal,
5372 tDot11fIELinkIdentifier *,
5373 uint32_t*);
5374
5375#ifdef __cplusplus
5376}; /* End extern "C". */
5377#endif /* C++ */
5378
Abhishek Singh951eed82017-07-06 16:53:19 +05305379/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x16} (Multi-IE) */
Selvaraj, Sridharba726cb2016-07-22 13:41:03 +05305380typedef struct sDot11fIEMBO_IE {
5381 uint8_t present;
Abhishek Singh951eed82017-07-06 16:53:19 +05305382 tDot11fTLVmbo_ap_cap mbo_ap_cap;
5383 tDot11fTLVnon_prefferd_chan_rep non_prefferd_chan_rep;
5384 tDot11fTLVcellular_data_cap cellular_data_cap;
5385 tDot11fTLVassoc_disallowed assoc_disallowed;
5386 tDot11fTLVcellular_data_con_pref cellular_data_con_pref;
5387 tDot11fTLVtransition_reason transition_reason;
5388 tDot11fTLVtransition_reject_reason transition_reject_reason;
5389 tDot11fTLVassoc_retry_delay assoc_retry_delay;
5390 tDot11fTLVoce_cap oce_cap;
5391 tDot11fTLVrssi_assoc_rej rssi_assoc_rej;
5392 tDot11fTLVreduced_wan_metrics reduced_wan_metrics;
Selvaraj, Sridharba726cb2016-07-22 13:41:03 +05305393} tDot11fIEMBO_IE;
5394
5395#define DOT11F_EID_MBO_IE (221)
5396
5397/* N.B. These #defines do *not* include the EID & length */
Abhishek Singh951eed82017-07-06 16:53:19 +05305398#define DOT11F_IE_MBO_IE_MIN_LEN (4)
Selvaraj, Sridharba726cb2016-07-22 13:41:03 +05305399
Abhishek Singh951eed82017-07-06 16:53:19 +05305400#define DOT11F_IE_MBO_IE_MAX_LEN (293)
Selvaraj, Sridharba726cb2016-07-22 13:41:03 +05305401
5402#ifdef __cplusplus
5403extern "C" {
5404#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005405__must_check uint32_t dot11f_unpack_ie_MBO_IE(
Selvaraj, Sridharba726cb2016-07-22 13:41:03 +05305406 tpAniSirGlobal,
5407 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005408 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305409 tDot11fIEMBO_IE*,
5410 bool);
Selvaraj, Sridharba726cb2016-07-22 13:41:03 +05305411
5412uint32_t dot11f_pack_ie_MBO_IE(
5413 tpAniSirGlobal,
5414 tDot11fIEMBO_IE *,
5415 uint8_t *,
5416 uint32_t,
5417 uint32_t*);
5418
5419uint32_t dot11f_get_packed_ie_MBO_IE(
5420 tpAniSirGlobal,
5421 tDot11fIEMBO_IE *,
5422 uint32_t*);
5423
5424#ifdef __cplusplus
5425}; /* End extern "C". */
5426#endif /* C++ */
5427
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005428/* EID 39 (0x27) */
5429typedef struct sDot11fIEMeasurementReport {
5430 uint8_t present;
5431 uint8_t token;
5432 uint8_t late:1;
5433 uint8_t incapable:1;
5434 uint8_t refused:1;
5435 uint8_t unused:5;
5436 uint8_t type;
5437 union {
5438 struct {
5439 uint8_t channel;
5440 tDOT11F_U64 meas_start_time;
5441 uint16_t meas_duration;
5442 uint8_t bss:1;
5443 uint8_t ofdm_preamble:1;
5444 uint8_t unid_signal:1;
5445 uint8_t rader:1;
5446 uint8_t unmeasured:1;
5447 uint8_t unused:3;
5448 } Basic; /* type = 0 */
5449 struct {
5450 uint8_t channel;
5451 tDOT11F_U64 meas_start_time;
5452 uint16_t meas_duration;
5453 uint8_t cca_busy_fraction;
5454 } CCA; /* type = 1 */
5455 struct {
5456 uint8_t channel;
5457 tDOT11F_U64 meas_start_time;
5458 uint16_t meas_duration;
5459 uint8_t rpi0_density;
5460 uint8_t rpi1_density;
5461 uint8_t rpi2_density;
5462 uint8_t rpi3_density;
5463 uint8_t rpi4_density;
5464 uint8_t rpi5_density;
5465 uint8_t rpi6_density;
5466 uint8_t rpi7_density;
5467 } RPIHistogram; /* type = 2 */
5468 struct {
5469 uint8_t regClass;
5470 uint8_t channel;
5471 tDOT11F_U64 meas_start_time;
5472 uint16_t meas_duration;
5473 uint8_t condensed_PHY:7;
5474 uint8_t reported_frame_type:1;
5475 uint8_t RCPI;
5476 uint8_t RSNI;
5477 uint8_t BSSID[6];
5478 uint8_t antenna_id;
5479 uint32_t parent_TSF;
5480 tDot11fIEBeaconReportFrmBody BeaconReportFrmBody;
Vignesh Viswanathan3b4bf982018-06-05 15:04:23 +05305481 tDot11fIEbeacon_report_frm_body_fragment_id beacon_report_frm_body_fragment_id;
5482 tDot11fIElast_beacon_report_indication last_beacon_report_indication;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005483 } Beacon; /* type = 5 */
5484 } report;
5485} tDot11fIEMeasurementReport;
5486
5487#define DOT11F_EID_MEASUREMENTREPORT (39)
5488
5489/* N.B. These #defines do *not* include the EID & length */
5490#define DOT11F_IE_MEASUREMENTREPORT_MIN_LEN (3)
5491
5492#define DOT11F_IE_MEASUREMENTREPORT_MAX_LEN (29)
5493
5494#ifdef __cplusplus
5495extern "C" {
5496#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005497__must_check uint32_t dot11f_unpack_ie_measurement_report(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005498 tpAniSirGlobal,
5499 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005500 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305501 tDot11fIEMeasurementReport*,
5502 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005503
5504uint32_t dot11f_pack_ie_measurement_report(
5505 tpAniSirGlobal,
5506 tDot11fIEMeasurementReport *,
5507 uint8_t *,
5508 uint32_t,
5509 uint32_t*);
5510
5511uint32_t dot11f_get_packed_ie_measurement_report(
5512 tpAniSirGlobal,
5513 tDot11fIEMeasurementReport *,
5514 uint32_t*);
5515
5516#ifdef __cplusplus
5517}; /* End extern "C". */
5518#endif /* C++ */
5519
5520/* EID 38 (0x26) */
5521typedef struct sDot11fIEMeasurementRequest {
5522 uint8_t present;
5523 uint8_t measurement_token;
5524 uint8_t parallel:1;
5525 uint8_t enable:1;
5526 uint8_t request:1;
5527 uint8_t report:1;
5528 uint8_t durationMandatory:1;
5529 uint8_t unused:3;
5530 uint8_t measurement_type;
5531 union {
5532 struct {
5533 uint8_t channel_no;
5534 uint8_t meas_start_time[8];
5535 uint16_t meas_duration;
5536 } Basic; /* measurement_type = 0 */
5537 struct {
5538 uint8_t channel_no;
5539 uint8_t meas_start_time[8];
5540 uint16_t meas_duration;
5541 } CCA; /* measurement_type = 1 */
5542 struct {
5543 uint8_t channel_no;
5544 uint8_t meas_start_time[8];
5545 uint16_t meas_duration;
5546 } RPIHistogram; /* measurement_type = 2 */
5547 struct {
5548 uint8_t regClass;
5549 uint8_t channel;
5550 uint16_t randomization;
5551 uint16_t meas_duration;
5552 uint8_t meas_mode;
5553 uint8_t BSSID[6];
5554 tDot11fIESSID SSID;
5555 tDot11fIEBeaconReporting BeaconReporting;
5556 tDot11fIEBcnReportingDetail BcnReportingDetail;
5557 tDot11fIERequestedInfo RequestedInfo;
5558 uint16_t num_APChannelReport;
5559 tDot11fIEAPChannelReport APChannelReport[2];
Vignesh Viswanathan3b4bf982018-06-05 15:04:23 +05305560 tDot11fIElast_beacon_report_indication last_beacon_report_indication;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005561 } Beacon; /* measurement_type = 5 */
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08005562 struct {
5563 uint8_t loc_subject;
5564 tDot11fIEazimuth_req azimuth_req;
5565 tDot11fIEreq_mac_addr req_mac_addr;
5566 tDot11fIEtgt_mac_addr tgt_mac_addr;
5567 tDot11fIEmax_age max_age;
5568 } lci; /* measurement_type = 8 */
5569 struct {
5570 uint16_t random_interval;
5571 uint8_t min_ap_count;
5572 tDot11fIEneighbor_rpt neighbor_rpt;
5573 tDot11fIEmax_age max_age;
5574 } ftmrr; /* measurement_type = 16 */
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005575 } measurement_request;
5576} tDot11fIEMeasurementRequest;
5577
5578#define DOT11F_EID_MEASUREMENTREQUEST (38)
5579
5580/* N.B. These #defines do *not* include the EID & length */
Krishna Kumaar Natarajan062d0542016-03-01 17:56:11 -08005581#define DOT11F_IE_MEASUREMENTREQUEST_MIN_LEN (4)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005582
5583#define DOT11F_IE_MEASUREMENTREQUEST_MAX_LEN (16)
5584
5585#ifdef __cplusplus
5586extern "C" {
5587#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005588__must_check uint32_t dot11f_unpack_ie_measurement_request(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005589 tpAniSirGlobal,
5590 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005591 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305592 tDot11fIEMeasurementRequest*,
5593 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005594
5595uint32_t dot11f_pack_ie_measurement_request(
5596 tpAniSirGlobal,
5597 tDot11fIEMeasurementRequest *,
5598 uint8_t *,
5599 uint32_t,
5600 uint32_t*);
5601
5602uint32_t dot11f_get_packed_ie_measurement_request(
5603 tpAniSirGlobal,
5604 tDot11fIEMeasurementRequest *,
5605 uint32_t*);
5606
5607#ifdef __cplusplus
5608}; /* End extern "C". */
5609#endif /* C++ */
5610
5611/* EID 54 (0x36) */
5612typedef struct sDot11fIEMobilityDomain {
5613 uint8_t present;
5614 uint16_t MDID;
5615 uint8_t overDSCap:1;
5616 uint8_t resourceReqCap:1;
5617 uint8_t reserved:6;
5618} tDot11fIEMobilityDomain;
5619
5620#define DOT11F_EID_MOBILITYDOMAIN (54)
5621
5622/* N.B. These #defines do *not* include the EID & length */
5623#define DOT11F_IE_MOBILITYDOMAIN_MIN_LEN (3)
5624
5625#define DOT11F_IE_MOBILITYDOMAIN_MAX_LEN (3)
5626
5627#ifdef __cplusplus
5628extern "C" {
5629#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005630__must_check uint32_t dot11f_unpack_ie_mobility_domain(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005631 tpAniSirGlobal,
5632 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005633 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305634 tDot11fIEMobilityDomain*,
5635 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005636
5637uint32_t dot11f_pack_ie_mobility_domain(
5638 tpAniSirGlobal,
5639 tDot11fIEMobilityDomain *,
5640 uint8_t *,
5641 uint32_t,
5642 uint32_t*);
5643
5644uint32_t dot11f_get_packed_ie_MobilityDomain(
5645 tpAniSirGlobal,
5646 tDot11fIEMobilityDomain *,
5647 uint32_t*);
5648
5649#ifdef __cplusplus
5650}; /* End extern "C". */
5651#endif /* C++ */
5652
5653/* EID 52 (0x34) */
5654typedef struct sDot11fIENeighborReport {
5655 uint8_t present;
5656 uint8_t bssid[6];
5657 uint8_t APReachability:2;
5658 uint8_t Security:1;
5659 uint8_t KeyScope:1;
5660 uint8_t SpecMgmtCap:1;
5661 uint8_t QosCap:1;
5662 uint8_t apsd:1;
5663 uint8_t rrm:1;
5664 uint8_t DelayedBA:1;
5665 uint8_t ImmBA:1;
5666 uint8_t MobilityDomain:1;
5667 uint8_t reserved:5;
5668 uint16_t reserved1;
5669 uint8_t regulatoryClass;
5670 uint8_t channel;
5671 uint8_t PhyType;
5672 tDot11fIETSFInfo TSFInfo;
5673 tDot11fIECondensedCountryStr CondensedCountryStr;
5674 tDot11fIEMeasurementPilot MeasurementPilot;
5675 tDot11fIERRMEnabledCap RRMEnabledCap;
5676 tDot11fIEMultiBssid MultiBssid;
5677} tDot11fIENeighborReport;
5678
5679#define DOT11F_EID_NEIGHBORREPORT (52)
5680
5681/* N.B. These #defines do *not* include the EID & length */
5682#define DOT11F_IE_NEIGHBORREPORT_MIN_LEN (13)
5683
5684#define DOT11F_IE_NEIGHBORREPORT_MAX_LEN (546)
5685
5686#ifdef __cplusplus
5687extern "C" {
5688#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005689__must_check uint32_t dot11f_unpack_ie_neighbor_report(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005690 tpAniSirGlobal,
5691 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005692 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305693 tDot11fIENeighborReport*,
5694 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005695
5696uint32_t dot11f_pack_ie_neighbor_report(
5697 tpAniSirGlobal,
5698 tDot11fIENeighborReport *,
5699 uint8_t *,
5700 uint32_t,
5701 uint32_t*);
5702
5703uint32_t dot11f_get_packed_ie_neighbor_report(
5704 tpAniSirGlobal,
5705 tDot11fIENeighborReport *,
5706 uint32_t*);
5707
5708#ifdef __cplusplus
5709}; /* End extern "C". */
5710#endif /* C++ */
5711
5712/* EID 74 (0x4a) */
5713typedef struct sDot11fIEOBSSScanParameters {
5714 uint8_t present;
5715 uint16_t obssScanPassiveDwell;
5716 uint16_t obssScanActiveDwell;
5717 uint16_t bssChannelWidthTriggerScanInterval;
5718 uint16_t obssScanPassiveTotalPerChannel;
5719 uint16_t obssScanActiveTotalPerChannel;
5720 uint16_t bssWidthChannelTransitionDelayFactor;
5721 uint16_t obssScanActivityThreshold;
5722} tDot11fIEOBSSScanParameters;
5723
5724#define DOT11F_EID_OBSSSCANPARAMETERS (74)
5725
5726/* N.B. These #defines do *not* include the EID & length */
5727#define DOT11F_IE_OBSSSCANPARAMETERS_MIN_LEN (14)
5728
5729#define DOT11F_IE_OBSSSCANPARAMETERS_MAX_LEN (14)
5730
5731#ifdef __cplusplus
5732extern "C" {
5733#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005734__must_check uint32_t dot11f_unpack_ie_obss_scan_parameters(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005735 tpAniSirGlobal,
5736 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005737 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305738 tDot11fIEOBSSScanParameters*,
5739 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005740
5741uint32_t dot11f_pack_ie_obss_scan_parameters(
5742 tpAniSirGlobal,
5743 tDot11fIEOBSSScanParameters *,
5744 uint8_t *,
5745 uint32_t,
5746 uint32_t*);
5747
5748uint32_t dot11f_get_packed_ie_OBSSScanParameters(
5749 tpAniSirGlobal,
5750 tDot11fIEOBSSScanParameters *,
5751 uint32_t*);
5752
5753#ifdef __cplusplus
5754}; /* End extern "C". */
5755#endif /* C++ */
5756
5757/* EID 199 (0xc7) */
5758typedef struct sDot11fIEOperatingMode {
5759 uint8_t present;
5760 uint8_t chanWidth:2;
5761 uint8_t reserved:2;
5762 uint8_t rxNSS:3;
5763 uint8_t rxNSSType:1;
5764} tDot11fIEOperatingMode;
5765
5766#define DOT11F_EID_OPERATINGMODE (199)
5767
5768/* N.B. These #defines do *not* include the EID & length */
5769#define DOT11F_IE_OPERATINGMODE_MIN_LEN (1)
5770
5771#define DOT11F_IE_OPERATINGMODE_MAX_LEN (1)
5772
5773#ifdef __cplusplus
5774extern "C" {
5775#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005776__must_check uint32_t dot11f_unpack_ie_operating_mode(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005777 tpAniSirGlobal,
5778 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005779 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305780 tDot11fIEOperatingMode*,
5781 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005782
5783uint32_t dot11f_pack_ie_operating_mode(
5784 tpAniSirGlobal,
5785 tDot11fIEOperatingMode *,
5786 uint8_t *,
5787 uint32_t,
5788 uint32_t*);
5789
5790uint32_t dot11f_get_packed_ie_OperatingMode(
5791 tpAniSirGlobal,
5792 tDot11fIEOperatingMode *,
5793 uint32_t*);
5794
5795#ifdef __cplusplus
5796}; /* End extern "C". */
5797#endif /* C++ */
5798
5799/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
5800typedef struct sDot11fIEP2PAssocReq {
5801 uint8_t present;
5802 tDot11fTLVP2PCapability P2PCapability;
5803 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
5804 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
5805} tDot11fIEP2PAssocReq;
5806
5807#define DOT11F_EID_P2PASSOCREQ (221)
5808
5809/* N.B. These #defines do *not* include the EID & length */
5810#define DOT11F_IE_P2PASSOCREQ_MIN_LEN (4)
5811
5812#define DOT11F_IE_P2PASSOCREQ_MAX_LEN (71)
5813
5814#ifdef __cplusplus
5815extern "C" {
5816#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005817__must_check uint32_t dot11f_unpack_ie_p2_p_assoc_req(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005818 tpAniSirGlobal,
5819 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005820 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305821 tDot11fIEP2PAssocReq*,
5822 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005823
5824uint32_t dot11f_pack_ie_p2_p_assoc_req(
5825 tpAniSirGlobal,
5826 tDot11fIEP2PAssocReq *,
5827 uint8_t *,
5828 uint32_t,
5829 uint32_t*);
5830
5831uint32_t dot11f_get_packed_iep2_p_assoc_req(
5832 tpAniSirGlobal,
5833 tDot11fIEP2PAssocReq *,
5834 uint32_t*);
5835
5836#ifdef __cplusplus
5837}; /* End extern "C". */
5838#endif /* C++ */
5839
5840/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
5841typedef struct sDot11fIEP2PAssocRes {
5842 uint8_t present;
5843 tDot11fTLVP2PStatus P2PStatus;
5844 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
5845} tDot11fIEP2PAssocRes;
5846
5847#define DOT11F_EID_P2PASSOCRES (221)
5848
5849/* N.B. These #defines do *not* include the EID & length */
5850#define DOT11F_IE_P2PASSOCRES_MIN_LEN (4)
5851
5852#define DOT11F_IE_P2PASSOCRES_MAX_LEN (15)
5853
5854#ifdef __cplusplus
5855extern "C" {
5856#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005857__must_check uint32_t dot11f_unpack_ie_p2_p_assoc_res(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005858 tpAniSirGlobal,
5859 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005860 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305861 tDot11fIEP2PAssocRes*,
5862 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005863
5864uint32_t dot11f_pack_ie_p2_p_assoc_res(
5865 tpAniSirGlobal,
5866 tDot11fIEP2PAssocRes *,
5867 uint8_t *,
5868 uint32_t,
5869 uint32_t*);
5870
5871uint32_t dot11f_get_packed_iep2_p_assoc_res(
5872 tpAniSirGlobal,
5873 tDot11fIEP2PAssocRes *,
5874 uint32_t*);
5875
5876#ifdef __cplusplus
5877}; /* End extern "C". */
5878#endif /* C++ */
5879
5880/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
5881typedef struct sDot11fIEP2PBeacon {
5882 uint8_t present;
5883 tDot11fTLVP2PCapability P2PCapability;
5884 tDot11fTLVP2PDeviceId P2PDeviceId;
5885 tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
5886} tDot11fIEP2PBeacon;
5887
5888#define DOT11F_EID_P2PBEACON (221)
5889
5890/* N.B. These #defines do *not* include the EID & length */
5891#define DOT11F_IE_P2PBEACON_MIN_LEN (4)
5892
5893#define DOT11F_IE_P2PBEACON_MAX_LEN (59)
5894
5895#ifdef __cplusplus
5896extern "C" {
5897#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005898__must_check uint32_t dot11f_unpack_ie_p2_p_beacon(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005899 tpAniSirGlobal,
5900 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005901 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305902 tDot11fIEP2PBeacon*,
5903 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005904
5905uint32_t dot11f_pack_ie_p2_p_beacon(
5906 tpAniSirGlobal,
5907 tDot11fIEP2PBeacon *,
5908 uint8_t *,
5909 uint32_t,
5910 uint32_t*);
5911
5912uint32_t dot11f_get_packed_iep2_p_beacon(
5913 tpAniSirGlobal,
5914 tDot11fIEP2PBeacon *,
5915 uint32_t*);
5916
5917#ifdef __cplusplus
5918}; /* End extern "C". */
5919#endif /* C++ */
5920
5921/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
5922typedef struct sDot11fIEP2PBeaconProbeRes {
5923 uint8_t present;
5924 tDot11fTLVP2PCapability P2PCapability;
5925 tDot11fTLVP2PDeviceId P2PDeviceId;
5926 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
5927 tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
5928 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
5929 tDot11fTLVP2PGroupInfo P2PGroupInfo;
5930} tDot11fIEP2PBeaconProbeRes;
5931
5932#define DOT11F_EID_P2PBEACONPROBERES (221)
5933
5934/* N.B. These #defines do *not* include the EID & length */
5935#define DOT11F_IE_P2PBEACONPROBERES_MIN_LEN (4)
5936
5937#define DOT11F_IE_P2PBEACONPROBERES_MAX_LEN (1148)
5938
5939#ifdef __cplusplus
5940extern "C" {
5941#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005942__must_check uint32_t dot11f_unpack_ie_p2_p_beacon_probe_res(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005943 tpAniSirGlobal,
5944 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005945 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305946 tDot11fIEP2PBeaconProbeRes*,
5947 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005948
5949uint32_t dot11f_pack_ie_p2_p_beacon_probe_res(
5950 tpAniSirGlobal,
5951 tDot11fIEP2PBeaconProbeRes *,
5952 uint8_t *,
5953 uint32_t,
5954 uint32_t*);
5955
5956uint32_t dot11f_get_packed_iep2_p_beacon_probe_res(
5957 tpAniSirGlobal,
5958 tDot11fIEP2PBeaconProbeRes *,
5959 uint32_t*);
5960
5961#ifdef __cplusplus
5962}; /* End extern "C". */
5963#endif /* C++ */
5964
5965/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
5966typedef struct sDot11fIEP2PDeAuth {
5967 uint8_t present;
5968 tDot11fTLVMinorReasonCode MinorReasonCode;
5969} tDot11fIEP2PDeAuth;
5970
5971#define DOT11F_EID_P2PDEAUTH (221)
5972
5973/* N.B. These #defines do *not* include the EID & length */
5974#define DOT11F_IE_P2PDEAUTH_MIN_LEN (4)
5975
5976#define DOT11F_IE_P2PDEAUTH_MAX_LEN (8)
5977
5978#ifdef __cplusplus
5979extern "C" {
5980#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08005981__must_check uint32_t dot11f_unpack_ie_p2_p_de_auth(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005982 tpAniSirGlobal,
5983 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07005984 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05305985 tDot11fIEP2PDeAuth*,
5986 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005987
5988uint32_t dot11f_pack_ie_p2_p_de_auth(
5989 tpAniSirGlobal,
5990 tDot11fIEP2PDeAuth *,
5991 uint8_t *,
5992 uint32_t,
5993 uint32_t*);
5994
5995uint32_t dot11f_get_packed_iep2_p_de_auth(
5996 tpAniSirGlobal,
5997 tDot11fIEP2PDeAuth *,
5998 uint32_t*);
5999
6000#ifdef __cplusplus
6001}; /* End extern "C". */
6002#endif /* C++ */
6003
6004/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6005typedef struct sDot11fIEP2PDisAssoc {
6006 uint8_t present;
6007 tDot11fTLVMinorReasonCode MinorReasonCode;
6008} tDot11fIEP2PDisAssoc;
6009
6010#define DOT11F_EID_P2PDISASSOC (221)
6011
6012/* N.B. These #defines do *not* include the EID & length */
6013#define DOT11F_IE_P2PDISASSOC_MIN_LEN (4)
6014
6015#define DOT11F_IE_P2PDISASSOC_MAX_LEN (8)
6016
6017#ifdef __cplusplus
6018extern "C" {
6019#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006020__must_check uint32_t dot11f_unpack_ie_p2_p_dis_assoc(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006021 tpAniSirGlobal,
6022 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006023 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306024 tDot11fIEP2PDisAssoc*,
6025 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006026
6027uint32_t dot11f_pack_ie_p2_p_dis_assoc(
6028 tpAniSirGlobal,
6029 tDot11fIEP2PDisAssoc *,
6030 uint8_t *,
6031 uint32_t,
6032 uint32_t*);
6033
6034uint32_t dot11f_get_packed_iep2_p_dis_assoc(
6035 tpAniSirGlobal,
6036 tDot11fIEP2PDisAssoc *,
6037 uint32_t*);
6038
6039#ifdef __cplusplus
6040}; /* End extern "C". */
6041#endif /* C++ */
6042
6043/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} */
6044typedef struct sDot11fIEP2PIEOpaque {
6045 uint8_t present;
6046 uint8_t num_data;
6047 uint8_t data[249];
6048} tDot11fIEP2PIEOpaque;
6049
6050#define DOT11F_EID_P2PIEOPAQUE (221)
6051
6052/* N.B. These #defines do *not* include the EID & length */
6053#define DOT11F_IE_P2PIEOPAQUE_MIN_LEN (6)
6054
6055#define DOT11F_IE_P2PIEOPAQUE_MAX_LEN (253)
6056
6057#ifdef __cplusplus
6058extern "C" {
6059#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006060__must_check uint32_t dot11f_unpack_ie_p2_pie_opaque(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006061 tpAniSirGlobal,
6062 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006063 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306064 tDot11fIEP2PIEOpaque*,
6065 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006066
6067uint32_t dot11f_pack_ie_p2_pie_opaque(
6068 tpAniSirGlobal,
6069 tDot11fIEP2PIEOpaque *,
6070 uint8_t *,
6071 uint32_t,
6072 uint32_t*);
6073
6074uint32_t dot11f_get_packed_ie_P2PIEOpaque(
6075 tpAniSirGlobal,
6076 tDot11fIEP2PIEOpaque *,
6077 uint32_t*);
6078
6079#ifdef __cplusplus
6080}; /* End extern "C". */
6081#endif /* C++ */
6082
6083/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6084typedef struct sDot11fIEP2PProbeReq {
6085 uint8_t present;
6086 tDot11fTLVP2PCapability P2PCapability;
6087 tDot11fTLVP2PDeviceId P2PDeviceId;
6088 tDot11fTLVListenChannel ListenChannel;
6089 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6090 tDot11fTLVOperatingChannel OperatingChannel;
6091} tDot11fIEP2PProbeReq;
6092
6093#define DOT11F_EID_P2PPROBEREQ (221)
6094
6095/* N.B. These #defines do *not* include the EID & length */
6096#define DOT11F_IE_P2PPROBEREQ_MIN_LEN (4)
6097
6098#define DOT11F_IE_P2PPROBEREQ_MAX_LEN (41)
6099
6100#ifdef __cplusplus
6101extern "C" {
6102#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006103__must_check uint32_t dot11f_unpack_ie_p2_p_probe_req(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006104 tpAniSirGlobal,
6105 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006106 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306107 tDot11fIEP2PProbeReq*,
6108 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006109
6110uint32_t dot11f_pack_ie_p2_p_probe_req(
6111 tpAniSirGlobal,
6112 tDot11fIEP2PProbeReq *,
6113 uint8_t *,
6114 uint32_t,
6115 uint32_t*);
6116
6117uint32_t dot11f_get_packed_iep2_p_probe_req(
6118 tpAniSirGlobal,
6119 tDot11fIEP2PProbeReq *,
6120 uint32_t*);
6121
6122#ifdef __cplusplus
6123}; /* End extern "C". */
6124#endif /* C++ */
6125
6126/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */
6127typedef struct sDot11fIEP2PProbeRes {
6128 uint8_t present;
6129 tDot11fTLVP2PCapability P2PCapability;
6130 tDot11fTLVExtendedListenTiming ExtendedListenTiming;
6131 tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
6132 tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
6133 tDot11fTLVP2PGroupInfo P2PGroupInfo;
6134} tDot11fIEP2PProbeRes;
6135
6136#define DOT11F_EID_P2PPROBERES (221)
6137
6138/* N.B. These #defines do *not* include the EID & length */
6139#define DOT11F_IE_P2PPROBERES_MIN_LEN (4)
6140
6141#define DOT11F_IE_P2PPROBERES_MAX_LEN (1139)
6142
6143#ifdef __cplusplus
6144extern "C" {
6145#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006146__must_check uint32_t dot11f_unpack_ie_p2_p_probe_res(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006147 tpAniSirGlobal,
6148 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006149 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306150 tDot11fIEP2PProbeRes*,
6151 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006152
6153uint32_t dot11f_pack_ie_p2_p_probe_res(
6154 tpAniSirGlobal,
6155 tDot11fIEP2PProbeRes *,
6156 uint8_t *,
6157 uint32_t,
6158 uint32_t*);
6159
6160uint32_t dot11f_get_packed_iep2_p_probe_res(
6161 tpAniSirGlobal,
6162 tDot11fIEP2PProbeRes *,
6163 uint32_t*);
6164
6165#ifdef __cplusplus
6166}; /* End extern "C". */
6167#endif /* C++ */
6168
6169/* EID 105 (0x69) */
6170typedef struct sDot11fIEPTIControl {
6171 uint8_t present;
6172 uint8_t tid;
6173 uint16_t sequence_control;
6174} tDot11fIEPTIControl;
6175
6176#define DOT11F_EID_PTICONTROL (105)
6177
6178/* N.B. These #defines do *not* include the EID & length */
6179#define DOT11F_IE_PTICONTROL_MIN_LEN (3)
6180
6181#define DOT11F_IE_PTICONTROL_MAX_LEN (3)
6182
6183#ifdef __cplusplus
6184extern "C" {
6185#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006186__must_check uint32_t dot11f_unpack_ie_pti_control(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006187 tpAniSirGlobal,
6188 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006189 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306190 tDot11fIEPTIControl*,
6191 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006192
6193uint32_t dot11f_pack_ie_pti_control(
6194 tpAniSirGlobal,
6195 tDot11fIEPTIControl *,
6196 uint8_t *,
6197 uint32_t,
6198 uint32_t*);
6199
6200uint32_t dot11f_get_packed_ie_PTIControl(
6201 tpAniSirGlobal,
6202 tDot11fIEPTIControl *,
6203 uint32_t*);
6204
6205#ifdef __cplusplus
6206}; /* End extern "C". */
6207#endif /* C++ */
6208
6209/* EID 106 (0x6a) */
6210typedef struct sDot11fIEPUBufferStatus {
6211 uint8_t present;
6212 uint8_t ac_bk_traffic_aval:1;
6213 uint8_t ac_be_traffic_aval:1;
6214 uint8_t ac_vi_traffic_aval:1;
6215 uint8_t ac_vo_traffic_aval:1;
6216 uint8_t reserved:4;
6217} tDot11fIEPUBufferStatus;
6218
6219#define DOT11F_EID_PUBUFFERSTATUS (106)
6220
6221/* N.B. These #defines do *not* include the EID & length */
6222#define DOT11F_IE_PUBUFFERSTATUS_MIN_LEN (1)
6223
6224#define DOT11F_IE_PUBUFFERSTATUS_MAX_LEN (1)
6225
6226#ifdef __cplusplus
6227extern "C" {
6228#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006229__must_check uint32_t dot11f_unpack_ie_pu_buffer_status(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006230 tpAniSirGlobal,
6231 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006232 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306233 tDot11fIEPUBufferStatus*,
6234 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006235
6236uint32_t dot11f_pack_ie_pu_buffer_status(
6237 tpAniSirGlobal,
6238 tDot11fIEPUBufferStatus *,
6239 uint8_t *,
6240 uint32_t,
6241 uint32_t*);
6242
6243uint32_t dot11f_get_packed_ie_PUBufferStatus(
6244 tpAniSirGlobal,
6245 tDot11fIEPUBufferStatus *,
6246 uint32_t*);
6247
6248#ifdef __cplusplus
6249}; /* End extern "C". */
6250#endif /* C++ */
6251
6252/* EID 33 (0x21) */
6253typedef struct sDot11fIEPowerCaps {
6254 uint8_t present;
6255 uint8_t minTxPower;
6256 uint8_t maxTxPower;
6257} tDot11fIEPowerCaps;
6258
6259#define DOT11F_EID_POWERCAPS (33)
6260
6261/* N.B. These #defines do *not* include the EID & length */
6262#define DOT11F_IE_POWERCAPS_MIN_LEN (2)
6263
6264#define DOT11F_IE_POWERCAPS_MAX_LEN (2)
6265
6266#ifdef __cplusplus
6267extern "C" {
6268#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006269__must_check uint32_t dot11f_unpack_ie_power_caps(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006270 tpAniSirGlobal,
6271 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006272 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306273 tDot11fIEPowerCaps*,
6274 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006275
6276uint32_t dot11f_pack_ie_power_caps(
6277 tpAniSirGlobal,
6278 tDot11fIEPowerCaps *,
6279 uint8_t *,
6280 uint32_t,
6281 uint32_t*);
6282
6283uint32_t dot11f_get_packed_ie_PowerCaps(
6284 tpAniSirGlobal,
6285 tDot11fIEPowerCaps *,
6286 uint32_t*);
6287
6288#ifdef __cplusplus
6289}; /* End extern "C". */
6290#endif /* C++ */
6291
6292/* EID 32 (0x20) */
6293typedef struct sDot11fIEPowerConstraints {
6294 uint8_t present;
6295 uint8_t localPowerConstraints;
6296} tDot11fIEPowerConstraints;
6297
6298#define DOT11F_EID_POWERCONSTRAINTS (32)
6299
6300/* N.B. These #defines do *not* include the EID & length */
6301#define DOT11F_IE_POWERCONSTRAINTS_MIN_LEN (1)
6302
6303#define DOT11F_IE_POWERCONSTRAINTS_MAX_LEN (1)
6304
6305#ifdef __cplusplus
6306extern "C" {
6307#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006308__must_check uint32_t dot11f_unpack_ie_power_constraints(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006309 tpAniSirGlobal,
6310 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006311 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306312 tDot11fIEPowerConstraints*,
6313 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006314
6315uint32_t dot11f_pack_ie_power_constraints(
6316 tpAniSirGlobal,
6317 tDot11fIEPowerConstraints *,
6318 uint8_t *,
6319 uint32_t,
6320 uint32_t*);
6321
6322uint32_t dot11f_get_packed_ie_PowerConstraints(
6323 tpAniSirGlobal,
6324 tDot11fIEPowerConstraints *,
6325 uint32_t*);
6326
6327#ifdef __cplusplus
6328}; /* End extern "C". */
6329#endif /* C++ */
6330
6331/* EID 11 (0x0b) */
6332typedef struct sDot11fIEQBSSLoad {
6333 uint8_t present;
6334 uint16_t stacount;
6335 uint8_t chautil;
6336 uint16_t avail;
6337} tDot11fIEQBSSLoad;
6338
6339#define DOT11F_EID_QBSSLOAD (11)
6340
6341/* N.B. These #defines do *not* include the EID & length */
6342#define DOT11F_IE_QBSSLOAD_MIN_LEN (5)
6343
6344#define DOT11F_IE_QBSSLOAD_MAX_LEN (5)
6345
6346#ifdef __cplusplus
6347extern "C" {
6348#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006349__must_check uint32_t dot11f_unpack_ie_qbss_load(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006350 tpAniSirGlobal,
6351 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006352 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306353 tDot11fIEQBSSLoad*,
6354 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006355
6356uint32_t dot11f_pack_ie_qbss_load(
6357 tpAniSirGlobal,
6358 tDot11fIEQBSSLoad *,
6359 uint8_t *,
6360 uint32_t,
6361 uint32_t*);
6362
6363uint32_t dot11f_get_packed_ie_QBSSLoad(
6364 tpAniSirGlobal,
6365 tDot11fIEQBSSLoad *,
6366 uint32_t*);
6367
6368#ifdef __cplusplus
6369}; /* End extern "C". */
6370#endif /* C++ */
6371
Selvaraj, Sridharc2fe7a32017-02-02 19:20:16 +05306372/* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} */
6373typedef struct sDot11fIEQCN_IE {
6374 uint8_t present;
6375 uint8_t version[4];
6376} tDot11fIEQCN_IE;
6377
6378#define DOT11F_EID_QCN_IE (221)
6379
6380/* N.B. These #defines do *not* include the EID & length */
6381#define DOT11F_IE_QCN_IE_MIN_LEN (8)
6382
6383#define DOT11F_IE_QCN_IE_MAX_LEN (8)
6384
6385#ifdef __cplusplus
6386extern "C" {
6387#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006388__must_check uint32_t dot11f_unpack_ie_QCN_IE(
Selvaraj, Sridharc2fe7a32017-02-02 19:20:16 +05306389 tpAniSirGlobal,
6390 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006391 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306392 tDot11fIEQCN_IE*,
6393 bool);
Selvaraj, Sridharc2fe7a32017-02-02 19:20:16 +05306394
6395uint32_t dot11f_pack_ie_QCN_IE(
6396 tpAniSirGlobal,
6397 tDot11fIEQCN_IE *,
6398 uint8_t *,
6399 uint32_t,
6400 uint32_t*);
6401
6402uint32_t dot11f_get_packed_ie_QCN_IE(
6403 tpAniSirGlobal,
6404 tDot11fIEQCN_IE *,
6405 uint32_t*);
6406
6407#ifdef __cplusplus
6408}; /* End extern "C". */
6409#endif /* C++ */
6410
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006411/* EID 221 (0xdd) {OUI 0x00, 0xa0, 0xc6} */
6412typedef struct sDot11fIEQComVendorIE {
6413 uint8_t present;
6414 uint8_t type;
6415 uint8_t channel;
6416} tDot11fIEQComVendorIE;
6417
6418#define DOT11F_EID_QCOMVENDORIE (221)
6419
6420/* N.B. These #defines do *not* include the EID & length */
6421#define DOT11F_IE_QCOMVENDORIE_MIN_LEN (5)
6422
6423#define DOT11F_IE_QCOMVENDORIE_MAX_LEN (5)
6424
6425#ifdef __cplusplus
6426extern "C" {
6427#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006428__must_check uint32_t dot11f_unpack_ie_QComVendorIE(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006429 tpAniSirGlobal,
6430 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006431 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306432 tDot11fIEQComVendorIE*,
6433 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006434
6435uint32_t dot11f_pack_ie_QComVendorIE(
6436 tpAniSirGlobal,
6437 tDot11fIEQComVendorIE *,
6438 uint8_t *,
6439 uint32_t,
6440 uint32_t*);
6441
6442uint32_t dot11f_get_packed_ie_QComVendorIE(
6443 tpAniSirGlobal,
6444 tDot11fIEQComVendorIE *,
6445 uint32_t*);
6446
6447#ifdef __cplusplus
6448}; /* End extern "C". */
6449#endif /* C++ */
6450
6451/* EID 46 (0x2e) */
6452typedef struct sDot11fIEQOSCapsAp {
6453 uint8_t present;
6454 uint8_t count:4;
6455 uint8_t qack:1;
6456 uint8_t qreq:1;
6457 uint8_t txopreq:1;
6458 uint8_t reserved:1;
6459} tDot11fIEQOSCapsAp;
6460
6461#define DOT11F_EID_QOSCAPSAP (46)
6462
6463/* N.B. These #defines do *not* include the EID & length */
6464#define DOT11F_IE_QOSCAPSAP_MIN_LEN (1)
6465
6466#define DOT11F_IE_QOSCAPSAP_MAX_LEN (1)
6467
6468#ifdef __cplusplus
6469extern "C" {
6470#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006471__must_check uint32_t dot11f_unpack_ie_qos_caps_ap(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006472 tpAniSirGlobal,
6473 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006474 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306475 tDot11fIEQOSCapsAp*,
6476 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006477
6478uint32_t dot11f_pack_ie_qos_caps_ap(
6479 tpAniSirGlobal,
6480 tDot11fIEQOSCapsAp *,
6481 uint8_t *,
6482 uint32_t,
6483 uint32_t*);
6484
6485uint32_t dot11f_get_packed_ie_QOSCapsAp(
6486 tpAniSirGlobal,
6487 tDot11fIEQOSCapsAp *,
6488 uint32_t*);
6489
6490#ifdef __cplusplus
6491}; /* End extern "C". */
6492#endif /* C++ */
6493
6494/* EID 46 (0x2e) */
6495typedef struct sDot11fIEQOSCapsStation {
6496 uint8_t present;
6497 uint8_t acvo_uapsd:1;
6498 uint8_t acvi_uapsd:1;
6499 uint8_t acbk_uapsd:1;
6500 uint8_t acbe_uapsd:1;
6501 uint8_t qack:1;
6502 uint8_t max_sp_length:2;
6503 uint8_t more_data_ack:1;
6504} tDot11fIEQOSCapsStation;
6505
6506#define DOT11F_EID_QOSCAPSSTATION (46)
6507
6508/* N.B. These #defines do *not* include the EID & length */
6509#define DOT11F_IE_QOSCAPSSTATION_MIN_LEN (1)
6510
6511#define DOT11F_IE_QOSCAPSSTATION_MAX_LEN (1)
6512
6513#ifdef __cplusplus
6514extern "C" {
6515#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006516__must_check uint32_t dot11f_unpack_ie_qos_caps_station(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006517 tpAniSirGlobal,
6518 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006519 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306520 tDot11fIEQOSCapsStation*,
6521 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006522
6523uint32_t dot11f_pack_ie_qos_caps_station(
6524 tpAniSirGlobal,
6525 tDot11fIEQOSCapsStation *,
6526 uint8_t *,
6527 uint32_t,
6528 uint32_t*);
6529
6530uint32_t dot11f_get_packed_ie_QOSCapsStation(
6531 tpAniSirGlobal,
6532 tDot11fIEQOSCapsStation *,
6533 uint32_t*);
6534
6535#ifdef __cplusplus
6536}; /* End extern "C". */
6537#endif /* C++ */
6538
6539/* EID 110 (0x6e) */
6540typedef struct sDot11fIEQosMapSet {
6541 uint8_t present;
6542 uint8_t num_dscp_exceptions;
6543 uint8_t dscp_exceptions[60];
6544} tDot11fIEQosMapSet;
6545
6546#define DOT11F_EID_QOSMAPSET (110)
6547
6548/* N.B. These #defines do *not* include the EID & length */
6549#define DOT11F_IE_QOSMAPSET_MIN_LEN (0)
6550
6551#define DOT11F_IE_QOSMAPSET_MAX_LEN (60)
6552
6553#ifdef __cplusplus
6554extern "C" {
6555#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006556__must_check uint32_t dot11f_unpack_ie_qos_map_set(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006557 tpAniSirGlobal,
6558 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006559 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306560 tDot11fIEQosMapSet*,
6561 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006562
6563uint32_t dot11f_pack_ie_qos_map_set(
6564 tpAniSirGlobal,
6565 tDot11fIEQosMapSet *,
6566 uint8_t *,
6567 uint32_t,
6568 uint32_t*);
6569
6570uint32_t dot11f_get_packed_ie_QosMapSet(
6571 tpAniSirGlobal,
6572 tDot11fIEQosMapSet *,
6573 uint32_t*);
6574
6575#ifdef __cplusplus
6576}; /* End extern "C". */
6577#endif /* C++ */
6578
6579/* EID 40 (0x28) */
6580typedef struct sDot11fIEQuiet {
6581 uint8_t present;
6582 uint8_t count;
6583 uint8_t period;
6584 uint16_t duration;
6585 uint16_t offset;
6586} tDot11fIEQuiet;
6587
6588#define DOT11F_EID_QUIET (40)
6589
6590/* N.B. These #defines do *not* include the EID & length */
6591#define DOT11F_IE_QUIET_MIN_LEN (6)
6592
6593#define DOT11F_IE_QUIET_MAX_LEN (6)
6594
6595#ifdef __cplusplus
6596extern "C" {
6597#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006598__must_check uint32_t dot11f_unpack_ie_quiet(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006599 tpAniSirGlobal,
6600 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006601 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306602 tDot11fIEQuiet*,
6603 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006604
6605uint32_t dot11f_pack_ie_quiet(
6606 tpAniSirGlobal,
6607 tDot11fIEQuiet *,
6608 uint8_t *,
6609 uint32_t,
6610 uint32_t*);
6611
6612uint32_t dot11f_get_packed_ie_Quiet(
6613 tpAniSirGlobal,
6614 tDot11fIEQuiet *,
6615 uint32_t*);
6616
6617#ifdef __cplusplus
6618}; /* End extern "C". */
6619#endif /* C++ */
6620
6621/* EID 53 (0x35) */
6622typedef struct sDot11fIERCPIIE {
6623 uint8_t present;
6624 uint8_t rcpi;
6625} tDot11fIERCPIIE;
6626
6627#define DOT11F_EID_RCPIIE (53)
6628
6629/* N.B. These #defines do *not* include the EID & length */
6630#define DOT11F_IE_RCPIIE_MIN_LEN (1)
6631
6632#define DOT11F_IE_RCPIIE_MAX_LEN (1)
6633
6634#ifdef __cplusplus
6635extern "C" {
6636#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006637__must_check uint32_t dot11f_unpack_ie_rcpiie(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006638 tpAniSirGlobal,
6639 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006640 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306641 tDot11fIERCPIIE*,
6642 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006643
6644uint32_t dot11f_pack_ie_rcpiie(
6645 tpAniSirGlobal,
6646 tDot11fIERCPIIE *,
6647 uint8_t *,
6648 uint32_t,
6649 uint32_t*);
6650
6651uint32_t dot11f_get_packed_ie_RCPIIE(
6652 tpAniSirGlobal,
6653 tDot11fIERCPIIE *,
6654 uint32_t*);
6655
6656#ifdef __cplusplus
6657}; /* End extern "C". */
6658#endif /* C++ */
6659
6660/* EID 57 (0x39) */
6661typedef struct sDot11fIERICDataDesc {
6662 uint8_t present;
6663 tDot11fIERICData RICData;
6664 tDot11fIERICDescriptor RICDescriptor;
6665 tDot11fIETSPEC TSPEC;
6666 uint16_t num_TCLAS;
6667 tDot11fIETCLAS TCLAS[2];
6668 tDot11fIETCLASSPROC TCLASSPROC;
6669 tDot11fIETSDelay TSDelay;
6670 tDot11fIESchedule Schedule;
6671 tDot11fIEWMMTSPEC WMMTSPEC;
6672 uint16_t num_WMMTCLAS;
6673 tDot11fIEWMMTCLAS WMMTCLAS[2];
6674 tDot11fIEWMMTCLASPROC WMMTCLASPROC;
6675 tDot11fIEWMMTSDelay WMMTSDelay;
6676 tDot11fIEWMMSchedule WMMSchedule;
6677} tDot11fIERICDataDesc;
6678
6679#define DOT11F_EID_RICDATADESC (57)
6680
6681/* N.B. These #defines do *not* include the EID & length */
6682#define DOT11F_IE_RICDATADESC_MIN_LEN (0)
6683
6684#define DOT11F_IE_RICDATADESC_MAX_LEN (548)
6685
6686#ifdef __cplusplus
6687extern "C" {
6688#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006689__must_check uint32_t dot11f_unpack_ie_ric_data_desc(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006690 tpAniSirGlobal,
6691 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006692 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306693 tDot11fIERICDataDesc*,
6694 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006695
6696uint32_t dot11f_pack_ie_ric_data_desc(
6697 tpAniSirGlobal,
6698 tDot11fIERICDataDesc *,
6699 uint8_t *,
6700 uint32_t,
6701 uint32_t*);
6702
6703uint32_t dot11f_get_packed_ieric_data_desc(
6704 tpAniSirGlobal,
6705 tDot11fIERICDataDesc *,
6706 uint32_t*);
6707
6708#ifdef __cplusplus
6709}; /* End extern "C". */
6710#endif /* C++ */
6711
6712/* EID 48 (0x30) */
6713typedef struct sDot11fIERSN {
6714 uint8_t present;
6715 uint16_t version /* Must be 1! */;
Abhishek Singh3f13a812018-01-16 14:24:44 +05306716 uint8_t gp_cipher_suite_present;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006717 uint8_t gp_cipher_suite[4];
6718 uint16_t pwise_cipher_suite_count;
Mukul Sharma9f134522017-10-05 17:01:56 +05306719 uint8_t pwise_cipher_suites[6][4];
Abhishek Singh3f13a812018-01-16 14:24:44 +05306720 uint16_t akm_suite_cnt;
6721 uint8_t akm_suite[6][4];
6722 uint8_t RSN_Cap_present;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006723 uint8_t RSN_Cap[2];
6724 uint16_t pmkid_count;
6725 uint8_t pmkid[4][16];
Abhishek Singh3f13a812018-01-16 14:24:44 +05306726 uint8_t gp_mgmt_cipher_suite_present;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006727 uint8_t gp_mgmt_cipher_suite[4];
6728} tDot11fIERSN;
6729
6730#define DOT11F_EID_RSN (48)
6731
6732/* N.B. These #defines do *not* include the EID & length */
Abhishek Singh7dcb85b2017-12-27 15:15:01 +05306733#define DOT11F_IE_RSN_MIN_LEN (2)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006734
Mukul Sharma9f134522017-10-05 17:01:56 +05306735#define DOT11F_IE_RSN_MAX_LEN (130)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006736
6737#ifdef __cplusplus
6738extern "C" {
6739#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006740__must_check uint32_t dot11f_unpack_ie_rsn(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006741 tpAniSirGlobal,
6742 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006743 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306744 tDot11fIERSN*,
6745 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006746
6747uint32_t dot11f_pack_ie_rsn(
6748 tpAniSirGlobal,
6749 tDot11fIERSN *,
6750 uint8_t *,
6751 uint32_t,
6752 uint32_t*);
6753
6754uint32_t dot11f_get_packed_iersn(
6755 tpAniSirGlobal,
6756 tDot11fIERSN *,
6757 uint32_t*);
6758
6759#ifdef __cplusplus
6760}; /* End extern "C". */
6761#endif /* C++ */
6762
6763/* EID 65 (0x41) */
6764typedef struct sDot11fIERSNIIE {
6765 uint8_t present;
6766 uint8_t rsni;
6767} tDot11fIERSNIIE;
6768
6769#define DOT11F_EID_RSNIIE (65)
6770
6771/* N.B. These #defines do *not* include the EID & length */
6772#define DOT11F_IE_RSNIIE_MIN_LEN (1)
6773
6774#define DOT11F_IE_RSNIIE_MAX_LEN (1)
6775
6776#ifdef __cplusplus
6777extern "C" {
6778#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006779__must_check uint32_t dot11f_unpack_ie_rsniie(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006780 tpAniSirGlobal,
6781 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006782 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306783 tDot11fIERSNIIE*,
6784 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006785
6786uint32_t dot11f_pack_ie_rsniie(
6787 tpAniSirGlobal,
6788 tDot11fIERSNIIE *,
6789 uint8_t *,
6790 uint32_t,
6791 uint32_t*);
6792
6793uint32_t dot11f_get_packed_iersnIIE(
6794 tpAniSirGlobal,
6795 tDot11fIERSNIIE *,
6796 uint32_t*);
6797
6798#ifdef __cplusplus
6799}; /* End extern "C". */
6800#endif /* C++ */
6801
6802/* EID 48 (0x30) */
6803typedef struct sDot11fIERSNOpaque {
6804 uint8_t present;
6805 uint8_t num_data;
6806 uint8_t data[253];
6807} tDot11fIERSNOpaque;
6808
6809#define DOT11F_EID_RSNOPAQUE (48)
6810
6811/* N.B. These #defines do *not* include the EID & length */
Liangwei Dong5b25e342018-08-22 00:55:41 -04006812#define DOT11F_IE_RSNOPAQUE_MIN_LEN (0)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006813
6814#define DOT11F_IE_RSNOPAQUE_MAX_LEN (253)
6815
6816#ifdef __cplusplus
6817extern "C" {
6818#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006819__must_check uint32_t dot11f_unpack_ie_rsn_opaque(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006820 tpAniSirGlobal,
6821 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006822 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306823 tDot11fIERSNOpaque*,
6824 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006825
6826uint32_t dot11f_pack_ie_rsn_opaque(
6827 tpAniSirGlobal,
6828 tDot11fIERSNOpaque *,
6829 uint8_t *,
6830 uint32_t,
6831 uint32_t*);
6832
6833uint32_t dot11f_get_packed_iersnOpaque(
6834 tpAniSirGlobal,
6835 tDot11fIERSNOpaque *,
6836 uint32_t*);
6837
6838#ifdef __cplusplus
6839}; /* End extern "C". */
6840#endif /* C++ */
6841
6842/* EID 36 (0x24) */
6843typedef struct sDot11fIESuppChannels {
6844 uint8_t present;
6845 uint8_t num_bands;
6846 uint8_t bands[48][2];
6847} tDot11fIESuppChannels;
6848
6849#define DOT11F_EID_SUPPCHANNELS (36)
6850
6851/* N.B. These #defines do *not* include the EID & length */
Vignesh Viswanathan7813a3d2018-08-27 19:09:00 +05306852#define DOT11F_IE_SUPPCHANNELS_MIN_LEN (0)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006853
6854#define DOT11F_IE_SUPPCHANNELS_MAX_LEN (96)
6855
6856#ifdef __cplusplus
6857extern "C" {
6858#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006859__must_check uint32_t dot11f_unpack_ie_supp_channels(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006860 tpAniSirGlobal,
6861 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006862 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306863 tDot11fIESuppChannels*,
6864 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006865
6866uint32_t dot11f_pack_ie_supp_channels(
6867 tpAniSirGlobal,
6868 tDot11fIESuppChannels *,
6869 uint8_t *,
6870 uint32_t,
6871 uint32_t*);
6872
6873uint32_t dot11f_get_packed_ie_SuppChannels(
6874 tpAniSirGlobal,
6875 tDot11fIESuppChannels *,
6876 uint32_t*);
6877
6878#ifdef __cplusplus
6879}; /* End extern "C". */
6880#endif /* C++ */
6881
6882/* EID 59 (0x3b) */
6883typedef struct sDot11fIESuppOperatingClasses {
6884 uint8_t present;
6885 uint8_t num_classes;
6886 uint8_t classes[32];
6887} tDot11fIESuppOperatingClasses;
6888
6889#define DOT11F_EID_SUPPOPERATINGCLASSES (59)
6890
6891/* N.B. These #defines do *not* include the EID & length */
6892#define DOT11F_IE_SUPPOPERATINGCLASSES_MIN_LEN (1)
6893
6894#define DOT11F_IE_SUPPOPERATINGCLASSES_MAX_LEN (32)
6895
6896#ifdef __cplusplus
6897extern "C" {
6898#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006899__must_check uint32_t dot11f_unpack_ie_supp_operating_classes(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006900 tpAniSirGlobal,
6901 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006902 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306903 tDot11fIESuppOperatingClasses*,
6904 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006905
6906uint32_t dot11f_pack_ie_supp_operating_classes(
6907 tpAniSirGlobal,
6908 tDot11fIESuppOperatingClasses *,
6909 uint8_t *,
6910 uint32_t,
6911 uint32_t*);
6912
6913uint32_t dot11f_get_packed_ie_SuppOperatingClasses(
6914 tpAniSirGlobal,
6915 tDot11fIESuppOperatingClasses *,
6916 uint32_t*);
6917
6918#ifdef __cplusplus
6919}; /* End extern "C". */
6920#endif /* C++ */
6921
6922/* EID 1 (0x01) */
6923typedef struct sDot11fIESuppRates {
6924 uint8_t present;
6925 uint8_t num_rates;
6926 uint8_t rates[12];
6927} tDot11fIESuppRates;
6928
6929#define DOT11F_EID_SUPPRATES (1)
6930
6931/* N.B. These #defines do *not* include the EID & length */
6932#define DOT11F_IE_SUPPRATES_MIN_LEN (0)
6933
6934#define DOT11F_IE_SUPPRATES_MAX_LEN (12)
6935
6936#define DOT11F_IS_BG_RATE(_x) (((_x) == 02) || \
6937 ((_x) == 04) || \
6938 ((_x) == 11) || \
6939 ((_x) == 22) || \
6940 ((_x) == 12) || \
6941 ((_x) == 18) || \
6942 ((_x) == 24) || \
6943 ((_x) == 36) || \
6944 ((_x) == 48) || \
6945 ((_x) == 72) || \
6946 ((_x) == 96) || \
6947 ((_x) == 108))
6948
6949#ifdef __cplusplus
6950extern "C" {
6951#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006952__must_check uint32_t dot11f_unpack_ie_supp_rates(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006953 tpAniSirGlobal,
6954 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006955 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306956 tDot11fIESuppRates*,
6957 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006958
6959uint32_t dot11f_pack_ie_supp_rates(
6960 tpAniSirGlobal,
6961 tDot11fIESuppRates *,
6962 uint8_t *,
6963 uint32_t,
6964 uint32_t*);
6965
6966uint32_t dot11f_get_packed_ie_SuppRates(
6967 tpAniSirGlobal,
6968 tDot11fIESuppRates *,
6969 uint32_t*);
6970
6971#ifdef __cplusplus
6972}; /* End extern "C". */
6973#endif /* C++ */
6974
6975/* EID 5 (0x05) */
6976typedef struct sDot11fIETIM {
6977 uint8_t present;
6978 uint8_t dtim_count;
6979 uint8_t dtim_period;
6980 uint8_t bmpctl;
6981 uint8_t num_vbmp;
6982 uint8_t vbmp[251];
6983} tDot11fIETIM;
6984
6985#define DOT11F_EID_TIM (5)
6986
6987/* N.B. These #defines do *not* include the EID & length */
6988#define DOT11F_IE_TIM_MIN_LEN (4)
6989
6990#define DOT11F_IE_TIM_MAX_LEN (254)
6991
6992#ifdef __cplusplus
6993extern "C" {
6994#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08006995__must_check uint32_t dot11f_unpack_ie_tim(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006996 tpAniSirGlobal,
6997 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07006998 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05306999 tDot11fIETIM*,
7000 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007001
7002uint32_t dot11f_pack_ie_tim(
7003 tpAniSirGlobal,
7004 tDot11fIETIM *,
7005 uint8_t *,
7006 uint32_t,
7007 uint32_t*);
7008
7009uint32_t dot11f_get_packed_ie_TIM(
7010 tpAniSirGlobal,
7011 tDot11fIETIM *,
7012 uint32_t*);
7013
7014#ifdef __cplusplus
7015}; /* End extern "C". */
7016#endif /* C++ */
7017
7018/* EID 35 (0x23) */
7019typedef struct sDot11fIETPCReport {
7020 uint8_t present;
7021 uint8_t tx_power;
7022 uint8_t link_margin;
7023} tDot11fIETPCReport;
7024
7025#define DOT11F_EID_TPCREPORT (35)
7026
7027/* N.B. These #defines do *not* include the EID & length */
7028#define DOT11F_IE_TPCREPORT_MIN_LEN (2)
7029
7030#define DOT11F_IE_TPCREPORT_MAX_LEN (2)
7031
7032#ifdef __cplusplus
7033extern "C" {
7034#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007035__must_check uint32_t dot11f_unpack_ie_tpc_report(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007036 tpAniSirGlobal,
7037 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007038 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307039 tDot11fIETPCReport*,
7040 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007041
7042uint32_t dot11f_pack_ie_tpc_report(
7043 tpAniSirGlobal,
7044 tDot11fIETPCReport *,
7045 uint8_t *,
7046 uint32_t,
7047 uint32_t*);
7048
7049uint32_t dot11f_get_packed_ie_TPCReport(
7050 tpAniSirGlobal,
7051 tDot11fIETPCReport *,
7052 uint32_t*);
7053
7054#ifdef __cplusplus
7055}; /* End extern "C". */
7056#endif /* C++ */
7057
7058/* EID 34 (0x22) */
7059typedef struct sDot11fIETPCRequest {
7060 uint8_t present;
7061} tDot11fIETPCRequest;
7062
7063#define DOT11F_EID_TPCREQUEST (34)
7064
7065/* N.B. These #defines do *not* include the EID & length */
7066#define DOT11F_IE_TPCREQUEST_MIN_LEN (0)
7067
7068#define DOT11F_IE_TPCREQUEST_MAX_LEN (0)
7069
7070#ifdef __cplusplus
7071extern "C" {
7072#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007073__must_check uint32_t dot11f_unpack_ie_tpc_request(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007074 tpAniSirGlobal,
7075 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007076 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307077 tDot11fIETPCRequest*,
7078 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007079
7080uint32_t dot11f_pack_ie_tpc_request(
7081 tpAniSirGlobal,
7082 tDot11fIETPCRequest *,
7083 uint8_t *,
7084 uint32_t,
7085 uint32_t*);
7086
7087uint32_t dot11f_get_packed_ie_TPCRequest(
7088 tpAniSirGlobal,
7089 tDot11fIETPCRequest *,
7090 uint32_t*);
7091
7092#ifdef __cplusplus
7093}; /* End extern "C". */
7094#endif /* C++ */
7095
7096/* EID 69 (0x45) */
7097typedef struct sDot11fIETimeAdvertisement {
7098 uint8_t present;
7099 uint8_t timing_capabilities;
7100 uint8_t time_value[10];
7101 uint8_t time_error[5];
7102} tDot11fIETimeAdvertisement;
7103
7104#define DOT11F_EID_TIMEADVERTISEMENT (69)
7105
7106/* N.B. These #defines do *not* include the EID & length */
7107#define DOT11F_IE_TIMEADVERTISEMENT_MIN_LEN (16)
7108
7109#define DOT11F_IE_TIMEADVERTISEMENT_MAX_LEN (16)
7110
7111#ifdef __cplusplus
7112extern "C" {
7113#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007114__must_check uint32_t dot11f_unpack_ie_time_advertisement(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007115 tpAniSirGlobal,
7116 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007117 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307118 tDot11fIETimeAdvertisement*,
7119 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007120
7121uint32_t dot11f_pack_ie_time_advertisement(
7122 tpAniSirGlobal,
7123 tDot11fIETimeAdvertisement *,
7124 uint8_t *,
7125 uint32_t,
7126 uint32_t*);
7127
7128uint32_t dot11f_get_packed_ie_time_advertisement(
7129 tpAniSirGlobal,
7130 tDot11fIETimeAdvertisement *,
7131 uint32_t*);
7132
7133#ifdef __cplusplus
7134}; /* End extern "C". */
7135#endif /* C++ */
7136
7137/* EID 56 (0x38) */
7138typedef struct sDot11fIETimeoutInterval {
7139 uint8_t present;
7140 uint8_t timeoutType;
7141 uint32_t timeoutValue;
7142} tDot11fIETimeoutInterval;
7143
7144#define DOT11F_EID_TIMEOUTINTERVAL (56)
7145
7146/* N.B. These #defines do *not* include the EID & length */
7147#define DOT11F_IE_TIMEOUTINTERVAL_MIN_LEN (5)
7148
7149#define DOT11F_IE_TIMEOUTINTERVAL_MAX_LEN (5)
7150
7151#ifdef __cplusplus
7152extern "C" {
7153#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007154__must_check uint32_t dot11f_unpack_ie_timeout_interval(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007155 tpAniSirGlobal,
7156 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007157 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307158 tDot11fIETimeoutInterval*,
7159 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007160
7161uint32_t dot11f_pack_ie_timeout_interval(
7162 tpAniSirGlobal,
7163 tDot11fIETimeoutInterval *,
7164 uint8_t *,
7165 uint32_t,
7166 uint32_t*);
7167
7168uint32_t dot11f_get_packed_ie_TimeoutInterval(
7169 tpAniSirGlobal,
7170 tDot11fIETimeoutInterval *,
7171 uint32_t*);
7172
7173#ifdef __cplusplus
7174}; /* End extern "C". */
7175#endif /* C++ */
7176
7177/* EID 193 (0xc1) */
7178typedef struct sDot11fIEVHTExtBssLoad {
7179 uint8_t present;
7180 uint8_t muMIMOCapStaCount;
7181 uint8_t ssUnderUtil;
7182 uint8_t FortyMHzUtil;
7183 uint8_t EightyMHzUtil;
7184 uint8_t OneSixtyMHzUtil;
7185} tDot11fIEVHTExtBssLoad;
7186
7187#define DOT11F_EID_VHTEXTBSSLOAD (193)
7188
7189/* N.B. These #defines do *not* include the EID & length */
7190#define DOT11F_IE_VHTEXTBSSLOAD_MIN_LEN (5)
7191
7192#define DOT11F_IE_VHTEXTBSSLOAD_MAX_LEN (5)
7193
7194#ifdef __cplusplus
7195extern "C" {
7196#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007197__must_check uint32_t dot11f_unpack_ie_vht_ext_bss_load(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007198 tpAniSirGlobal,
7199 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007200 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307201 tDot11fIEVHTExtBssLoad*,
7202 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007203
7204uint32_t dot11f_pack_ie_vht_ext_bss_load(
7205 tpAniSirGlobal,
7206 tDot11fIEVHTExtBssLoad *,
7207 uint8_t *,
7208 uint32_t,
7209 uint32_t*);
7210
7211uint32_t dot11f_get_packed_ie_VHTExtBssLoad(
7212 tpAniSirGlobal,
7213 tDot11fIEVHTExtBssLoad *,
7214 uint32_t*);
7215
7216#ifdef __cplusplus
7217}; /* End extern "C". */
7218#endif /* C++ */
7219
7220/* EID 221 (0xdd) {OUI 0x00, 0x10, 0x18} */
7221typedef struct sDot11fIEVendor1IE {
7222 uint8_t present;
7223} tDot11fIEVendor1IE;
7224
7225#define DOT11F_EID_VENDOR1IE (221)
7226
7227/* N.B. These #defines do *not* include the EID & length */
7228#define DOT11F_IE_VENDOR1IE_MIN_LEN (3)
7229
7230#define DOT11F_IE_VENDOR1IE_MAX_LEN (3)
7231
7232#ifdef __cplusplus
7233extern "C" {
7234#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007235__must_check uint32_t dot11f_unpack_ie_vendor1_ie(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007236 tpAniSirGlobal,
7237 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007238 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307239 tDot11fIEVendor1IE*,
7240 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007241
7242uint32_t dot11f_pack_ie_vendor1_ie(
7243 tpAniSirGlobal,
7244 tDot11fIEVendor1IE *,
7245 uint8_t *,
7246 uint32_t,
7247 uint32_t*);
7248
7249uint32_t dot11f_get_packed_ie_Vendor1IE(
7250 tpAniSirGlobal,
7251 tDot11fIEVendor1IE *,
7252 uint32_t*);
7253
7254#ifdef __cplusplus
7255}; /* End extern "C". */
7256#endif /* C++ */
7257
7258/* EID 221 (0xdd) {OUI 0x00, 0x16, 0x32} */
7259typedef struct sDot11fIEVendor3IE {
7260 uint8_t present;
7261} tDot11fIEVendor3IE;
7262
7263#define DOT11F_EID_VENDOR3IE (221)
7264
7265/* N.B. These #defines do *not* include the EID & length */
7266#define DOT11F_IE_VENDOR3IE_MIN_LEN (3)
7267
7268#define DOT11F_IE_VENDOR3IE_MAX_LEN (3)
7269
7270#ifdef __cplusplus
7271extern "C" {
7272#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007273__must_check uint32_t dot11f_unpack_ie_vendor3_ie(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007274 tpAniSirGlobal,
7275 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007276 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307277 tDot11fIEVendor3IE*,
7278 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007279
7280uint32_t dot11f_pack_ie_vendor3_ie(
7281 tpAniSirGlobal,
7282 tDot11fIEVendor3IE *,
7283 uint8_t *,
7284 uint32_t,
7285 uint32_t*);
7286
7287uint32_t dot11f_get_packed_ie_Vendor3IE(
7288 tpAniSirGlobal,
7289 tDot11fIEVendor3IE *,
7290 uint32_t*);
7291
7292#ifdef __cplusplus
7293}; /* End extern "C". */
7294#endif /* C++ */
7295
7296/* EID 68 (0x44) */
7297typedef struct sDot11fIEWAPI {
7298 uint8_t present;
7299 uint16_t version /* Must be 1! */;
7300 uint16_t akm_suite_count;
7301 uint8_t akm_suites[4][4];
7302 uint16_t unicast_cipher_suite_count;
7303 uint8_t unicast_cipher_suites[4][4];
7304 uint8_t multicast_cipher_suite[4];
7305 uint16_t preauth:1;
7306 uint16_t reserved:15;
7307 uint16_t bkid_count;
7308 uint8_t bkid[4][16];
7309} tDot11fIEWAPI;
7310
7311#define DOT11F_EID_WAPI (68)
7312
7313/* N.B. These #defines do *not* include the EID & length */
7314#define DOT11F_IE_WAPI_MIN_LEN (12)
7315
7316#define DOT11F_IE_WAPI_MAX_LEN (110)
7317
7318#ifdef __cplusplus
7319extern "C" {
7320#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007321__must_check uint32_t dot11f_unpack_ie_wapi(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007322 tpAniSirGlobal,
7323 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007324 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307325 tDot11fIEWAPI*,
7326 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007327
7328uint32_t dot11f_pack_ie_wapi(
7329 tpAniSirGlobal,
7330 tDot11fIEWAPI *,
7331 uint8_t *,
7332 uint32_t,
7333 uint32_t*);
7334
7335uint32_t dot11f_get_packed_iewapi(
7336 tpAniSirGlobal,
7337 tDot11fIEWAPI *,
7338 uint32_t*);
7339
7340#ifdef __cplusplus
7341}; /* End extern "C". */
7342#endif /* C++ */
7343
7344/* EID 68 (0x44) */
7345typedef struct sDot11fIEWAPIOpaque {
7346 uint8_t present;
7347 uint8_t num_data;
7348 uint8_t data[253];
7349} tDot11fIEWAPIOpaque;
7350
7351#define DOT11F_EID_WAPIOPAQUE (68)
7352
7353/* N.B. These #defines do *not* include the EID & length */
7354#define DOT11F_IE_WAPIOPAQUE_MIN_LEN (6)
7355
7356#define DOT11F_IE_WAPIOPAQUE_MAX_LEN (253)
7357
7358#ifdef __cplusplus
7359extern "C" {
7360#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007361__must_check uint32_t dot11f_unpack_ie_wapi_opaque(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007362 tpAniSirGlobal,
7363 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007364 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307365 tDot11fIEWAPIOpaque*,
7366 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007367
7368uint32_t dot11f_pack_ie_wapi_opaque(
7369 tpAniSirGlobal,
7370 tDot11fIEWAPIOpaque *,
7371 uint8_t *,
7372 uint32_t,
7373 uint32_t*);
7374
7375uint32_t dot11f_get_packed_iewapiOpaque(
7376 tpAniSirGlobal,
7377 tDot11fIEWAPIOpaque *,
7378 uint32_t*);
7379
7380#ifdef __cplusplus
7381}; /* End extern "C". */
7382#endif /* C++ */
7383
7384/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x08, 0x00} */
7385typedef struct sDot11fIEWFATPC {
7386 uint8_t present;
7387 uint8_t txPower;
7388 uint8_t linkMargin;
7389} tDot11fIEWFATPC;
7390
7391#define DOT11F_EID_WFATPC (221)
7392
7393/* N.B. These #defines do *not* include the EID & length */
7394#define DOT11F_IE_WFATPC_MIN_LEN (7)
7395
7396#define DOT11F_IE_WFATPC_MAX_LEN (7)
7397
7398#ifdef __cplusplus
7399extern "C" {
7400#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007401__must_check uint32_t dot11f_unpack_ie_wfatpc(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007402 tpAniSirGlobal,
7403 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007404 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307405 tDot11fIEWFATPC*,
7406 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007407
7408uint32_t dot11f_pack_ie_wfatpc(
7409 tpAniSirGlobal,
7410 tDot11fIEWFATPC *,
7411 uint8_t *,
7412 uint32_t,
7413 uint32_t*);
7414
7415uint32_t dot11f_get_packed_ie_WFATPC(
7416 tpAniSirGlobal,
7417 tDot11fIEWFATPC *,
7418 uint32_t*);
7419
7420#ifdef __cplusplus
7421}; /* End extern "C". */
7422#endif /* C++ */
7423
7424/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x0a} */
7425typedef struct sDot11fIEWFDIEOpaque {
7426 uint8_t present;
7427 uint8_t num_data;
7428 uint8_t data[249];
7429} tDot11fIEWFDIEOpaque;
7430
7431#define DOT11F_EID_WFDIEOPAQUE (221)
7432
7433/* N.B. These #defines do *not* include the EID & length */
7434#define DOT11F_IE_WFDIEOPAQUE_MIN_LEN (6)
7435
7436#define DOT11F_IE_WFDIEOPAQUE_MAX_LEN (253)
7437
7438#ifdef __cplusplus
7439extern "C" {
7440#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007441__must_check uint32_t dot11f_unpack_ie_wfdie_opaque(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007442 tpAniSirGlobal,
7443 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007444 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307445 tDot11fIEWFDIEOpaque*,
7446 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007447
7448uint32_t dot11f_pack_ie_wfdie_opaque(
7449 tpAniSirGlobal,
7450 tDot11fIEWFDIEOpaque *,
7451 uint8_t *,
7452 uint32_t,
7453 uint32_t*);
7454
7455uint32_t dot11f_get_packed_ie_WFDIEOpaque(
7456 tpAniSirGlobal,
7457 tDot11fIEWFDIEOpaque *,
7458 uint32_t*);
7459
7460#ifdef __cplusplus
7461}; /* End extern "C". */
7462#endif /* C++ */
7463
7464/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05} */
7465typedef struct sDot11fIEWMMCaps {
7466 uint8_t present;
7467 uint8_t version /* Must be 1! */;
7468 uint8_t reserved:4;
7469 uint8_t qack:1;
7470 uint8_t queue_request:1;
7471 uint8_t txop_request:1;
7472 uint8_t more_ack:1;
7473} tDot11fIEWMMCaps;
7474
7475#define DOT11F_EID_WMMCAPS (221)
7476
7477/* N.B. These #defines do *not* include the EID & length */
7478#define DOT11F_IE_WMMCAPS_MIN_LEN (7)
7479
7480#define DOT11F_IE_WMMCAPS_MAX_LEN (7)
7481
7482#ifdef __cplusplus
7483extern "C" {
7484#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007485__must_check uint32_t dot11f_unpack_ie_wmm_caps(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007486 tpAniSirGlobal,
7487 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007488 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307489 tDot11fIEWMMCaps*,
7490 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007491
7492uint32_t dot11f_pack_ie_wmm_caps(
7493 tpAniSirGlobal,
7494 tDot11fIEWMMCaps *,
7495 uint8_t *,
7496 uint32_t,
7497 uint32_t*);
7498
7499uint32_t dot11f_get_packed_ie_WMMCaps(
7500 tpAniSirGlobal,
7501 tDot11fIEWMMCaps *,
7502 uint32_t*);
7503
7504#ifdef __cplusplus
7505}; /* End extern "C". */
7506#endif /* C++ */
7507
7508/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
7509typedef struct sDot11fIEWMMInfoAp {
7510 uint8_t present;
7511 uint8_t version;
7512 uint8_t param_set_count:4;
7513 uint8_t reserved:3;
7514 uint8_t uapsd:1;
7515} tDot11fIEWMMInfoAp;
7516
7517#define DOT11F_EID_WMMINFOAP (221)
7518
7519/* N.B. These #defines do *not* include the EID & length */
7520#define DOT11F_IE_WMMINFOAP_MIN_LEN (7)
7521
7522#define DOT11F_IE_WMMINFOAP_MAX_LEN (7)
7523
7524#ifdef __cplusplus
7525extern "C" {
7526#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007527__must_check uint32_t dot11f_unpack_ie_wmm_info_ap(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007528 tpAniSirGlobal,
7529 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007530 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307531 tDot11fIEWMMInfoAp*,
7532 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007533
7534uint32_t dot11f_pack_ie_wmm_info_ap(
7535 tpAniSirGlobal,
7536 tDot11fIEWMMInfoAp *,
7537 uint8_t *,
7538 uint32_t,
7539 uint32_t*);
7540
7541uint32_t dot11f_get_packed_ie_WMMInfoAp(
7542 tpAniSirGlobal,
7543 tDot11fIEWMMInfoAp *,
7544 uint32_t*);
7545
7546#ifdef __cplusplus
7547}; /* End extern "C". */
7548#endif /* C++ */
7549
7550/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
7551typedef struct sDot11fIEWMMInfoStation {
7552 uint8_t present;
7553 uint8_t version;
7554 uint8_t acvo_uapsd:1;
7555 uint8_t acvi_uapsd:1;
7556 uint8_t acbk_uapsd:1;
7557 uint8_t acbe_uapsd:1;
7558 uint8_t reserved1:1;
7559 uint8_t max_sp_length:2;
7560 uint8_t reserved2:1;
7561} tDot11fIEWMMInfoStation;
7562
7563#define DOT11F_EID_WMMINFOSTATION (221)
7564
7565/* N.B. These #defines do *not* include the EID & length */
7566#define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7)
7567
7568#define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7)
7569
7570#ifdef __cplusplus
7571extern "C" {
7572#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007573__must_check uint32_t dot11f_unpack_ie_wmm_info_station(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007574 tpAniSirGlobal,
7575 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007576 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307577 tDot11fIEWMMInfoStation*,
7578 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007579
7580uint32_t dot11f_pack_ie_wmm_info_station(
7581 tpAniSirGlobal,
7582 tDot11fIEWMMInfoStation *,
7583 uint8_t *,
7584 uint32_t,
7585 uint32_t*);
7586
7587uint32_t dot11f_get_packed_ie_WMMInfoStation(
7588 tpAniSirGlobal,
7589 tDot11fIEWMMInfoStation *,
7590 uint32_t*);
7591
7592#ifdef __cplusplus
7593}; /* End extern "C". */
7594#endif /* C++ */
7595
7596/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01} */
7597typedef struct sDot11fIEWMMParams {
7598 uint8_t present;
7599 uint8_t version /* Must be 1! */;
7600 uint8_t qosInfo;
7601 uint8_t reserved2;
7602 uint8_t acbe_aifsn:4;
7603 uint8_t acbe_acm:1;
7604 uint8_t acbe_aci:2;
7605 uint8_t unused1:1;
7606 uint8_t acbe_acwmin:4;
7607 uint8_t acbe_acwmax:4;
7608 uint16_t acbe_txoplimit;
7609 uint8_t acbk_aifsn:4;
7610 uint8_t acbk_acm:1;
7611 uint8_t acbk_aci:2;
7612 uint8_t unused2:1;
7613 uint8_t acbk_acwmin:4;
7614 uint8_t acbk_acwmax:4;
7615 uint16_t acbk_txoplimit;
7616 uint8_t acvi_aifsn:4;
7617 uint8_t acvi_acm:1;
7618 uint8_t acvi_aci:2;
7619 uint8_t unused3:1;
7620 uint8_t acvi_acwmin:4;
7621 uint8_t acvi_acwmax:4;
7622 uint16_t acvi_txoplimit;
7623 uint8_t acvo_aifsn:4;
7624 uint8_t acvo_acm:1;
7625 uint8_t acvo_aci:2;
7626 uint8_t unused4:1;
7627 uint8_t acvo_acwmin:4;
7628 uint8_t acvo_acwmax:4;
7629 uint16_t acvo_txoplimit;
7630} tDot11fIEWMMParams;
7631
7632#define DOT11F_EID_WMMPARAMS (221)
7633
7634/* N.B. These #defines do *not* include the EID & length */
7635#define DOT11F_IE_WMMPARAMS_MIN_LEN (24)
7636
7637#define DOT11F_IE_WMMPARAMS_MAX_LEN (24)
7638
7639#ifdef __cplusplus
7640extern "C" {
7641#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007642__must_check uint32_t dot11f_unpack_ie_wmm_params(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007643 tpAniSirGlobal,
7644 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007645 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307646 tDot11fIEWMMParams*,
7647 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007648
7649uint32_t dot11f_pack_ie_wmm_params(
7650 tpAniSirGlobal,
7651 tDot11fIEWMMParams *,
7652 uint8_t *,
7653 uint32_t,
7654 uint32_t*);
7655
7656uint32_t dot11f_get_packed_ie_WMMParams(
7657 tpAniSirGlobal,
7658 tDot11fIEWMMParams *,
7659 uint32_t*);
7660
7661#ifdef __cplusplus
7662}; /* End extern "C". */
7663#endif /* C++ */
7664
7665/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */
7666typedef struct sDot11fIEWPA {
7667 uint8_t present;
7668 uint16_t version /* Must be 1! */;
7669 /* field added to fix the bug in dot11fPackIEWPA */
7670 uint8_t multicast_cipher_present;
7671 uint8_t multicast_cipher[4];
7672 uint16_t unicast_cipher_count;
7673 uint8_t unicast_ciphers[4][4];
7674 uint16_t auth_suite_count;
7675 uint8_t auth_suites[4][4];
7676 uint16_t caps;
7677} tDot11fIEWPA;
7678
7679#define DOT11F_EID_WPA (221)
7680
7681/* N.B. These #defines do *not* include the EID & length */
7682#define DOT11F_IE_WPA_MIN_LEN (6)
7683
7684#define DOT11F_IE_WPA_MAX_LEN (48)
7685
7686#ifdef __cplusplus
7687extern "C" {
7688#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007689__must_check uint32_t dot11f_unpack_ie_wpa(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007690 tpAniSirGlobal,
7691 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007692 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307693 tDot11fIEWPA*,
7694 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007695
7696uint32_t dot11f_pack_ie_wpa(
7697 tpAniSirGlobal,
7698 tDot11fIEWPA *,
7699 uint8_t *,
7700 uint32_t,
7701 uint32_t*);
7702
7703uint32_t dot11f_get_packed_iewpa(
7704 tpAniSirGlobal,
7705 tDot11fIEWPA *,
7706 uint32_t*);
7707
7708#ifdef __cplusplus
7709}; /* End extern "C". */
7710#endif /* C++ */
7711
7712/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */
7713typedef struct sDot11fIEWPAOpaque {
7714 uint8_t present;
7715 uint8_t num_data;
7716 uint8_t data[249];
7717} tDot11fIEWPAOpaque;
7718
7719#define DOT11F_EID_WPAOPAQUE (221)
7720
7721/* N.B. These #defines do *not* include the EID & length */
7722#define DOT11F_IE_WPAOPAQUE_MIN_LEN (6)
7723
7724#define DOT11F_IE_WPAOPAQUE_MAX_LEN (253)
7725
7726#ifdef __cplusplus
7727extern "C" {
7728#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007729__must_check uint32_t dot11f_unpack_ie_wpa_opaque(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007730 tpAniSirGlobal,
7731 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007732 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307733 tDot11fIEWPAOpaque*,
7734 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007735
7736uint32_t dot11f_pack_ie_wpa_opaque(
7737 tpAniSirGlobal,
7738 tDot11fIEWPAOpaque *,
7739 uint8_t *,
7740 uint32_t,
7741 uint32_t*);
7742
7743uint32_t dot11f_get_packed_iewpaOpaque(
7744 tpAniSirGlobal,
7745 tDot11fIEWPAOpaque *,
7746 uint32_t*);
7747
7748#ifdef __cplusplus
7749}; /* End extern "C". */
7750#endif /* C++ */
7751
7752/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
7753typedef struct sDot11fIEWSC {
7754 uint8_t present;
7755 tDot11fTLVVersion Version;
7756 tDot11fTLVWPSState WPSState;
7757 tDot11fTLVAPSetupLocked APSetupLocked;
7758 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
7759 tDot11fTLVUUID_E UUID_E;
7760 tDot11fTLVUUID_R UUID_R;
7761 tDot11fTLVRFBands RFBands;
7762 tDot11fTLVSelectedRegistrar SelectedRegistrar;
7763 tDot11fTLVConfigMethods ConfigMethods;
7764 tDot11fTLVAssociationState AssociationState;
7765 tDot11fTLVConfigurationError ConfigurationError;
7766 tDot11fTLVManufacturer Manufacturer;
7767 tDot11fTLVModelName ModelName;
7768 tDot11fTLVModelNumber ModelNumber;
7769 tDot11fTLVSerialNumber SerialNumber;
7770 tDot11fTLVDeviceName DeviceName;
7771 tDot11fTLVDevicePasswordID DevicePasswordID;
7772 tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
7773 tDot11fTLVRequestType RequestType;
7774 tDot11fTLVResponseType ResponseType;
7775 tDot11fTLVVendorExtension VendorExtension;
7776 tDot11fTLVRequestDeviceType RequestDeviceType;
7777} tDot11fIEWSC;
7778
7779#define DOT11F_EID_WSC (221)
7780
7781/* N.B. These #defines do *not* include the EID & length */
7782#define DOT11F_IE_WSC_MIN_LEN (4)
7783
7784#define DOT11F_IE_WSC_MAX_LEN (366)
7785
7786#ifdef __cplusplus
7787extern "C" {
7788#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007789__must_check uint32_t dot11f_unpack_ie_wsc(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007790 tpAniSirGlobal,
7791 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007792 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307793 tDot11fIEWSC*,
7794 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007795
7796uint32_t dot11f_pack_ie_wsc(
7797 tpAniSirGlobal,
7798 tDot11fIEWSC *,
7799 uint8_t *,
7800 uint32_t,
7801 uint32_t*);
7802
7803uint32_t dot11f_get_packed_iewsc(
7804 tpAniSirGlobal,
7805 tDot11fIEWSC *,
7806 uint32_t*);
7807
7808#ifdef __cplusplus
7809}; /* End extern "C". */
7810#endif /* C++ */
7811
7812/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
7813typedef struct sDot11fIEWscAssocReq {
7814 uint8_t present;
7815 tDot11fTLVVersion Version;
7816 tDot11fTLVRequestType RequestType;
7817 tDot11fTLVVendorExtension VendorExtension;
7818} tDot11fIEWscAssocReq;
7819
7820#define DOT11F_EID_WSCASSOCREQ (221)
7821
7822/* N.B. These #defines do *not* include the EID & length */
7823#define DOT11F_IE_WSCASSOCREQ_MIN_LEN (4)
7824
7825#define DOT11F_IE_WSCASSOCREQ_MAX_LEN (35)
7826
7827#ifdef __cplusplus
7828extern "C" {
7829#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007830__must_check uint32_t dot11f_unpack_ie_wsc_assoc_req(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007831 tpAniSirGlobal,
7832 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007833 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307834 tDot11fIEWscAssocReq*,
7835 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007836
7837uint32_t dot11f_pack_ie_wsc_assoc_req(
7838 tpAniSirGlobal,
7839 tDot11fIEWscAssocReq *,
7840 uint8_t *,
7841 uint32_t,
7842 uint32_t*);
7843
7844uint32_t dot11f_get_packed_ie_wsc_assoc_req(
7845 tpAniSirGlobal,
7846 tDot11fIEWscAssocReq *,
7847 uint32_t*);
7848
7849#ifdef __cplusplus
7850}; /* End extern "C". */
7851#endif /* C++ */
7852
7853/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
7854typedef struct sDot11fIEWscAssocRes {
7855 uint8_t present;
7856 tDot11fTLVVersion Version;
7857 tDot11fTLVResponseType ResponseType;
7858 tDot11fTLVVendorExtension VendorExtension;
7859} tDot11fIEWscAssocRes;
7860
7861#define DOT11F_EID_WSCASSOCRES (221)
7862
7863/* N.B. These #defines do *not* include the EID & length */
7864#define DOT11F_IE_WSCASSOCRES_MIN_LEN (4)
7865
7866#define DOT11F_IE_WSCASSOCRES_MAX_LEN (35)
7867
7868#ifdef __cplusplus
7869extern "C" {
7870#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007871__must_check uint32_t dot11f_unpack_ie_wsc_assoc_res(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007872 tpAniSirGlobal,
7873 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007874 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307875 tDot11fIEWscAssocRes*,
7876 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007877
7878uint32_t dot11f_pack_ie_wsc_assoc_res(
7879 tpAniSirGlobal,
7880 tDot11fIEWscAssocRes *,
7881 uint8_t *,
7882 uint32_t,
7883 uint32_t*);
7884
7885uint32_t dot11f_get_packed_ie_wsc_assoc_res(
7886 tpAniSirGlobal,
7887 tDot11fIEWscAssocRes *,
7888 uint32_t*);
7889
7890#ifdef __cplusplus
7891}; /* End extern "C". */
7892#endif /* C++ */
7893
7894/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
7895typedef struct sDot11fIEWscBeacon {
7896 uint8_t present;
7897 tDot11fTLVVersion Version;
7898 tDot11fTLVWPSState WPSState;
7899 tDot11fTLVAPSetupLocked APSetupLocked;
7900 tDot11fTLVSelectedRegistrar SelectedRegistrar;
7901 tDot11fTLVDevicePasswordID DevicePasswordID;
7902 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
7903 tDot11fTLVUUID_E UUID_E;
7904 tDot11fTLVRFBands RFBands;
7905 tDot11fTLVVendorExtension VendorExtension;
7906} tDot11fIEWscBeacon;
7907
7908#define DOT11F_EID_WSCBEACON (221)
7909
7910/* N.B. These #defines do *not* include the EID & length */
7911#define DOT11F_IE_WSCBEACON_MIN_LEN (4)
7912
7913#define DOT11F_IE_WSCBEACON_MAX_LEN (82)
7914
7915#ifdef __cplusplus
7916extern "C" {
7917#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007918__must_check uint32_t dot11f_unpack_ie_wsc_beacon(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007919 tpAniSirGlobal,
7920 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007921 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307922 tDot11fIEWscBeacon*,
7923 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007924
7925uint32_t dot11f_pack_ie_wsc_beacon(
7926 tpAniSirGlobal,
7927 tDot11fIEWscBeacon *,
7928 uint8_t *,
7929 uint32_t,
7930 uint32_t*);
7931
7932uint32_t dot11f_get_packed_ie_wsc_beacon(
7933 tpAniSirGlobal,
7934 tDot11fIEWscBeacon *,
7935 uint32_t*);
7936
7937#ifdef __cplusplus
7938}; /* End extern "C". */
7939#endif /* C++ */
7940
7941/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
7942typedef struct sDot11fIEWscBeaconProbeRes {
7943 uint8_t present;
7944 tDot11fTLVVersion Version;
7945 tDot11fTLVWPSState WPSState;
7946 tDot11fTLVAPSetupLocked APSetupLocked;
7947 tDot11fTLVSelectedRegistrar SelectedRegistrar;
7948 tDot11fTLVDevicePasswordID DevicePasswordID;
7949 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
7950 tDot11fTLVResponseType ResponseType;
7951 tDot11fTLVUUID_E UUID_E;
7952 tDot11fTLVManufacturer Manufacturer;
7953 tDot11fTLVModelName ModelName;
7954 tDot11fTLVModelNumber ModelNumber;
7955 tDot11fTLVSerialNumber SerialNumber;
7956 tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
7957 tDot11fTLVDeviceName DeviceName;
7958 tDot11fTLVConfigMethods ConfigMethods;
7959 tDot11fTLVRFBands RFBands;
7960 tDot11fTLVVendorExtension VendorExtension;
7961} tDot11fIEWscBeaconProbeRes;
7962
7963#define DOT11F_EID_WSCBEACONPROBERES (221)
7964
7965/* N.B. These #defines do *not* include the EID & length */
7966#define DOT11F_IE_WSCBEACONPROBERES_MIN_LEN (4)
7967
7968#define DOT11F_IE_WSCBEACONPROBERES_MAX_LEN (317)
7969
7970#ifdef __cplusplus
7971extern "C" {
7972#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08007973__must_check uint32_t dot11f_unpack_ie_wsc_beacon_probe_res(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007974 tpAniSirGlobal,
7975 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07007976 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05307977 tDot11fIEWscBeaconProbeRes*,
7978 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007979
7980uint32_t dot11f_pack_ie_wsc_beacon_probe_res(
7981 tpAniSirGlobal,
7982 tDot11fIEWscBeaconProbeRes *,
7983 uint8_t *,
7984 uint32_t,
7985 uint32_t*);
7986
7987uint32_t dot11f_get_packed_ie_wsc_beacon_probe_res(
7988 tpAniSirGlobal,
7989 tDot11fIEWscBeaconProbeRes *,
7990 uint32_t*);
7991
7992#ifdef __cplusplus
7993}; /* End extern "C". */
7994#endif /* C++ */
7995
7996/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} */
7997typedef struct sDot11fIEWscIEOpaque {
7998 uint8_t present;
7999 uint8_t num_data;
8000 uint8_t data[249];
8001} tDot11fIEWscIEOpaque;
8002
8003#define DOT11F_EID_WSCIEOPAQUE (221)
8004
8005/* N.B. These #defines do *not* include the EID & length */
8006#define DOT11F_IE_WSCIEOPAQUE_MIN_LEN (6)
8007
8008#define DOT11F_IE_WSCIEOPAQUE_MAX_LEN (253)
8009
8010#ifdef __cplusplus
8011extern "C" {
8012#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008013__must_check uint32_t dot11f_unpack_ie_wsc_ie_opaque(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008014 tpAniSirGlobal,
8015 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008016 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308017 tDot11fIEWscIEOpaque*,
8018 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008019
8020uint32_t dot11f_pack_ie_wsc_ie_opaque(
8021 tpAniSirGlobal,
8022 tDot11fIEWscIEOpaque *,
8023 uint8_t *,
8024 uint32_t,
8025 uint32_t*);
8026
8027uint32_t dot11f_get_packed_ie_WscIEOpaque(
8028 tpAniSirGlobal,
8029 tDot11fIEWscIEOpaque *,
8030 uint32_t*);
8031
8032#ifdef __cplusplus
8033}; /* End extern "C". */
8034#endif /* C++ */
8035
8036/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8037typedef struct sDot11fIEWscProbeReq {
8038 uint8_t present;
8039 tDot11fTLVVersion Version;
8040 tDot11fTLVRequestType RequestType;
8041 tDot11fTLVConfigMethods ConfigMethods;
8042 tDot11fTLVUUID_E UUID_E;
8043 tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8044 tDot11fTLVRFBands RFBands;
8045 tDot11fTLVAssociationState AssociationState;
8046 tDot11fTLVConfigurationError ConfigurationError;
8047 tDot11fTLVDevicePasswordID DevicePasswordID;
8048 tDot11fTLVManufacturer Manufacturer;
8049 tDot11fTLVModelName ModelName;
8050 tDot11fTLVModelNumber ModelNumber;
8051 tDot11fTLVDeviceName DeviceName;
8052 tDot11fTLVVendorExtension VendorExtension;
8053 tDot11fTLVRequestDeviceType RequestDeviceType;
8054} tDot11fIEWscProbeReq;
8055
8056#define DOT11F_EID_WSCPROBEREQ (221)
8057
8058/* N.B. These #defines do *not* include the EID & length */
8059#define DOT11F_IE_WSCPROBEREQ_MIN_LEN (4)
8060
8061#define DOT11F_IE_WSCPROBEREQ_MAX_LEN (284)
8062
8063#ifdef __cplusplus
8064extern "C" {
8065#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008066__must_check uint32_t dot11f_unpack_ie_wsc_probe_req(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008067 tpAniSirGlobal,
8068 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008069 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308070 tDot11fIEWscProbeReq*,
8071 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008072
8073uint32_t dot11f_pack_ie_wsc_probe_req(
8074 tpAniSirGlobal,
8075 tDot11fIEWscProbeReq *,
8076 uint8_t *,
8077 uint32_t,
8078 uint32_t*);
8079
8080uint32_t dot11f_get_packed_ie_wsc_probe_req(
8081 tpAniSirGlobal,
8082 tDot11fIEWscProbeReq *,
8083 uint32_t*);
8084
8085#ifdef __cplusplus
8086}; /* End extern "C". */
8087#endif /* C++ */
8088
8089/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8090typedef struct sDot11fIEWscProbeRes {
8091 uint8_t present;
8092 tDot11fTLVVersion Version;
8093 tDot11fTLVWPSState WPSState;
8094 tDot11fTLVAPSetupLocked APSetupLocked;
8095 tDot11fTLVSelectedRegistrar SelectedRegistrar;
8096 tDot11fTLVDevicePasswordID DevicePasswordID;
8097 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
8098 tDot11fTLVResponseType ResponseType;
8099 tDot11fTLVUUID_E UUID_E;
8100 tDot11fTLVManufacturer Manufacturer;
8101 tDot11fTLVModelName ModelName;
8102 tDot11fTLVModelNumber ModelNumber;
8103 tDot11fTLVSerialNumber SerialNumber;
8104 tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
8105 tDot11fTLVDeviceName DeviceName;
8106 tDot11fTLVConfigMethods ConfigMethods;
8107 tDot11fTLVRFBands RFBands;
8108 tDot11fTLVVendorExtension VendorExtension;
8109} tDot11fIEWscProbeRes;
8110
8111#define DOT11F_EID_WSCPROBERES (221)
8112
8113/* N.B. These #defines do *not* include the EID & length */
8114#define DOT11F_IE_WSCPROBERES_MIN_LEN (4)
8115
8116#define DOT11F_IE_WSCPROBERES_MAX_LEN (317)
8117
8118#ifdef __cplusplus
8119extern "C" {
8120#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008121__must_check uint32_t dot11f_unpack_ie_wsc_probe_res(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008122 tpAniSirGlobal,
8123 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008124 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308125 tDot11fIEWscProbeRes*,
8126 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008127
8128uint32_t dot11f_pack_ie_wsc_probe_res(
8129 tpAniSirGlobal,
8130 tDot11fIEWscProbeRes *,
8131 uint8_t *,
8132 uint32_t,
8133 uint32_t*);
8134
8135uint32_t dot11f_get_packed_ie_wsc_probe_res(
8136 tpAniSirGlobal,
8137 tDot11fIEWscProbeRes *,
8138 uint32_t*);
8139
8140#ifdef __cplusplus
8141}; /* End extern "C". */
8142#endif /* C++ */
8143
8144/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */
8145typedef struct sDot11fIEWscReassocRes {
8146 uint8_t present;
8147 tDot11fTLVVersion Version;
8148 tDot11fTLVResponseType ResponseType;
8149 tDot11fTLVVendorExtension VendorExtension;
8150} tDot11fIEWscReassocRes;
8151
8152#define DOT11F_EID_WSCREASSOCRES (221)
8153
8154/* N.B. These #defines do *not* include the EID & length */
8155#define DOT11F_IE_WSCREASSOCRES_MIN_LEN (4)
8156
8157#define DOT11F_IE_WSCREASSOCRES_MAX_LEN (35)
8158
8159#ifdef __cplusplus
8160extern "C" {
8161#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008162__must_check uint32_t dot11f_unpack_ie_wsc_reassoc_res(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008163 tpAniSirGlobal,
8164 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008165 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308166 tDot11fIEWscReassocRes*,
8167 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008168
8169uint32_t dot11f_pack_ie_wsc_reassoc_res(
8170 tpAniSirGlobal,
8171 tDot11fIEWscReassocRes *,
8172 uint8_t *,
8173 uint32_t,
8174 uint32_t*);
8175
8176uint32_t dot11f_get_packed_ie_wsc_reassoc_res(
8177 tpAniSirGlobal,
8178 tDot11fIEWscReassocRes *,
8179 uint32_t*);
8180
8181#ifdef __cplusplus
8182}; /* End extern "C". */
8183#endif /* C++ */
8184
Kiran Kumar Lokere40875852018-01-15 12:36:19 -08008185/* EID 159 (0x9f) */
8186typedef struct sDot11fIEaddba_extn_element {
8187 uint8_t present;
8188 uint8_t no_fragmentation:1;
8189 uint8_t he_frag_operation:2;
8190 uint8_t reserved:5;
8191} tDot11fIEaddba_extn_element;
8192
8193#define DOT11F_EID_ADDBA_EXTN_ELEMENT (159)
8194
8195/* N.B. These #defines do *not* include the EID & length */
8196#define DOT11F_IE_ADDBA_EXTN_ELEMENT_MIN_LEN (1)
8197
8198#define DOT11F_IE_ADDBA_EXTN_ELEMENT_MAX_LEN (1)
8199
8200#ifdef __cplusplus
8201extern "C" {
8202#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008203__must_check uint32_t dot11f_unpack_ie_addba_extn_element(
Kiran Kumar Lokere40875852018-01-15 12:36:19 -08008204 tpAniSirGlobal,
8205 uint8_t *,
8206 uint8_t,
8207 tDot11fIEaddba_extn_element*,
8208 bool);
8209
8210uint32_t dot11f_pack_ie_addba_extn_element(
8211 tpAniSirGlobal,
8212 tDot11fIEaddba_extn_element *,
8213 uint8_t *,
8214 uint32_t,
8215 uint32_t*);
8216
8217uint32_t dot11f_get_packed_ie_addba_extn_element(
8218 tpAniSirGlobal,
8219 tDot11fIEaddba_extn_element *,
8220 uint32_t*);
8221
8222#ifdef __cplusplus
8223}; /* End extern "C". */
8224#endif /* C++ */
8225
Arif Hussain3a30fdc2018-02-08 20:00:41 -08008226/* EID 255 (0xff) Extended EID 42 (0x2a) */
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07008227typedef struct sDot11fIEbss_color_change {
8228 uint8_t present;
8229 uint8_t countdown;
8230 uint8_t new_color:6;
8231 uint8_t reserved:2;
8232} tDot11fIEbss_color_change;
8233
Arif Hussain3a30fdc2018-02-08 20:00:41 -08008234#define DOT11F_EID_BSS_COLOR_CHANGE (255)
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07008235
8236/* N.B. These #defines do *not* include the EID & length */
Arif Hussain3a30fdc2018-02-08 20:00:41 -08008237#define DOT11F_IE_BSS_COLOR_CHANGE_MIN_LEN (2)
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07008238
Arif Hussain3a30fdc2018-02-08 20:00:41 -08008239#define DOT11F_IE_BSS_COLOR_CHANGE_MAX_LEN (2)
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07008240
8241#ifdef __cplusplus
8242extern "C" {
8243#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008244__must_check uint32_t dot11f_unpack_ie_bss_color_change(
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07008245 tpAniSirGlobal,
8246 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008247 uint8_t,
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07008248 tDot11fIEbss_color_change*,
8249 bool);
8250
8251uint32_t dot11f_pack_ie_bss_color_change(
8252 tpAniSirGlobal,
8253 tDot11fIEbss_color_change *,
8254 uint8_t *,
8255 uint32_t,
8256 uint32_t*);
8257
8258uint32_t dot11f_get_packed_ie_bss_color_change(
8259 tpAniSirGlobal,
8260 tDot11fIEbss_color_change *,
8261 uint32_t*);
8262
8263#ifdef __cplusplus
8264}; /* End extern "C". */
8265#endif /* C++ */
8266
Padma, Santhosh Kumar666f96e2017-11-10 13:22:59 +05308267/* EID 255 (0xff) Extended EID 32 (0x20) */
8268typedef struct sDot11fIEdh_parameter_element {
8269 uint8_t present;
8270 uint8_t group[2];
8271 uint8_t num_public_key;
8272 uint8_t public_key[255];
8273} tDot11fIEdh_parameter_element;
8274
8275#define DOT11F_EID_DH_PARAMETER_ELEMENT (255)
8276
8277/* N.B. These #defines do *not* include the EID & length */
8278#define DOT11F_IE_DH_PARAMETER_ELEMENT_MIN_LEN (2)
8279
8280#define DOT11F_IE_DH_PARAMETER_ELEMENT_MAX_LEN (257)
8281
8282#ifdef __cplusplus
8283extern "C" {
8284#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008285__must_check uint32_t dot11f_unpack_ie_dh_parameter_element(
Padma, Santhosh Kumar666f96e2017-11-10 13:22:59 +05308286 tpAniSirGlobal,
8287 uint8_t *,
8288 uint8_t,
8289 tDot11fIEdh_parameter_element*,
8290 bool);
8291
8292uint32_t dot11f_pack_ie_dh_parameter_element(
8293 tpAniSirGlobal,
8294 tDot11fIEdh_parameter_element *,
8295 uint8_t *,
8296 uint32_t,
8297 uint32_t*);
8298
8299uint32_t dot11f_get_packed_ie_dh_parameter_element(
8300 tpAniSirGlobal,
8301 tDot11fIEdh_parameter_element *,
8302 uint32_t*);
8303
8304#ifdef __cplusplus
8305}; /* End extern "C". */
8306#endif /* C++ */
8307
Abhishek Singhd8c3f102017-07-29 14:10:37 +05308308/* EID 255 (0xff) Extended EID 11 (0x0b) */
8309typedef struct sDot11fIEesp_information {
8310 uint8_t present;
8311 uint8_t num_data;
8312 uint8_t data[96];
8313} tDot11fIEesp_information;
8314
8315#define DOT11F_EID_ESP_INFORMATION (255)
8316
8317/* N.B. These #defines do *not* include the EID & length */
8318#define DOT11F_IE_ESP_INFORMATION_MIN_LEN (0)
8319
8320#define DOT11F_IE_ESP_INFORMATION_MAX_LEN (96)
8321
8322#ifdef __cplusplus
8323extern "C" {
8324#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008325__must_check uint32_t dot11f_unpack_ie_esp_information(
Abhishek Singhd8c3f102017-07-29 14:10:37 +05308326 tpAniSirGlobal,
8327 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008328 uint8_t,
Abhishek Singhd8c3f102017-07-29 14:10:37 +05308329 tDot11fIEesp_information*,
8330 bool);
8331
8332uint32_t dot11f_pack_ie_esp_information(
8333 tpAniSirGlobal,
8334 tDot11fIEesp_information *,
8335 uint8_t *,
8336 uint32_t,
8337 uint32_t*);
8338
8339uint32_t dot11f_get_packed_ie_esp_information(
8340 tpAniSirGlobal,
8341 tDot11fIEesp_information *,
8342 uint32_t*);
8343
8344#ifdef __cplusplus
8345}; /* End extern "C". */
8346#endif /* C++ */
8347
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008348/* EID 60 (0x3c) */
8349typedef struct sDot11fIEext_chan_switch_ann {
8350 uint8_t present;
8351 uint8_t switch_mode;
8352 uint8_t new_reg_class;
8353 uint8_t new_channel;
8354 uint8_t switch_count;
8355} tDot11fIEext_chan_switch_ann;
8356
8357#define DOT11F_EID_EXT_CHAN_SWITCH_ANN (60)
8358
8359/* N.B. These #defines do *not* include the EID & length */
8360#define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MIN_LEN (4)
8361
8362#define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MAX_LEN (4)
8363
8364#ifdef __cplusplus
8365extern "C" {
8366#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008367__must_check uint32_t dot11f_unpack_ie_ext_chan_switch_ann(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008368 tpAniSirGlobal,
8369 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008370 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308371 tDot11fIEext_chan_switch_ann*,
8372 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08008373
8374uint32_t dot11f_pack_ie_ext_chan_switch_ann(
8375 tpAniSirGlobal,
8376 tDot11fIEext_chan_switch_ann *,
8377 uint8_t *,
8378 uint32_t,
8379 uint32_t*);
8380
8381uint32_t dot11f_get_packed_ie_ext_chan_switch_ann(
8382 tpAniSirGlobal,
8383 tDot11fIEext_chan_switch_ann *,
8384 uint32_t*);
8385
8386#ifdef __cplusplus
8387}; /* End extern "C". */
8388#endif /* C++ */
8389
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308390/* EID 255 (0xff) Extended EID 1 (0x01) */
8391typedef struct sDot11fIEfils_assoc_delay_info {
8392 uint8_t present;
8393 uint8_t assoc_delay_info;
8394} tDot11fIEfils_assoc_delay_info;
8395
8396#define DOT11F_EID_FILS_ASSOC_DELAY_INFO (255)
8397
8398/* N.B. These #defines do *not* include the EID & length */
8399#define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MIN_LEN (1)
8400
8401#define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MAX_LEN (1)
8402
8403#ifdef __cplusplus
8404extern "C" {
8405#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008406__must_check uint32_t dot11f_unpack_ie_fils_assoc_delay_info(
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308407 tpAniSirGlobal,
8408 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008409 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308410 tDot11fIEfils_assoc_delay_info*,
8411 bool);
8412
8413uint32_t dot11f_pack_ie_fils_assoc_delay_info(
8414 tpAniSirGlobal,
8415 tDot11fIEfils_assoc_delay_info *,
8416 uint8_t *,
8417 uint32_t,
8418 uint32_t*);
8419
8420uint32_t dot11f_get_packed_ie_fils_assoc_delay_info(
8421 tpAniSirGlobal,
8422 tDot11fIEfils_assoc_delay_info *,
8423 uint32_t*);
8424
8425#ifdef __cplusplus
8426}; /* End extern "C". */
8427#endif /* C++ */
8428
8429/* EID 255 (0xff) Extended EID 5 (0x05) */
8430typedef struct sDot11fIEfils_hlp_container {
8431 uint8_t present;
8432 uint8_t dest_mac[6];
8433 uint8_t src_mac[6];
8434 uint8_t num_hlp_packet;
8435 uint8_t hlp_packet[255];
8436} tDot11fIEfils_hlp_container;
8437
8438#define DOT11F_EID_FILS_HLP_CONTAINER (255)
8439
8440/* N.B. These #defines do *not* include the EID & length */
8441#define DOT11F_IE_FILS_HLP_CONTAINER_MIN_LEN (12)
8442
8443#define DOT11F_IE_FILS_HLP_CONTAINER_MAX_LEN (267)
8444
8445#ifdef __cplusplus
8446extern "C" {
8447#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008448__must_check uint32_t dot11f_unpack_ie_fils_hlp_container(
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308449 tpAniSirGlobal,
8450 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008451 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308452 tDot11fIEfils_hlp_container*,
8453 bool);
8454
8455uint32_t dot11f_pack_ie_fils_hlp_container(
8456 tpAniSirGlobal,
8457 tDot11fIEfils_hlp_container *,
8458 uint8_t *,
8459 uint32_t,
8460 uint32_t*);
8461
8462uint32_t dot11f_get_packed_ie_fils_hlp_container(
8463 tpAniSirGlobal,
8464 tDot11fIEfils_hlp_container *,
8465 uint32_t*);
8466
8467#ifdef __cplusplus
8468}; /* End extern "C". */
8469#endif /* C++ */
8470
8471/* EID 240 (0xf0) */
8472typedef struct sDot11fIEfils_indication {
8473 uint8_t present;
8474 uint16_t public_key_identifiers_cnt:3;
8475 uint16_t realm_identifiers_cnt:3;
8476 uint16_t is_ip_config_supported:1;
8477 uint16_t is_cache_id_present:1;
8478 uint16_t is_hessid_present:1;
8479 uint16_t is_fils_sk_auth_supported:1;
8480 uint16_t is_fils_sk_auth_pfs_supported:1;
8481 uint16_t is_pk_auth_supported:1;
8482 uint16_t reserved:4;
8483 uint8_t num_variable_data;
8484 uint8_t variable_data[255];
8485} tDot11fIEfils_indication;
8486
8487#define DOT11F_EID_FILS_INDICATION (240)
8488
8489/* N.B. These #defines do *not* include the EID & length */
Vignesh Viswanathan44857312017-12-19 18:06:57 +05308490#define DOT11F_IE_FILS_INDICATION_MIN_LEN (4)
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308491
8492#define DOT11F_IE_FILS_INDICATION_MAX_LEN (257)
8493
8494#ifdef __cplusplus
8495extern "C" {
8496#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008497__must_check uint32_t dot11f_unpack_ie_fils_indication(
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308498 tpAniSirGlobal,
8499 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008500 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308501 tDot11fIEfils_indication*,
8502 bool);
8503
8504uint32_t dot11f_pack_ie_fils_indication(
8505 tpAniSirGlobal,
8506 tDot11fIEfils_indication *,
8507 uint8_t *,
8508 uint32_t,
8509 uint32_t*);
8510
8511uint32_t dot11f_get_packed_ie_fils_indication(
8512 tpAniSirGlobal,
8513 tDot11fIEfils_indication *,
8514 uint32_t*);
8515
8516#ifdef __cplusplus
8517}; /* End extern "C". */
8518#endif /* C++ */
8519
8520/* EID 255 (0xff) Extended EID 7 (0x07) */
8521typedef struct sDot11fIEfils_kde {
8522 uint8_t present;
8523 uint8_t key_rsc[8];
8524 uint8_t num_kde_list;
8525 uint8_t kde_list[255];
8526} tDot11fIEfils_kde;
8527
8528#define DOT11F_EID_FILS_KDE (255)
8529
8530/* N.B. These #defines do *not* include the EID & length */
8531#define DOT11F_IE_FILS_KDE_MIN_LEN (8)
8532
8533#define DOT11F_IE_FILS_KDE_MAX_LEN (263)
8534
8535#ifdef __cplusplus
8536extern "C" {
8537#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008538__must_check uint32_t dot11f_unpack_ie_fils_kde(
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308539 tpAniSirGlobal,
8540 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008541 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308542 tDot11fIEfils_kde*,
8543 bool);
8544
8545uint32_t dot11f_pack_ie_fils_kde(
8546 tpAniSirGlobal,
8547 tDot11fIEfils_kde *,
8548 uint8_t *,
8549 uint32_t,
8550 uint32_t*);
8551
8552uint32_t dot11f_get_packed_ie_fils_kde(
8553 tpAniSirGlobal,
8554 tDot11fIEfils_kde *,
8555 uint32_t*);
8556
8557#ifdef __cplusplus
8558}; /* End extern "C". */
8559#endif /* C++ */
8560
8561/* EID 255 (0xff) Extended EID 3 (0x03) */
8562typedef struct sDot11fIEfils_key_confirmation {
8563 uint8_t present;
8564 uint8_t num_key_auth;
8565 uint8_t key_auth[255];
8566} tDot11fIEfils_key_confirmation;
8567
8568#define DOT11F_EID_FILS_KEY_CONFIRMATION (255)
8569
8570/* N.B. These #defines do *not* include the EID & length */
8571#define DOT11F_IE_FILS_KEY_CONFIRMATION_MIN_LEN (0)
8572
8573#define DOT11F_IE_FILS_KEY_CONFIRMATION_MAX_LEN (255)
8574
8575#ifdef __cplusplus
8576extern "C" {
8577#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008578__must_check uint32_t dot11f_unpack_ie_fils_key_confirmation(
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308579 tpAniSirGlobal,
8580 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008581 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308582 tDot11fIEfils_key_confirmation*,
8583 bool);
8584
8585uint32_t dot11f_pack_ie_fils_key_confirmation(
8586 tpAniSirGlobal,
8587 tDot11fIEfils_key_confirmation *,
8588 uint8_t *,
8589 uint32_t,
8590 uint32_t*);
8591
8592uint32_t dot11f_get_packed_ie_fils_key_confirmation(
8593 tpAniSirGlobal,
8594 tDot11fIEfils_key_confirmation *,
8595 uint32_t*);
8596
8597#ifdef __cplusplus
8598}; /* End extern "C". */
8599#endif /* C++ */
8600
8601/* EID 255 (0xff) Extended EID 13 (0x0d) */
8602typedef struct sDot11fIEfils_nonce {
8603 uint8_t present;
8604 uint8_t nonce[16];
8605} tDot11fIEfils_nonce;
8606
8607#define DOT11F_EID_FILS_NONCE (255)
8608
8609/* N.B. These #defines do *not* include the EID & length */
8610#define DOT11F_IE_FILS_NONCE_MIN_LEN (16)
8611
8612#define DOT11F_IE_FILS_NONCE_MAX_LEN (16)
8613
8614#ifdef __cplusplus
8615extern "C" {
8616#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008617__must_check uint32_t dot11f_unpack_ie_fils_nonce(
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308618 tpAniSirGlobal,
8619 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008620 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308621 tDot11fIEfils_nonce*,
8622 bool);
8623
8624uint32_t dot11f_pack_ie_fils_nonce(
8625 tpAniSirGlobal,
8626 tDot11fIEfils_nonce *,
8627 uint8_t *,
8628 uint32_t,
8629 uint32_t*);
8630
8631uint32_t dot11f_get_packed_ie_fils_nonce(
8632 tpAniSirGlobal,
8633 tDot11fIEfils_nonce *,
8634 uint32_t*);
8635
8636#ifdef __cplusplus
8637}; /* End extern "C". */
8638#endif /* C++ */
8639
8640/* EID 255 (0xff) Extended EID 12 (0x0c) */
8641typedef struct sDot11fIEfils_public_key {
8642 uint8_t present;
8643 uint8_t key_type;
8644 uint8_t num_public_key;
8645 uint8_t public_key[255];
8646} tDot11fIEfils_public_key;
8647
8648#define DOT11F_EID_FILS_PUBLIC_KEY (255)
8649
8650/* N.B. These #defines do *not* include the EID & length */
8651#define DOT11F_IE_FILS_PUBLIC_KEY_MIN_LEN (1)
8652
8653#define DOT11F_IE_FILS_PUBLIC_KEY_MAX_LEN (256)
8654
8655#ifdef __cplusplus
8656extern "C" {
8657#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008658__must_check uint32_t dot11f_unpack_ie_fils_public_key(
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308659 tpAniSirGlobal,
8660 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008661 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308662 tDot11fIEfils_public_key*,
8663 bool);
8664
8665uint32_t dot11f_pack_ie_fils_public_key(
8666 tpAniSirGlobal,
8667 tDot11fIEfils_public_key *,
8668 uint8_t *,
8669 uint32_t,
8670 uint32_t*);
8671
8672uint32_t dot11f_get_packed_ie_fils_public_key(
8673 tpAniSirGlobal,
8674 tDot11fIEfils_public_key *,
8675 uint32_t*);
8676
8677#ifdef __cplusplus
8678}; /* End extern "C". */
8679#endif /* C++ */
8680
8681/* EID 255 (0xff) Extended EID 4 (0x04) */
8682typedef struct sDot11fIEfils_session {
8683 uint8_t present;
8684 uint8_t session[8];
8685} tDot11fIEfils_session;
8686
8687#define DOT11F_EID_FILS_SESSION (255)
8688
8689/* N.B. These #defines do *not* include the EID & length */
8690#define DOT11F_IE_FILS_SESSION_MIN_LEN (8)
8691
8692#define DOT11F_IE_FILS_SESSION_MAX_LEN (8)
8693
8694#ifdef __cplusplus
8695extern "C" {
8696#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008697__must_check uint32_t dot11f_unpack_ie_fils_session(
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308698 tpAniSirGlobal,
8699 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008700 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308701 tDot11fIEfils_session*,
8702 bool);
8703
8704uint32_t dot11f_pack_ie_fils_session(
8705 tpAniSirGlobal,
8706 tDot11fIEfils_session *,
8707 uint8_t *,
8708 uint32_t,
8709 uint32_t*);
8710
8711uint32_t dot11f_get_packed_ie_fils_session(
8712 tpAniSirGlobal,
8713 tDot11fIEfils_session *,
8714 uint32_t*);
8715
8716#ifdef __cplusplus
8717}; /* End extern "C". */
8718#endif /* C++ */
8719
8720/* EID 255 (0xff) Extended EID 8 (0x08) */
8721typedef struct sDot11fIEfils_wrapped_data {
8722 uint8_t present;
8723 uint8_t num_wrapped_data;
8724 uint8_t wrapped_data[255];
8725} tDot11fIEfils_wrapped_data;
8726
8727#define DOT11F_EID_FILS_WRAPPED_DATA (255)
8728
8729/* N.B. These #defines do *not* include the EID & length */
8730#define DOT11F_IE_FILS_WRAPPED_DATA_MIN_LEN (0)
8731
8732#define DOT11F_IE_FILS_WRAPPED_DATA_MAX_LEN (255)
8733
8734#ifdef __cplusplus
8735extern "C" {
8736#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008737__must_check uint32_t dot11f_unpack_ie_fils_wrapped_data(
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308738 tpAniSirGlobal,
8739 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008740 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05308741 tDot11fIEfils_wrapped_data*,
8742 bool);
8743
8744uint32_t dot11f_pack_ie_fils_wrapped_data(
8745 tpAniSirGlobal,
8746 tDot11fIEfils_wrapped_data *,
8747 uint8_t *,
8748 uint32_t,
8749 uint32_t*);
8750
8751uint32_t dot11f_get_packed_ie_fils_wrapped_data(
8752 tpAniSirGlobal,
8753 tDot11fIEfils_wrapped_data *,
8754 uint32_t*);
8755
8756#ifdef __cplusplus
8757}; /* End extern "C". */
8758#endif /* C++ */
8759
Sridhar Selvaraj6d3e0d72017-08-17 17:32:37 +05308760/* EID 242 (0xf2) */
8761typedef struct sDot11fIEfragment_ie {
8762 uint8_t present;
8763 uint8_t num_data;
8764 uint8_t data[255];
8765} tDot11fIEfragment_ie;
8766
8767#define DOT11F_EID_FRAGMENT_IE (242)
8768
8769/* N.B. These #defines do *not* include the EID & length */
8770#define DOT11F_IE_FRAGMENT_IE_MIN_LEN (0)
8771
8772#define DOT11F_IE_FRAGMENT_IE_MAX_LEN (255)
8773
8774#ifdef __cplusplus
8775extern "C" {
8776#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008777__must_check uint32_t dot11f_unpack_ie_fragment_ie(
Sridhar Selvaraj6d3e0d72017-08-17 17:32:37 +05308778 tpAniSirGlobal,
8779 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008780 uint8_t,
Sridhar Selvaraj6d3e0d72017-08-17 17:32:37 +05308781 tDot11fIEfragment_ie*,
8782 bool);
8783
8784uint32_t dot11f_pack_ie_fragment_ie(
8785 tpAniSirGlobal,
8786 tDot11fIEfragment_ie *,
8787 uint8_t *,
8788 uint32_t,
8789 uint32_t*);
8790
8791uint32_t dot11f_get_packed_ie_fragment_ie(
8792 tpAniSirGlobal,
8793 tDot11fIEfragment_ie *,
8794 uint32_t*);
8795
8796#ifdef __cplusplus
8797}; /* End extern "C". */
8798#endif /* C++ */
8799
Naveen Rawatea921ce2017-09-08 15:07:58 -07008800/* EID 255 (0xff) Extended EID 35 (0x23) */
8801typedef struct sDot11fIEhe_cap {
Naveen Rawat819158d2018-01-16 10:56:45 -08008802 uint8_t present;
8803 uint32_t htc_he:1;
8804 uint32_t twt_request:1;
8805 uint32_t twt_responder:1;
8806 uint32_t fragmentation:2;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008807 uint32_t max_num_frag_msdu_amsdu_exp:3;
Naveen Rawat819158d2018-01-16 10:56:45 -08008808 uint32_t min_frag_size:2;
8809 uint32_t trigger_frm_mac_pad:2;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008810 uint32_t multi_tid_aggr_rx_supp:3;
Naveen Rawat819158d2018-01-16 10:56:45 -08008811 uint32_t he_link_adaptation:2;
8812 uint32_t all_ack:1;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008813 uint32_t trigd_rsp_sched:1;
Naveen Rawat819158d2018-01-16 10:56:45 -08008814 uint32_t a_bsr:1;
8815 uint32_t broadcast_twt:1;
8816 uint32_t ba_32bit_bitmap:1;
8817 uint32_t mu_cascade:1;
8818 uint32_t ack_enabled_multitid:1;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008819 uint32_t reserved:1;
Naveen Rawat819158d2018-01-16 10:56:45 -08008820 uint32_t omi_a_ctrl:1;
8821 uint32_t ofdma_ra:1;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008822 uint32_t max_ampdu_len_exp_ext:2;
Naveen Rawat819158d2018-01-16 10:56:45 -08008823 uint32_t amsdu_frag:1;
8824 uint32_t flex_twt_sched:1;
8825 uint32_t rx_ctrl_frame:1;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008826 uint16_t bsrp_ampdu_aggr:1;
8827 uint16_t qtp:1;
8828 uint16_t a_bqr:1;
8829 uint16_t spatial_reuse_param_rspder:1;
8830 uint16_t ndp_feedback_supp:1;
8831 uint16_t ops_supp:1;
8832 uint16_t amsdu_in_ampdu:1;
8833 uint16_t multi_tid_aggr_tx_supp:3;
8834 uint16_t he_sub_ch_sel_tx_supp:1;
8835 uint16_t ul_2x996_tone_ru_supp:1;
8836 uint16_t om_ctrl_ul_mu_data_dis_rx:1;
8837 uint16_t reserved1:3;
8838 uint32_t reserved2:1;
Naveen Rawat819158d2018-01-16 10:56:45 -08008839 uint32_t chan_width_0:1;
8840 uint32_t chan_width_1:1;
8841 uint32_t chan_width_2:1;
8842 uint32_t chan_width_3:1;
8843 uint32_t chan_width_4:1;
8844 uint32_t chan_width_5:1;
8845 uint32_t chan_width_6:1;
8846 uint32_t rx_pream_puncturing:4;
8847 uint32_t device_class:1;
8848 uint32_t ldpc_coding:1;
8849 uint32_t he_1x_ltf_800_gi_ppdu:1;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008850 uint32_t midamble_tx_rx_max_nsts:2;
Naveen Rawat819158d2018-01-16 10:56:45 -08008851 uint32_t he_4x_ltf_3200_gi_ndp:1;
Kiran Kumar Lokere13dedac2018-02-05 19:51:59 -08008852 uint32_t tx_stbc_lt_80mhz:1;
8853 uint32_t rx_stbc_lt_80mhz:1;
Naveen Rawat819158d2018-01-16 10:56:45 -08008854 uint32_t doppler:2;
8855 uint32_t ul_mu:2;
8856 uint32_t dcm_enc_tx:3;
8857 uint32_t dcm_enc_rx:3;
8858 uint32_t ul_he_mu:1;
8859 uint32_t su_beamformer:1;
8860 uint32_t su_beamformee:1;
8861 uint32_t mu_beamformer:1;
8862 uint32_t bfee_sts_lt_80:3;
8863 uint32_t bfee_sts_gt_80:3;
8864 uint32_t num_sounding_lt_80:3;
8865 uint32_t num_sounding_gt_80:3;
8866 uint32_t su_feedback_tone16:1;
8867 uint32_t mu_feedback_tone16:1;
8868 uint32_t codebook_su:1;
8869 uint32_t codebook_mu:1;
8870 uint32_t beamforming_feedback:3;
8871 uint32_t he_er_su_ppdu:1;
8872 uint32_t dl_mu_mimo_part_bw:1;
8873 uint32_t ppet_present:1;
8874 uint32_t srp:1;
8875 uint32_t power_boost:1;
8876 uint32_t he_ltf_800_gi_4x:1;
8877 uint32_t max_nc:3;
Kiran Kumar Lokere13dedac2018-02-05 19:51:59 -08008878 uint32_t tx_stbc_gt_80mhz:1;
8879 uint32_t rx_stbc_gt_80mhz:1;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008880 uint16_t er_he_ltf_800_gi_4x:1;
8881 uint16_t he_ppdu_20_in_40Mhz_2G:1;
8882 uint16_t he_ppdu_20_in_160_80p80Mhz:1;
8883 uint16_t he_ppdu_80_in_160_80p80Mhz:1;
8884 uint16_t er_1x_he_ltf_gi:1;
8885 uint16_t midamble_tx_rx_1x_he_ltf:1;
8886 uint16_t dcm_max_bw:2;
8887 uint16_t longer_than_16_he_sigb_ofdm_sym:1;
8888 uint16_t non_trig_cqi_feedback:1;
8889 uint16_t tx_1024_qam_lt_242_tone_ru:1;
8890 uint16_t rx_1024_qam_lt_242_tone_ru:1;
8891 uint16_t rx_full_bw_su_he_mu_compress_sigb:1;
8892 uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1;
8893 uint16_t reserved3:2;
8894 uint8_t reserved4;
Naveen Rawat819158d2018-01-16 10:56:45 -08008895 uint16_t rx_he_mcs_map_lt_80;
8896 uint16_t tx_he_mcs_map_lt_80;
8897 uint8_t rx_he_mcs_map_160[1][2];
8898 uint8_t tx_he_mcs_map_160[1][2];
8899 uint8_t rx_he_mcs_map_80_80[1][2];
8900 uint8_t tx_he_mcs_map_80_80[1][2];
8901 union {
8902 struct {
8903 uint8_t num_ppe_th;
8904 uint8_t ppe_th[25];
8905 } ppe_threshold; /* ppet_present = 1 */
8906 } ppet;
Naveen Rawatea921ce2017-09-08 15:07:58 -07008907} tDot11fIEhe_cap;
8908
8909#define DOT11F_EID_HE_CAP (255)
8910
8911/* N.B. These #defines do *not* include the EID & length */
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008912#define DOT11F_IE_HE_CAP_MIN_LEN (21)
Naveen Rawatea921ce2017-09-08 15:07:58 -07008913
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008914#define DOT11F_IE_HE_CAP_MAX_LEN (54)
Naveen Rawatea921ce2017-09-08 15:07:58 -07008915
8916#ifdef __cplusplus
8917extern "C" {
8918#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008919__must_check uint32_t dot11f_unpack_ie_he_cap(
Naveen Rawatea921ce2017-09-08 15:07:58 -07008920 tpAniSirGlobal,
8921 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008922 uint8_t,
Naveen Rawatea921ce2017-09-08 15:07:58 -07008923 tDot11fIEhe_cap*,
8924 bool);
8925
8926uint32_t dot11f_pack_ie_he_cap(
8927 tpAniSirGlobal,
8928 tDot11fIEhe_cap *,
8929 uint8_t *,
8930 uint32_t,
8931 uint32_t*);
8932
8933uint32_t dot11f_get_packed_ie_he_cap(
8934 tpAniSirGlobal,
8935 tDot11fIEhe_cap *,
8936 uint32_t*);
8937
8938#ifdef __cplusplus
8939}; /* End extern "C". */
8940#endif /* C++ */
8941
8942/* EID 255 (0xff) Extended EID 36 (0x24) */
8943typedef struct sDot11fIEhe_op {
8944 uint8_t present;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008945 uint16_t default_pe:3;
8946 uint16_t twt_required:1;
8947 uint16_t txop_rts_threshold:10;
8948 uint16_t vht_oper_present:1;
8949 uint16_t co_located_bss:1;
8950 uint8_t er_su_disable:1;
8951 uint8_t reserved2:7;
8952 uint8_t bss_color:6;
8953 uint8_t partial_bss_col:1;
8954 uint8_t bss_col_disabled:1;
Naveen Rawate795f452017-11-13 14:47:39 -08008955 uint8_t basic_mcs_nss[2];
Naveen Rawatea921ce2017-09-08 15:07:58 -07008956 union {
8957 struct {
8958 uint8_t chan_width;
8959 uint8_t center_freq_seg0;
8960 uint8_t center_freq_seg1;
8961 } info; /* vht_oper_present = 1 */
8962 } vht_oper;
8963 union {
8964 struct {
8965 uint8_t data;
Kiran Kumar Lokere1f96b4a2018-08-22 14:47:11 -07008966 } info; /* co_located_bss = 1 */
Naveen Rawatea921ce2017-09-08 15:07:58 -07008967 } maxbssid_ind;
8968} tDot11fIEhe_op;
8969
8970#define DOT11F_EID_HE_OP (255)
8971
8972/* N.B. These #defines do *not* include the EID & length */
Naveen Rawate795f452017-11-13 14:47:39 -08008973#define DOT11F_IE_HE_OP_MIN_LEN (6)
Naveen Rawatea921ce2017-09-08 15:07:58 -07008974
Naveen Rawate795f452017-11-13 14:47:39 -08008975#define DOT11F_IE_HE_OP_MAX_LEN (10)
Naveen Rawatea921ce2017-09-08 15:07:58 -07008976
8977#ifdef __cplusplus
8978extern "C" {
8979#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08008980__must_check uint32_t dot11f_unpack_ie_he_op(
Naveen Rawatea921ce2017-09-08 15:07:58 -07008981 tpAniSirGlobal,
8982 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07008983 uint8_t,
Naveen Rawatea921ce2017-09-08 15:07:58 -07008984 tDot11fIEhe_op*,
8985 bool);
8986
8987uint32_t dot11f_pack_ie_he_op(
8988 tpAniSirGlobal,
8989 tDot11fIEhe_op *,
8990 uint8_t *,
8991 uint32_t,
8992 uint32_t*);
8993
8994uint32_t dot11f_get_packed_ie_he_op(
8995 tpAniSirGlobal,
8996 tDot11fIEhe_op *,
8997 uint32_t*);
8998
8999#ifdef __cplusplus
9000}; /* End extern "C". */
9001#endif /* C++ */
9002
Selvaraj, Sridhar7f42b5f2016-09-16 20:23:53 +05309003/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x10} */
Nitesh Shah0ddd4f62016-05-27 10:07:32 +05309004typedef struct sDot11fIEhs20vendor_ie {
9005 uint8_t present;
Nitesh Shah0ddd4f62016-05-27 10:07:32 +05309006 uint8_t dgaf_dis:1;
9007 uint8_t hs_id_present:2;
9008 uint8_t reserved:1;
9009 uint8_t release_num:4;
9010 union {
9011 struct {
9012 uint16_t pps_mo_id;
9013 } pps_mo; /* hs_id_present = 1 */
9014 struct {
9015 uint16_t anqp_domain_id;
9016 } anqp_domain; /* hs_id_present = 2 */
9017 } hs_id;
9018} tDot11fIEhs20vendor_ie;
9019
9020#define DOT11F_EID_HS20VENDOR_IE (221)
9021
9022/* N.B. These #defines do *not* include the EID & length */
9023#define DOT11F_IE_HS20VENDOR_IE_MIN_LEN (5)
9024
9025#define DOT11F_IE_HS20VENDOR_IE_MAX_LEN (7)
9026
9027#ifdef __cplusplus
9028extern "C" {
9029#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08009030__must_check uint32_t dot11f_unpack_ie_hs20vendor_ie(
Nitesh Shah0ddd4f62016-05-27 10:07:32 +05309031 tpAniSirGlobal,
9032 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07009033 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309034 tDot11fIEhs20vendor_ie*,
9035 bool);
Nitesh Shah0ddd4f62016-05-27 10:07:32 +05309036
9037uint32_t dot11f_pack_ie_hs20vendor_ie(
9038 tpAniSirGlobal,
9039 tDot11fIEhs20vendor_ie *,
9040 uint8_t *,
9041 uint32_t,
9042 uint32_t*);
9043
9044uint32_t dot11f_get_packed_ie_hs20vendor_ie(
9045 tpAniSirGlobal,
9046 tDot11fIEhs20vendor_ie *,
9047 uint32_t*);
9048
9049#ifdef __cplusplus
9050}; /* End extern "C". */
9051#endif /* C++ */
9052
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009053/* EID 72 (0x48) */
9054typedef struct sDot11fIEht2040_bss_coexistence {
9055 uint8_t present;
9056 uint8_t info_request:1;
9057 uint8_t forty_mhz_intolerant:1;
9058 uint8_t twenty_mhz_bsswidth_req:1;
9059 uint8_t obss_scan_exemption_req:1;
9060 uint8_t obss_scan_exemption_grant:1;
9061 uint8_t unused:3;
9062} tDot11fIEht2040_bss_coexistence;
9063
9064#define DOT11F_EID_HT2040_BSS_COEXISTENCE (72)
9065
9066/* N.B. These #defines do *not* include the EID & length */
9067#define DOT11F_IE_HT2040_BSS_COEXISTENCE_MIN_LEN (1)
9068
9069#define DOT11F_IE_HT2040_BSS_COEXISTENCE_MAX_LEN (1)
9070
9071#ifdef __cplusplus
9072extern "C" {
9073#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08009074__must_check uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009075 tpAniSirGlobal,
9076 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07009077 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309078 tDot11fIEht2040_bss_coexistence*,
9079 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009080
9081uint32_t dot11f_pack_ie_ht2040_bss_coexistence(
9082 tpAniSirGlobal,
9083 tDot11fIEht2040_bss_coexistence *,
9084 uint8_t *,
9085 uint32_t,
9086 uint32_t*);
9087
9088uint32_t dot11f_get_packed_ie_ht2040_bss_coexistence(
9089 tpAniSirGlobal,
9090 tDot11fIEht2040_bss_coexistence *,
9091 uint32_t*);
9092
9093#ifdef __cplusplus
9094}; /* End extern "C". */
9095#endif /* C++ */
9096
9097/* EID 73 (0x49) */
9098typedef struct sDot11fIEht2040_bss_intolerant_report {
9099 uint8_t present;
9100 uint8_t operating_class;
9101 uint8_t num_channel_list;
9102 uint8_t channel_list[50];
9103} tDot11fIEht2040_bss_intolerant_report;
9104
9105#define DOT11F_EID_HT2040_BSS_INTOLERANT_REPORT (73)
9106
9107/* N.B. These #defines do *not* include the EID & length */
9108#define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MIN_LEN (1)
9109
9110#define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MAX_LEN (51)
9111
9112#ifdef __cplusplus
9113extern "C" {
9114#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08009115__must_check uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009116 tpAniSirGlobal,
9117 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07009118 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309119 tDot11fIEht2040_bss_intolerant_report*,
9120 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009121
9122uint32_t dot11f_pack_ie_ht2040_bss_intolerant_report(
9123 tpAniSirGlobal,
9124 tDot11fIEht2040_bss_intolerant_report *,
9125 uint8_t *,
9126 uint32_t,
9127 uint32_t*);
9128
9129uint32_t dot11f_get_packed_ie_ht2040_bss_intolerant_report(
9130 tpAniSirGlobal,
9131 tDot11fIEht2040_bss_intolerant_report *,
9132 uint32_t*);
9133
9134#ifdef __cplusplus
9135}; /* End extern "C". */
9136#endif /* C++ */
9137
Kiran Kumar Lokere27026ae2018-03-09 11:38:19 -08009138/* EID 255 (0xff) Extended EID 38 (0x26) */
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009139typedef struct sDot11fIEmu_edca_param_set {
9140 uint8_t present;
9141 uint8_t qos;
9142 uint8_t acbe_aifsn:4;
9143 uint8_t acbe_acm:1;
9144 uint8_t acbe_aci:2;
9145 uint8_t unused1:1;
9146 uint8_t acbe_acwmin:4;
9147 uint8_t acbe_acwmax:4;
9148 uint8_t acbe_muedca_timer;
9149 uint8_t acbk_aifsn:4;
9150 uint8_t acbk_acm:1;
9151 uint8_t acbk_aci:2;
9152 uint8_t unused2:1;
9153 uint8_t acbk_acwmin:4;
9154 uint8_t acbk_acwmax:4;
9155 uint8_t acbk_muedca_timer;
9156 uint8_t acvi_aifsn:4;
9157 uint8_t acvi_acm:1;
9158 uint8_t acvi_aci:2;
9159 uint8_t unused3:1;
9160 uint8_t acvi_acwmin:4;
9161 uint8_t acvi_acwmax:4;
9162 uint8_t acvi_muedca_timer;
9163 uint8_t acvo_aifsn:4;
9164 uint8_t acvo_acm:1;
9165 uint8_t acvo_aci:2;
9166 uint8_t unused4:1;
9167 uint8_t acvo_acwmin:4;
9168 uint8_t acvo_acwmax:4;
9169 uint8_t acvo_muedca_timer;
9170} tDot11fIEmu_edca_param_set;
9171
Kiran Kumar Lokere27026ae2018-03-09 11:38:19 -08009172#define DOT11F_EID_MU_EDCA_PARAM_SET (255)
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009173
9174/* N.B. These #defines do *not* include the EID & length */
Kiran Kumar Lokere27026ae2018-03-09 11:38:19 -08009175#define DOT11F_IE_MU_EDCA_PARAM_SET_MIN_LEN (13)
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009176
Kiran Kumar Lokere27026ae2018-03-09 11:38:19 -08009177#define DOT11F_IE_MU_EDCA_PARAM_SET_MAX_LEN (13)
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009178
9179#ifdef __cplusplus
9180extern "C" {
9181#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08009182__must_check uint32_t dot11f_unpack_ie_mu_edca_param_set(
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009183 tpAniSirGlobal,
9184 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07009185 uint8_t,
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009186 tDot11fIEmu_edca_param_set*,
9187 bool);
9188
9189uint32_t dot11f_pack_ie_mu_edca_param_set(
9190 tpAniSirGlobal,
9191 tDot11fIEmu_edca_param_set *,
9192 uint8_t *,
9193 uint32_t,
9194 uint32_t*);
9195
9196uint32_t dot11f_get_packed_ie_mu_edca_param_set(
9197 tpAniSirGlobal,
9198 tDot11fIEmu_edca_param_set *,
9199 uint32_t*);
9200
9201#ifdef __cplusplus
9202}; /* End extern "C". */
9203#endif /* C++ */
9204
Selvaraj, Sridhar99edbc32017-06-22 10:49:59 +05309205/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x12} */
9206typedef struct sDot11fIEosen_ie {
9207 uint8_t present;
9208 uint8_t num_data;
9209 uint8_t data[255];
9210} tDot11fIEosen_ie;
9211
9212#define DOT11F_EID_OSEN_IE (221)
9213
9214/* N.B. These #defines do *not* include the EID & length */
9215#define DOT11F_IE_OSEN_IE_MIN_LEN (4)
9216
9217#define DOT11F_IE_OSEN_IE_MAX_LEN (259)
9218
9219#ifdef __cplusplus
9220extern "C" {
9221#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08009222__must_check uint32_t dot11f_unpack_ie_osen_ie(
Selvaraj, Sridhar99edbc32017-06-22 10:49:59 +05309223 tpAniSirGlobal,
9224 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07009225 uint8_t,
Selvaraj, Sridhar99edbc32017-06-22 10:49:59 +05309226 tDot11fIEosen_ie*,
9227 bool);
9228
9229uint32_t dot11f_pack_ie_osen_ie(
9230 tpAniSirGlobal,
9231 tDot11fIEosen_ie *,
9232 uint8_t *,
9233 uint32_t,
9234 uint32_t*);
9235
9236uint32_t dot11f_get_packed_ie_osen_ie(
9237 tpAniSirGlobal,
9238 tDot11fIEosen_ie *,
9239 uint32_t*);
9240
9241#ifdef __cplusplus
9242}; /* End extern "C". */
9243#endif /* C++ */
9244
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009245/* EID 62 (0x3e) */
9246typedef struct sDot11fIEsec_chan_offset_ele {
9247 uint8_t present;
9248 uint8_t secondaryChannelOffset;
9249} tDot11fIEsec_chan_offset_ele;
9250
9251#define DOT11F_EID_SEC_CHAN_OFFSET_ELE (62)
9252
9253/* N.B. These #defines do *not* include the EID & length */
9254#define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MIN_LEN (1)
9255
9256#define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MAX_LEN (1)
9257
9258#ifdef __cplusplus
9259extern "C" {
9260#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08009261__must_check uint32_t dot11f_unpack_ie_sec_chan_offset_ele(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009262 tpAniSirGlobal,
9263 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07009264 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309265 tDot11fIEsec_chan_offset_ele*,
9266 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009267
9268uint32_t dot11f_pack_ie_sec_chan_offset_ele(
9269 tpAniSirGlobal,
9270 tDot11fIEsec_chan_offset_ele *,
9271 uint8_t *,
9272 uint32_t,
9273 uint32_t*);
9274
9275uint32_t dot11f_get_packed_ie_sec_chan_offset_ele(
9276 tpAniSirGlobal,
9277 tDot11fIEsec_chan_offset_ele *,
9278 uint32_t*);
9279
9280#ifdef __cplusplus
9281}; /* End extern "C". */
9282#endif /* C++ */
9283
Kiran Kumar Lokere81722632017-09-26 12:11:43 -07009284/* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c, 0x04} */
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309285typedef struct sDot11fIEvendor_vht_ie {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009286 uint8_t present;
Kiran Kumar Lokere81722632017-09-26 12:11:43 -07009287 uint8_t sub_type;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009288 tDot11fIEVHTCaps VHTCaps;
9289 tDot11fIEVHTOperation VHTOperation;
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309290} tDot11fIEvendor_vht_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009291
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309292#define DOT11F_EID_VENDOR_VHT_IE (221)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009293
9294/* N.B. These #defines do *not* include the EID & length */
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309295#define DOT11F_IE_VENDOR_VHT_IE_MIN_LEN (5)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009296
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309297#define DOT11F_IE_VENDOR_VHT_IE_MAX_LEN (26)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009298
9299#ifdef __cplusplus
9300extern "C" {
9301#endif /* C++ */
Naveen Rawat1ade9a82018-01-19 14:57:23 -08009302__must_check uint32_t dot11f_unpack_ie_vendor_vht_ie(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009303 tpAniSirGlobal,
9304 uint8_t *,
Naveen Rawat9c13ac52017-10-20 13:48:03 -07009305 uint8_t,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309306 tDot11fIEvendor_vht_ie*,
9307 bool);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009308
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309309uint32_t dot11f_pack_ie_vendor_vht_ie(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009310 tpAniSirGlobal,
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309311 tDot11fIEvendor_vht_ie *,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009312 uint8_t *,
9313 uint32_t,
9314 uint32_t*);
9315
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309316uint32_t dot11f_get_packed_ie_vendor_vht_ie(
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009317 tpAniSirGlobal,
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309318 tDot11fIEvendor_vht_ie *,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009319 uint32_t*);
9320
9321#ifdef __cplusplus
9322}; /* End extern "C". */
9323#endif /* C++ */
9324/************************************************************************
9325 * Frames
9326 **********************************************************************/
9327
9328typedef struct sDot11fAddTSRequest{
9329 tDot11fFfCategory Category;
9330 tDot11fFfAction Action;
9331 tDot11fFfDialogToken DialogToken;
9332 tDot11fIETSPEC TSPEC;
9333 uint16_t num_TCLAS;
9334 tDot11fIETCLAS TCLAS[2];
9335 tDot11fIETCLASSPROC TCLASSPROC;
9336 tDot11fIEWMMTSPEC WMMTSPEC;
9337 uint16_t num_WMMTCLAS;
9338 tDot11fIEWMMTCLAS WMMTCLAS[2];
9339 tDot11fIEWMMTCLASPROC WMMTCLASPROC;
9340 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet;
9341} tDot11fAddTSRequest;
9342
9343#define DOT11F_ADDTSREQUEST (1)
9344
9345#ifdef __cplusplus
9346extern "C" {
9347#endif /* C++ */
9348
9349uint32_t dot11f_unpack_add_ts_request(tpAniSirGlobal pCtx,
9350 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309351 tDot11fAddTSRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009352uint32_t dot11f_pack_add_ts_request(tpAniSirGlobal pCtx,
9353 tDot11fAddTSRequest *pFrm, uint8_t *pBuf,
9354 uint32_t nBuf, uint32_t *pnConsumed);
9355uint32_t dot11f_get_packed_add_ts_request_size(tpAniSirGlobal pCtx,
9356 tDot11fAddTSRequest *pFrm,
9357 uint32_t *pnNeeded);
9358
9359#ifdef __cplusplus
9360} /* End extern "C". */
9361#endif /* C++ */
9362
9363typedef struct sDot11fAddTSResponse{
9364 tDot11fFfCategory Category;
9365 tDot11fFfAction Action;
9366 tDot11fFfDialogToken DialogToken;
9367 tDot11fFfStatus Status;
9368 tDot11fIETSDelay TSDelay;
9369 tDot11fIETSPEC TSPEC;
9370 uint16_t num_TCLAS;
9371 tDot11fIETCLAS TCLAS[2];
9372 tDot11fIETCLASSPROC TCLASSPROC;
9373 tDot11fIESchedule Schedule;
9374 tDot11fIEWMMTSDelay WMMTSDelay;
9375 tDot11fIEWMMSchedule WMMSchedule;
9376 tDot11fIEWMMTSPEC WMMTSPEC;
9377 uint16_t num_WMMTCLAS;
9378 tDot11fIEWMMTCLAS WMMTCLAS[2];
9379 tDot11fIEWMMTCLASPROC WMMTCLASPROC;
9380 tDot11fIEESETrafStrmMet ESETrafStrmMet;
9381} tDot11fAddTSResponse;
9382
9383#define DOT11F_ADDTSRESPONSE (2)
9384
9385#ifdef __cplusplus
9386extern "C" {
9387#endif /* C++ */
9388
9389uint32_t dot11f_unpack_add_ts_response(tpAniSirGlobal pCtx,
9390 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309391 tDot11fAddTSResponse * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009392uint32_t dot11f_pack_add_ts_response(tpAniSirGlobal pCtx,
9393 tDot11fAddTSResponse *pFrm, uint8_t *pBuf,
9394 uint32_t nBuf, uint32_t *pnConsumed);
9395uint32_t dot11f_get_packed_add_ts_response_size(tpAniSirGlobal pCtx,
9396 tDot11fAddTSResponse *pFrm,
9397 uint32_t *pnNeeded);
9398
9399#ifdef __cplusplus
9400} /* End extern "C". */
9401#endif /* C++ */
9402
9403typedef struct sDot11fAssocRequest{
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309404 tDot11fFfCapabilities Capabilities;
9405 tDot11fFfListenInterval ListenInterval;
9406 tDot11fIESSID SSID;
9407 tDot11fIESuppRates SuppRates;
9408 tDot11fIEOperatingMode OperatingMode;
9409 tDot11fIEPowerCaps PowerCaps;
9410 tDot11fIESuppChannels SuppChannels;
9411 tDot11fIEHTCaps HTCaps;
9412 tDot11fIEQOSCapsStation QOSCapsStation;
9413 tDot11fIERSNOpaque RSNOpaque;
9414 tDot11fIEExtSuppRates ExtSuppRates;
9415 tDot11fIEMobilityDomain MobilityDomain;
9416 tDot11fIESuppOperatingClasses SuppOperatingClasses;
9417 tDot11fIEWAPIOpaque WAPIOpaque;
9418 tDot11fIEWAPI WAPI;
9419 tDot11fIERRMEnabledCap RRMEnabledCap;
9420 tDot11fIEQosMapSet QosMapSet;
9421 tDot11fIEExtCap ExtCap;
9422 tDot11fIEVHTCaps VHTCaps;
9423 tDot11fIEfils_session fils_session;
9424 tDot11fIEfils_public_key fils_public_key;
9425 tDot11fIEfils_key_confirmation fils_key_confirmation;
9426 tDot11fIEfils_hlp_container fils_hlp_container;
Sridhar Selvaraj6d3e0d72017-08-17 17:32:37 +05309427 tDot11fIEfragment_ie fragment_ie;
Padma, Santhosh Kumar666f96e2017-11-10 13:22:59 +05309428 tDot11fIEdh_parameter_element dh_parameter_element;
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309429 tDot11fIEWPAOpaque WPAOpaque;
9430 tDot11fIEWMMCaps WMMCaps;
9431 tDot11fIEWMMInfoStation WMMInfoStation;
9432 tDot11fIEWscIEOpaque WscIEOpaque;
9433 tDot11fIEESERadMgmtCap ESERadMgmtCap;
9434 tDot11fIEESEVersion ESEVersion;
9435 tDot11fIEP2PIEOpaque P2PIEOpaque;
9436 tDot11fIEWFDIEOpaque WFDIEOpaque;
9437 tDot11fIEvendor_vht_ie vendor_vht_ie;
9438 tDot11fIEhs20vendor_ie hs20vendor_ie;
9439 tDot11fIEQCN_IE QCN_IE;
Naveen Rawatea921ce2017-09-08 15:07:58 -07009440 tDot11fIEhe_cap he_cap;
Kapil Guptaeb38bfc2017-05-30 18:51:17 +05309441 tDot11fIEMBO_IE MBO_IE;
Selvaraj, Sridhar99edbc32017-06-22 10:49:59 +05309442 tDot11fIEosen_ie osen_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009443} tDot11fAssocRequest;
9444
9445#define DOT11F_ASSOCREQUEST (3)
9446
9447#ifdef __cplusplus
9448extern "C" {
9449#endif /* C++ */
9450
9451uint32_t dot11f_unpack_assoc_request(tpAniSirGlobal pCtx,
9452 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309453 tDot11fAssocRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009454uint32_t dot11f_pack_assoc_request(tpAniSirGlobal pCtx,
9455 tDot11fAssocRequest *pFrm, uint8_t *pBuf,
9456 uint32_t nBuf, uint32_t *pnConsumed);
9457uint32_t dot11f_get_packed_assoc_request_size(tpAniSirGlobal pCtx,
9458 tDot11fAssocRequest *pFrm,
9459 uint32_t *pnNeeded);
9460
9461#ifdef __cplusplus
9462} /* End extern "C". */
9463#endif /* C++ */
9464
9465typedef struct sDot11fAssocResponse{
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309466 tDot11fFfCapabilities Capabilities;
9467 tDot11fFfStatus Status;
9468 tDot11fFfAID AID;
9469 tDot11fIESuppRates SuppRates;
9470 tDot11fIEExtSuppRates ExtSuppRates;
9471 tDot11fIEEDCAParamSet EDCAParamSet;
9472 tDot11fIERCPIIE RCPIIE;
9473 tDot11fIERSNIIE RSNIIE;
9474 tDot11fIERRMEnabledCap RRMEnabledCap;
9475 tDot11fIEMobilityDomain MobilityDomain;
9476 tDot11fIEFTInfo FTInfo;
9477 uint16_t num_RICDataDesc;
9478 tDot11fIERICDataDesc RICDataDesc[2];
9479 tDot11fIEWPA WPA;
9480 tDot11fIETimeoutInterval TimeoutInterval;
9481 tDot11fIEHTCaps HTCaps;
9482 tDot11fIEHTInfo HTInfo;
9483 tDot11fIEWMMParams WMMParams;
9484 tDot11fIEWMMCaps WMMCaps;
9485 tDot11fIEESERadMgmtCap ESERadMgmtCap;
9486 tDot11fIEESETrafStrmMet ESETrafStrmMet;
9487 tDot11fIEESETxmitPower ESETxmitPower;
9488 uint16_t num_WMMTSPEC;
9489 tDot11fIEWMMTSPEC WMMTSPEC[4];
9490 tDot11fIEWscAssocRes WscAssocRes;
9491 tDot11fIEP2PAssocRes P2PAssocRes;
9492 tDot11fIEVHTCaps VHTCaps;
9493 tDot11fIEVHTOperation VHTOperation;
9494 tDot11fIEExtCap ExtCap;
9495 tDot11fIEOBSSScanParameters OBSSScanParameters;
9496 tDot11fIEQosMapSet QosMapSet;
9497 tDot11fIEfils_session fils_session;
9498 tDot11fIEfils_public_key fils_public_key;
9499 tDot11fIEfils_key_confirmation fils_key_confirmation;
9500 tDot11fIEfils_hlp_container fils_hlp_container;
Vignesh Viswanathan34cf4752017-09-15 12:54:04 +05309501 tDot11fIEfragment_ie fragment_ie;
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309502 tDot11fIEfils_kde fils_kde;
9503 tDot11fIEvendor_vht_ie vendor_vht_ie;
9504 tDot11fIEQCN_IE QCN_IE;
Naveen Rawatea921ce2017-09-08 15:07:58 -07009505 tDot11fIEhe_cap he_cap;
9506 tDot11fIEhe_op he_op;
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009507 tDot11fIEbss_color_change bss_color_change;
9508 tDot11fIEmu_edca_param_set mu_edca_param_set;
Abhishek Singh4c1ec992017-07-14 14:09:27 +05309509 tDot11fIEMBO_IE MBO_IE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009510} tDot11fAssocResponse;
9511
9512#define DOT11F_ASSOCRESPONSE (4)
9513
9514#ifdef __cplusplus
9515extern "C" {
9516#endif /* C++ */
9517
9518uint32_t dot11f_unpack_assoc_response(tpAniSirGlobal pCtx,
9519 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309520 tDot11fAssocResponse * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009521uint32_t dot11f_pack_assoc_response(tpAniSirGlobal pCtx,
9522 tDot11fAssocResponse *pFrm, uint8_t *pBuf,
9523 uint32_t nBuf, uint32_t *pnConsumed);
9524uint32_t dot11f_get_packed_assoc_response_size(tpAniSirGlobal pCtx,
9525 tDot11fAssocResponse *pFrm,
9526 uint32_t *pnNeeded);
9527
9528#ifdef __cplusplus
9529} /* End extern "C". */
9530#endif /* C++ */
9531
9532typedef struct sDot11fAuthentication{
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309533 tDot11fFfAuthAlgo AuthAlgo;
9534 tDot11fFfAuthSeqNo AuthSeqNo;
9535 tDot11fFfStatus Status;
9536 tDot11fIEChallengeText ChallengeText;
9537 tDot11fIERSNOpaque RSNOpaque;
9538 tDot11fIEMobilityDomain MobilityDomain;
9539 tDot11fIEFTInfo FTInfo;
9540 tDot11fIETimeoutInterval TimeoutInterval;
9541 uint16_t num_RICDataDesc;
9542 tDot11fIERICDataDesc RICDataDesc[2];
9543 tDot11fIEfils_nonce fils_nonce;
9544 tDot11fIEfils_session fils_session;
9545 tDot11fIEfils_wrapped_data fils_wrapped_data;
9546 tDot11fIEfils_assoc_delay_info fils_assoc_delay_info;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009547} tDot11fAuthentication;
9548
9549#define DOT11F_AUTHENTICATION (5)
9550
9551#ifdef __cplusplus
9552extern "C" {
9553#endif /* C++ */
9554
9555uint32_t dot11f_unpack_authentication(tpAniSirGlobal pCtx,
9556 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309557 tDot11fAuthentication * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009558uint32_t dot11f_pack_authentication(tpAniSirGlobal pCtx,
9559 tDot11fAuthentication *pFrm, uint8_t *pBuf,
9560 uint32_t nBuf, uint32_t *pnConsumed);
9561uint32_t dot11f_get_packed_authentication_size(tpAniSirGlobal pCtx,
9562 tDot11fAuthentication *pFrm,
9563 uint32_t *pnNeeded);
9564
9565#ifdef __cplusplus
9566} /* End extern "C". */
9567#endif /* C++ */
9568
9569typedef struct sDot11fBeacon{
9570 tDot11fFfTimeStamp TimeStamp;
9571 tDot11fFfBeaconInterval BeaconInterval;
9572 tDot11fFfCapabilities Capabilities;
9573 tDot11fIESSID SSID;
9574 tDot11fIESuppRates SuppRates;
9575 tDot11fIEFHParamSet FHParamSet;
9576 tDot11fIEDSParams DSParams;
9577 tDot11fIECFParams CFParams;
9578 tDot11fIEIBSSParams IBSSParams;
9579 tDot11fIETIM TIM;
9580 tDot11fIECountry Country;
9581 tDot11fIEFHParams FHParams;
9582 tDot11fIEFHPattTable FHPattTable;
9583 tDot11fIEPowerConstraints PowerConstraints;
9584 tDot11fIEChanSwitchAnn ChanSwitchAnn;
9585 tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
Edhar, Mahesh Kumar5cd1e0e2015-11-16 14:32:33 +05309586 tDot11fIESuppOperatingClasses SuppOperatingClasses;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009587 tDot11fIEQuiet Quiet;
9588 tDot11fIETPCReport TPCReport;
9589 tDot11fIEERPInfo ERPInfo;
9590 tDot11fIEExtSuppRates ExtSuppRates;
9591 tDot11fIERSN RSN;
9592 tDot11fIEQBSSLoad QBSSLoad;
9593 tDot11fIEEDCAParamSet EDCAParamSet;
9594 tDot11fIEQOSCapsAp QOSCapsAp;
9595 tDot11fIEAPChannelReport APChannelReport;
9596 tDot11fIERRMEnabledCap RRMEnabledCap;
9597 tDot11fIEMobilityDomain MobilityDomain;
9598 tDot11fIEWPA WPA;
9599 tDot11fIEHTCaps HTCaps;
9600 tDot11fIEHTInfo HTInfo;
9601 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele;
9602 tDot11fIEWMMInfoAp WMMInfoAp;
9603 tDot11fIEWMMParams WMMParams;
9604 tDot11fIEWMMCaps WMMCaps;
9605 tDot11fIEWAPI WAPI;
9606 tDot11fIEESERadMgmtCap ESERadMgmtCap;
9607 tDot11fIEESETrafStrmMet ESETrafStrmMet;
9608 tDot11fIEESETxmitPower ESETxmitPower;
9609 tDot11fIEWscBeacon WscBeacon;
9610 tDot11fIEP2PBeacon P2PBeacon;
9611 tDot11fIEVHTCaps VHTCaps;
9612 tDot11fIEVHTOperation VHTOperation;
9613 tDot11fIEVHTExtBssLoad VHTExtBssLoad;
9614 tDot11fIEExtCap ExtCap;
9615 tDot11fIEOperatingMode OperatingMode;
9616 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
9617 tDot11fIEOBSSScanParameters OBSSScanParameters;
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309618 tDot11fIEfils_indication fils_indication;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009619 tDot11fIEVendor1IE Vendor1IE;
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309620 tDot11fIEvendor_vht_ie vendor_vht_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009621 tDot11fIEVendor3IE Vendor3IE;
Nitesh Shah0ddd4f62016-05-27 10:07:32 +05309622 tDot11fIEhs20vendor_ie hs20vendor_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009623 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
9624 tDot11fIEQComVendorIE QComVendorIE;
9625 tDot11fIEESEVersion ESEVersion;
Selvaraj, Sridharba726cb2016-07-22 13:41:03 +05309626 tDot11fIEMBO_IE MBO_IE;
Selvaraj, Sridharc2fe7a32017-02-02 19:20:16 +05309627 tDot11fIEQCN_IE QCN_IE;
Naveen Rawatea921ce2017-09-08 15:07:58 -07009628 tDot11fIEhe_cap he_cap;
9629 tDot11fIEhe_op he_op;
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009630 tDot11fIEbss_color_change bss_color_change;
9631 tDot11fIEmu_edca_param_set mu_edca_param_set;
Abhishek Singhd8c3f102017-07-29 14:10:37 +05309632 tDot11fIEesp_information esp_information;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009633} tDot11fBeacon;
9634
9635#define DOT11F_BEACON (6)
9636
9637#ifdef __cplusplus
9638extern "C" {
9639#endif /* C++ */
9640
9641uint32_t dot11f_unpack_beacon(tpAniSirGlobal pCtx,
9642 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309643 tDot11fBeacon * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009644uint32_t dot11f_pack_beacon(tpAniSirGlobal pCtx,
9645 tDot11fBeacon *pFrm, uint8_t *pBuf,
9646 uint32_t nBuf, uint32_t *pnConsumed);
9647uint32_t dot11f_get_packed_beacon_size(tpAniSirGlobal pCtx,
9648 tDot11fBeacon *pFrm,
9649 uint32_t *pnNeeded);
9650
9651#ifdef __cplusplus
9652} /* End extern "C". */
9653#endif /* C++ */
9654
9655typedef struct sDot11fBeacon1{
9656 tDot11fFfTimeStamp TimeStamp;
9657 tDot11fFfBeaconInterval BeaconInterval;
9658 tDot11fFfCapabilities Capabilities;
9659 tDot11fIESSID SSID;
9660 tDot11fIESuppRates SuppRates;
9661 tDot11fIEDSParams DSParams;
9662 tDot11fIEIBSSParams IBSSParams;
9663} tDot11fBeacon1;
9664
9665#define DOT11F_BEACON1 (7)
9666
9667#ifdef __cplusplus
9668extern "C" {
9669#endif /* C++ */
9670
9671uint32_t dot11f_unpack_beacon1(tpAniSirGlobal pCtx,
9672 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309673 tDot11fBeacon1 * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009674uint32_t dot11f_pack_beacon1(tpAniSirGlobal pCtx,
9675 tDot11fBeacon1 *pFrm, uint8_t *pBuf,
9676 uint32_t nBuf, uint32_t *pnConsumed);
9677uint32_t dot11f_get_packed_beacon1_size(tpAniSirGlobal pCtx,
9678 tDot11fBeacon1 *pFrm,
9679 uint32_t *pnNeeded);
9680
9681#ifdef __cplusplus
9682} /* End extern "C". */
9683#endif /* C++ */
9684
9685typedef struct sDot11fBeacon2{
9686 tDot11fIECountry Country;
9687 tDot11fIEPowerConstraints PowerConstraints;
9688 tDot11fIEChanSwitchAnn ChanSwitchAnn;
9689 tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
Edhar, Mahesh Kumar5cd1e0e2015-11-16 14:32:33 +05309690 tDot11fIESuppOperatingClasses SuppOperatingClasses;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009691 tDot11fIEQuiet Quiet;
9692 tDot11fIETPCReport TPCReport;
9693 tDot11fIEERPInfo ERPInfo;
9694 tDot11fIEExtSuppRates ExtSuppRates;
9695 tDot11fIERSNOpaque RSNOpaque;
9696 tDot11fIEEDCAParamSet EDCAParamSet;
9697 tDot11fIEAPChannelReport APChannelReport;
9698 tDot11fIERRMEnabledCap RRMEnabledCap;
9699 tDot11fIEMobilityDomain MobilityDomain;
9700 tDot11fIEWPA WPA;
9701 tDot11fIEHTCaps HTCaps;
9702 tDot11fIEHTInfo HTInfo;
9703 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele;
9704 tDot11fIEWMMInfoAp WMMInfoAp;
9705 tDot11fIEWMMParams WMMParams;
9706 tDot11fIEWMMCaps WMMCaps;
9707 tDot11fIEWscBeacon WscBeacon;
9708 tDot11fIEWAPI WAPI;
9709 tDot11fIEESERadMgmtCap ESERadMgmtCap;
9710 tDot11fIEESETrafStrmMet ESETrafStrmMet;
9711 tDot11fIEESETxmitPower ESETxmitPower;
9712 tDot11fIEP2PBeacon P2PBeacon;
9713 tDot11fIEVHTCaps VHTCaps;
9714 tDot11fIEVHTOperation VHTOperation;
9715 tDot11fIEVHTExtBssLoad VHTExtBssLoad;
9716 tDot11fIEExtCap ExtCap;
9717 tDot11fIEOperatingMode OperatingMode;
9718 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
9719 tDot11fIEOBSSScanParameters OBSSScanParameters;
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309720 tDot11fIEfils_indication fils_indication;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009721 tDot11fIEVendor1IE Vendor1IE;
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309722 tDot11fIEvendor_vht_ie vendor_vht_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009723 tDot11fIEVendor3IE Vendor3IE;
Nitesh Shah0ddd4f62016-05-27 10:07:32 +05309724 tDot11fIEhs20vendor_ie hs20vendor_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009725 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
9726 tDot11fIEQComVendorIE QComVendorIE;
9727 tDot11fIEESEVersion ESEVersion;
Selvaraj, Sridharc2fe7a32017-02-02 19:20:16 +05309728 tDot11fIEQCN_IE QCN_IE;
Naveen Rawatea921ce2017-09-08 15:07:58 -07009729 tDot11fIEhe_cap he_cap;
9730 tDot11fIEhe_op he_op;
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009731 tDot11fIEbss_color_change bss_color_change;
9732 tDot11fIEmu_edca_param_set mu_edca_param_set;
Abhishek Singhd8c3f102017-07-29 14:10:37 +05309733 tDot11fIEesp_information esp_information;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009734} tDot11fBeacon2;
9735
9736#define DOT11F_BEACON2 (8)
9737
9738#ifdef __cplusplus
9739extern "C" {
9740#endif /* C++ */
9741
9742uint32_t dot11f_unpack_beacon2(tpAniSirGlobal pCtx,
9743 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309744 tDot11fBeacon2 * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009745uint32_t dot11f_pack_beacon2(tpAniSirGlobal pCtx,
9746 tDot11fBeacon2 *pFrm, uint8_t *pBuf,
9747 uint32_t nBuf, uint32_t *pnConsumed);
9748uint32_t dot11f_get_packed_beacon2_size(tpAniSirGlobal pCtx,
9749 tDot11fBeacon2 *pFrm,
9750 uint32_t *pnNeeded);
9751
9752#ifdef __cplusplus
9753} /* End extern "C". */
9754#endif /* C++ */
9755
9756typedef struct sDot11fBeaconIEs{
9757 tDot11fIESSID SSID;
9758 tDot11fIESuppRates SuppRates;
9759 tDot11fIEFHParamSet FHParamSet;
9760 tDot11fIEDSParams DSParams;
9761 tDot11fIECFParams CFParams;
9762 tDot11fIEIBSSParams IBSSParams;
9763 tDot11fIETIM TIM;
9764 tDot11fIECountry Country;
9765 tDot11fIEFHParams FHParams;
9766 tDot11fIEFHPattTable FHPattTable;
9767 tDot11fIEPowerConstraints PowerConstraints;
9768 tDot11fIEChanSwitchAnn ChanSwitchAnn;
9769 tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
Edhar, Mahesh Kumar5cd1e0e2015-11-16 14:32:33 +05309770 tDot11fIESuppOperatingClasses SuppOperatingClasses;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009771 tDot11fIEQuiet Quiet;
9772 tDot11fIETPCReport TPCReport;
9773 tDot11fIEERPInfo ERPInfo;
9774 tDot11fIEExtSuppRates ExtSuppRates;
9775 tDot11fIERSN RSN;
9776 tDot11fIEQBSSLoad QBSSLoad;
9777 tDot11fIEEDCAParamSet EDCAParamSet;
9778 tDot11fIEQOSCapsAp QOSCapsAp;
9779 tDot11fIEAPChannelReport APChannelReport;
9780 tDot11fIERRMEnabledCap RRMEnabledCap;
9781 tDot11fIEMobilityDomain MobilityDomain;
9782 tDot11fIEWPA WPA;
9783 tDot11fIEHTCaps HTCaps;
9784 tDot11fIEHTInfo HTInfo;
9785 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele;
9786 tDot11fIEWMMInfoAp WMMInfoAp;
9787 tDot11fIEWMMParams WMMParams;
9788 tDot11fIEWMMCaps WMMCaps;
9789 tDot11fIEWAPI WAPI;
9790 tDot11fIEESEVersion ESEVersion;
9791 tDot11fIEESERadMgmtCap ESERadMgmtCap;
9792 tDot11fIEESETrafStrmMet ESETrafStrmMet;
9793 tDot11fIEESETxmitPower ESETxmitPower;
9794 tDot11fIEWscBeaconProbeRes WscBeaconProbeRes;
9795 tDot11fIEP2PBeaconProbeRes P2PBeaconProbeRes;
9796 tDot11fIEVHTCaps VHTCaps;
9797 tDot11fIEVHTOperation VHTOperation;
9798 tDot11fIEVHTExtBssLoad VHTExtBssLoad;
9799 tDot11fIEExtCap ExtCap;
9800 tDot11fIEOperatingMode OperatingMode;
9801 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
9802 tDot11fIEOBSSScanParameters OBSSScanParameters;
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309803 tDot11fIEfils_indication fils_indication;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009804 tDot11fIEVendor1IE Vendor1IE;
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05309805 tDot11fIEvendor_vht_ie vendor_vht_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009806 tDot11fIEVendor3IE Vendor3IE;
Nitesh Shah0ddd4f62016-05-27 10:07:32 +05309807 tDot11fIEhs20vendor_ie hs20vendor_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009808 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
9809 tDot11fIEQComVendorIE QComVendorIE;
Selvaraj, Sridharba726cb2016-07-22 13:41:03 +05309810 tDot11fIEMBO_IE MBO_IE;
Selvaraj, Sridharc2fe7a32017-02-02 19:20:16 +05309811 tDot11fIEQCN_IE QCN_IE;
Naveen Rawatea921ce2017-09-08 15:07:58 -07009812 tDot11fIEhe_cap he_cap;
9813 tDot11fIEhe_op he_op;
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -07009814 tDot11fIEbss_color_change bss_color_change;
9815 tDot11fIEmu_edca_param_set mu_edca_param_set;
Abhishek Singhd8c3f102017-07-29 14:10:37 +05309816 tDot11fIEesp_information esp_information;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009817} tDot11fBeaconIEs;
9818
9819#define DOT11F_BEACONIES (9)
9820
9821#ifdef __cplusplus
9822extern "C" {
9823#endif /* C++ */
9824
9825uint32_t dot11f_unpack_beacon_i_es(tpAniSirGlobal pCtx,
9826 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309827 tDot11fBeaconIEs * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009828uint32_t dot11f_pack_beacon_i_es(tpAniSirGlobal pCtx,
9829 tDot11fBeaconIEs *pFrm, uint8_t *pBuf,
9830 uint32_t nBuf, uint32_t *pnConsumed);
9831uint32_t dot11f_get_packed_beacon_i_es_size(tpAniSirGlobal pCtx,
9832 tDot11fBeaconIEs *pFrm,
9833 uint32_t *pnNeeded);
9834
9835#ifdef __cplusplus
9836} /* End extern "C". */
9837#endif /* C++ */
9838
9839typedef struct sDot11fChannelSwitch{
9840 tDot11fFfCategory Category;
9841 tDot11fFfAction Action;
9842 tDot11fIEChanSwitchAnn ChanSwitchAnn;
9843 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele;
9844 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
9845} tDot11fChannelSwitch;
9846
9847#define DOT11F_CHANNELSWITCH (10)
9848
9849#ifdef __cplusplus
9850extern "C" {
9851#endif /* C++ */
9852
9853uint32_t dot11f_unpack_channel_switch(tpAniSirGlobal pCtx,
9854 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309855 tDot11fChannelSwitch * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009856uint32_t dot11f_pack_channel_switch(tpAniSirGlobal pCtx,
9857 tDot11fChannelSwitch *pFrm, uint8_t *pBuf,
9858 uint32_t nBuf, uint32_t *pnConsumed);
9859uint32_t dot11f_get_packed_channel_switch_size(tpAniSirGlobal pCtx,
9860 tDot11fChannelSwitch *pFrm,
9861 uint32_t *pnNeeded);
9862
9863#ifdef __cplusplus
9864} /* End extern "C". */
9865#endif /* C++ */
9866
9867typedef struct sDot11fDeAuth{
9868 tDot11fFfReason Reason;
9869 tDot11fIEP2PDeAuth P2PDeAuth;
9870} tDot11fDeAuth;
9871
9872#define DOT11F_DEAUTH (11)
9873
9874#ifdef __cplusplus
9875extern "C" {
9876#endif /* C++ */
9877
9878uint32_t dot11f_unpack_de_auth(tpAniSirGlobal pCtx,
9879 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309880 tDot11fDeAuth * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009881uint32_t dot11f_pack_de_auth(tpAniSirGlobal pCtx,
9882 tDot11fDeAuth *pFrm, uint8_t *pBuf,
9883 uint32_t nBuf, uint32_t *pnConsumed);
9884uint32_t dot11f_get_packed_de_auth_size(tpAniSirGlobal pCtx,
9885 tDot11fDeAuth *pFrm,
9886 uint32_t *pnNeeded);
9887
9888#ifdef __cplusplus
9889} /* End extern "C". */
9890#endif /* C++ */
9891
9892typedef struct sDot11fDelTS{
9893 tDot11fFfCategory Category;
9894 tDot11fFfAction Action;
9895 tDot11fFfTSInfo TSInfo;
9896 tDot11fFfReason Reason;
9897} tDot11fDelTS;
9898
9899#define DOT11F_DELTS (12)
9900
9901#ifdef __cplusplus
9902extern "C" {
9903#endif /* C++ */
9904
9905uint32_t dot11f_unpack_del_ts(tpAniSirGlobal pCtx,
9906 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309907 tDot11fDelTS * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009908uint32_t dot11f_pack_del_ts(tpAniSirGlobal pCtx,
9909 tDot11fDelTS *pFrm, uint8_t *pBuf,
9910 uint32_t nBuf, uint32_t *pnConsumed);
9911uint32_t dot11f_get_packed_del_ts_size(tpAniSirGlobal pCtx,
9912 tDot11fDelTS *pFrm,
9913 uint32_t *pnNeeded);
9914
9915#ifdef __cplusplus
9916} /* End extern "C". */
9917#endif /* C++ */
9918
9919typedef struct sDot11fDisassociation{
9920 tDot11fFfReason Reason;
9921 tDot11fIEP2PDisAssoc P2PDisAssoc;
9922} tDot11fDisassociation;
9923
9924#define DOT11F_DISASSOCIATION (13)
9925
9926#ifdef __cplusplus
9927extern "C" {
9928#endif /* C++ */
9929
9930uint32_t dot11f_unpack_disassociation(tpAniSirGlobal pCtx,
9931 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309932 tDot11fDisassociation * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009933uint32_t dot11f_pack_disassociation(tpAniSirGlobal pCtx,
9934 tDot11fDisassociation *pFrm, uint8_t *pBuf,
9935 uint32_t nBuf, uint32_t *pnConsumed);
9936uint32_t dot11f_get_packed_disassociation_size(tpAniSirGlobal pCtx,
9937 tDot11fDisassociation *pFrm,
9938 uint32_t *pnNeeded);
9939
9940#ifdef __cplusplus
9941} /* End extern "C". */
9942#endif /* C++ */
9943
9944typedef struct sDot11fLinkMeasurementReport{
9945 tDot11fFfCategory Category;
9946 tDot11fFfAction Action;
9947 tDot11fFfDialogToken DialogToken;
9948 tDot11fFfTPCEleID TPCEleID;
9949 tDot11fFfTPCEleLen TPCEleLen;
9950 tDot11fFfTxPower TxPower;
9951 tDot11fFfLinkMargin LinkMargin;
9952 tDot11fFfRxAntennaId RxAntennaId;
9953 tDot11fFfTxAntennaId TxAntennaId;
9954 tDot11fFfRCPI RCPI;
9955 tDot11fFfRSNI RSNI;
9956} tDot11fLinkMeasurementReport;
9957
9958#define DOT11F_LINKMEASUREMENTREPORT (14)
9959
9960#ifdef __cplusplus
9961extern "C" {
9962#endif /* C++ */
9963
9964uint32_t dot11f_unpack_link_measurement_report(tpAniSirGlobal pCtx,
9965 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309966 tDot11fLinkMeasurementReport * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009967uint32_t dot11f_pack_link_measurement_report(tpAniSirGlobal pCtx,
9968 tDot11fLinkMeasurementReport *pFrm, uint8_t *pBuf,
9969 uint32_t nBuf, uint32_t *pnConsumed);
9970uint32_t dot11f_get_packed_link_measurement_report_size(tpAniSirGlobal pCtx,
9971 tDot11fLinkMeasurementReport *pFrm,
9972 uint32_t *pnNeeded);
9973
9974#ifdef __cplusplus
9975} /* End extern "C". */
9976#endif /* C++ */
9977
9978typedef struct sDot11fLinkMeasurementRequest{
9979 tDot11fFfCategory Category;
9980 tDot11fFfAction Action;
9981 tDot11fFfDialogToken DialogToken;
9982 tDot11fFfTxPower TxPower;
9983 tDot11fFfMaxTxPower MaxTxPower;
9984} tDot11fLinkMeasurementRequest;
9985
9986#define DOT11F_LINKMEASUREMENTREQUEST (15)
9987
9988#ifdef __cplusplus
9989extern "C" {
9990#endif /* C++ */
9991
9992uint32_t dot11f_unpack_link_measurement_request(tpAniSirGlobal pCtx,
9993 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +05309994 tDot11fLinkMeasurementRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08009995uint32_t dot11f_pack_link_measurement_request(tpAniSirGlobal pCtx,
9996 tDot11fLinkMeasurementRequest *pFrm, uint8_t *pBuf,
9997 uint32_t nBuf, uint32_t *pnConsumed);
9998uint32_t dot11f_get_packed_link_measurement_request_size(tpAniSirGlobal pCtx,
9999 tDot11fLinkMeasurementRequest *pFrm,
10000 uint32_t *pnNeeded);
10001
10002#ifdef __cplusplus
10003} /* End extern "C". */
10004#endif /* C++ */
10005
10006typedef struct sDot11fMeasurementReport{
10007 tDot11fFfCategory Category;
10008 tDot11fFfAction Action;
10009 tDot11fFfDialogToken DialogToken;
10010 tDot11fIEMeasurementReport MeasurementReport;
10011} tDot11fMeasurementReport;
10012
10013#define DOT11F_MEASUREMENTREPORT (16)
10014
10015#ifdef __cplusplus
10016extern "C" {
10017#endif /* C++ */
10018
10019uint32_t dot11f_unpack_measurement_report(tpAniSirGlobal pCtx,
10020 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010021 tDot11fMeasurementReport * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010022uint32_t dot11f_pack_measurement_report(tpAniSirGlobal pCtx,
10023 tDot11fMeasurementReport *pFrm, uint8_t *pBuf,
10024 uint32_t nBuf, uint32_t *pnConsumed);
10025uint32_t dot11f_get_packed_measurement_report_size(tpAniSirGlobal pCtx,
10026 tDot11fMeasurementReport *pFrm,
10027 uint32_t *pnNeeded);
10028
10029#ifdef __cplusplus
10030} /* End extern "C". */
10031#endif /* C++ */
10032
10033typedef struct sDot11fMeasurementRequest{
10034 tDot11fFfCategory Category;
10035 tDot11fFfAction Action;
10036 tDot11fFfDialogToken DialogToken;
10037 uint16_t num_MeasurementRequest;
10038 tDot11fIEMeasurementRequest MeasurementRequest[4];
10039} tDot11fMeasurementRequest;
10040
10041#define DOT11F_MEASUREMENTREQUEST (17)
10042
10043#ifdef __cplusplus
10044extern "C" {
10045#endif /* C++ */
10046
10047uint32_t dot11f_unpack_measurement_request(tpAniSirGlobal pCtx,
10048 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010049 tDot11fMeasurementRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010050uint32_t dot11f_pack_measurement_request(tpAniSirGlobal pCtx,
10051 tDot11fMeasurementRequest *pFrm, uint8_t *pBuf,
10052 uint32_t nBuf, uint32_t *pnConsumed);
10053uint32_t dot11f_get_packed_measurement_request_size(tpAniSirGlobal pCtx,
10054 tDot11fMeasurementRequest *pFrm,
10055 uint32_t *pnNeeded);
10056
10057#ifdef __cplusplus
10058} /* End extern "C". */
10059#endif /* C++ */
10060
10061typedef struct sDot11fNeighborReportRequest{
10062 tDot11fFfCategory Category;
10063 tDot11fFfAction Action;
10064 tDot11fFfDialogToken DialogToken;
10065 tDot11fIESSID SSID;
10066} tDot11fNeighborReportRequest;
10067
10068#define DOT11F_NEIGHBORREPORTREQUEST (18)
10069
10070#ifdef __cplusplus
10071extern "C" {
10072#endif /* C++ */
10073
10074uint32_t dot11f_unpack_neighbor_report_request(tpAniSirGlobal pCtx,
10075 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010076 tDot11fNeighborReportRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010077uint32_t dot11f_pack_neighbor_report_request(tpAniSirGlobal pCtx,
10078 tDot11fNeighborReportRequest *pFrm, uint8_t *pBuf,
10079 uint32_t nBuf, uint32_t *pnConsumed);
10080uint32_t dot11f_get_packed_neighbor_report_request_size(tpAniSirGlobal pCtx,
10081 tDot11fNeighborReportRequest *pFrm,
10082 uint32_t *pnNeeded);
10083
10084#ifdef __cplusplus
10085} /* End extern "C". */
10086#endif /* C++ */
10087
10088typedef struct sDot11fNeighborReportResponse{
10089 tDot11fFfCategory Category;
10090 tDot11fFfAction Action;
10091 tDot11fFfDialogToken DialogToken;
10092 uint16_t num_NeighborReport;
10093 tDot11fIENeighborReport NeighborReport[15];
10094} tDot11fNeighborReportResponse;
10095
10096#define DOT11F_NEIGHBORREPORTRESPONSE (19)
10097
10098#ifdef __cplusplus
10099extern "C" {
10100#endif /* C++ */
10101
10102uint32_t dot11f_unpack_neighbor_report_response(tpAniSirGlobal pCtx,
10103 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010104 tDot11fNeighborReportResponse * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010105uint32_t dot11f_pack_neighbor_report_response(tpAniSirGlobal pCtx,
10106 tDot11fNeighborReportResponse *pFrm, uint8_t *pBuf,
10107 uint32_t nBuf, uint32_t *pnConsumed);
10108uint32_t dot11f_get_packed_neighbor_report_response_size(tpAniSirGlobal pCtx,
10109 tDot11fNeighborReportResponse *pFrm,
10110 uint32_t *pnNeeded);
10111
10112#ifdef __cplusplus
10113} /* End extern "C". */
10114#endif /* C++ */
10115
10116typedef struct sDot11fOperatingMode{
10117 tDot11fFfCategory Category;
10118 tDot11fFfAction Action;
10119 tDot11fFfOperatingMode OperatingMode;
10120} tDot11fOperatingMode;
10121
10122#define DOT11F_OPERATINGMODE (20)
10123
10124#ifdef __cplusplus
10125extern "C" {
10126#endif /* C++ */
10127
10128uint32_t dot11f_unpack_operating_mode(tpAniSirGlobal pCtx,
10129 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010130 tDot11fOperatingMode * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010131uint32_t dot11f_pack_operating_mode(tpAniSirGlobal pCtx,
10132 tDot11fOperatingMode *pFrm, uint8_t *pBuf,
10133 uint32_t nBuf, uint32_t *pnConsumed);
10134uint32_t dot11f_get_packed_operating_mode_size(tpAniSirGlobal pCtx,
10135 tDot11fOperatingMode *pFrm,
10136 uint32_t *pnNeeded);
10137
10138#ifdef __cplusplus
10139} /* End extern "C". */
10140#endif /* C++ */
10141
10142typedef struct sDot11fProbeRequest{
10143 tDot11fIESSID SSID;
10144 tDot11fIESuppRates SuppRates;
10145 tDot11fIERequestedInfo RequestedInfo;
10146 tDot11fIEExtSuppRates ExtSuppRates;
10147 tDot11fIEDSParams DSParams;
10148 tDot11fIEHTCaps HTCaps;
10149 tDot11fIEWscProbeReq WscProbeReq;
10150 tDot11fIEWFATPC WFATPC;
10151 tDot11fIEP2PProbeReq P2PProbeReq;
10152 tDot11fIEVHTCaps VHTCaps;
10153 tDot11fIEExtCap ExtCap;
Selvaraj, Sridharc2fe7a32017-02-02 19:20:16 +053010154 tDot11fIEQCN_IE QCN_IE;
Naveen Rawatea921ce2017-09-08 15:07:58 -070010155 tDot11fIEhe_cap he_cap;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010156} tDot11fProbeRequest;
10157
10158#define DOT11F_PROBEREQUEST (21)
10159
10160#ifdef __cplusplus
10161extern "C" {
10162#endif /* C++ */
10163
10164uint32_t dot11f_unpack_probe_request(tpAniSirGlobal pCtx,
10165 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010166 tDot11fProbeRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010167uint32_t dot11f_pack_probe_request(tpAniSirGlobal pCtx,
10168 tDot11fProbeRequest *pFrm, uint8_t *pBuf,
10169 uint32_t nBuf, uint32_t *pnConsumed);
10170uint32_t dot11f_get_packed_probe_request_size(tpAniSirGlobal pCtx,
10171 tDot11fProbeRequest *pFrm,
10172 uint32_t *pnNeeded);
10173
10174#ifdef __cplusplus
10175} /* End extern "C". */
10176#endif /* C++ */
10177
10178typedef struct sDot11fProbeResponse{
10179 tDot11fFfTimeStamp TimeStamp;
10180 tDot11fFfBeaconInterval BeaconInterval;
10181 tDot11fFfCapabilities Capabilities;
10182 tDot11fIESSID SSID;
10183 tDot11fIESuppRates SuppRates;
10184 tDot11fIEFHParamSet FHParamSet;
10185 tDot11fIEDSParams DSParams;
10186 tDot11fIECFParams CFParams;
10187 tDot11fIEIBSSParams IBSSParams;
10188 tDot11fIECountry Country;
10189 tDot11fIEFHParams FHParams;
10190 tDot11fIEFHPattTable FHPattTable;
10191 tDot11fIEPowerConstraints PowerConstraints;
10192 tDot11fIEChanSwitchAnn ChanSwitchAnn;
10193 tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
Edhar, Mahesh Kumar5cd1e0e2015-11-16 14:32:33 +053010194 tDot11fIESuppOperatingClasses SuppOperatingClasses;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010195 tDot11fIEQuiet Quiet;
10196 tDot11fIETPCReport TPCReport;
10197 tDot11fIEERPInfo ERPInfo;
10198 tDot11fIEExtSuppRates ExtSuppRates;
10199 tDot11fIERSNOpaque RSNOpaque;
10200 tDot11fIEQBSSLoad QBSSLoad;
10201 tDot11fIEEDCAParamSet EDCAParamSet;
10202 tDot11fIERRMEnabledCap RRMEnabledCap;
10203 tDot11fIEAPChannelReport APChannelReport;
10204 tDot11fIEMobilityDomain MobilityDomain;
10205 tDot11fIEWPA WPA;
10206 tDot11fIEHTCaps HTCaps;
10207 tDot11fIEHTInfo HTInfo;
10208 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele;
10209 tDot11fIEWMMInfoAp WMMInfoAp;
10210 tDot11fIEWMMParams WMMParams;
10211 tDot11fIEWMMCaps WMMCaps;
10212 tDot11fIEWAPI WAPI;
10213 tDot11fIEESERadMgmtCap ESERadMgmtCap;
10214 tDot11fIEESETrafStrmMet ESETrafStrmMet;
10215 tDot11fIEESETxmitPower ESETxmitPower;
10216 tDot11fIEWscProbeRes WscProbeRes;
10217 tDot11fIEP2PProbeRes P2PProbeRes;
10218 tDot11fIEVHTCaps VHTCaps;
10219 tDot11fIEVHTOperation VHTOperation;
10220 tDot11fIEVHTExtBssLoad VHTExtBssLoad;
10221 tDot11fIEExtCap ExtCap;
10222 tDot11fIEOBSSScanParameters OBSSScanParameters;
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010223 tDot11fIEfils_indication fils_indication;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010224 tDot11fIEVendor1IE Vendor1IE;
Kapil Gupta4b2efbb2016-10-03 13:07:20 +053010225 tDot11fIEvendor_vht_ie vendor_vht_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010226 tDot11fIEVendor3IE Vendor3IE;
Nitesh Shah0ddd4f62016-05-27 10:07:32 +053010227 tDot11fIEhs20vendor_ie hs20vendor_ie;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010228 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
10229 tDot11fIEQComVendorIE QComVendorIE;
10230 tDot11fIEESEVersion ESEVersion;
Selvaraj, Sridharba726cb2016-07-22 13:41:03 +053010231 tDot11fIEMBO_IE MBO_IE;
Selvaraj, Sridharc2fe7a32017-02-02 19:20:16 +053010232 tDot11fIEQCN_IE QCN_IE;
Naveen Rawatea921ce2017-09-08 15:07:58 -070010233 tDot11fIEhe_cap he_cap;
10234 tDot11fIEhe_op he_op;
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -070010235 tDot11fIEbss_color_change bss_color_change;
10236 tDot11fIEmu_edca_param_set mu_edca_param_set;
Abhishek Singhd8c3f102017-07-29 14:10:37 +053010237 tDot11fIEesp_information esp_information;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010238} tDot11fProbeResponse;
10239
10240#define DOT11F_PROBERESPONSE (22)
10241
10242#ifdef __cplusplus
10243extern "C" {
10244#endif /* C++ */
10245
10246uint32_t dot11f_unpack_probe_response(tpAniSirGlobal pCtx,
10247 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010248 tDot11fProbeResponse * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010249uint32_t dot11f_pack_probe_response(tpAniSirGlobal pCtx,
10250 tDot11fProbeResponse *pFrm, uint8_t *pBuf,
10251 uint32_t nBuf, uint32_t *pnConsumed);
10252uint32_t dot11f_get_packed_probe_response_size(tpAniSirGlobal pCtx,
10253 tDot11fProbeResponse *pFrm,
10254 uint32_t *pnNeeded);
10255
10256#ifdef __cplusplus
10257} /* End extern "C". */
10258#endif /* C++ */
10259
10260typedef struct sDot11fQosMapConfigure{
10261 tDot11fFfCategory Category;
10262 tDot11fFfAction Action;
10263 tDot11fIEQosMapSet QosMapSet;
10264} tDot11fQosMapConfigure;
10265
10266#define DOT11F_QOSMAPCONFIGURE (23)
10267
10268#ifdef __cplusplus
10269extern "C" {
10270#endif /* C++ */
10271
10272uint32_t dot11f_unpack_qos_map_configure(tpAniSirGlobal pCtx,
10273 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010274 tDot11fQosMapConfigure * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010275uint32_t dot11f_pack_qos_map_configure(tpAniSirGlobal pCtx,
10276 tDot11fQosMapConfigure *pFrm, uint8_t *pBuf,
10277 uint32_t nBuf, uint32_t *pnConsumed);
10278uint32_t dot11f_get_packed_qos_map_configure_size(tpAniSirGlobal pCtx,
10279 tDot11fQosMapConfigure *pFrm,
10280 uint32_t *pnNeeded);
10281
10282#ifdef __cplusplus
10283} /* End extern "C". */
10284#endif /* C++ */
10285
10286typedef struct sDot11fRadioMeasurementReport{
10287 tDot11fFfCategory Category;
10288 tDot11fFfAction Action;
10289 tDot11fFfDialogToken DialogToken;
10290 uint16_t num_MeasurementReport;
10291 tDot11fIEMeasurementReport MeasurementReport[4];
10292} tDot11fRadioMeasurementReport;
10293
10294#define DOT11F_RADIOMEASUREMENTREPORT (24)
10295
10296#ifdef __cplusplus
10297extern "C" {
10298#endif /* C++ */
10299
10300uint32_t dot11f_unpack_radio_measurement_report(tpAniSirGlobal pCtx,
10301 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010302 tDot11fRadioMeasurementReport * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010303uint32_t dot11f_pack_radio_measurement_report(tpAniSirGlobal pCtx,
10304 tDot11fRadioMeasurementReport *pFrm, uint8_t *pBuf,
10305 uint32_t nBuf, uint32_t *pnConsumed);
10306uint32_t dot11f_get_packed_radio_measurement_report_size(tpAniSirGlobal pCtx,
10307 tDot11fRadioMeasurementReport *pFrm,
10308 uint32_t *pnNeeded);
10309
10310#ifdef __cplusplus
10311} /* End extern "C". */
10312#endif /* C++ */
10313
10314typedef struct sDot11fRadioMeasurementRequest{
10315 tDot11fFfCategory Category;
10316 tDot11fFfAction Action;
10317 tDot11fFfDialogToken DialogToken;
10318 tDot11fFfNumOfRepetitions NumOfRepetitions;
10319 uint16_t num_MeasurementRequest;
10320 tDot11fIEMeasurementRequest MeasurementRequest[2];
10321} tDot11fRadioMeasurementRequest;
10322
10323#define DOT11F_RADIOMEASUREMENTREQUEST (25)
10324
10325#ifdef __cplusplus
10326extern "C" {
10327#endif /* C++ */
10328
10329uint32_t dot11f_unpack_radio_measurement_request(tpAniSirGlobal pCtx,
10330 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010331 tDot11fRadioMeasurementRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010332uint32_t dot11f_pack_radio_measurement_request(tpAniSirGlobal pCtx,
10333 tDot11fRadioMeasurementRequest *pFrm, uint8_t *pBuf,
10334 uint32_t nBuf, uint32_t *pnConsumed);
10335uint32_t dot11f_get_packed_radio_measurement_request_size(tpAniSirGlobal pCtx,
10336 tDot11fRadioMeasurementRequest *pFrm,
10337 uint32_t *pnNeeded);
10338
10339#ifdef __cplusplus
10340} /* End extern "C". */
10341#endif /* C++ */
10342
10343typedef struct sDot11fReAssocRequest{
10344 tDot11fFfCapabilities Capabilities;
10345 tDot11fFfListenInterval ListenInterval;
10346 tDot11fFfCurrentAPAddress CurrentAPAddress;
10347 tDot11fIESSID SSID;
10348 tDot11fIESuppRates SuppRates;
10349 tDot11fIEExtSuppRates ExtSuppRates;
10350 tDot11fIEPowerCaps PowerCaps;
10351 tDot11fIESuppChannels SuppChannels;
10352 tDot11fIERSNOpaque RSNOpaque;
10353 tDot11fIEQOSCapsStation QOSCapsStation;
10354 tDot11fIERRMEnabledCap RRMEnabledCap;
10355 tDot11fIEMobilityDomain MobilityDomain;
10356 tDot11fIEFTInfo FTInfo;
10357 uint16_t num_RICDataDesc;
10358 tDot11fIERICDataDesc RICDataDesc[2];
10359 tDot11fIEWPAOpaque WPAOpaque;
10360 tDot11fIEHTCaps HTCaps;
10361 tDot11fIEWMMCaps WMMCaps;
10362 tDot11fIEWMMInfoStation WMMInfoStation;
10363 tDot11fIEWscIEOpaque WscIEOpaque;
10364 tDot11fIEWAPIOpaque WAPIOpaque;
10365 tDot11fIEWAPI WAPI;
10366 tDot11fIEESERadMgmtCap ESERadMgmtCap;
10367 tDot11fIEESEVersion ESEVersion;
10368 tDot11fIEESECckmOpaque ESECckmOpaque;
10369 uint16_t num_WMMTSPEC;
10370 tDot11fIEWMMTSPEC WMMTSPEC[4];
10371 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet;
10372 tDot11fIEP2PIEOpaque P2PIEOpaque;
10373 tDot11fIEWFDIEOpaque WFDIEOpaque;
10374 tDot11fIEVHTCaps VHTCaps;
10375 tDot11fIEExtCap ExtCap;
10376 tDot11fIEOperatingMode OperatingMode;
10377 tDot11fIEQosMapSet QosMapSet;
Kapil Gupta4b2efbb2016-10-03 13:07:20 +053010378 tDot11fIEvendor_vht_ie vendor_vht_ie;
Nitesh Shah0ddd4f62016-05-27 10:07:32 +053010379 tDot11fIEhs20vendor_ie hs20vendor_ie;
Naveen Rawatea921ce2017-09-08 15:07:58 -070010380 tDot11fIEhe_cap he_cap;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010381} tDot11fReAssocRequest;
10382
10383#define DOT11F_REASSOCREQUEST (26)
10384
10385#ifdef __cplusplus
10386extern "C" {
10387#endif /* C++ */
10388
10389uint32_t dot11f_unpack_re_assoc_request(tpAniSirGlobal pCtx,
10390 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010391 tDot11fReAssocRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010392uint32_t dot11f_pack_re_assoc_request(tpAniSirGlobal pCtx,
10393 tDot11fReAssocRequest *pFrm, uint8_t *pBuf,
10394 uint32_t nBuf, uint32_t *pnConsumed);
10395uint32_t dot11f_get_packed_re_assoc_request_size(tpAniSirGlobal pCtx,
10396 tDot11fReAssocRequest *pFrm,
10397 uint32_t *pnNeeded);
10398
10399#ifdef __cplusplus
10400} /* End extern "C". */
10401#endif /* C++ */
10402
10403typedef struct sDot11fReAssocResponse{
10404 tDot11fFfCapabilities Capabilities;
10405 tDot11fFfStatus Status;
10406 tDot11fFfAID AID;
10407 tDot11fIESuppRates SuppRates;
10408 tDot11fIEExtSuppRates ExtSuppRates;
10409 tDot11fIEEDCAParamSet EDCAParamSet;
10410 tDot11fIERCPIIE RCPIIE;
10411 tDot11fIERSNIIE RSNIIE;
10412 tDot11fIERRMEnabledCap RRMEnabledCap;
10413 tDot11fIERSNOpaque RSNOpaque;
10414 tDot11fIEMobilityDomain MobilityDomain;
10415 tDot11fIEFTInfo FTInfo;
10416 uint16_t num_RICDataDesc;
10417 tDot11fIERICDataDesc RICDataDesc[2];
10418 tDot11fIEWPA WPA;
10419 tDot11fIETimeoutInterval TimeoutInterval;
10420 tDot11fIEHTCaps HTCaps;
10421 tDot11fIEHTInfo HTInfo;
10422 tDot11fIEWMMParams WMMParams;
10423 tDot11fIEESERadMgmtCap ESERadMgmtCap;
10424 tDot11fIEESETrafStrmMet ESETrafStrmMet;
10425 tDot11fIEESETxmitPower ESETxmitPower;
10426 uint16_t num_WMMTSPEC;
10427 tDot11fIEWMMTSPEC WMMTSPEC[4];
10428 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet;
10429 tDot11fIEWscReassocRes WscReassocRes;
10430 tDot11fIEP2PAssocRes P2PAssocRes;
10431 tDot11fIEVHTCaps VHTCaps;
10432 tDot11fIEVHTOperation VHTOperation;
10433 tDot11fIEExtCap ExtCap;
10434 tDot11fIEOBSSScanParameters OBSSScanParameters;
10435 tDot11fIEQosMapSet QosMapSet;
Kapil Gupta4b2efbb2016-10-03 13:07:20 +053010436 tDot11fIEvendor_vht_ie vendor_vht_ie;
Naveen Rawatea921ce2017-09-08 15:07:58 -070010437 tDot11fIEhe_cap he_cap;
10438 tDot11fIEhe_op he_op;
Krishna Kumaar Natarajan0baebf82017-04-24 08:16:36 -070010439 tDot11fIEbss_color_change bss_color_change;
10440 tDot11fIEmu_edca_param_set mu_edca_param_set;
Abhishek Singh4c1ec992017-07-14 14:09:27 +053010441 tDot11fIEMBO_IE MBO_IE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010442} tDot11fReAssocResponse;
10443
10444#define DOT11F_REASSOCRESPONSE (27)
10445
10446#ifdef __cplusplus
10447extern "C" {
10448#endif /* C++ */
10449
10450uint32_t dot11f_unpack_re_assoc_response(tpAniSirGlobal pCtx,
10451 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010452 tDot11fReAssocResponse * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010453uint32_t dot11f_pack_re_assoc_response(tpAniSirGlobal pCtx,
10454 tDot11fReAssocResponse *pFrm, uint8_t *pBuf,
10455 uint32_t nBuf, uint32_t *pnConsumed);
10456uint32_t dot11f_get_packed_re_assoc_response_size(tpAniSirGlobal pCtx,
10457 tDot11fReAssocResponse *pFrm,
10458 uint32_t *pnNeeded);
10459
10460#ifdef __cplusplus
10461} /* End extern "C". */
10462#endif /* C++ */
10463
10464typedef struct sDot11fSMPowerSave{
10465 tDot11fFfCategory Category;
10466 tDot11fFfAction Action;
10467 tDot11fFfSMPowerModeSet SMPowerModeSet;
10468} tDot11fSMPowerSave;
10469
10470#define DOT11F_SMPOWERSAVE (28)
10471
10472#ifdef __cplusplus
10473extern "C" {
10474#endif /* C++ */
10475
10476uint32_t dot11f_unpack_sm_power_save(tpAniSirGlobal pCtx,
10477 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010478 tDot11fSMPowerSave * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010479uint32_t dot11f_pack_sm_power_save(tpAniSirGlobal pCtx,
10480 tDot11fSMPowerSave *pFrm, uint8_t *pBuf,
10481 uint32_t nBuf, uint32_t *pnConsumed);
10482uint32_t dot11f_get_packed_sm_power_save_size(tpAniSirGlobal pCtx,
10483 tDot11fSMPowerSave *pFrm,
10484 uint32_t *pnNeeded);
10485
10486#ifdef __cplusplus
10487} /* End extern "C". */
10488#endif /* C++ */
10489
10490typedef struct sDot11fSaQueryReq{
10491 tDot11fFfCategory Category;
10492 tDot11fFfAction Action;
10493 tDot11fFfTransactionId TransactionId;
10494} tDot11fSaQueryReq;
10495
10496#define DOT11F_SAQUERYREQ (29)
10497
10498#ifdef __cplusplus
10499extern "C" {
10500#endif /* C++ */
10501
10502uint32_t dot11f_unpack_sa_query_req(tpAniSirGlobal pCtx,
10503 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010504 tDot11fSaQueryReq * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010505uint32_t dot11f_pack_sa_query_req(tpAniSirGlobal pCtx,
10506 tDot11fSaQueryReq *pFrm, uint8_t *pBuf,
10507 uint32_t nBuf, uint32_t *pnConsumed);
10508uint32_t dot11f_get_packed_sa_query_req_size(tpAniSirGlobal pCtx,
10509 tDot11fSaQueryReq *pFrm,
10510 uint32_t *pnNeeded);
10511
10512#ifdef __cplusplus
10513} /* End extern "C". */
10514#endif /* C++ */
10515
10516typedef struct sDot11fSaQueryRsp{
10517 tDot11fFfCategory Category;
10518 tDot11fFfAction Action;
10519 tDot11fFfTransactionId TransactionId;
10520} tDot11fSaQueryRsp;
10521
10522#define DOT11F_SAQUERYRSP (30)
10523
10524#ifdef __cplusplus
10525extern "C" {
10526#endif /* C++ */
10527
10528uint32_t dot11f_unpack_sa_query_rsp(tpAniSirGlobal pCtx,
10529 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010530 tDot11fSaQueryRsp * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010531uint32_t dot11f_pack_sa_query_rsp(tpAniSirGlobal pCtx,
10532 tDot11fSaQueryRsp *pFrm, uint8_t *pBuf,
10533 uint32_t nBuf, uint32_t *pnConsumed);
10534uint32_t dot11f_get_packed_sa_query_rsp_size(tpAniSirGlobal pCtx,
10535 tDot11fSaQueryRsp *pFrm,
10536 uint32_t *pnNeeded);
10537
10538#ifdef __cplusplus
10539} /* End extern "C". */
10540#endif /* C++ */
10541
10542typedef struct sDot11fTDLSDisReq{
10543 tDot11fFfCategory Category;
10544 tDot11fFfAction Action;
10545 tDot11fFfDialogToken DialogToken;
10546 tDot11fIELinkIdentifier LinkIdentifier;
10547} tDot11fTDLSDisReq;
10548
10549#define DOT11F_TDLSDISREQ (31)
10550
10551#ifdef __cplusplus
10552extern "C" {
10553#endif /* C++ */
10554
10555uint32_t dot11f_unpack_tdls_dis_req(tpAniSirGlobal pCtx,
10556 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010557 tDot11fTDLSDisReq * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010558uint32_t dot11f_pack_tdls_dis_req(tpAniSirGlobal pCtx,
10559 tDot11fTDLSDisReq *pFrm, uint8_t *pBuf,
10560 uint32_t nBuf, uint32_t *pnConsumed);
10561uint32_t dot11f_get_packed_tdls_dis_req_size(tpAniSirGlobal pCtx,
10562 tDot11fTDLSDisReq *pFrm,
10563 uint32_t *pnNeeded);
10564
10565#ifdef __cplusplus
10566} /* End extern "C". */
10567#endif /* C++ */
10568
10569typedef struct sDot11fTDLSDisRsp{
10570 tDot11fFfCategory Category;
10571 tDot11fFfAction Action;
10572 tDot11fFfDialogToken DialogToken;
10573 tDot11fFfCapabilities Capabilities;
10574 tDot11fIESuppRates SuppRates;
10575 tDot11fIEExtSuppRates ExtSuppRates;
10576 tDot11fIESuppChannels SuppChannels;
10577 tDot11fIESuppOperatingClasses SuppOperatingClasses;
10578 tDot11fIERSN RSN;
10579 tDot11fIEExtCap ExtCap;
10580 tDot11fIEFTInfo FTInfo;
10581 tDot11fIETimeoutInterval TimeoutInterval;
10582 tDot11fIERICData RICData;
10583 tDot11fIEHTCaps HTCaps;
10584 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence;
10585 tDot11fIELinkIdentifier LinkIdentifier;
10586 tDot11fIEVHTCaps VHTCaps;
10587} tDot11fTDLSDisRsp;
10588
10589#define DOT11F_TDLSDISRSP (32)
10590
10591#ifdef __cplusplus
10592extern "C" {
10593#endif /* C++ */
10594
10595uint32_t dot11f_unpack_tdls_dis_rsp(tpAniSirGlobal pCtx,
10596 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010597 tDot11fTDLSDisRsp * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010598uint32_t dot11f_pack_tdls_dis_rsp(tpAniSirGlobal pCtx,
10599 tDot11fTDLSDisRsp *pFrm, uint8_t *pBuf,
10600 uint32_t nBuf, uint32_t *pnConsumed);
10601uint32_t dot11f_get_packed_tdls_dis_rsp_size(tpAniSirGlobal pCtx,
10602 tDot11fTDLSDisRsp *pFrm,
10603 uint32_t *pnNeeded);
10604
10605#ifdef __cplusplus
10606} /* End extern "C". */
10607#endif /* C++ */
10608
10609typedef struct sDot11fTDLSPeerTrafficInd{
10610 tDot11fFfCategory Category;
10611 tDot11fFfAction Action;
10612 tDot11fFfDialogToken DialogToken;
10613 tDot11fIELinkIdentifier LinkIdentifier;
10614 tDot11fIEPTIControl PTIControl;
10615 tDot11fIEPUBufferStatus PUBufferStatus;
10616} tDot11fTDLSPeerTrafficInd;
10617
10618#define DOT11F_TDLSPEERTRAFFICIND (33)
10619
10620#ifdef __cplusplus
10621extern "C" {
10622#endif /* C++ */
10623
10624uint32_t dot11f_unpack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx,
10625 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010626 tDot11fTDLSPeerTrafficInd * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010627uint32_t dot11f_pack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx,
10628 tDot11fTDLSPeerTrafficInd *pFrm, uint8_t *pBuf,
10629 uint32_t nBuf, uint32_t *pnConsumed);
10630uint32_t dot11f_get_packed_tdls_peer_traffic_ind_size(tpAniSirGlobal pCtx,
10631 tDot11fTDLSPeerTrafficInd *pFrm,
10632 uint32_t *pnNeeded);
10633
10634#ifdef __cplusplus
10635} /* End extern "C". */
10636#endif /* C++ */
10637
10638typedef struct sDot11fTDLSPeerTrafficRsp{
10639 tDot11fFfCategory Category;
10640 tDot11fFfAction Action;
10641 tDot11fFfDialogToken DialogToken;
10642 tDot11fIELinkIdentifier LinkIdentifier;
10643} tDot11fTDLSPeerTrafficRsp;
10644
10645#define DOT11F_TDLSPEERTRAFFICRSP (34)
10646
10647#ifdef __cplusplus
10648extern "C" {
10649#endif /* C++ */
10650
10651uint32_t dot11f_unpack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx,
10652 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010653 tDot11fTDLSPeerTrafficRsp * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010654uint32_t dot11f_pack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx,
10655 tDot11fTDLSPeerTrafficRsp *pFrm, uint8_t *pBuf,
10656 uint32_t nBuf, uint32_t *pnConsumed);
10657uint32_t dot11f_get_packed_tdls_peer_traffic_rsp_size(tpAniSirGlobal pCtx,
10658 tDot11fTDLSPeerTrafficRsp *pFrm,
10659 uint32_t *pnNeeded);
10660
10661#ifdef __cplusplus
10662} /* End extern "C". */
10663#endif /* C++ */
10664
10665typedef struct sDot11fTDLSSetupCnf{
10666 tDot11fFfCategory Category;
10667 tDot11fFfAction Action;
10668 tDot11fFfStatus Status;
10669 tDot11fFfDialogToken DialogToken;
10670 tDot11fIERSN RSN;
10671 tDot11fIEEDCAParamSet EDCAParamSet;
10672 tDot11fIEFTInfo FTInfo;
10673 tDot11fIETimeoutInterval TimeoutInterval;
10674 tDot11fIEHTInfo HTInfo;
10675 tDot11fIELinkIdentifier LinkIdentifier;
10676 tDot11fIEWMMParams WMMParams;
10677 tDot11fIEVHTOperation VHTOperation;
10678 tDot11fIEOperatingMode OperatingMode;
10679} tDot11fTDLSSetupCnf;
10680
10681#define DOT11F_TDLSSETUPCNF (35)
10682
10683#ifdef __cplusplus
10684extern "C" {
10685#endif /* C++ */
10686
10687uint32_t dot11f_unpack_tdls_setup_cnf(tpAniSirGlobal pCtx,
10688 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010689 tDot11fTDLSSetupCnf * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010690uint32_t dot11f_pack_tdls_setup_cnf(tpAniSirGlobal pCtx,
10691 tDot11fTDLSSetupCnf *pFrm, uint8_t *pBuf,
10692 uint32_t nBuf, uint32_t *pnConsumed);
10693uint32_t dot11f_get_packed_tdls_setup_cnf_size(tpAniSirGlobal pCtx,
10694 tDot11fTDLSSetupCnf *pFrm,
10695 uint32_t *pnNeeded);
10696
10697#ifdef __cplusplus
10698} /* End extern "C". */
10699#endif /* C++ */
10700
10701typedef struct sDot11fTDLSSetupReq{
10702 tDot11fFfCategory Category;
10703 tDot11fFfAction Action;
10704 tDot11fFfDialogToken DialogToken;
10705 tDot11fFfCapabilities Capabilities;
10706 tDot11fIESuppRates SuppRates;
10707 tDot11fIECountry Country;
10708 tDot11fIEExtSuppRates ExtSuppRates;
10709 tDot11fIESuppChannels SuppChannels;
10710 tDot11fIERSN RSN;
10711 tDot11fIEExtCap ExtCap;
10712 tDot11fIESuppOperatingClasses SuppOperatingClasses;
10713 tDot11fIEQOSCapsStation QOSCapsStation;
10714 tDot11fIEFTInfo FTInfo;
10715 tDot11fIETimeoutInterval TimeoutInterval;
10716 tDot11fIERICData RICData;
10717 tDot11fIEHTCaps HTCaps;
10718 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence;
10719 tDot11fIELinkIdentifier LinkIdentifier;
10720 tDot11fIEWMMInfoStation WMMInfoStation;
10721 tDot11fIEAID AID;
10722 tDot11fIEVHTCaps VHTCaps;
10723} tDot11fTDLSSetupReq;
10724
10725#define DOT11F_TDLSSETUPREQ (36)
10726
10727#ifdef __cplusplus
10728extern "C" {
10729#endif /* C++ */
10730
10731uint32_t dot11f_unpack_tdls_setup_req(tpAniSirGlobal pCtx,
10732 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010733 tDot11fTDLSSetupReq * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010734uint32_t dot11f_pack_tdls_setup_req(tpAniSirGlobal pCtx,
10735 tDot11fTDLSSetupReq *pFrm, uint8_t *pBuf,
10736 uint32_t nBuf, uint32_t *pnConsumed);
10737uint32_t dot11f_get_packed_tdls_setup_req_size(tpAniSirGlobal pCtx,
10738 tDot11fTDLSSetupReq *pFrm,
10739 uint32_t *pnNeeded);
10740
10741#ifdef __cplusplus
10742} /* End extern "C". */
10743#endif /* C++ */
10744
10745typedef struct sDot11fTDLSSetupRsp{
10746 tDot11fFfCategory Category;
10747 tDot11fFfAction Action;
10748 tDot11fFfStatus Status;
10749 tDot11fFfDialogToken DialogToken;
10750 tDot11fFfCapabilities Capabilities;
10751 tDot11fIESuppRates SuppRates;
10752 tDot11fIECountry Country;
10753 tDot11fIEExtSuppRates ExtSuppRates;
10754 tDot11fIESuppChannels SuppChannels;
10755 tDot11fIERSN RSN;
10756 tDot11fIEExtCap ExtCap;
10757 tDot11fIESuppOperatingClasses SuppOperatingClasses;
10758 tDot11fIEQOSCapsStation QOSCapsStation;
10759 tDot11fIEFTInfo FTInfo;
10760 tDot11fIETimeoutInterval TimeoutInterval;
10761 tDot11fIERICData RICData;
10762 tDot11fIEHTCaps HTCaps;
10763 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence;
10764 tDot11fIELinkIdentifier LinkIdentifier;
10765 tDot11fIEWMMInfoStation WMMInfoStation;
10766 tDot11fIEAID AID;
10767 tDot11fIEVHTCaps VHTCaps;
10768 tDot11fIEOperatingMode OperatingMode;
10769} tDot11fTDLSSetupRsp;
10770
10771#define DOT11F_TDLSSETUPRSP (37)
10772
10773#ifdef __cplusplus
10774extern "C" {
10775#endif /* C++ */
10776
10777uint32_t dot11f_unpack_tdls_setup_rsp(tpAniSirGlobal pCtx,
10778 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010779 tDot11fTDLSSetupRsp * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010780uint32_t dot11f_pack_tdls_setup_rsp(tpAniSirGlobal pCtx,
10781 tDot11fTDLSSetupRsp *pFrm, uint8_t *pBuf,
10782 uint32_t nBuf, uint32_t *pnConsumed);
10783uint32_t dot11f_get_packed_tdls_setup_rsp_size(tpAniSirGlobal pCtx,
10784 tDot11fTDLSSetupRsp *pFrm,
10785 uint32_t *pnNeeded);
10786
10787#ifdef __cplusplus
10788} /* End extern "C". */
10789#endif /* C++ */
10790
10791typedef struct sDot11fTDLSTeardown{
10792 tDot11fFfCategory Category;
10793 tDot11fFfAction Action;
10794 tDot11fFfReason Reason;
10795 tDot11fIEFTInfo FTInfo;
10796 tDot11fIELinkIdentifier LinkIdentifier;
10797} tDot11fTDLSTeardown;
10798
10799#define DOT11F_TDLSTEARDOWN (38)
10800
10801#ifdef __cplusplus
10802extern "C" {
10803#endif /* C++ */
10804
10805uint32_t dot11f_unpack_tdls_teardown(tpAniSirGlobal pCtx,
10806 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010807 tDot11fTDLSTeardown * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010808uint32_t dot11f_pack_tdls_teardown(tpAniSirGlobal pCtx,
10809 tDot11fTDLSTeardown *pFrm, uint8_t *pBuf,
10810 uint32_t nBuf, uint32_t *pnConsumed);
10811uint32_t dot11f_get_packed_tdls_teardown_size(tpAniSirGlobal pCtx,
10812 tDot11fTDLSTeardown *pFrm,
10813 uint32_t *pnNeeded);
10814
10815#ifdef __cplusplus
10816} /* End extern "C". */
10817#endif /* C++ */
10818
10819typedef struct sDot11fTPCReport{
10820 tDot11fFfCategory Category;
10821 tDot11fFfAction Action;
10822 tDot11fFfDialogToken DialogToken;
10823 tDot11fIETPCReport TPCReport;
10824} tDot11fTPCReport;
10825
10826#define DOT11F_TPCREPORT (39)
10827
10828#ifdef __cplusplus
10829extern "C" {
10830#endif /* C++ */
10831
10832uint32_t dot11f_unpack_tpc_report(tpAniSirGlobal pCtx,
10833 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010834 tDot11fTPCReport * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010835uint32_t dot11f_pack_tpc_report(tpAniSirGlobal pCtx,
10836 tDot11fTPCReport *pFrm, uint8_t *pBuf,
10837 uint32_t nBuf, uint32_t *pnConsumed);
10838uint32_t dot11f_get_packed_tpc_report_size(tpAniSirGlobal pCtx,
10839 tDot11fTPCReport *pFrm,
10840 uint32_t *pnNeeded);
10841
10842#ifdef __cplusplus
10843} /* End extern "C". */
10844#endif /* C++ */
10845
10846typedef struct sDot11fTPCRequest{
10847 tDot11fFfCategory Category;
10848 tDot11fFfAction Action;
10849 tDot11fFfDialogToken DialogToken;
10850 tDot11fIETPCRequest TPCRequest;
10851} tDot11fTPCRequest;
10852
10853#define DOT11F_TPCREQUEST (40)
10854
10855#ifdef __cplusplus
10856extern "C" {
10857#endif /* C++ */
10858
10859uint32_t dot11f_unpack_tpc_request(tpAniSirGlobal pCtx,
10860 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010861 tDot11fTPCRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010862uint32_t dot11f_pack_tpc_request(tpAniSirGlobal pCtx,
10863 tDot11fTPCRequest *pFrm, uint8_t *pBuf,
10864 uint32_t nBuf, uint32_t *pnConsumed);
10865uint32_t dot11f_get_packed_tpc_request_size(tpAniSirGlobal pCtx,
10866 tDot11fTPCRequest *pFrm,
10867 uint32_t *pnNeeded);
10868
10869#ifdef __cplusplus
10870} /* End extern "C". */
10871#endif /* C++ */
10872
10873typedef struct sDot11fTimingAdvertisementFrame{
10874 tDot11fFfTimeStamp TimeStamp;
10875 tDot11fFfCapabilities Capabilities;
10876 tDot11fIECountry Country;
10877 tDot11fIEPowerConstraints PowerConstraints;
10878 tDot11fIETimeAdvertisement TimeAdvertisement;
10879 tDot11fIEExtCap ExtCap;
10880 tDot11fIEVendor1IE Vendor1IE;
10881 tDot11fIEVendor3IE Vendor3IE;
10882} tDot11fTimingAdvertisementFrame;
10883
10884#define DOT11F_TIMINGADVERTISEMENTFRAME (41)
10885
10886#ifdef __cplusplus
10887extern "C" {
10888#endif /* C++ */
10889
10890uint32_t dot11f_unpack_timing_advertisement_frame(tpAniSirGlobal pCtx,
10891 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010892 tDot11fTimingAdvertisementFrame * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010893uint32_t dot11f_pack_timing_advertisement_frame(tpAniSirGlobal pCtx,
10894 tDot11fTimingAdvertisementFrame *pFrm, uint8_t *pBuf,
10895 uint32_t nBuf, uint32_t *pnConsumed);
10896uint32_t dot11f_get_packed_timing_advertisement_frame_size(tpAniSirGlobal pCtx,
10897 tDot11fTimingAdvertisementFrame *pFrm,
10898 uint32_t *pnNeeded);
10899
10900#ifdef __cplusplus
10901} /* End extern "C". */
10902#endif /* C++ */
10903
10904typedef struct sDot11fVHTGidManagementActionFrame{
10905 tDot11fFfCategory Category;
10906 tDot11fFfAction Action;
10907 tDot11fFfVhtMembershipStatusArray VhtMembershipStatusArray;
10908 tDot11fFfVhtUserPositionArray VhtUserPositionArray;
10909} tDot11fVHTGidManagementActionFrame;
10910
10911#define DOT11F_VHTGIDMANAGEMENTACTIONFRAME (42)
10912
10913#ifdef __cplusplus
10914extern "C" {
10915#endif /* C++ */
10916
10917uint32_t dot11f_unpack_vht_gid_management_action_frame(tpAniSirGlobal pCtx,
10918 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010919 tDot11fVHTGidManagementActionFrame * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010920uint32_t dot11f_pack_vht_gid_management_action_frame(tpAniSirGlobal pCtx,
10921 tDot11fVHTGidManagementActionFrame *pFrm, uint8_t *pBuf,
10922 uint32_t nBuf, uint32_t *pnConsumed);
10923uint32_t dot11f_get_packed_vht_gid_management_action_frame_size(tpAniSirGlobal pCtx,
10924 tDot11fVHTGidManagementActionFrame *pFrm,
10925 uint32_t *pnNeeded);
10926
10927#ifdef __cplusplus
10928} /* End extern "C". */
10929#endif /* C++ */
10930
10931typedef struct sDot11fWMMAddTSRequest{
10932 tDot11fFfCategory Category;
10933 tDot11fFfAction Action;
10934 tDot11fFfDialogToken DialogToken;
10935 tDot11fFfStatusCode StatusCode;
10936 tDot11fIEWMMTSPEC WMMTSPEC;
10937 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet;
10938} tDot11fWMMAddTSRequest;
10939
10940#define DOT11F_WMMADDTSREQUEST (43)
10941
10942#ifdef __cplusplus
10943extern "C" {
10944#endif /* C++ */
10945
10946uint32_t dot11f_unpack_wmm_add_ts_request(tpAniSirGlobal pCtx,
10947 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010948 tDot11fWMMAddTSRequest * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010949uint32_t dot11f_pack_wmm_add_ts_request(tpAniSirGlobal pCtx,
10950 tDot11fWMMAddTSRequest *pFrm, uint8_t *pBuf,
10951 uint32_t nBuf, uint32_t *pnConsumed);
10952uint32_t dot11f_get_packed_wmm_add_ts_request_size(tpAniSirGlobal pCtx,
10953 tDot11fWMMAddTSRequest *pFrm,
10954 uint32_t *pnNeeded);
10955
10956#ifdef __cplusplus
10957} /* End extern "C". */
10958#endif /* C++ */
10959
10960typedef struct sDot11fWMMAddTSResponse{
10961 tDot11fFfCategory Category;
10962 tDot11fFfAction Action;
10963 tDot11fFfDialogToken DialogToken;
10964 tDot11fFfStatusCode StatusCode;
10965 tDot11fIEWMMTSPEC WMMTSPEC;
10966 tDot11fIEESETrafStrmMet ESETrafStrmMet;
10967} tDot11fWMMAddTSResponse;
10968
10969#define DOT11F_WMMADDTSRESPONSE (44)
10970
10971#ifdef __cplusplus
10972extern "C" {
10973#endif /* C++ */
10974
10975uint32_t dot11f_unpack_wmm_add_ts_response(tpAniSirGlobal pCtx,
10976 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053010977 tDot11fWMMAddTSResponse * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080010978uint32_t dot11f_pack_wmm_add_ts_response(tpAniSirGlobal pCtx,
10979 tDot11fWMMAddTSResponse *pFrm, uint8_t *pBuf,
10980 uint32_t nBuf, uint32_t *pnConsumed);
10981uint32_t dot11f_get_packed_wmm_add_ts_response_size(tpAniSirGlobal pCtx,
10982 tDot11fWMMAddTSResponse *pFrm,
10983 uint32_t *pnNeeded);
10984
10985#ifdef __cplusplus
10986} /* End extern "C". */
10987#endif /* C++ */
10988
10989typedef struct sDot11fWMMDelTS{
10990 tDot11fFfCategory Category;
10991 tDot11fFfAction Action;
10992 tDot11fFfDialogToken DialogToken;
10993 tDot11fFfStatusCode StatusCode;
10994 tDot11fIEWMMTSPEC WMMTSPEC;
10995} tDot11fWMMDelTS;
10996
10997#define DOT11F_WMMDELTS (45)
10998
10999#ifdef __cplusplus
11000extern "C" {
11001#endif /* C++ */
11002
11003uint32_t dot11f_unpack_wmm_del_ts(tpAniSirGlobal pCtx,
11004 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053011005 tDot11fWMMDelTS * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080011006uint32_t dot11f_pack_wmm_del_ts(tpAniSirGlobal pCtx,
11007 tDot11fWMMDelTS *pFrm, uint8_t *pBuf,
11008 uint32_t nBuf, uint32_t *pnConsumed);
11009uint32_t dot11f_get_packed_wmm_del_ts_size(tpAniSirGlobal pCtx,
11010 tDot11fWMMDelTS *pFrm,
11011 uint32_t *pnNeeded);
11012
11013#ifdef __cplusplus
11014} /* End extern "C". */
11015#endif /* C++ */
11016
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011017typedef struct sDot11faddba_req{
Kiran Kumar Lokere40875852018-01-15 12:36:19 -080011018 tDot11fFfCategory Category;
11019 tDot11fFfAction Action;
11020 tDot11fFfDialogToken DialogToken;
11021 tDot11fFfaddba_param_set addba_param_set;
11022 tDot11fFfba_timeout ba_timeout;
11023 tDot11fFfba_start_seq_ctrl ba_start_seq_ctrl;
11024 tDot11fIEaddba_extn_element addba_extn_element;
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011025} tDot11faddba_req;
11026
11027#define DOT11F_ADDBA_REQ (46)
11028
11029#ifdef __cplusplus
11030extern "C" {
11031#endif /* C++ */
11032
11033uint32_t dot11f_unpack_addba_req(tpAniSirGlobal pCtx,
11034 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053011035 tDot11faddba_req * pFrm, bool append_ie);
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011036uint32_t dot11f_pack_addba_req(tpAniSirGlobal pCtx,
11037 tDot11faddba_req *pFrm, uint8_t *pBuf,
11038 uint32_t nBuf, uint32_t *pnConsumed);
11039uint32_t dot11f_get_packed_addba_req_size(tpAniSirGlobal pCtx,
11040 tDot11faddba_req *pFrm,
11041 uint32_t *pnNeeded);
11042
11043#ifdef __cplusplus
11044} /* End extern "C". */
11045#endif /* C++ */
11046
11047typedef struct sDot11faddba_rsp{
Kiran Kumar Lokere40875852018-01-15 12:36:19 -080011048 tDot11fFfCategory Category;
11049 tDot11fFfAction Action;
11050 tDot11fFfDialogToken DialogToken;
11051 tDot11fFfStatus Status;
11052 tDot11fFfaddba_param_set addba_param_set;
11053 tDot11fFfba_timeout ba_timeout;
11054 tDot11fIEaddba_extn_element addba_extn_element;
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011055} tDot11faddba_rsp;
11056
11057#define DOT11F_ADDBA_RSP (47)
11058
11059#ifdef __cplusplus
11060extern "C" {
11061#endif /* C++ */
11062
11063uint32_t dot11f_unpack_addba_rsp(tpAniSirGlobal pCtx,
11064 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053011065 tDot11faddba_rsp * pFrm, bool append_ie);
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011066uint32_t dot11f_pack_addba_rsp(tpAniSirGlobal pCtx,
11067 tDot11faddba_rsp *pFrm, uint8_t *pBuf,
11068 uint32_t nBuf, uint32_t *pnConsumed);
11069uint32_t dot11f_get_packed_addba_rsp_size(tpAniSirGlobal pCtx,
11070 tDot11faddba_rsp *pFrm,
11071 uint32_t *pnNeeded);
11072
11073#ifdef __cplusplus
11074} /* End extern "C". */
11075#endif /* C++ */
11076
11077typedef struct sDot11fdelba_req{
11078 tDot11fFfCategory Category;
11079 tDot11fFfAction Action;
11080 tDot11fFfdelba_param_set delba_param_set;
11081 tDot11fFfReason Reason;
11082} tDot11fdelba_req;
11083
11084#define DOT11F_DELBA_REQ (48)
11085
11086#ifdef __cplusplus
11087extern "C" {
11088#endif /* C++ */
11089
11090uint32_t dot11f_unpack_delba_req(tpAniSirGlobal pCtx,
11091 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053011092 tDot11fdelba_req * pFrm, bool append_ie);
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011093uint32_t dot11f_pack_delba_req(tpAniSirGlobal pCtx,
11094 tDot11fdelba_req *pFrm, uint8_t *pBuf,
11095 uint32_t nBuf, uint32_t *pnConsumed);
11096uint32_t dot11f_get_packed_delba_req_size(tpAniSirGlobal pCtx,
11097 tDot11fdelba_req *pFrm,
11098 uint32_t *pnNeeded);
11099
11100#ifdef __cplusplus
11101} /* End extern "C". */
11102#endif /* C++ */
11103
Ankit Guptaf42c3c22016-10-06 15:27:10 -070011104typedef struct sDot11fext_channel_switch_action_frame{
Abhishek Singh518323d2015-10-19 17:42:01 +053011105 tDot11fFfCategory Category;
11106 tDot11fFfAction Action;
11107 tDot11fFfext_chan_switch_ann_action ext_chan_switch_ann_action;
Vignesh Viswanathan93b7f702017-12-19 17:48:45 +053011108 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
Abhishek Singh518323d2015-10-19 17:42:01 +053011109} tDot11fext_channel_switch_action_frame;
11110
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011111#define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME (49)
Abhishek Singh518323d2015-10-19 17:42:01 +053011112
11113#ifdef __cplusplus
11114extern "C" {
11115#endif /* C++ */
11116
11117uint32_t dot11f_unpack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx,
11118 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053011119 tDot11fext_channel_switch_action_frame * pFrm, bool append_ie);
Abhishek Singh518323d2015-10-19 17:42:01 +053011120uint32_t dot11f_pack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx,
11121 tDot11fext_channel_switch_action_frame *pFrm, uint8_t *pBuf,
11122 uint32_t nBuf, uint32_t *pnConsumed);
11123uint32_t dot11f_get_packed_ext_channel_switch_action_frame_size(tpAniSirGlobal pCtx,
11124 tDot11fext_channel_switch_action_frame *pFrm,
11125 uint32_t *pnNeeded);
11126
11127#ifdef __cplusplus
11128} /* End extern "C". */
11129#endif /* C++ */
11130
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080011131typedef struct sDot11fht2040_bss_coexistence_mgmt_action_frame{
11132 tDot11fFfCategory Category;
11133 tDot11fFfAction Action;
11134 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence;
11135 tDot11fIEht2040_bss_intolerant_report ht2040_bss_intolerant_report;
11136} tDot11fht2040_bss_coexistence_mgmt_action_frame;
11137
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011138#define DOT11F_HT2040_BSS_COEXISTENCE_MGMT_ACTION_FRAME (50)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080011139
11140#ifdef __cplusplus
11141extern "C" {
11142#endif /* C++ */
11143
11144uint32_t dot11f_unpack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx,
11145 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053011146 tDot11fht2040_bss_coexistence_mgmt_action_frame * pFrm, bool append_ie);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080011147uint32_t dot11f_pack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx,
11148 tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm, uint8_t *pBuf,
11149 uint32_t nBuf, uint32_t *pnConsumed);
11150uint32_t dot11f_get_packed_ht2040_bss_coexistence_mgmt_action_frameSize(tpAniSirGlobal pCtx,
11151 tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm,
11152 uint32_t *pnNeeded);
11153
11154#ifdef __cplusplus
11155} /* End extern "C". */
11156#endif /* C++ */
11157
Abhishek Singh5695e2a2016-10-28 10:39:12 +053011158typedef struct sDot11fp2p_oper_chan_change_confirm{
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011159 tDot11fFfCategory Category;
Abhishek Singh5695e2a2016-10-28 10:39:12 +053011160 tDot11fFfp2p_action_oui p2p_action_oui;
11161 tDot11fFfp2p_action_subtype p2p_action_subtype;
11162 tDot11fFfDialogToken DialogToken;
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011163 tDot11fIEHTCaps HTCaps;
11164 tDot11fIEVHTCaps VHTCaps;
11165 tDot11fIEOperatingMode OperatingMode;
Abhishek Singh5695e2a2016-10-28 10:39:12 +053011166} tDot11fp2p_oper_chan_change_confirm;
11167
Krishna Kumaar Natarajan48a6b4c2017-01-06 16:30:55 -080011168#define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (51)
Abhishek Singh5695e2a2016-10-28 10:39:12 +053011169
11170#ifdef __cplusplus
11171extern "C" {
11172#endif /* C++ */
11173
11174uint32_t dot11f_unpack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx,
11175 uint8_t *pBuf, uint32_t nBuf,
Selvaraj, Sridharcfe65022017-04-15 13:21:31 +053011176 tDot11fp2p_oper_chan_change_confirm * pFrm, bool append_ie);
Abhishek Singh5695e2a2016-10-28 10:39:12 +053011177uint32_t dot11f_pack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx,
11178 tDot11fp2p_oper_chan_change_confirm *pFrm, uint8_t *pBuf,
11179 uint32_t nBuf, uint32_t *pnConsumed);
11180uint32_t dot11f_get_packed_p2p_oper_chan_change_confirmSize(tpAniSirGlobal pCtx,
11181 tDot11fp2p_oper_chan_change_confirm *pFrm,
11182 uint32_t *pnNeeded);
11183
11184#ifdef __cplusplus
11185} /* End extern "C". */
11186#endif /* C++ */
11187
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080011188#endif /* DOT11F_H */