Re: 3.4-rc ath9k regression (Re: [ath9k-devel] 3.3.1 ath9k regression)

From: Mohammed Shafi
Date: Mon Apr 09 2012 - 02:28:27 EST


On Mon, Apr 9, 2012 at 4:38 AM, Michael Leun
<lkml20120218@xxxxxxxxxxxxxxx> wrote:
> After an suspend to disk / resume cycle (in kernel suspend to disk,
> openSuSE) with 3.4-rc2 my ath9k wireless does not ping
> anymore.
>
> Output of iwconfig wlan0 looks just as usual (associated to AP).
>
> iwconfig wlan0 essid <myssid> fixes this (causes an
> deauthenticate/authenticate with AP) - then connectivity is there again.
>
> Guess what: "Of course" does not happen when reverting
> c1afdaff90538ef085b756454f12b29575411214 ath9k: fix going to full-sleep
> on PS idle.
>
> So, in my opinion it should be seriously considered to revert that patch
> until it is fully understood what is going on and why.

please try with the attached patch to see if it helps.

>
> It may look theoretically correct (I've no knowledge that would enable
> me assess that), but it seems to have caused 3 more or less different
> problems to various people.
>
> --
> MfG,
>
> Michael Leun
>



--
thanks,
shafi
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 215eb25..92da20a 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -118,14 +118,12 @@ void ath9k_ps_restore(struct ath_softc *sc)
if (--sc->ps_usecount != 0)
goto unlock;

- if (sc->ps_flags & PS_WAIT_FOR_TX_ACK)
- goto unlock;
-
if (sc->ps_idle)
mode = ATH9K_PM_FULL_SLEEP;
else if (sc->ps_enabled &&
!(sc->ps_flags & (PS_WAIT_FOR_BEACON |
PS_WAIT_FOR_CAB |
+ PS_WAIT_FOR_TX_ACK |
PS_WAIT_FOR_PSPOLL_DATA)))
mode = ATH9K_PM_NETWORK_SLEEP;
else