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 /drivers/net/wireless/iwlwifi/dvm/rs.c | |
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 'drivers/net/wireless/iwlwifi/dvm/rs.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/rs.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/rs.c b/drivers/net/wireless/iwlwifi/dvm/rs.c index a131227c49e9..b25de02964f9 100644 --- a/drivers/net/wireless/iwlwifi/dvm/rs.c +++ b/drivers/net/wireless/iwlwifi/dvm/rs.c | |||
@@ -1305,7 +1305,7 @@ static int rs_switch_to_mimo2(struct iwl_priv *priv, | |||
1305 | tbl->max_search = IWL_MAX_SEARCH; | 1305 | tbl->max_search = IWL_MAX_SEARCH; |
1306 | rate_mask = lq_sta->active_mimo2_rate; | 1306 | rate_mask = lq_sta->active_mimo2_rate; |
1307 | 1307 | ||
1308 | if (iwl_is_ht40_tx_allowed(priv, ctx, &sta->ht_cap)) | 1308 | if (iwl_is_ht40_tx_allowed(priv, ctx, sta)) |
1309 | tbl->is_ht40 = 1; | 1309 | tbl->is_ht40 = 1; |
1310 | else | 1310 | else |
1311 | tbl->is_ht40 = 0; | 1311 | tbl->is_ht40 = 0; |
@@ -1361,7 +1361,7 @@ static int rs_switch_to_mimo3(struct iwl_priv *priv, | |||
1361 | tbl->max_search = IWL_MAX_11N_MIMO3_SEARCH; | 1361 | tbl->max_search = IWL_MAX_11N_MIMO3_SEARCH; |
1362 | rate_mask = lq_sta->active_mimo3_rate; | 1362 | rate_mask = lq_sta->active_mimo3_rate; |
1363 | 1363 | ||
1364 | if (iwl_is_ht40_tx_allowed(priv, ctx, &sta->ht_cap)) | 1364 | if (iwl_is_ht40_tx_allowed(priv, ctx, sta)) |
1365 | tbl->is_ht40 = 1; | 1365 | tbl->is_ht40 = 1; |
1366 | else | 1366 | else |
1367 | tbl->is_ht40 = 0; | 1367 | tbl->is_ht40 = 0; |
@@ -1410,7 +1410,7 @@ static int rs_switch_to_siso(struct iwl_priv *priv, | |||
1410 | tbl->max_search = IWL_MAX_SEARCH; | 1410 | tbl->max_search = IWL_MAX_SEARCH; |
1411 | rate_mask = lq_sta->active_siso_rate; | 1411 | rate_mask = lq_sta->active_siso_rate; |
1412 | 1412 | ||
1413 | if (iwl_is_ht40_tx_allowed(priv, ctx, &sta->ht_cap)) | 1413 | if (iwl_is_ht40_tx_allowed(priv, ctx, sta)) |
1414 | tbl->is_ht40 = 1; | 1414 | tbl->is_ht40 = 1; |
1415 | else | 1415 | else |
1416 | tbl->is_ht40 = 0; | 1416 | tbl->is_ht40 = 0; |