blob: 44640b185bd0ba8b0b479cd46a26878c42fa38f1 [file] [log] [blame]
// Copyright 2021 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;
/// IEEE Std 802.11-2016, 9.4.2.2
/// The maximum length of an SSID is 32 bytes, even when the SSID should be
/// interpreted using UTF-8 encoding (see Table 9-135). While every length in
/// the 802.11 standard is byte oriented, the word BYTE is included in the
/// name of this constant to emphasize the importance that it not be applied
/// to the length of a UTF-8 encoded string.
@namespaced
const MAX_SSID_BYTE_LEN uint8 = 32;
/// The limit on the number of SSIDs is 84 because an SSID List IE can contain no
/// more than 84 one byte SSIDs. (Specifying a zero byte SSID in an SSID List with
/// more than one SSID is valid but unnecessary since it is the wildcard SSID.)
@namespaced
const SSID_LIST_MAX uint8 = 84;
/// The limit on the number of channels in a list of unique channel numbers is 256
/// since a channel number in IEEE 802.11-2016 cannot exceed one octet. See
/// IEEE 802.11-2016 9.4.2.18 Supported Channels element for an example element
/// that assumes a channel number does not exceed one octet.
@namespaced
const MAX_UNIQUE_CHANNEL_NUMBERS uint16 = 256;
@namespaced
const MAC_ADDR_LEN uint8 = 6;
alias MacAddr = array<uint8, MAC_ADDR_LEN>;
/// IEEE Std 802.11-2016, 9.4.2.99
@namespaced
const MAX_MESH_ID_BYTE_LEN uint8 = 32;
/// IEEE Std 802.11-2016, 9.2.4.7
@namespaced
const MAX_MMPDU_BYTE_LEN uint16 = 2304;
@namespaced
const MAX_VHT_MPDU_BYTE_LEN_0 uint16 = 3895;
@namespaced
const MAX_VHT_MPDU_BYTE_LEN_1 uint16 = 7991;
@namespaced
const MAX_VHT_MPDU_BYTE_LEN_2 uint16 = 11454;
/// IEEE Std 802.11-2016, 9.3.3.2
@namespaced
const MAX_MGMT_FRAME_MAC_HEADER_BYTE_LEN uint8 = 28;
/// IEEE Std 802.11-2016, Table 9-19
@namespaced
const WLAN_MSDU_MAX_LEN uint32 = 2304;
/// IEEE Std 802.11-2016, 9.4.2.25.1
/// IEEE mentions that an element body maximum length is 255 octets in the RSN element
/// section, but not in a dedicated section.
/// Since the IE header is two octets, the whole IE max length is 257 octets.
@namespaced
const WLAN_IE_MAX_LEN uint32 = 257;
@namespaced
const WLAN_IE_BODY_MAX_LEN uint32 = 255;
/// IEEE Std 802.11-2016, 9.2.4.5
@namespaced
const TIDS_MAX uint32 = 16;
/// IEEE Std 802.11-2016 12.5.3.2
@namespaced
const CCMP_HDR_LEN uint32 = 8;
@namespaced
const CCMP_PN_LEN uint32 = 6;
@namespaced
const CCMP_128_MIC_LEN uint32 = 8;
@namespaced
const CCMP_256_MIC_LEN uint32 = 16;
// IEEE Std 802.11-2016 9.4.2.56
@namespaced
const HT_CAP_LEN uint8 = 26;
// IEEE Std 802.11-2016 9.4.2.57
@namespaced
const HT_OP_LEN uint8 = 22;
// IEEE Std 802.11-2016 9.5.2.158
@namespaced
const VHT_CAP_LEN uint8 = 12;
// IEEE Std 802.11-2016 9.5.2.159
@namespaced
const VHT_OP_LEN uint8 = 5;
// https://standards.ieee.org/faqs/regauth/#17
@available(added=15)
@namespaced
const OUI_LEN uint8 = 3;
// IEEE Std 802.11-2016, Table 12-4
@available(added=15)
@namespaced
const MAX_KEY_LEN uint8 = 32;
// IEEE Std 802.11-2016 defines 12 values in dot11SupportedDataRatesRxTable.
// It is never necessary to report more than 12 basic rates.
//
// This constant bounds the number of supported basic rates communicated between
// WLAN components.
@available(added=13)
@namespaced
const MAX_SUPPORTED_BASIC_RATES uint8 = 12;