1/* 2 * Copyright (c) 2006-2007, 2014-2018, 2020-2021 The Linux Foundation. 3 * All rights reserved. 4 * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. 5 * 6 * Permission to use, copy, modify, and/or distribute this software for 7 * any purpose with or without fee is hereby granted, provided that the 8 * above copyright notice and this permission notice appear in all 9 * copies. 10 * 11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 12 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 13 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 14 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 15 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 16 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 17 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 18 * PERFORMANCE OF THIS SOFTWARE. 19 */ 20 21/** 22 * \file dot11f.frms 23 * 24 * \brief Primary 'frames' file for the MAC parser 25 * 26 * 27 * This file defines several 802.11 frames (along with their associated 28 * constituents) in a little language called "frames". When run through the 29 * 'framesc' program, it will generate C code for working with these frames: 30 * C structs representing the 802.11 frame together with functions for 31 * packing & unpacking them. 32 * 33 * For more information on the "frames" language, run 'framesc --help'... 34 * 35 * 36 */ 37 38 39// Tell framesc what types to use for... 40%8-bit-type uint8_t // 8, 41%16-bit-type uint16_t // 16, 42%32-bit-type uint32_t // & 32-bit unsigned integral types. These can also 43 // be specified on the command line. 44 45// Define some mnemonic constants; these are just for our use with the frames 46// files we're compiling. IOW, they won't result in any C code being 47// emitted. 48 49const EID_SSID = 0; 50const EID_SUPP_RATES = 1; 51const EID_FH_PARAM_SET = 2; 52const EID_DS_PARAM_SET = 3; 53const EID_CF_PARAM_SET = 4; 54const EID_TIM = 5; 55const EID_IBSS_PARAM_SET = 6; 56const EID_COUNTRY = 7; 57const EID_FH_PATTERN = 8; 58const EID_FH_PATT_TABLE = 9; 59const EID_REQUEST = 10; 60const EID_QBSS_LOAD = 11; 61const EID_EDCA_PARAM_SET = 12; 62const EID_TSPEC = 13; 63const EID_TCLAS = 14; 64const EID_SCHEDULE = 15; 65const EID_CHALLENGE_TEXT = 16; 66const EID_POWER_CONSTRAINTS = 32; 67const EID_POWER_CAPABILITY = 33; 68const EID_TPC_REQUEST = 34; 69const EID_TPC_REPORT = 35; 70const EID_SUPPORTED_CHANNELS = 36; 71const EID_CHANNEL_SWITCH_ANN = 37; 72const EID_MEAS_REQUEST = 38; 73const EID_MEAS_REPORT = 39; 74const EID_QUIET = 40; 75const EID_ERP_INFO = 42; 76const EID_TS_DELAY = 43; 77const EID_TCLASS_PROC = 44; 78const EID_HT_CAPABILITIES = 45; 79const EID_QOS_CAPABILITY = 46; 80const EID_RSN = 48; 81const EID_EXT_SUPP_RATES = 50; 82const EID_AP_CHAN_REPORT = 51; 83const EID_NEIGHBOR_REPORT = 52; 84const EID_RCPI = 53; 85const EID_FT_MOBILITY_DOMAIN = 54; 86const EID_FT_INFO = 55; 87const EID_TIMEOUT_INTERVAL = 56; 88const EID_FT_RIC_DATA = 57; 89const EID_SUPPORTED_OPER_CLASSES = 59; 90const EID_EXT_CHAN_SWITCH = 60; 91const EID_HT_INFO = 61; 92const EID_SEC_CHAN_OFFSET = 62; 93const EID_RSNI = 65; 94const EID_RRM_MEAS_PILOT_TX_INFO = 66; 95const EID_WAPI = 68; 96const EID_TIME_ADVERTISEMENT = 69; 97const EID_RRM_ENABLED_CAPS = 70; 98const EID_MULTIPLE_BSSID = 71; 99const EID_20_40_BSS_COEXISTENCE = 72; 100const EID_20_40_BSS_INTOLERANT_REPORT= 73; 101const EID_OBSS_SCAN_PARAMETERS = 74; 102const EID_FT_RIC_DESCRIPTOR = 75; 103const EID_MSCS_STATUS = 76; 104const EID_BSS_MAX_IDLE_PERIOD = 90; 105const EID_LINK_IDENTIFIER = 101; 106const EID_PTI_CONTROL = 105; 107const EID_PU_BUFFER_STATUS = 106; 108const EID_QOS_MAP_SET = 110; 109const EID_ESE_SPECIFIC = 150; 110const EID_ESE_CCKM_SPECIFIC = 156; 111const EID_ADDBA_EXTN_ELEMENT = 159; 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_TRANSMIT_POWER_ENVELOPE = 195; 120const EID_CHANNEL_SWITCH_WRAPPER = 196; 121const EID_RNR_IE = 201; 122const EID_VENDOR_SPECIFIC = 221; 123const EID_FILS_INDICATION = 240; 124const EID_FRAGMENT_IE = 242; 125/** 126 * Extended Element ID 127 * 128 * As part of IEEE-802.11-2016 spec, extended element ID is introduced(9.4.2.1) 129 * Elements are defined to have a common general format consisting of a 1 octet 130 * Element ID field, a 1 octet Length field, an optional 1 octet Element ID 131 * Extension field, and a variable-length element-specific Information field. 132 * Each element is identified by the contents of the Element ID and, when 133 * present, Element ID Extension fields as defined in this standard. An Extended 134 * Element ID is a combination of an Element ID and an Element ID Extension for 135 * those elements that have a defined Element ID Extension. The Length field 136 * specifies the number of octets following the Length field. The presence of 137 * the Element ID Extension field is determined by the Element ID field having 138 * value of 255 139 */ 140const EID_EXTN_ID_ELEMENT = 255; 141 142const SIR_MAC_PROP_EXT_RATES_TYPE = 0; 143const SIR_MAC_PROP_AP_NAME_TYPE = 1; 144const SIR_MAC_PROP_HCF_TYPE = 2; 145const SIR_MAC_PROP_WDS_TYPE = 3; 146const SIR_MAC_PROP_BP_IND_TYPE = 4; 147const SIR_MAC_PROP_NEIGHBOR_BSS_TYPE = 5; 148const SIR_MAC_PROP_LOAD_INFO_TYPE = 6; 149const SIR_MAC_PROP_ASSOC_TYPE = 7; 150const SIR_MAC_PROP_LOAD_BALANCE_TYPE = 8; 151const SIR_MAC_PROP_LL_ATTR_TYPE = 9; 152const SIR_MAC_PROP_CAPABILITY = 10; 153const SIR_MAC_PROP_VERSION = 11; 154const SIR_MAC_PROP_EDCAPARAMS = 12; 155const SIR_MAC_PROP_CHANNEL_SWITCH = 15; 156const SIR_MAC_PROP_QUIET_BSS = 16; 157const SIR_MAC_PROP_TRIG_STA_BK_SCAN = 17; 158 159const ANI_WDS_INFO_MAX_LENGTH = 64; 160const SIR_MAC_MAX_NUMBER_OF_RATES = 12; 161const HT_MAX_SUPPORTED_MCS_SET = 16; 162const MAX_SUPPORTED_NEIGHBOR_RPT = 15; 163const MAX_QOS_DSCP_DATA_LEN = 58; 164const QOS_DSCP_RANGE_LEN = 16; 165 166///////////////////////////////////////////////////////////////////////////// 167// Wi-Fi Protected Setup TLV Identifiers // 168// WSC Version 2.0.0 Table 28 // 169///////////////////////////////////////////////////////////////////////////// 170///////////////////////////////////////////////////////////////////////////// 171// Wi-Fi Simple Configuration TLV Identifiers // 172// WFA Vendor Extension Subelements // 173///////////////////////////////////////////////////////////////////////////// 174const TLV_VERSION2 = 0; 175const TLV_AUTHORIZED_MAC = 1; 176const TLV_NETWORK_KEY_SHAREABLE = 2; 177const TLV_REQUEST_TO_ENROLL = 3; 178const TLV_SETTINGS_DELAY_TIME = 4; 179 180const TLV_VERSION = 0x104A; 181const TLV_WI_FI_SIMPLE_CONFIG_STATE = 0x1044; 182const TLV_AP_SETUP_LOCKED = 0x1057; 183const TLV_SELECTED_REGISTRAR_CONFIG_METHODS = 0x1053; 184const TLV_DEVICE_PASSWORD_ID = 0x1012; 185const TLV_UUID_E = 0x1047; 186const TLV_UUID_R = 0x1048; 187const TLV_RF_BANDS = 0x103C; 188const TLV_REQUEST_TYPE = 0x103A; 189const TLV_RESPONSE_TYPE = 0x103B; 190const TLV_CONFIG_METHODS = 0x1008; 191const TLV_PRIMARY_DEVICE_TYPE = 0x1054; 192const TLV_ASSOCIATION_STATE = 0x1002; 193const TLV_CONFIGURATION_ERROR = 0x1009; 194const TLV_MANUFACTURER = 0x1021; 195const TLV_MODEL_NAME = 0x1023; 196const TLV_MODEL_NUMBER = 0x1024; 197const TLV_SERIAL_NUMBER = 0x1042; 198const TLV_DEVICE_NAME = 0x1011; 199const TLV_SELECTED_REGISTRAR = 0x1041; 200const TLV_VENDOR_EXTENSION = 0x1049; 201const TLV_REQUESTED_DEVICE_TYPE = 0x106A; 202 203///////////////////////////////////////////////////////////////////////////// 204// Wi-Fi Direct/P2P TLV Identifiers // 205///////////////////////////////////////////////////////////////////////////// 206const TLV_P2P_STATUS = 0; 207const TLV_MINOR_REASON_CODE = 1; 208const TLV_P2P_CAPABILITY = 2; 209const TLV_P2P_DEVICE_ID = 3; 210const TLV_P2P_GROUP_OWNER_INTENT = 4; 211const TLV_CONFIGURATION_TIMEOUT = 5; 212const TLV_LISTEN_CHANNEL = 6; 213const TLV_P2P_GROUP_BSSID = 7; 214const TLV_EXTENDED_LISTEN_TIMING = 8; 215const TLV_INTENDED_P2P_INTERFACE_ADDRESS = 9; 216const TLV_P2P_MANAGEABILITY = 10; 217const TLV_CHANNEL_LIST = 11; 218const TLV_NOTICE_OF_ABSENCE = 12; 219const TLV_P2P_DEVICE_INFO = 13; 220const TLV_P2P_GROUP_INFO = 14; 221const TLV_P2P_GROUP_ID = 15; 222const TLV_P2P_INTERFACE = 16; 223const TLV_OPERATING_CHANNEL = 17; 224const TLV_INVITATION_FLAGS = 18; 225const TLV_P2P_VENDOR_SPECIFIC = 221; 226 227 228///////////////////////////////////////////////////////////////////////////// 229// MBO-OCE Attributes (0, 151-255: Reserved) // 230///////////////////////////////////////////////////////////////////////////// 231const TLV_MBO_AP_CAP_ATTR = 1; 232const TLV_NON_PREFERRED_CHAN_REPORT_ATTR = 2; 233const TLV_CELLULAR_DATA_CAP_ATTR = 3; 234const TLV_ASSOC_DISSALLOWED_ATTR = 4; 235const TLV_CELLULAR_DATA_CON_PREF_ATTR = 5; 236const TLV_TRANSITION_REASON_CODE_ATTR = 6; 237const TLV_TRANSITION_REJECT_REASON_CODE_ATTR = 7; 238const TLV_ASSOC_RETRY_DELAY_ATTR = 8; 239 240// 9-100 : Reserved for MBO // 241 242// OCE ATTRIBUTES // 243const TLV_OCE_CAP_IND_ATTR = 101; 244const TLV_RSSI_ASSOC_REJ_ATTR = 102; 245const TLV_REDUCED_WAN_METRICS_ATTR = 103; 246// 104-150 : Reserved for OCE 247 248 249 250///////////////////////////////////////////////////////////////////////////// 251// Fixed Fields 252 253FF AuthAlgo (2) // C.f. Sec. 7.3.1.1 254{ 255 algo, 2; 256} 257 258FF AuthSeqNo (2) // 7.3.1.2 259{ 260 no, 2; 261} 262 263FF BeaconInterval (2) // 7.3.1.3 264{ 265 interval, 2; 266} 267 268FF Capabilities (2) // 7.3.1.4 269{ 270 { 271 ess: 1; 272 ibss: 1; 273 cfPollable: 1; 274 cfPollReq: 1; 275 privacy: 1; 276 shortPreamble: 1; 277 criticalUpdateFlag: 1; 278 channelAgility: 1; 279 spectrumMgt: 1; 280 qos: 1; 281 shortSlotTime: 1; 282 apsd: 1; 283 rrm: 1; 284 dsssOfdm: 1; 285 delayedBA: 1; 286 immediateBA: 1; 287 } 288} 289 290FF CurrentAPAddress(6) // 7.3.1.5 291{ 292 mac[6]; 293} 294 295FF ListenInterval (2) // 7.3.1.6 296{ 297 interval, 2; 298} 299 300FF Reason (2) // 7.3.1.7 301{ 302 code, 2; 303} 304 305FF AID (2) // 7.3.1.8 306{ 307 associd, 2; 308} 309 310FF Status (2) // 7.3.1.9 311{ 312 status, 2; 313} 314 315FF TimeStamp (8) // 7.3.1.10 316{ 317 timestamp, 8; 318} 319 320FF Category (1) // 7.3.1.11 321{ 322 category, 1; 323} 324 325FF Action (1) // 7.3.1.11 326{ 327 action, 1; 328} 329 330FF TransactionId (2) // 7.3.1.11 331{ 332 transId[2]; 333} 334 335FF DialogToken (1) // 7.3.1.12 336{ 337 token, 1; 338} 339 340FF StatusCode (1) // WMM Spec 2.2.10 341{ 342 statusCode, 1; 343} 344 345FF p2p_action_oui (4) 346{ 347 oui_data[4]; 348} 349 350FF p2p_action_subtype (1) 351{ 352 subtype, 1; 353} 354 355FF OperatingMode (1) 356{ 357 { 358 //Operating Mode field 359 chanWidth: 2; 360 reserved: 2; 361 rxNSS: 3; 362 rxNSSType: 1; 363 } 364} 365 366FF SMPowerModeSet (1) //7.3.1.25 367{ 368 { 369 PowerSave_En: 1; 370 Mode: 1; 371 reserved: 6; 372 } 373} 374 375FF TSInfo (3) // 7.3.2.30 376{ 377 { 378 traffic_type: 1; 379 tsid: 4; 380 direction: 2; 381 access_policy: 2; 382 aggregation: 1; 383 psb: 1; 384 user_priority: 3; 385 tsinfo_ack_pol: 2; 386 schedule: 1; 387 unused: 15; 388 } 389} 390 391FF NumOfRepetitions (2) 392{ 393 repetitions, 2; 394} 395 396FF TxPower (1) 397{ 398 txPower, 1; 399} 400 401FF MaxTxPower (1) 402{ 403 maxTxPower, 1; 404} 405FF TPCEleID (1) 406{ 407 TPCId, 1; 408} 409FF TPCEleLen (1) 410{ 411 TPCLen, 1; 412} 413FF LinkMargin (1) 414{ 415 linkMargin, 1; 416} 417FF RxAntennaId (1) 418{ 419 antennaId, 1; 420} 421FF TxAntennaId (1) 422{ 423 antennaId, 1; 424} 425FF RCPI (1) 426{ 427 rcpi, 1; 428} 429FF RSNI (1) 430{ 431 rsni, 1; 432} 433 434FF VhtMembershipStatusArray(8) // 8.4.1.51 435{ 436 membershipStatusArray[8]; 437} 438 439FF VhtUserPositionArray(16) // 8.4.1.52 440{ 441 userPositionArray[16]; 442} 443 444FF ext_chan_switch_ann_action(4) 445{ 446 { 447 switch_mode: 8; 448 op_class: 8; 449 new_channel: 8; 450 switch_count: 8; 451 } 452} 453 454FF addba_param_set(2) 455{ 456 { 457 amsdu_supp: 1; 458 policy: 1; 459 tid: 4; 460 buff_size: 10; 461 } 462} 463 464FF ba_timeout(2) 465{ 466 timeout, 2; 467} 468 469FF ba_start_seq_ctrl(2) 470{ 471 { 472 frag_number: 4; 473 ssn: 12; 474 } 475} 476 477FF vendor_oui (3) 478{ 479 oui_data[3]; 480} 481 482FF vendor_action_subtype (1) 483{ 484 subtype, 1; 485} 486 487IE addba_extn_element(EID_ADDBA_EXTN_ELEMENT) 488{ 489 { 490 no_fragmentation: 1; 491 he_frag_operation: 2; 492 reserved: 2; 493 extd_buff_size: 3; 494 } 495} 496 497FF delba_param_set(2) 498{ 499 { 500 reserved: 11; 501 initiator: 1; 502 tid: 4; 503 } 504} 505 506///////////////////////////////////////////////////////////////////////////// 507// TLVs // 508///////////////////////////////////////////////////////////////////////////// 509 510/** 511 * \brief Version 512 * 513 * WPS 1.0h 514 * Version specifies the Easy Setup version. The one-byte field is broken 515 * into a four-bit major part using the top MSBs and four-bit minor part 516 * using the LSBs. As an example, version 3.2 would be 0x32. 517 * 518 * WSC 2.0.0 519 * Deprecated Version mechanism. This attribute is always set to value 0x10 520 * (version 1.0) for backwards compatibility. Version 1.0h of the specification 521 * did not fully describe the version negotiation mechanism and version 2.0 522 * introduced a new subelement (Version2) for indicating the version number 523 * to avoid potential interoperability issues with deployed 1.0h-based devices. 524 * 525 */ 526 527TLV Version( TLV_VERSION ) ( 2 : 2 ) MSB 528{ 529 { 530 minor: 4; 531 major: 4; 532 } 533} 534 535/// Wi-Fi Protected Setup State 536TLV WPSState( TLV_WI_FI_SIMPLE_CONFIG_STATE ) ( 2 : 2 ) MSB 537{ 538 state, 1; 539} 540 541/** 542 * \brief AP Setup Locked 543 * 544 * 545 * This variable indicates that the AP has entered a state in which it will 546 * refuse to allow an external Registrar to attempt to run the Registration 547 * Protocol using the AP?s PIN (with the AP acting as Enrollee). The AP 548 * should enter this state if it believes a brute force attack is underway 549 * against the AP?s PIN. 550 * 551 * When the AP is in this state, it MUST continue to allow other Enrollees to 552 * connect and run the Registration Protocol with any external Registrars or 553 * the AP's built-in Registrar (if any). It is only the use of the AP' PIN 554 * for adding external Registrars that is disabled in this state. 555 * 556 * The AP Setup Locked state can be reset to FALSE through an authenticated 557 * call to SetAPSettings. APs may provide other implementation-specific 558 * methods of resetting the AP Setup Locked state as well. 559 * 560 * 561 */ 562 563TLV APSetupLocked( TLV_AP_SETUP_LOCKED ) ( 2 : 2 ) MSB 564{ 565 fLocked, 1; 566} 567 568/** 569 * \brief Selected Registrar Config Methods 570 * 571 * 572 * This attribute has the same values that Config Methods have. It is used in 573 * Probe Response messages to convey the Config Methods of the selected 574 * Registrar. 575 * 576 * 577 */ 578 579TLV SelectedRegistrarConfigMethods ( TLV_SELECTED_REGISTRAR_CONFIG_METHODS ) ( 2 : 2 ) MSB 580{ 581 methods, 2; 582} 583 584/** 585 * \brief UUID-E 586 * 587 * 588 * The universally unique identifier (UUID) element is a unique GUID 589 * generated by the Enrollee. It uniquely identifies an operational device 590 * and should survive reboots and resets. The UUID is provided in binary 591 * format. If the device also supports UPnP, then the UUID corresponds to the 592 * UPnP UUID. 593 * 594 * 595 */ 596 597TLV UUID_E ( TLV_UUID_E ) ( 2 : 2 ) MSB 598{ 599 uuid[ 16 ]; 600} 601 602/** 603 * \brief UUID-R 604 * 605 * 606 * The universally unique identifier (UUID) element is a unique GUID 607 * generated by the Registrar. It uniquely identifies an operational device 608 * and should survive reboots and resets. The UUID is provided in binary 609 * format. If the device also supports UPnP, then the UUID corresponds to the 610 * UPnP UUID. 611 * 612 * 613 */ 614 615TLV UUID_R ( TLV_UUID_R ) ( 2 : 2 ) MSB 616{ 617 uuid[ 16 ]; 618} 619 620/** 621 * \brief RF Bands 622 * 623 * 624 \code 625 626 0x01 2.4GHz 627 0x02 5.0GHz 628 629 \endcode 630 * 631 * 632 */ 633 634TLV RFBands ( TLV_RF_BANDS ) ( 2 : 2 ) MSB 635{ 636 bands, 1; 637} 638 639 640/** 641 * \brief Selected Registrar 642 * 643 * 644 * This field indicates that a Registrar has been selected by a user and that 645 * an Enrollee should proceed with setting up an 802.1X uncontrolled data 646 * port with the Registrar. 647 * 648 * 649 */ 650 651TLV SelectedRegistrar ( TLV_SELECTED_REGISTRAR ) ( 2 : 2 ) MSB 652{ 653 selected, 1; 654} 655 656/** 657 * \brief Config Methods 658 * 659 * 660 * The Config Methods Data component lists the configuration methods the 661 * Enrollee or Registrar supports. The list is a bitwise OR of values from 662 * the table below. In addition to Config Methods, APs and STAs that support 663 * the UPnP Management Interface must support the Permitted Config Methods 664 * attribute, which is used to control the Config Methods that are enabled on 665 * that AP. 666 * 667 \code 668 669 Value Hardware Interface 670 0x0001 USBA (Flash Drive) 671 0x0002 Ethernet 672 0x0004 Label 673 0x0008 Display 674 0x0010 External NFC Token 675 0x0020 Integrated NFC Token 676 0x0040 NFC Interface 677 0x0080 PushButton 678 0x0100 Keypad 679 680 \endcode 681 * 682 * 683 */ 684 685TLV ConfigMethods ( TLV_CONFIG_METHODS ) ( 2 : 2 ) MSB 686{ 687 methods, 2; 688} 689 690/** 691 * \brief Association State 692 * 693 * 694 * The Association State component shows the configuration and previous 695 * association state of the wireless station when sending a Discovery 696 * request. 697 * 698 \code 699 700 Association State Description 701 0 Not Associated 702 1 Connection Success 703 2 Configuration Failure 704 3 Association Failure 705 4 IP Failure 706 707 \endcode 708 * 709 * 710 */ 711 712TLV AssociationState ( TLV_ASSOCIATION_STATE ) ( 2 : 2 ) MSB 713{ 714 state, 2; 715} 716 717/** 718 * \brief Configuration Error 719 * 720 * 721 * The Configuration Error component shows the result of the device 722 * attempting to configure itself and to associate with the WLAN. 723 * 724 \code 725 726 Configuration Error Description 727 0 No Error 728 1 OOB Interface Read Error 729 2 Decryption CRC Failure 730 3 2.4 channel not supported 731 4 5.0 channel not supported 732 5 Signal too weak 733 6 Network auth failure 734 7 Network association failure 735 8 No DHCP response 736 9 Failed DHCP config 737 10 IP address conflict 738 11 Couldn't connect to Registrar 739 12 Multiple PBC sessions detected 740 13 Rogue activity suspected 741 14 Device busy 742 15 Setup locked 743 16 Message Timeout 744 17 Registration Session Timeout 745 18 Device Password Auth Failure 746 747 \endcode 748 * 749 * The Device busy error is returned if the sending device is unable to 750 * respond to the request due to some internal conflict or resource 751 * contention issue. For example, if a device is only capable of performing a 752 * single instance of the Registration Protocol at a time, it may return this 753 * error in response to attempts to start another instance in the middle of 754 * an active session. 755 * 756 * 757 */ 758 759TLV ConfigurationError ( TLV_CONFIGURATION_ERROR ) ( 2 : 2 ) MSB 760{ 761 error, 2; 762} 763 764TLV Manufacturer ( TLV_MANUFACTURER ) ( 2 : 2 ) MSB 765{ 766 name[ 0..64 ]; 767} 768 769TLV ModelName ( TLV_MODEL_NAME ) ( 2 : 2 ) MSB 770{ 771 text[ 0..32 ]; 772} 773 774TLV ModelNumber ( TLV_MODEL_NUMBER ) ( 2 : 2 ) MSB 775{ 776 text[ 0..32 ]; 777} 778 779TLV SerialNumber ( TLV_SERIAL_NUMBER ) ( 2 : 2 ) MSB 780{ 781 text[ 0..32 ]; 782} 783 784TLV DeviceName ( TLV_DEVICE_NAME ) ( 2 : 2 ) MSB 785{ 786 text[ 0..32 ]; 787} 788 789/** 790 * \brief Device Password ID 791 * 792 * 793 * This attribute is used to identify a device password. There are six 794 * predefined values and ten reserved values. If the Device Password ID is 795 * Default, the Enrollee should use its PIN password (from the label or 796 * display). This password may correspond to the label, display, or a 797 * user-defined password that has been configured to replace the original 798 * device password. 799 * 800 * User-specified indicates that the user has overridden the password with a 801 * manually selected value. Machine-specified indicates that the original 802 * PIN password has been overridden by a strong, machinegenerated device 803 * password value. The Rekey value indicates that the device's 256-bit 804 * rekeying password will be used. The PushButton value indicates that the 805 * PIN is the all-zero value reserved for the PushButton Configuration 806 * method. 807 * 808 * The Registrar-specified value indicates a PIN that has been obtained from 809 * the Registrar (via a display or other out-of-band method). This value may 810 * be further augmented with the optional 'Identity' attribute in M1. This 811 * augmentation is useful when multiple predefined UserID/PIN pairs have been 812 * established by a Registrar such as an authenticator used for Hotspot 813 * access. If the Device Password ID in M1 is not one of the predefined or 814 * reserved values, it corresponds to a password given to the Registrar as an 815 * OOB Device Password. 816 * 817 \code 818 819 Value Description 820 821 0x0000 Default (PIN) 822 0x0001 User-specified 823 0x0002 Machine-specified 824 0x0003 Rekey 825 0x0004 PushButton 826 0x0005 Registrar-specified 827 0x0006 - 0x000F Reserved 828 829 \endcode 830 * 831 * 832 */ 833 834TLV DevicePasswordID ( TLV_DEVICE_PASSWORD_ID ) ( 2 : 2 ) MSB 835{ 836 id, 2; 837} 838 839 840/** 841 * \brief Primary Device Type 842 * 843 * 844 * This attribute contains the primary type of the device. Its format 845 * follows: 846 * 847 \code 848 849 0 1 2 3 850 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 851 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 852 | Attribute ID | Length | 853 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 854 | Category ID | OUI (1-2) | 855 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 856 | OUI (3-4) | Sub Category ID | 857 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 858 859 \endcode 860 * 861 * Vendor-specific sub-categories are designated by setting the OUI to the 862 * value associated with that vendor. Note that a four-byte subdivided OUI 863 * is used. For the predefined values, the Wi-Fi Alliance OUI of 00 50 F2 04 864 * is used. The predefined values for Category ID and Sub Category ID are 865 * provided in the next table. There is no way to indicate a vendor-specific 866 * main device category. The OUI applies only to the interpretation of the 867 * Sub Category. If a vendor does not use sub categories for their OUI, the 868 * three-byte OUI occupies the first three bytes of the OUI field and the 869 * fourth byte is set to zero. 870 * 871 * 872 \code 873 874 Category ID Value Sub Category ID Value 875 Computer 1 PC 1 876 Server 2 877 Media Center 3 878 Input Device 2 879 Printers, Scanners, Printer 1 880 Faxes and Copiers 3 Scanner 2 881 Camera 4 Digital Still Camera 1 882 Storage 5 NAS 1 883 Network AP 1 884 Infrastructure 6 Router 2 885 Switch 3 886 Displays 7 Television 1 887 Electronic Picture Frame 2 888 Projector 3 889 Multimedia Devices 8 DAR 1 890 PVR 2 891 MCX 3 892 Gaming Devices 9 Xbox 1 893 Xbox360 2 894 Playstation 3 895 Telephone 10 Windows Mobile 1 896 897 \endcode 898 * 899 * 900 */ 901 902TLV PrimaryDeviceType ( TLV_PRIMARY_DEVICE_TYPE ) ( 2 : 2 ) MSB 903{ 904 primary_category, 2; 905 oui[ 4 ]; 906 sub_category, 2; 907} 908 909 910/** 911 * \brief Request Type 912 * 913 * 914 * The Request Type component specifies the mode in which the device will 915 * operate in for this setup exchange. If the device is an Enrollee, it may 916 * send only discovery messages or it may also request that the Registrar 917 * proceed with opening a data connection. This protocol allows Enrollees to 918 * more efficiently discover devices on the network. 919 920 * If the device indicates that it intends to engage setup either as a 921 * Registrar or an Enrollee, the Access Point continues to indicate that it 922 * will operate as an AP in the response. The Request Type attribute is 923 * carried throughout the 802.1X data channel setup process in the Wi-Fi 924 * Protected Setup IE. There are two sub-types of Registrars: WLAN Manager 925 * Registrar indicates that this Registrar intends to manage the AP or STA 926 * settings using UPnP. It will derive a UPnP AP or STA Management key. The 927 * ordinary Registrar type indicates that this Registrar does not intend to 928 * subsequently manage the Enrollee's settings. APs must not derive AP 929 * Management Keys for an ordinary Registrar. If a Registrar does not intend 930 * to be a WLAN Manager Registrar, it should set the Request Type to 931 * Registrar. Doing so avoids needlessly consuming resources on the AP. 932 933 \code 934 935 Request Type Value Description 936 0x00 Enrollee, Info only 937 0x01 Enrollee, open 802.1X 938 0x02 Registrar 939 0x03 WLAN Manager Registrar 940 941 \endcode 942 * 943 * 944 */ 945 946TLV RequestType ( TLV_REQUEST_TYPE ) ( 2 : 2 ) MSB 947{ 948 reqType, 1; 949} 950 951/** 952 * \brief Response Type 953 * 954 * 955 * The Response Type component specifies the operational mode of the 956 * device for this setup exchange. The Response Type IE is carried 957 * throughout the 802.1X data channel setup process. 958 959 \code 960 961 Response Type Value Description 962 0x00 Enrollee, Info only 963 0x01 Enrollee, open 802.1X 964 0x02 Registrar 965 0x03 AP 966 967\endcode 968 * 969 * 970 */ 971 972TLV ResponseType ( TLV_RESPONSE_TYPE ) ( 2 : 2 ) MSB 973{ 974 resType, 1; 975} 976 977 978/////////////////////////////////////////////////////////////////////////// 979// WiFi Direct/P2P TLVs // 980/////////////////////////////////////////////////////////////////////////// 981 982/** 983 * \brief P2P Status Attribute 984 */ 985 986TLV P2PStatus ( TLV_P2P_STATUS ) ( 1 : 2 ) LSB 987{ 988 status, 1; 989} 990 991 992/** 993 * \brief Minor Reason Code Attribute 994 */ 995 996TLV MinorReasonCode ( TLV_MINOR_REASON_CODE ) ( 1 : 2 ) LSB 997{ 998 minorReasonCode, 1; 999} 1000 1001 1002/** 1003 * \brief P2P Capability Attribute 1004 */ 1005 1006TLV P2PCapability ( TLV_P2P_CAPABILITY ) ( 1 : 2 ) LSB 1007{ 1008 deviceCapability, 1; 1009 groupCapability, 1; 1010} 1011 1012 1013/** 1014 * \brief P2P Device Id Attribute 1015 */ 1016 1017TLV P2PDeviceId ( TLV_P2P_DEVICE_ID ) ( 1 : 2 ) LSB 1018{ 1019 P2PDeviceAddress[6]; 1020} 1021 1022/** 1023 * \brief Listen Channel Attribute 1024 */ 1025 1026TLV ListenChannel ( TLV_LISTEN_CHANNEL ) ( 1 : 2 ) LSB 1027{ 1028 countryString[3]; 1029 regulatoryClass, 1; 1030 channel, 1; 1031} 1032 1033/** 1034 * \brief Extended Listen Attribute 1035 */ 1036 1037TLV ExtendedListenTiming ( TLV_EXTENDED_LISTEN_TIMING ) ( 1 : 2 ) LSB 1038{ 1039 availibilityPeriod, 2; 1040 availibilityInterval, 2; 1041} 1042 1043 1044/** 1045 * \brief P2P Manageability Attribute 1046 */ 1047 1048TLV P2PManageability ( TLV_P2P_MANAGEABILITY ) ( 1 : 2 ) LSB 1049{ 1050 manageability, 1; 1051} 1052 1053 1054/** 1055 * \brief Notice of Absence 1056 */ 1057 1058TLV NoticeOfAbsence ( TLV_NOTICE_OF_ABSENCE ) ( 1 : 2 ) LSB 1059{ 1060 index, 1; 1061 CTSWindowOppPS, 1; 1062 NoADesc[0..36]; 1063} 1064 1065/** 1066 * \brief P2P Device Info Attribute 1067 */ 1068 1069TLV P2PDeviceInfo ( TLV_P2P_DEVICE_INFO ) ( 1 : 2 ) LSB 1070{ 1071 P2PDeviceAddress[6]; 1072 configMethod, 2 , FLIPBYTEORDER; 1073 primaryDeviceType[8]; 1074 MANDATORYTLV DeviceName; 1075} 1076 1077 1078/** 1079 * \brief P2P Group Info Attribute 1080 */ 1081 1082TLV P2PGroupInfo ( TLV_P2P_GROUP_INFO ) ( 1 : 2 ) LSB 1083{ 1084 P2PClientInfoDesc[0..1024]; 1085} 1086 1087 1088/** 1089 * \brief P2P Interface Attribute 1090 */ 1091 1092TLV P2PInterface ( TLV_P2P_INTERFACE ) ( 1 : 2 ) LSB 1093{ 1094 P2PDeviceAddress[6]; 1095} 1096 1097 1098/** 1099 * \brief Operating Channel Attribute 1100 */ 1101 1102TLV OperatingChannel ( TLV_OPERATING_CHANNEL ) ( 1 : 2 ) LSB 1103{ 1104 countryString[3]; 1105 regulatoryClass, 1; 1106 channel, 1; 1107} 1108 1109/////////////////////////////////////////////////////////////////////////// 1110// MBO-OCE ATTR TLVs // 1111/////////////////////////////////////////////////////////////////////////// 1112 1113TLV mbo_ap_cap ( TLV_MBO_AP_CAP_ATTR ) ( 1 : 1 ) LSB 1114{ 1115 mbo_cap_ind, 1; 1116} 1117 1118TLV non_prefferd_chan_rep ( TLV_NON_PREFERRED_CHAN_REPORT_ATTR ) ( 1 : 1 ) LSB 1119{ 1120 oper_class, 1; 1121 channel_report[3..254]; 1122} 1123 1124TLV cellular_data_cap ( TLV_CELLULAR_DATA_CAP_ATTR ) ( 1 : 1 ) LSB 1125{ 1126 cellular_connectivity, 1; 1127} 1128 1129TLV assoc_disallowed ( TLV_ASSOC_DISSALLOWED_ATTR ) ( 1 : 1 ) LSB 1130{ 1131 reason_code, 1; 1132} 1133 1134TLV cellular_data_con_pref ( TLV_CELLULAR_DATA_CON_PREF_ATTR ) ( 1 : 1 ) LSB 1135{ 1136 cellular_preference, 1; 1137} 1138 1139TLV transition_reason ( TLV_TRANSITION_REASON_CODE_ATTR ) ( 1 : 1 ) LSB 1140{ 1141 transition_reason_code, 1; 1142} 1143 1144TLV transition_reject_reason ( TLV_TRANSITION_REJECT_REASON_CODE_ATTR ) ( 1 : 1 ) LSB 1145{ 1146 transition_reject_code, 1; 1147} 1148 1149TLV assoc_retry_delay ( TLV_ASSOC_RETRY_DELAY_ATTR ) ( 1 : 1 ) LSB 1150{ 1151 delay, 2; 1152} 1153 1154// OCE Attributes // 1155 1156TLV oce_cap ( TLV_OCE_CAP_IND_ATTR ) ( 1 : 1 ) LSB 1157{ 1158 { 1159 oce_release: 3; 1160 is_sta_cfon : 1; 1161 non_oce_ap_present : 1; 1162 reserved: 3; 1163 } 1164} 1165 1166TLV rssi_assoc_rej ( TLV_RSSI_ASSOC_REJ_ATTR ) ( 1 : 1 ) LSB 1167{ 1168 delta_rssi, 1; 1169 retry_delay, 1; 1170} 1171 1172TLV reduced_wan_metrics ( TLV_REDUCED_WAN_METRICS_ATTR ) ( 1 : 1 ) LSB 1173{ 1174 { 1175 downlink_av_cap: 4; 1176 uplink_av_cap : 4; 1177 } 1178} 1179 1180/** 1181 * \brief Vendor Extension 1182 * 1183 * This variable permits vendor extensions in the Wi-Fi Simple 1184 * Configuration TLV framework. The Vendor Extension figure 1185 * illustrates the implementation of vendor extensions. Vendor 1186 * ID is the SMI network management private enterprise code 1187 * 1188 * +-----------+----------------------+ 1189 * | Vendor ID | Vendor Data | 1190 * +-----------+----------------------+ 1191 * |<--- 3 --->|<----- 1 - 1021 ----->| 1192 * 1193 */ 1194 1195TLV VendorExtension ( TLV_VENDOR_EXTENSION ) ( 2 : 2 ) MSB 1196{ 1197 /* 1198 * vendorId is the SMI network management private enterprise code. 1199 * WFA Vendor ID 0x00372A 1200 * 1201 */ 1202 vendorId[ 3 ]; 1203 1204 /** 1205 * \brief Version2 1206 * 1207 * The Version2 field specifies the version Wi-Fi Simple 1208 * Configuration implemented by the device sending this attribute. 1209 * The one-byte field is broken into a four-bit major part using 1210 * the top MSBs and four-bit minor part using the LSBs. As an example, 1211 * version 3.2 would be 0x32. This subelement was added in the 1212 * specification version 2.0 and if the subelement is not included 1213 * in a message, the transmitter of the message is assumed to 1214 * use version 1.0. 1215 * 1216 */ 1217 OPTIONALTLV TLV Version2 ( TLV_VERSION2 ) ( 1 : 1 ) MSB 1218 { 1219 { 1220 minor: 4; 1221 major: 4; 1222 } 1223 } 1224 /** 1225 * \brief AuthorizedMACs 1226 * 1227 * This subelement contains a list of Enrollee MAC addresses (each 1228 * being six bytes in length) that have been registered to start WSC. 1229 * The AP includes this field in Beacon and Probe Response frames so 1230 * Enrollees can tell if they have been registered to start WSC. There 1231 * may be multiple Enrollees active on the network, but not all of them have 1232 * been registered to start WSC. This element allows an Enrollee to detect 1233 * if they should start WSC with the AP. The AuthorizedMACs field augments 1234 * the use of the Selected Registrar. 1235 * 1236 */ 1237 OPTIONALTLV TLV AuthorizedMACs ( TLV_AUTHORIZED_MAC ) ( 1 : 1 ) MSB 1238 { 1239 mac[6]; 1240 } 1241 1242 /** 1243 * \brief Request to Enroll 1244 * 1245 * This optional subelement in the WSC IE in Probe Request or M1 indicates 1246 * the desire to enroll in the network by setting its value to TRUE. If the 1247 * Registrar gets this subelement it can use this as a trigger that a device 1248 * wants to enroll (maybe an indication can be shown to the user). The device 1249 * must set it to FALSE after the registration protocol completion. 1250 * 1251 */ 1252 OPTIONALTLV TLV RequestToEnroll( TLV_REQUEST_TO_ENROLL ) ( 1 : 1 ) MSB 1253 { 1254 req, 1; 1255 } 1256} 1257 1258/** 1259 * \brief Requested Device Type 1260 * 1261 * This attribute contains the requested device type of a Wi-Fi 1262 * Direct device. 1263 * 1264 * This attribute allows a device to specify the Primary Device Type 1265 * or the Secondary Device Type of other devices it is interested in. 1266 * Only a device that receives a Probe Request containing a WSC IE with 1267 * this attribute and with a Primary Device Type or Secondary Device Type 1268 * that matches the Requested Device Type will respond with a Probe Response. 1269 * 1270 * Its format and contents is identical to the 'Primary Device Type'. 1271 * 1272 * Both the Category ID and Sub Category ID can be used as a filter. If only 1273 * looking for devices with a certain Category ID, the OUI and Sub Category ID 1274 * fields will have to be set to zero. 1275 * 1276 */ 1277TLV RequestDeviceType ( TLV_REQUESTED_DEVICE_TYPE ) ( 2 : 2 ) MSB 1278{ 1279 primary_category, 2; 1280 oui[ 4 ]; 1281 sub_category, 2; 1282} 1283 1284///////////////////////////////////////////////////////////////////////////// 1285// Information Elements 1286 1287IE SSID (EID_SSID) // C.f. Sec. 7.3.2.1 1288{ 1289 ssid[0..32]; 1290} 1291 1292IE SuppRates (EID_SUPP_RATES) // 7.3.2.2 1293{ 1294 rates[0..SIR_MAC_MAX_NUMBER_OF_RATES]; 1295} 1296 1297IE FHParamSet (EID_FH_PARAM_SET) // 7.3.2.3 1298{ 1299 dwell_time, 2; 1300 hop_set, 1; 1301 hop_pattern, 1; 1302 hop_index, 1; 1303} 1304 1305IE DSParams (EID_DS_PARAM_SET) // 7.3.2.4 1306{ 1307 curr_channel, 1; 1308} 1309 1310IE CFParams (EID_CF_PARAM_SET) // 7.3.2.5 1311{ 1312 cfp_count, 1; 1313 cfp_period, 1; 1314 cfp_maxduration, 2; 1315 cfp_durremaining, 2; 1316} 1317 1318IE TIM (EID_TIM) // 7.3.2.6 1319{ 1320 dtim_count, 1; 1321 dtim_period, 1; 1322 bmpctl, 1; 1323 vbmp[1..251]; 1324} 1325 1326IE ChallengeText (EID_CHALLENGE_TEXT) // 7.3.2.8 1327{ 1328 text[1..253]; 1329} 1330 1331IE RequestedInfo (EID_REQUEST) // 7.3.2.12 1332{ 1333 requested_eids[0..255]; 1334} 1335 1336const EID_BCN_REQ_EXTENDED_INFO = 11; 1337IE ExtRequestedInfo (EID_BCN_REQ_EXTENDED_INFO) 1338{ 1339 req_element_id, 1; 1340 req_element_id_ext[0..255]; 1341} 1342 1343IE Country (EID_COUNTRY) // 7.3.2.9 1344{ 1345 country[3]; 1346 first_triplet[3]; 1347 OPTIONAL more_triplets[3][0..80]; 1348} 1349 1350IE FHParams (EID_FH_PATTERN) // 7.3.2.10 1351{ 1352 radix, 1; 1353 nchannels, 1; 1354} 1355 1356IE FHPattTable (EID_FH_PATT_TABLE) // 7.3.2.11 1357{ 1358 flag, 1; 1359 nsets, 1; 1360 modulus, 1; 1361 offset, 1; 1362 randtable[0..251]; 1363} 1364 1365IE ERPInfo (EID_ERP_INFO) // 7.3.2.13 1366{ 1367 { 1368 non_erp_present : 1; 1369 use_prot: 1; 1370 barker_preamble: 1; 1371 unused: 5; 1372 } 1373} 1374 1375IE ExtSuppRates (EID_EXT_SUPP_RATES) // 7.3.2.14 1376{ 1377 rates[1..SIR_MAC_MAX_NUMBER_OF_RATES]; 1378} 1379 1380IE PowerConstraints (EID_POWER_CONSTRAINTS) // 7.3.2.15 1381{ 1382 localPowerConstraints, 1; 1383} 1384 1385IE PowerCaps (EID_POWER_CAPABILITY) // 7.3.2.16 1386{ 1387 minTxPower, 1; 1388 maxTxPower, 1; 1389} 1390 1391IE TPCRequest (EID_TPC_REQUEST) // 7.3.2.17 1392{ } 1393 1394IE TPCReport (EID_TPC_REPORT) // 7.3.2.18 1395{ 1396 tx_power, 1; 1397 link_margin, 1; 1398} 1399 1400IE SuppChannels (EID_SUPPORTED_CHANNELS) // 7.2.3.19 1401{ 1402 bands[2][0..48]; 1403} 1404 1405IE SuppOperatingClasses (EID_SUPPORTED_OPER_CLASSES) 1406{ 1407 classes[1..32]; 1408} 1409 1410IE ChanSwitchAnn (EID_CHANNEL_SWITCH_ANN) // 7.3.2.20 1411{ 1412 switchMode, 1; 1413 newChannel, 1; 1414 switchCount, 1; 1415} 1416 1417IE ext_chan_switch_ann (EID_EXT_CHAN_SWITCH) // 8.4.2.55 1418{ 1419 switch_mode, 1; 1420 new_reg_class, 1; 1421 new_channel, 1; 1422 switch_count, 1; 1423} 1424 1425IE max_chan_switch_time (EID_EXTN_ID_ELEMENT) OUI (0x34) 1426{ 1427 switch_time[3]; 1428} 1429 1430IE sec_chan_offset_ele (EID_SEC_CHAN_OFFSET) // 7.3.2.20a 1431{ 1432 secondaryChannelOffset, 1; 1433} 1434 1435IE Quiet (EID_QUIET) // 7.3.2.23 1436{ 1437 count, 1; 1438 period, 1; 1439 duration, 2; 1440 offset, 2; 1441} 1442 1443IE RSN (EID_RSN) // 7.3.2.25 1444{ 1445 // The version is 2 octets, and we only support version 1. 1446 version, 2 MUSTBE 1; 1447 // The next four octets will be the Optional Group Cipher Suite 1448 OPTIONAL gp_cipher_suite[4]; 1449 // The IE *may* stop here; if there's any more, we should see two more 1450 // octets giving the number of Pairwise Cipher Suites 1451 OPTIONAL pwise_cipher_suite_count, 2; 1452 // I don't see anything in the Standard limiting the number of Pairwise 1453 // Cypher Suites, other than the maximum length of an IE, which limits us 1454 // to 61. However, that seems needlessly wasteful of space. 1455 pwise_cipher_suites[4][0..6] COUNTIS pwise_cipher_suite_count; 1456 // Optional count of AKM suite selectors 1457 OPTIONAL akm_suite_cnt, 2; 1458 // Again, I see nothing in the Standard explicitly limiting the number of 1459 // AKM suite selectors other than the maximum size of an IE. 1460 akm_suite[4][0..6] COUNTIS akm_suite_cnt; 1461 OPTIONAL RSN_Cap[2]; 1462 // Finally, the IE may contain zero or more PMKIDs: 1463 OPTIONAL pmkid_count, 2; 1464 pmkid[16][0..4] COUNTIS pmkid_count; 1465 OPTIONAL gp_mgmt_cipher_suite[4]; 1466} 1467 1468IE RSNOpaque (EID_RSN) // 7.3.2.25 1469{ 1470 data[ 0..253 ]; 1471} 1472 1473IE WAPI (EID_WAPI) // 7.3.2.25 1474{ 1475 // The version is 2 octets, and we only support version 1. 1476 version, 2 MUSTBE 1; 1477 // count of AKM suite selectors 1478 akm_suite_count, 2; 1479 // Again, I see nothing in the Standard explicitly limiting the number of 1480 // AKM suite selectors other than the maximum size of an IE. 1481 akm_suites[4][0..4] COUNTIS akm_suite_count; 1482 // we should see two more 1483 // octets giving the number of Unicast Cipher Suites 1484 unicast_cipher_suite_count, 2; 1485 // I don't see anything in the Standard limiting the number of Pairwise 1486 // Cypher Suites, other than the maximum length of an IE, which limits us 1487 // to 61. However, that seems needlessly wasteful of space. 1488 unicast_cipher_suites[4][0..4] COUNTIS unicast_cipher_suite_count; 1489 // The next four octets will be the Multicast Cipher Suite 1490 multicast_cipher_suite[4]; 1491 // WAPI capabilities 1492 { 1493 preauth: 1; 1494 reserved: 15; 1495 } 1496 // Finally, the IE may contain zero or more BKIDs: 1497 OPTIONAL bkid_count, 2; 1498 bkid[16][0..4] COUNTIS bkid_count; 1499} 1500 1501IE WAPIOpaque (EID_WAPI) // 7.3.2.25 1502{ 1503 data[ 6..253 ]; 1504} 1505 1506IE QBSSLoad (EID_QBSS_LOAD) // 7.3.2.28 1507{ 1508 stacount, 2; 1509 chautil, 1; 1510 avail, 2; 1511} 1512 1513IE EDCAParamSet (EID_EDCA_PARAM_SET) // 7.3.2.29 1514{ 1515 qos, 1; // ToDo: This is a bitfield whose format 1516 // depends on whether this is from an AP 1517 // or a STA, information which I'm not 1518 // sure we have at parse time... 1519 reserved, 1; 1520 { 1521 acbe_aifsn: 4; 1522 acbe_acm: 1; 1523 acbe_aci: 2; 1524 unused1: 1; 1525 } 1526 { 1527 acbe_acwmin: 4; 1528 acbe_acwmax: 4; 1529 } 1530 acbe_txoplimit, 2; 1531 { 1532 acbk_aifsn: 4; 1533 acbk_acm: 1; 1534 acbk_aci: 2; 1535 unused2: 1; 1536 } 1537 { 1538 acbk_acwmin: 4; 1539 acbk_acwmax: 4; 1540 } 1541 acbk_txoplimit, 2; 1542 { 1543 acvi_aifsn: 4; 1544 acvi_acm: 1; 1545 acvi_aci: 2; 1546 unused3: 1; 1547 } 1548 { 1549 acvi_acwmin: 4; 1550 acvi_acwmax: 4; 1551 } 1552 acvi_txoplimit, 2; 1553 { 1554 acvo_aifsn: 4; 1555 acvo_acm: 1; 1556 acvo_aci: 2; 1557 unused4: 1; 1558 } 1559 { 1560 acvo_acwmin: 4; 1561 acvo_acwmax: 4; 1562 } 1563 acvo_txoplimit, 2; 1564} 1565 1566IE TSPEC (EID_TSPEC) // 7.3.2.30 1567{ 1568 1569 // TS Info 1570 { 1571 traffic_type: 1; 1572 tsid: 4; 1573 direction: 2; 1574 access_policy: 2; 1575 aggregation: 1; 1576 psb: 1; 1577 user_priority: 3; 1578 tsinfo_ack_pol: 2; 1579 } 1580 { 1581 schedule: 1; 1582 unused: 7; 1583 } 1584 1585 // Nominal MSDU Size 1586 { 1587 size: 15; 1588 fixed: 1; 1589 } 1590 1591 max_msdu_size, 2; 1592 min_service_int, 4; 1593 max_service_int, 4; 1594 inactivity_int, 4; 1595 suspension_int, 4; 1596 service_start_time, 4; 1597 min_data_rate, 4; 1598 mean_data_rate, 4; 1599 peak_data_rate, 4; 1600 burst_size, 4; 1601 delay_bound, 4; 1602 min_phy_rate, 4; 1603 surplus_bw_allowance, 2; 1604 medium_time, 2; 1605 1606} // End IE TSPEC. 1607 1608IE TCLAS (EID_TCLAS) // 7.3.2.31 1609{ 1610 user_priority, 1; 1611 classifier_type, 1; 1612 classifier_mask, 1; 1613 UNION info (DISCRIMINATOR classifier_type) 1614 { 1615 EthParams (classifier_type IS 0) 1616 { 1617 source[6]; 1618 dest[6]; 1619 type, 2; 1620 } 1621 IpParams (classifier_type IS 1) 1622 { 1623 version, 1; 1624 UNION params (DISCRIMINATOR version) 1625 { 1626 IpV4Params (version IS 4) 1627 { 1628 source[4]; 1629 dest[4]; 1630 src_port, 2; 1631 dest_port, 2; 1632 DSCP, 1; 1633 proto, 1; 1634 reserved, 1; 1635 } 1636 IpV6Params (version IS 6) 1637 { 1638 source[16]; 1639 dest[16]; 1640 src_port, 2; 1641 dest_port, 2; 1642 flow_label[3]; 1643 } 1644 }; 1645 } 1646 Params8021dq (classifier_type IS 2) 1647 { 1648 tag_type, 2; 1649 } 1650 }; 1651} // End IE TCLASS 1652 1653const EID_BCN_REPORT_FRAME_BODY = 1; 1654IE BeaconReportFrmBody (EID_BCN_REPORT_FRAME_BODY) 1655{ 1656 reportedFields[0..224]; 1657} 1658 1659const EID_BCN_REPORT_FRAME_BODY_FRAGMENT_ID = 2; 1660IE beacon_report_frm_body_fragment_id (EID_BCN_REPORT_FRAME_BODY_FRAGMENT_ID) 1661{ 1662 // Data 1663 { 1664 beacon_report_id: 8; 1665 fragment_id_number: 7; 1666 more_fragments: 1; 1667 } 1668} 1669 1670const EID_BCN_REPORT_LAST_BEACON_REPORT_INDICATION = 164; 1671IE last_beacon_report_indication (EID_BCN_REPORT_LAST_BEACON_REPORT_INDICATION) 1672{ 1673 last_fragment, 1; 1674} 1675 1676const EID_REPORTING_REASON = 1; 1677IE reporting_reason (EID_REPORTING_REASON) 1678{ 1679 { 1680 failed_count: 1; 1681 fcs_error: 1; 1682 multiple_retry: 1; 1683 frame_duplicate: 1; 1684 rts_failure: 1; 1685 ack_failure: 1; 1686 retry: 1; 1687 reserved: 1; 1688 } 1689} 1690 1691const SUB_EID_BANDWIDTH_INDICATION = 164; 1692IE bw_indication (SUB_EID_BANDWIDTH_INDICATION) 1693{ 1694 { 1695 reserved: 1; 1696 disabled_sub_chan_bitmap_present: 1; 1697 reserved_1: 6; 1698 } 1699 { 1700 channel_width: 3; 1701 reserved_2: 5; 1702 } 1703 ccfs0, 1; 1704 ccfs1, 1; 1705 disabled_sub_chan_bitmap[2][0..1] COUNTIS disabled_sub_chan_bitmap_present; 1706} 1707 1708const SUB_EID_WIDE_BW_CHANNEL_SWITCH = 163; 1709IE wide_bw_chan_switch (SUB_EID_WIDE_BW_CHANNEL_SWITCH) 1710{ 1711 new_chan_width, 1; 1712 new_center_chan_freq0, 1; 1713 new_center_chan_freq1, 1; 1714} 1715 1716IE MeasurementReport (EID_MEAS_REPORT) // 7.3.2.22 1717{ 1718 token, 1; 1719 // Measurement Report Mode 1720 { 1721 late: 1; 1722 incapable: 1; 1723 refused: 1; 1724 unused: 5; 1725 } 1726 type, 1; 1727 OPTIONAL UNION report (DISCRIMINATOR type) 1728 { 1729 Basic (type IS 0) // 7.3.2.22.1 1730 { 1731 channel, 1; 1732 meas_start_time, 8; 1733 meas_duration, 2; 1734 // Map 1735 { 1736 bss: 1; 1737 ofdm_preamble: 1; 1738 unid_signal: 1; 1739 rader: 1; 1740 unmeasured: 1; 1741 unused: 3; 1742 } 1743 } 1744 CCA (type IS 1) 1745 { 1746 channel, 1; 1747 meas_start_time, 8; 1748 meas_duration, 2; 1749 cca_busy_fraction, 1; 1750 } 1751 RPIHistogram (type IS 2) 1752 { 1753 channel, 1; 1754 meas_start_time, 8; 1755 meas_duration, 2; 1756 rpi0_density, 1; 1757 rpi1_density, 1; 1758 rpi2_density, 1; 1759 rpi3_density, 1; 1760 rpi4_density, 1; 1761 rpi5_density, 1; 1762 rpi6_density, 1; 1763 rpi7_density, 1; 1764 } 1765 channel_load_report (type IS 3) 1766 { 1767 op_class, 1; 1768 channel, 1; 1769 meas_start_time, 8; 1770 meas_duration, 2; 1771 chan_load, 1; 1772 OPTIE wide_bw_chan_switch; 1773 OPTIE bw_indication; 1774 } 1775 Beacon (type IS 5) 1776 { 1777 regClass, 1; 1778 channel, 1; 1779 meas_start_time, 8; 1780 meas_duration, 2; 1781 // reported_frame_info, 1782 { 1783 condensed_PHY: 7; 1784 reported_frame_type: 1; 1785 } 1786 RCPI, 1; 1787 RSNI, 1; 1788 BSSID[6]; 1789 antenna_id, 1; 1790 parent_TSF, 4; 1791 OPTIE BeaconReportFrmBody; 1792 OPTIE beacon_report_frm_body_fragment_id; 1793 OPTIE last_beacon_report_indication; 1794 //IE vendor_specific 1795 } 1796 sta_stats (type IS 7) 1797 { 1798 meas_duration, 2; 1799 group_id, 1; 1800 UNION statsgroupdata (DISCRIMINATOR group_id) 1801 { 1802 dot11_counter_stats (group_id IS 0) 1803 { 1804 transmitted_fragment_count, 4; 1805 group_transmitted_frame_count, 4; 1806 failed_count, 4; 1807 received_fragment_count, 4; 1808 group_received_frame_count, 4; 1809 fcs_error_count, 4; 1810 transmitted_frame_count, 4; 1811 } 1812 dot11_mac_stats (group_id IS 1) 1813 { 1814 retry_count, 4; 1815 multiple_retry_count, 4; 1816 frame_duplicate_count, 4; 1817 rts_success_count, 4; 1818 rts_failure_count, 4; 1819 ack_failure_count, 4; 1820 } 1821 dot11_qos_counter (group_id IS 2) 1822 { 1823 qos_transmitted_fragment_count, 4; 1824 qos_failed_count, 4; 1825 qos_retry_count, 4; 1826 qos_multiple_retry_count, 4; 1827 qos_frame_duplicate_count, 4; 1828 qos_rts_success_count, 4; 1829 qos_rts_failure_count, 4; 1830 qos_ack_failure_count, 4; 1831 qos_received_fragment_count, 4; 1832 qos_transmitted_frame_count, 4; 1833 qos_discarded_frame_count, 4; 1834 qos_mpdus_received_count, 4; 1835 qos_retries_received_count, 4; 1836 } 1837 dot11_bss_average_access_delay (group_id IS 10) 1838 { 1839 ap_average_access_delay, 1; 1840 average_access_delay_besteffort, 1; 1841 average_access_delay_background, 1; 1842 average_access_delay_video, 1; 1843 average_access_delay_voice, 1; 1844 station_count, 2; 1845 channel_utilization, 1; 1846 } 1847 }; 1848 OPTIE reporting_reason; 1849 } 1850 1851 }; 1852} 1853 1854IE TSDelay (EID_TS_DELAY) // 7.3.2.32 1855{ 1856 delay, 4; 1857} 1858 1859IE TCLASSPROC (EID_TCLASS_PROC) // 7.3.2.33 1860{ 1861 processing, 1; 1862} 1863 1864IE Schedule (EID_SCHEDULE) // 7.3.2.34 1865{ 1866 { 1867 aggregation: 1; 1868 tsid: 4; 1869 direction: 2; 1870 reserved: 9; 1871 } 1872 service_start_time, 4; 1873 service_interval, 4; 1874 max_service_dur, 2; 1875 spec_interval, 2; 1876} 1877 1878IE QOSCapsAp (EID_QOS_CAPABILITY) // 7.3.2.35 1879{ 1880 { 1881 count: 4; 1882 qack: 1; 1883 qreq: 1; 1884 txopreq: 1; 1885 reserved: 1; 1886 } 1887} 1888 1889IE QOSCapsStation (EID_QOS_CAPABILITY) // 7.3.2.35 1890{ 1891 { 1892 acvo_uapsd: 1; 1893 acvi_uapsd: 1; 1894 acbk_uapsd: 1; 1895 acbe_uapsd: 1; 1896 qack: 1; 1897 max_sp_length: 2; 1898 more_data_ack: 1; 1899 } 1900} 1901 1902IE LinkIdentifier (EID_LINK_IDENTIFIER) // 7.3.2.62 1903{ 1904 bssid[6]; 1905 InitStaAddr[6]; 1906 RespStaAddr[6]; 1907} 1908 1909IE WPA (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x01) 1910{ 1911 // This IE's first two octets should be interpreted as a version number; 1912 // we only support version 1. 1913 version, 2 MUSTBE 1; 1914 // A four-octet Multicast Cipher may or may not appear next (hence the 1915 // OPTIONAL keyword) 1916 OPTIONAL multicast_cipher[4]; 1917 // Optional Unicast Cipher count 1918 OPTIONAL unicast_cipher_count, 2; 1919 // Next comes an array of four-octet Cipher Suite selectors; the COUNTIS 1920 // clause indicates that the actual number of selectors seen is in the 1921 // member 'unicast_cipher_count'. 1922 unicast_ciphers[4][0..4] COUNTIS unicast_cipher_count; 1923 // (Optional) Authentication suites: 1924 OPTIONAL auth_suite_count, 2; 1925 auth_suites[4][0..4] COUNTIS auth_suite_count; 1926 // This field is declared optional as per bugs 15234, 14755, & 14991. 1927 OPTIONAL caps, 2; 1928} 1929 1930IE WPAOpaque (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x01) 1931{ 1932 data[ 2..249 ]; 1933} 1934 1935IE WMMInfoStation (EID_VENDOR_SPECIFIC) OUI(0x00, 0x50, 0xF2, 0x02, 0x00) 1936{ 1937 // This IE contains the QoS Info field when sent from WMM Station 1938 version, 1; 1939 { 1940 acvo_uapsd: 1; 1941 acvi_uapsd: 1; 1942 acbk_uapsd: 1; 1943 acbe_uapsd: 1; 1944 reserved1: 1; 1945 max_sp_length: 2; 1946 reserved2: 1; 1947 } 1948} 1949 1950IE WMMInfoAp (EID_VENDOR_SPECIFIC) OUI(0x00, 0x50, 0xF2, 0x02, 0x00) 1951{ 1952 // This IE contains the QoS Info field when sent from WMM AP 1953 version, 1; 1954 { 1955 param_set_count: 4; 1956 reserved: 3; 1957 uapsd: 1; 1958 } 1959} 1960 1961 1962IE WMMParams (EID_VENDOR_SPECIFIC) OUI(0x00, 0x50, 0xF2, 0x02, 0x01) 1963{ 1964 version, 1 MUSTBE 1; 1965 qosInfo, 1; // ToDo: This is actually a 1966 // bitfield, but it's format 1967 // varies depending on whether 1968 // the sender is a STA or AP... 1969 reserved2, 1; 1970 { 1971 acbe_aifsn: 4; 1972 acbe_acm: 1; 1973 acbe_aci: 2; 1974 unused1: 1; 1975 } 1976 { 1977 acbe_acwmin: 4; 1978 acbe_acwmax: 4; 1979 } 1980 acbe_txoplimit, 2; 1981 { 1982 acbk_aifsn: 4; 1983 acbk_acm: 1; 1984 acbk_aci: 2; 1985 unused2: 1; 1986 } 1987 { 1988 acbk_acwmin: 4; 1989 acbk_acwmax: 4; 1990 } 1991 acbk_txoplimit, 2; 1992 { 1993 acvi_aifsn: 4; 1994 acvi_acm: 1; 1995 acvi_aci: 2; 1996 unused3: 1; 1997 } 1998 { 1999 acvi_acwmin: 4; 2000 acvi_acwmax: 4; 2001 } 2002 acvi_txoplimit, 2; 2003 { 2004 acvo_aifsn: 4; 2005 acvo_acm: 1; 2006 acvo_aci: 2; 2007 unused4: 1; 2008 } 2009 { 2010 acvo_acwmin: 4; 2011 acvo_acwmax: 4; 2012 } 2013 acvo_txoplimit, 2; 2014} 2015 2016IE WMMTSPEC (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xf2, 0x02, 0x02) 2017{ 2018 version, 1 MUSTBE 1; 2019 2020 // TS Info 2021 { 2022 traffic_type: 1; 2023 tsid: 4; 2024 direction: 2; 2025 access_policy: 2; 2026 aggregation: 1; 2027 psb: 1; 2028 user_priority: 3; 2029 tsinfo_ack_pol: 2; 2030 } 2031 { 2032 tsinfo_rsvd: 7; 2033 burst_size_defn: 1; 2034 } 2035 2036 // Nominal MSDU Size 2037 { 2038 size: 15; 2039 fixed: 1; 2040 } 2041 2042 max_msdu_size, 2; 2043 min_service_int, 4; 2044 max_service_int, 4; 2045 inactivity_int, 4; 2046 suspension_int, 4; 2047 service_start_time, 4; 2048 min_data_rate, 4; 2049 mean_data_rate, 4; 2050 peak_data_rate, 4; 2051 burst_size, 4; 2052 delay_bound, 4; 2053 min_phy_rate, 4; 2054 surplus_bw_allowance, 2; 2055 medium_time, 2; 2056 2057} // End IE WMMTSpec. 2058 2059IE WMMCaps (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x05) 2060{ 2061 version, 1 MUSTBE 1; 2062 { 2063 reserved: 4; 2064 qack: 1; 2065 queue_request: 1; 2066 txop_request: 1; 2067 more_ack: 1; 2068 } 2069} 2070 2071IE WMMTCLAS (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x06) 2072{ 2073 version, 1 MUSTBE 1; 2074 2075 user_priority, 1; 2076 classifier_type, 1; 2077 classifier_mask, 1; 2078 UNION info (DISCRIMINATOR classifier_type) 2079 { 2080 EthParams (classifier_type IS 0) 2081 { 2082 source[6]; 2083 dest[6]; 2084 type, 2; 2085 } 2086 IpParams (classifier_type IS 1) 2087 { 2088 version, 1; 2089 UNION params (DISCRIMINATOR version) 2090 { 2091 IpV4Params (version IS 4) 2092 { 2093 source[4]; 2094 dest[4]; 2095 src_port, 2; 2096 dest_port, 2; 2097 DSCP, 1; 2098 proto, 1; 2099 reserved, 1; 2100 } 2101 IpV6Params (version IS 6) 2102 { 2103 source[16]; 2104 dest[16]; 2105 src_port, 2; 2106 dest_port, 2; 2107 flow_label[3]; 2108 } 2109 }; 2110 } 2111 Params8021dq (classifier_type IS 2) 2112 { 2113 tag_type, 2; 2114 } 2115 }; 2116 2117} 2118 2119IE WMMTCLASPROC (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x07) 2120{ 2121 version, 1 MUSTBE 1; 2122 processing, 1; 2123} 2124 2125IE WMMTSDelay (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x08) 2126{ 2127 version, 1 MUSTBE 1; 2128 delay, 4; 2129} 2130 2131IE WMMSchedule (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x02, 0x09) 2132{ 2133 version, 1 MUSTBE 1; 2134 2135 { 2136 aggregation: 1; 2137 tsid: 4; 2138 direction: 2; 2139 reserved: 9; 2140 } 2141 2142 service_start_time, 4; 2143 service_interval, 4; 2144 max_service_dur, 2; 2145 spec_interval, 2; 2146} 2147 2148IE ESERadMgmtCap (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x01) 2149{ 2150 2151 mgmt_state, 1; 2152 2153 { 2154 mbssid_mask: 3; 2155 reserved: 5; 2156 } 2157 2158} 2159 2160IE Vendor1IE (EID_VENDOR_SPECIFIC) OUI (0x00, 0x10, 0x18) 2161{ 2162} 2163 2164IE Vendor3IE (EID_VENDOR_SPECIFIC) OUI (0x00, 0x16, 0x32) 2165{ 2166} 2167 2168IE hs20vendor_ie (EID_VENDOR_SPECIFIC) OUI (0x50, 0x6F, 0x9A, 0x10) 2169{ 2170 /* hotspot_configurations */ 2171 { 2172 dgaf_dis: 1; 2173 hs_id_present: 2; 2174 reserved: 1; 2175 release_num: 4; 2176 } 2177 OPTIONAL UNION hs_id (DISCRIMINATOR hs_id_present) 2178 { 2179 pps_mo (hs_id_present IS 1) 2180 { 2181 pps_mo_id, 2; 2182 } 2183 anqp_domain (hs_id_present IS 2) 2184 { 2185 anqp_domain_id, 2; 2186 } 2187 }; 2188} 2189 2190IE osen_ie (EID_VENDOR_SPECIFIC) OUI (0x50, 0x6F, 0x9A, 0x12) 2191{ 2192 data[0..255]; 2193} 2194 2195IE roaming_consortium_sel (EID_VENDOR_SPECIFIC) OUI (0x50, 0x6F, 0x9A, 0x1d) 2196{ 2197 data[0..255]; 2198} 2199 2200IE QComVendorIE (EID_VENDOR_SPECIFIC) OUI (0x00, 0xA0, 0xC6) 2201{ 2202 type, 1; 2203 channel, 1; 2204} 2205 2206IE ESETrafStrmMet (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x07) 2207{ 2208 tsid, 1; 2209 state, 1; 2210 msmt_interval, 2; 2211} 2212 2213IE ESETrafStrmRateSet (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x08) 2214{ 2215 tsid, 1; 2216 tsrates[0..8]; 2217} 2218 2219IE ESEVersion (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x03) 2220{ 2221 version, 1; 2222} 2223 2224IE ESETxmitPower (EID_ESE_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x00) 2225{ 2226 power_limit, 1; 2227 reserved, 1; 2228} 2229 2230IE ESECckmOpaque (EID_ESE_CCKM_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x00) 2231{ 2232 data[ 6..20 ]; 2233} 2234 2235IE RRMEnabledCap (EID_RRM_ENABLED_CAPS) 2236{ 2237 //Capability bitmap 2238 { 2239 LinkMeasurement: 1; 2240 NeighborRpt: 1; 2241 parallel: 1; 2242 repeated: 1; 2243 BeaconPassive: 1; 2244 BeaconActive: 1; 2245 BeaconTable: 1; 2246 BeaconRepCond: 1; 2247 } 2248 { 2249 FrameMeasurement: 1; 2250 ChannelLoad: 1; 2251 NoiseHistogram: 1; 2252 statistics: 1; 2253 LCIMeasurement: 1; 2254 LCIAzimuth: 1; 2255 TCMCapability: 1; 2256 triggeredTCM: 1; 2257 } 2258 { 2259 APChanReport: 1; 2260 RRMMIBEnabled: 1; 2261 operatingChanMax: 3; 2262 nonOperatinChanMax: 3; 2263 } 2264 { 2265 MeasurementPilot: 3; 2266 MeasurementPilotEnabled: 1; 2267 NeighborTSFOffset: 1; 2268 RCPIMeasurement: 1; 2269 RSNIMeasurement: 1; 2270 BssAvgAccessDelay: 1; 2271 } 2272 { 2273 BSSAvailAdmission: 1; 2274 AntennaInformation: 1; 2275 fine_time_meas_rpt: 1; 2276 lci_capability: 1; 2277 reserved: 4; 2278 } 2279} 2280 2281IE MeasurementPilot (EID_RRM_MEAS_PILOT_TX_INFO) 2282{ 2283 measurementPilot, 1; 2284 vendorSpecific[0..255]; //Should be an IE. But currently only one level of nesting allowed. Can ignore for now. 2285} 2286 2287IE MultiBssid (EID_MULTIPLE_BSSID) 2288{ 2289 maxBSSIDIndicator, 1; 2290 vendorSpecific[0..255]; 2291} 2292 2293IE OBSSScanParameters (EID_OBSS_SCAN_PARAMETERS) 2294{ 2295 obssScanPassiveDwell, 2; 2296 obssScanActiveDwell, 2; 2297 bssChannelWidthTriggerScanInterval, 2; 2298 obssScanPassiveTotalPerChannel, 2; 2299 obssScanActiveTotalPerChannel, 2; 2300 bssWidthChannelTransitionDelayFactor, 2; 2301 obssScanActivityThreshold, 2; 2302} 2303 2304IE ht2040_bss_coexistence (EID_20_40_BSS_COEXISTENCE) 2305{ 2306 // 20/40 BSS Coexistence Information 2307 { 2308 info_request: 1; 2309 forty_mhz_intolerant: 1; 2310 twenty_mhz_bsswidth_req: 1; 2311 obss_scan_exemption_req: 1; 2312 obss_scan_exemption_grant: 1; 2313 unused: 3; 2314 } 2315} 2316 2317IE ht2040_bss_intolerant_report (EID_20_40_BSS_INTOLERANT_REPORT) 2318{ 2319 operating_class, 1; 2320 channel_list[0..50]; 2321} 2322 2323const EID_RRM_NBR_RPT_TSF = 1; 2324const EID_RRM_NBR_CD_COUNTRY = 2; 2325 2326IE TSFInfo (EID_RRM_NBR_RPT_TSF) 2327{ 2328 TsfOffset, 2; 2329 BeaconIntvl, 2; 2330} 2331IE CondensedCountryStr (EID_RRM_NBR_CD_COUNTRY) 2332{ 2333 countryStr[2]; 2334} 2335 2336IE NeighborReport (EID_NEIGHBOR_REPORT) 2337{ 2338 bssid[6]; 2339 //Bssid Info 2340 { 2341 APReachability: 2; 2342 Security: 1; 2343 KeyScope: 1; 2344 //Capabilities 2345 SpecMgmtCap: 1; 2346 QosCap: 1; 2347 apsd: 1; 2348 rrm: 1; 2349 } 2350 //Capabilities contd. 2351 { 2352 DelayedBA: 1; 2353 ImmBA: 1; 2354 //Capabilities end. 2355 MobilityDomain: 1; 2356 reserved: 5; 2357 } 2358 2359 reserved1, 2; //part of BSSID Info. 2360 2361 regulatoryClass, 1; 2362 channel, 1; 2363 PhyType, 1; 2364 OPTIE IE TSFInfo; 2365 OPTIE IE CondensedCountryStr; 2366 OPTIE IE MeasurementPilot; 2367 OPTIE IE RRMEnabledCap; 2368 OPTIE IE MultiBssid; 2369 //Ignoring vendor specific. 2370} 2371 2372IE RCPIIE (EID_RCPI) 2373{ 2374 rcpi, 1; 2375} 2376 2377IE RSNIIE (EID_RSNI) 2378{ 2379 rsni, 1; 2380} 2381 2382IE WFATPC (EID_VENDOR_SPECIFIC) OUI (0x00, 0x50, 0xF2, 0x08, 0x00) 2383{ 2384 txPower, 1; 2385 linkMargin, 1; 2386} 2387 2388IE MobilityDomain (EID_FT_MOBILITY_DOMAIN) 2389{ 2390 MDID, 2; 2391 //FT Capability and policy 2392 { 2393 overDSCap: 1; 2394 resourceReqCap: 1; 2395 reserved: 6; 2396 } 2397} 2398const SUB_EID_FT_R1KH_ID = 1; 2399const SUB_EID_FT_GTK = 2; 2400const SUB_EID_FT_R0KH_ID = 3; 2401const SUB_EID_FT_IGTK = 4; 2402IE FTInfo (EID_FT_INFO) 2403{ 2404 // MicControl, 2; 2405 { 2406 reserved: 8; 2407 IECount: 8; 2408 } 2409 MIC[16]; 2410 Anonce[32]; 2411 Snonce[32]; 2412 2413 OPTIE IE R1KH_ID (SUB_EID_FT_R1KH_ID) 2414 { 2415 PMK_R1_ID[6]; 2416 } 2417 2418 OPTIE IE GTK (SUB_EID_FT_GTK) 2419 { 2420 //Key Info 2421 { 2422 keyId: 2; 2423 reserved: 14; 2424 } 2425 keyLength, 1; 2426 RSC[8]; 2427 key[5..32]; 2428 } 2429 2430 OPTIE IE R0KH_ID (SUB_EID_FT_R0KH_ID) 2431 { 2432 PMK_R0_ID[1..48]; 2433 } 2434 2435 OPTIE IE IGTK (SUB_EID_FT_IGTK) 2436 { 2437 //Key Info 2438 keyID[2]; 2439 IPN[6]; 2440 keyLength, 1; 2441 key[24]; 2442 } 2443} 2444 2445IE TimeoutInterval (EID_TIMEOUT_INTERVAL) 2446{ 2447 timeoutType, 1; 2448 timeoutValue, 4; 2449} 2450 2451//TODO: need to define this properly. 2452IE RICData (EID_FT_RIC_DATA) 2453{ 2454 Identifier, 1; 2455 resourceDescCount, 1; 2456 statusCode, 2; 2457} 2458 2459IE RICDescriptor (EID_FT_RIC_DESCRIPTOR) 2460{ 2461 resourceType, 1; 2462 variableData[0..255]; //Block ack param set...TODO: 2463} 2464 2465IE WscIEOpaque (EID_VENDOR_SPECIFIC) OUI ( 0x00, 0x50, 0xF2, 0x04 ) 2466{ 2467 data[ 2..249 ]; 2468} 2469 2470IE P2PIEOpaque (EID_VENDOR_SPECIFIC) OUI ( 0x50, 0x6F, 0x9A, 0x09 ) 2471{ 2472 data[ 2..249 ]; 2473} 2474 2475IE WFDIEOpaque (EID_VENDOR_SPECIFIC) OUI ( 0x50, 0x6F, 0x9A, 0x0A ) 2476{ 2477 data[ 2..249 ]; 2478} 2479 2480IE PTIControl (EID_PTI_CONTROL) // 7.3.2.65 2481{ 2482 tid, 1; 2483 sequence_control, 2; 2484} 2485 2486IE oci (EID_EXTN_ID_ELEMENT) OUI ( 0x36 ) 2487{ 2488 op_class, 1; 2489 prim_ch_num, 1; 2490 freq_seg_1_ch_num, 1; 2491} 2492 2493IE PUBufferStatus (EID_PU_BUFFER_STATUS) // 7.3.2.66 2494{ 2495 { 2496 ac_bk_traffic_aval: 1; 2497 ac_be_traffic_aval: 1; 2498 ac_vi_traffic_aval: 1; 2499 ac_vo_traffic_aval: 1; 2500 reserved: 4; 2501 } 2502} 2503 2504 2505IE bss_max_idle_period (EID_BSS_MAX_IDLE_PERIOD) 2506{ 2507 max_idle_period, 2; 2508 { 2509 prot_keep_alive_reqd: 1; 2510 reserved: 7; 2511 } 2512} 2513 2514IE VHTCaps (EID_VHT_CAPABILITIES) 2515{ 2516 //VHT Capability Info 2517 { 2518 maxMPDULen: 2; 2519 supportedChannelWidthSet: 2; 2520 ldpcCodingCap: 1; 2521 shortGI80MHz: 1; 2522 shortGI160and80plus80MHz: 1; 2523 txSTBC: 1; 2524 rxSTBC: 3; 2525 suBeamFormerCap: 1; 2526 suBeamformeeCap: 1; 2527 csnofBeamformerAntSup: 3; 2528 numSoundingDim: 3; 2529 muBeamformerCap: 1; 2530 muBeamformeeCap: 1; 2531 vhtTXOPPS: 1; 2532 htcVHTCap: 1; 2533 maxAMPDULenExp: 3; 2534 vhtLinkAdaptCap: 2; 2535 rxAntPattern: 1; 2536 txAntPattern: 1; 2537 extended_nss_bw_supp: 2; 2538 } 2539 rxMCSMap, 2; 2540 { 2541 rxHighSupDataRate: 13; 2542 max_nsts_total: 3; 2543 } 2544 txMCSMap, 2; 2545 { 2546 txSupDataRate: 13; 2547 vht_extended_nss_bw_cap: 1; 2548 reserved: 2; 2549 } 2550} 2551 2552IE VHTOperation (EID_VHT_OPERATION_ELEMENT) 2553{ 2554 chanWidth, 1; 2555 chan_center_freq_seg0, 1; 2556 chan_center_freq_seg1, 1; 2557 basicMCSSet, 2; 2558} 2559 2560IE VHTExtBssLoad (EID_VHT_EXT_BSS_LOAD) 2561{ 2562 muMIMOCapStaCount, 1; 2563 ssUnderUtil, 1; 2564 FortyMHzUtil, 1; 2565 EightyMHzUtil, 1; 2566 OneSixtyMHzUtil, 1; 2567} 2568 2569IE AID (EID_AID) 2570{ 2571 assocId, 2; 2572} 2573 2574IE WiderBWChanSwitchAnn (EID_WIDER_BW_CHANNEL_SWITCH_ANN) 2575{ 2576 newChanWidth, 1; 2577 newCenterChanFreq0, 1; 2578 newCenterChanFreq1, 1; 2579} 2580 2581IE transmit_power_env (EID_TRANSMIT_POWER_ENVELOPE) 2582{ 2583 { 2584 max_tx_pwr_count: 3; 2585 max_tx_pwr_interpret: 3; 2586 max_tx_pwr_category: 2; 2587 } 2588 tx_power[1..8]; 2589 OPTIONAL UNION ext_max_tx_power (DISCRIMINATOR max_tx_pwr_interpret) 2590 { 2591 ext_max_tx_power_local_eirp (max_tx_pwr_interpret IS 0) { 2592 max_tx_power_for_320, 1; 2593 } 2594 ext_max_tx_power_local_psd (max_tx_pwr_interpret IS 1) { 2595 //ext_transmit_psd_info, 1; 2596 { 2597 ext_count: 4; 2598 reserved: 4; 2599 } 2600 max_tx_psd_power[8]; 2601 } 2602 ext_max_tx_power_reg_eirp (max_tx_pwr_interpret IS 2) { 2603 max_tx_power_for_320, 1; 2604 } 2605 ext_max_tx_power_reg_psd (max_tx_pwr_interpret IS 3) { 2606 //ext_transmit_psd_info, 1; 2607 { 2608 ext_count: 4; 2609 reserved: 4; 2610 } 2611 max_tx_psd_power[8]; 2612 } 2613 2614 }; 2615} 2616 2617IE bw_ind_element (EID_EXTN_ID_ELEMENT) OUI (0x87) 2618{ 2619 { 2620 reserved: 1; 2621 disabled_sub_chan_bitmap_present: 1; 2622 reserved_1: 6; 2623 } 2624 { 2625 channel_width: 3; 2626 reserved_2: 5; 2627 } 2628 ccfs0, 1; 2629 ccfs1, 1; 2630 disabled_sub_chan_bitmap[2][0..1] COUNTIS disabled_sub_chan_bitmap_present; 2631} 2632 2633IE ChannelSwitchWrapper (EID_CHANNEL_SWITCH_WRAPPER) 2634{ 2635 OPTIE IE WiderBWChanSwitchAnn; 2636 OPTIE IE transmit_power_env; 2637 OPTIE IE bw_ind_element; 2638} 2639 2640IE reduced_neighbor_report (EID_RNR_IE) 2641{ 2642 // TBTT Information Header 2643 { 2644 tbtt_type: 2; 2645 filtered_neighbor_ap: 1; 2646 reserved: 1; 2647 tbtt_info_count: 4; 2648 tbtt_info_len: 8; 2649 } 2650 op_class, 1; 2651 channel_num, 1; 2652 // TBTT information field 2653 UNION tbtt_info (DISCRIMINATOR tbtt_info_len) 2654 { 2655 tbtt_info_1 (tbtt_info_len IS 1) 2656 { 2657 tbtt_offset, 1; 2658 } 2659 tbtt_info_2 (tbtt_info_len IS 2) 2660 { 2661 tbtt_offset, 1; 2662 bss_params, 1; 2663 } 2664 tbtt_info_5 (tbtt_info_len IS 5) 2665 { 2666 tbtt_offset, 1; 2667 short_ssid, 4; 2668 } 2669 tbtt_info_6 (tbtt_info_len IS 6) 2670 { 2671 tbtt_offset, 1; 2672 short_ssid, 4; 2673 bss_params, 1; 2674 } 2675 tbtt_info_7 (tbtt_info_len IS 7) 2676 { 2677 tbtt_offset, 1; 2678 bssid[6]; 2679 } 2680 tbtt_info_8 (tbtt_info_len IS 8) 2681 { 2682 tbtt_offset, 1; 2683 bssid[6]; 2684 bss_params, 1; 2685 } 2686 tbtt_info_9 (tbtt_info_len IS 9) 2687 { 2688 tbtt_offset, 1; 2689 bssid[6]; 2690 bss_params, 1; 2691 psd_20mhz, 1; 2692 } 2693 tbtt_info_11 (tbtt_info_len IS 11) 2694 { 2695 tbtt_offset, 1; 2696 bssid[6]; 2697 short_ssid, 4; 2698 } 2699 tbtt_info_12 (tbtt_info_len IS 12) 2700 { 2701 tbtt_offset, 1; 2702 bssid[6]; 2703 short_ssid, 4; 2704 bss_params, 1; 2705 } 2706 tbtt_info_13 (tbtt_info_len IS 13) 2707 { 2708 tbtt_offset, 1; 2709 bssid[6]; 2710 short_ssid, 4; 2711 bss_params, 1; 2712 psd_20mhz, 1; 2713 } 2714 tbtt_info_16 (tbtt_info_len IS 16) 2715 { 2716 tbtt_offset, 1; 2717 bssid[6]; 2718 short_ssid, 4; 2719 bss_params, 1; 2720 psd_20mhz, 1; 2721 mld_id, 1; 2722 { 2723 link_id: 4; 2724 bss_param_change_cnt: 8; 2725 all_updates_included: 1; 2726 reserved: 3; 2727 } 2728 } 2729 }; 2730} 2731 2732IE ExtCap (EID_EXT_CAP) 2733{ 2734 bytes[1..15]; 2735} 2736 2737IE HTCaps (EID_HT_CAPABILITIES) 2738{ 2739 // HT Capability Info 2740 { 2741 advCodingCap: 1; 2742 supportedChannelWidthSet: 1; 2743 mimoPowerSave: 2; 2744 greenField: 1; 2745 shortGI20MHz: 1; 2746 shortGI40MHz: 1; 2747 txSTBC: 1; 2748 rxSTBC: 2; 2749 delayedBA: 1; 2750 maximalAMSDUsize: 1; 2751 dsssCckMode40MHz: 1; 2752 psmp: 1; 2753 stbcControlFrame: 1; 2754 lsigTXOPProtection: 1; 2755 } 2756 // HT Parameters Info; 2757 { 2758 maxRxAMPDUFactor: 2; 2759 mpduDensity: 3; 2760 reserved1: 3; 2761 } 2762 2763 supportedMCSSet[ HT_MAX_SUPPORTED_MCS_SET ]; 2764 2765 // Extended HT Capability Info 2766 { 2767 pco: 1; 2768 transitionTime: 2; 2769 reserved2: 5; 2770 mcsFeedback: 2; 2771 reserved3: 6; 2772 } 2773 // TXBF Capability Info 2774 { 2775 txBF: 1; 2776 rxStaggeredSounding: 1; 2777 txStaggeredSounding: 1; 2778 rxZLF: 1; 2779 txZLF: 1; 2780 implicitTxBF: 1; 2781 calibration: 2; 2782 explicitCSITxBF: 1; 2783 explicitUncompressedSteeringMatrix: 1; 2784 explicitBFCSIFeedback: 3; 2785 explicitUncompressedSteeringMatrixFeedback: 3; 2786 explicitCompressedSteeringMatrixFeedback: 3; 2787 csiNumBFAntennae: 2; 2788 uncompressedSteeringMatrixBFAntennae: 2; 2789 compressedSteeringMatrixBFAntennae: 2; 2790 reserved4: 7; 2791 } 2792 // AS Capability Info 2793 { 2794 antennaSelection: 1; 2795 explicitCSIFeedbackTx: 1; 2796 antennaIndicesFeedbackTx: 1; 2797 explicitCSIFeedback: 1; 2798 antennaIndicesFeedback: 1; 2799 rxAS: 1; 2800 txSoundingPPDUs: 1; 2801 reserved5: 1; 2802 } 2803 //TODO: take it out when generic fix to remove extra bytes in IE is available. 2804 //This is required to interop with Dlink AP which is sending 2 bytes extra in HTInfo IE. 2805 rsvd[0..32]; 2806 2807} // End IE HTCaps. 2808 2809IE HTInfo (EID_HT_INFO) 2810{ 2811 primaryChannel, 1; 2812 2813 // ahtInfoField1 2814 { 2815 secondaryChannelOffset: 2; 2816 recommendedTxWidthSet: 1; 2817 rifsMode: 1; 2818 controlledAccessOnly: 1; 2819 serviceIntervalGranularity: 3; 2820 } 2821 2822 // ahtInfoField2 2823 2824 2825 // ahtInfoField2 2826 { 2827 opMode: 2; 2828 nonGFDevicesPresent: 1; 2829 transmitBurstLimit: 1; 2830 obssNonHTStaPresent:1; 2831 chan_center_freq_seg2:8; 2832 reserved: 3; 2833 } 2834 2835 2836 // ahtInfoField3 2837 { 2838 basicSTBCMCS: 7; 2839 dualCTSProtection: 1; 2840 secondaryBeacon: 1; 2841 lsigTXOPProtectionFullSupport: 1; 2842 pcoActive: 1; 2843 pcoPhase: 1; 2844 reserved2: 4; 2845 } 2846 2847 basicMCSSet[ HT_MAX_SUPPORTED_MCS_SET ]; 2848 2849 //TODO: take it out when generic fix to remove extra bytes in IE is available. 2850 //This is required to interop with Dlink AP which is sending 2 bytes extra in HTInfo IE. 2851 rsvd[0..32]; 2852 2853} // End IE HTInfo. 2854 2855 2856IE OperatingMode (EID_OPERATING_MODE) 2857{ 2858 { //Operating Mode field 2859 chanWidth: 2; 2860 vht_160_80p80_supp: 1; 2861 no_ldpc: 1; 2862 rxNSS: 3; 2863 rxNSSType: 1; 2864 } 2865} 2866 2867IE QosMapSet (EID_QOS_MAP_SET) 2868{ 2869 dscp_exceptions[QOS_DSCP_RANGE_LEN..MAX_QOS_DSCP_DATA_LEN]; 2870} 2871 2872CONTAINERIE RICDataDesc 2873{ 2874 MANDIE RICData; 2875 OPTIE RICDescriptor; 2876 OPTIE TSPEC; 2877 OPTIE TCLAS[0..2]; 2878 OPTIE TCLASSPROC; 2879 OPTIE TSDelay; 2880 OPTIE Schedule; 2881 OPTIE WMMTSPEC; 2882 OPTIE WMMTCLAS[0..2]; 2883 OPTIE WMMTCLASPROC; 2884 OPTIE WMMTSDelay; 2885 OPTIE WMMSchedule; 2886} 2887 2888IE TimeAdvertisement (EID_TIME_ADVERTISEMENT) // 8.4.2.63 2889{ 2890 timing_capabilities, 1; 2891 time_value[10]; 2892 time_error[5]; 2893} 2894 2895/** 2896 * This all attributes are defined under qcn_attribute_id enum of 2897 * cmn code in wlan_cmn_ieee80211.h file. 2898 */ 2899const TLV_VERSION_ATTR_ID = 1; 2900const TLV_VHT_MCS_10_11_ATTR_ID = 2; 2901const TLV_HE_400NS_SGI_SUPP_ATTR_ID = 3; 2902const TLV_HE_2XLTF_160_80P80_SUPP_ATTR_ID = 4; 2903const TLV_HE_DL_OFDMA_SUPPP_ATTR_ID = 5; 2904const TLV_TRANSITION_REASONP_ATTR_ID = 6; 2905const TLV_TRANSITION_REJECTIONP_ATTR_ID = 7; 2906const TLV_HE_DL_MUMIMO_SUPPP_ATTR_ID = 8; 2907const TLV_HE_MCS_11_12_ATTR_ID = 9; 2908const TLV_EDCA_PIFS_PARAM_ATTR_ID = 13; 2909const TLV_ECSA_TARGET_TSF_INFO_ATTR_ID = 14; 2910 2911TLV qcn_version(TLV_VERSION_ATTR_ID) ( 1 : 1 ) LSB 2912{ 2913 version, 1; 2914 sub_version, 1; 2915} 2916TLV vht_mcs11_attr (TLV_VHT_MCS_10_11_ATTR_ID) ( 1 : 1 ) LSB 2917{ 2918 vht_mcs_10_11_supp, 1; 2919} 2920TLV he_400ns_sgi_attr (TLV_HE_400NS_SGI_SUPP_ATTR_ID) ( 1 : 1 ) LSB 2921{ 2922 he_ltf1x_400ns_sgi, 1; 2923 he_ltf2x_400ns_sgi, 1; 2924 he_ltf4x_400ns_sgi, 1; 2925} 2926 2927TLV he_2xltf_160mhz_supp (TLV_HE_2XLTF_160_80P80_SUPP_ATTR_ID) ( 1 : 1 ) LSB 2928{ 2929 he_2xltf_160MHz_supp, 1; 2930} 2931 2932TLV he_dl_ofdma_attr (TLV_HE_DL_OFDMA_SUPPP_ATTR_ID) ( 1 : 1 ) LSB 2933{ 2934 he_dl_ofdma_supp, 1; 2935} 2936 2937TLV trans_reasonp_attr (TLV_TRANSITION_REASONP_ATTR_ID) ( 1 : 1 ) LSB 2938{ 2939 transition_reasonp, 1; 2940} 2941 2942TLV trans_rejectp_attr (TLV_TRANSITION_REJECTIONP_ATTR_ID) ( 1 : 1 ) LSB 2943{ 2944 transition_rejp, 1; 2945} 2946 2947TLV he_dl_mumimo_attr (TLV_HE_DL_MUMIMO_SUPPP_ATTR_ID) ( 1 : 1 ) LSB 2948{ 2949 he_dl_mumimo_supp, 1; 2950} 2951 2952TLV he_mcs13_attr (TLV_HE_MCS_11_12_ATTR_ID) ( 1 : 1 ) LSB 2953{ 2954 he_mcs_12_13_supp_80, 1; 2955 he_mcs_12_13_supp_160, 1; 2956} 2957 2958TLV edca_pifs_param_attr (TLV_EDCA_PIFS_PARAM_ATTR_ID) ( 1 : 1 ) LSB 2959{ 2960 // Configure EDCA or PIFS param based on edca_param_type 2961 edca_param_type, 1; 2962 data[3..4]; 2963} 2964 2965TLV ecsa_target_tsf_info_attr (TLV_ECSA_TARGET_TSF_INFO_ATTR_ID) ( 1 : 1 ) LSB 2966{ 2967 twt_ch_sw_mode, 1; 2968 target_tsf, 8; 2969} 2970 2971MULTIIE qcn_ie (EID_VENDOR_SPECIFIC) OUI ( 0x8C, 0xFD, 0xF0, 0x01 ) 2972{ 2973 OPTIONALTLV qcn_version; 2974 OPTIONALTLV vht_mcs11_attr; 2975 OPTIONALTLV he_400ns_sgi_attr; 2976 OPTIONALTLV he_2xltf_160mhz_supp; 2977 OPTIONALTLV he_dl_ofdma_attr; 2978 OPTIONALTLV trans_reasonp_attr; 2979 OPTIONALTLV trans_rejectp_attr; 2980 OPTIONALTLV he_dl_mumimo_attr; 2981 OPTIONALTLV he_mcs13_attr; 2982 OPTIONALTLV edca_pifs_param_attr; 2983 OPTIONALTLV ecsa_target_tsf_info_attr; 2984} 2985 2986IE esp_information (EID_EXTN_ID_ELEMENT) OUI ( 0x0B ) 2987{ 2988 data[0..96]; 2989} 2990IE fils_indication (EID_FILS_INDICATION) 2991{ 2992 // FILS Information element 2993 { 2994 public_key_identifiers_cnt : 3; 2995 realm_identifiers_cnt : 3; 2996 is_ip_config_supported : 1; 2997 is_cache_id_present : 1; 2998 is_hessid_present : 1; 2999 is_fils_sk_auth_supported : 1; 3000 is_fils_sk_auth_pfs_supported : 1; 3001 is_pk_auth_supported : 1; 3002 reserved : 4; 3003 } 3004 // other FILS elements 3005 variable_data[2..255]; 3006} 3007 3008IE fils_assoc_delay_info (EID_EXTN_ID_ELEMENT) OUI ( 0x01 ) 3009{ 3010 assoc_delay_info, 1; 3011} 3012 3013IE fils_key_confirmation (EID_EXTN_ID_ELEMENT) OUI ( 0x03 ) 3014{ 3015 key_auth[0..255]; 3016} 3017 3018IE fils_session (EID_EXTN_ID_ELEMENT) OUI ( 0x04 ) 3019{ 3020 session[8]; 3021} 3022 3023IE fils_hlp_container (EID_EXTN_ID_ELEMENT) OUI ( 0x05 ) 3024{ 3025 dest_mac[6]; 3026 src_mac[6]; 3027 hlp_packet[0..255]; 3028} 3029 3030IE fils_kde (EID_EXTN_ID_ELEMENT) OUI ( 0x07 ) 3031{ 3032 key_rsc[8]; 3033 kde_list[0..255]; 3034} 3035 3036IE fils_wrapped_data (EID_EXTN_ID_ELEMENT) OUI ( 0x08 ) 3037{ 3038 wrapped_data[0..255]; 3039} 3040 3041IE fils_public_key (EID_EXTN_ID_ELEMENT) OUI ( 0x0C ) 3042{ 3043 key_type, 1; 3044 public_key[0..255]; 3045} 3046 3047IE fils_nonce (EID_EXTN_ID_ELEMENT) OUI ( 0x0D ) 3048{ 3049 nonce[16]; 3050} 3051 3052IE fragment_ie (EID_FRAGMENT_IE) 3053{ 3054 data[0..255]; 3055} 3056 3057IE dh_parameter_element (EID_EXTN_ID_ELEMENT) OUI ( 0x20 ) 3058{ 3059 group[2]; 3060 public_key[0..255]; 3061} 3062 3063const EID_RRM_REPORTING = 1; 3064const EID_RRM_BCN_REPORTING_DETAIL = 2; 3065 3066const SUB_EID_AZIMUTH_REQ = 1; 3067const SUB_EID_REQ_MAC_ADDR = 2; 3068const SUB_EID_TGT_MAC_ADDR = 3; 3069const SUB_EID_MAX_AGE = 4; 3070const SUB_EID_NEIGHBOR_RPT = 52; 3071//const SUB_EID_TRIGGERED_REPORTING = 1; 3072 3073IE rrm_reporting (EID_RRM_REPORTING) 3074{ 3075 reporting_condition, 1; 3076 threshold, 1; 3077} 3078 3079IE BcnReportingDetail (EID_RRM_BCN_REPORTING_DETAIL) 3080{ 3081 reportingDetail, 1; 3082} 3083 3084IE APChannelReport (EID_AP_CHAN_REPORT) 3085{ 3086 regulatoryClass, 1; 3087 channelList[0..50]; 3088} 3089 3090IE azimuth_req (SUB_EID_AZIMUTH_REQ) 3091{ 3092 request, 1; 3093} 3094 3095IE req_mac_addr (SUB_EID_REQ_MAC_ADDR) 3096{ 3097 addr[6]; 3098} 3099 3100IE tgt_mac_addr (SUB_EID_TGT_MAC_ADDR) 3101{ 3102 addr[6]; 3103} 3104 3105IE max_age (SUB_EID_MAX_AGE) 3106{ 3107 max_age, 2; 3108} 3109 3110IE neighbor_rpt (SUB_EID_NEIGHBOR_RPT) 3111{ 3112 bssid[6]; 3113 //Bssid Info 3114 { 3115 APReachability: 2; 3116 Security: 1; 3117 KeyScope: 1; 3118 //Capabilities 3119 SpecMgmtCap: 1; 3120 QosCap: 1; 3121 apsd: 1; 3122 rrm: 1; 3123 } 3124 //Capabilities contd. 3125 { 3126 DelayedBA: 1; 3127 ImmBA: 1; 3128 //Capabilities end. 3129 MobilityDomain: 1; 3130 reserved: 5; 3131 } 3132 reserved1, 2; //part of BSSID Info. 3133 regulatoryClass, 1; 3134 channel, 1; 3135 PhyType, 1; 3136 OPTIE IE TSFInfo; 3137 OPTIE IE CondensedCountryStr; 3138 OPTIE IE MeasurementPilot; 3139 OPTIE IE RRMEnabledCap; 3140 OPTIE IE MultiBssid; 3141} 3142 3143IE MeasurementRequest (EID_MEAS_REQUEST) // 7.3.2.21 3144{ 3145 measurement_token, 1; 3146 3147 // Measurement Request Mode 3148 { 3149 parallel: 1; 3150 enable: 1; 3151 request: 1; 3152 report: 1; 3153 durationMandatory: 1; 3154 unused: 3; 3155 } 3156 3157 measurement_type, 1; 3158 UNION measurement_request (DISCRIMINATOR measurement_type) 3159 { 3160 Basic (measurement_type IS 0) 3161 { 3162 channel_no, 1; 3163 meas_start_time[8]; 3164 meas_duration, 2; 3165 } 3166 CCA (measurement_type IS 1) 3167 { 3168 channel_no, 1; 3169 meas_start_time[8]; 3170 meas_duration, 2; 3171 } 3172 RPIHistogram (measurement_type IS 2) 3173 { 3174 channel_no, 1; 3175 meas_start_time[8]; 3176 meas_duration, 2; 3177 } 3178 channel_load (measurement_type IS 3) 3179 { 3180 op_class, 1; 3181 channel, 1; 3182 randomization_intv, 2; 3183 meas_duration, 2; 3184 OPTIE rrm_reporting; 3185 OPTIE wide_bw_chan_switch; 3186 OPTIE bw_indication; 3187 } 3188 Beacon (measurement_type IS 5) 3189 { 3190 regClass, 1; 3191 channel, 1; 3192 randomization, 2; 3193 meas_duration, 2; 3194 meas_mode, 1; 3195 BSSID[6]; 3196 OPTIE SSID; 3197 OPTIE rrm_reporting; 3198 OPTIE BcnReportingDetail; 3199 OPTIE RequestedInfo; 3200 OPTIE ExtRequestedInfo; 3201 OPTIE APChannelReport[0..2]; 3202 OPTIE last_beacon_report_indication; 3203 //OPTIONAL vendor_specific[1..239]; 3204 } 3205 lci (measurement_type IS 8) 3206 { 3207 loc_subject, 1; 3208 OPTIE azimuth_req; 3209 OPTIE req_mac_addr; 3210 OPTIE tgt_mac_addr; 3211 OPTIE max_age; 3212 } 3213 ftmrr (measurement_type IS 16) 3214 { 3215 random_interval, 2; 3216 min_ap_count, 1; 3217 3218 OPTIE neighbor_rpt; 3219 OPTIE max_age; 3220 } 3221 sta_stats (measurement_type IS 7) 3222 { 3223 peer_mac_addr[6]; 3224 randomization, 2; 3225 meas_duration, 2; 3226 group_identity, 1; 3227 //OPTIE triggered_reporting; 3228 //OPTIONAL vendor_specific; 3229 } 3230 3231 }; 3232} 3233 3234IE tclas_mask (EID_EXTN_ID_ELEMENT) OUI (0x59) 3235{ 3236 classifier_type, 1; 3237 classifier_mask, 1; 3238 UNION info (DISCRIMINATOR classifier_type) 3239 { 3240 ip_param (classifier_type IS 4) 3241 { 3242 reserved[16]; 3243 } 3244 }; 3245} 3246 3247IE mscs_status (EID_MSCS_STATUS) 3248{ 3249 status_code, 1; 3250} 3251 3252IE descriptor_element (EID_EXTN_ID_ELEMENT) OUI (0x58) 3253{ 3254 request_type, 1; 3255 user_priority_control, 2; 3256 stream_timeout, 4; 3257 OPTIE IE tclas_mask; 3258 OPTIE IE mscs_status; 3259 //Optional Vendor specific IEs ... ignoring 3260} 3261 3262IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23) 3263{ 3264 { 3265 htc_he:1; 3266 twt_request:1; 3267 twt_responder:1; 3268 fragmentation:2; 3269 max_num_frag_msdu_amsdu_exp:3; 3270 min_frag_size:2; 3271 trigger_frm_mac_pad:2; 3272 multi_tid_aggr_rx_supp:3; 3273 he_link_adaptation:2; 3274 all_ack:1; 3275 trigd_rsp_sched:1; 3276 a_bsr:1; 3277 broadcast_twt:1; 3278 ba_32bit_bitmap:1; 3279 mu_cascade:1; 3280 ack_enabled_multitid:1; 3281 reserved:1; 3282 omi_a_ctrl:1; 3283 ofdma_ra:1; 3284 max_ampdu_len_exp_ext:2; 3285 amsdu_frag:1; 3286 flex_twt_sched:1; 3287 rx_ctrl_frame:1; 3288 } 3289 { 3290 bsrp_ampdu_aggr:1; 3291 qtp:1; 3292 a_bqr:1; 3293 spatial_reuse_param_rspder:1; 3294 ndp_feedback_supp:1; 3295 ops_supp:1; 3296 amsdu_in_ampdu:1; 3297 multi_tid_aggr_tx_supp:3; 3298 he_sub_ch_sel_tx_supp:1; 3299 ul_2x996_tone_ru_supp:1; 3300 om_ctrl_ul_mu_data_dis_rx:1; 3301 he_dynamic_smps:1; 3302 punctured_sounding_supp:1; 3303 ht_vht_trg_frm_rx_supp:1; 3304 } 3305 { 3306 reserved2:1; 3307 chan_width_0:1; 3308 chan_width_1:1; 3309 chan_width_2:1; 3310 chan_width_3:1; 3311 chan_width_4:1; 3312 chan_width_5:1; 3313 chan_width_6:1; 3314 rx_pream_puncturing:4; 3315 device_class:1; 3316 ldpc_coding:1; 3317 he_1x_ltf_800_gi_ppdu:1; 3318 midamble_tx_rx_max_nsts:2; 3319 he_4x_ltf_3200_gi_ndp:1; 3320 tb_ppdu_tx_stbc_lt_80mhz:1; 3321 rx_stbc_lt_80mhz:1; 3322 doppler:2; 3323 ul_mu:2; 3324 dcm_enc_tx:3; 3325 dcm_enc_rx:3; 3326 ul_he_mu:1; 3327 su_beamformer:1; 3328 } 3329 { 3330 su_beamformee:1; 3331 mu_beamformer:1; 3332 bfee_sts_lt_80:3; 3333 bfee_sts_gt_80:3; 3334 num_sounding_lt_80:3; 3335 num_sounding_gt_80:3; 3336 su_feedback_tone16:1; 3337 mu_feedback_tone16:1; 3338 codebook_su:1; 3339 codebook_mu:1; 3340 beamforming_feedback:3; 3341 he_er_su_ppdu:1; 3342 dl_mu_mimo_part_bw:1; 3343 ppet_present:1; 3344 srp:1; 3345 power_boost:1; 3346 he_ltf_800_gi_4x:1; 3347 max_nc:3; 3348 tb_ppdu_tx_stbc_gt_80mhz:1; 3349 rx_stbc_gt_80mhz:1; 3350 } 3351 { 3352 er_he_ltf_800_gi_4x:1; 3353 he_ppdu_20_in_40Mhz_2G:1; 3354 he_ppdu_20_in_160_80p80Mhz:1; 3355 he_ppdu_80_in_160_80p80Mhz:1; 3356 er_1x_he_ltf_gi:1; 3357 midamble_tx_rx_1x_he_ltf:1; 3358 dcm_max_bw:2; 3359 longer_than_16_he_sigb_ofdm_sym:1; 3360 non_trig_cqi_feedback:1; 3361 tx_1024_qam_lt_242_tone_ru:1; 3362 rx_1024_qam_lt_242_tone_ru:1; 3363 rx_full_bw_su_he_mu_compress_sigb:1; 3364 rx_full_bw_su_he_mu_non_cmpr_sigb:1; 3365 reserved3:2; 3366 } 3367 reserved4, 1; 3368 rx_he_mcs_map_lt_80, 2; 3369 tx_he_mcs_map_lt_80, 2; 3370 rx_he_mcs_map_160[2][0..1] COUNTIS chan_width_2; 3371 tx_he_mcs_map_160[2][0..1] COUNTIS chan_width_2; 3372 rx_he_mcs_map_80_80[2][0..1] COUNTIS chan_width_3; 3373 tx_he_mcs_map_80_80[2][0..1] COUNTIS chan_width_3; 3374 OPTIONAL UNION ppet (DISCRIMINATOR ppet_present) 3375 { 3376 ppe_threshold (ppet_present IS 1) 3377 { 3378 ppe_th[1..25]; 3379 } 3380 }; 3381} 3382 3383IE he_op (EID_EXTN_ID_ELEMENT) OUI (0x24) 3384{ 3385 { 3386 default_pe: 3; 3387 twt_required: 1; 3388 txop_rts_threshold: 10; 3389 vht_oper_present: 1; 3390 co_located_bss: 1; 3391 } 3392 { 3393 er_su_disable: 1; 3394 oper_info_6g_present: 1; 3395 reserved2: 6; 3396 } 3397 { 3398 bss_color:6; 3399 partial_bss_col:1; 3400 bss_col_disabled:1; 3401 } 3402 basic_mcs_nss[2]; 3403 OPTIONAL UNION vht_oper (DISCRIMINATOR vht_oper_present) 3404 { 3405 info (vht_oper_present IS 1) 3406 { 3407 chan_width, 1; 3408 center_freq_seg0, 1; 3409 center_freq_seg1, 1; 3410 } 3411 }; 3412 OPTIONAL UNION maxbssid_ind (DISCRIMINATOR co_located_bss) 3413 { 3414 info (co_located_bss IS 1) 3415 { 3416 data, 1; 3417 } 3418 }; 3419 OPTIONAL UNION oper_info_6g (DISCRIMINATOR oper_info_6g_present) 3420 { 3421 info (oper_info_6g_present IS 1) 3422 { 3423 primary_ch, 1; 3424 { // control 3425 ch_width: 2; 3426 dup_bcon: 1; 3427 reg_info: 3; 3428 reserved: 2; 3429 } 3430 center_freq_seg0, 1; 3431 center_freq_seg1, 1; 3432 min_rate, 1; 3433 } 3434 }; 3435} 3436 3437IE spatial_reuse (EID_EXTN_ID_ELEMENT) OUI (0x27) 3438{ 3439 { 3440 psr_disallow: 1; 3441 non_srg_pd_sr_disallow: 1; 3442 non_srg_offset_present: 1; 3443 srg_info_present: 1; 3444 sr_value15_allow: 1; 3445 reserved: 3; 3446 } 3447 OPTIONAL UNION non_srg_offset (DISCRIMINATOR non_srg_offset_present) 3448 { 3449 info (non_srg_offset_present IS 1) 3450 { 3451 non_srg_pd_max_offset, 1; 3452 } 3453 }; 3454 OPTIONAL UNION srg_info (DISCRIMINATOR srg_info_present) 3455 { 3456 info (srg_info_present IS 1) 3457 { 3458 srg_pd_min_offset, 1; 3459 srg_pd_max_offset, 1; 3460 srg_color[8]; 3461 srg_partial_bssid[8]; 3462 } 3463 }; 3464} 3465 3466IE he_6ghz_band_cap (EID_EXTN_ID_ELEMENT) OUI (0x3B) 3467{ 3468 { // capabilities_information 3469 min_mpdu_start_spacing :3; 3470 max_ampdu_len_exp: 3; 3471 max_mpdu_len: 3; 3472 sm_pow_save: 2; 3473 rd_responder: 1; 3474 rx_ant_pattern_consistency: 1; 3475 tx_ant_pattern_consistency: 1; 3476 reserved: 2; 3477 } 3478} 3479 3480IE eht_cap (EID_EXTN_ID_ELEMENT) OUI (0x6C) 3481{ 3482 { 3483 epcs_pri_access: 1; 3484 eht_om_ctl: 1; 3485 triggered_txop_sharing_mode1: 1; 3486 triggered_txop_sharing_mode2: 1; 3487 restricted_twt: 1; 3488 scs_traffic_desc: 1; 3489 max_mpdu_len: 2; 3490 max_a_mpdu_len_exponent_ext: 1; 3491 eht_trs_support: 1; 3492 txop_return_support_txop_share_m2: 1; 3493 two_bqrs_support: 1; 3494 eht_link_adaptation_support: 2; 3495 reserved: 2; 3496 } 3497 { 3498 reserved2: 1; 3499 support_320mhz_6ghz: 1; 3500 ru_242tone_wt_20mhz: 1; 3501 ndp_4x_eht_ltf_3dot2_us_gi: 1; 3502 partial_bw_mu_mimo: 1; 3503 su_beamformer: 1; 3504 su_beamformee: 1; 3505 bfee_ss_le_80mhz: 3; 3506 bfee_ss_160mhz: 3; 3507 bfee_ss_320mhz: 3; 3508 num_sounding_dim_le_80mhz: 3; 3509 num_sounding_dim_160mhz: 3; 3510 num_sounding_dim_320mhz: 3; 3511 ng_16_su_feedback: 1; 3512 ng_16_mu_feedback: 1; 3513 cb_sz_4_2_su_feedback: 1; 3514 cb_sz_7_5_su_feedback: 1; 3515 trig_su_bforming_feedback: 1; 3516 trig_mu_bforming_partial_bw_feedback: 1; 3517 triggered_cqi_feedback: 1; 3518 } 3519 { 3520 partial_bw_dl_mu_mimo: 1; 3521 psr_based_sr: 1; 3522 power_boost_factor: 1; 3523 eht_mu_ppdu_4x_ltf_0_8_us_gi: 1; 3524 max_nc: 4; 3525 non_trig_cqi_feedback: 1; 3526 tx_1024_4096_qam_lt_242_tone_ru: 1; 3527 rx_1024_4096_qam_lt_242_tone_ru: 1; 3528 ppet_present: 1; 3529 common_nominal_pkt_padding: 2; 3530 max_num_eht_ltf: 5; 3531 mcs_15: 4; 3532 eht_dup_6ghz: 1; 3533 op_sta_rx_ndp_wider_bw_20mhz: 1; 3534 non_ofdma_ul_mu_mimo_le_80mhz: 1; 3535 non_ofdma_ul_mu_mimo_160mhz: 1; 3536 non_ofdma_ul_mu_mimo_320mhz: 1; 3537 mu_bformer_le_80mhz: 1; 3538 mu_bformer_160mhz: 1; 3539 mu_bformer_320mhz: 1; 3540 tb_sounding_feedback_rl: 1; 3541 } 3542 { 3543 rx_1k_qam_in_wider_bw_dl_ofdma: 1; 3544 rx_4k_qam_in_wider_bw_dl_ofdma: 1; 3545 limited_cap_support_20mhz: 1; 3546 triggered_mu_bf_full_bw_fb_and_dl_mumimo: 1; 3547 mru_support_20mhz: 1; 3548 reserved3: 3; 3549 } 3550 { 3551 bw_20_rx_max_nss_for_mcs_0_to_7: 4; 3552 bw_20_tx_max_nss_for_mcs_0_to_7: 4; 3553 bw_20_rx_max_nss_for_mcs_8_and_9: 4; 3554 bw_20_tx_max_nss_for_mcs_8_and_9: 4; 3555 bw_20_rx_max_nss_for_mcs_10_and_11: 4; 3556 bw_20_tx_max_nss_for_mcs_10_and_11: 4; 3557 bw_20_rx_max_nss_for_mcs_12_and_13: 4; 3558 bw_20_tx_max_nss_for_mcs_12_and_13: 4; 3559 3560 } 3561 { 3562 bw_le_80_rx_max_nss_for_mcs_0_to_9: 4; 3563 bw_le_80_tx_max_nss_for_mcs_0_to_9: 4; 3564 bw_le_80_rx_max_nss_for_mcs_10_and_11: 4; 3565 bw_le_80_tx_max_nss_for_mcs_10_and_11: 4; 3566 bw_le_80_rx_max_nss_for_mcs_12_and_13: 4; 3567 bw_le_80_tx_max_nss_for_mcs_12_and_13: 4; 3568 bw_160_rx_max_nss_for_mcs_0_to_9: 4; 3569 bw_160_tx_max_nss_for_mcs_0_to_9: 4; 3570 } 3571 { 3572 bw_160_rx_max_nss_for_mcs_10_and_11: 4; 3573 bw_160_tx_max_nss_for_mcs_10_and_11: 4; 3574 bw_160_rx_max_nss_for_mcs_12_and_13: 4; 3575 bw_160_tx_max_nss_for_mcs_12_and_13: 4; 3576 bw_320_rx_max_nss_for_mcs_0_to_9: 4; 3577 bw_320_tx_max_nss_for_mcs_0_to_9: 4; 3578 bw_320_rx_max_nss_for_mcs_10_and_11: 4; 3579 bw_320_tx_max_nss_for_mcs_10_and_11: 4; 3580 } 3581 { 3582 bw_320_rx_max_nss_for_mcs_12_and_13: 4; 3583 bw_320_tx_max_nss_for_mcs_12_and_13: 4; 3584 } 3585 OPTIONAL UNION ppet (DISCRIMINATOR ppet_present) 3586 { 3587 ppe_threshold (ppet_present IS 1) 3588 { 3589 ppe_th[2..62]; 3590 } 3591 }; 3592} 3593 3594IE eht_op (EID_EXTN_ID_ELEMENT) OUI (0x6A) 3595{ 3596 { 3597 eht_op_information_present: 1; 3598 disabled_sub_chan_bitmap_present: 1; 3599 eht_default_pe_duration: 1; 3600 group_addr_bu_indication_limit: 1; 3601 group_addr_bu_indication_exponent: 2; 3602 reserved: 2; 3603 } 3604 { 3605 basic_rx_max_nss_for_mcs_0_to_7: 4; 3606 basic_tx_max_nss_for_mcs_0_to_7: 4; 3607 basic_rx_max_nss_for_mcs_8_and_9: 4; 3608 basic_tx_max_nss_for_mcs_8_and_9: 4; 3609 basic_rx_max_nss_for_mcs_10_and_11: 4; 3610 basic_tx_max_nss_for_mcs_10_and_11: 4; 3611 basic_rx_max_nss_for_mcs_12_and_13: 4; 3612 basic_tx_max_nss_for_mcs_12_and_13: 4; 3613 } 3614 { 3615 channel_width: 3; 3616 reserved_1: 5; 3617 } 3618 ccfs0, 1; 3619 ccfs1, 1; 3620 disabled_sub_chan_bitmap[2][0..1] COUNTIS disabled_sub_chan_bitmap_present; 3621} 3622 3623IE mu_edca_param_set (EID_EXTN_ID_ELEMENT) OUI (0x26) 3624{ 3625 qos, 1; 3626 { 3627 acbe_aifsn: 4; 3628 acbe_acm: 1; 3629 acbe_aci: 2; 3630 unused1: 1; 3631 } 3632 { 3633 acbe_acwmin: 4; 3634 acbe_acwmax: 4; 3635 } 3636 acbe_muedca_timer, 1; 3637 { 3638 acbk_aifsn: 4; 3639 acbk_acm: 1; 3640 acbk_aci: 2; 3641 unused2: 1; 3642 } 3643 { 3644 acbk_acwmin: 4; 3645 acbk_acwmax: 4; 3646 } 3647 acbk_muedca_timer, 1; 3648 { 3649 acvi_aifsn: 4; 3650 acvi_acm: 1; 3651 acvi_aci: 2; 3652 unused3: 1; 3653 } 3654 { 3655 acvi_acwmin: 4; 3656 acvi_acwmax: 4; 3657 } 3658 acvi_muedca_timer, 1; 3659 { 3660 acvo_aifsn: 4; 3661 acvo_acm: 1; 3662 acvo_aci: 2; 3663 unused4: 1; 3664 } 3665 { 3666 acvo_acwmin: 4; 3667 acvo_acwmax: 4; 3668 } 3669 acvo_muedca_timer, 1; 3670} 3671 3672IE bss_color_change (EID_EXTN_ID_ELEMENT) OUI (0x2A) 3673{ 3674 countdown, 1; 3675 { 3676 new_color: 6; 3677 reserved: 2; 3678 } 3679} 3680 3681///////////////////////////////////////////////////////////////////////////// 3682// MULTIIEs // 3683///////////////////////////////////////////////////////////////////////////// 3684 3685MULTIIE WSC ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 ) 3686{ 3687 MANDATORYTLV Version; // Must be 0x10 3688 OPTIONALTLV WPSState; 3689 OPTIONALTLV APSetupLocked; 3690 OPTIONALTLV SelectedRegistrarConfigMethods; 3691 OPTIONALTLV UUID_E; 3692 OPTIONALTLV UUID_R; 3693 OPTIONALTLV RFBands; 3694 OPTIONALTLV SelectedRegistrar; 3695 OPTIONALTLV ConfigMethods; 3696 OPTIONALTLV AssociationState; 3697 OPTIONALTLV ConfigurationError; 3698 OPTIONALTLV Manufacturer; 3699 OPTIONALTLV ModelName; 3700 OPTIONALTLV ModelNumber; 3701 OPTIONALTLV SerialNumber; 3702 OPTIONALTLV DeviceName; 3703 OPTIONALTLV DevicePasswordID; 3704 OPTIONALTLV PrimaryDeviceType; 3705 OPTIONALTLV RequestType; 3706 OPTIONALTLV ResponseType; 3707 OPTIONALTLV VendorExtension; 3708 OPTIONALTLV RequestDeviceType; 3709} 3710 3711MULTIIE WscBeacon ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 ) 3712{ 3713 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11 3714 // = version 1.1, etc. 3715 MANDATORYTLV WPSState; // 1 = unconfigured, 2 = 3716 // configured 3717 OPTIONALTLV APSetupLocked; // Must be included if value 3718 // is TRUE 3719 OPTIONALTLV SelectedRegistrar; // BOOL: indicates if the 3720 // user has recently 3721 // activated a Registrar to 3722 // add an Enrollee. 3723 OPTIONALTLV DevicePasswordID; // Device Password ID 3724 // indicates the method or 3725 // identifies the specific 3726 // password that the 3727 // selected Registrar 3728 // intends to use. 3729 OPTIONALTLV SelectedRegistrarConfigMethods; // This attribute contains 3730 // the config methods active 3731 // on the selected 3732 // Registrar. 3733 OPTIONALTLV UUID_E; // The AP's UUID is provided 3734 // only when the AP is a 3735 // dual-band AP in push 3736 // button mode and 3737 // indicating push button 3738 // mode on both radios 3739 OPTIONALTLV RFBands; // Indicates all RF bands 3740 // available on the AP. A 3741 // dual-band AP must provide 3742 // this attribute. 3743 // WSC 2.0 3744 OPTIONALTLV VendorExtension; // Version2 and AuthorizedMACs 3745 3746} // End Multi-IE WscBeacon. 3747 3748MULTIIE WscAssocReq ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 ) 3749{ 3750 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11 3751 // = version 1.1, etc. 3752 MANDATORYTLV RequestType; // 3753 // 3754 // WSC 2.0 3755 OPTIONALTLV VendorExtension; // Version2 3756 3757} // End Multi-IE WscAssocReq. 3758 3759 3760MULTIIE WscAssocRes ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 ) 3761{ 3762 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11 3763 // = version 1.1, etc. 3764 MANDATORYTLV ResponseType; // 3765 // 3766 // WSC 2.0 3767 OPTIONALTLV VendorExtension; // Version2 3768 3769} // End Multi-IE WscAssocRes. 3770 3771MULTIIE WscReassocRes ( 221 ) OUI( 0x00, 0x50, 0xF2, 0x04 ) 3772{ 3773 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11 3774 // = version 1.1, etc. 3775 MANDATORYTLV ResponseType; // 3776 // 3777 // WSC 2.0 3778 OPTIONALTLV VendorExtension; // Version2 3779 3780} // End Multi-IE WscReassocRes 3781 3782MULTIIE WscProbeReq ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 ) 3783{ 3784 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11 3785 // = version 1.1, etc. 3786 MANDATORYTLV RequestType; // 3787 // 3788 MANDATORYTLV ConfigMethods; // Configuration methods the 3789 // Enrollee or Registrar 3790 // supports 3791 MANDATORYTLV UUID_E; // unique GUID generated by 3792 // the Enrollee. 3793 MANDATORYTLV PrimaryDeviceType; 3794 MANDATORYTLV RFBands; // Specific RF bands used 3795 // for this message 3796 MANDATORYTLV AssociationState; // Configuration and previous 3797 // association state 3798 MANDATORYTLV ConfigurationError; 3799 MANDATORYTLV DevicePasswordID; 3800 3801 // WSC 2.0 3802 OPTIONALTLV Manufacturer; // Must be included in ver 2.0 3803 // or higher. 3804 OPTIONALTLV ModelName; // Must be included in ver 2.0 3805 // or higher. 3806 OPTIONALTLV ModelNumber; // Must be included in ver 2.0 3807 // or higher. 3808 OPTIONALTLV DeviceName; // Must be included in ver 2.0 3809 // or higher. 3810 OPTIONALTLV VendorExtension; // Version2 and RequestToEntroll 3811 3812 OPTIONALTLV RequestDeviceType; // When a device receives a Probe 3813 // Request containing this type, 3814 // It will only respond if Primary 3815 // or Secondary Device Type matches. 3816 3817} // End Multi-IE WscProbeReq. 3818 3819MULTIIE WscProbeRes ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 ) 3820{ 3821 MANDATORYTLV Version; // 0x10 = version 1.0, 0x11 3822 // = version 1.1, etc. 3823 MANDATORYTLV WPSState; // 1 = unconfigured, 2 = 3824 // configured 3825 OPTIONALTLV APSetupLocked; // Must be included if value 3826 // is TRUE 3827 OPTIONALTLV SelectedRegistrar; // BOOL: indicates if the 3828 // user has recently 3829 // activated a Registrar to 3830 // add an Enrollee. 3831 OPTIONALTLV DevicePasswordID; // Device Password ID 3832 // indicates the method or 3833 // identifies the specific 3834 // password that the 3835 // selected Registrar 3836 // intends to use. 3837 OPTIONALTLV SelectedRegistrarConfigMethods; // This attribute contains 3838 // the config methods active 3839 // on the selected 3840 // Registrar. 3841 MANDATORYTLV ResponseType; 3842 MANDATORYTLV UUID_E; // unique identifier of AP 3843 MANDATORYTLV Manufacturer; 3844 MANDATORYTLV ModelName; 3845 MANDATORYTLV ModelNumber; 3846 MANDATORYTLV SerialNumber; 3847 MANDATORYTLV PrimaryDeviceType; 3848 MANDATORYTLV DeviceName; // User-friendly description 3849 // of device 3850 MANDATORYTLV ConfigMethods; // Config Methods corresponds 3851 // to the methods the AP 3852 // supports as an Enrollee 3853 // for adding external 3854 // Registrars. 3855 OPTIONALTLV RFBands; // Indicates all RF bands 3856 // available on the AP. A 3857 // dual-band AP must provide 3858 // this attribute. 3859 // WSC 2.0 3860 OPTIONALTLV VendorExtension; // Version2 and AuthorizedMACs 3861 3862} // WscProbeRes. 3863 3864// This MULTIIE combines the fields from the WSC IEs as they appear in 3865// Beacons *and* in Probe Responses, with the difference that they're all 3866// optional. In our device drivers, we combine Probe Responses and Beacons 3867// into one list, and parse their IEs later (c.f. frame BeaconIEs). Because 3868// the WSC IE differs in those two frames, we'd often see warning messages 3869// about either unexpected fields showing up (if we thought we were parsing a 3870// Beacon, and we in fact had data from a Probe Response) or mandatory fields 3871// missing (if we thought we were parsing a Probe Response, and in fact had 3872// data from a Beacon). 3873 3874// I created this MULTIIE to stuff into the BeaconIEs frames to avoid this. 3875// It's intended to be used on unpack only, and to do so in a very forgiving 3876// way. 3877 3878MULTIIE WscBeaconProbeRes ( EID_VENDOR_SPECIFIC ) OUI( 0x00, 0x50, 0xF2, 0x04 ) 3879{ 3880 OPTIONALTLV Version; // 0x10 = version 1.0, 0x11 3881 // = version 1.1, etc. 3882 OPTIONALTLV WPSState; // 1 = unconfigured, 2 = 3883 // configured 3884 OPTIONALTLV APSetupLocked; // Must be included if value 3885 // is TRUE 3886 OPTIONALTLV SelectedRegistrar; // BOOL: indicates if the 3887 // user has recently 3888 // activated a Registrar to 3889 // add an Enrollee. 3890 OPTIONALTLV DevicePasswordID; // Device Password ID 3891 // indicates the method or 3892 // identifies the specific 3893 // password that the 3894 // selected Registrar 3895 // intends to use. 3896 OPTIONALTLV SelectedRegistrarConfigMethods; // This attribute contains 3897 // the config methods active 3898 // on the selected 3899 // Registrar. 3900 OPTIONALTLV ResponseType; 3901 OPTIONALTLV UUID_E; // unique identifier of AP 3902 OPTIONALTLV Manufacturer; 3903 OPTIONALTLV ModelName; 3904 OPTIONALTLV ModelNumber; 3905 OPTIONALTLV SerialNumber; 3906 OPTIONALTLV PrimaryDeviceType; 3907 OPTIONALTLV DeviceName; // User-friendly description 3908 // of device 3909 OPTIONALTLV ConfigMethods; // Config Methods corresponds 3910 // to the methods the AP 3911 // supports as an Enrollee 3912 // for adding external 3913 // Registrars. 3914 OPTIONALTLV RFBands; // Indicates all RF bands 3915 // available on the AP. A 3916 // dual-band AP must provide 3917 // this attribute. 3918 // WSC 2.0 3919 OPTIONALTLV VendorExtension; // Version2 and AuthorizedMACs 3920 3921} // WscProbeRes. 3922///////////////////////////////////////////////////////////////////////////// 3923// MULTIIEs // 3924///////////////////////////////////////////////////////////////////////////// 3925 3926MULTIIE P2PBeacon ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 ) 3927{ 3928 MANDATORYTLV P2PCapability; // Contains P2P Device 3929 // and P2P Group Capability 3930 MANDATORYTLV P2PDeviceId; // Contains P2P Device 3931 // Address 3932 OPTIONALTLV NoticeOfAbsence; // Indicates Notice of 3933 // Absence schedule and 3934 // CT Window 3935 3936} // End P2PBeacon 3937 3938 3939MULTIIE P2PAssocReq ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 ) 3940{ 3941 MANDATORYTLV P2PCapability; // Contains P2P Device 3942 // and P2P Group Capability 3943 OPTIONALTLV ExtendedListenTiming; 3944 MANDATORYTLV P2PDeviceInfo; 3945 3946} // End P2PAssocReq 3947 3948 3949MULTIIE P2PAssocRes ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 ) 3950{ 3951 MANDATORYTLV P2PStatus; 3952 OPTIONALTLV ExtendedListenTiming; 3953 3954} // End P2PAssocRes 3955 3956 3957MULTIIE P2PProbeReq ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 ) 3958{ 3959 MANDATORYTLV P2PCapability; 3960 OPTIONALTLV P2PDeviceId; 3961 MANDATORYTLV ListenChannel; 3962 OPTIONALTLV ExtendedListenTiming; 3963 OPTIONALTLV OperatingChannel; 3964} // End P2PProbeReq 3965 3966 3967MULTIIE P2PProbeRes ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 ) 3968{ 3969 MANDATORYTLV P2PCapability; 3970 OPTIONALTLV ExtendedListenTiming; 3971 OPTIONALTLV NoticeOfAbsence; 3972 MANDATORYTLV P2PDeviceInfo; 3973 OPTIONALTLV P2PGroupInfo; 3974 3975} // End P2PProbeRes 3976 3977 3978MULTIIE P2PBeaconProbeRes ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 ) 3979{ 3980 OPTIONALTLV P2PCapability; 3981 OPTIONALTLV P2PDeviceId; 3982 OPTIONALTLV ExtendedListenTiming; 3983 OPTIONALTLV NoticeOfAbsence; 3984 OPTIONALTLV P2PDeviceInfo; 3985 OPTIONALTLV P2PGroupInfo; 3986 3987} // End P2PBeaconProbeRes 3988 3989 3990MULTIIE P2PDeAuth ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 ) 3991{ 3992 MANDATORYTLV MinorReasonCode; 3993} 3994 3995 3996MULTIIE P2PDisAssoc ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 ) 3997{ 3998 MANDATORYTLV MinorReasonCode; 3999} 4000 4001MULTIIE MBO_IE (EID_VENDOR_SPECIFIC) OUI ( 0x50, 0x6F, 0x9A, 0x16 ) 4002{ 4003 OPTIONALTLV mbo_ap_cap; 4004 OPTIONALTLV non_prefferd_chan_rep; 4005 OPTIONALTLV cellular_data_cap ; 4006 OPTIONALTLV assoc_disallowed; 4007 OPTIONALTLV cellular_data_con_pref; 4008 OPTIONALTLV transition_reason; 4009 OPTIONALTLV transition_reject_reason; 4010 OPTIONALTLV assoc_retry_delay; 4011 OPTIONALTLV oce_cap; 4012 OPTIONALTLV rssi_assoc_rej; 4013 OPTIONALTLV reduced_wan_metrics; 4014} 4015 4016IE vendor_vht_ie (EID_VENDOR_SPECIFIC) OUI (0x00, 0x90, 0x4c, 0x04) 4017{ 4018 sub_type, 1; 4019 OPTIE IE VHTCaps; 4020 OPTIE IE VHTOperation; 4021} 4022 4023IE non_inheritance (EID_EXTN_ID_ELEMENT) OUI (0x38) 4024{ 4025 data[0..255]; 4026} 4027 4028IE mlo_ie (EID_EXTN_ID_ELEMENT) OUI (0x6B) 4029{ 4030 data[9..255]; 4031} 4032 4033IE t2lm_ie (EID_EXTN_ID_ELEMENT) OUI (0x6D) 4034{ 4035 data[3..255]; 4036} 4037 4038///////////////////////////////////////////////////////////////////////////// 4039// Frames 4040 4041FRAME Beacon // C.f. Sec. 7.2.3.1 4042{ 4043 FF TimeStamp; 4044 FF BeaconInterval; 4045 FF Capabilities; 4046 MANDIE SSID; 4047 MANDIE SuppRates; 4048 OPTIE FHParamSet; 4049 OPTIE DSParams; 4050 OPTIE CFParams; 4051 OPTIE TIM; 4052 OPTIE Country; 4053 OPTIE FHParams; 4054 OPTIE FHPattTable; 4055 OPTIE PowerConstraints; 4056 OPTIE ChanSwitchAnn; 4057 OPTIE Quiet; 4058 OPTIE TPCReport; 4059 OPTIE ERPInfo; 4060 OPTIE ExtSuppRates; 4061 OPTIE RSN; 4062 OPTIE QBSSLoad; 4063 OPTIE EDCAParamSet; 4064 OPTIE QOSCapsAp; 4065 OPTIE APChannelReport; 4066 OPTIE RRMEnabledCap; 4067 OPTIE MobilityDomain; 4068 OPTIE ext_chan_switch_ann; 4069 OPTIE SuppOperatingClasses; 4070 OPTIE HTCaps; 4071 OPTIE HTInfo; 4072 OPTIE OBSSScanParameters; 4073 OPTIE ExtCap; 4074 OPTIE VHTCaps; 4075 OPTIE VHTOperation; 4076 OPTIE transmit_power_env[0..8]; 4077 OPTIE ChannelSwitchWrapper; 4078 OPTIE VHTExtBssLoad; 4079 OPTIE OperatingMode; 4080 OPTIE fils_indication; 4081 OPTIE max_chan_switch_time; 4082 OPTIE esp_information; 4083 OPTIE he_cap; 4084 OPTIE he_op; 4085 OPTIE spatial_reuse; 4086 OPTIE bss_color_change; 4087 OPTIE mu_edca_param_set; 4088 OPTIE he_6ghz_band_cap; 4089 4090 OPTIE sec_chan_offset_ele; 4091 OPTIE WAPI; 4092 OPTIE ESETxmitPower; 4093 OPTIE WiderBWChanSwitchAnn; 4094 OPTIE eht_cap; 4095 OPTIE eht_op; 4096 OPTIE mlo_ie; 4097 OPTIE t2lm_ie[0..2]; 4098 4099 OPTIE WPA; 4100 OPTIE WMMInfoAp; 4101 OPTIE WMMParams; 4102 OPTIE WMMCaps; 4103 OPTIE ESEVersion; 4104 OPTIE ESERadMgmtCap; 4105 OPTIE ESETrafStrmMet; 4106 OPTIE WscBeacon; 4107 OPTIE P2PBeacon; 4108 OPTIE Vendor1IE; 4109 OPTIE vendor_vht_ie; 4110 OPTIE Vendor3IE; 4111 OPTIE hs20vendor_ie; 4112 OPTIE QComVendorIE; 4113 OPTIE MBO_IE; 4114 OPTIE qcn_ie; 4115 OPTIE reduced_neighbor_report; 4116} // End frame Beacon. 4117 4118// Ok, here's the story on Beacon1 & Beacon2. We presumably beacon a lot 4119// more than we change configuration. So it makes sense to keep the beacon 4120// we plan to send next in serialized format. We do this in struct schMisc. 4121// Whenever our config changes in a way that would affect our beacons, we 4122// just update our internal datastructures & re-generate the serialized 4123// beacon. 4124 4125// The problem is that there are *some* fields that need to be updated at 4126// send time, specifically the CF Param Set & the TIM. So, what we do is 4127// this: whenever our config changes, call schSetFixedBeaconFields. There, 4128// we serialize the following Beacon fields into gSchBeaconFrameBegin (after 4129// the power template & MAC header): TimeStamp, BeaconInterval, Capabilities, 4130// SSID, SuppRates, DSParams. It sets gSchBeaconOffsetBegin to 4131// the length of this buffer (incl. power template & MAC header). 4132 4133// Next, it serializes the following fields into gSchBeaconFrameEnd: Country, 4134// EDCAParamSet, PowerConstraints, TPCReport, ChannelSwitchAnn, Quiet, 4135// ERPInfo, HTCaps, HTInfo, ExtSuppRates, WPA, RSN, WMMInfo, 4136// WMMParams, WMMCaps. 4137// The length of *this* buffer is kept in gSchBeaconOffsetEnd. 4138 4139// Then, in 'schBeaconInterruptHandler', we write CFParams & TIM at the end 4140// of gSchBeaconFrameBegin, keeping track of the (new) size of this buffer in 4141// the local 'beaconSize'. 4142 4143// After that, we call 'specialBeaconProcessing'. Note that this may 4144// actually call schSetFixedBeaconFields repeatedly! The comments say they 4145// try to avoid this, but... 4146 4147// Finally, we call writeBeaconToTFP, where the first thing we do is copy the 4148// gSchBeaconFrameEnd buffer after the end of gSchBeaconFrameBegin. 4149 4150FRAME Beacon1 4151{ 4152 FF TimeStamp; 4153 FF BeaconInterval; 4154 FF Capabilities; 4155 MANDIE SSID; 4156 MANDIE SuppRates; 4157 OPTIE DSParams; 4158} 4159 4160FRAME Beacon2 4161{ 4162 OPTIE Country; 4163 OPTIE PowerConstraints; 4164 OPTIE ChanSwitchAnn; 4165 OPTIE Quiet; 4166 OPTIE TPCReport; 4167 OPTIE ERPInfo; 4168 OPTIE ExtSuppRates; 4169 OPTIE RSNOpaque; 4170 OPTIE EDCAParamSet; 4171 OPTIE APChannelReport; 4172 OPTIE RRMEnabledCap; 4173 OPTIE MobilityDomain; 4174 OPTIE ext_chan_switch_ann; 4175 OPTIE SuppOperatingClasses; 4176 OPTIE HTCaps; 4177 OPTIE HTInfo; 4178 OPTIE OBSSScanParameters; 4179 OPTIE ExtCap; 4180 OPTIE VHTCaps; 4181 OPTIE VHTOperation; 4182 OPTIE transmit_power_env[0..8]; 4183 OPTIE ChannelSwitchWrapper; 4184 OPTIE VHTExtBssLoad; 4185 OPTIE OperatingMode; 4186 OPTIE fils_indication; 4187 OPTIE max_chan_switch_time; 4188 OPTIE esp_information; 4189 OPTIE he_cap; 4190 OPTIE he_op; 4191 OPTIE spatial_reuse; 4192 OPTIE bss_color_change; 4193 OPTIE mu_edca_param_set; 4194 OPTIE he_6ghz_band_cap; 4195 4196 OPTIE sec_chan_offset_ele; 4197 OPTIE WAPI; 4198 OPTIE ESETxmitPower; 4199 OPTIE WiderBWChanSwitchAnn; 4200 OPTIE eht_cap; 4201 OPTIE eht_op; 4202 OPTIE mlo_ie; 4203 OPTIE t2lm_ie[0..2]; 4204 4205 OPTIE WPA; 4206 OPTIE WMMInfoAp; 4207 OPTIE WMMParams; 4208 OPTIE WMMCaps; 4209 OPTIE ESERadMgmtCap; 4210 OPTIE ESETrafStrmMet; 4211 OPTIE WscBeacon; 4212 OPTIE P2PBeacon; 4213 OPTIE Vendor1IE; 4214 OPTIE vendor_vht_ie; 4215 OPTIE Vendor3IE; 4216 OPTIE hs20vendor_ie; 4217 OPTIE QComVendorIE; 4218 OPTIE ESEVersion; 4219 OPTIE qcn_ie; 4220 OPTIE reduced_neighbor_report; 4221} 4222 4223// This frame is just Beacon with its Fixed Fields stripped out. It's handy 4224// for use with struct 'tSirBssDescription', which has members corresponding 4225// to some fixed fields, but keeps its IEs in un-parsed format. 4226 4227// Note that it also includes the IE 'WscBeaconProbeRes'. 4228 4229FRAME BeaconIEs 4230{ 4231 4232 MANDIE SSID; 4233 MANDIE SuppRates; 4234 OPTIE FHParamSet; 4235 OPTIE DSParams; 4236 OPTIE CFParams; 4237 OPTIE TIM; 4238 OPTIE Country; 4239 OPTIE FHParams; 4240 OPTIE FHPattTable; 4241 OPTIE PowerConstraints; 4242 OPTIE ChanSwitchAnn; 4243 OPTIE Quiet; 4244 OPTIE TPCReport; 4245 OPTIE ERPInfo; 4246 OPTIE ExtSuppRates; 4247 OPTIE RSN; 4248 OPTIE QBSSLoad; 4249 OPTIE EDCAParamSet; 4250 OPTIE QOSCapsAp; 4251 OPTIE APChannelReport; 4252 OPTIE RRMEnabledCap; 4253 OPTIE MobilityDomain; 4254 OPTIE ext_chan_switch_ann; 4255 OPTIE SuppOperatingClasses; 4256 OPTIE HTCaps; 4257 OPTIE HTInfo; 4258 OPTIE OBSSScanParameters; 4259 OPTIE ExtCap; 4260 OPTIE VHTCaps; 4261 OPTIE VHTOperation; 4262 OPTIE transmit_power_env[0..8]; 4263 OPTIE ChannelSwitchWrapper; 4264 OPTIE VHTExtBssLoad; 4265 OPTIE OperatingMode; 4266 OPTIE fils_indication; 4267 OPTIE max_chan_switch_time; 4268 OPTIE esp_information; 4269 OPTIE he_cap; 4270 OPTIE he_op; 4271 OPTIE spatial_reuse; 4272 OPTIE bss_color_change; 4273 OPTIE mu_edca_param_set; 4274 OPTIE he_6ghz_band_cap; 4275 4276 OPTIE sec_chan_offset_ele; 4277 OPTIE WAPI; 4278 OPTIE ESETxmitPower; 4279 OPTIE WiderBWChanSwitchAnn; 4280 OPTIE eht_cap; 4281 OPTIE eht_op; 4282 OPTIE mlo_ie; 4283 OPTIE t2lm_ie[0..2]; 4284 4285 OPTIE WPA; 4286 OPTIE WMMInfoAp; 4287 OPTIE WMMParams; 4288 OPTIE WMMCaps; 4289 OPTIE ESEVersion; 4290 OPTIE ESERadMgmtCap; 4291 OPTIE ESETrafStrmMet; 4292 OPTIE WscBeaconProbeRes; 4293 OPTIE P2PBeaconProbeRes; 4294 OPTIE Vendor1IE; 4295 OPTIE vendor_vht_ie; 4296 OPTIE Vendor3IE; 4297 OPTIE hs20vendor_ie; 4298 OPTIE QComVendorIE; 4299 OPTIE MBO_IE; 4300 OPTIE qcn_ie; 4301 OPTIE reduced_neighbor_report; 4302} // End frame BeaconIEs. 4303 4304FRAME Disassociation // 7.3.3.3 4305{ 4306 FF Reason; 4307 OPTIE P2PDisAssoc; 4308} 4309 4310FRAME AssocRequest // 7.2.3.4 4311{ 4312 FF Capabilities; 4313 FF ListenInterval; 4314 MANDIE SSID; 4315 MANDIE SuppRates; 4316 OPTIE ExtSuppRates; 4317 OPTIE PowerCaps; 4318 OPTIE SuppChannels; 4319 OPTIE RSNOpaque; 4320 OPTIE QOSCapsStation; 4321 OPTIE RRMEnabledCap; 4322 OPTIE MobilityDomain; 4323 OPTIE SuppOperatingClasses; 4324 OPTIE HTCaps; 4325 OPTIE ExtCap; 4326 OPTIE VHTCaps; 4327 OPTIE OperatingMode; 4328 OPTIE fils_session; 4329 OPTIE fils_public_key; 4330 OPTIE fils_key_confirmation; 4331 OPTIE fils_hlp_container; 4332 OPTIE bss_max_idle_period; 4333 OPTIE FTInfo; 4334 OPTIE he_cap; 4335 OPTIE he_6ghz_band_cap; 4336 4337 OPTIE WAPIOpaque; 4338 OPTIE WAPI; 4339 OPTIE QosMapSet; 4340 OPTIE fragment_ie; 4341 OPTIE dh_parameter_element; 4342 OPTIE eht_cap; 4343 OPTIE mlo_ie; 4344 OPTIE t2lm_ie[0..2]; 4345 4346 OPTIE WPAOpaque; 4347 OPTIE WMMCaps; 4348 OPTIE WMMInfoStation; 4349 OPTIE WscIEOpaque; 4350 OPTIE ESERadMgmtCap; 4351 OPTIE ESEVersion; 4352 OPTIE P2PIEOpaque; 4353 OPTIE WFDIEOpaque; 4354 OPTIE vendor_vht_ie; 4355 OPTIE hs20vendor_ie; 4356 OPTIE qcn_ie; 4357 OPTIE osen_ie; 4358 OPTIE roaming_consortium_sel; 4359} // End frame AssocRequest. 4360 4361FRAME AssocResponse // 7.2.3.5 4362{ 4363 FF Capabilities; 4364 FF Status; 4365 FF AID; 4366 MANDIE SuppRates; 4367 OPTIE ExtSuppRates; 4368 OPTIE EDCAParamSet; 4369 OPTIE RCPIIE; 4370 OPTIE RSNIIE; 4371 OPTIE RRMEnabledCap; 4372 OPTIE MobilityDomain; 4373 OPTIE FTInfo; 4374 OPTIE TimeoutInterval; 4375 OPTIE HTCaps; 4376 OPTIE HTInfo; 4377 OPTIE OBSSScanParameters; 4378 OPTIE ExtCap; 4379 OPTIE bss_max_idle_period; 4380 OPTIE QosMapSet; 4381 OPTIE VHTCaps; 4382 OPTIE VHTOperation; 4383 OPTIE OperatingMode; 4384 OPTIE fils_session; 4385 OPTIE fils_public_key; 4386 OPTIE fils_key_confirmation; 4387 OPTIE fils_hlp_container; 4388 OPTIE he_cap; 4389 OPTIE he_op; 4390 OPTIE spatial_reuse; 4391 OPTIE bss_color_change; 4392 OPTIE mu_edca_param_set; 4393 OPTIE he_6ghz_band_cap; 4394 4395 OPTIE RICDataDesc[2]; 4396 OPTIE ESETxmitPower; 4397 OPTIE fragment_ie; 4398 OPTIE fils_kde; 4399 OPTIE eht_cap; 4400 OPTIE eht_op; 4401 OPTIE mlo_ie; 4402 OPTIE t2lm_ie[0..2]; 4403 4404 OPTIE WPA; 4405 OPTIE WMMParams; 4406 OPTIE WMMCaps; 4407 OPTIE ESERadMgmtCap; 4408 OPTIE ESETrafStrmMet; 4409 OPTIE WMMTSPEC[0..4]; 4410 OPTIE WscAssocRes; 4411 OPTIE P2PAssocRes; 4412 OPTIE vendor_vht_ie; 4413 OPTIE qcn_ie; 4414 OPTIE MBO_IE; 4415 OPTIE reduced_neighbor_report; 4416} // End frame AssocResponse. 4417 4418FRAME ReAssocRequest // 7.2.3.6 4419{ 4420 FF Capabilities; 4421 FF ListenInterval; 4422 FF CurrentAPAddress; 4423 MANDIE SSID; 4424 MANDIE SuppRates; 4425 OPTIE ExtSuppRates; 4426 OPTIE PowerCaps; 4427 OPTIE SuppChannels; 4428 OPTIE RSNOpaque; 4429 OPTIE QOSCapsStation; 4430 OPTIE RRMEnabledCap; 4431 OPTIE MobilityDomain; 4432 OPTIE FTInfo; 4433 OPTIE RICDataDesc[2]; 4434 OPTIE SuppOperatingClasses; 4435 OPTIE HTCaps; 4436 OPTIE ExtCap; 4437 OPTIE VHTCaps; 4438 OPTIE OperatingMode; 4439 OPTIE bss_max_idle_period; 4440 OPTIE he_cap; 4441 OPTIE he_6ghz_band_cap; 4442 4443 OPTIE WAPIOpaque; 4444 OPTIE WAPI; 4445 OPTIE QosMapSet; 4446 OPTIE ESECckmOpaque; 4447 OPTIE eht_cap; 4448 OPTIE mlo_ie; 4449 OPTIE t2lm_ie[0..2]; 4450 4451 OPTIE WPAOpaque; 4452 OPTIE WMMCaps; 4453 OPTIE WMMInfoStation; 4454 OPTIE WscIEOpaque; 4455 OPTIE ESERadMgmtCap; 4456 OPTIE ESEVersion; 4457 OPTIE WMMTSPEC[0..4]; 4458 OPTIE ESETrafStrmRateSet; 4459 OPTIE P2PIEOpaque; 4460 OPTIE WFDIEOpaque; 4461 OPTIE vendor_vht_ie; 4462 OPTIE hs20vendor_ie; 4463} // End frame ReAssocRequest. 4464 4465FRAME ReAssocResponse // 7.2.3.7 4466{ 4467 FF Capabilities; 4468 FF Status; 4469 FF AID; 4470 MANDIE SuppRates; 4471 OPTIE ExtSuppRates; 4472 OPTIE EDCAParamSet; 4473 OPTIE RCPIIE; 4474 OPTIE RSNIIE; 4475 OPTIE RRMEnabledCap; 4476 OPTIE RSNOpaque; 4477 OPTIE MobilityDomain; 4478 OPTIE FTInfo; 4479 OPTIE RICDataDesc[2]; 4480 OPTIE TimeoutInterval; 4481 OPTIE HTCaps; 4482 OPTIE HTInfo; 4483 OPTIE OBSSScanParameters; 4484 OPTIE ExtCap; 4485 OPTIE bss_max_idle_period; 4486 OPTIE VHTCaps; 4487 OPTIE VHTOperation; 4488 OPTIE OperatingMode; 4489 OPTIE he_cap; 4490 OPTIE he_op; 4491 OPTIE spatial_reuse; 4492 OPTIE bss_color_change; 4493 OPTIE mu_edca_param_set; 4494 OPTIE he_6ghz_band_cap; 4495 4496 OPTIE QosMapSet; 4497 OPTIE ESETxmitPower; 4498 OPTIE eht_cap; 4499 OPTIE eht_op; 4500 OPTIE mlo_ie; 4501 OPTIE t2lm_ie[0..2]; 4502 4503 OPTIE WPA; 4504 OPTIE WMMParams; 4505 OPTIE ESERadMgmtCap; 4506 OPTIE ESETrafStrmMet; 4507 OPTIE WMMTSPEC[0..4]; 4508 OPTIE ESETrafStrmRateSet; 4509 OPTIE WscReassocRes; 4510 OPTIE P2PAssocRes; 4511 OPTIE vendor_vht_ie; 4512 OPTIE MBO_IE; 4513 OPTIE reduced_neighbor_report; 4514} // End frame ReAssocResponse. 4515 4516FRAME ProbeRequest // 7.2.3.8 4517{ 4518 MANDIE SSID; 4519 MANDIE SuppRates; 4520 OPTIE RequestedInfo; 4521 OPTIE ExtSuppRates; 4522 OPTIE DSParams; 4523 OPTIE HTCaps; 4524 OPTIE ExtCap; 4525 OPTIE VHTCaps; 4526 OPTIE he_cap; 4527 OPTIE he_6ghz_band_cap; 4528 4529 OPTIE eht_cap; 4530 OPTIE mlo_ie; 4531 4532 OPTIE WscProbeReq; 4533 OPTIE WFATPC; 4534 OPTIE P2PProbeReq; 4535 OPTIE qcn_ie; 4536} // End frame ProbeRequest. 4537 4538FRAME ProbeResponse // 7.2.3.9 4539{ 4540 FF TimeStamp; 4541 FF BeaconInterval; 4542 FF Capabilities; 4543 MANDIE SSID; 4544 MANDIE SuppRates; 4545 OPTIE FHParamSet; 4546 OPTIE DSParams; 4547 OPTIE CFParams; 4548 OPTIE Country; 4549 OPTIE FHParams; 4550 OPTIE FHPattTable; 4551 OPTIE PowerConstraints; 4552 OPTIE ChanSwitchAnn; 4553 OPTIE Quiet; 4554 OPTIE TPCReport; 4555 OPTIE ERPInfo; 4556 OPTIE ExtSuppRates; 4557 OPTIE RSNOpaque; 4558 OPTIE QBSSLoad; 4559 OPTIE EDCAParamSet; 4560 OPTIE RRMEnabledCap; 4561 OPTIE APChannelReport; 4562 OPTIE MobilityDomain; 4563 OPTIE ext_chan_switch_ann; 4564 OPTIE SuppOperatingClasses; 4565 OPTIE HTCaps; 4566 OPTIE HTInfo; 4567 OPTIE OBSSScanParameters; 4568 OPTIE ExtCap; 4569 OPTIE VHTCaps; 4570 OPTIE VHTOperation; 4571 OPTIE transmit_power_env[0..8]; 4572 OPTIE ChannelSwitchWrapper; 4573 OPTIE VHTExtBssLoad; 4574 OPTIE fils_indication; 4575 OPTIE max_chan_switch_time; 4576 OPTIE esp_information; 4577 OPTIE he_cap; 4578 OPTIE he_op; 4579 OPTIE spatial_reuse; 4580 OPTIE bss_color_change; 4581 OPTIE mu_edca_param_set; 4582 OPTIE he_6ghz_band_cap; 4583 4584 OPTIE sec_chan_offset_ele; 4585 OPTIE WAPI; 4586 OPTIE ESETxmitPower; 4587 OPTIE eht_cap; 4588 OPTIE eht_op; 4589 OPTIE mlo_ie; 4590 OPTIE t2lm_ie[0..2]; 4591 4592 OPTIE WPA; 4593 OPTIE WMMInfoAp; 4594 OPTIE WMMParams; 4595 OPTIE WMMCaps; 4596 OPTIE ESEVersion; 4597 OPTIE ESERadMgmtCap; 4598 OPTIE ESETrafStrmMet; 4599 OPTIE WscProbeRes; 4600 OPTIE P2PProbeRes; 4601 OPTIE Vendor1IE; 4602 OPTIE vendor_vht_ie; 4603 OPTIE Vendor3IE; 4604 OPTIE hs20vendor_ie; 4605 OPTIE QComVendorIE; 4606 OPTIE MBO_IE; 4607 OPTIE qcn_ie; 4608 OPTIE reduced_neighbor_report; 4609} // End frame ProbeResponse. 4610 4611FRAME Authentication // 7.2.3.10 4612{ 4613 FF AuthAlgo; 4614 FF AuthSeqNo; 4615 FF Status; 4616 OPTIE ChallengeText; 4617 OPTIE RSNOpaque; 4618 OPTIE MobilityDomain; 4619 OPTIE FTInfo; 4620 OPTIE TimeoutInterval; 4621 OPTIE RICDataDesc[2]; 4622 OPTIE fils_nonce; 4623 OPTIE fils_session; 4624 OPTIE fils_wrapped_data; 4625 OPTIE fils_assoc_delay_info; 4626 OPTIE mlo_ie; 4627} // End frame Auth. 4628 4629FRAME DeAuth // 7.2.3.11 4630{ 4631 FF Reason; 4632 OPTIE P2PDeAuth; 4633} 4634 4635 4636FRAME AddTSRequest // 7.4.2.1 4637{ 4638 4639 FF Category; 4640 FF Action; 4641 FF DialogToken; 4642 MANDIE TSPEC; 4643 OPTIE TCLAS[0..2]; 4644 OPTIE TCLASSPROC; 4645 4646 // These IEs aren't in the spec, but our extant code *will* parse them if 4647 // they're present. I included them to preserve that capability 4648 4649 OPTIE WMMTSPEC; 4650 OPTIE WMMTCLAS[0..2]; 4651 OPTIE WMMTCLASPROC; 4652 OPTIE ESETrafStrmRateSet; 4653 4654} // End frame AddTSRequest. 4655 4656FRAME WMMAddTSRequest 4657{ 4658 FF Category; 4659 FF Action; 4660 FF DialogToken; 4661 FF StatusCode; 4662 MANDIE WMMTSPEC; 4663 OPTIE ESETrafStrmRateSet; 4664} // End Frame WMMAddTSRequest 4665 4666FRAME AddTSResponse // 7.4.2.2 4667{ 4668 4669 FF Category; 4670 FF Action; 4671 FF DialogToken; 4672 FF Status; 4673 MANDIE TSDelay; 4674 MANDIE TSPEC; 4675 OPTIE TCLAS[0..2]; 4676 OPTIE TCLASSPROC; 4677 OPTIE Schedule; 4678 4679 // These IEs aren't in the spec, but our extant code *will* parse them if 4680 // they're present. I included them to preserve that capability 4681 OPTIE WMMTSDelay; 4682 OPTIE WMMSchedule; 4683 OPTIE WMMTSPEC; 4684 OPTIE WMMTCLAS[0..2]; 4685 OPTIE WMMTCLASPROC; 4686 OPTIE ESETrafStrmMet; 4687 4688} // End frame AddTSResponse. 4689 4690FRAME WMMAddTSResponse 4691{ 4692 4693 FF Category; 4694 FF Action; 4695 FF DialogToken; 4696 FF StatusCode; 4697 OPTIE WMMTSPEC; 4698 OPTIE ESETrafStrmMet; 4699 4700} // End frame WMMAddTSResponse. 4701 4702FRAME DelTS // 7.4.2.3 4703{ 4704 FF Category; 4705 FF Action; 4706 FF TSInfo; 4707 FF Reason; 4708} 4709 4710FRAME WMMDelTS 4711{ 4712 FF Category; 4713 FF Action; 4714 FF DialogToken; 4715 FF StatusCode; 4716 MANDIE WMMTSPEC; 4717} 4718 4719FRAME TPCRequest 4720{ 4721 FF Category; 4722 FF Action; 4723 FF DialogToken; 4724 MANDIE TPCRequest; 4725} 4726 4727FRAME TPCReport 4728{ 4729 FF Category; 4730 FF Action; 4731 FF DialogToken; 4732 MANDIE TPCReport; 4733} 4734 4735FRAME ChannelSwitch 4736{ 4737 FF Category; 4738 FF Action; 4739 MANDIE ChanSwitchAnn; 4740 OPTIE sec_chan_offset_ele; 4741 OPTIE WiderBWChanSwitchAnn; 4742} 4743 4744FRAME MeasurementRequest 4745{ 4746 FF Category; 4747 FF Action; 4748 FF DialogToken; 4749 MANDIE MeasurementRequest[1..4]; 4750} 4751 4752FRAME MeasurementReport 4753{ 4754 FF Category; 4755 FF Action; 4756 FF DialogToken; 4757 MANDIE MeasurementReport; 4758} 4759 4760FRAME SMPowerSave 4761{ 4762 FF Category; 4763 FF Action; 4764 FF SMPowerModeSet; 4765} 4766 4767FRAME RadioMeasurementRequest 4768{ 4769 FF Category; 4770 FF Action; 4771 FF DialogToken; 4772 FF NumOfRepetitions; 4773 //Measurement Request IE. 4774 MANDIE MeasurementRequest[1..5]; 4775} 4776 4777FRAME RadioMeasurementReport 4778{ 4779 FF Category; 4780 FF Action; 4781 FF DialogToken; 4782 //Measurement Report elements. 4783 MANDIE MeasurementReport[1]; 4784} 4785 4786FRAME LinkMeasurementRequest 4787{ 4788 FF Category; 4789 FF Action; 4790 FF DialogToken; 4791 FF TxPower; 4792 FF MaxTxPower; 4793 //Optional Sub Ies 4794} 4795 4796FRAME LinkMeasurementReport 4797{ 4798 FF Category; 4799 FF Action; 4800 FF DialogToken; 4801 FF TPCEleID; 4802 FF TPCEleLen; 4803 FF TxPower; 4804 FF LinkMargin; 4805 FF RxAntennaId; 4806 FF TxAntennaId; 4807 FF RCPI; 4808 FF RSNI; 4809 //Optional Vendor specific IEs ... ignoring 4810} 4811 4812FRAME NeighborReportRequest 4813{ 4814 FF Category; 4815 FF Action; 4816 FF DialogToken; 4817 OPTIE SSID; 4818 //Optional vendor specific IE...ignoring. 4819} 4820 4821FRAME NeighborReportResponse 4822{ 4823 FF Category; 4824 FF Action; 4825 FF DialogToken; 4826 OPTIE NeighborReport[1..MAX_SUPPORTED_NEIGHBOR_RPT]; 4827} 4828 4829FRAME OperatingMode 4830{ 4831 FF Category; 4832 FF Action; 4833 //Operating Mode field 4834 FF OperatingMode; 4835} 4836 4837FRAME TDLSDisReq 4838{ 4839 FF Category; 4840 FF Action; 4841 FF DialogToken; 4842 MANDIE LinkIdentifier; 4843} 4844 4845FRAME TDLSDisRsp 4846{ 4847 FF Category; 4848 FF Action; 4849 FF DialogToken; 4850 FF Capabilities; 4851 MANDIE SuppRates; 4852 OPTIE ExtSuppRates; 4853 OPTIE SuppChannels; 4854 OPTIE SuppOperatingClasses; 4855 OPTIE RSN; 4856 OPTIE ExtCap; 4857 OPTIE FTInfo; 4858 OPTIE TimeoutInterval; 4859 OPTIE RICData; 4860 OPTIE HTCaps; 4861 OPTIE ht2040_bss_coexistence; 4862 MANDIE LinkIdentifier; 4863 OPTIE VHTCaps; 4864 OPTIE he_cap; 4865} 4866 4867FRAME TDLSSetupReq 4868{ 4869 FF Category; 4870 FF Action; 4871 FF DialogToken; 4872 FF Capabilities; 4873 MANDIE SuppRates; 4874 OPTIE Country; 4875 OPTIE ExtSuppRates; 4876 OPTIE SuppChannels; 4877 OPTIE RSN; 4878 OPTIE ExtCap; 4879 OPTIE SuppOperatingClasses; 4880 OPTIE QOSCapsStation; 4881 OPTIE FTInfo; 4882 OPTIE TimeoutInterval; 4883 OPTIE RICData; 4884 OPTIE HTCaps; 4885 OPTIE ht2040_bss_coexistence; 4886 MANDIE LinkIdentifier; 4887 OPTIE WMMInfoStation; 4888 OPTIE AID; 4889 OPTIE VHTCaps; 4890 OPTIE he_cap; 4891 OPTIE he_6ghz_band_cap; 4892} 4893 4894FRAME TDLSSetupRsp 4895{ 4896 FF Category; 4897 FF Action; 4898 FF Status; 4899 FF DialogToken; 4900 FF Capabilities ; 4901 OPTIE SuppRates; 4902 OPTIE Country; 4903 OPTIE ExtSuppRates; 4904 OPTIE SuppChannels; 4905 OPTIE RSN; 4906 OPTIE ExtCap; 4907 OPTIE SuppOperatingClasses; 4908 OPTIE QOSCapsStation; 4909 OPTIE FTInfo; 4910 OPTIE TimeoutInterval; 4911 OPTIE RICData; 4912 OPTIE HTCaps; 4913 OPTIE ht2040_bss_coexistence; 4914 OPTIE LinkIdentifier; 4915 OPTIE WMMInfoStation; 4916 OPTIE AID; 4917 OPTIE VHTCaps; 4918 OPTIE OperatingMode; 4919 OPTIE he_cap; 4920 OPTIE he_6ghz_band_cap; 4921} 4922 4923FRAME TDLSSetupCnf 4924{ 4925 FF Category; 4926 FF Action; 4927 FF Status; 4928 FF DialogToken; 4929 OPTIE RSN; 4930 OPTIE EDCAParamSet; 4931 OPTIE FTInfo; 4932 OPTIE TimeoutInterval; 4933 OPTIE HTInfo; 4934 OPTIE LinkIdentifier; 4935 OPTIE WMMParams; 4936 OPTIE VHTOperation; 4937 OPTIE OperatingMode; 4938 OPTIE he_op; 4939} 4940FRAME TDLSTeardown 4941{ 4942 FF Category; 4943 FF Action; 4944 FF Reason; 4945 OPTIE FTInfo; 4946 MANDIE LinkIdentifier; 4947} 4948 4949FRAME TDLSPeerTrafficInd 4950{ 4951 FF Category; 4952 FF Action; 4953 FF DialogToken; 4954 MANDIE LinkIdentifier; 4955 OPTIE PTIControl; 4956 MANDIE PUBufferStatus; 4957} 4958 4959FRAME TDLSPeerTrafficRsp 4960{ 4961 FF Category; 4962 FF Action; 4963 FF DialogToken; 4964 MANDIE LinkIdentifier; 4965} 4966 4967FRAME SaQueryReq 4968{ 4969 FF Category; 4970 FF Action; 4971 FF TransactionId; 4972 OPTIE oci; 4973} 4974 4975FRAME SaQueryRsp 4976{ 4977 FF Category; 4978 FF Action; 4979 FF TransactionId; 4980 OPTIE oci; 4981} 4982 4983FRAME QosMapConfigure 4984{ 4985 FF Category; 4986 FF Action; 4987 MANDIE QosMapSet; 4988} 4989 4990FRAME VHTGidManagementActionFrame 4991{ 4992 FF Category; 4993 FF Action; 4994 FF VhtMembershipStatusArray; 4995 FF VhtUserPositionArray; 4996} 4997 4998FRAME ht2040_bss_coexistence_mgmt_action_frame 4999{ 5000 FF Category; 5001 FF Action; 5002 MANDIE ht2040_bss_coexistence; 5003 MANDIE ht2040_bss_intolerant_report; 5004} 5005 5006FRAME TimingAdvertisementFrame // 8.3.3.15 5007{ 5008 FF TimeStamp; 5009 FF Capabilities; 5010 OPTIE Country; 5011 OPTIE PowerConstraints; 5012 OPTIE TimeAdvertisement; 5013 OPTIE ExtCap; 5014 OPTIE Vendor1IE; 5015 OPTIE Vendor3IE; 5016} 5017 5018FRAME ext_channel_switch_action_frame 5019{ 5020 FF Category; 5021 FF Action; 5022 FF ext_chan_switch_ann_action; 5023 OPTIE WiderBWChanSwitchAnn; 5024 OPTIE qcn_ie; 5025 OPTIE bw_ind_element; 5026} 5027 5028FRAME p2p_oper_chan_change_confirm 5029{ 5030 FF Category; 5031 FF p2p_action_oui; 5032 FF p2p_action_subtype; 5033 FF DialogToken; 5034 OPTIE HTCaps; 5035 OPTIE VHTCaps; 5036 OPTIE OperatingMode; 5037} 5038 5039FRAME addba_req 5040{ 5041 FF Category; 5042 FF Action; 5043 FF DialogToken; 5044 FF addba_param_set; 5045 FF ba_timeout; 5046 FF ba_start_seq_ctrl; 5047 OPTIE addba_extn_element; 5048} 5049 5050FRAME addba_rsp 5051{ 5052 FF Category; 5053 FF Action; 5054 FF DialogToken; 5055 FF Status; 5056 FF addba_param_set; 5057 FF ba_timeout; 5058 OPTIE addba_extn_element; 5059} 5060 5061FRAME delba_req 5062{ 5063 FF Category; 5064 FF Action; 5065 FF delba_param_set; 5066 FF Reason; 5067} 5068 5069FRAME t2lm_neg_req 5070{ 5071 FF Category; 5072 FF Action; 5073 FF DialogToken; 5074 OPTIE t2lm_ie[0..2]; 5075} 5076 5077FRAME t2lm_neg_rsp 5078{ 5079 FF Category; 5080 FF Action; 5081 FF DialogToken; 5082 FF Status; 5083} 5084 5085FRAME t2lm_teardown 5086{ 5087 FF Category; 5088 FF Action; 5089} 5090 5091FRAME vendor_action_frame 5092{ 5093 FF Category; 5094 FF vendor_oui; 5095 FF vendor_action_subtype; 5096} 5097 5098FRAME mscs_request_action_frame 5099{ 5100 FF Category; 5101 FF Action; 5102 FF DialogToken; 5103 MANDIE descriptor_element; 5104} 5105 5106FRAME epcs_neg_req 5107{ 5108 FF Category; 5109 FF Action; 5110 FF DialogToken; 5111} 5112 5113FRAME epcs_neg_rsp 5114{ 5115 FF Category; 5116 FF Action; 5117 FF DialogToken; 5118 FF Status; 5119} 5120 5121FRAME epcs_teardown 5122{ 5123 FF Category; 5124 FF Action; 5125} 5126 5127// Local Variables: 5128// mode: c++ 5129// fill-column: 77 5130// comment-column: 42 5131// indent-tabs-mode: nil 5132// show-trailing-whitespace: t 5133// End: 5134 5135// parser.frms ends here. 5136