Table of Contents

802.11n TX aggregation support

Overview

A large part of correct 802.11n behaviour is implementing 802.11n TX aggregation.

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. Development work was done in various branches in https://gitorious.org/~adrianchadd/freebsd/adrianchadd-freebsd-work before merged back into -HEAD. That's also now mostly obsolete.

The current work is in -HEAD.

Status

The code in -HEAD is stable in both station and hostap modes.

IBSS should negotiate 802.11n between FreeBSD nodes.

TDMA and mesh currently do not have 802.11n support.

Timeline

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

The second phase, which is also now in -HEAD:

The third phase, which is now also in -HEAD:

What I'm currently working on now:

Future work, for which there's no fixed timeline:

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 Complete
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 Rejected
Migrate node/TID locking from the TXQ lock to the ATH_NODE lock Rejected
Migrate node/TID locking to a global ath TX lock Complete
Implement filtered frames support, for aggregate traffic sessions Complete
Implement filtered frames support, in both aggregate and non-aggregate modes Complete
Extend net80211 power-save support (hostap) to be driver software-queue aware Complete
Extend net80211/ath(4) power-save support (hostap) to correctly handle station sleep/wakeup and ps-poll/uapsd based frame transmission Complete
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