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.
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.
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.
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:
(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 |