12345678910111213141516171819202122232425262728 |
- 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
- @@ -439,8 +439,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;
|