802.11n TX aggregation support

Overview

This is where the initial Atheros 802.11n TX aggregation work will take place.

This work was initially sponsored by Hobnob, Inc. from June, 2011 through to December, 2011.

It is now being done as a side-project by Adrian Chadd, separate from his employment.

Qualcomm Atheros, Inc. have also provided source code and documentation under an NDA which allows for contribution back to an open source project.

Location

The initial work was done in a FreeBSD project subversion branch - base/user/adrian/if_ath_tx/ . That branch is now obsolete.

The current work is in -HEAD.

Development work is done in various branches in https://gitorious.org/~adrianchadd/freebsd/adrianchadd-freebsd-work before merged back into -HEAD.

Status

The code in -HEAD is good enough to play around with in both station and hostap modes. It's not yet production ready. If the driver hangs, you should see a lot of stuff logged to the kernel dmesg buffer explaining what is going on. If it hangs and there is _nothing_ logged then please contact me.

Timeline

The initial project scope was to implement 802.11n TX aggregation. The completed milestones (which are now in -HEAD) :

The next phase, once this is merged into -HEAD:

Future work:

Task list

(This is incomplete and mostly relevant to Adrian.)

Per-TID software queue

Complete

Per-AC software queue

TODO

STA operation

Complete

Hostap operation

Complete

Filtered frames

TODO

802.11n protection

Complete

Correct BAR TX

Complete

Software retransmission of aggregate session frames

Complete

Test backwards compatibility with previous non-11n chipsets

Complete

TX aggregation statistics

Complete

Extend net80211 AMPDU TX state to be per-TID, not just per-AC

Complete

Rate control changes

Complete

AR5416 RTS 8K TX limitation

Complete

Reset serialisation

Complete

AR5416 BA reset workaround

Complete

Ignore RSSI for non-final aggregate frames

TODO

Implement per-node and per-tid scheduling, rather than just per-TXQ

TODO

Migrate node/TID locking from the TXQ lock to the ATH_NODE lock

TODO

Implement filtered frames support, in both aggregate and non-aggregate modes

TODO

Extend net80211 power-save support (hostap) to be driver software-queue aware

TODO

Extend net80211/ath(4) power-save support (hostap) to correctly handle station sleep/wakeup and ps-poll/uapsd based frame transmission

TODO

When entering off-channel mode (for scan), don't simply purge the software/hardware frame queue, but maintain its contents until the scan has completed. This is required for scan/bgscan support with active aggregate sessions.

TODO

.. fix bgscan (see above)

TODO

Known Issues

Fixed issues

AdrianChadd/AtherosTxAgg (last edited 2012-04-25 23:50:02 by AdrianChadd)