Răsfoiți Sursa

ath9k: Handle failure to send NoA

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>
Sujith Manoharan 10 ani în urmă
părinte
comite
2c3634a8d4
1 a modificat fișierele cu 8 adăugiri și 1 ștergeri
  1. 8 1
      drivers/net/wireless/ath/ath9k/main.c

+ 8 - 1
drivers/net/wireless/ath/ath9k/main.c

@@ -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);
 	}