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

AdrianChadd/AtherosTxAgg (last edited 2014-04-24T05:52:06+0000 by AdrianChadd)