ath9k: P2P_CLIENT, get/set NOA correctly
authorJanusz Dziedzic <janusz.dziedzic@tieto.com>
Fri, 27 Nov 2015 08:37:13 +0000 (09:37 +0100)
committerKalle Valo <kvalo@qca.qualcomm.com>
Tue, 8 Dec 2015 14:50:55 +0000 (16:50 +0200)
In case we get BSS_CHANGED_P2P_PS early, from
mac80211, we didn't set NOA timer correctly,
while p2p_ps_vif was NULL.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath9k/channel.c

index 31b4d0efcf6bdf6a8af2bdb63f60b5994d5ac813..5a1ede67b07080554c50c93ef0a95b4d72d1a1ce 100644 (file)
@@ -1443,6 +1443,10 @@ static void ath9k_update_p2p_ps(struct ath_softc *sc, struct ieee80211_vif *vif)
                return;
 
        sc->p2p_ps_vif = avp;
+
+       if (sc->ps_flags & PS_BEACON_SYNC)
+               return;
+
        tsf = ath9k_hw_gettsf32(sc->sc_ah);
        ieee80211_parse_p2p_noa(&vif->bss_conf.p2p_noa_attr, &avp->noa, tsf);
        ath9k_update_p2p_ps_timer(sc, avp);
@@ -1585,8 +1589,7 @@ void ath9k_p2p_bss_info_changed(struct ath_softc *sc,
 
        spin_lock_bh(&sc->sc_pcu_lock);
        spin_lock_irqsave(&sc->sc_pm_lock, flags);
-       if (!(sc->ps_flags & PS_BEACON_SYNC))
-               ath9k_update_p2p_ps(sc, vif);
+       ath9k_update_p2p_ps(sc, vif);
        spin_unlock_irqrestore(&sc->sc_pm_lock, flags);
        spin_unlock_bh(&sc->sc_pcu_lock);
 }