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>
---
+ drivers/net/wireless/ath/ath10k/htt_rx.c | 2 +-
+ drivers/net/wireless/ath/ath10k/mac.c | 4 ++--
+ drivers/net/wireless/ath/ath9k/xmit.c | 5 ++++-
+ include/net/mac80211.h | 24 ++++++++++++++++++++----
+ net/mac80211/tx.c | 10 ++++++----
+ 5 files changed, 33 insertions(+), 12 deletions(-)
+--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
++++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
+@@ -2728,7 +2728,7 @@ static void ath10k_htt_rx_tx_fetch_ind(s
+ num_msdus++;
+ num_bytes += ret;
+ }
+- ieee80211_return_txq(hw, txq);
++ ieee80211_return_txq(hw, txq, false);
+ ieee80211_txq_schedule_end(hw, txq->ac);
+
+ record->num_msdus = cpu_to_le16(num_msdus);
+--- a/drivers/net/wireless/ath/ath10k/mac.c
++++ b/drivers/net/wireless/ath/ath10k/mac.c
+@@ -4089,7 +4089,7 @@ static int ath10k_mac_schedule_txq(struc
+ if (ret < 0)
+ break;
+ }
+- ieee80211_return_txq(hw, txq);
++ ieee80211_return_txq(hw, txq, false);
+ ath10k_htt_tx_txq_update(hw, txq);
+ if (ret == -EBUSY)
+ break;
+@@ -4374,7 +4374,7 @@ static void ath10k_mac_op_wake_tx_queue(
+ if (ret < 0)
+ break;
+ }
+- ieee80211_return_txq(hw, txq);
++ ieee80211_return_txq(hw, txq, false);
+ ath10k_htt_tx_txq_update(hw, txq);
+ out:
+ ieee80211_txq_schedule_end(hw, ac);
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -1938,12 +1938,15 @@ void ath_txq_schedule(struct ath_softc *
+ goto out;
+
+ while ((queue = ieee80211_next_txq(hw, txq->mac80211_qnum))) {
++ bool force;
++
+ tid = (struct ath_atx_tid *)queue->drv_priv;
+
+ ret = ath_tx_sched_aggr(sc, txq, tid);
+ ath_dbg(common, QUEUE, "ath_tx_sched_aggr returned %d\n", ret);
+
+- ieee80211_return_txq(hw, queue);
++ force = !skb_queue_empty(&tid->retry_q);
++ ieee80211_return_txq(hw, queue, force);
+ }
+
+ out:
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -6226,26 +6226,42 @@ static inline void ieee80211_txq_schedul
+@@ -6290,26 +6290,42 @@ static inline void ieee80211_txq_schedul
{
}