On Wed, Jan 19, 2011 at 7:47 AM, Rajkumar Manoharan <rmanoharan@xxxxxxxxxxx> wrote: > Upon unloading the driver, the ps_usecount is incremented > before configuring gpio registers in deinit_device. > But it is failed to restore the ps_usecount after that. > The problem is that the chip is moved to FULL SLEEP > by radio_disable when mac80211 is reporting as idle > though ps_usecount is not zero. > > This patch retores ps_usecount properly and ensures that > the chip is always moved to full sleep only if ps usage > counte is zero which helps in debugging. And also fixes > the following warning. > > ath: DMA failed to stop in 10 ms AR_CR=0xdeadbeef AR_DIAG_SW=0xdeadbeef > ath: Could not stop RX, we could be confusing the DMA engine when we > start RX up > ------------[ cut here ]------------ > WARNING: at drivers/net/wireless/ath/ath9k/recv.c:536 > ath_stoprecv+0xf4/0x100 [ath9k]() > > Cc: stable@xxxxxxxxxx > Signed-off-by: Rajkumar Manoharan <rmanoharan@xxxxxxxxxxx> > --- > Âdrivers/net/wireless/ath/ath9k/init.c | Â Â2 ++ > Âdrivers/net/wireless/ath/ath9k/main.c | Â Â2 -- > Â2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c > index 767d8b8..b38c874 100644 > --- a/drivers/net/wireless/ath/ath9k/init.c > +++ b/drivers/net/wireless/ath/ath9k/init.c > @@ -824,6 +824,8 @@ void ath9k_deinit_device(struct ath_softc *sc) > Â Â Â Âwiphy_rfkill_stop_polling(sc->hw->wiphy); > Â Â Â Âath_deinit_leds(sc); > > + Â Â Â ath9k_ps_restore(sc); > + > Â Â Â Âfor (i = 0; i < sc->num_sec_wiphy; i++) { > Â Â Â Â Â Â Â Âstruct ath_wiphy *aphy = sc->sec_wiphy[i]; > Â Â Â Â Â Â Â Âif (aphy == NULL) > diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c > index c03184e..aff1c72 100644 > --- a/drivers/net/wireless/ath/ath9k/main.c > +++ b/drivers/net/wireless/ath/ath9k/main.c > @@ -966,8 +966,6 @@ void ath_radio_disable(struct ath_softc *sc, struct ieee80211_hw *hw) > > Â Â Â Âspin_unlock_bh(&sc->sc_pcu_lock); > Â Â Â Âath9k_ps_restore(sc); > - > - Â Â Â ath9k_setpower(sc, ATH9K_PM_FULL_SLEEP); Are you sure this hunk does not regress the suspend/resume case when using the new dbus API? Luis -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html