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

Reply via email to