Merge tag 'hsi-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi
[cascardo/linux.git] / net / mac80211 / sta_info.c
index 5ccfdbd..76b737d 100644 (file)
@@ -90,6 +90,7 @@ static void __cleanup_single_sta(struct sta_info *sta)
        struct tid_ampdu_tx *tid_tx;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
        struct ieee80211_local *local = sdata->local;
+       struct fq *fq = &local->fq;
        struct ps_data *ps;
 
        if (test_sta_flag(sta, WLAN_STA_PS_STA) ||
@@ -113,11 +114,10 @@ static void __cleanup_single_sta(struct sta_info *sta)
        if (sta->sta.txq[0]) {
                for (i = 0; i < ARRAY_SIZE(sta->sta.txq); i++) {
                        struct txq_info *txqi = to_txq_info(sta->sta.txq[i]);
-                       int n = skb_queue_len(&txqi->queue);
 
-                       ieee80211_purge_tx_queue(&local->hw, &txqi->queue);
-                       atomic_sub(n, &sdata->txqs_len[txqi->txq.ac]);
-                       txqi->byte_cnt = 0;
+                       spin_lock_bh(&fq->lock);
+                       ieee80211_txq_purge(local, txqi);
+                       spin_unlock_bh(&fq->lock);
                }
        }
 
@@ -368,7 +368,7 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
                for (i = 0; i < ARRAY_SIZE(sta->sta.txq); i++) {
                        struct txq_info *txq = txq_data + i * size;
 
-                       ieee80211_init_tx_queue(sdata, sta, txq, i);
+                       ieee80211_txq_init(sdata, sta, txq, i);
                }
        }
 
@@ -1211,7 +1211,7 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta)
                for (i = 0; i < ARRAY_SIZE(sta->sta.txq); i++) {
                        struct txq_info *txqi = to_txq_info(sta->sta.txq[i]);
 
-                       if (!skb_queue_len(&txqi->queue))
+                       if (!txqi->tin.backlog_packets)
                                continue;
 
                        drv_wake_tx_queue(local, txqi);
@@ -1648,7 +1648,7 @@ ieee80211_sta_ps_deliver_response(struct sta_info *sta,
                for (tid = 0; tid < ARRAY_SIZE(sta->sta.txq); tid++) {
                        struct txq_info *txqi = to_txq_info(sta->sta.txq[tid]);
 
-                       if (!(tids & BIT(tid)) || skb_queue_len(&txqi->queue))
+                       if (!(tids & BIT(tid)) || txqi->tin.backlog_packets)
                                continue;
 
                        sta_info_recalc_tim(sta);