blob: 4f8164adf3a2ed425adf8c94610f35f9805e1881 [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.internal;
using fuchsia.wlan.common;
using fuchsia.wlan.ieee80211 as ieee80211;
// IEEE Std 802.11-2016, 9.4.1.4
alias CapabilityInfo = uint16;
// IEEE Std 802.11-2016 defines 12 values in dot11SupportedDataRatesRxTable and
// 2 values for BSS Membership Selector in Table 9-78. The number of valid basic rates
// specified in the Beacon frame received from an AP is therefore bounded by 14.
//
// This constant is strictly meant to bound the number of basic rates communicated
// between WLAN components during association.
@namespaced
const MAX_ASSOC_BASIC_RATES uint8 = 14;
// IEEE Std 802.11-2016 6.3.3.3.2
type BssDescription = struct {
bssid ieee80211.MacAddr;
bss_type fuchsia.wlan.common.BssType;
beacon_period uint16; // in TU
capability_info CapabilityInfo;
/// All info elements present in the beacon or probe response frame.
ies vector<uint8>:MAX;
// List up non-standard, Fuchsia only parameters
channel fuchsia.wlan.common.WlanChannel;
// The running average of received signal strength indicator in units of dBm. This value is
// updated periodically when the client is associated to an AP.
rssi_dbm int8; // dBm
// The running average of snr in units of dB. This value is updated periodically when the
// client is associated to an AP.
snr_db int8;
};
type WmmStatusResponse = struct {
apsd bool;
ac_be_params WmmAcParams;
ac_bk_params WmmAcParams;
ac_vi_params WmmAcParams;
ac_vo_params WmmAcParams;
};
/// WFA WMM v1.2, 2.2.2
type WmmAcParams = struct {
/// Lower bound of contention window in exponential form
/// `cw_min = 2^(ecw_min) - 1`. The unit for contention window is "slot time", which
/// is different for each standard (e.g. 9 microseconds, 13 microseconds, etc.)
ecw_min uint8;
/// Upper bound of contention window in exponential form
/// `cw_max = 2^(ecw_max) - 1`. The unit for contention window is "slot time", which
/// is different for each standard (e.g. 9 microseconds, 13 microseconds, etc.)
ecw_max uint8;
/// Arbitration Interframe Spacing Number (control wait time between sending each frame)
aifsn uint8;
/// TXOP limit in unit of 32 microseconds
txop_limit uint16;
/// Whether admission control is mandatory
acm bool;
};
type SignalReportIndication = struct {
rssi_dbm int8;
snr_db int8;
};
// IEEE 802.11-2016 9.4.2.19
// Unlike a normal channel switch announcement, a ChannelSwitchInfo is sent at the time the channel
// changes and does not include a delay field.
type ChannelSwitchInfo = struct {
new_channel uint8;
// The operating class/country may also be modified by an extended channel switch request, but
// we do not currently support this.
};