| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be found |
| // in the LICENSE file. |
| |
| /// This header contains structs and enums derived from the IEEE 802.11 |
| /// specification, in particular IEEE Std 802.11-2016. Accordingly: |
| /// |
| /// * All uses of declarations from 802.11-2016 should be placed in this file. |
| /// * This file should not contain anything that is not explicitly defined in |
| /// 802.11-2016. |
| library ddk.hw.wlan.ieee80211; |
| |
| /// IEEE Std 802.11-2016, 9.4.2.2 |
| // TODO(fxbug.dev/73049): Unify with fuchsia.wlan.ieee80211.MAX_SSID_LEN once ddk migrates to FIDL. |
| const uint32 IEEE80211_MAX_SSID_LEN = 32; |
| |
| /// IEEE Std 802.11-2016, 9.2.4.5 |
| const uint32 IEEE80211_TIDS_MAX = 16; |
| |
| /// IEEE Std 802.11-2016 12.5.3.2 |
| const uint32 IEEE80211_CCMP_HDR_LEN = 8; |
| const uint32 IEEE80211_CCMP_PN_LEN = 6; |
| const uint32 IEEE80211_CCMP_128_MIC_LEN = 8; |
| const uint32 IEEE80211_CCMP_256_MIC_LEN = 16; |
| |
| /// Bitfields in the HT Capabilities element "Supported MCS Set" field. These |
| /// are approximately as defined in 9.4.2.56.4. |
| [Packed] |
| struct Ieee80211HtCapabilitiesSupportedMcsSetFields { |
| uint64 rx_mcs_head; |
| uint32 rx_mcs_tail; |
| uint32 tx_mcs; |
| }; |
| |
| [Packed] |
| union Ieee80211HtCapabilitiesSupportedMcsSet { |
| 1: array<uint8>:16 bytes; |
| 2: Ieee80211HtCapabilitiesSupportedMcsSetFields fields; |
| }; |
| |
| /// The HT capabilities element, as defined in 9.4.2.56. |
| [Packed] |
| struct Ieee80211HtCapabilities { |
| uint16 ht_capability_info; |
| uint8 ampdu_params; |
| Ieee80211HtCapabilitiesSupportedMcsSet supported_mcs_set; |
| uint16 ht_ext_capabilities; |
| uint32 tx_beamforming_capabilities; |
| uint8 asel_capabilities; |
| }; |
| |
| /// The VHT capabilities element, as defined in 9.4.2.158. |
| [Packed] |
| struct Ieee80211VhtCapabilities { |
| uint32 vht_capability_info; |
| uint64 supported_vht_mcs_and_nss_set; |
| }; |
| |
| /// 802.11 reason codes. These values are common throughout the standard. |
| /// IEEE Std 802.11-2016, 9.4.1.7, Table 9-45 |
| enum ReasonCode : uint16 { |
| /// 0 reserved. |
| UNSPECIFIED_REASON = 1; |
| INVALID_AUTHENTICATION = 2; |
| LEAVING_NETWORK_DEAUTH = 3; |
| REASON_INACTIVITY = 4; |
| NO_MORE_STAS = 5; |
| INVALID_CLASS2_FRAME = 6; |
| INVALID_CLASS3_FRAME = 7; |
| LEAVING_NETWORK_DISASSOC = 8; |
| NOT_AUTHENTICATED = 9; |
| UNACCEPTABLE_POWER_CAPABILITY = 10; |
| UNACCEPTABLE_SUPPORTED_CHANNELS = 11; |
| BSS_TRANSITION_DISASSOC = 12; |
| REASON_INVALID_ELEMENT = 13; |
| MIC_FAILURE = 14; |
| /// 15 is named "4WAY_HANDSHAKE_TIMEOUT" in 802.11-2016. |
| FOURWAY_HANDSHAKE_TIMEOUT = 15; |
| GK_HANDSHAKE_TIMEOUT = 16; |
| HANDSHAKE_ELEMENT_MISMATCH = 17; |
| REASON_INVALID_GROUP_CIPHER = 18; |
| REASON_INVALID_PAIRWISE_CIPHER = 19; |
| REASON_INVALID_AKMP = 20; |
| UNSUPPORTED_RSNE_VERSION = 21; |
| INVALID_RSNE_CAPABILITIES = 22; |
| /// 23 is named "802_1_X_AUTH_FAILED" in 802.11-2016. |
| IEEE802_1_X_AUTH_FAILED = 23; |
| REASON_CIPHER_OUT_OF_POLICY = 24; |
| TDLS_PEER_UNREACHABLE = 25; |
| TDLS_UNSPECIFIED_REASON = 26; |
| SSP_REQUESTED_DISASSOC = 27; |
| NO_SSP_ROAMING_AGREEMENT = 28; |
| BAD_CIPHER_OR_AKM = 29; |
| NOT_AUTHORIZED_THIS_LOCATION = 30; |
| SERVICE_CHANGE_PRECLUDES_TS = 31; |
| UNSPECIFIED_QOS_REASON = 32; |
| NOT_ENOUGH_BANDWIDTH = 33; |
| MISSING_ACKS = 34; |
| EXCEEDED_TXOP = 35; |
| STA_LEAVING = 36; |
| /// 37 is assigned to multiple names "END_TS", "END_BA", and "END_DLS" in 802.11-2016. |
| END_TS_BA_DLS = 37; |
| /// 38 is assigned to multiple names "UNKNOWN_TS" and "UNKNOWN_BA" in 802.11-2016. |
| UNKNOWN_TS_BA = 38; |
| TIMEOUT = 39; |
| PEERKEY_MISMATCH = 45; |
| PEER_INITIATED = 46; |
| AP_INITIATED = 47; |
| REASON_INVALID_FT_ACTION_FRAME_COUNT = 48; |
| REASON_INVALID_PMKID = 49; |
| REASON_INVALID_MDE = 50; |
| REASON_INVALID_FTE = 51; |
| MESH_PEERING_CANCELED = 52; |
| MESH_MAX_PEERS = 53; |
| MESH_CONFIGURATION_POLICY_VIOLATION = 54; |
| MESH_CLOSE_RCVD = 55; |
| MESH_MAX_RETRIES = 56; |
| MESH_CONFIRM_TIMEOUT = 57; |
| MESH_INVALID_GTK = 58; |
| MESH_INCONSISTENT_PARAMETERS = 59; |
| MESH_INVALID_SECURITY_CAPABILITY = 60; |
| MESH_PATH_ERROR_NO_PROXY_INFORMATION = 61; |
| MESH_PATH_ERROR_NO_FORWARDING_INFORMATION = 62; |
| MESH_PATH_ERROR_DESTINATION_UNREACHABLE = 63; |
| MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS = 64; |
| MESH_CHANNEL_SWITCH_REGULATORY_REQUIREMENTS = 65; |
| MESH_CHANNEL_SWITCH_UNSPECIFIED = 66; |
| |
| /// Reserved values we will use for our own purposes. |
| /// ----- |
| /// MLME lost the link, usually caused by loss of signal with the AP. |
| MLME_LINK_FAILED = 128; |
| /// Driver detected a lack of rx frames. |
| FW_RX_STALLED = 129; |
| }; |
| |
| /// 802.11 status codes. These values are common throughout the standard. |
| /// IEEE Std 802.11-2016, 9.4.1.9, Table 9-46 |
| enum StatusCode : uint16 { |
| SUCCESS = 0; |
| REFUSED_REASON_UNSPECIFIED = 1; |
| TDLS_REJECTED_ALTERNATIVE_PROVIDED = 2; |
| TDLS_REJECTED = 3; |
| /// 4 reserved. |
| SECURITY_DISABLED = 5; |
| UNACCEPTABLE_LIFETIME = 6; |
| NOT_IN_SAME_BSS = 7; |
| /// 8-9 reserved. |
| REFUSED_CAPABILITIES_MISMATCH = 10; |
| DENIED_NO_ASSOCIATION_EXISTS = 11; |
| DENIED_OTHER_REASON = 12; |
| UNSUPPORTED_AUTH_ALGORITHM = 13; |
| TRANSACTION_SEQUENCE_ERROR = 14; |
| CHALLENGE_FAILURE = 15; |
| REJECTED_SEQUENCE_TIMEOUT = 16; |
| DENIED_NO_MORE_STAS = 17; |
| REFUSED_BASIC_RATES_MISMATCH = 18; |
| DENIED_NO_SHORT_PREAMBLE_SUPPORT = 19; |
| /// 20-21 reserved. |
| REJECTED_SPECTRUM_MANAGEMENT_REQUIRED = 22; |
| REJECTED_BAD_POWER_CAPABILITY = 23; |
| REJECTED_BAD_SUPPORTED_CHANNELS = 24; |
| DENIED_NO_SHORT_SLOT_TIME_SUPPORT = 25; |
| /// 26 reserved. |
| DENIED_NO_HT_SUPPORT = 27; |
| R0KH_UNREACHABLE = 28; |
| DENIED_PCO_TIME_NOT_SUPPORTED = 29; |
| REFUSED_TEMPORARILY = 30; |
| ROBUST_MANAGEMENT_POLICY_VIOLATION = 31; |
| UNSPECIFIED_QOS_FAILURE = 32; |
| DENIED_INSUFFICIENT_BANDWIDTH = 33; |
| DENIED_POOR_CHANNEL_CONDITIONS = 34; |
| DENIED_QOS_NOT_SUPPORTED = 35; |
| REQUEST_DECLINED = 37; |
| INVALID_PARAMETERS = 38; |
| REJECTED_WITH_SUGGESTED_CHANGES = 39; |
| STATUS_INVALID_ELEMENT = 40; |
| STATUS_INVALID_GROUP_CIPHER = 41; |
| STATUS_INVALID_PAIRWISE_CIPHER = 42; |
| STATUS_INVALID_AKMP = 43; |
| UNSUPPORTED_RSNE_VERSION = 44; |
| INVALID_RSNE_CAPABILITIES = 45; |
| STATUS_CIPHER_OUT_OF_POLICY = 46; |
| REJECTED_FOR_DELAY_PERIOD = 47; |
| DLS_NOT_ALLOWED = 48; |
| NOT_PRESENT = 49; |
| NOT_QOS_STA = 50; |
| DENIED_LISTEN_INTERVAL_TOO_LARGE = 51; |
| STATUS_INVALID_FT_ACTION_FRAME_COUNT = 52; |
| STATUS_INVALID_PMKID = 53; |
| STATUS_INVALID_MDE = 54; |
| STATUS_INVALID_FTE = 55; |
| /// 56 is assigned to "REQUESTED_TCLAS_NOT_SUPPORTED_BY_AP" in 802.11-2016, duplicate with 80. |
| /// Name below is as listed in the 802.11 Assigned Numbers Authority database. |
| REQUESTED_TCLAS_NOT_SUPPORTED_BY_AP = 56; |
| INSUFFICIENT_TCLAS_PROCESSING_RESOURCES = 57; |
| TRY_ANOTHER_BSS = 58; |
| GAS_ADVERTISEMENT_PROTOCOL_NOT_SUPPORTED = 59; |
| NO_OUTSTANDING_GAS_REQUEST = 60; |
| GAS_RESPONSE_NOT_RECEIVED_FROM_SERVER = 61; |
| GAS_QUERY_TIMEOUT = 62; |
| GAS_QUERY_RESPONSE_TOO_LARGE = 63; |
| REJECTED_HOME_WITH_SUGGESTED_CHANGES = 64; |
| SERVER_UNREACHABLE = 65; |
| /// 66 reserved. |
| REJECTED_FOR_SSP_PERMISSIONS = 67; |
| REFUSED_UNAUTHENTICATED_ACCESS_NOT_SUPPORTED = 68; |
| /// 69-71 reserved. |
| INVALID_RSNE = 72; |
| U_APSD_COEXISTANCE_NOT_SUPPORTED = 73; |
| U_APSD_COEX_MODE_NOT_SUPPORTED = 74; |
| BAD_INTERVAL_WITH_U_APSD_COEX = 75; |
| ANTI_CLOGGING_TOKEN_REQUIRED = 76; |
| UNSUPPORTED_FINITE_CYCLIC_GROUP = 77; |
| CANNOT_FIND_ALTERNATIVE_TBTT = 78; |
| TRANSMISSION_FAILURE = 79; |
| /// See assignment for 56. |
| REQUESTED_TCLAS_NOT_SUPPORTED = 80; |
| TCLAS_RESOURCES_EXHAUSTED = 81; |
| REJECTED_WITH_SUGGESTED_BSS_TRANSITION = 82; |
| REJECT_WITH_SCHEDULE = 83; |
| REJECT_NO_WAKEUP_SPECIFIED = 84; |
| SUCCESS_POWER_SAVE_MODE = 85; |
| PENDING_ADMITTING_FST_SESSION = 86; |
| PERFORMING_FST_NOW = 87; |
| PENDING_GAP_IN_BA_WINDOW = 88; |
| REJECT_U_PID_SETTING = 89; |
| REFUSED_EXTERNAL_REASON = 92; |
| REFUSED_AP_OUT_OF_MEMORY = 93; |
| REJECTED_EMERGENCY_SERVICES_NOT_SUPPORTED = 94; |
| QUERY_RESPONSE_OUTSTANDING = 95; |
| REJECT_DSE_BAND = 96; |
| TCLAS_PROCESSING_TERMINATED = 97; |
| TS_SCHEDULE_CONFLICT = 98; |
| DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL = 99; |
| MCCAOP_RESERVATION_CONFLICT = 100; |
| MAF_LIMIT_EXCEEDED = 101; |
| MCCA_TRACK_LIMIT_EXCEEDED = 102; |
| DENIED_DUE_TO_SPECTRUM_MANAGEMENT = 103; |
| DENIED_VHT_NOT_SUPPORTED = 104; |
| ENABLEMENT_DENIED = 105; |
| RESTRICTION_FROM_AUTHORIZED_GDB = 106; |
| AUTHORIZATION_DEENABLED = 107; |
| }; |