diff options
author | Johannes Berg <johannes.berg@intel.com> | 2013-02-07 05:47:44 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-02-15 03:41:30 -0500 |
commit | e1a0c6b3a4b27ed5f21291d0bbee2167ec201ef5 (patch) | |
tree | 18e5c9bd022ea469e7350a52ca67ce505a7608e6 /net/mac80211/ieee80211_i.h | |
parent | 4a34215ef7487b1cbd783e7cc485eb03de893bd0 (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.h | 5 |
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 */ |
1385 | void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata, | 1385 | void 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); |
1387 | void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_sub_if_data *sdata, | 1387 | bool 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); |
1391 | void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata, | 1391 | void 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); |
1434 | enum ieee80211_sta_rx_bandwidth ieee80211_sta_cur_vht_bw(struct sta_info *sta); | ||
1434 | 1435 | ||
1435 | /* Spectrum management */ | 1436 | /* Spectrum management */ |
1436 | void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata, | 1437 | void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata, |