freebsd-dev/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 The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ath_hal Add Atheros AR1111 support to the HAL. 2014-05-05 07:58:05 +00:00
ath_rate The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
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 - Provide necessary includes, that before came via if.h pollution. 2013-10-28 22:26:03 +00:00
if_ath_alq.c Support sending ATH_ALQ messages with no payload. 2013-05-13 21:17:27 +00:00
if_ath_alq.h Add ALQ beacon debugging. 2013-05-13 21:18:00 +00:00
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 The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_ath_btcoex.h Bring over the initial static bluetooth coexistence configuration 2013-06-07 09:02:02 +00:00
if_ath_debug.c TX EDMA debugging fixes: 2012-11-05 07:08:45 +00:00
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 The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_ath_lna_div.h Initial AR9485/AR933x 1x1 LNA diversity work. 2013-06-14 03:42:10 +00:00
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 Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
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 Fix the busdma logic to work with EDMA chipsets when using bounce 2013-04-04 08:21:56 +00:00
if_ath_spectral.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_ath_spectral.h Add a new (skeleton) spectral mode manager module. 2013-01-02 03:59:02 +00:00
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 The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
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 Implement my first cut at "correct" node power-save and 2013-05-15 18:33:05 +00:00
if_ath_tx_ht.h Implement my first cut at "correct" node power-save and 2013-05-15 18:33:05 +00:00
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 Implement a separate hardware queue threshold for aggregate and non-aggr 2013-05-21 18:13:57 +00:00
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 Add a method to explicitly disable radar reporting if required. 2013-01-02 01:36:10 +00:00
if_athioctl.h Implement my first cut at "correct" node power-save and 2013-05-15 18:33:05 +00:00
if_athrate.h Update the rate series setup code to use the decisions already made in 2013-04-17 07:21:30 +00:00
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