diff mbox

[ath9k-txq-work,1/2] ath9k: fix powersave wakeup

Message ID 20160711130405.77451-1-nbd@nbd.name (mailing list archive)
State Not Applicable
Delegated to: Kalle Valo
Headers show

Commit Message

Felix Fietkau July 11, 2016, 1:04 p.m. UTC
drv_wake_tx_queue will only call into the driver if there are frames
pending in the mac80211 queue. the driver needs to take care of its own
queued frames

Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
 drivers/net/wireless/ath/ath9k/xmit.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Toke Høiland-Jørgensen July 11, 2016, 1:52 p.m. UTC | #1
Felix Fietkau <nbd@nbd.name> writes:

> drv_wake_tx_queue will only call into the driver if there are frames
> pending in the mac80211 queue. the driver needs to take care of its own
> queued frames

Thanks, makes sense. What's the proper etiquette here? Do I roll these
up into a v4 (possibly with other changes that show up along the way),
or do they go in as separate patches?

-Toke
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Felix Fietkau July 11, 2016, 1:55 p.m. UTC | #2
On 2016-07-11 15:52, Toke Høiland-Jørgensen wrote:
> Felix Fietkau <nbd@nbd.name> writes:
> 
>> drv_wake_tx_queue will only call into the driver if there are frames
>> pending in the mac80211 queue. the driver needs to take care of its own
>> queued frames
> 
> Thanks, makes sense. What's the proper etiquette here? Do I roll these
> up into a v4 (possibly with other changes that show up along the way),
> or do they go in as separate patches?
You need to roll them in, otherwise your patch is going to cause
regressions when it gets merged.

- Felix
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index b0a6fd2..b3521c3 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -1582,6 +1582,10 @@  void ath_tx_aggr_wakeup(struct ath_softc *sc, struct ath_node *an)
 
 		ath_txq_lock(sc, txq);
 		tid->clear_ps_filter = true;
+		if (ath_tid_has_buffered(tid)) {
+			ath_tx_queue_tid(sc, txq, tid);
+			ath_txq_schedule(sc, txq);
+		}
 		ath_txq_unlock_complete(sc, txq);
 	}
 }