diff options
author | Felix Fietkau <nbd@nbd.name> | 2017-02-22 22:51:04 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2017-02-23 16:26:33 +0100 |
commit | 9edff13abd97e233d7242eb0136c3ff25c58e75f (patch) | |
tree | d28a7ec40baf3e73aa4f37d1a6f2bdbf7050143a /package/kernel/mac80211 | |
parent | 942ac18c8a6d7dbe9ad3b4ac9ef06cbd891ad954 (diff) | |
download | upstream-9edff13abd97e233d7242eb0136c3ff25c58e75f.tar.gz upstream-9edff13abd97e233d7242eb0136c3ff25c58e75f.tar.bz2 upstream-9edff13abd97e233d7242eb0136c3ff25c58e75f.zip |
mac80211: disable potentially harmful PS software retry for A-MPDU sessions
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211')
-rw-r--r-- | package/kernel/mac80211/patches/322-mac80211-don-t-handle-filtered-frames-within-a-BA-se.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/322-mac80211-don-t-handle-filtered-frames-within-a-BA-se.patch b/package/kernel/mac80211/patches/322-mac80211-don-t-handle-filtered-frames-within-a-BA-se.patch new file mode 100644 index 0000000000..66e1bfb4c1 --- /dev/null +++ b/package/kernel/mac80211/patches/322-mac80211-don-t-handle-filtered-frames-within-a-BA-se.patch @@ -0,0 +1,28 @@ +From: Felix Fietkau <nbd@nbd.name> +Date: Wed, 22 Feb 2017 16:13:17 +0100 +Subject: [PATCH] mac80211: don't handle filtered frames within a BA session + +When running a BA session, the driver (or the hardware) already takes +care of retransmitting failed frames, since it has to keep the receiver +reorder window in sync. + +Adding another layer of retransmit around that does not improve +anything. In fact, it can only lead to some strong reordering with huge +latency. + +Cc: stable@vger.kernel.org +Signed-off-by: Felix Fietkau <nbd@nbd.name> +--- + +--- a/net/mac80211/status.c ++++ b/net/mac80211/status.c +@@ -51,7 +51,8 @@ static void ieee80211_handle_filtered_fr + struct ieee80211_hdr *hdr = (void *)skb->data; + int ac; + +- if (info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER) { ++ if (info->flags & (IEEE80211_TX_CTL_NO_PS_BUFFER | ++ IEEE80211_TX_CTL_AMPDU)) { + ieee80211_free_txskb(&local->hw, skb); + return; + } |