aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h64
1 files changed, 55 insertions, 9 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 851a5e19ae32..5790f55c241d 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -23,6 +23,7 @@
23#include <linux/ieee80211.h> 23#include <linux/ieee80211.h>
24#include <net/cfg80211.h> 24#include <net/cfg80211.h>
25#include <net/codel.h> 25#include <net/codel.h>
26#include <net/ieee80211_radiotap.h>
26#include <asm/unaligned.h> 27#include <asm/unaligned.h>
27 28
28/** 29/**
@@ -162,6 +163,8 @@ enum ieee80211_ac_numbers {
162 * @txop: maximum burst time in units of 32 usecs, 0 meaning disabled 163 * @txop: maximum burst time in units of 32 usecs, 0 meaning disabled
163 * @acm: is mandatory admission control required for the access category 164 * @acm: is mandatory admission control required for the access category
164 * @uapsd: is U-APSD mode enabled for the queue 165 * @uapsd: is U-APSD mode enabled for the queue
166 * @mu_edca: is the MU EDCA configured
167 * @mu_edca_param_rec: MU EDCA Parameter Record for HE
165 */ 168 */
166struct ieee80211_tx_queue_params { 169struct ieee80211_tx_queue_params {
167 u16 txop; 170 u16 txop;
@@ -170,6 +173,8 @@ struct ieee80211_tx_queue_params {
170 u8 aifs; 173 u8 aifs;
171 bool acm; 174 bool acm;
172 bool uapsd; 175 bool uapsd;
176 bool mu_edca;
177 struct ieee80211_he_mu_edca_param_ac_rec mu_edca_param_rec;
173}; 178};
174 179
175struct ieee80211_low_level_stats { 180struct ieee80211_low_level_stats {
@@ -463,6 +468,15 @@ struct ieee80211_mu_group_data {
463 * This structure keeps information about a BSS (and an association 468 * This structure keeps information about a BSS (and an association
464 * to that BSS) that can change during the lifetime of the BSS. 469 * to that BSS) that can change during the lifetime of the BSS.
465 * 470 *
471 * @bss_color: 6-bit value to mark inter-BSS frame, if BSS supports HE
472 * @htc_trig_based_pkt_ext: default PE in 4us units, if BSS supports HE
473 * @multi_sta_back_32bit: supports BA bitmap of 32-bits in Multi-STA BACK
474 * @uora_exists: is the UORA element advertised by AP
475 * @ack_enabled: indicates support to receive a multi-TID that solicits either
476 * ACK, BACK or both
477 * @uora_ocw_range: UORA element's OCW Range field
478 * @frame_time_rts_th: HE duration RTS threshold, in units of 32us
479 * @he_support: does this BSS support HE
466 * @assoc: association status 480 * @assoc: association status
467 * @ibss_joined: indicates whether this station is part of an IBSS 481 * @ibss_joined: indicates whether this station is part of an IBSS
468 * or not 482 * or not
@@ -550,6 +564,14 @@ struct ieee80211_mu_group_data {
550 */ 564 */
551struct ieee80211_bss_conf { 565struct ieee80211_bss_conf {
552 const u8 *bssid; 566 const u8 *bssid;
567 u8 bss_color;
568 u8 htc_trig_based_pkt_ext;
569 bool multi_sta_back_32bit;
570 bool uora_exists;
571 bool ack_enabled;
572 u8 uora_ocw_range;
573 u16 frame_time_rts_th;
574 bool he_support;
553 /* association related data */ 575 /* association related data */
554 bool assoc, ibss_joined; 576 bool assoc, ibss_joined;
555 bool ibss_creator; 577 bool ibss_creator;
@@ -1106,6 +1128,18 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info *info)
1106 * @RX_FLAG_AMPDU_EOF_BIT: Value of the EOF bit in the A-MPDU delimiter for this 1128 * @RX_FLAG_AMPDU_EOF_BIT: Value of the EOF bit in the A-MPDU delimiter for this
1107 * frame 1129 * frame
1108 * @RX_FLAG_AMPDU_EOF_BIT_KNOWN: The EOF value is known 1130 * @RX_FLAG_AMPDU_EOF_BIT_KNOWN: The EOF value is known
1131 * @RX_FLAG_RADIOTAP_HE: HE radiotap data is present
1132 * (&struct ieee80211_radiotap_he, mac80211 will fill in
1133 * - DATA3_DATA_MCS
1134 * - DATA3_DATA_DCM
1135 * - DATA3_CODING
1136 * - DATA5_GI
1137 * - DATA5_DATA_BW_RU_ALLOC
1138 * - DATA6_NSTS
1139 * - DATA3_STBC
1140 * from the RX info data, so leave those zeroed when building this data)
1141 * @RX_FLAG_RADIOTAP_HE_MU: HE MU radiotap data is present
1142 * (&struct ieee80211_radiotap_he_mu)
1109 */ 1143 */
1110enum mac80211_rx_flags { 1144enum mac80211_rx_flags {
1111 RX_FLAG_MMIC_ERROR = BIT(0), 1145 RX_FLAG_MMIC_ERROR = BIT(0),
@@ -1134,6 +1168,8 @@ enum mac80211_rx_flags {
1134 RX_FLAG_ICV_STRIPPED = BIT(23), 1168 RX_FLAG_ICV_STRIPPED = BIT(23),
1135 RX_FLAG_AMPDU_EOF_BIT = BIT(24), 1169 RX_FLAG_AMPDU_EOF_BIT = BIT(24),
1136 RX_FLAG_AMPDU_EOF_BIT_KNOWN = BIT(25), 1170 RX_FLAG_AMPDU_EOF_BIT_KNOWN = BIT(25),
1171 RX_FLAG_RADIOTAP_HE = BIT(26),
1172 RX_FLAG_RADIOTAP_HE_MU = BIT(27),
1137}; 1173};
1138 1174
1139/** 1175/**
@@ -1164,6 +1200,7 @@ enum mac80211_rx_encoding {
1164 RX_ENC_LEGACY = 0, 1200 RX_ENC_LEGACY = 0,
1165 RX_ENC_HT, 1201 RX_ENC_HT,
1166 RX_ENC_VHT, 1202 RX_ENC_VHT,
1203 RX_ENC_HE,
1167}; 1204};
1168 1205
1169/** 1206/**
@@ -1198,6 +1235,9 @@ enum mac80211_rx_encoding {
1198 * @encoding: &enum mac80211_rx_encoding 1235 * @encoding: &enum mac80211_rx_encoding
1199 * @bw: &enum rate_info_bw 1236 * @bw: &enum rate_info_bw
1200 * @enc_flags: uses bits from &enum mac80211_rx_encoding_flags 1237 * @enc_flags: uses bits from &enum mac80211_rx_encoding_flags
1238 * @he_ru: HE RU, from &enum nl80211_he_ru_alloc
1239 * @he_gi: HE GI, from &enum nl80211_he_gi
1240 * @he_dcm: HE DCM value
1201 * @rx_flags: internal RX flags for mac80211 1241 * @rx_flags: internal RX flags for mac80211
1202 * @ampdu_reference: A-MPDU reference number, must be a different value for 1242 * @ampdu_reference: A-MPDU reference number, must be a different value for
1203 * each A-MPDU but the same for each subframe within one A-MPDU 1243 * each A-MPDU but the same for each subframe within one A-MPDU
@@ -1211,7 +1251,8 @@ struct ieee80211_rx_status {
1211 u32 flag; 1251 u32 flag;
1212 u16 freq; 1252 u16 freq;
1213 u8 enc_flags; 1253 u8 enc_flags;
1214 u8 encoding:2, bw:3; 1254 u8 encoding:2, bw:3, he_ru:3;
1255 u8 he_gi:2, he_dcm:1;
1215 u8 rate_idx; 1256 u8 rate_idx;
1216 u8 nss; 1257 u8 nss;
1217 u8 rx_flags; 1258 u8 rx_flags;
@@ -1770,6 +1811,7 @@ struct ieee80211_sta_rates {
1770 * @supp_rates: Bitmap of supported rates (per band) 1811 * @supp_rates: Bitmap of supported rates (per band)
1771 * @ht_cap: HT capabilities of this STA; restricted to our own capabilities 1812 * @ht_cap: HT capabilities of this STA; restricted to our own capabilities
1772 * @vht_cap: VHT capabilities of this STA; restricted to our own capabilities 1813 * @vht_cap: VHT capabilities of this STA; restricted to our own capabilities
1814 * @he_cap: HE capabilities of this STA
1773 * @max_rx_aggregation_subframes: maximal amount of frames in a single AMPDU 1815 * @max_rx_aggregation_subframes: maximal amount of frames in a single AMPDU
1774 * that this station is allowed to transmit to us. 1816 * that this station is allowed to transmit to us.
1775 * Can be modified by driver. 1817 * Can be modified by driver.
@@ -1805,7 +1847,8 @@ struct ieee80211_sta {
1805 u16 aid; 1847 u16 aid;
1806 struct ieee80211_sta_ht_cap ht_cap; 1848 struct ieee80211_sta_ht_cap ht_cap;
1807 struct ieee80211_sta_vht_cap vht_cap; 1849 struct ieee80211_sta_vht_cap vht_cap;
1808 u8 max_rx_aggregation_subframes; 1850 struct ieee80211_sta_he_cap he_cap;
1851 u16 max_rx_aggregation_subframes;
1809 bool wme; 1852 bool wme;
1810 u8 uapsd_queues; 1853 u8 uapsd_queues;
1811 u8 max_sp; 1854 u8 max_sp;
@@ -2196,10 +2239,11 @@ enum ieee80211_hw_flags {
2196 * it shouldn't be set. 2239 * it shouldn't be set.
2197 * 2240 *
2198 * @max_tx_aggregation_subframes: maximum number of subframes in an 2241 * @max_tx_aggregation_subframes: maximum number of subframes in an
2199 * aggregate an HT driver will transmit. Though ADDBA will advertise 2242 * aggregate an HT/HE device will transmit. In HT AddBA we'll
2200 * a constant value of 64 as some older APs can crash if the window 2243 * advertise a constant value of 64 as some older APs crash if
2201 * size is smaller (an example is LinkSys WRT120N with FW v1.0.07 2244 * the window size is smaller (an example is LinkSys WRT120N
2202 * build 002 Jun 18 2012). 2245 * with FW v1.0.07 build 002 Jun 18 2012).
2246 * For AddBA to HE capable peers this value will be used.
2203 * 2247 *
2204 * @max_tx_fragments: maximum number of tx buffers per (A)-MSDU, sum 2248 * @max_tx_fragments: maximum number of tx buffers per (A)-MSDU, sum
2205 * of 1 + skb_shinfo(skb)->nr_frags for each skb in the frag_list. 2249 * of 1 + skb_shinfo(skb)->nr_frags for each skb in the frag_list.
@@ -2216,6 +2260,8 @@ enum ieee80211_hw_flags {
2216 * the default is _GI | _BANDWIDTH. 2260 * the default is _GI | _BANDWIDTH.
2217 * Use the %IEEE80211_RADIOTAP_VHT_KNOWN_\* values. 2261 * Use the %IEEE80211_RADIOTAP_VHT_KNOWN_\* values.
2218 * 2262 *
2263 * @radiotap_he: HE radiotap validity flags
2264 *
2219 * @radiotap_timestamp: Information for the radiotap timestamp field; if the 2265 * @radiotap_timestamp: Information for the radiotap timestamp field; if the
2220 * 'units_pos' member is set to a non-negative value it must be set to 2266 * 'units_pos' member is set to a non-negative value it must be set to
2221 * a combination of a IEEE80211_RADIOTAP_TIMESTAMP_UNIT_* and a 2267 * a combination of a IEEE80211_RADIOTAP_TIMESTAMP_UNIT_* and a
@@ -2263,8 +2309,8 @@ struct ieee80211_hw {
2263 u8 max_rates; 2309 u8 max_rates;
2264 u8 max_report_rates; 2310 u8 max_report_rates;
2265 u8 max_rate_tries; 2311 u8 max_rate_tries;
2266 u8 max_rx_aggregation_subframes; 2312 u16 max_rx_aggregation_subframes;
2267 u8 max_tx_aggregation_subframes; 2313 u16 max_tx_aggregation_subframes;
2268 u8 max_tx_fragments; 2314 u8 max_tx_fragments;
2269 u8 offchannel_tx_hw_queue; 2315 u8 offchannel_tx_hw_queue;
2270 u8 radiotap_mcs_details; 2316 u8 radiotap_mcs_details;
@@ -2904,7 +2950,7 @@ struct ieee80211_ampdu_params {
2904 struct ieee80211_sta *sta; 2950 struct ieee80211_sta *sta;
2905 u16 tid; 2951 u16 tid;
2906 u16 ssn; 2952 u16 ssn;
2907 u8 buf_size; 2953 u16 buf_size;
2908 bool amsdu; 2954 bool amsdu;
2909 u16 timeout; 2955 u16 timeout;
2910}; 2956};