On 2018-10-02 22:53, Rajkumar Manoharan wrote:
Shouldn't have to call next_txq(). It should be as below.
Anyway drv_wake_tx_queue is just an indication to driver and
driver will always dequeue first node from list.
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 2dbfd1d8eb5f..74ac0b19cd54 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -242,7 +242,7 @@ EXPORT_SYMBOL(ieee80211_ctstoself_duration);
static void __ieee80211_kick_airtime(struct ieee80211_local *local, int
ac)
{
- struct ieee80211_txq *txq;
+ struct ieee80211_txq *txq = NULL;
bool seen_eligible = false;
struct txq_info *txqi;
struct sta_info *sta;
@@ -263,6 +263,7 @@ static void __ieee80211_kick_airtime(struct
ieee80211_local *local, int ac)
if (sta->airtime[ac].deficit >= 0) {
seen_eligible = true;
clear_bit(IEEE80211_TXQ_AIRTIME_THROTTLE,
&txqi->flags);
+ txq = &txqi->txq;
}
}
@@ -283,7 +284,6 @@ static void __ieee80211_kick_airtime(struct
ieee80211_local *local, int ac)
}
out:
rcu_read_unlock();
- txq = ieee80211_next_txq(&local->hw, ac);
spin_unlock_bh(&local->active_txq_lock[ac]);
-Rajkumar