diff options
author | adrian <adrian@FreeBSD.org> | 2012-08-20 06:11:04 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2012-08-20 06:11:04 +0000 |
commit | 07106f29ee7169bb38f8eed1596c12129a1cf720 (patch) | |
tree | 96e69132d8eb88fcdad2498db11b1c3440476ce8 /sys/mips | |
parent | 684602be6d3870faf8dd06948a14d0c778f6fd84 (diff) | |
download | FreeBSD-src-07106f29ee7169bb38f8eed1596c12129a1cf720.zip FreeBSD-src-07106f29ee7169bb38f8eed1596c12129a1cf720.tar.gz |
Flesh out some initial EDMA TX FIFO fill, complete and refill routines.
Note: This is totally sub-optimal and a work in progress.
* Support filling an empty FIFO TXQ with frames from the ath_buf queue
in the ath_txq list. However, since there's (currently) no clean, easy
way to separate the frames that are in the FIFO versus just waiting,
the code waits for the FIFO to be totally empty before it attempts to
queue more. This is highly sub-optimal but is enough to get the ball
rolling.
* A _lot_ of the code assumes that the TX status is filled out in the
struct ath_buf bf_status field. So for now, memcpy() the completion over.
* None of the TX drain / reset routines will attempt to complete completed
frames before draining, so it can't be used for 802.11n TX aggregation.
(This won't work anyway, as the aggregation TX descriptor API hasn't
yet been converted; and that'll happen in some future commits.)
* Fix an issue where the FIFO counter wasn't being incremented, leading
to the queue logic just plain not working.
* HAL_EIO means "descriptor wasn't valid", versus "not finished, don't
continue." So don't stop processing descriptors when HAL_EIO is hit.
* Don't service frame completion from the beacon queue. It isn't currently
fully setup like a real queue and the first attempt at accessing the
queue lock will panic the kernel.
Tested:
* AR9380, STA mode
This commit is brought to you by said AR9380 in STA mode.
Diffstat (limited to 'sys/mips')
0 files changed, 0 insertions, 0 deletions