diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2014-09-17 09:15:56 (GMT) |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-09-26 21:06:49 (GMT) |
commit | cb35582ab4d742c1be48c4e51712a19fa202e978 (patch) | |
tree | 354b81e73beff0f4f09c46c3235eab5e0f169b3b /drivers/net/wireless/ath/ath9k/channel.c | |
parent | 093ec3c5337434f40d77c1af06c139da3e5ba6dc (diff) | |
download | linux-cb35582ab4d742c1be48c4e51712a19fa202e978.tar.xz |
ath9k: Cache BSS information
Using the BSS information stored in mac80211 directly
is racy in certain conditions. For example, in a MCC
setup, if the scheduler is switching channels when
a local deauth is issued, calculation of the opmode/bssid
etc. is incorrect. To avoid this, store the bss params
in the driver and use it.
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/channel.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/channel.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c index 77c99eb5..b93f83c 100644 --- a/drivers/net/wireless/ath/ath9k/channel.c +++ b/drivers/net/wireless/ath/ath9k/channel.c @@ -211,7 +211,7 @@ void ath_chanctx_check_active(struct ath_softc *sc, struct ath_chanctx *ctx) switch (vif->type) { case NL80211_IFTYPE_P2P_CLIENT: case NL80211_IFTYPE_STATION: - if (vif->bss_conf.assoc) + if (avp->assoc) active = true; break; default: @@ -917,7 +917,7 @@ ath_chanctx_send_vif_ps_frame(struct ath_softc *sc, struct ath_vif *avp, switch (vif->type) { case NL80211_IFTYPE_STATION: - if (!vif->bss_conf.assoc) + if (!avp->assoc) return false; skb = ieee80211_nullfunc_get(sc->hw, vif); @@ -1339,7 +1339,7 @@ void ath9k_p2p_ps_timer(void *priv) rcu_read_lock(); vif = avp->vif; - sta = ieee80211_find_sta(vif, vif->bss_conf.bssid); + sta = ieee80211_find_sta(vif, avp->bssid); if (!sta) goto out; |