blob: 11b390db938231326cd51d505a9b78a04225924e [file] [log] [blame]
// 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.
library ddk.hw.wlan.ieee80211;
/// 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.
/// IEEE Std 802.11-2016, 9.4.2.2
const uint32 IEEE80211_SSID_LEN_MAX = 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 {
array<uint8>:16 bytes;
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;
};