// Copyright 2020 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.
library fuchsia.wlan.ieee80211;

/// 802.11 reason codes.  These values are common throughout the standard.
/// IEEE Std 802.11-2016, 9.4.1.7, Table 9-45
@available(added=16)
type ReasonCode = flexible enum : uint16 {
    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;

    /// -----
    /// Values 67 to 127 are reserved by the IEEE protocol, and
    /// values 128 to 65535 are reserved for platform use.
    /// -----
    /// MLME lost the link, usually caused by loss of signal with the AP.
    MLME_LINK_FAILED = 128;
    /// Driver detected a stalled Rx path in FW.
    FW_RX_STALLED = 129;
    /// Driver detected high wme rx error rate in FW.
    FW_HIGH_WME_RX_ERR_RATE = 130;
};
