From 6c9b7927d4599d8c37e89888a9388f12c459d04a Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 14 Nov 2011 21:21:24 +0000 Subject: [PATCH] ath9k: do not put the hardware to full-sleep while tx is pending git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29133 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/563-ath9k_fix_full_sleep_tx.patch | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 package/mac80211/patches/563-ath9k_fix_full_sleep_tx.patch diff --git a/package/mac80211/patches/563-ath9k_fix_full_sleep_tx.patch b/package/mac80211/patches/563-ath9k_fix_full_sleep_tx.patch new file mode 100644 index 000000000..17575b9e4 --- /dev/null +++ b/package/mac80211/patches/563-ath9k_fix_full_sleep_tx.patch @@ -0,0 +1,22 @@ +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -118,7 +118,7 @@ void ath9k_ps_restore(struct ath_softc * + if (--sc->ps_usecount != 0) + goto unlock; + +- if (sc->ps_idle) ++ if (sc->ps_idle && !(sc->ps_flags & PS_WAIT_FOR_TX_ACK)) + mode = ATH9K_PM_FULL_SLEEP; + else if (sc->ps_enabled && + !(sc->ps_flags & (PS_WAIT_FOR_BEACON | +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -1983,7 +1983,7 @@ static void ath_tx_complete(struct ath_s + skb_pull(skb, padsize); + } + +- if (sc->ps_flags & PS_WAIT_FOR_TX_ACK) { ++ if ((sc->ps_flags & PS_WAIT_FOR_TX_ACK) && !txq->axq_depth) { + sc->ps_flags &= ~PS_WAIT_FOR_TX_ACK; + ath_dbg(common, ATH_DBG_PS, + "Going back to sleep after having received TX status (0x%lx)\n",