mac80211: make ieee80211_schedule_txq schedule empty TXQs
authorFelix Fietkau <nbd@nbd.name>
Mon, 18 Mar 2019 11:00:58 +0000 (12:00 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 8 Apr 2019 11:31:31 +0000 (13:31 +0200)
commit2b4a66980217332d91ab1785e1750857d6d52bc8
tree60e63e9c3911eb5a9993200886365a9deac37172
parent45fcef8b727b6f171bc5443e8153181a367d7a15
mac80211: make ieee80211_schedule_txq schedule empty TXQs

Currently there is no way for the driver to signal to mac80211 that it should
schedule a TXQ even if there are no packets on the mac80211 part of that queue.
This is problematic if the driver has an internal retry queue to deal with
software A-MPDU retry.

This patch changes the behavior of ieee80211_schedule_txq to always schedule
the queue, as its only user (ath9k) seems to expect such behavior already:
it calls this function on tx status and on powersave wakeup whenever its
internal retry queue is not empty.

Also add an extra argument to ieee80211_return_txq to get the same behavior.

This fixes an issue on ath9k where tx queues with packets to retry (and no
new packets in mac80211) would not get serviced.

Fixes: 89cea7493a346 ("ath9k: Switch to mac80211 TXQ scheduling and airtime APIs")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/ath/ath10k/htt_rx.c
drivers/net/wireless/ath/ath10k/mac.c
drivers/net/wireless/ath/ath9k/xmit.c
include/net/mac80211.h
net/mac80211/tx.c