Date: Fri, 18 Mar 2016 03:55:00 +0000 (UTC) From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r297006 - head/sys/net80211 Message-ID: <201603180355.u2I3t0pI085520@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: adrian Date: Fri Mar 18 03:55:00 2016 New Revision: 297006 URL: https://svnweb.freebsd.org/changeset/base/297006 Log: 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 Modified: head/sys/net80211/ieee80211.h Modified: head/sys/net80211/ieee80211.h ============================================================================== --- head/sys/net80211/ieee80211.h Fri Mar 18 02:59:10 2016 (r297005) +++ head/sys/net80211/ieee80211.h Fri Mar 18 03:55:00 2016 (r297006) @@ -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. */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201603180355.u2I3t0pI085520>