diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-12-02 13:52:18 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-12-02 14:13:33 +0100 |
commit | b1e684fa88c171032e2da5437a507b63bf18d9e1 (patch) | |
tree | 762912ddcb60a662718dffd898843ec62d730a9c /package/kernel | |
parent | 462ccf90bec9234195956aaa211ee49209b161f4 (diff) | |
download | upstream-b1e684fa88c171032e2da5437a507b63bf18d9e1.tar.gz upstream-b1e684fa88c171032e2da5437a507b63bf18d9e1.tar.bz2 upstream-b1e684fa88c171032e2da5437a507b63bf18d9e1.zip |
mac80211: fix queue assignment of aggregation start requests
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry-picked from commit 15d8c7aa74c202c530dbd53e53b00e418f0b64f4)
Diffstat (limited to 'package/kernel')
-rw-r--r-- | package/kernel/mac80211/patches/subsys/308-mac80211-send-ADDBA-requests-using-the-tid-queue-of-.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/308-mac80211-send-ADDBA-requests-using-the-tid-queue-of-.patch b/package/kernel/mac80211/patches/subsys/308-mac80211-send-ADDBA-requests-using-the-tid-queue-of-.patch new file mode 100644 index 0000000000..1c213289c5 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/308-mac80211-send-ADDBA-requests-using-the-tid-queue-of-.patch @@ -0,0 +1,28 @@ +From: Felix Fietkau <nbd@nbd.name> +Date: Thu, 2 Dec 2021 13:30:05 +0100 +Subject: [PATCH] mac80211: send ADDBA requests using the tid/queue of the + aggregation session + +Sending them out on a different queue can cause a race condition where a +number of packets in the queue may be discarded by the receiver, because +the ADDBA request is sent too early. +This affects any driver with software A-MPDU setup which does not allocate +packet seqno in hardware on tx, regardless of whether iTXQ is used or not. +The only driver I've seen that explicitly deals with this issue internally +is mwl8k. + +Cc: stable@vger.kernel.org +Signed-off-by: Felix Fietkau <nbd@nbd.name> +--- + +--- a/net/mac80211/agg-tx.c ++++ b/net/mac80211/agg-tx.c +@@ -106,7 +106,7 @@ static void ieee80211_send_addba_request + mgmt->u.action.u.addba_req.start_seq_num = + cpu_to_le16(start_seq_num << 4); + +- ieee80211_tx_skb(sdata, skb); ++ ieee80211_tx_skb_tid(sdata, skb, tid); + } + + void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn) |