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