freebsd-nq/sys/dev/ath
Adrian Chadd 67aaf73997 Modify the RX path to keep the previous RX descriptor around once it's
used.

It turns out that the RX DMA engine does the same last-descriptor-link-
pointer-re-reading trick that the TX DMA engine.  That is, the hardware
re-reads the link pointer before it moves onto the next descriptor.
Thus we can't free a descriptor before we move on; it's possible the
hardware will need to re-read the link pointer before we overwrite
it with a new one.

Tested:

* AR5416, STA mode

TODO:

* more thorough AP and STA mode testing!
* test on other pre-AR9380 NICs, just to be sure.
* Break out the RX descriptor grabbing bits from the RX completion
  bits, like what is done in the RX EDMA code, so ..
* .. the RX lock can be held during ath_rx_proc(), but not across
  packet input.
2014-05-06 01:15:42 +00:00
..
ath_dfs/null
ath_hal Add Atheros AR1111 support to the HAL. 2014-05-05 07:58:05 +00:00
ath_rate
ah_osdep.c Add a function to check whether the given register can be accessed whilst 2014-04-09 03:51:05 +00:00
ah_osdep.h
if_ath_ahb.c
if_ath_alq.c
if_ath_alq.h
if_ath_beacon.c Bring over some initial power save management support, reset path 2014-04-30 02:19:41 +00:00
if_ath_beacon.h Bring over some initial power save management support, reset path 2014-04-30 02:19:41 +00:00
if_ath_btcoex.c
if_ath_btcoex.h
if_ath_debug.c
if_ath_debug.h Bring over some initial power save management support, reset path 2014-04-30 02:19:41 +00:00
if_ath_keycache.c Bring over some initial power save management support, reset path 2014-04-30 02:19:41 +00:00
if_ath_keycache.h
if_ath_led.c Bring over some initial power save management support, reset path 2014-04-30 02:19:41 +00:00
if_ath_led.h
if_ath_lna_div.c
if_ath_lna_div.h
if_ath_misc.h Add tracking for self-generated frames when the VAP is in sleep state. 2014-05-02 00:48:09 +00:00
if_ath_pci.c
if_ath_rx_edma.c Quieten the RX/TX descriptor and FIFO setup debugging. 2014-05-05 08:00:50 +00:00
if_ath_rx_edma.h
if_ath_rx.c Modify the RX path to keep the previous RX descriptor around once it's 2014-05-06 01:15:42 +00:00
if_ath_rx.h
if_ath_spectral.c
if_ath_spectral.h
if_ath_sysctl.c Modify the RX path to keep the previous RX descriptor around once it's 2014-05-06 01:15:42 +00:00
if_ath_sysctl.h
if_ath_tdma.c
if_ath_tdma.h
if_ath_tsf.h
if_ath_tx_edma.c Quieten the RX/TX descriptor and FIFO setup debugging. 2014-05-05 08:00:50 +00:00
if_ath_tx_edma.h
if_ath_tx_ht.c
if_ath_tx_ht.h
if_ath_tx.c Bring over some initial power save management support, reset path 2014-04-30 02:19:41 +00:00
if_ath_tx.h
if_ath.c Wake up the hardware before calling ath_mode_init() in the ioctl() path. 2014-05-05 17:06:40 +00:00
if_athdfs.h
if_athioctl.h
if_athrate.h
if_athvar.h Modify the RX path to keep the previous RX descriptor around once it's 2014-05-06 01:15:42 +00:00