kern/166642: in 802.11n mode for FreeBSD AP,
having a station in powersave cripples AP TX.
andrew at atrens.ca
Wed Apr 4 15:20:02 UTC 2012
>Synopsis: in 802.11n mode for FreeBSD AP, having a station in powersave cripples AP TX.
>Arrival-Date: Wed Apr 04 15:20:01 UTC 2012
>Originator: Andrew Atrens
not platform specific.
This little bit of code (wrapped by me in notanymore) absolutely cripples FreeBSD 802.11n AP tx throughput if one or more stations is in power save mode (or as macbooks and ipods do - going in and out of power save mode constantly).
All ping times also ratchet from sub 1ms up to 100+ms.
-- atrens at andrew: /localdisk/freebsd/sys/dev/ath (11:02) --
$ svn diff .
--- if_ath_tx.c (revision 233851)
+++ if_ath_tx.c (working copy)
@@ -1451,8 +1451,10 @@
* anyone. This is likely a very suboptimal way of dealing
* with things.
if ((! is_ampdu) && (vap->iv_ps_sta || avp->av_mcastq.axq_depth))
txq = &avp->av_mcastq;
/* Do the generic frame setup */
/* XXX should just bzero the bf_state? */
Set up a FreeBSD AP in 802.11n mode and start a ping to any station. Turn on your ipod and let it connect to the network. You will see the pings ratchet from sub 1ms up to 100+ms .. FreeBSD AP tx throughput will also be crippled.
Workaround for me is to remove the mentioned code snippet. I'm not sure of the original intent of that change but the net effect of this bug is likely more deleterious than the problem the change attempted to address.
More information about the freebsd-bugs