blob: c5f84b35e859bd3d5f87961261c62e32d5f98baf [file] [log] [blame]
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07001/*
2 * Copyright (c) 2006-2007 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
Kiet Lama7f454d2014-07-24 12:04:06 -070023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -070026 */
27
28/**
29 * \file dot11f.frms
30 *
31 * \brief Primary 'frames' file for the MAC parser
32 *
33 *
34 * This file defines several 802.11 frames (along with their associated
35 * constituents) in a little language called "frames". When run through the
36 * 'framesc' program, it will generate C code for working with these frames:
37 * C structs representing the 802.11 frame together with functions for
38 * packing & unpacking them.
39 *
40 * For more information on the "frames" language, run 'framesc --help'...
41 *
42 *
43 */
44
45
46// Tell framesc what types to use for...
47%8-bit-type tANI_U8 // 8,
48%16-bit-type tANI_U16 // 16,
49%32-bit-type tANI_U32 // & 32-bit unsigned integral types. These can also
50 // be specified on the command line.
51
52// Define some mnemonic constants; these are just for our use with the frames
53// files we're compiling. IOW, they won't result in any C code being
54// emitted.
55
56const EID_SSID = 0;
57const EID_SUPP_RATES = 1;
58const EID_FH_PARAM_SET = 2;
59const EID_DS_PARAM_SET = 3;
60const EID_CF_PARAM_SET = 4;
61const EID_TIM = 5;
62const EID_IBSS_PARAM_SET = 6;
63const EID_COUNTRY = 7;
64const EID_FH_PATTERN = 8;
65const EID_FH_PATT_TABLE = 9;
66const EID_REQUEST = 10;
67const EID_QBSS_LOAD = 11;
68const EID_EDCA_PARAM_SET = 12;
69const EID_TSPEC = 13;
70const EID_TCLAS = 14;
71const EID_SCHEDULE = 15;
72const EID_CHALLENGE_TEXT = 16;
73const EID_POWER_CONSTRAINTS = 32;
74const EID_POWER_CAPABILITY = 33;
75const EID_TPC_REQUEST = 34;
76const EID_TPC_REPORT = 35;
77const EID_SUPPORTED_CHANNELS = 36;
78const EID_CHANNEL_SWITCH_ANN = 37;
79const EID_MEAS_REQUEST = 38;
80const EID_MEAS_REPORT = 39;
81const EID_QUIET = 40;
82const EID_ERP_INFO = 42;
83const EID_TS_DELAY = 43;
84const EID_TCLASS_PROC = 44;
85const EID_HT_CAPABILITIES = 45;
86const EID_QOS_CAPABILITY = 46;
87const EID_RSN = 48;
88const EID_EXT_SUPP_RATES = 50;
89const EID_AP_CHAN_REPORT = 51;
90const EID_NEIGHBOR_REPORT = 52;
91const EID_RCPI = 53;
92const EID_FT_MOBILITY_DOMAIN = 54;
93const EID_FT_INFO = 55;
94const EID_TIMEOUT_INTERVAL = 56;
95const EID_FT_RIC_DATA = 57;
96const EID_SUPPORTED_OPER_CLASSES = 59;
Abhishek Singh15431c42017-10-25 15:43:02 +053097const EID_EXT_CHAN_SWITCH = 60;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -070098const EID_HT_INFO = 61;
Abhishek Singh15431c42017-10-25 15:43:02 +053099const EID_SEC_CHAN_OFFSET = 62;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -0700100const EID_RSNI = 65;
101const EID_RRM_MEAS_PILOT_TX_INFO = 66;
102const EID_WAPI = 68;
103const EID_RRM_ENABLED_CAPS = 70;
104const EID_MULTIPLE_BSSID = 71;
Hardik Kantilal Patel402f8a02014-11-10 18:35:34 +0530105const EID_20_40_BSS_COEXISTENCE = 72;
106const EID_20_40_BSS_INTOLERANT_REPORT= 73;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -0700107const EID_OBSS_SCAN_PARAMETERS = 74;
108const EID_FT_RIC_DESCRIPTOR = 75;
109const EID_LINK_IDENTIFIER = 101;
110const EID_PTI_CONTROL = 105;
111const EID_PU_BUFFER_STATUS = 106;
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -0700112const EID_QOS_MAP_SET = 110;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -0700113const EID_ESE_SPECIFIC = 150;
114const EID_ESE_CCKM_SPECIFIC = 156;
115const EID_VHT_CAPABILITIES = 191;
116const EID_VHT_OPERATION_ELEMENT = 192;
117const EID_VHT_EXT_BSS_LOAD = 193;
118const EID_AID = 197;
119const EID_EXT_CAP = 127;
120const EID_OPERATING_MODE = 199;
121const EID_WIDER_BW_CHANNEL_SWITCH_ANN= 194;
122const EID_VENDOR_SPECIFIC = 221;
123
124const SIR_MAC_PROP_EXT_RATES_TYPE = 0;
125const SIR_MAC_PROP_AP_NAME_TYPE = 1;
126const SIR_MAC_PROP_HCF_TYPE = 2;
127const SIR_MAC_PROP_WDS_TYPE = 3;
128const SIR_MAC_PROP_BP_IND_TYPE = 4;
129const SIR_MAC_PROP_NEIGHBOR_BSS_TYPE = 5;
130const SIR_MAC_PROP_LOAD_INFO_TYPE = 6;
131const SIR_MAC_PROP_ASSOC_TYPE = 7;
132const SIR_MAC_PROP_LOAD_BALANCE_TYPE = 8;
133const SIR_MAC_PROP_LL_ATTR_TYPE = 9;
134const SIR_MAC_PROP_CAPABILITY = 10;
135const SIR_MAC_PROP_VERSION = 11;
136const SIR_MAC_PROP_EDCAPARAMS = 12;
137const SIR_MAC_PROP_TITAN = 14;
138const SIR_MAC_PROP_CHANNEL_SWITCH = 15;
139const SIR_MAC_PROP_QUIET_BSS = 16;
140const SIR_MAC_PROP_TRIG_STA_BK_SCAN = 17;
141const SIR_MAC_PROP_TAURUS = 18;
142
143const ANI_WDS_INFO_MAX_LENGTH = 64;
144const SIR_MAC_MAX_NUMBER_OF_RATES = 12;
145const HT_MAX_SUPPORTED_MCS_SET = 16;
146
147/////////////////////////////////////////////////////////////////////////////
148// Wi-Fi Protected Setup TLV Identifiers //
149// WSC Version 2.0.0 Table 28 //
150/////////////////////////////////////////////////////////////////////////////
151/////////////////////////////////////////////////////////////////////////////
152// Wi-Fi Simple Configuration TLV Identifiers //
153// WFA Vendor Extension Subelements //
154/////////////////////////////////////////////////////////////////////////////
155const TLV_VERSION2 = 0;
156const TLV_AUTHORIZED_MAC = 1;
157const TLV_NETWORK_KEY_SHAREABLE = 2;
158const TLV_REQUEST_TO_ENROLL = 3;
159const TLV_SETTINGS_DELAY_TIME = 4;
160
161const TLV_VERSION = 0x104A;
162const TLV_WI_FI_SIMPLE_CONFIG_STATE = 0x1044;
163const TLV_AP_SETUP_LOCKED = 0x1057;
164const TLV_SELECTED_REGISTRAR_CONFIG_METHODS = 0x1053;
165const TLV_DEVICE_PASSWORD_ID = 0x1012;
166const TLV_UUID_E = 0x1047;
167const TLV_UUID_R = 0x1048;
168const TLV_RF_BANDS = 0x103C;
169const TLV_REQUEST_TYPE = 0x103A;
170const TLV_RESPONSE_TYPE = 0x103B;
171const TLV_CONFIG_METHODS = 0x1008;
172const TLV_PRIMARY_DEVICE_TYPE = 0x1054;
173const TLV_ASSOCIATION_STATE = 0x1002;
174const TLV_CONFIGURATION_ERROR = 0x1009;
175const TLV_MANUFACTURER = 0x1021;
176const TLV_MODEL_NAME = 0x1023;
177const TLV_MODEL_NUMBER = 0x1024;
178const TLV_SERIAL_NUMBER = 0x1042;
179const TLV_DEVICE_NAME = 0x1011;
180const TLV_SELECTED_REGISTRAR = 0x1041;
181const TLV_VENDOR_EXTENSION = 0x1049;
182const TLV_REQUESTED_DEVICE_TYPE = 0x106A;
183
184/////////////////////////////////////////////////////////////////////////////
185// Wi-Fi Direct/P2P TLV Identifiers //
186/////////////////////////////////////////////////////////////////////////////
187const TLV_P2P_STATUS = 0;
188const TLV_MINOR_REASON_CODE = 1;
189const TLV_P2P_CAPABILITY = 2;
190const TLV_P2P_DEVICE_ID = 3;
191const TLV_P2P_GROUP_OWNER_INTENT = 4;
192const TLV_CONFIGURATION_TIMEOUT = 5;
193const TLV_LISTEN_CHANNEL = 6;
194const TLV_P2P_GROUP_BSSID = 7;
195const TLV_EXTENDED_LISTEN_TIMING = 8;
196const TLV_INTENDED_P2P_INTERFACE_ADDRESS = 9;
197const TLV_P2P_MANAGEABILITY = 10;
198const TLV_CHANNEL_LIST = 11;
199const TLV_NOTICE_OF_ABSENCE = 12;
200const TLV_P2P_DEVICE_INFO = 13;
201const TLV_P2P_GROUP_INFO = 14;
202const TLV_P2P_GROUP_ID = 15;
203const TLV_P2P_INTERFACE = 16;
204const TLV_OPERATING_CHANNEL = 17;
205const TLV_INVITATION_FLAGS = 18;
206const TLV_P2P_VENDOR_SPECIFIC = 221;
207
208/////////////////////////////////////////////////////////////////////////////
209// Fixed Fields
210
211FF AuthAlgo (2) // C.f. Sec. 7.3.1.1
212{
213 algo, 2;
214}
215
216FF AuthSeqNo (2) // 7.3.1.2
217{
218 no, 2;
219}
220
221FF BeaconInterval (2) // 7.3.1.3
222{
223 interval, 2;
224}
225
226FF Capabilities (2) // 7.3.1.4
227{
228 {
229 ess: 1;
230 ibss: 1;
231 cfPollable: 1;
232 cfPollReq: 1;
233 privacy: 1;
234 shortPreamble: 1;
235 pbcc: 1;
236 channelAgility: 1;
237 spectrumMgt: 1;
238 qos: 1;
239 shortSlotTime: 1;
240 apsd: 1;
241 rrm: 1;
242 dsssOfdm: 1;
243 delayedBA: 1;
244 immediateBA: 1;
245 }
246}
247
248FF CurrentAPAddress(6) // 7.3.1.5
249{
250 mac[6];
251}
252
253FF ListenInterval (2) // 7.3.1.6
254{
255 interval, 2;
256}
257
258FF Reason (2) // 7.3.1.7
259{
260 code, 2;
261}
262
263FF AID (2) // 7.3.1.8
264{
265 associd, 2;
266}
267
268FF Status (2) // 7.3.1.9
269{
270 status, 2;
271}
272
273FF TimeStamp (8) // 7.3.1.10
274{
275 timestamp, 8;
276}
277
278FF Category (1) // 7.3.1.11
279{
280 category, 1;
281}
282
283FF Action (1) // 7.3.1.11
284{
285 action, 1;
286}
287
288FF TransactionId (2) // 7.3.1.11
289{
290 transId[2];
291}
292
293FF DialogToken (1) // 7.3.1.12
294{
295 token, 1;
296}
297
298FF StatusCode (1) // WMM Spec 2.2.10
299{
300 statusCode, 1;
301}
302
303FF OperatingMode (1)
304{
305 {
306 //Operating Mode field
307 chanWidth: 2;
308 reserved: 2;
309 rxNSS: 3;
310 rxNSSType: 1;
311 }
312}
313FF AddBAParameterSet (2) // 7.3.1.14
314{
315 {
316 amsduSupported: 1;
317 policy: 1;
318 tid: 4;
319 bufferSize: 10;
320 }
321}
322
323FF BATimeout (2) // 7.3.1.15
324{
325 timeout, 2;
326}
327
328FF BAStartingSequenceControl (2) // 7.2.1.7
329{
330 {
331 fragNumber: 4;
332 ssn: 12;
333 }
334}
335
336FF DelBAParameterSet (2) // 7.3.1.16
337{
338 {
339 reserved: 11;
340 initiator: 1;
341 tid: 4;
342 }
343}
344
345FF SMPowerModeSet (1) //7.3.1.25
346{
347 {
348 PowerSave_En: 1;
349 Mode: 1;
350 reserved: 6;
351 }
352}
353
354FF TSInfo (3) // 7.3.2.30
355{
356 {
357 traffic_type: 1;
358 tsid: 4;
359 direction: 2;
360 access_policy: 2;
361 aggregation: 1;
362 psb: 1;
363 user_priority: 3;
364 tsinfo_ack_pol: 2;
365 schedule: 1;
366 unused: 15;
367 }
368}
369
370FF NumOfRepetitions (2)
371{
372 repetitions, 2;
373}
374
375FF TxPower (1)
376{
377 txPower, 1;
378}
379
380FF MaxTxPower (1)
381{
382 maxTxPower, 1;
383}
384FF TPCEleID (1)
385{
386 TPCId, 1;
387}
388FF TPCEleLen (1)
389{
390 TPCLen, 1;
391}
392FF LinkMargin (1)
393{
394 linkMargin, 1;
395}
396FF RxAntennaId (1)
397{
398 antennaId, 1;
399}
400FF TxAntennaId (1)
401{
402 antennaId, 1;
403}
404FF RCPI (1)
405{
406 rcpi, 1;
407}
408FF RSNI (1)
409{
410 rsni, 1;
411}
412
413FF P2POUI (4)
414{
415 oui, 4;
416}
417
418FF P2POUISubType (1)
419{
420 ouiSubtype, 1;
421}
422
Abhishek Singh00b71972016-01-07 10:51:04 +0530423FF RMCOUI (3)
424{
425 oui[3];
426}
427
428FF MagicCode (6)
429{
430 magic[6];
431}
432
433FF RMCVersion (1)
434{
435 version, 1;
436}
437
438FF RMCDialogToken (4)
439{
440 token, 4;
441}
442
443FF Ruler (6)
444{
445 mac[6];
446}
447
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -0700448FF VhtMembershipStatusArray(8) // 8.4.1.51
449{
450 membershipStatusArray[8];
451}
452
453FF VhtUserPositionArray(16) // 8.4.1.52
454{
455 userPositionArray[16];
456}
457
Abhishek Singh15431c42017-10-25 15:43:02 +0530458FF ext_chan_switch_ann_action(4)
459{
460 {
461 switch_mode: 8;
462 op_class: 8;
463 new_channel: 8;
464 switch_count: 8;
465 }
466}
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -0700467
468/////////////////////////////////////////////////////////////////////////////
469// TLVs //
470/////////////////////////////////////////////////////////////////////////////
471
472/**
473 * \brief Version
474 *
475 * WPS 1.0h
476 * Version specifies the Easy Setup version. The one-byte field is broken
477 * into a four-bit major part using the top MSBs and four-bit minor part
478 * using the LSBs. As an example, version 3.2 would be 0x32.
479 *
480 * WSC 2.0.0
481 * Deprecated Version mechanism. This attribute is always set to value 0x10
482 * (version 1.0) for backwards compatibility. Version 1.0h of the specification
483 * did not fully describe the version negotiation mechanism and version 2.0
484 * introduced a new subelement (Version2) for indicating the version number
485 * to avoid potential interoperability issues with deployed 1.0h-based devices.
486 *
487 */
488
489TLV Version( TLV_VERSION ) ( 2 : 2 ) MSB
490{
491 {
492 minor: 4;
493 major: 4;
494 }
495}
496
497/// Wi-Fi Protected Setup State
498TLV WPSState( TLV_WI_FI_SIMPLE_CONFIG_STATE ) ( 2 : 2 ) MSB
499{
500 state, 1;
501}
502
503/**
504 * \brief AP Setup Locked
505 *
506 *
507 * This variable indicates that the AP has entered a state in which it will
508 * refuse to allow an external Registrar to attempt to run the Registration
509 * Protocol using the AP?s PIN (with the AP acting as Enrollee). The AP
510 * should enter this state if it believes a brute force attack is underway
511 * against the AP?s PIN.
512 *
513 * When the AP is in this state, it MUST continue to allow other Enrollees to
514 * connect and run the Registration Protocol with any external Registrars or
515 * the AP's built-in Registrar (if any). It is only the use of the AP' PIN
516 * for adding external Registrars that is disabled in this state.
517 *
518 * The AP Setup Locked state can be reset to FALSE through an authenticated
519 * call to SetAPSettings. APs may provide other implementation-specific
520 * methods of resetting the AP Setup Locked state as well.
521 *
522 *
523 */
524
525TLV APSetupLocked( TLV_AP_SETUP_LOCKED ) ( 2 : 2 ) MSB
526{
527 fLocked, 1;
528}
529
530/**
531 * \brief Selected Registrar Config Methods
532 *
533 *
534 * This attribute has the same values that Config Methods have. It is used in
535 * Probe Response messages to convey the Config Methods of the selected
536 * Registrar.
537 *
538 *
539 */
540
541TLV SelectedRegistrarConfigMethods ( TLV_SELECTED_REGISTRAR_CONFIG_METHODS ) ( 2 : 2 ) MSB
542{
543 methods, 2;
544}
545
546/**
547 * \brief UUID-E
548 *
549 *
550 * The universally unique identifier (UUID) element is a unique GUID
551 * generated by the Enrollee. It uniquely identifies an operational device
552 * and should survive reboots and resets. The UUID is provided in binary
553 * format. If the device also supports UPnP, then the UUID corresponds to the
554 * UPnP UUID.
555 *
556 *
557 */
558
559TLV UUID_E ( TLV_UUID_E ) ( 2 : 2 ) MSB
560{
561 uuid[ 16 ];
562}
563
564/**
565 * \brief UUID-R
566 *
567 *
568 * The universally unique identifier (UUID) element is a unique GUID
569 * generated by the Registrar. It uniquely identifies an operational device
570 * and should survive reboots and resets. The UUID is provided in binary
571 * format. If the device also supports UPnP, then the UUID corresponds to the
572 * UPnP UUID.
573 *
574 *
575 */
576
577TLV UUID_R ( TLV_UUID_R ) ( 2 : 2 ) MSB
578{
579 uuid[ 16 ];
580}
581
582/**
583 * \brief RF Bands
584 *
585 *
586 \code
587
588 0x01 2.4GHz
589 0x02 5.0GHz
590
591 \endcode
592 *
593 *
594 */
595
596TLV RFBands ( TLV_RF_BANDS ) ( 2 : 2 ) MSB
597{
598 bands, 1;
599}
600
601
602/**
603 * \brief Selected Registrar
604 *
605 *
606 * This field indicates that a Registrar has been selected by a user and that
607 * an Enrollee should proceed with setting up an 802.1X uncontrolled data
608 * port with the Registrar.
609 *
610 *
611 */
612
613TLV SelectedRegistrar ( TLV_SELECTED_REGISTRAR ) ( 2 : 2 ) MSB
614{
615 selected, 1;
616}
617
618/**
619 * \brief Config Methods
620 *
621 *
622 * The Config Methods Data component lists the configuration methods the
623 * Enrollee or Registrar supports. The list is a bitwise OR of values from
624 * the table below. In addition to Config Methods, APs and STAs that support
625 * the UPnP Management Interface must support the Permitted Config Methods
626 * attribute, which is used to control the Config Methods that are enabled on
627 * that AP.
628 *
629 \code
630
631 Value Hardware Interface
632 0x0001 USBA (Flash Drive)
633 0x0002 Ethernet
634 0x0004 Label
635 0x0008 Display
636 0x0010 External NFC Token
637 0x0020 Integrated NFC Token
638 0x0040 NFC Interface
639 0x0080 PushButton
640 0x0100 Keypad
641
642 \endcode
643 *
644 *
645 */
646
647TLV ConfigMethods ( TLV_CONFIG_METHODS ) ( 2 : 2 ) MSB
648{
649 methods, 2;
650}
651
652/**
653 * \brief Association State
654 *
655 *
656 * The Association State component shows the configuration and previous
657 * association state of the wireless station when sending a Discovery
658 * request.
659 *
660 \code
661
662 Association State Description
663 0 Not Associated
664 1 Connection Success
665 2 Configuration Failure
666 3 Association Failure
667 4 IP Failure
668
669 \endcode
670 *
671 *
672 */
673
674TLV AssociationState ( TLV_ASSOCIATION_STATE ) ( 2 : 2 ) MSB
675{
676 state, 2;
677}
678
679/**
680 * \brief Configuration Error
681 *
682 *
683 * The Configuration Error component shows the result of the device
684 * attempting to configure itself and to associate with the WLAN.
685 *
686 \code
687
688 Configuration Error Description
689 0 No Error
690 1 OOB Interface Read Error
691 2 Decryption CRC Failure
692 3 2.4 channel not supported
693 4 5.0 channel not supported
694 5 Signal too weak
695 6 Network auth failure
696 7 Network association failure
697 8 No DHCP response
698 9 Failed DHCP config
699 10 IP address conflict
700 11 Couldn't connect to Registrar
701 12 Multiple PBC sessions detected
702 13 Rogue activity suspected
703 14 Device busy
704 15 Setup locked
705 16 Message Timeout
706 17 Registration Session Timeout
707 18 Device Password Auth Failure
708
709 \endcode
710 *
711 * The Device busy error is returned if the sending device is unable to
712 * respond to the request due to some internal conflict or resource
713 * contention issue. For example, if a device is only capable of performing a
714 * single instance of the Registration Protocol at a time, it may return this
715 * error in response to attempts to start another instance in the middle of
716 * an active session.
717 *
718 *
719 */
720
721TLV ConfigurationError ( TLV_CONFIGURATION_ERROR ) ( 2 : 2 ) MSB
722{
723 error, 2;
724}
725
726TLV Manufacturer ( TLV_MANUFACTURER ) ( 2 : 2 ) MSB
727{
728 name[ 0..64 ];
729}
730
731TLV ModelName ( TLV_MODEL_NAME ) ( 2 : 2 ) MSB
732{
733 text[ 0..32 ];
734}
735
736TLV ModelNumber ( TLV_MODEL_NUMBER ) ( 2 : 2 ) MSB
737{
738 text[ 0..32 ];
739}
740
741TLV SerialNumber ( TLV_SERIAL_NUMBER ) ( 2 : 2 ) MSB
742{
743 text[ 0..32 ];
744}
745
746TLV DeviceName ( TLV_DEVICE_NAME ) ( 2 : 2 ) MSB
747{
748 text[ 0..32 ];
749}
750
751/**
752 * \brief Device Password ID
753 *
754 *
755 * This attribute is used to identify a device password. There are six
756 * predefined values and ten reserved values. If the Device Password ID is
757 * Default, the Enrollee should use its PIN password (from the label or
758 * display). This password may correspond to the label, display, or a
759 * user-defined password that has been configured to replace the original
760 * device password.
761 *
762 * User-specified indicates that the user has overridden the password with a
763 * manually selected value. Machine-specified indicates that the original
764 * PIN password has been overridden by a strong, machinegenerated device
765 * password value. The Rekey value indicates that the device's 256-bit
766 * rekeying password will be used. The PushButton value indicates that the
767 * PIN is the all-zero value reserved for the PushButton Configuration
768 * method.
769 *
770 * The Registrar-specified value indicates a PIN that has been obtained from
771 * the Registrar (via a display or other out-of-band method). This value may
772 * be further augmented with the optional 'Identity' attribute in M1. This
773 * augmentation is useful when multiple predefined UserID/PIN pairs have been
774 * established by a Registrar such as an authenticator used for Hotspot
775 * access. If the Device Password ID in M1 is not one of the predefined or
776 * reserved values, it corresponds to a password given to the Registrar as an
777 * OOB Device Password.
778 *
779 \code
780
781 Value Description
782
783 0x0000 Default (PIN)
784 0x0001 User-specified
785 0x0002 Machine-specified
786 0x0003 Rekey
787 0x0004 PushButton
788 0x0005 Registrar-specified
789 0x0006 - 0x000F Reserved
790
791 \endcode
792 *
793 *
794 */
795
796TLV DevicePasswordID ( TLV_DEVICE_PASSWORD_ID ) ( 2 : 2 ) MSB
797{
798 id, 2;
799}
800
801
802/**
803 * \brief Primary Device Type
804 *
805 *
806 * This attribute contains the primary type of the device. Its format
807 * follows:
808 *
809 \code
810
811 0 1 2 3
812 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
813 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
814 | Attribute ID | Length |
815 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
816 | Category ID | OUI (1-2) |
817 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
818 | OUI (3-4) | Sub Category ID |
819 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
820
821 \endcode
822 *
823 * Vendor-specific sub-categories are designated by setting the OUI to the
824 * value associated with that vendor. Note that a four-byte subdivided OUI
825 * is used. For the predefined values, the Wi-Fi Alliance OUI of 00 50 F2 04
826 * is used. The predefined values for Category ID and Sub Category ID are
827 * provided in the next table. There is no way to indicate a vendor-specific
828 * main device category. The OUI applies only to the interpretation of the
829 * Sub Category. If a vendor does not use sub categories for their OUI, the
830 * three-byte OUI occupies the first three bytes of the OUI field and the
831 * fourth byte is set to zero.
832 *
833 *
834 \code
835
836 Category ID Value Sub Category ID Value
837 Computer 1 PC 1
838 Server 2
839 Media Center 3
840 Input Device 2
841 Printers, Scanners, Printer 1
842 Faxes and Copiers 3 Scanner 2
843 Camera 4 Digital Still Camera 1
844 Storage 5 NAS 1
845 Network AP 1
846 Infrastructure 6 Router 2
847 Switch 3
848 Displays 7 Television 1
849 Electronic Picture Frame 2
850 Projector 3
851 Multimedia Devices 8 DAR 1
852 PVR 2
853 MCX 3
854 Gaming Devices 9 Xbox 1
855 Xbox360 2
856 Playstation 3
857 Telephone 10 Windows Mobile 1
858
859 \endcode
860 *
861 *
862 */
863
864TLV PrimaryDeviceType ( TLV_PRIMARY_DEVICE_TYPE ) ( 2 : 2 ) MSB
865{
866 primary_category, 2;
867 oui[ 4 ];
868 sub_category, 2;
869}
870
871
872/**
873 * \brief Request Type
874 *
875 *
876 * The Request Type component specifies the mode in which the device will
877 * operate in for this setup exchange. If the device is an Enrollee, it may
878 * send only discovery messages or it may also request that the Registrar
879 * proceed with opening a data connection. This protocol allows Enrollees to
880 * more efficiently discover devices on the network.
881
882 * If the device indicates that it intends to engage setup either as a
883 * Registrar or an Enrollee, the Access Point continues to indicate that it
884 * will operate as an AP in the response. The Request Type attribute is
885 * carried throughout the 802.1X data channel setup process in the Wi-Fi
886 * Protected Setup IE. There are two sub-types of Registrars: WLAN Manager
887 * Registrar indicates that this Registrar intends to manage the AP or STA
888 * settings using UPnP. It will derive a UPnP AP or STA Management key. The
889 * ordinary Registrar type indicates that this Registrar does not intend to
890 * subsequently manage the Enrollee's settings. APs must not derive AP
891 * Management Keys for an ordinary Registrar. If a Registrar does not intend
892 * to be a WLAN Manager Registrar, it should set the Request Type to
893 * Registrar. Doing so avoids needlessly consuming resources on the AP.
894
895 \code
896
897 Request Type Value Description
898 0x00 Enrollee, Info only
899 0x01 Enrollee, open 802.1X
900 0x02 Registrar
901 0x03 WLAN Manager Registrar
902
903 \endcode
904 *
905 *
906 */
907
908TLV RequestType ( TLV_REQUEST_TYPE ) ( 2 : 2 ) MSB
909{
910 reqType, 1;
911}
912
913/**
914 * \brief Response Type
915 *
916 *
917 * The Response Type component specifies the operational mode of the
918 * device for this setup exchange. The Response Type IE is carried
919 * throughout the 802.1X data channel setup process.
920
921 \code
922
923 Response Type Value Description
924 0x00 Enrollee, Info only
925 0x01 Enrollee, open 802.1X
926 0x02 Registrar
927 0x03 AP
928
929\endcode
930 *
931 *
932 */
933
934TLV ResponseType ( TLV_RESPONSE_TYPE ) ( 2 : 2 ) MSB
935{
936 resType, 1;
937}
938
939
940///////////////////////////////////////////////////////////////////////////
941// WiFi Direct/P2P TLVs //
942///////////////////////////////////////////////////////////////////////////
943
944/**
945 * \brief P2P Status Attribute
946 */
947
948TLV P2PStatus ( TLV_P2P_STATUS ) ( 1 : 2 ) LSB
949{
950 status, 1;
951}
952
953
954/**
955 * \brief Minor Reason Code Attribute
956 */
957
958TLV MinorReasonCode ( TLV_MINOR_REASON_CODE ) ( 1 : 2 ) LSB
959{
960 minorReasonCode, 1;
961}
962
963
964/**
965 * \brief P2P Capability Attribute
966 */
967
968TLV P2PCapability ( TLV_P2P_CAPABILITY ) ( 1 : 2 ) LSB
969{
970 deviceCapability, 1;
971 groupCapability, 1;
972}
973
974
975/**
976 * \brief P2P Device Id Attribute
977 */
978
979TLV P2PDeviceId ( TLV_P2P_DEVICE_ID ) ( 1 : 2 ) LSB
980{
981 P2PDeviceAddress[6];
982}
983
984
985/**
986 * \brief Group Owner Intent Attribute
987 */
988
989TLV GOIntent ( TLV_P2P_GROUP_OWNER_INTENT ) ( 1 : 2 ) LSB
990{
991 GOIntent, 1;
992}
993
994
995/**
996 * \brief Configuration Timeout Attribute
997 */
998
999TLV ConfigurationTimeout ( TLV_CONFIGURATION_TIMEOUT ) ( 1 : 2 ) LSB
1000{
1001 GOConfigTimeout, 1;
1002 CLConfigTimeout, 1;
1003}
1004
1005
1006/**
1007 * \brief Listen Channel Attribute
1008 */
1009
1010TLV ListenChannel ( TLV_LISTEN_CHANNEL ) ( 1 : 2 ) LSB
1011{
1012 countryString[3];
1013 regulatoryClass, 1;
1014 channel, 1;
1015}
1016
1017
1018/**
1019 * \brief P2P Group BSSID Attribute
1020 */
1021
1022TLV P2PGroupBssid ( TLV_P2P_GROUP_BSSID ) ( 1 : 2 ) LSB
1023{
1024 P2PGroupBssid[6];
1025}
1026
1027
1028/**
1029 * \brief Extended Listen Attribute
1030 */
1031
1032TLV ExtendedListenTiming ( TLV_EXTENDED_LISTEN_TIMING ) ( 1 : 2 ) LSB
1033{
1034 availibilityPeriod, 2;
1035 availibilityInterval, 2;
1036}
1037
1038
1039/**
1040 * \brief Intended P2P Interface Address Attribute
1041 */
1042
1043TLV IntendedP2PInterfaceAddress ( TLV_INTENDED_P2P_INTERFACE_ADDRESS ) ( 1 : 2 ) LSB
1044{
1045 P2PInterfaceAddress[6];
1046}
1047
1048
1049/**
1050 * \brief P2P Manageability Attribute
1051 */
1052
1053TLV P2PManageability ( TLV_P2P_MANAGEABILITY ) ( 1 : 2 ) LSB
1054{
1055 manageability, 1;
1056}
1057
1058
1059/**
1060 * \brief ChannelList Attribute
1061 */
1062
1063TLV ChannelList ( TLV_CHANNEL_LIST ) ( 1 : 2 ) LSB
1064{
1065 countryString[3];
1066 channelList[0..251];
1067}
1068
1069
1070/**
1071 * \brief Notice of Absence
1072 */
1073
1074TLV NoticeOfAbsence ( TLV_NOTICE_OF_ABSENCE ) ( 1 : 2 ) LSB
1075{
1076 index, 1;
1077 CTSWindowOppPS, 1;
1078 NoADesc[0..36];
1079}
1080
1081/**
1082 * \brief P2P Device Info Attribute
1083 */
1084
1085TLV P2PDeviceInfo ( TLV_P2P_DEVICE_INFO ) ( 1 : 2 ) LSB
1086{
1087 P2PDeviceAddress[6];
1088 configMethod, 2 , FLIPBYTEORDER;
1089 primaryDeviceType[8];
1090 MANDATORYTLV DeviceName;
1091}
1092
1093
1094/**
1095 * \brief P2P Group Info Attribute
1096 */
1097
1098TLV P2PGroupInfo ( TLV_P2P_GROUP_INFO ) ( 1 : 2 ) LSB
1099{
1100 P2PClientInfoDesc[0..1024];
1101}
1102
1103
1104/**
1105 * \brief P2P Group Id Attribute
1106 */
1107
1108TLV P2PGroupId ( TLV_P2P_GROUP_ID ) ( 1 : 2 ) LSB
1109{
1110 deviceAddress[6];
1111 ssid[0..32];
1112}
1113
1114
1115/**
1116 * \brief P2P Interface Attribute
1117 */
1118
1119TLV P2PInterface ( TLV_P2P_INTERFACE ) ( 1 : 2 ) LSB
1120{
1121 P2PDeviceAddress[6];
1122}
1123
1124
1125/**
1126 * \brief Operating Channel Attribute
1127 */
1128
1129TLV OperatingChannel ( TLV_OPERATING_CHANNEL ) ( 1 : 2 ) LSB
1130{
1131 countryString[3];
1132 regulatoryClass, 1;
1133 channel, 1;
1134}
1135
1136
1137/**
1138 * \brief Invitation Flags Attribute
1139 */
1140
1141TLV InvitationFlags ( TLV_INVITATION_FLAGS ) ( 1 : 2 ) LSB
1142{
1143 invitationFlags, 1;
1144}
1145
1146/**
1147 * \brief Vendor Extension
1148 *
1149 * This variable permits vendor extensions in the Wi-Fi Simple
1150 * Configuration TLV framework. The Vendor Extension figure
1151 * illustrates the implementation of vendor extensions. Vendor
1152 * ID is the SMI network management private enterprise code
1153 *
1154 * +-----------+----------------------+
1155 * | Vendor ID | Vendor Data |
1156 * +-----------+----------------------+
1157 * |<--- 3 --->|<----- 1 - 1021 ----->|
1158 *
1159 */
1160
1161TLV VendorExtension ( TLV_VENDOR_EXTENSION ) ( 2 : 2 ) MSB
1162{
1163 /*
1164 * vendorId is the SMI network management private enterprise code.
1165 * WFA Vendor ID 0x00372A
1166 *
1167 */
1168 vendorId[ 3 ];
1169
1170 /**
1171 * \breif Version2
1172 *
1173 * The Version2 field specifies the version Wi-Fi Simple
1174 * Configuration implemented by the device sending this attribute.
1175 * The one-byte field is broken into a four-bit major part using
1176 * the top MSBs and four-bit minor part using the LSBs. As an example,
1177 * version 3.2 would be 0x32. This subelement was added in the
1178 * specification version 2.0 and if the subelement is not included
1179 * in a message, the transmitter of the message is assumed to
1180 * use version 1.0.
1181 *
1182 */
1183 OPTIONALTLV TLV Version2 ( TLV_VERSION2 ) ( 1 : 1 ) MSB
1184 {
1185 {
1186 minor: 4;
1187 major: 4;
1188 }
1189 }
1190 /**
1191 * \brief AuthorizedMACs
1192 *
1193 * This subelement contains a list of Enrollee MAC addresses (each
1194 * being six bytes in length) that have been registered to start WSC.
1195 * The AP includes this field in Beacon and Probe Response frames so
1196 * Enrollees can tell if they have been registered to start WSC. There
1197 * may be multiple Enrollees active on the network, but not all of them have
1198 * been registered to start WSC. This element allows an Enrollee to detect
1199 * if they should start WSC with the AP. The AuthorizedMACs field augments
1200 * the use of the Selected Registrar.
1201 *
1202 */
1203 OPTIONALTLV TLV AuthorizedMACs ( TLV_AUTHORIZED_MAC ) ( 1 : 1 ) MSB
1204 {
1205 mac[6];
1206 }
1207
1208 /**
1209 * \brief Request to Enroll
1210 *
1211 * This optional subelement in the WSC IE in Probe Request or M1 indicates
1212 * the desire to enroll in the network by setting its value to TRUE. If the
1213 * Registrar gets this subelement it can use this as a trigger that a device
1214 * wants to enroll (maybe an indication can be shown to the user). The device
1215 * must set it to FALSE after the registration protocol completion.
1216 *
1217 */
1218 OPTIONALTLV TLV RequestToEnroll( TLV_REQUEST_TO_ENROLL ) ( 1 : 1 ) MSB
1219 {
1220 req, 1;
1221 }
1222}
1223
1224/**
1225 * \brief Requested Device Type
1226 *
1227 * This attribute contains the requested device type of a Wi-Fi
1228 * Direct device.
1229 *
1230 * This attribute allows a device to specify the Primary Device Type
1231 * or the Secondary Device Type of other devices it is interested in.
1232 * Only a device that receives a Probe Request containing a WSC IE with
1233 * this attribute and with a Primary Device Type or Secondary Device Type
1234 * that matches the Requested Device Type will respond with a Probe Response.
1235 *
1236 * Its format and contents is identical to the 'Primary Device Type'.
1237 *
1238 * Both the Category ID and Sub Category ID can be used as a filter. If only
1239 * looking for devices with a certain Category ID, the OUI and Sub Category ID
1240 * fields will have to be set to zero.
1241 *
1242 */
1243TLV RequestDeviceType ( TLV_REQUESTED_DEVICE_TYPE ) ( 2 : 2 ) MSB
1244{
1245 primary_category, 2;
1246 oui[ 4 ];
1247 sub_category, 2;
1248}
1249
1250/////////////////////////////////////////////////////////////////////////////
1251// Information Elements
1252
1253IE SSID (EID_SSID) // C.f. Sec. 7.3.2.1
1254{
1255 ssid[0..32];
1256}
1257
1258IE SuppRates (EID_SUPP_RATES) // 7.3.2.2
1259{
1260 rates[0..SIR_MAC_MAX_NUMBER_OF_RATES];
1261}
1262
1263IE FHParamSet (EID_FH_PARAM_SET) // 7.3.2.3
1264{
1265 dwell_time, 2;
1266 hop_set, 1;
1267 hop_pattern, 1;
1268 hop_index, 1;
1269}
1270
1271IE DSParams (EID_DS_PARAM_SET) // 7.3.2.4
1272{
1273 curr_channel, 1;
1274}
1275
1276IE CFParams (EID_CF_PARAM_SET) // 7.3.2.5
1277{
1278 cfp_count, 1;
1279 cfp_period, 1;
1280 cfp_maxduration, 2;
1281 cfp_durremaining, 2;
1282}
1283
1284IE TIM (EID_TIM) // 7.3.2.6
1285{
1286 dtim_count, 1;
1287 dtim_period, 1;
1288 bmpctl, 1;
1289 vbmp[1..251];
1290}
1291
1292IE IBSSParams (EID_IBSS_PARAM_SET) // 7.3.2.7
1293{
1294 atim, 2;
1295}
1296
1297IE ChallengeText (EID_CHALLENGE_TEXT) // 7.3.2.8
1298{
1299 text[1..253];
1300}
1301
1302IE RequestedInfo (EID_REQUEST) // 7.3.2.12
1303{
1304 requested_eids[0..255];
1305}
1306
1307IE Country (EID_COUNTRY) // 7.3.2.9
1308{
1309 country[3];
1310 OPTIONAL triplets[3][0..84];
1311}
1312
1313IE FHParams (EID_FH_PATTERN) // 7.3.2.10
1314{
1315 radix, 1;
1316 nchannels, 1;
1317}
1318
1319IE FHPattTable (EID_FH_PATT_TABLE) // 7.3.2.11
1320{
1321 flag, 1;
1322 nsets, 1;
1323 modulus, 1;
1324 offset, 1;
1325 randtable[0..251];
1326}
1327
1328IE ERPInfo (EID_ERP_INFO) // 7.3.2.13
1329{
1330 {
1331 non_erp_present : 1;
1332 use_prot: 1;
1333 barker_preamble: 1;
1334 unused: 5;
1335 }
1336}
1337
1338IE ExtSuppRates (EID_EXT_SUPP_RATES) // 7.3.2.14
1339{
1340 rates[1..SIR_MAC_MAX_NUMBER_OF_RATES];
1341}
1342
1343IE PowerConstraints (EID_POWER_CONSTRAINTS) // 7.3.2.15
1344{
1345 localPowerConstraints, 1;
1346}
1347
1348IE PowerCaps (EID_POWER_CAPABILITY) // 7.3.2.16
1349{
1350 minTxPower, 1;
1351 maxTxPower, 1;
1352}
1353
1354IE TPCRequest (EID_TPC_REQUEST) // 7.3.2.17
1355{ }
1356
1357IE TPCReport (EID_TPC_REPORT) // 7.3.2.18
1358{
1359 tx_power, 1;
1360 link_margin, 1;
1361}
1362
1363IE SuppChannels (EID_SUPPORTED_CHANNELS) // 7.2.3.19
1364{
1365 bands[2][1..48];
1366}
1367
1368IE SuppOperatingClasses (EID_SUPPORTED_OPER_CLASSES)
1369{
1370 classes[1..32];
1371}
1372
1373IE ChanSwitchAnn (EID_CHANNEL_SWITCH_ANN) // 7.3.2.20
1374{
1375 switchMode, 1;
1376 newChannel, 1;
1377 switchCount, 1;
1378}
1379
Abhishek Singh15431c42017-10-25 15:43:02 +05301380IE ext_chan_switch_ann (EID_EXT_CHAN_SWITCH) //9.4.2.53
1381{
1382 switch_mode, 1;
1383 new_reg_class, 1;
1384 new_channel, 1;
1385 switch_count, 1;
1386}
1387
1388IE sec_chan_offset (EID_SEC_CHAN_OFFSET) //9.4.2.20
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07001389{
1390 secondaryChannelOffset, 1;
1391}
1392
1393IE Quiet (EID_QUIET) // 7.3.2.23
1394{
1395 count, 1;
1396 period, 1;
1397 duration, 2;
1398 offset, 2;
1399}
1400
1401IE RSN (EID_RSN) // 7.3.2.25
1402{
1403 // The version is 2 octets, and we only support version 1.
1404 version, 2 MUSTBE 1;
Pragaspathi Thilagarajd1b02df2018-06-26 17:08:05 +05301405 // The next four octets will be the Optional Group Cipher Suite
1406 OPTIONAL gp_cipher_suite[4];
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07001407 // The IE *may* stop here; if there's any more, we should see two more
1408 // octets giving the number of Pairwise Cipher Suites
1409 OPTIONAL pwise_cipher_suite_count, 2;
1410 // I don't see anything in the Standard limiting the number of Pairwise
1411 // Cypher Suites, other than the maximum length of an IE, which limits us
1412 // to 61. However, that seems needlessly wasteful of space.
1413 pwise_cipher_suites[4][0..4] COUNTIS pwise_cipher_suite_count;
1414 // Optional count of AKM suite selectors
Pragaspathi Thilagarajd1b02df2018-06-26 17:08:05 +05301415 OPTIONAL akm_suite_cnt, 2;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07001416 // Again, I see nothing in the Standard explicitly limiting the number of
1417 // AKM suite selectors other than the maximum size of an IE.
Pragaspathi Thilagarajd1b02df2018-06-26 17:08:05 +05301418 akm_suite[4][0..4] COUNTIS akm_suite_cnt;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07001419 OPTIONAL RSN_Cap[2];
1420 // Finally, the IE may contain zero or more PMKIDs:
1421 OPTIONAL pmkid_count, 2;
1422 pmkid[16][0..4] COUNTIS pmkid_count;
1423 OPTIONAL gp_mgmt_cipher_suite[4];
1424}
1425
1426IE RSNOpaque (EID_RSN) // 7.3.2.25
1427{
Pragaspathi Thilagarajac70f7d2018-10-22 17:37:10 +05301428 data[ 0..253 ];
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07001429}
1430
1431IE WAPI (EID_WAPI) // 7.3.2.25
1432{
1433 // The version is 2 octets, and we only support version 1.
1434 version, 2 MUSTBE 1;
1435 // count of AKM suite selectors
1436 akm_suite_count, 2;
1437 // Again, I see nothing in the Standard explicitly limiting the number of
1438 // AKM suite selectors other than the maximum size of an IE.
1439 akm_suites[4][0..4] COUNTIS akm_suite_count;
1440 // we should see two more
1441 // octets giving the number of Unicast Cipher Suites
1442 unicast_cipher_suite_count, 2;
1443 // I don't see anything in the Standard limiting the number of Pairwise
1444 // Cypher Suites, other than the maximum length of an IE, which limits us
1445 // to 61. However, that seems needlessly wasteful of space.
1446 unicast_cipher_suites[4][0..4] COUNTIS unicast_cipher_suite_count;
1447 // The next four octets will be the Multicast Cipher Suite
1448 multicast_cipher_suite[4];
1449 // WAPI capabilities
1450 {
1451 preauth: 1;
1452 reserved: 15;
1453 }
1454 // Finally, the IE may contain zero or more BKIDs:
1455 OPTIONAL bkid_count, 2;
1456 bkid[16][0..4] COUNTIS bkid_count;
1457}
1458
1459IE WAPIOpaque (EID_WAPI) // 7.3.2.25
1460{
1461 data[ 6..253 ];
1462}
1463
1464IE QBSSLoad (EID_QBSS_LOAD) // 7.3.2.28
1465{
1466 stacount, 2;
1467 chautil, 1;
1468 avail, 2;
1469}
1470
1471IE EDCAParamSet (EID_EDCA_PARAM_SET) // 7.3.2.29
1472{
1473 qos, 1; // ToDo: This is a bitfield whose format
1474 // depends on whether this is from an AP
1475 // or a STA, information which I'm not
1476 // sure we have at parse time...
1477 reserved, 1;
1478 {
1479 acbe_aifsn: 4;
1480 acbe_acm: 1;
1481 acbe_aci: 2;
1482 unused1: 1;
1483 }
1484 {
1485 acbe_acwmin: 4;
1486 acbe_acwmax: 4;
1487 }
1488 acbe_txoplimit, 2;
1489 {
1490 acbk_aifsn: 4;
1491 acbk_acm: 1;
1492 acbk_aci: 2;
1493 unused2: 1;
1494 }
1495 {
1496 acbk_acwmin: 4;
1497 acbk_acwmax: 4;
1498 }
1499 acbk_txoplimit, 2;
1500 {
1501 acvi_aifsn: 4;
1502 acvi_acm: 1;
1503 acvi_aci: 2;
1504 unused3: 1;
1505 }
1506 {
1507 acvi_acwmin: 4;
1508 acvi_acwmax: 4;
1509 }
1510 acvi_txoplimit, 2;
1511 {
1512 acvo_aifsn: 4;
1513 acvo_acm: 1;
1514 acvo_aci: 2;
1515 unused4: 1;
1516 }
1517 {
1518 acvo_acwmin: 4;
1519 acvo_acwmax: 4;
1520 }
1521 acvo_txoplimit, 2;
1522}
1523
1524IE TSPEC (EID_TSPEC) // 7.3.2.30
1525{
1526
1527 // TS Info
1528 {
1529 traffic_type: 1;
1530 tsid: 4;
1531 direction: 2;
1532 access_policy: 2;
1533 aggregation: 1;
1534 psb: 1;
1535 user_priority: 3;
1536 tsinfo_ack_pol: 2;
1537 }
1538 {
1539 schedule: 1;
1540 unused: 7;
1541 }
1542
1543 // Nominal MSDU Size
1544 {
1545 size: 15;
1546 fixed: 1;
1547 }
1548
1549 max_msdu_size, 2;
1550 min_service_int, 4;
1551 max_service_int, 4;
1552 inactivity_int, 4;
1553 suspension_int, 4;
1554 service_start_time, 4;
1555 min_data_rate, 4;
1556 mean_data_rate, 4;
1557 peak_data_rate, 4;
1558 burst_size, 4;
1559 delay_bound, 4;
1560 min_phy_rate, 4;
1561 surplus_bw_allowance, 2;
1562 medium_time, 2;
1563
1564} // End IE TSPEC.
1565
1566IE TCLAS (EID_TCLAS) // 7.3.2.31
1567{
1568 user_priority, 1;
1569 classifier_type, 1;
1570 classifier_mask, 1;
1571 UNION info (DISCRIMINATOR classifier_type)
1572 {
1573 EthParams (classifier_type IS 0)
1574 {
1575 source[6];
1576 dest[6];
1577 type, 2;
1578 }
1579 IpParams (classifier_type IS 1)
1580 {
1581 version, 1;
1582 UNION params (DISCRIMINATOR version)
1583 {
1584 IpV4Params (version IS 4)
1585 {
1586 source[4];
1587 dest[4];
1588 src_port, 2;
1589 dest_port, 2;
1590 DSCP, 1;
1591 proto, 1;
1592 reserved, 1;
1593 }
1594 IpV6Params (version IS 6)
1595 {
1596 source[16];
1597 dest[16];
1598 src_port, 2;
1599 dest_port, 2;
1600 flow_label[3];
1601 }
1602 };
1603 }
1604 Params8021dq (classifier_type IS 2)
1605 {
1606 tag_type, 2;
1607 }
1608 };
1609} // End IE TCLASS
1610
1611const EID_RRM_BEACON_REPORTING = 1;
1612const EID_RRM_BCN_REPORTING_DETAIL = 2;
1613
1614IE BeaconReporting (EID_RRM_BEACON_REPORTING)
1615{
1616 reportingCondition, 1;
1617 threshold, 1;
1618}
1619
1620IE BcnReportingDetail (EID_RRM_BCN_REPORTING_DETAIL)
1621{
1622 reportingDetail, 1;
1623}
1624
1625IE APChannelReport (EID_AP_CHAN_REPORT)
1626{
1627 regulatoryClass, 1;
1628 channelList[0..50];
1629}
1630
1631IE MeasurementRequest (EID_MEAS_REQUEST) // 7.3.2.21
1632{
1633 measurement_token, 1;
1634
1635 // Measurement Request Mode
1636 {
1637 parallel: 1;
1638 enable: 1;
1639 request: 1;
1640 report: 1;
1641 durationMandatory: 1;
1642 unused: 3;
1643 }
1644
1645 measurement_type, 1;
1646 UNION measurement_request (DISCRIMINATOR measurement_type)
1647 {
1648 Basic (measurement_type IS 0)
1649 {
1650 channel_no, 1;
1651 meas_start_time[8];
1652 meas_duration, 2;
1653 }
1654 CCA (measurement_type IS 1)
1655 {
1656 channel_no, 1;
1657 meas_start_time[8];
1658 meas_duration, 2;
1659 }
1660 RPIHistogram (measurement_type IS 2)
1661 {
1662 channel_no, 1;
1663 meas_start_time[8];
1664 meas_duration, 2;
1665 }
1666 Beacon (measurement_type IS 5)
1667 {
1668 regClass, 1;
1669 channel, 1;
1670 randomization, 2;
1671 meas_duration, 2;
1672 meas_mode, 1;
1673 BSSID[6];
1674 OPTIE SSID;
1675 OPTIE BeaconReporting;
1676 OPTIE BcnReportingDetail;
1677 OPTIE RequestedInfo;
1678 OPTIE APChannelReport[0..2];
1679 //OPTIONAL vendor_specific[1..239];
1680 }
1681
1682 };
1683}
1684
1685const EID_BCN_REPORT_FRAME_BODY = 1;
1686IE BeaconReportFrmBody (EID_BCN_REPORT_FRAME_BODY)
1687{
1688 reportedFields[0..224];
1689}
1690
1691IE MeasurementReport (EID_MEAS_REPORT) // 7.3.2.22
1692{
1693 token, 1;
1694 // Measurement Report Mode
1695 {
1696 late: 1;
1697 incapable: 1;
1698 refused: 1;
1699 unused: 5;
1700 }
1701 type, 1;
1702 OPTIONAL UNION report (DISCRIMINATOR type)
1703 {
1704 Basic (type IS 0) // 7.3.2.22.1
1705 {
1706 channel, 1;
1707 meas_start_time, 8;
1708 meas_duration, 2;
1709 // Map
1710 {
1711 bss: 1;
1712 ofdm_preamble: 1;
1713 unid_signal: 1;
1714 rader: 1;
1715 unmeasured: 1;
1716 unused: 3;
1717 }
1718 }
1719 CCA (type IS 1)
1720 {
1721 channel, 1;
1722 meas_start_time, 8;
1723 meas_duration, 2;
1724 cca_busy_fraction, 1;
1725 }
1726 RPIHistogram (type IS 2)
1727 {
1728 channel, 1;
1729 meas_start_time, 8;
1730 meas_duration, 2;
1731 rpi0_density, 1;
1732 rpi1_density, 1;
1733 rpi2_density, 1;
1734 rpi3_density, 1;
1735 rpi4_density, 1;
1736 rpi5_density, 1;
1737 rpi6_density, 1;
1738 rpi7_density, 1;
1739 }
1740 Beacon (type IS 5)
1741 {
1742 regClass, 1;
1743 channel, 1;
1744 meas_start_time, 8;
1745 meas_duration, 2;
1746 // reported_frame_info,
1747 {
1748 condensed_PHY: 7;
1749 reported_frame_type: 1;
1750 }
1751 RCPI, 1;
1752 RSNI, 1;
1753 BSSID[6];
1754 antenna_id, 1;
1755 parent_TSF, 4;
1756 OPTIE BeaconReportFrmBody;
1757 //IE vendor_specific
1758 }
1759 };
1760}
1761
1762IE TSDelay (EID_TS_DELAY) // 7.3.2.32
1763{
1764 delay, 4;
1765}
1766
1767IE TCLASSPROC (EID_TCLASS_PROC) // 7.3.2.33
1768{
1769 processing, 1;
1770}
1771
1772IE Schedule (EID_SCHEDULE) // 7.3.2.34
1773{
1774 {
1775 aggregation: 1;
1776 tsid: 4;
1777 direction: 2;
1778 reserved: 9;
1779 }
1780 service_start_time, 4;
1781 service_interval, 4;
1782 max_service_dur, 2;
1783 spec_interval, 2;
1784}
1785
1786IE QOSCapsAp (EID_QOS_CAPABILITY) // 7.3.2.35
1787{
1788 {
1789 count: 4;
1790 qack: 1;
1791 qreq: 1;
1792 txopreq: 1;
1793 reserved: 1;
1794 }
1795}
1796
1797IE QOSCapsStation (EID_QOS_CAPABILITY) // 7.3.2.35
1798{
1799 {
1800 acvo_uapsd: 1;
1801 acvi_uapsd: 1;
1802 acbk_uapsd: 1;
1803 acbe_uapsd: 1;
1804 qack: 1;
1805 max_sp_length: 2;
1806 more_data_ack: 1;
1807 }
1808}
1809
1810IE LinkIdentifier (EID_LINK_IDENTIFIER) // 7.3.2.62
1811{
1812 bssid[6];
1813 InitStaAddr[6];
1814 RespStaAddr[6];
1815}
1816
1817IE WPA (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x01)
1818{
1819 // This IE's first two octets should be interpreted as a version number;
1820 // we only support version 1.
1821 version, 2 MUSTBE 1;
1822 // A four-octet Multicast Cipher may or may not appear next (hence the
1823 // OPTIONAL keyword)
1824 OPTIONAL multicast_cipher[4];
1825 // Optional Unicast Cipher count
1826 OPTIONAL unicast_cipher_count, 2;
1827 // Next comes an array of four-octet Cipher Suite selectors; the COUNTIS
1828 // clause indicates that the actual number of selectors seen is in the
1829 // member 'unicast_cipher_count'.
1830 unicast_ciphers[4][0..4] COUNTIS unicast_cipher_count;
1831 // (Optional) Authentication suites:
1832 OPTIONAL auth_suite_count, 2;
1833 auth_suites[4][0..4] COUNTIS auth_suite_count;
1834 // This field is declared optional as per bugs 15234, 14755, & 14991.
1835 OPTIONAL caps, 2;
1836}
1837
1838IE WPAOpaque (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x01)
1839{
1840 data[ 2..249 ];
1841}
1842
1843IE WMMInfoStation (EID_VENDOR_SPECIFIC) OUI(0x00, 0x50, 0xF2, 0x02, 0x00)
1844{
1845 // This IE contains the QoS Info field when sent from WMM Station
1846 version, 1;
1847 {
1848 acvo_uapsd: 1;
1849 acvi_uapsd: 1;
1850 acbk_uapsd: 1;
1851 acbe_uapsd: 1;
1852 reserved1: 1;
1853 max_sp_length: 2;
1854 reserved2: 1;
1855 }
1856}
1857
1858IE WMMInfoAp (EID_VENDOR_SPECIFIC) OUI(0x00, 0x50, 0xF2, 0x02, 0x00)
1859{
1860 // This IE contains the QoS Info field when sent from WMM AP
1861 version, 1;
1862 {
1863 param_set_count: 4;
1864 reserved: 3;
1865 uapsd: 1;
1866 }
1867}
1868
1869
1870IE WMMParams (EID_VENDOR_SPECIFIC) OUI(0x00, 0x50, 0xF2, 0x02, 0x01)
1871{
1872 version, 1 MUSTBE 1;
1873 qosInfo, 1; // ToDo: This is actually a
1874 // bitfield, but it's format
1875 // varies depending on whether
1876 // the sender is a STA or AP...
1877 reserved2, 1;
1878 {
1879 acbe_aifsn: 4;
1880 acbe_acm: 1;
1881 acbe_aci: 2;
1882 unused1: 1;
1883 }
1884 {
1885 acbe_acwmin: 4;
1886 acbe_acwmax: 4;
1887 }
1888 acbe_txoplimit, 2;
1889 {
1890 acbk_aifsn: 4;
1891 acbk_acm: 1;
1892 acbk_aci: 2;
1893 unused2: 1;
1894 }
1895 {
1896 acbk_acwmin: 4;
1897 acbk_acwmax: 4;
1898 }
1899 acbk_txoplimit, 2;
1900 {
1901 acvi_aifsn: 4;
1902 acvi_acm: 1;
1903 acvi_aci: 2;
1904 unused3: 1;
1905 }
1906 {
1907 acvi_acwmin: 4;
1908 acvi_acwmax: 4;
1909 }
1910 acvi_txoplimit, 2;
1911 {
1912 acvo_aifsn: 4;
1913 acvo_acm: 1;
1914 acvo_aci: 2;
1915 unused4: 1;
1916 }
1917 {
1918 acvo_acwmin: 4;
1919 acvo_acwmax: 4;
1920 }
1921 acvo_txoplimit, 2;
1922}
1923
1924IE WMMTSPEC (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xf2, 0x02, 0x02)
1925{
1926 version, 1 MUSTBE 1;
1927
1928 // TS Info
1929 {
1930 traffic_type: 1;
1931 tsid: 4;
1932 direction: 2;
1933 access_policy: 2;
1934 aggregation: 1;
1935 psb: 1;
1936 user_priority: 3;
1937 tsinfo_ack_pol: 2;
1938 }
1939 {
1940 tsinfo_rsvd: 7;
1941 burst_size_defn: 1;
1942 }
1943
1944 // Nominal MSDU Size
1945 {
1946 size: 15;
1947 fixed: 1;
1948 }
1949
1950 max_msdu_size, 2;
1951 min_service_int, 4;
1952 max_service_int, 4;
1953 inactivity_int, 4;
1954 suspension_int, 4;
1955 service_start_time, 4;
1956 min_data_rate, 4;
1957 mean_data_rate, 4;
1958 peak_data_rate, 4;
1959 burst_size, 4;
1960 delay_bound, 4;
1961 min_phy_rate, 4;
1962 surplus_bw_allowance, 2;
1963 medium_time, 2;
1964
1965} // End IE WMMTSpec.
1966
1967IE WMMCaps (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x05)
1968{
1969 version, 1 MUSTBE 1;
1970 {
1971 reserved: 4;
1972 qack: 1;
1973 queue_request: 1;
1974 txop_request: 1;
1975 more_ack: 1;
1976 }
1977}
1978
1979IE WMMTCLAS (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x06)
1980{
1981 version, 1 MUSTBE 1;
1982
1983 user_priority, 1;
1984 classifier_type, 1;
1985 classifier_mask, 1;
1986 UNION info (DISCRIMINATOR classifier_type)
1987 {
1988 EthParams (classifier_type IS 0)
1989 {
1990 source[6];
1991 dest[6];
1992 type, 2;
1993 }
1994 IpParams (classifier_type IS 1)
1995 {
1996 version, 1;
1997 UNION params (DISCRIMINATOR version)
1998 {
1999 IpV4Params (version IS 4)
2000 {
2001 source[4];
2002 dest[4];
2003 src_port, 2;
2004 dest_port, 2;
2005 DSCP, 1;
2006 proto, 1;
2007 reserved, 1;
2008 }
2009 IpV6Params (version IS 6)
2010 {
2011 source[16];
2012 dest[16];
2013 src_port, 2;
2014 dest_port, 2;
2015 flow_label[3];
2016 }
2017 };
2018 }
2019 Params8021dq (classifier_type IS 2)
2020 {
2021 tag_type, 2;
2022 }
2023 };
2024
2025}
2026
2027IE WMMTCLASPROC (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x07)
2028{
2029 version, 1 MUSTBE 1;
2030 processing, 1;
2031}
2032
2033IE WMMTSDelay (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x08)
2034{
2035 version, 1 MUSTBE 1;
2036 delay, 4;
2037}
2038
2039IE WMMSchedule (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x09)
2040{
2041 version, 1 MUSTBE 1;
2042
2043 {
2044 aggregation: 1;
2045 tsid: 4;
2046 direction: 2;
2047 reserved: 9;
2048 }
2049
2050 service_start_time, 4;
2051 service_interval, 4;
2052 max_service_dur, 2;
2053 spec_interval, 2;
2054}
2055
2056IE ESERadMgmtCap (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x01)
2057{
2058
2059 mgmt_state, 1;
2060
2061 {
2062 mbssid_mask: 3;
2063 reserved: 5;
2064 }
2065
2066}
2067
Abhishek Singh74037df2017-07-20 11:08:56 +05302068IE hs20vendor_ie (EID_VENDOR_SPECIFIC) OUI (0x50, 0x6F, 0x9A, 0x10)
2069{
2070 /* hotspot_configurations */
2071 {
2072 dgaf_dis: 1;
2073 hs_id_present: 2;
2074 reserved: 1;
2075 release_num: 4;
2076 }
2077 OPTIONAL UNION hs_id (DISCRIMINATOR hs_id_present)
2078 {
2079 pps_mo (hs_id_present IS 1)
2080 {
2081 pps_mo_id, 2;
2082 }
2083 anqp_domain (hs_id_present IS 2)
2084 {
2085 anqp_domain_id, 2;
2086 }
2087 };
2088}
2089
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07002090IE ESETrafStrmMet (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x07)
2091{
2092 tsid, 1;
2093 state, 1;
2094 msmt_interval, 2;
2095}
2096
2097IE ESETrafStrmRateSet (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x08)
2098{
2099 tsid, 1;
2100 tsrates[0..8];
2101}
2102
2103IE ESEVersion (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x03)
2104{
2105 version, 1;
2106}
2107
2108IE ESETxmitPower (EID_ESE_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x00)
2109{
2110 power_limit, 1;
2111 reserved, 1;
2112}
2113
2114IE ESECckmOpaque (EID_ESE_CCKM_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x00)
2115{
2116 data[ 6..20 ];
2117}
2118
2119IE RRMEnabledCap (EID_RRM_ENABLED_CAPS)
2120{
2121 //Capability bitmap
2122 {
2123 LinkMeasurement: 1;
2124 NeighborRpt: 1;
2125 parallel: 1;
2126 repeated: 1;
2127 BeaconPassive: 1;
2128 BeaconActive: 1;
2129 BeaconTable: 1;
2130 BeaconRepCond: 1;
2131 }
2132 {
2133 FrameMeasurement: 1;
2134 ChannelLoad: 1;
2135 NoiseHistogram: 1;
2136 statistics: 1;
2137 LCIMeasurement: 1;
2138 LCIAzimuth: 1;
2139 TCMCapability: 1;
2140 triggeredTCM: 1;
2141 }
2142 {
2143 APChanReport: 1;
2144 RRMMIBEnabled: 1;
2145 operatingChanMax: 3;
2146 nonOperatinChanMax: 3;
2147 }
2148 {
2149 MeasurementPilot: 3;
2150 MeasurementPilotEnabled: 1;
2151 NeighborTSFOffset: 1;
2152 RCPIMeasurement: 1;
2153 RSNIMeasurement: 1;
2154 BssAvgAccessDelay: 1;
2155 }
2156 {
2157 BSSAvailAdmission: 1;
2158 AntennaInformation: 1;
2159 reserved: 6;
2160 }
2161}
2162
2163IE MeasurementPilot (EID_RRM_MEAS_PILOT_TX_INFO)
2164{
2165 measurementPilot, 1;
2166 vendorSpecific[0..255]; //Should be an IE. But currently only one level of nesting allowed. Can ignore for now.
2167}
2168
2169IE MultiBssid (EID_MULTIPLE_BSSID)
2170{
2171 maxBSSIDIndicator, 1;
2172 vendorSpecific[0..255];
2173}
2174
2175IE OBSSScanParameters (EID_OBSS_SCAN_PARAMETERS)
2176{
2177 obssScanPassiveDwell, 2;
2178 obssScanActiveDwell, 2;
2179 bssChannelWidthTriggerScanInterval, 2;
2180 obssScanPassiveTotalPerChannel, 2;
2181 obssScanActiveTotalPerChannel, 2;
2182 bssWidthChannelTransitionDelayFactor, 2;
2183 obssScanActivityThreshold, 2;
2184}
2185
Hardik Kantilal Patel402f8a02014-11-10 18:35:34 +05302186IE HT2040BSSCoexistence (EID_20_40_BSS_COEXISTENCE)
2187{
2188 // 20/40 BSS Coexistence Information
2189 {
2190 infoRequest: 1;
2191 fortyMHzIntolerant: 1;
2192 twentyMHzBssWidthReq: 1;
2193 obssScanExemptionReq: 1;
2194 obssScanExemptionGrant: 1;
2195 unused: 3;
2196 }
2197}
2198
2199IE HT2040BSSIntolerantReport (EID_20_40_BSS_INTOLERANT_REPORT)
2200{
2201 operatingClass, 1;
2202 channelList[0..50];
2203}
2204
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07002205const EID_RRM_NBR_RPT_TSF = 1;
2206const EID_RRM_NBR_CD_COUNTRY = 2;
2207const EID_RRM_NBR_MSMT_PILOT_TX_INFO = 66;
2208
2209IE NeighborReport (EID_NEIGHBOR_REPORT)
2210{
2211 bssid[6];
2212 //Bssid Info
2213 {
2214 APReachability: 2;
2215 Security: 1;
2216 KeyScope: 1;
2217 //Capabilities
2218 SpecMgmtCap: 1;
2219 QosCap: 1;
2220 apsd: 1;
2221 rrm: 1;
2222 }
2223 //Capabilities contd.
2224 {
2225 DelayedBA: 1;
2226 ImmBA: 1;
2227 //Capabilities end.
2228 MobilityDomain: 1;
2229 reserved: 5;
2230 }
2231
2232 reserved1, 2; //part of BSSID Info.
2233
2234 regulatoryClass, 1;
2235 channel, 1;
2236 PhyType, 1;
2237 OPTIE IE TSFInfo (EID_RRM_NBR_RPT_TSF)
2238 {
2239 TsfOffset, 2;
2240 BeaconIntvl, 2;
2241 }
2242 OPTIE IE CondensedCountryStr (EID_RRM_NBR_CD_COUNTRY)
2243 {
2244 countryStr[2];
2245 }
2246 OPTIE IE MeasurementPilot; // (EID_RRM_NBR_MSMT_PILOT_TX_INFO)
2247// {
2248// measurementPilot, 1;
2249// vendorSpecific[0..255]; //Should be an IE. But currently only one level of nesting allowed. Can ignore for now.
2250// }
2251 OPTIE IE RRMEnabledCap;
2252 OPTIE IE MultiBssid;
2253 //Ignoring vendor specific.
2254}
2255
2256IE RCPIIE (EID_RCPI)
2257{
2258 rcpi, 1;
2259}
2260
2261IE RSNIIE (EID_RSNI)
2262{
2263 rsni, 1;
2264}
2265
2266IE WFATPC (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x08, 0x00)
2267{
2268 txPower, 1;
2269 linkMargin, 1;
2270}
2271
2272IE MobilityDomain (EID_FT_MOBILITY_DOMAIN)
2273{
2274 MDID, 2;
2275 //FT Capability and policy
2276 {
2277 overDSCap: 1;
2278 resourceReqCap: 1;
2279 reserved: 6;
2280 }
2281}
2282const SUB_EID_FT_R1KH_ID = 1;
2283const SUB_EID_FT_GTK = 2;
2284const SUB_EID_FT_R0KH_ID = 3;
2285const SUB_EID_FT_IGTK = 4;
2286IE FTInfo (EID_FT_INFO)
2287{
2288 // MicControl, 2;
2289 {
2290 reserved: 8;
2291 IECount: 8;
2292 }
2293 MIC[16];
2294 Anonce[32];
2295 Snonce[32];
2296
2297 OPTIE IE R1KH_ID (SUB_EID_FT_R1KH_ID)
2298 {
2299 PMK_R1_ID[6];
2300 }
2301
2302 OPTIE IE GTK (SUB_EID_FT_GTK)
2303 {
2304 //Key Info
2305 {
2306 keyId: 2;
2307 reserved: 14;
2308 }
2309 keyLength, 1;
2310 RSC[8];
2311 key[5..32];
2312 }
2313
2314 OPTIE IE R0KH_ID (SUB_EID_FT_R0KH_ID)
2315 {
2316 PMK_R0_ID[1..48];
2317 }
2318
2319 OPTIE IE IGTK (SUB_EID_FT_IGTK)
2320 {
2321 //Key Info
2322 keyID[2];
2323 IPN[6];
2324 keyLength, 1;
2325 key[24];
2326 }
2327}
2328
2329IE TimeoutInterval (EID_TIMEOUT_INTERVAL)
2330{
2331 timeoutType, 1;
2332 timeoutValue, 4;
2333}
2334
2335//TODO: need to define this properly.
2336IE RICData (EID_FT_RIC_DATA)
2337{
2338 Identifier, 1;
2339 resourceDescCount, 1;
2340 statusCode, 2;
2341}
2342
2343IE RICDescriptor (EID_FT_RIC_DESCRIPTOR)
2344{
2345 resourceType, 1;
2346 variableData[0..255]; //Block ack param set...TODO:
2347}
2348
2349IE WscIEOpaque (EID_VENDOR_SPECIFIC) OUI ( 0x00, 0x50, 0xF2, 0x04 )
2350{
2351 data[ 2..249 ];
2352}
2353
2354IE P2PIEOpaque (EID_VENDOR_SPECIFIC) OUI ( 0x50, 0x6F, 0x9A, 0x09 )
2355{
2356 data[ 2..249 ];
2357}
2358
2359IE WFDIEOpaque (EID_VENDOR_SPECIFIC) OUI ( 0x50, 0x6F, 0x9A, 0x0A )
2360{
2361 data[ 2..249 ];
2362}
2363
2364IE PTIControl (EID_PTI_CONTROL) // 7.3.2.65
2365{
2366 tid, 1;
2367 sequence_control, 2;
2368}
2369
2370IE PUBufferStatus (EID_PU_BUFFER_STATUS) // 7.3.2.66
2371{
2372 {
2373 ac_bk_traffic_aval: 1;
2374 ac_be_traffic_aval: 1;
2375 ac_vi_traffic_aval: 1;
2376 ac_vo_traffic_aval: 1;
2377 reserved: 4;
2378 }
2379}
2380
2381
2382/////////////////////////////////////////////////////////////////////////////
2383// Airgo Information Elements
2384
2385
2386IE Airgo (EID_VENDOR_SPECIFIC) OUI (0x00, 0x0A, 0xF5)
2387{
2388 // N.B. The fact that these IEs are defined inside the Airgo IE indicates
2389 // that they can *only* occur inside the Airgo IE.
2390
2391 OPTIE IE PropSuppRates (SIR_MAC_PROP_EXT_RATES_TYPE)
2392 {
2393 rates[1..12];
2394 }
2395
2396 OPTIE IE APName (SIR_MAC_PROP_AP_NAME_TYPE)
2397 {
2398 name[1..32];
2399 }
2400
2401 OPTIE IE HCF (SIR_MAC_PROP_HCF_TYPE)
2402 {
2403 enabled, 1;
2404 }
2405
2406 OPTIE IE WDS (SIR_MAC_PROP_WDS_TYPE)
2407 {
2408 wdsData[0..ANI_WDS_INFO_MAX_LENGTH];
2409 }
2410
2411 OPTIE IE BPIndicator (SIR_MAC_PROP_BP_IND_TYPE)
2412 {
2413 indicator, 1;
2414 type, 1;
2415 }
2416
2417
2418 // In Progress: I think SIR_MAC_PROP_NEIGHBOR_BSS_TYPE is going to need a
2419 // custom parser...
2420
2421
2422 OPTIE IE LoadInfo (SIR_MAC_PROP_LOAD_INFO_TYPE) MSB
2423 {
2424 num_stas, 2;
2425 channel_util, 2;
2426 }
2427
2428 OPTIE IE LoadBalance (SIR_MAC_PROP_LOAD_BALANCE_TYPE)
2429 {
2430 bssid[6];
2431 channel, 1;
2432 }
2433
2434 OPTIE IE PropAssocType (SIR_MAC_PROP_ASSOC_TYPE)
2435 {
2436 type, 1;
2437 }
2438
2439 OPTIE IE LLAttr (SIR_MAC_PROP_LL_ATTR_TYPE) MSB
2440 {
2441 defer_threshold, 4;
2442 }
2443
2444 OPTIE IE PropCapability (SIR_MAC_PROP_CAPABILITY)
2445 {
2446 capability, 2;
2447 }
2448
2449 OPTIE IE Version (SIR_MAC_PROP_VERSION)
2450 {
2451 chip_rev, 4;
2452 card_type, 1;
2453 build_version[0..20];
2454 }
2455
2456 OPTIE IE PropEDCAParams (SIR_MAC_PROP_EDCAPARAMS)
2457 {
2458 qos, 1; // ToDo: This is a bitfield whose format
2459 // depends on whether this is from an AP
2460 // or a STA, information which I'm not
2461 // sure we have at parse time...
2462 reserved, 1;
2463
2464 // Best Effort
2465 {
2466 acbe_aifsn: 4;
2467 acbe_acm: 1;
2468 acbe_aci: 2;
2469 unused1: 1;
2470 }
2471 {
2472 acbe_min: 4;
2473 acbe_max: 4;
2474 }
2475 acbe_txoplimit, 2;
2476
2477 // Background
2478 {
2479 acbk_aifsn: 4;
2480 acbk_acm: 1;
2481 acbk_aci: 2;
2482 unused2: 1;
2483 }
2484 {
2485 acbk_min: 4;
2486 acbk_max: 4;
2487 }
2488 acbk_txoplimit, 2;
2489
2490 // Video
2491 {
2492 acvi_aifsn: 4;
2493 acvi_acm: 1;
2494 acvi_aci: 2;
2495 unused3: 1;
2496 }
2497 {
2498 acvi_min: 4;
2499 acvi_max: 4;
2500 }
2501 acvi_txoplimit, 2;
2502
2503 // Voice
2504 {
2505 acvo_aifsn: 4;
2506 acvo_acm: 1;
2507 acvo_aci: 2;
2508 unused4: 1;
2509 }
2510 {
2511 acvo_min: 4;
2512 acvo_max: 4;
2513 }
2514 acvo_txoplimit, 2;
2515
2516 } // End IE PropEDCAParams.
2517
2518 /**
2519 * \ie Titan
2520 *
2521 * \brief Proprietary Next Generation (TITAN) IE structure
2522 *
2523 *
2524 * Based on the setting of the "Titan" proprietary bit in the
2525 * tSirPropIEStruct.capability field (bit #6), this IE will be sent
2526 * appropriately to all the ANIpeers in the following management frames -
2527 *
2528 * - Beacons
2529 * - Assoc Req/Rsp
2530 * - Reassoc Req/Rsp
2531 * - Probe Req/Rsp
2532 *
2533 */
2534
2535 OPTIE IE Titan (SIR_MAC_PROP_TITAN)
2536 {
2537 concat_tcid_bitmap, 1;
2538 compression_tcid_bitmap, 1;
2539
2540 // Identifies the OPERATIONAL state of Channel Bonding
2541 // This info is encoded as a bitmap as follows:
2542 //
2543 // b7 b6 b5 b4 b3 b2 b1 b0
2544 // --------------------------------------
2545 // |CCA_CB |CCA |ICE | AU|CS|U/D| O | A |
2546 // --------------------------------------
2547 // where,
2548 // A - Admin state of CB - [enabled(1)/disabled(0)]
2549 // O - Oper state of CB - [on(1)/off(0)]
2550 // U/D - Indicates where the secondary CB channel is
2551 // parked - Up(1)/Down(0) from the primary
2552 // CS - Channel Switch announcement in progress with
2553 // respect to the secondary CB channel
2554 // CS_on(1)/CS_off(0)
2555 // This applies to an AP only
2556 // AU - Autonomous updates. This indicates to an STA
2557 // that it can send an unsolicited CB Report
2558 // regarding its neighbor BSS during an Assoc/
2559 // ReAssoc REQ.
2560 // AU_on(1)/AU_off(0)
2561 // This applies to an AP only
2562 // ICE - Intelligent Channel Expansion mode enable/disable
2563 // ICE_on(1)/ICE_off(0)
2564 // CCA - CCA mode to be used
2565 // CCA_20MHz(0)/CCA_40MHz(1)
2566 // CCA_CB - channel bonding enable/disable based on cca monitoring
2567 // enable(1)/disable(0)
2568
2569 cb_state, 1;
2570
2571 // Identifies Reverse FCS pattern and state
2572 // This info is encoded as a bitmap as follows:
2573 //
2574 // b7 b6 b5 b4 b3 b2 b1 b0
2575 // ---------------------------------
2576 // | X | X | X | X | P | P | P | O |
2577 // ---------------------------------
2578 // where,
2579 // O - Oper state of Reverse FCS - [on(1)/off(0)]
2580 // P - Identifies the pattern ID to be used
2581 // NOTE - These bits are used only during Assoc Req/Rsp
2582 // management frames. Thus, the pattern ID needs to be
2583 // looked up only during Assoc Req/Rsp. In other words,
2584 // the pattern ID between an AP/STA is negotiated via
2585 // the revFcsState during Assoc Req/Rsp
2586
2587 rev_fcs_state, 1;
2588 }
2589
2590 OPTIE IE PropChannSwitchAnn (SIR_MAC_PROP_CHANNEL_SWITCH)
2591 {
2592 mode, 1;
2593 primary_channel, 1;
2594 sub_band, 1;
2595 channel_switch_count, 1;
2596 }
2597
2598 /**
2599 * \ie PropQuietBSS
2600 *
2601 * \brief Proprietary Quite BSS IE structure
2602 *
2603 *
2604 * Based on the setting of the "Titan" proprietary bit in the
2605 * tSirPropIEStruct.capability field (bit #6), this IE will be sent
2606 * appropriately to all the ANI peers in the following management
2607 * frames
2608 *
2609 * - Beacons
2610 * - Probe Rsp
2611 *
2612 */
2613
2614 OPTIE IE PropQuietBSS (SIR_MAC_PROP_QUIET_BSS)
2615 {
2616 // Indicates the number of TBTT's until the next beacon
2617 // interval during which the next quiet interval will
2618 // start
2619 // 1 - Quiet Interval will start during the beacon
2620 // interval starting at the next TBTT
2621 // 0 - Reserved
2622 quiet_count, 1;
2623
2624 // Shall be set to the number of beacon intervals between
2625 // the start of regularly scheduled quiet intervals
2626 // defined by this Quiet Element
2627 // 0 - No periodic quiet interval is defined
2628 quiet_period, 1;
2629
2630 // Duration of the quiet interval, expressed in TUs
2631 // 1 TU = 1024 microseconds??
2632 quiet_duration, 2;
2633
2634 // Set to the offset of the start of the quiet interval
2635 // from the TBTT specified by the quietCount field,
2636 // expressed in TUs. The value of this offset field will
2637 // be less than one beacon interval
2638 // 1 TU = 1024 microseconds??
2639 quiet_offset, 2;
2640
2641 }
2642
2643 OPTIE IE TriggerStaBgScan (SIR_MAC_PROP_TRIG_STA_BK_SCAN)
2644 {
2645 enable, 1;
2646 }
2647
2648 OPTIE IE Taurus (SIR_MAC_PROP_TAURUS)
2649 {
2650 // TID bitmap indicating the TIDs for which BA is setup.
2651 // bit0 for TID0, bit1 for TID1 and so on.
2652 baTIDBitmap, 2;
2653
2654 // Block Ack Policy: 0-Delayed BA 1-Immediate BA.
2655 // One bit for each TID
2656 baPolicy, 2;
2657
2658 // Buffer size for each AC, in exponential notation.
2659 // 3 bits reserved for each AC.
2660 // bit0-2 for AC0[TID 0 and 3], bit3-5 for AC1[TID 1 and 2]
2661 // and so on.
2662
2663 // TID 8 & 11 will use AC0, TID 9 & 10 will use AC1, so use of AC is
2664 // overloaded. This is done to reduce the size of IE in the beacons.
2665 {
2666 baBufferSize: 12;
2667 rsvd: 4;
2668 }
2669 }
2670
2671} // End IE Airgo.
2672
2673IE VHTCaps (EID_VHT_CAPABILITIES)
2674{
2675 //VHT Capability Info
2676 {
2677 maxMPDULen: 2;
2678 supportedChannelWidthSet: 2;
2679 ldpcCodingCap: 1;
2680 shortGI80MHz: 1;
2681 shortGI160and80plus80MHz: 1;
2682 txSTBC: 1;
2683 rxSTBC: 3;
2684 suBeamFormerCap: 1;
2685 suBeamformeeCap: 1;
2686 csnofBeamformerAntSup: 3;
2687 numSoundingDim: 3;
2688 muBeamformerCap: 1;
2689 muBeamformeeCap: 1;
2690 vhtTXOPPS: 1;
2691 htcVHTCap: 1;
2692 maxAMPDULenExp: 3;
2693 vhtLinkAdaptCap: 2;
2694 rxAntPattern: 1;
2695 txAntPattern: 1;
2696 reserved1: 2;
2697 }
2698 rxMCSMap, 2;
2699 {
2700 rxHighSupDataRate: 13;
2701 reserved2: 3;
2702 }
2703 txMCSMap, 2;
2704 {
2705 txSupDataRate: 13;
2706 reserved3: 3;
2707 }
2708}
2709
2710IE VHTOperation (EID_VHT_OPERATION_ELEMENT)
2711{
2712 chanWidth, 1;
2713 chanCenterFreqSeg1, 1;
2714 chanCenterFreqSeg2, 1;
2715 basicMCSSet, 2;
2716}
2717
2718IE VHTExtBssLoad (EID_VHT_EXT_BSS_LOAD)
2719{
2720 muMIMOCapStaCount, 1;
2721 ssUnderUtil, 1;
2722 FortyMHzUtil, 1;
2723 EightyMHzUtil, 1;
2724 OneSixtyMHzUtil, 1;
2725}
2726
2727IE AID (EID_AID)
2728{
2729 assocId, 2;
2730}
2731
2732IE WiderBWChanSwitchAnn (EID_WIDER_BW_CHANNEL_SWITCH_ANN)
2733{
2734 newChanWidth, 1;
2735 newCenterChanFreq0, 1;
2736 newCenterChanFreq1, 1;
2737}
2738
2739IE ExtCap (EID_EXT_CAP)
2740{
Hu Wangc12631c2016-08-11 09:57:03 +08002741 bytes[1..9];
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07002742}
2743
2744IE HTCaps (EID_HT_CAPABILITIES)
2745{
2746 // HT Capability Info
2747 {
2748 advCodingCap: 1;
2749 supportedChannelWidthSet: 1;
2750 mimoPowerSave: 2;
2751 greenField: 1;
2752 shortGI20MHz: 1;
2753 shortGI40MHz: 1;
2754 txSTBC: 1;
2755 rxSTBC: 2;
2756 delayedBA: 1;
2757 maximalAMSDUsize: 1;
2758 dsssCckMode40MHz: 1;
2759 psmp: 1;
2760 stbcControlFrame: 1;
2761 lsigTXOPProtection: 1;
2762 }
2763 // HT Parameters Info;
2764 {
2765 maxRxAMPDUFactor: 2;
2766 mpduDensity: 3;
2767 reserved1: 3;
2768 }
2769
2770 supportedMCSSet[ HT_MAX_SUPPORTED_MCS_SET ];
2771
2772 // Extended HT Capability Info
2773 {
2774 pco: 1;
2775 transitionTime: 2;
2776 reserved2: 5;
2777 mcsFeedback: 2;
2778 reserved3: 6;
2779 }
2780 // TXBF Capability Info
2781 {
2782 txBF: 1;
2783 rxStaggeredSounding: 1;
2784 txStaggeredSounding: 1;
2785 rxZLF: 1;
2786 txZLF: 1;
2787 implicitTxBF: 1;
2788 calibration: 2;
2789 explicitCSITxBF: 1;
2790 explicitUncompressedSteeringMatrix: 1;
2791 explicitBFCSIFeedback: 3;
2792 explicitUncompressedSteeringMatrixFeedback: 3;
2793 explicitCompressedSteeringMatrixFeedback: 3;
2794 csiNumBFAntennae: 2;
2795 uncompressedSteeringMatrixBFAntennae: 2;
2796 compressedSteeringMatrixBFAntennae: 2;
2797 reserved4: 7;
2798 }
2799 // AS Capability Info
2800 {
2801 antennaSelection: 1;
2802 explicitCSIFeedbackTx: 1;
2803 antennaIndicesFeedbackTx: 1;
2804 explicitCSIFeedback: 1;
2805 antennaIndicesFeedback: 1;
2806 rxAS: 1;
2807 txSoundingPPDUs: 1;
2808 reserved5: 1;
2809 }
2810 //TODO: take it out when generic fix to remove extra bytes in IE is available.
2811 //This is required to interop with Dlink AP which is sending 2 bytes extra in HTInfo IE.
2812 rsvd[0..32];
2813
2814} // End IE HTCaps.
2815
2816IE HTInfo (EID_HT_INFO)
2817{
2818 primaryChannel, 1;
2819
2820 // ahtInfoField1
2821 {
2822 secondaryChannelOffset: 2;
2823 recommendedTxWidthSet: 1;
2824 rifsMode: 1;
2825 controlledAccessOnly: 1;
2826 serviceIntervalGranularity: 3;
2827 }
2828
2829 // ahtInfoField2
2830
2831
2832 // ahtInfoField2
2833 {
2834 opMode: 2;
2835 nonGFDevicesPresent: 1;
2836 transmitBurstLimit: 1;
2837 obssNonHTStaPresent:1;
2838 reserved: 11;
2839 }
2840
2841
2842 // ahtInfoField3
2843 {
2844 basicSTBCMCS: 7;
2845 dualCTSProtection: 1;
2846 secondaryBeacon: 1;
2847 lsigTXOPProtectionFullSupport: 1;
2848 pcoActive: 1;
2849 pcoPhase: 1;
2850 reserved2: 4;
2851 }
2852
2853 basicMCSSet[ HT_MAX_SUPPORTED_MCS_SET ];
2854
2855 //TODO: take it out when generic fix to remove extra bytes in IE is available.
2856 //This is required to interop with Dlink AP which is sending 2 bytes extra in HTInfo IE.
2857 rsvd[0..32];
2858
2859} // End IE HTInfo.
2860
2861
2862IE OperatingMode (EID_OPERATING_MODE)
2863{
2864 { //Operating Mode field
2865 chanWidth: 2;
2866 reserved: 2;
2867 rxNSS: 3;
2868 rxNSSType: 1;
2869 }
2870}
2871
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -07002872IE QosMapSet (EID_QOS_MAP_SET)
2873{
2874 dscp_exceptions[0..60];
2875}
2876
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07002877CONTAINERIE RICDataDesc
2878{
2879 MANDIE RICData;
2880 OPTIE RICDescriptor;
2881 OPTIE TSPEC;
2882 OPTIE TCLAS[0..2];
2883 OPTIE TCLASSPROC;
2884 OPTIE TSDelay;
2885 OPTIE Schedule;
2886 OPTIE WMMTSPEC;
2887 OPTIE WMMTCLAS[0..2];
2888 OPTIE WMMTCLASPROC;
2889 OPTIE WMMTSDelay;
2890 OPTIE WMMSchedule;
2891}
2892
2893/////////////////////////////////////////////////////////////////////////////
2894// MULTIIEs //
2895/////////////////////////////////////////////////////////////////////////////
2896
2897MULTIIE WSC ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 )
2898{
2899 MANDATORYTLV Version; // Must be 0x10
2900 OPTIONALTLV WPSState;
2901 OPTIONALTLV APSetupLocked;
2902 OPTIONALTLV SelectedRegistrarConfigMethods;
2903 OPTIONALTLV UUID_E;
2904 OPTIONALTLV UUID_R;
2905 OPTIONALTLV RFBands;
2906 OPTIONALTLV SelectedRegistrar;
2907 OPTIONALTLV ConfigMethods;
2908 OPTIONALTLV AssociationState;
2909 OPTIONALTLV ConfigurationError;
2910 OPTIONALTLV Manufacturer;
2911 OPTIONALTLV ModelName;
2912 OPTIONALTLV ModelNumber;
2913 OPTIONALTLV SerialNumber;
2914 OPTIONALTLV DeviceName;
2915 OPTIONALTLV DevicePasswordID;
2916 OPTIONALTLV PrimaryDeviceType;
2917 OPTIONALTLV RequestType;
2918 OPTIONALTLV ResponseType;
2919 OPTIONALTLV VendorExtension;
2920 OPTIONALTLV RequestDeviceType;
2921}
2922
2923MULTIIE WscBeacon ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 )
2924{
2925 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11
2926 // = version 1.1, etc.
2927 MANDATORYTLV WPSState; // 1 = unconfigured, 2 =
2928 // configured
2929 OPTIONALTLV APSetupLocked; // Must be included if value
2930 // is TRUE
2931 OPTIONALTLV SelectedRegistrar; // BOOL: indicates if the
2932 // user has recently
2933 // activated a Registrar to
2934 // add an Enrollee.
2935 OPTIONALTLV DevicePasswordID; // Device Password ID
2936 // indicates the method or
2937 // identifies the specific
2938 // password that the
2939 // selected Registrar
2940 // intends to use.
2941 OPTIONALTLV SelectedRegistrarConfigMethods; // This attribute contains
2942 // the config methods active
2943 // on the selected
2944 // Registrar.
2945 OPTIONALTLV UUID_E; // The AP's UUID is provided
2946 // only when the AP is a
2947 // dual-band AP in push
2948 // button mode and
2949 // indicating push button
2950 // mode on both radios
2951 OPTIONALTLV RFBands; // Indicates all RF bands
2952 // available on the AP. A
2953 // dual-band AP must provide
2954 // this attribute.
2955 // WSC 2.0
2956 OPTIONALTLV VendorExtension; // Version2 and AuthorizedMACs
2957
2958} // End Multi-IE WscBeacon.
2959
2960MULTIIE WscAssocReq ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 )
2961{
2962 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11
2963 // = version 1.1, etc.
2964 MANDATORYTLV RequestType; //
2965 //
2966 // WSC 2.0
2967 OPTIONALTLV VendorExtension; // Version2
2968
2969} // End Multi-IE WscAssocReq.
2970
2971
2972MULTIIE WscAssocRes ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 )
2973{
2974 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11
2975 // = version 1.1, etc.
2976 MANDATORYTLV ResponseType; //
2977 //
2978 // WSC 2.0
2979 OPTIONALTLV VendorExtension; // Version2
2980
2981} // End Multi-IE WscAssocRes.
2982
2983MULTIIE WscReassocRes ( 221 ) OUI( 0x00, 0x50, 0xF2, 0x04 )
2984{
2985 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11
2986 // = version 1.1, etc.
2987 MANDATORYTLV ResponseType; //
2988 //
2989 // WSC 2.0
2990 OPTIONALTLV VendorExtension; // Version2
2991
2992} // End Multi-IE WscReassocRes
2993
2994MULTIIE WscProbeReq ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 )
2995{
2996 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11
2997 // = version 1.1, etc.
2998 MANDATORYTLV RequestType; //
2999 //
3000 MANDATORYTLV ConfigMethods; // Configuration methods the
3001 // Enrollee or Registrar
3002 // supports
3003 MANDATORYTLV UUID_E; // unique GUID generated by
3004 // the Enrollee.
3005 MANDATORYTLV PrimaryDeviceType;
3006 MANDATORYTLV RFBands; // Specific RF bands used
3007 // for this message
3008 MANDATORYTLV AssociationState; // Configuration and previous
3009 // association state
3010 MANDATORYTLV ConfigurationError;
3011 MANDATORYTLV DevicePasswordID;
3012
3013 // WSC 2.0
3014 OPTIONALTLV Manufacturer; // Must be included in ver 2.0
3015 // or higher.
3016 OPTIONALTLV ModelName; // Must be included in ver 2.0
3017 // or higher.
3018 OPTIONALTLV ModelNumber; // Must be included in ver 2.0
3019 // or higher.
3020 OPTIONALTLV DeviceName; // Must be included in ver 2.0
3021 // or higher.
3022 OPTIONALTLV VendorExtension; // Version2 and RequestToEntroll
3023
3024 OPTIONALTLV RequestDeviceType; // When a device receives a Probe
3025 // Request containing this type,
3026 // It will only reponse if Primary
3027 // or Secondary Device Type matches.
3028
3029} // End Multi-IE WscProbeReq.
3030
3031MULTIIE WscProbeRes ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 )
3032{
3033 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11
3034 // = version 1.1, etc.
3035 MANDATORYTLV WPSState; // 1 = unconfigured, 2 =
3036 // configured
3037 OPTIONALTLV APSetupLocked; // Must be included if value
3038 // is TRUE
3039 OPTIONALTLV SelectedRegistrar; // BOOL: indicates if the
3040 // user has recently
3041 // activated a Registrar to
3042 // add an Enrollee.
3043 OPTIONALTLV DevicePasswordID; // Device Password ID
3044 // indicates the method or
3045 // identifies the specific
3046 // password that the
3047 // selected Registrar
3048 // intends to use.
3049 OPTIONALTLV SelectedRegistrarConfigMethods; // This attribute contains
3050 // the config methods active
3051 // on the selected
3052 // Registrar.
3053 MANDATORYTLV ResponseType;
3054 MANDATORYTLV UUID_E; // unique identifier of AP
3055 MANDATORYTLV Manufacturer;
3056 MANDATORYTLV ModelName;
3057 MANDATORYTLV ModelNumber;
3058 MANDATORYTLV SerialNumber;
3059 MANDATORYTLV PrimaryDeviceType;
3060 MANDATORYTLV DeviceName; // User-friendly description
3061 // of device
3062 MANDATORYTLV ConfigMethods; // Config Methods corresponds
3063 // to the methods the AP
3064 // supports as an Enrollee
3065 // for adding external
3066 // Registrars.
3067 OPTIONALTLV RFBands; // Indicates all RF bands
3068 // available on the AP. A
3069 // dual-band AP must provide
3070 // this attribute.
3071 // WSC 2.0
3072 OPTIONALTLV VendorExtension; // Version2 and AuthorizedMACs
3073
3074} // WscProbeRes.
3075
3076// This MULTIIE combines the fields from the WSC IEs as they appear in
3077// Beacons *and* in Probe Responses, with the difference that they're all
3078// optional. In our device drivers, we combine Probe Responses and Beacons
3079// into one list, and parse their IEs later (c.f. frame BeaconIEs). Because
3080// the WSC IE differs in those two frames, we'd often see warning messages
3081// about either unexpected fields showing up (if we thought we were parsing a
3082// Beacon, and we in fact had data from a Probe Response) or mandatory fields
3083// missing (if we thought we were parsing a Probe Response, and in fact had
3084// data from a Beacon).
3085
3086// I created this MULTIIE to stuff into the BeaconIEs frames to avoid this.
3087// It's intended to be used on unpack only, and to do so in a very forgiving
3088// way.
3089
3090MULTIIE WscBeaconProbeRes ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 )
3091{
3092 OPTIONALTLV Version; // 0x10 = version 1.0, 0x11
3093 // = version 1.1, etc.
3094 OPTIONALTLV WPSState; // 1 = unconfigured, 2 =
3095 // configured
3096 OPTIONALTLV APSetupLocked; // Must be included if value
3097 // is TRUE
3098 OPTIONALTLV SelectedRegistrar; // BOOL: indicates if the
3099 // user has recently
3100 // activated a Registrar to
3101 // add an Enrollee.
3102 OPTIONALTLV DevicePasswordID; // Device Password ID
3103 // indicates the method or
3104 // identifies the specific
3105 // password that the
3106 // selected Registrar
3107 // intends to use.
3108 OPTIONALTLV SelectedRegistrarConfigMethods; // This attribute contains
3109 // the config methods active
3110 // on the selected
3111 // Registrar.
3112 OPTIONALTLV ResponseType;
3113 OPTIONALTLV UUID_E; // unique identifier of AP
3114 OPTIONALTLV Manufacturer;
3115 OPTIONALTLV ModelName;
3116 OPTIONALTLV ModelNumber;
3117 OPTIONALTLV SerialNumber;
3118 OPTIONALTLV PrimaryDeviceType;
3119 OPTIONALTLV DeviceName; // User-friendly description
3120 // of device
3121 OPTIONALTLV ConfigMethods; // Config Methods corresponds
3122 // to the methods the AP
3123 // supports as an Enrollee
3124 // for adding external
3125 // Registrars.
3126 OPTIONALTLV RFBands; // Indicates all RF bands
3127 // available on the AP. A
3128 // dual-band AP must provide
3129 // this attribute.
3130 // WSC 2.0
3131 OPTIONALTLV VendorExtension; // Version2 and AuthorizedMACs
3132
3133} // WscProbeRes.
3134/////////////////////////////////////////////////////////////////////////////
3135// MULTIIEs //
3136/////////////////////////////////////////////////////////////////////////////
3137
3138MULTIIE P2PBeacon ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3139{
3140 MANDATORYTLV P2PCapability; // Contains P2P Device
3141 // and P2P Group Capability
3142 MANDATORYTLV P2PDeviceId; // Contains P2P Device
3143 // Address
3144 OPTIONALTLV NoticeOfAbsence; // Indicates Notice of
3145 // Absence schedule and
3146 // CT Window
3147
3148} // End P2PBeacon
3149
3150
3151MULTIIE P2PAssocReq ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3152{
3153 MANDATORYTLV P2PCapability; // Contains P2P Device
3154 // and P2P Group Capability
3155 OPTIONALTLV ExtendedListenTiming;
3156 MANDATORYTLV P2PDeviceInfo;
3157
3158} // End P2PAssocReq
3159
3160
3161MULTIIE P2PAssocRes ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3162{
3163 MANDATORYTLV P2PStatus;
3164 OPTIONALTLV ExtendedListenTiming;
3165
3166} // End P2PAssocRes
3167
3168
3169MULTIIE P2PProbeReq ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3170{
3171 MANDATORYTLV P2PCapability;
3172 OPTIONALTLV P2PDeviceId;
3173 MANDATORYTLV ListenChannel;
3174 OPTIONALTLV ExtendedListenTiming;
3175 OPTIONALTLV OperatingChannel;
3176} // End P2PProbeReq
3177
3178
3179MULTIIE P2PProbeRes ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3180{
3181 MANDATORYTLV P2PCapability;
3182 OPTIONALTLV ExtendedListenTiming;
3183 OPTIONALTLV NoticeOfAbsence;
3184 MANDATORYTLV P2PDeviceInfo;
3185 OPTIONALTLV P2PGroupInfo;
3186
3187} // End P2PProbeRes
3188
3189
3190MULTIIE P2PBeaconProbeRes ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3191{
3192 OPTIONALTLV P2PCapability;
3193 OPTIONALTLV P2PDeviceId;
3194 OPTIONALTLV ExtendedListenTiming;
3195 OPTIONALTLV NoticeOfAbsence;
3196 OPTIONALTLV P2PDeviceInfo;
3197 OPTIONALTLV P2PGroupInfo;
3198
3199} // End P2PBeaconProbeRes
3200
3201
3202MULTIIE P2PGONegReq ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3203{
3204 MANDATORYTLV P2PCapability;
3205 MANDATORYTLV GOIntent;
3206 MANDATORYTLV ConfigurationTimeout;
3207 MANDATORYTLV ListenChannel;
3208 OPTIONALTLV ExtendedListenTiming;
3209 MANDATORYTLV IntendedP2PInterfaceAddress;
3210 MANDATORYTLV ChannelList;
3211 MANDATORYTLV P2PDeviceInfo;
3212 MANDATORYTLV OperatingChannel;
3213
3214} // End P2PGONegReq
3215
3216
3217MULTIIE P2PGONegRes ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3218{
3219 MANDATORYTLV P2PStatus;
3220 MANDATORYTLV P2PCapability;
3221 MANDATORYTLV GOIntent;
3222 MANDATORYTLV ConfigurationTimeout;
3223 MANDATORYTLV OperatingChannel;
3224 MANDATORYTLV IntendedP2PInterfaceAddress;
3225 MANDATORYTLV ChannelList;
3226 MANDATORYTLV P2PDeviceInfo;
3227 OPTIONALTLV P2PGroupId;
3228
3229} // End P2PGONegRes
3230
3231
3232MULTIIE P2PGONegCnf ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3233{
3234 MANDATORYTLV P2PStatus;
3235 MANDATORYTLV P2PCapability;
3236 MANDATORYTLV OperatingChannel;
3237 MANDATORYTLV ChannelList;
3238 OPTIONALTLV P2PGroupId;
3239
3240} // End P2PGONegCnf
3241
3242
3243MULTIIE P2PGONegWPS ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 )
3244{
3245 MANDATORYTLV Version;
3246 MANDATORYTLV DevicePasswordID;
3247
3248} // End P2PGONegWPS
3249
3250
3251MULTIIE P2PDeAuth ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3252{
3253 MANDATORYTLV MinorReasonCode;
3254}
3255
3256
3257MULTIIE P2PDisAssoc ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3258{
3259 MANDATORYTLV MinorReasonCode;
3260}
3261
3262
3263MULTIIE P2PInvitationReq ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3264{
3265 MANDATORYTLV ConfigurationTimeout;
3266 MANDATORYTLV InvitationFlags;
3267 MANDATORYTLV OperatingChannel;
3268 MANDATORYTLV P2PGroupBssid;
3269 MANDATORYTLV ChannelList;
3270 MANDATORYTLV P2PGroupId;
3271 MANDATORYTLV P2PDeviceInfo;
3272}
3273
3274
3275MULTIIE P2PInvitationRes ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3276{
3277 MANDATORYTLV P2PStatus;
3278 MANDATORYTLV ConfigurationTimeout;
3279 MANDATORYTLV OperatingChannel;
3280 MANDATORYTLV P2PGroupBssid;
3281 MANDATORYTLV ChannelList;
3282}
3283
3284
3285MULTIIE P2PDeviceDiscoverabilityReq ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3286{
3287 MANDATORYTLV P2PDeviceId;
3288 MANDATORYTLV P2PGroupId;
3289}
3290
3291
3292MULTIIE P2PDeviceDiscoverabilityRes ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3293{
3294 MANDATORYTLV P2PStatus;
3295}
3296
3297
3298MULTIIE P2PProvisionDiscoveryReq ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3299{
3300 MANDATORYTLV P2PCapability;
3301 MANDATORYTLV P2PDeviceInfo;
3302 MANDATORYTLV P2PGroupId;
3303}
3304
3305MULTIIE P2PWSCProvisionDiscoveryRes ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 )
3306{
3307 MANDATORYTLV ConfigMethods;
3308}
3309
3310
3311MULTIIE P2PNoticeOfAbsence ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3312{
3313 MANDATORYTLV NoticeOfAbsence;
3314}
3315
3316
3317MULTIIE P2PPresenceResponse ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
3318{
3319 MANDATORYTLV P2PStatus;
3320 MANDATORYTLV NoticeOfAbsence;
3321}
3322
3323
3324/////////////////////////////////////////////////////////////////////////////
3325// Frames
3326
3327FRAME Beacon // C.f. Sec. 7.2.3.1
3328{
3329 FF TimeStamp;
3330 FF BeaconInterval;
3331 FF Capabilities;
3332 MANDIE SSID;
3333 MANDIE SuppRates;
3334 OPTIE FHParamSet;
3335 OPTIE DSParams;
3336 OPTIE CFParams;
3337 OPTIE IBSSParams;
3338 OPTIE TIM;
3339 OPTIE Country;
3340 OPTIE FHParams;
3341 OPTIE FHPattTable;
3342 OPTIE PowerConstraints;
3343 OPTIE ChanSwitchAnn;
Abhishek Singh15431c42017-10-25 15:43:02 +05303344 OPTIE ext_chan_switch_ann;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003345 OPTIE Quiet;
3346 OPTIE TPCReport;
3347 OPTIE ERPInfo;
3348 OPTIE ExtSuppRates;
3349 OPTIE RSN;
3350 OPTIE QBSSLoad;
3351 OPTIE EDCAParamSet;
3352 OPTIE QOSCapsAp;
3353 OPTIE APChannelReport;
3354 OPTIE RRMEnabledCap;
3355 OPTIE MobilityDomain;
3356 OPTIE WPA;
3357 OPTIE HTCaps;
3358 OPTIE HTInfo;
Abhishek Singh15431c42017-10-25 15:43:02 +05303359 OPTIE sec_chan_offset;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003360 OPTIE WMMInfoAp;
3361 OPTIE WMMParams;
3362 OPTIE WMMCaps;
3363 OPTIE WAPI;
3364 OPTIE ESERadMgmtCap;
3365 OPTIE ESETrafStrmMet;
3366 OPTIE ESETxmitPower;
3367
3368 OPTIE Airgo;
3369 OPTIE WscBeacon;
3370 OPTIE P2PBeacon;
3371 OPTIE VHTCaps;
3372 OPTIE VHTOperation;
3373 OPTIE VHTExtBssLoad;
3374 OPTIE ExtCap;
3375 OPTIE OperatingMode;
3376 OPTIE WiderBWChanSwitchAnn;
Hardik Kantilal Patel402f8a02014-11-10 18:35:34 +05303377 OPTIE OBSSScanParameters;
Abhishek Singh74037df2017-07-20 11:08:56 +05303378 OPTIE hs20vendor_ie;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003379} // End frame Beacon.
3380
3381// Ok, here's the story on Beacon1 & Beacon2. We presumably beacon a lot
3382// more than we change configuration. So it makes sense to keep the beacon
3383// we plan to send next in serialized format. We do this in struct schMisc.
3384// Whenever our config changes in a way that would affect our beacons, we
3385// just update our internal datastructures & re-generate the serialized
3386// beacon.
3387
3388// The problem is that there are *some* fields that need to be updated at
3389// send time, specifically the CF Param Set & the TIM. So, what we do is
3390// this: whenever our config changes, call schSetFixedBeaconFields. There,
3391// we serialize the following Beacon fields into gSchBeaconFrameBegin (after
3392// the power template & MAC header): TimeStamp, BeaconInterval, Capabilities,
3393// SSID, SuppRates, DSParams, & IBSSParams. It sets gSchBeaconOffsetBegin to
3394// the length of this buffer (incl. power template & MAC header).
3395
3396// Next, it serializes the following fields into gSchBeaconFrameEnd: Country,
3397// EDCAParamSet, PowerConstraints, TPCReport, ChannelSwitchAnn, Quiet,
3398// ERPInfo, HTCaps, HTInfo, ExtSuppRates, Airgo (via
3399// sirFillPropIEsInBeaconPR), WPA, RSN, WMMInfo, WMMParams, WMMCaps. The
3400// length of *this* buffer is kept in gSchBeaconOffsetEnd.
3401
3402// Then, in 'schBeaconInterruptHandler', we write CFParams & TIM at the end
3403// of gSchBeaconFrameBegin, keeping track of the (new) size of this buffer in
3404// the local 'beaconSize'.
3405
3406// After that, we call 'specialBeaconProcessing'. Note that this may
3407// actually call schSetFixedBeaconFields repeatedly! The comments say they
3408// try to avoid this, but...
3409
3410// Finally, we call writeBeaconToTFP, where the first thing we do is copy the
3411// gSchBeaconFrameEnd buffer after the end of gSchBeaconFrameBegin.
3412
3413FRAME Beacon1
3414{
3415 FF TimeStamp;
3416 FF BeaconInterval;
3417 FF Capabilities;
3418 MANDIE SSID;
3419 MANDIE SuppRates;
3420 OPTIE DSParams;
3421 OPTIE IBSSParams;
3422}
3423
3424FRAME Beacon2
3425{
3426 OPTIE Country;
3427 OPTIE PowerConstraints;
3428 OPTIE ChanSwitchAnn;
Abhishek Singh15431c42017-10-25 15:43:02 +05303429 OPTIE ext_chan_switch_ann;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003430 OPTIE Quiet;
3431 OPTIE TPCReport;
3432 OPTIE ERPInfo;
3433 OPTIE ExtSuppRates;
3434 OPTIE RSNOpaque;
3435 OPTIE EDCAParamSet;
3436 OPTIE APChannelReport;
3437 OPTIE RRMEnabledCap;
3438 OPTIE MobilityDomain;
3439 OPTIE WPA;
3440 OPTIE HTCaps;
3441 OPTIE HTInfo;
Abhishek Singh15431c42017-10-25 15:43:02 +05303442 OPTIE sec_chan_offset;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003443 OPTIE WMMInfoAp;
3444 OPTIE WMMParams;
3445 OPTIE WMMCaps;
3446 OPTIE Airgo;
3447 OPTIE WscBeacon;
3448 OPTIE WAPI;
3449 OPTIE ESERadMgmtCap;
3450 OPTIE ESETrafStrmMet;
3451 OPTIE ESETxmitPower;
3452 OPTIE P2PBeacon;
3453 OPTIE VHTCaps;
3454 OPTIE VHTOperation;
3455 OPTIE VHTExtBssLoad;
3456 OPTIE ExtCap;
3457 OPTIE OperatingMode;
3458 OPTIE WiderBWChanSwitchAnn;
Hardik Kantilal Patel402f8a02014-11-10 18:35:34 +05303459 OPTIE OBSSScanParameters;
Abhishek Singh74037df2017-07-20 11:08:56 +05303460 OPTIE hs20vendor_ie;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003461}
3462
3463// This frame is just Beacon with its Fixed Fields stripped out. It's handy
3464// for use with struct 'tSirBssDescription', which has members corresponding
3465// to some fixed fields, but keeps its IEs in un-parsed format.
3466
3467// Note that it also includes the IE 'WscBeaconProbeRes'.
3468
3469FRAME BeaconIEs
3470{
3471
3472 MANDIE SSID;
3473 MANDIE SuppRates;
3474 OPTIE FHParamSet;
3475 OPTIE DSParams;
3476 OPTIE CFParams;
3477 OPTIE IBSSParams;
3478 OPTIE TIM;
3479 OPTIE Country;
3480 OPTIE FHParams;
3481 OPTIE FHPattTable;
3482 OPTIE PowerConstraints;
3483 OPTIE ChanSwitchAnn;
Abhishek Singh15431c42017-10-25 15:43:02 +05303484 OPTIE ext_chan_switch_ann;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003485 OPTIE Quiet;
3486 OPTIE TPCReport;
3487 OPTIE ERPInfo;
3488 OPTIE ExtSuppRates;
3489 OPTIE RSN;
3490 OPTIE QBSSLoad;
3491 OPTIE EDCAParamSet;
3492 OPTIE QOSCapsAp;
3493 OPTIE APChannelReport;
3494 OPTIE RRMEnabledCap;
3495 OPTIE MobilityDomain;
3496 OPTIE WPA;
3497 OPTIE HTCaps;
3498 OPTIE HTInfo;
Abhishek Singh15431c42017-10-25 15:43:02 +05303499 OPTIE sec_chan_offset;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003500 OPTIE WMMInfoAp;
3501 OPTIE WMMParams;
3502 OPTIE WMMCaps;
3503 OPTIE WAPI;
3504 OPTIE ESEVersion;
3505 OPTIE ESERadMgmtCap;
3506 OPTIE ESETrafStrmMet;
3507 OPTIE ESETxmitPower;
3508
3509 OPTIE Airgo;
3510 OPTIE WscBeaconProbeRes;
3511 OPTIE P2PBeaconProbeRes;
3512 OPTIE VHTCaps;
3513 OPTIE VHTOperation;
3514 OPTIE VHTExtBssLoad;
3515 OPTIE ExtCap;
3516 OPTIE OperatingMode;
3517 OPTIE WiderBWChanSwitchAnn;
Hardik Kantilal Patel402f8a02014-11-10 18:35:34 +05303518 OPTIE OBSSScanParameters;
Abhishek Singh74037df2017-07-20 11:08:56 +05303519 OPTIE hs20vendor_ie;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003520
3521} // End frame BeaconIEs.
3522
3523FRAME Disassociation // 7.3.3.3
3524{
3525 FF Reason;
3526 OPTIE P2PDisAssoc;
3527}
3528
3529FRAME AssocRequest // 7.2.3.4
3530{
3531 FF Capabilities;
3532 FF ListenInterval;
3533 MANDIE SSID;
3534 MANDIE SuppRates;
3535 OPTIE ExtSuppRates;
3536 OPTIE PowerCaps;
3537 OPTIE SuppChannels;
3538 OPTIE RSNOpaque;
3539 OPTIE QOSCapsStation;
3540 OPTIE RRMEnabledCap;
3541 OPTIE MobilityDomain;
3542 OPTIE WPAOpaque;
3543 OPTIE HTCaps;
3544 OPTIE WMMCaps;
3545 OPTIE WMMInfoStation;
3546 OPTIE Airgo;
3547 OPTIE WscIEOpaque;
3548 OPTIE WAPIOpaque;
3549 OPTIE ESERadMgmtCap;
3550 OPTIE ESEVersion;
3551 OPTIE P2PIEOpaque;
3552 OPTIE WFDIEOpaque;
3553 OPTIE VHTCaps;
3554 OPTIE ExtCap;
3555 OPTIE OperatingMode;
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -07003556 OPTIE QosMapSet;
Abhishek Singh74037df2017-07-20 11:08:56 +05303557 OPTIE hs20vendor_ie;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003558} // End frame AssocRequest.
3559
3560FRAME AssocResponse // 7.2.3.5
3561{
3562 FF Capabilities;
3563 FF Status;
3564 FF AID;
3565 MANDIE SuppRates;
3566 OPTIE ExtSuppRates;
3567 OPTIE EDCAParamSet;
3568 OPTIE RCPIIE;
3569 OPTIE RSNIIE;
3570 OPTIE RRMEnabledCap;
3571 OPTIE MobilityDomain;
3572 OPTIE FTInfo;
3573 OPTIE RICDataDesc[2];
3574 OPTIE WPA;
3575 OPTIE TimeoutInterval;
3576 OPTIE HTCaps;
3577 OPTIE HTInfo;
3578 OPTIE WMMParams;
3579 OPTIE WMMCaps;
3580 OPTIE ESERadMgmtCap;
3581 OPTIE ESETrafStrmMet;
3582 OPTIE ESETxmitPower;
3583 OPTIE WMMTSPEC[0..4];
3584 OPTIE Airgo;
3585 OPTIE WscAssocRes;
3586 OPTIE P2PAssocRes;
3587 OPTIE VHTCaps;
3588 OPTIE VHTOperation;
3589 OPTIE ExtCap;
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -07003590 OPTIE OBSSScanParameters;
3591 OPTIE QosMapSet;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003592} // End frame AssocResponse.
3593
3594FRAME ReAssocRequest // 7.2.3.6
3595{
3596 FF Capabilities;
3597 FF ListenInterval;
3598 FF CurrentAPAddress;
3599 MANDIE SSID;
3600 MANDIE SuppRates;
3601 OPTIE ExtSuppRates;
3602 OPTIE PowerCaps;
3603 OPTIE SuppChannels;
3604 OPTIE RSNOpaque;
3605 OPTIE QOSCapsStation;
3606 OPTIE RRMEnabledCap;
3607 OPTIE MobilityDomain;
3608 OPTIE FTInfo;
3609 OPTIE RICDataDesc[2];
3610 OPTIE WPAOpaque;
3611 OPTIE HTCaps;
3612 OPTIE WMMCaps;
3613 OPTIE WMMInfoStation;
3614 OPTIE Airgo;
3615 OPTIE WscIEOpaque;
3616 OPTIE WAPIOpaque;
3617 OPTIE ESERadMgmtCap;
3618 OPTIE ESEVersion;
3619 OPTIE ESECckmOpaque;
3620 OPTIE WMMTSPEC[0..4];
3621 OPTIE ESETrafStrmRateSet;
3622 OPTIE P2PIEOpaque;
3623 OPTIE WFDIEOpaque;
3624 OPTIE VHTCaps;
3625 OPTIE ExtCap;
3626 OPTIE OperatingMode;
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -07003627 OPTIE QosMapSet;
Abhishek Singh74037df2017-07-20 11:08:56 +05303628 OPTIE hs20vendor_ie;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003629} // End frame ReAssocRequest.
3630
3631FRAME ReAssocResponse // 7.2.3.7
3632{
3633 FF Capabilities;
3634 FF Status;
3635 FF AID;
3636 MANDIE SuppRates;
3637 OPTIE ExtSuppRates;
3638 OPTIE EDCAParamSet;
3639 OPTIE RCPIIE;
3640 OPTIE RSNIIE;
3641 OPTIE RRMEnabledCap;
3642 OPTIE RSNOpaque;
3643 OPTIE MobilityDomain;
3644 OPTIE FTInfo;
3645 OPTIE RICDataDesc[2];
3646 OPTIE WPA;
3647 OPTIE TimeoutInterval;
3648 OPTIE HTCaps;
3649 OPTIE HTInfo;
3650 OPTIE WMMParams;
3651 OPTIE ESERadMgmtCap;
3652 OPTIE ESETrafStrmMet;
3653 OPTIE ESETxmitPower;
3654 OPTIE WMMTSPEC[0..4];
3655 OPTIE ESETrafStrmRateSet;
3656 OPTIE Airgo;
3657 OPTIE WscReassocRes;
3658 OPTIE P2PAssocRes;
3659 OPTIE VHTCaps;
3660 OPTIE VHTOperation;
3661 OPTIE ExtCap;
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -07003662 OPTIE OBSSScanParameters;
3663 OPTIE QosMapSet;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003664} // End frame ReAssocResponse.
3665
3666FRAME ProbeRequest // 7.2.3.8
3667{
3668 MANDIE SSID;
3669 MANDIE SuppRates;
3670 OPTIE RequestedInfo;
3671 OPTIE ExtSuppRates;
3672 OPTIE DSParams;
3673 OPTIE HTCaps;
3674 OPTIE WscProbeReq;
3675 OPTIE WFATPC;
3676 OPTIE P2PProbeReq;
3677 OPTIE VHTCaps;
3678} // End frame ProbeRequest.
3679
3680FRAME ProbeResponse // 7.2.3.9
3681{
3682 FF TimeStamp;
3683 FF BeaconInterval;
3684 FF Capabilities;
3685 MANDIE SSID;
3686 MANDIE SuppRates;
3687 OPTIE FHParamSet;
3688 OPTIE DSParams;
3689 OPTIE CFParams;
3690 OPTIE IBSSParams;
3691 OPTIE Country;
3692 OPTIE FHParams;
3693 OPTIE FHPattTable;
3694 OPTIE PowerConstraints;
3695 OPTIE ChanSwitchAnn;
Abhishek Singh15431c42017-10-25 15:43:02 +05303696 OPTIE ext_chan_switch_ann;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003697 OPTIE Quiet;
3698 OPTIE TPCReport;
3699 OPTIE ERPInfo;
3700 OPTIE ExtSuppRates;
3701 OPTIE RSNOpaque;
3702 OPTIE QBSSLoad;
3703 OPTIE EDCAParamSet;
3704 OPTIE RRMEnabledCap;
3705 OPTIE APChannelReport;
3706 OPTIE MobilityDomain;
3707 OPTIE WPA;
3708 OPTIE HTCaps;
3709 OPTIE HTInfo;
Abhishek Singh15431c42017-10-25 15:43:02 +05303710 OPTIE sec_chan_offset;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003711 OPTIE WMMInfoAp;
3712 OPTIE WMMParams;
3713 OPTIE WMMCaps;
3714 OPTIE WAPI;
3715 OPTIE ESERadMgmtCap;
3716 OPTIE ESETrafStrmMet;
3717 OPTIE ESETxmitPower;
3718
3719 OPTIE Airgo;
3720 OPTIE WscProbeRes;
3721 OPTIE P2PProbeRes;
3722
3723 OPTIE VHTCaps;
3724 OPTIE VHTOperation;
3725 OPTIE VHTExtBssLoad;
3726 OPTIE ExtCap;
Hardik Kantilal Patel402f8a02014-11-10 18:35:34 +05303727 OPTIE OBSSScanParameters;
Abhishek Singh74037df2017-07-20 11:08:56 +05303728 OPTIE hs20vendor_ie;
Abhishek Singh15431c42017-10-25 15:43:02 +05303729 OPTIE WiderBWChanSwitchAnn;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003730} // End frame ProbeResponse.
3731
3732FRAME Authentication // 7.2.3.10
3733{
3734 FF AuthAlgo;
3735 FF AuthSeqNo;
3736 FF Status;
3737 OPTIE ChallengeText;
3738 OPTIE RSNOpaque;
3739 OPTIE MobilityDomain;
3740 OPTIE FTInfo;
3741 OPTIE TimeoutInterval;
3742 OPTIE RICDataDesc[2];
3743} // End frame Auth.
3744
3745FRAME DeAuth // 7.2.3.11
3746{
3747 FF Reason;
3748 OPTIE P2PDeAuth;
3749}
3750
3751FRAME AddTSRequest // 7.4.2.1
3752{
3753
3754 FF Category;
3755 FF Action;
3756 FF DialogToken;
3757 MANDIE TSPEC;
3758 OPTIE TCLAS[0..2];
3759 OPTIE TCLASSPROC;
3760
3761 // These IEs aren't in the spec, but our extant code *will* parse them if
3762 // they're present. I included them to preserve that capability
3763
3764 OPTIE WMMTSPEC;
3765 OPTIE WMMTCLAS[0..2];
3766 OPTIE WMMTCLASPROC;
3767 OPTIE ESETrafStrmRateSet;
3768
3769} // End frame AddTSRequest.
3770
3771FRAME WMMAddTSRequest
3772{
3773 FF Category;
3774 FF Action;
3775 FF DialogToken;
3776 FF StatusCode;
3777 MANDIE WMMTSPEC;
3778 OPTIE ESETrafStrmRateSet;
3779} // End Frame WMMAddTSRequest
3780
3781FRAME AddTSResponse // 7.4.2.2
3782{
3783
3784 FF Category;
3785 FF Action;
3786 FF DialogToken;
3787 FF Status;
3788 MANDIE TSDelay;
3789 MANDIE TSPEC;
3790 OPTIE TCLAS[0..2];
3791 OPTIE TCLASSPROC;
3792 OPTIE Schedule;
3793
3794 // These IEs aren't in the spec, but our extant code *will* parse them if
3795 // they're present. I included them to preserve that capability
3796 OPTIE WMMTSDelay;
3797 OPTIE WMMSchedule;
3798 OPTIE WMMTSPEC;
3799 OPTIE WMMTCLAS[0..2];
3800 OPTIE WMMTCLASPROC;
3801 OPTIE ESETrafStrmMet;
3802
3803} // End frame AddTSResponse.
3804
3805FRAME WMMAddTSResponse
3806{
3807
3808 FF Category;
3809 FF Action;
3810 FF DialogToken;
3811 FF StatusCode;
3812 OPTIE WMMTSPEC;
3813 OPTIE ESETrafStrmMet;
3814
3815} // End frame WMMAddTSResponse.
3816
3817FRAME DelTS // 7.4.2.3
3818{
3819 FF Category;
3820 FF Action;
3821 FF TSInfo;
3822 FF Reason;
3823}
3824
3825FRAME WMMDelTS
3826{
3827 FF Category;
3828 FF Action;
3829 FF DialogToken;
3830 FF StatusCode;
3831 MANDIE WMMTSPEC;
3832}
3833
3834FRAME TPCRequest
3835{
3836 FF Category;
3837 FF Action;
3838 FF DialogToken;
3839 MANDIE TPCRequest;
3840}
3841
3842FRAME TPCReport
3843{
3844 FF Category;
3845 FF Action;
3846 FF DialogToken;
3847 MANDIE TPCReport;
3848}
3849
3850FRAME ChannelSwitch
3851{
3852 FF Category;
3853 FF Action;
3854 MANDIE ChanSwitchAnn;
Abhishek Singh15431c42017-10-25 15:43:02 +05303855 OPTIE sec_chan_offset;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003856 OPTIE WiderBWChanSwitchAnn;
3857}
3858
Abhishek Singh15431c42017-10-25 15:43:02 +05303859FRAME ext_channel_switch_action_frame
3860{
3861 FF Category;
3862 FF Action;
3863 FF ext_chan_switch_ann_action;
3864}
3865
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07003866FRAME MeasurementRequest
3867{
3868 FF Category;
3869 FF Action;
3870 FF DialogToken;
3871 MANDIE MeasurementRequest[1..4];
3872}
3873
3874FRAME MeasurementReport
3875{
3876 FF Category;
3877 FF Action;
3878 FF DialogToken;
3879 MANDIE MeasurementReport;
3880}
3881
3882FRAME AddBAReq
3883{
3884 FF Category;
3885 FF Action;
3886 FF DialogToken;
3887 FF AddBAParameterSet;
3888 FF BATimeout;
3889 FF BAStartingSequenceControl;
3890}
3891
3892FRAME AddBARsp
3893{
3894 FF Category;
3895 FF Action;
3896 FF DialogToken;
3897 FF Status;
3898 FF AddBAParameterSet;
3899 FF BATimeout;
3900}
3901
3902FRAME DelBAInd
3903{
3904 FF Category;
3905 FF Action;
3906 FF DelBAParameterSet;
3907 FF Reason;
3908}
3909
3910FRAME SMPowerSave
3911{
3912 FF Category;
3913 FF Action;
3914 FF SMPowerModeSet;
3915}
3916
3917FRAME RadioMeasurementRequest
3918{
3919 FF Category;
3920 FF Action;
3921 FF DialogToken;
3922 FF NumOfRepetitions;
3923 //Measurement Request IE.
3924 MANDIE MeasurementRequest[1..2];
3925}
3926
3927FRAME RadioMeasurementReport
3928{
3929 FF Category;
3930 FF Action;
3931 FF DialogToken;
3932 //Measurement Report elements.
3933 MANDIE MeasurementReport[1..4];
3934}
3935
3936FRAME LinkMeasurementRequest
3937{
3938 FF Category;
3939 FF Action;
3940 FF DialogToken;
3941 FF TxPower;
3942 FF MaxTxPower;
3943 //Optional Sub Ies
3944}
3945
3946FRAME LinkMeasurementReport
3947{
3948 FF Category;
3949 FF Action;
3950 FF DialogToken;
3951 FF TPCEleID;
3952 FF TPCEleLen;
3953 FF TxPower;
3954 FF LinkMargin;
3955 FF RxAntennaId;
3956 FF TxAntennaId;
3957 FF RCPI;
3958 FF RSNI;
3959 //Optional Vendor specific IEs ... ignoring
3960}
3961
3962FRAME NeighborReportRequest
3963{
3964 FF Category;
3965 FF Action;
3966 FF DialogToken;
3967 OPTIE SSID;
3968 //Optional vendor specific IE...ignoring.
3969}
3970
3971FRAME NeighborReportResponse
3972{
3973 FF Category;
3974 FF Action;
3975 FF DialogToken;
3976 OPTIE NeighborReport[1..4];
3977}
3978
3979FRAME GONegReq
3980{
3981 FF Category;
3982 FF Action;
3983 FF P2POUI;
3984 FF P2POUISubType;
3985 FF DialogToken;
3986 MANDIE P2PGONegWPS;
3987 MANDIE P2PGONegReq;
3988}
3989
3990FRAME GONegRes
3991{
3992 FF Category;
3993 FF Action;
3994 FF P2POUI;
3995 FF P2POUISubType;
3996 FF DialogToken;
3997 MANDIE P2PGONegWPS;
3998 MANDIE P2PGONegRes;
3999}
4000
4001
4002FRAME GONegCnf
4003{
4004 FF Category;
4005 FF Action;
4006 FF P2POUI;
4007 FF P2POUISubType;
4008 FF DialogToken;
4009 MANDIE P2PGONegCnf;
4010}
4011
4012
4013FRAME InvitationReq
4014{
4015 FF Category;
4016 FF Action;
4017 FF P2POUI;
4018 FF P2POUISubType;
4019 FF DialogToken;
4020 MANDIE P2PInvitationReq;
4021}
4022
4023
4024FRAME InvitationRes
4025{
4026 FF Category;
4027 FF Action;
4028 FF P2POUI;
4029 FF P2POUISubType;
4030 FF DialogToken;
4031 MANDIE P2PInvitationRes;
4032}
4033
4034
4035FRAME DeviceDiscoverabilityReq
4036{
4037 FF Category;
4038 FF Action;
4039 FF P2POUI;
4040 FF P2POUISubType;
4041 FF DialogToken;
4042 MANDIE P2PDeviceDiscoverabilityReq;
4043}
4044
4045
4046FRAME DeviceDiscoverabilityRes
4047{
4048 FF Category;
4049 FF Action;
4050 FF P2POUI;
4051 FF P2POUISubType;
4052 FF DialogToken;
4053 MANDIE P2PDeviceDiscoverabilityRes;
4054}
4055
4056
4057
4058FRAME ProvisionDiscoveryReq
4059{
4060 FF Category;
4061 FF Action;
4062 FF P2POUI;
4063 FF P2POUISubType;
4064 FF DialogToken;
4065 MANDIE P2PProvisionDiscoveryReq;
4066}
4067
4068
4069FRAME ProvisionDiscoveryRes
4070{
4071 FF Category;
4072 FF Action;
4073 FF P2POUI;
4074 FF P2POUISubType;
4075 FF DialogToken;
4076 MANDIE P2PWSCProvisionDiscoveryRes;
4077}
4078
4079
4080FRAME NoticeOfAbs
4081{
4082 FF Category;
4083 FF P2POUI;
4084 FF P2POUISubType;
4085 FF DialogToken;
4086 MANDIE P2PNoticeOfAbsence;
4087}
4088
4089
4090FRAME PresenceReq
4091{
4092 FF Category;
4093 FF P2POUI;
4094 FF P2POUISubType;
4095 FF DialogToken;
4096 MANDIE P2PNoticeOfAbsence;
4097}
4098
4099
4100FRAME PresenceRes
4101{
4102 FF Category;
4103 FF P2POUI;
4104 FF P2POUISubType;
4105 FF DialogToken;
4106 MANDIE P2PPresenceResponse;
4107}
4108
4109
4110FRAME GODiscoverabilityReq
4111{
4112 FF Category;
4113 FF P2POUI;
4114 FF P2POUISubType;
4115 FF DialogToken;
4116}
4117
4118FRAME OperatingMode
4119{
4120 FF Category;
4121 FF Action;
4122 //Operating Mode field
4123 FF OperatingMode;
4124}
4125
4126FRAME TDLSDisReq
4127{
4128 FF Category;
4129 FF Action;
4130 FF DialogToken;
4131 MANDIE LinkIdentifier;
4132}
4133
4134FRAME TDLSDisRsp
4135{
4136 FF Category;
4137 FF Action;
4138 FF DialogToken;
4139 FF Capabilities;
4140 MANDIE SuppRates;
4141 OPTIE ExtSuppRates;
4142 OPTIE SuppChannels;
4143 OPTIE SuppOperatingClasses;
4144 OPTIE RSN;
4145 OPTIE ExtCap;
4146 OPTIE FTInfo;
4147 OPTIE TimeoutInterval;
4148 OPTIE RICData;
4149 OPTIE HTCaps;
Agarwal Ashishb4891ef2014-11-10 20:08:36 +05304150 OPTIE HT2040BSSCoexistence;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004151 MANDIE LinkIdentifier;
4152 OPTIE VHTCaps;
4153}
4154
4155FRAME TDLSSetupReq
4156{
4157 FF Category;
4158 FF Action;
4159 FF DialogToken;
4160 FF Capabilities;
4161 MANDIE SuppRates;
4162 OPTIE Country;
4163 OPTIE ExtSuppRates;
4164 OPTIE SuppChannels;
4165 OPTIE RSN;
4166 OPTIE ExtCap;
4167 OPTIE SuppOperatingClasses;
4168 OPTIE QOSCapsStation;
4169 OPTIE FTInfo;
4170 OPTIE TimeoutInterval;
4171 OPTIE RICData;
4172 OPTIE HTCaps;
Agarwal Ashishb4891ef2014-11-10 20:08:36 +05304173 OPTIE HT2040BSSCoexistence;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004174 MANDIE LinkIdentifier;
4175 OPTIE WMMInfoStation;
4176 OPTIE AID;
4177 OPTIE VHTCaps;
4178}
4179
4180FRAME TDLSSetupRsp
4181{
4182 FF Category;
4183 FF Action;
4184 FF Status;
4185 FF DialogToken;
4186 FF Capabilities ;
4187 OPTIE SuppRates;
4188 OPTIE Country;
4189 OPTIE ExtSuppRates;
4190 OPTIE SuppChannels;
4191 OPTIE RSN;
4192 OPTIE ExtCap;
4193 OPTIE SuppOperatingClasses;
4194 OPTIE QOSCapsStation;
4195 OPTIE FTInfo;
4196 OPTIE TimeoutInterval;
4197 OPTIE RICData;
4198 OPTIE HTCaps;
Agarwal Ashishb4891ef2014-11-10 20:08:36 +05304199 OPTIE HT2040BSSCoexistence;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004200 OPTIE LinkIdentifier;
4201 OPTIE WMMInfoStation;
4202 OPTIE AID;
4203 OPTIE VHTCaps;
4204 OPTIE OperatingMode;
4205}
4206
4207FRAME TDLSSetupCnf
4208{
4209 FF Category;
4210 FF Action;
4211 FF Status;
4212 FF DialogToken;
4213 OPTIE RSN;
4214 OPTIE EDCAParamSet;
4215 OPTIE FTInfo;
4216 OPTIE TimeoutInterval;
4217 OPTIE HTInfo;
Agarwal Ashishb4891ef2014-11-10 20:08:36 +05304218 OPTIE HT2040BSSCoexistence;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004219 OPTIE LinkIdentifier;
Pradeep Reddy POTTETI8946b9d2014-04-10 19:56:01 +05304220 OPTIE WMMParams;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004221 OPTIE VHTOperation;
4222 OPTIE OperatingMode;
4223}
4224FRAME TDLSTeardown
4225{
4226 FF Category;
4227 FF Action;
4228 FF Reason;
4229 OPTIE FTInfo;
4230 MANDIE LinkIdentifier;
4231}
4232
4233FRAME TDLSPeerTrafficInd
4234{
4235 FF Category;
4236 FF Action;
4237 FF DialogToken;
4238 MANDIE LinkIdentifier;
4239 OPTIE PTIControl;
4240 MANDIE PUBufferStatus;
4241}
4242
4243FRAME TDLSPeerTrafficRsp
4244{
4245 FF Category;
4246 FF Action;
4247 FF DialogToken;
4248 MANDIE LinkIdentifier;
4249}
4250
4251FRAME SaQueryReq
4252{
4253 FF Category;
4254 FF Action;
4255 FF TransactionId;
4256}
4257
4258FRAME SaQueryRsp
4259{
4260 FF Category;
4261 FF Action;
4262 FF TransactionId;
4263}
4264
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -07004265FRAME QosMapConfigure
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004266{
4267 FF Category;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004268 FF Action;
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -07004269 MANDIE QosMapSet;
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004270}
4271
Abhishek Singh00b71972016-01-07 10:51:04 +05304272FRAME RMC
4273{
4274 FF Category;
4275 FF RMCOUI;
4276 FF MagicCode;
4277 FF RMCVersion;
4278 FF Action;
4279 FF RMCDialogToken;
4280 FF Ruler;
4281}
4282
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004283FRAME VHTGidManagementActionFrame
4284{
4285 FF Category;
4286 FF Action;
4287 FF VhtMembershipStatusArray;
4288 FF VhtUserPositionArray;
4289}
4290
Hardik Kantilal Patel402f8a02014-11-10 18:35:34 +05304291FRAME HT2040BSSCoexistenceManagementActionFrame
4292{
4293 FF Category;
4294 FF Action;
4295 MANDIE HT2040BSSCoexistence;
4296 MANDIE HT2040BSSIntolerantReport;
4297}
4298
Varun Reddy Yeturu2c7b00b2014-03-18 16:30:29 -07004299// Local Variables:
4300// mode: c++
4301// fill-column: 77
4302// comment-column: 42
4303// indent-tabs-mode: nil
4304// show-trailing-whitespace: t
4305// End:
4306
4307// parser.frms ends here.