diff options
Diffstat (limited to 'include/net/mac80211.h')
| -rw-r--r-- | include/net/mac80211.h | 64 |
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 | */ |
| 166 | struct ieee80211_tx_queue_params { | 169 | struct 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 | ||
| 175 | struct ieee80211_low_level_stats { | 180 | struct 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 | */ |
| 551 | struct ieee80211_bss_conf { | 565 | struct 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 | */ |
| 1110 | enum mac80211_rx_flags { | 1144 | enum 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 | }; |
