|
@@ -118,15 +118,13 @@ void ath9k_ps_restore(struct ath_softc *sc)
|
|
if (--sc->ps_usecount != 0)
|
|
if (--sc->ps_usecount != 0)
|
|
goto unlock;
|
|
goto unlock;
|
|
|
|
|
|
- if (sc->ps_flags & PS_WAIT_FOR_TX_ACK)
|
|
|
|
- goto unlock;
|
|
|
|
-
|
|
|
|
- if (sc->ps_idle)
|
|
|
|
|
|
+ if (sc->ps_idle && (sc->ps_flags & PS_WAIT_FOR_TX_ACK))
|
|
mode = ATH9K_PM_FULL_SLEEP;
|
|
mode = ATH9K_PM_FULL_SLEEP;
|
|
else if (sc->ps_enabled &&
|
|
else if (sc->ps_enabled &&
|
|
!(sc->ps_flags & (PS_WAIT_FOR_BEACON |
|
|
!(sc->ps_flags & (PS_WAIT_FOR_BEACON |
|
|
PS_WAIT_FOR_CAB |
|
|
PS_WAIT_FOR_CAB |
|
|
- PS_WAIT_FOR_PSPOLL_DATA)))
|
|
|
|
|
|
+ PS_WAIT_FOR_PSPOLL_DATA |
|
|
|
|
+ PS_WAIT_FOR_TX_ACK)))
|
|
mode = ATH9K_PM_NETWORK_SLEEP;
|
|
mode = ATH9K_PM_NETWORK_SLEEP;
|
|
else
|
|
else
|
|
goto unlock;
|
|
goto unlock;
|