Commit bbc4242a9c2e3c97a5a8e7822b9c27915599f0c4

Authored by Felix Fietkau
Committed by Greg Kroah-Hartman
1 parent a2c934fbbd

mac80211: fix reordering of buffered broadcast packets

commit 9ec1190d065998650fd9260dea8cf3e1f56c0e8c upstream.

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>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff

... ... @@ -435,8 +435,8 @@
435 435 if (ieee80211_hw_check(&tx->local->hw, QUEUE_CONTROL))
436 436 info->hw_queue = tx->sdata->vif.cab_queue;
437 437  
438   - /* no stations in PS mode */
439   - if (!atomic_read(&ps->num_sta_ps))
  438 + /* no stations in PS mode and no buffered packets */
  439 + if (!atomic_read(&ps->num_sta_ps) && skb_queue_empty(&ps->bc_buf))
440 440 return TX_CONTINUE;
441 441  
442 442 info->flags |= IEEE80211_TX_CTL_SEND_AFTER_DTIM;