mac80211: fix reordering of buffered broadcast packets
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
87b874d4d6
commit
5ffacceb7b
1 changed files with 28 additions and 0 deletions
|
@ -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;
|
Loading…
Reference in a new issue