blob: 4525947965975caf57bcd57dcbb93dac4e51df49 [file] [log] [blame]
// 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.internal;
using fuchsia.wlan.common;
enum BssTypes {
INFRASTRUCTURE = 1;
PERSONAL = 2;
INDEPENDENT = 3;
MESH = 4;
ANY_BSS = 5;
//LAST = ANY_BSS;
};
// IEEE Std 802.11-2016, 9.4.1.4
alias CapabilityInfo = uint16;
// IEEE Std 802.11-2016 9.4.2.56
const uint8 HT_CAP_LEN = 26;
// IEEE Std 802.11-2016 9.4.2.57
const uint8 HT_OP_LEN = 22;
// IEEE Std 802.11-2016 9.5.2.158
const uint8 VHT_CAP_LEN = 12;
// IEEE Std 802.11-2016 9.5.2.159
const uint8 VHT_OP_LEN = 5;
// IEEE Std 802.11-2016 defines 12 values in dot11SupportedDataRatesRxTable and
// 2 values for BSS Membership Selector in Table 9-78. Only these 14 values are valid.
// But in fxbug.dev/41022, some of these values may be duplicated in both SupportedRates(SR) and
// ExtendedSupportedRates(ESR). Since the SR element allows 8 bytes, and assuming the ESR element
// duplicates all the values in the SR element plus contains all the remaining valid values, the
// maximum is set to 8 + 14 = 22.
const uint8 RATES_MAX_LEN = 22;
// IEEE Std 802.11-2016 9.4.2.56
struct HtCapabilities {
array<uint8>:HT_CAP_LEN bytes;
};
// IEEE Std 802.11-2016 9.4.2.57
struct HtOperation {
array<uint8>:HT_OP_LEN bytes;
};
// IEEE Std 802.11-2016 9.5.2.158
struct VhtCapabilities {
array<uint8>:VHT_CAP_LEN bytes;
};
// IEEE Std 802.11-2016 9.5.2.159
struct VhtOperation {
array<uint8>:VHT_OP_LEN bytes;
};
// IEEE Std 802.11-2016 6.3.3.3.2
struct BssDescription {
array<uint8>:6 bssid;
BssTypes bss_type;
uint16 beacon_period; // in TU
uint64 timestamp;
uint64 local_time;
CapabilityInfo cap;
/// All info elements present in the beacon or probe response frame.
bytes ies;
// List up non-standard, Fuchsia only parameters
fuchsia.wlan.common.WlanChan chan;
// 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.
int8 rssi_dbm; // dBm
// The running average of snr in units of dB. This value is updated periodically when the
// client is associated to an AP.
int8 snr_db;
};
struct WmmStatusResponse {
bool apsd;
WmmAcParams ac_be_params;
WmmAcParams ac_bk_params;
WmmAcParams ac_vi_params;
WmmAcParams ac_vo_params;
};
/// WFA WMM v1.2, 2.2.2
struct WmmAcParams {
/// 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.)
uint8 ecw_min;
/// 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.)
uint8 ecw_max;
/// Arbitration Interframe Spacing Number (control wait time between sending each frame)
uint8 aifsn;
/// TXOP limit in unit of 32 microseconds
uint16 txop_limit;
/// Whether admission control is mandatory
bool acm;
};