Skip to content

Commit

Permalink
ath9k: Handle power modes in isr for power save.
Browse files Browse the repository at this point in the history
Restore network sleep mode in isr if power save is enabled.

Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Vivek Natarajan authored and John W. Linville committed Mar 5, 2009
1 parent 9331ec8 commit 541d8dd
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 1 deletion.
3 changes: 2 additions & 1 deletion drivers/net/wireless/ath9k/ath9k.h
Original file line number Diff line number Diff line change
Expand Up @@ -677,7 +677,8 @@ static inline void ath9k_ps_wakeup(struct ath_softc *sc)
static inline void ath9k_ps_restore(struct ath_softc *sc)
{
if (atomic_dec_and_test(&sc->ps_usecount))
if (sc->hw->conf.flags & IEEE80211_CONF_PS)
if ((sc->hw->conf.flags & IEEE80211_CONF_PS) &&
!(sc->sc_flags & SC_OP_WAIT_FOR_BEACON))
ath9k_hw_setpower(sc->sc_ah,
sc->sc_ah->restore_mode);
}
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/wireless/ath9k/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,7 @@ irqreturn_t ath_isr(int irq, void *dev)
return IRQ_NONE;

sc->intrstatus = status;
ath9k_ps_wakeup(sc);

if (status & ATH9K_INT_FATAL) {
/* need a chip reset */
Expand Down Expand Up @@ -581,6 +582,7 @@ irqreturn_t ath_isr(int irq, void *dev)
sched = true;
}
}
ath9k_ps_restore(sc);
} while (0);

ath_debug_stat_interrupt(sc, status);
Expand Down

0 comments on commit 541d8dd

Please sign in to comment.