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>
This commit is contained in:

committed by
John W. Linville

parent
093ec3c533
commit
cb35582ab4
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user