|
|
@@ -0,0 +1,28 @@
|
|
|
+From: Felix Fietkau <[email protected]>
|
|
|
+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: [email protected]
|
|
|
+Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
+---
|
|
|
+
|
|
|
+--- 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;
|