]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Extend the non-aggregate TX descriptor chain routine to be aware of:
authorAdrian Chadd <adrian@FreeBSD.org>
Wed, 15 Aug 2012 08:14:16 +0000 (08:14 +0000)
committerAdrian Chadd <adrian@FreeBSD.org>
Wed, 15 Aug 2012 08:14:16 +0000 (08:14 +0000)
commit2b200bb4cefba8052c0acccb6f4bd9c93debde24
tree8424a18f569751bf1a76e0bfa0f825c524b1760b
parentb74e3fbae4ce5c638c63ba39d2bf50d5f0654cc0
Extend the non-aggregate TX descriptor chain routine to be aware of:

* the descriptor ID, and
* the multi-buffer support that the EDMA chips support.

This is required for successful MAC transmission of multi-descriptor
frames.  The MAC simply hangs if there are NULL buffers + 0 length pointers,
but the descriptor did have TxMore set.

This won't be done for the 11n aggregate path, as that will be modified
to use the newer API (ie, ath_hal_filltxdesc() and then set first|middle|
last_aggr), which will deprecate some of the current code.

TODO:

* Populate the numTxMaps field in the HAL, then make sure that's fetched
  by the driver.  Then I can undo that hack.

Tested:

* AR9380, AP mode, TX'ing non-aggregate 802.11n frames;
* AR9280, STA/AP mode, doing aggregate and non-aggregate traffic.
sys/dev/ath/if_ath_tx.c