// 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
enum ReasonCode : uint16 {
    RESERVED_0 = 0;

    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_67_TO_127 = 67;

    /// 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;

    RESERVED_130_TO_65535 = 130;
};
