diff options
author | Michal Kazior <michal.kazior@tieto.com> | 2014-04-04 13:02:43 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2014-04-09 10:48:36 +0200 |
commit | 9b4816f543ee8d48bb49151718edac480d2080b1 (patch) | |
tree | 944f76706b70290b32d8046b8116bb77da1f8a70 /net/mac80211 | |
parent | 7b8a9cdd1f959c7166611fcc58ac91e8409c10ab (diff) | |
download | linux-stable-9b4816f543ee8d48bb49151718edac480d2080b1.tar.gz linux-stable-9b4816f543ee8d48bb49151718edac480d2080b1.tar.bz2 linux-stable-9b4816f543ee8d48bb49151718edac480d2080b1.zip |
mac80211: fix radar_enabled propagation
If chandef had non-HT width it was possible for
radar_enabled update to not be propagated properly
through drv_config(). This happened because
ieee80211_hw_conf_chan() would never see different
local->hw.conf.chandef and local->_oper_chandef.
This wasn't a problem with HT chandefs because
_oper_chandef width is reset to non-HT in
ieee80211_free_chanctx() making
ieee80211_hw_conf_chan() to kick in.
This problem led (at least) ath10k to not start
CAC if prior CAC was cancelled and both CACs were
requested for identical non-HT chandefs.
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/chan.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c index 68bee813dfad..75b5dd2c9267 100644 --- a/net/mac80211/chan.c +++ b/net/mac80211/chan.c @@ -249,7 +249,7 @@ ieee80211_new_chanctx(struct ieee80211_local *local, if (!local->use_chanctx) { local->_oper_chandef = *chandef; - ieee80211_hw_config(local, 0); + ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); } else { err = drv_add_chanctx(local, ctx); if (err) { @@ -286,7 +286,7 @@ static void ieee80211_free_chanctx(struct ieee80211_local *local, check_single_channel = true; local->hw.conf.radar_enabled = false; - ieee80211_hw_config(local, 0); + ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); } else { drv_remove_chanctx(local, ctx); } |