ath9k: Handle failure to send NoA
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Sun, 16 Nov 2014 00:41:08 +0000 (06:11 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 17 Nov 2014 20:32:16 +0000 (15:32 -0500)
If for some reason a beacon with a new NoA is
not sent out, then reset the mgd_prepare_tx flag.
Not doing this will result in a situation where
a GO will send a new NoA when it shouldn't.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/main.c

index a6cb15c96052968b1453397c8475d8bee8c5e713..5f16630f26ce27b7d44a632031169b6f38032531 100644 (file)
@@ -2501,10 +2501,17 @@ static void ath9k_mgd_prepare_tx(struct ieee80211_hw *hw,
                init_completion(&sc->go_beacon);
 
                mutex_unlock(&sc->mutex);
+
                if (wait_for_completion_timeout(&sc->go_beacon,
-                                               timeout) == 0)
+                                               timeout) == 0) {
                        ath_dbg(common, CHAN_CTX,
                                "Failed to send new NoA\n");
+
+                       spin_lock_bh(&sc->chan_lock);
+                       sc->sched.mgd_prepare_tx = false;
+                       spin_unlock_bh(&sc->chan_lock);
+               }
+
                mutex_lock(&sc->mutex);
        }