diff options
Diffstat (limited to 'package/kernel/mac80211')
-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; |