Request for testing: BAR TX handling for ath(4)

Adrian Chadd adrian at freebsd.org
Sat Mar 31 18:28:58 UTC 2012


Hi all,

This patch is my first (dirty) attempt at implementing BAR TX for FreeBSD.

What it does:

* adds two state flags for ath_tid - one that indicates that a BAR is
pending, another that indicates that a BAR TX has been attempted.
* whenever a frame is dropped, transition into the BAR pending state
and pause the queue - but it's paused once, on the state transition,
since multiple frames inside the BAW may be dropped;
* .. then, don't transmit anything from that TID until all the frames
in the hardware queue for that TID are completed.
* Check whether we need to send the BAR upon completion of any frame
it an aggregation session (aggregate or unaggregate) - as there may
have been more than one frame pending on the hardware queue, and only
one out of a larger set may have failed.

I'm not entirely comfortable with this solution - especially with the
silly locking - but it does work.

The main downside is that the call to ieee80211_send_bar() can fail if
the ic_raw_xmit function or the mbuf allocation functions return
errors. Now, what I'm seeing with live tests is that sometimes, the
sender side will fail one of these and the BAR attempt will fail. For
now this code just ignores it and continues along it's merry way. It
_should_ drop out of aggregation.

If ieee80211_send_bar() does fail to successfully transmit the BAR, it
will eventually transition the session out of aggregation. However, if
the initial call to ieee80211_send_bar() fails, then the driver has to
handle it itself.

I'll fix the behaviour or use of ieee80211_send_bar() in a future
commit. I'd just like to get the BAR suspend/resume stuff tidied up
and in the tree so I'm one step closer to enabling ath 11n by default.

TL;DR - if you're testing out FreeBSD ath(4) 802.11n support, please
enable this patch and let me know what happens.

Thanks!


Adrian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ath-bar-tx-2.diff
Type: application/octet-stream
Size: 9017 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-wireless/attachments/20120331/2a30bb13/ath-bar-tx-2.obj


More information about the freebsd-wireless mailing list