On 26 March 2013 09:29, Robert Shade <robert.sh...@gmail.com> wrote:

>> Even after a cold reset?
>
> Yes, which is why I'm curious about the start/stop queues calls. It
> looks to my (untrained) eye that it's simply not processing the data
> queue.

Well if there's anything in the data queue once you've reset the chip
(ie, the whole "no loss" reset path for doing resets when you're doing
a scan or recovering from a hung chip) you need to re-program the
queue.

For the pre-AR9380 chips its easy - for each TXQ:

* update axq_link to the be the link field in the last descriptor in
the last frame;
* push the first descriptor in the first frame into the QCU TxDP address;
* set TxE for that queue.

For the AR9380 and later chips its a little more complicated because
of how the FIFO management works. Felix knows more about this in
ath9k; I'm doing something different in FreeBSD.
But the basics are the same - you need to walk the FIFO frame list and
push the head of each FIFO entry back into the FIFO, then start TX.


adrian
_______________________________________________
ath9k-devel mailing list
ath9k-devel@lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel

Reply via email to