|
@@ -208,6 +208,7 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start)
|
|
|
struct ath_hw *ah = sc->sc_ah;
|
|
|
struct ath_common *common = ath9k_hw_common(ah);
|
|
|
unsigned long flags;
|
|
|
+ int i;
|
|
|
|
|
|
if (ath_startrecv(sc) != 0) {
|
|
|
ath_err(common, "Unable to restart recv logic\n");
|
|
@@ -235,6 +236,15 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start)
|
|
|
}
|
|
|
work:
|
|
|
ath_restart_work(sc);
|
|
|
+
|
|
|
+ for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) {
|
|
|
+ if (!ATH_TXQ_SETUP(sc, i))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ spin_lock_bh(&sc->tx.txq[i].axq_lock);
|
|
|
+ ath_txq_schedule(sc, &sc->tx.txq[i]);
|
|
|
+ spin_unlock_bh(&sc->tx.txq[i].axq_lock);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
ieee80211_wake_queues(sc->hw);
|
|
@@ -539,21 +549,10 @@ chip_reset:
|
|
|
|
|
|
static int ath_reset(struct ath_softc *sc)
|
|
|
{
|
|
|
- int i, r;
|
|
|
+ int r;
|
|
|
|
|
|
ath9k_ps_wakeup(sc);
|
|
|
-
|
|
|
r = ath_reset_internal(sc, NULL);
|
|
|
-
|
|
|
- for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) {
|
|
|
- if (!ATH_TXQ_SETUP(sc, i))
|
|
|
- continue;
|
|
|
-
|
|
|
- spin_lock_bh(&sc->tx.txq[i].axq_lock);
|
|
|
- ath_txq_schedule(sc, &sc->tx.txq[i]);
|
|
|
- spin_unlock_bh(&sc->tx.txq[i].axq_lock);
|
|
|
- }
|
|
|
-
|
|
|
ath9k_ps_restore(sc);
|
|
|
|
|
|
return r;
|