diff options
author | adrian <adrian@FreeBSD.org> | 2013-05-04 04:03:50 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2013-05-04 04:03:50 +0000 |
commit | 6e54a02558cdc656a70c85c189a5b20b2f15aaa1 (patch) | |
tree | e2c99ebeb9cfd48054658ddc77fa01c91c7e161e /lib/libc | |
parent | eb004e0f1388470d70a4c8ffc653d593cc372887 (diff) | |
download | FreeBSD-src-6e54a02558cdc656a70c85c189a5b20b2f15aaa1.zip FreeBSD-src-6e54a02558cdc656a70c85c189a5b20b2f15aaa1.tar.gz |
The holding buffer logic needs to be used for _all_ transmission, not
just "when the queue is busy."
After talking with the MAC team, it turns out that the linked list
implementation sometimes will not accept a TxDP update and will
instead re-read the link pointer. So even if the hardware has
finished transmitting a chain and has hit EOL/VEOL, it may still
re-read the link pointer to begin transmitting again.
So, always set ATH_BUF_BUSY on the last buffer in the chain (to
mark the last descriptor as the holding descriptor) and never
blank the axq_link pointer.
Tested:
* AR5416, STA mode
TODO:
* much more thorough testing with the pre-11n NICs, just to verify
that they behave the same way.
* test TDMA on the 11n and non-11n hardware.
Diffstat (limited to 'lib/libc')
0 files changed, 0 insertions, 0 deletions