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.
  */
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to