diff options
author | Felix Fietkau <nbd@nbd.name> | 2018-11-28 22:42:25 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2018-11-28 23:23:38 +0100 |
commit | 5ffacceb7beb208dfaa8d53a71a1d503dc884b1c (patch) | |
tree | 1e314626dd7c507516afe25444623600753d7eb4 /package/kernel | |
parent | 87b874d4d6caa50a673557cd16bc587baa0b912a (diff) | |
download | upstream-5ffacceb7beb208dfaa8d53a71a1d503dc884b1c.tar.gz upstream-5ffacceb7beb208dfaa8d53a71a1d503dc884b1c.tar.bz2 upstream-5ffacceb7beb208dfaa8d53a71a1d503dc884b1c.zip |
mac80211: fix reordering of buffered broadcast packets
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel')
-rw-r--r-- | package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch b/package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch new file mode 100644 index 0000000000..57f4ca64a5 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch @@ -0,0 +1,28 @@ +From: Felix Fietkau <nbd@nbd.name> +Date: Wed, 28 Nov 2018 22:36:06 +0100 +Subject: [PATCH] mac80211: fix reordering of buffered broadcast packets + +If the buffered broadcast queue contains packets, letting new packets bypass +that queue can lead to heavy reordering, since the driver is probably throttling +transmission of buffered multicast packets after beacons. + +Keep buffering packets until the buffer has been cleared (and no client +is in powersave mode). + +Cc: stable@vger.kernel.org +Signed-off-by: Felix Fietkau <nbd@nbd.name> +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -435,8 +435,8 @@ ieee80211_tx_h_multicast_ps_buf(struct i + if (ieee80211_hw_check(&tx->local->hw, QUEUE_CONTROL)) + info->hw_queue = tx->sdata->vif.cab_queue; + +- /* no stations in PS mode */ +- if (!atomic_read(&ps->num_sta_ps)) ++ /* no stations in PS mode and no buffered packets */ ++ if (!atomic_read(&ps->num_sta_ps) && skb_queue_empty(&ps->bc_buf)) + return TX_CONTINUE; + + info->flags |= IEEE80211_TX_CTL_SEND_AFTER_DTIM; |