diff options
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/355-mac80211-run-late-dequeue-late-tx-handlers-without-h.patch')
-rw-r--r-- | package/kernel/mac80211/patches/subsys/355-mac80211-run-late-dequeue-late-tx-handlers-without-h.patch | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/package/kernel/mac80211/patches/subsys/355-mac80211-run-late-dequeue-late-tx-handlers-without-h.patch b/package/kernel/mac80211/patches/subsys/355-mac80211-run-late-dequeue-late-tx-handlers-without-h.patch deleted file mode 100644 index 3127c86822..0000000000 --- a/package/kernel/mac80211/patches/subsys/355-mac80211-run-late-dequeue-late-tx-handlers-without-h.patch +++ /dev/null @@ -1,55 +0,0 @@ -From: Felix Fietkau <nbd@nbd.name> -Date: Sat, 16 Mar 2019 18:00:12 +0100 -Subject: [PATCH] mac80211: run late dequeue late tx handlers without - holding fq->lock - -Reduces lock contention on enqueue/dequeue of iTXQ packets - -Signed-off-by: Felix Fietkau <nbd@nbd.name> ---- - ---- a/net/mac80211/tx.c -+++ b/net/mac80211/tx.c -@@ -3507,6 +3507,7 @@ struct sk_buff *ieee80211_tx_dequeue(str - ieee80211_tx_result r; - struct ieee80211_vif *vif = txq->vif; - -+begin: - spin_lock_bh(&fq->lock); - - if (test_bit(IEEE80211_TXQ_STOP, &txqi->flags) || -@@ -3523,11 +3524,12 @@ struct sk_buff *ieee80211_tx_dequeue(str - if (skb) - goto out; - --begin: - skb = fq_tin_dequeue(fq, tin, fq_tin_dequeue_func); - if (!skb) - goto out; - -+ spin_unlock_bh(&fq->lock); -+ - hdr = (struct ieee80211_hdr *)skb->data; - info = IEEE80211_SKB_CB(skb); - -@@ -3573,8 +3575,11 @@ begin: - - skb = __skb_dequeue(&tx.skbs); - -- if (!skb_queue_empty(&tx.skbs)) -+ if (!skb_queue_empty(&tx.skbs)) { -+ spin_lock_bh(&fq->lock); - skb_queue_splice_tail(&tx.skbs, &txqi->frags); -+ spin_unlock_bh(&fq->lock); -+ } - } - - if (skb && skb_has_frag_list(skb) && -@@ -3613,6 +3618,7 @@ begin: - } - - IEEE80211_SKB_CB(skb)->control.vif = vif; -+ return skb; - - out: - spin_unlock_bh(&fq->lock); |