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