From: Felix Fietkau Date: Wed, 28 Nov 2018 21:42:25 +0000 (+0100) Subject: mac80211: fix reordering of buffered broadcast packets X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=5ffacceb7beb208dfaa8d53a71a1d503dc884b1c;p=openwrt%2Fstaging%2Fneocturne.git mac80211: fix reordering of buffered broadcast packets Signed-off-by: Felix Fietkau --- 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 +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 +--- + +--- 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;