freebsd-skq/sys/dev/ath
adrian f3617deb72 Fix up the EDMA RX setup path to correctly initialise and reset the RX FIFO.
The original code was .. well, slightly more than incorrect.

It showed up as stalled RX queues if the NIC needed to be frequently
reinitialised (eg during scans.)

This is inspired by work done by Matt Dillon over at the DragonflyBSD
project.

So:

* track when EDMA RX has been stopped and when the MAC has been reset;
* re-initialise the ring only after a reset;
* track whether RX has been stopped/started - just for debugging now;
* don't bother with the RX EOL stuff for EDMA - we don't need the
  interrupt at all.  We also don't need to disable/enable the interrupt
  or start DMA - once new frames are pushed into the ring via the
  normal RX path, it'll just restart RX DMA on its own.

Tested:

* AR9380, STA mode
* AR9380, AP mode
* AR9485, STA mode
* AR9462, STA mode
2014-09-20 01:22:17 +00:00
..
ath_dfs/null
ath_hal Bump the HAL_REGRANGE fields from 16 bit to 32 bit. 2014-08-09 18:15:28 +00:00
ath_rate
ah_osdep.c
ah_osdep.h
if_ath_ahb.c
if_ath_alq.c
if_ath_alq.h
if_ath_beacon.c Shut down RX before TX - in theory, this should make the chip less likely 2014-08-23 18:55:51 +00:00
if_ath_beacon.h
if_ath_btcoex.c
if_ath_btcoex.h
if_ath_debug.c
if_ath_debug.h
if_ath_keycache.c
if_ath_keycache.h
if_ath_led.c
if_ath_led.h
if_ath_lna_div.c
if_ath_lna_div.h
if_ath_misc.h
if_ath_pci.c
if_ath_rx_edma.c Fix up the EDMA RX setup path to correctly initialise and reset the RX FIFO. 2014-09-20 01:22:17 +00:00
if_ath_rx_edma.h
if_ath_rx.c Mechanically convert to if_inc_counter(). 2014-09-18 20:47:39 +00:00
if_ath_rx.h
if_ath_spectral.c
if_ath_spectral.h
if_ath_sysctl.c
if_ath_sysctl.h
if_ath_tdma.c
if_ath_tdma.h
if_ath_tsf.h
if_ath_tx_edma.c
if_ath_tx_edma.h
if_ath_tx_ht.c
if_ath_tx_ht.h
if_ath_tx.c Mechanically convert to if_inc_counter(). 2014-09-18 20:47:39 +00:00
if_ath_tx.h
if_ath.c Fix up the EDMA RX setup path to correctly initialise and reset the RX FIFO. 2014-09-20 01:22:17 +00:00
if_athdfs.h
if_athioctl.h
if_athrate.h
if_athvar.h Fix up the EDMA RX setup path to correctly initialise and reset the RX FIFO. 2014-09-20 01:22:17 +00:00