Add initial 802.11ac IEs and fields.
This is a subset of what's in the linux 802.11ac implementation. I've verified that the bits that mention an 802.11ac draft are still the same in 802.11ac-2013 and noted it accordingly. This is for the most part one big no-op. Obtained from: 802.11ac-2013.pdf
This commit is contained in:
parent
d551bb40b5
commit
e426a812db
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=297006
@ -696,6 +696,118 @@ struct ieee80211_ie_htinfo {
|
||||
#define IEEE80211_HTINFO_BASIC_STBCMCS_S 0
|
||||
#define IEEE80211_HTINFO_DUALPROTECTED 0x80
|
||||
|
||||
|
||||
/*
|
||||
* 802.11ac definitions - 802.11ac-2013 .
|
||||
*/
|
||||
|
||||
/* VHT opmode bits */
|
||||
#define IEEE80211_VHT_OPMODE_CHANWIDTH_MASK 3
|
||||
#define IEEE80211_VHT_OPMODE_CHANWIDTH_20MHZ 0
|
||||
#define IEEE80211_VHT_OPMODE_CHANWIDTH_40MHZ 1
|
||||
#define IEEE80211_VHT_OPMODE_CHANWIDTH_80MHZ 2
|
||||
#define IEEE80211_VHT_OPMODE_CHANWIDTH_160MHZ 3
|
||||
#define IEEE80211_VHT_OPMODE_RX_NSS_MASK 0x70
|
||||
#define IEEE80211_VHT_OPMODE_RX_NSS_SHIFT 4
|
||||
#define IEEE80211_VHT_OPMODE_RX_NSS_TYPE_BF 0x80
|
||||
|
||||
/*
|
||||
* Maximum length of A-MPDU that the STA can RX in VHT.
|
||||
* Length = 2 ^ (13 + max_ampdu_length_exp) - 1 (octets)
|
||||
*/
|
||||
#define IEEE80211_VHTCAP_MAX_AMPDU_8K 0
|
||||
#define IEEE80211_VHTCAP_MAX_AMPDU_16K 1
|
||||
#define IEEE80211_VHTCAP_MAX_AMPDU_32K 2
|
||||
#define IEEE80211_VHTCAP_MAX_AMPDU_64K 3
|
||||
#define IEEE80211_VHTCAP_MAX_AMPDU_128K 4
|
||||
#define IEEE80211_VHTCAP_MAX_AMPDU_256K 5
|
||||
#define IEEE80211_VHTCAP_MAX_AMPDU_512K 6
|
||||
#define IEEE80211_VHTCAP_MAX_AMPDU_1024K 7
|
||||
|
||||
/*
|
||||
* VHT MCS information.
|
||||
* + rx_highest/tx_highest: optional; maximum long GI VHT PPDU
|
||||
* data rate. 1Mbit/sec units.
|
||||
* + rx_mcs_map/tx_mcs_map: bitmap of per-stream supported MCS;
|
||||
* 2 bits each.
|
||||
*/
|
||||
#define IEEE80211_VHT_MCS_SUPPORT_0_7 0 /* MCS0-7 */
|
||||
#define IEEE80211_VHT_MCS_SUPPORT_0_8 1 /* MCS0-8 */
|
||||
#define IEEE80211_VHT_MCS_SUPPORT_0_9 2 /* MCS0-9 */
|
||||
#define IEEE80211_VHT_MCS_NOT_SUPPORTED 3 /* not supported */
|
||||
|
||||
struct ieee80211_vht_mcs_info {
|
||||
uint16_t rx_mcs_map;
|
||||
uint16_t rx_highest;
|
||||
uint16_t tx_mcs_map;
|
||||
uint16_t tx_highest;
|
||||
} __packed;
|
||||
|
||||
/* VHT capabilities element: 802.11ac-2013 8.4.2.160 */
|
||||
struct ieee80211_ie_vhtcap {
|
||||
uint8_t ie;
|
||||
uint8_t len;
|
||||
uint32_t vht_cap_info;
|
||||
struct ieee80211_vht_mcs_info supp_mcs;
|
||||
} __packed;
|
||||
|
||||
#define IEEE80211_VHT_CHANWIDTH_USE_HT 0 /* Use HT IE for chw */
|
||||
#define IEEE80211_VHT_CHANWIDTH_80MHZ 1 /* 80MHz */
|
||||
#define IEEE80211_VHT_CHANWIDTH_160MHZ 2 /* 160MHz */
|
||||
#define IEEE80211_VHT_CHANWIDTH_80P80MHZ 3 /* 80+80MHz */
|
||||
|
||||
/* VHT operation IE - 802.11ac-2013 8.4.2.161 */
|
||||
struct ieee80211_ie_vht_operation {
|
||||
uint8_t ie;
|
||||
uint8_t len;
|
||||
uint8_t chan_width;
|
||||
uint8_t center_freq_seg1_idx;
|
||||
uint8_t center_freq_seg2_idx;
|
||||
uint16_t basic_mcs_set;
|
||||
} __packed;
|
||||
|
||||
/* 802.11ac VHT Capabilities */
|
||||
#define IEEE80211_VHTCAP_MAX_MPDU_LENGTH_3895 0x00000000
|
||||
#define IEEE80211_VHTCAP_MAX_MPDU_LENGTH_7991 0x00000001
|
||||
#define IEEE80211_VHTCAP_MAX_MPDU_LENGTH_11454 0x00000002
|
||||
#define IEEE80211_VHTCAP_MAX_MPDU_MASK 0x00000003
|
||||
#define IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_160MHZ 0x00000004
|
||||
#define IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ 0x00000008
|
||||
#define IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_MASK 0x0000000C
|
||||
#define IEEE80211_VHTCAP_RXLDPC 0x00000010
|
||||
#define IEEE80211_VHTCAP_SHORT_GI_80 0x00000020
|
||||
#define IEEE80211_VHTCAP_SHORT_GI_160 0x00000040
|
||||
#define IEEE80211_VHTCAP_TXSTBC 0x00000080
|
||||
#define IEEE80211_VHTCAP_RXSTBC_1 0x00000100
|
||||
#define IEEE80211_VHTCAP_RXSTBC_2 0x00000200
|
||||
#define IEEE80211_VHTCAP_RXSTBC_3 0x00000300
|
||||
#define IEEE80211_VHTCAP_RXSTBC_4 0x00000400
|
||||
#define IEEE80211_VHTCAP_RXSTBC_MASK 0x00000700
|
||||
#define IEEE80211_VHTCAP_SU_BEAMFORMER_CAPABLE 0x00000800
|
||||
#define IEEE80211_VHTCAP_SU_BEAMFORMEE_CAPABLE 0x00001000
|
||||
#define IEEE80211_VHTCAP_BEAMFORMEE_STS_SHIFT 13
|
||||
#define IEEE80211_VHTCAP_BEAMFORMEE_STS_MASK \
|
||||
(7 << IEEE80211_VHTCAP_BEAMFORMEE_STS_SHIFT)
|
||||
#define IEEE80211_VHTCAP_SOUNDING_DIMENSIONS_SHIFT 16
|
||||
#define IEEE80211_VHTCAP_SOUNDING_DIMENSIONS_MASK \
|
||||
(7 << IEEE80211_VHTCAP_SOUNDING_DIMENSIONS_SHIFT)
|
||||
#define IEEE80211_VHTCAP_MU_BEAMFORMER_CAPABLE 0x00080000
|
||||
#define IEEE80211_VHTCAP_MU_BEAMFORMEE_CAPABLE 0x00100000
|
||||
#define IEEE80211_VHTCAP_VHT_TXOP_PS 0x00200000
|
||||
#define IEEE80211_VHTCAP_HTC_VHT 0x00400000
|
||||
#define IEEE80211_VHTCAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT 23
|
||||
#define IEEE80211_VHTCAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK \
|
||||
(7 << IEEE80211_VHTCAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT)
|
||||
#define IEEE80211_VHTCAP_VHT_LINK_ADAPTATION_VHT_UNSOL_MFB 0x08000000
|
||||
#define IEEE80211_VHTCAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB 0x0c000000
|
||||
#define IEEE80211_VHTCAP_RX_ANTENNA_PATTERN 0x10000000
|
||||
#define IEEE80211_VHTCAP_TX_ANTENNA_PATTERN 0x20000000
|
||||
|
||||
/* VHT action codes */
|
||||
#define WLAN_ACTION_VHT_COMPRESSED_BF 0
|
||||
#define WLAN_ACTION_VHT_GROUPID_MGMT 1
|
||||
#define WLAN_ACTION_VHT_OPMODE_NOTIF 2
|
||||
|
||||
/*
|
||||
* Management information element payloads.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user