aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-02-07 05:47:44 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-02-15 03:41:30 -0500
commite1a0c6b3a4b27ed5f21291d0bbee2167ec201ef5 (patch)
tree18e5c9bd022ea469e7350a52ca67ce505a7608e6 /net/mac80211/ieee80211_i.h
parent4a34215ef7487b1cbd783e7cc485eb03de893bd0 (diff)
mac80211: stop toggling IEEE80211_HT_CAP_SUP_WIDTH_20_40
For VHT, many more bandwidth changes are possible. As a first step, stop toggling the IEEE80211_HT_CAP_SUP_WIDTH_20_40 flag in the HT capabilities and instead introduce a bandwidth field indicating the currently usable bandwidth to transmit to the station. Of course, make all drivers use it. To achieve this, make ieee80211_ht_cap_ie_to_sta_ht_cap() get the station as an argument, rather than the new capabilities, so it can set up the new bandwidth field. If the station is a VHT station and VHT bandwidth is in use, also set the bandwidth accordingly. Doing this allows us to get rid of the supports_40mhz flag as the HT capabilities now reflect the true capability instead of the current setting. While at it, also fix ieee80211_ht_cap_ie_to_sta_ht_cap() to not ignore HT cap overrides when MCS TX isn't supported (not that it really happens...) Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 9206d43ca572..6b41d7787a5a 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1384,10 +1384,10 @@ void ieee80211_purge_tx_queue(struct ieee80211_hw *hw,
1384/* HT */ 1384/* HT */
1385void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata, 1385void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata,
1386 struct ieee80211_sta_ht_cap *ht_cap); 1386 struct ieee80211_sta_ht_cap *ht_cap);
1387void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_sub_if_data *sdata, 1387bool ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_sub_if_data *sdata,
1388 struct ieee80211_supported_band *sband, 1388 struct ieee80211_supported_band *sband,
1389 struct ieee80211_ht_cap *ht_cap_ie, 1389 struct ieee80211_ht_cap *ht_cap_ie,
1390 struct ieee80211_sta_ht_cap *ht_cap); 1390 struct sta_info *sta);
1391void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata, 1391void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata,
1392 const u8 *da, u16 tid, 1392 const u8 *da, u16 tid,
1393 u16 initiator, u16 reason_code); 1393 u16 initiator, u16 reason_code);
@@ -1431,6 +1431,7 @@ void ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,
1431 struct ieee80211_supported_band *sband, 1431 struct ieee80211_supported_band *sband,
1432 struct ieee80211_vht_cap *vht_cap_ie, 1432 struct ieee80211_vht_cap *vht_cap_ie,
1433 struct sta_info *sta); 1433 struct sta_info *sta);
1434enum ieee80211_sta_rx_bandwidth ieee80211_sta_cur_vht_bw(struct sta_info *sta);
1434 1435
1435/* Spectrum management */ 1436/* Spectrum management */
1436void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata, 1437void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata,