diff options
author | adrian <adrian@FreeBSD.org> | 2012-07-31 17:08:29 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2012-07-31 17:08:29 +0000 |
commit | fb83e10b6130f628bacaec6608505aaaa3cf3787 (patch) | |
tree | 3e34533a8284578441c8e558710ddd31edc83941 /sbin | |
parent | 7f0e821767701dd261b3314aaef3bd487d784f22 (diff) | |
download | FreeBSD-src-fb83e10b6130f628bacaec6608505aaaa3cf3787.zip FreeBSD-src-fb83e10b6130f628bacaec6608505aaaa3cf3787.tar.gz |
Shuffle the call to ath_hal_setuplasttxdesc() to _after_ the rate control
code is called and remove it from ath_buf_set_rate().
For the legacy (non-11n API) TX routines, ath_hal_filltxdesc() takes care
of setting up the intermediary and final descriptors right, complete
with copying the rate control info into the final descriptor so the
rate modules can grab it.
The 11n version doesn't do this - ath_hal_chaintxdesc() doesn't
copy the rate control bits over, nor does it clear isaggr/moreaggr/
pad delimiters. So the call to setuplasttxdesc() is needed here.
So:
* legacy NICs - never call the 11n rate control stuff, so filltxdesc
copies the rate control info right;
* 11n NICs transmitting legacy or 11n non-aggregate frames -
ath_hal_set11nratescenario() is called to setup rate control and
then ath_hal_filltxdesc() chains them together - so the rate control
info is right;
* 11n aggregate frames - set11nratescenario() is called, then
ath_hal_chaintxdesc() is called to chain a list of aggregate and subframes
together. This requires a call to ath_hal_setuplasttxdesc() to complete
things.
Tested:
* AR9280 in station mode
TODO:
* I really should make sure that the descriptor contents get blanked
out correctly or garbage left over from aggregate frames may show
up in non-aggregate frames, leading to badness.
Diffstat (limited to 'sbin')
0 files changed, 0 insertions, 0 deletions