Felix Fietkau wrote: > The hardware needs a reset to recover from full sleep. Issue this reset > directly in the ath9k_config call that turns off idle, otherwise tx > remains dead until the first channel change after the idle state change > > Signed-off-by: Felix Fietkau <nbd@xxxxxxxxxxx> > --- > drivers/net/wireless/ath/ath9k/main.c | 9 ++++++++- > 1 files changed, 8 insertions(+), 1 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c > index ba5af8e..fcb13e3 100644 > --- a/drivers/net/wireless/ath/ath9k/main.c > +++ b/drivers/net/wireless/ath/ath9k/main.c > @@ -1584,6 +1584,7 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed) > struct ath_hw *ah = sc->sc_ah; > struct ath_common *common = ath9k_hw_common(ah); > struct ieee80211_conf *conf = &hw->conf; > + bool reset_channel = false; > > ath9k_ps_wakeup(sc); > mutex_lock(&sc->mutex); > @@ -1592,6 +1593,12 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed) > sc->ps_idle = !!(conf->flags & IEEE80211_CONF_IDLE); > if (sc->ps_idle) > ath_cancel_work(sc); > + else > + /* > + * The chip needs a reset to properly wake up from > + * full sleep > + */ > + reset_channel = ah->chip_fullsleep; This doesn't seem to work... Since IDLE is broken currently, the HW never enters FULL_SLEEP mode and reset_channel will always be zero, and a chip reset will be done only via IEEE80211_CONF_CHANGE_CHANNEL. Sujith -- 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