freebsd-dev/sys/dev/ath
Adrian Chadd 908341abeb [ath] wake up the hardware from power-save before doing transmit completion checking.
This was being done in the pre-AR9380 case, but not for AR9380 and later.
When powersave in STA mode is enabled, this may have lead to the transmit
completion code doing this:

* call the task, which doesn't wake up the hardware
* complete the frames, which doesn't touch the hardware
* schedule pending frames on the hardware queue, which DOES touch the
  hardware, and this will be ignored

This would show up in the logs like this:

(with debugging enabled):
Nov 27 23:03:56 lovelace kernel: Q1[  0] (nseg=1) (DS.V:0xfffffe011bd57300 DS.P:0x49b57300) I: 168cc117 L:00000000 F:0005
...
(in general, doesn't require debugging enabled):
Nov 27 23:03:56 lovelace kernel: ath_hal_reg_write: reg=0x00000804, val=0x49b57300, pm=2

That register is a EDMA TX FIFO register (queue 1), and the val is the descriptor
being written.

Whilst here, make sure the software queue gets kicked here.

Tested;

* AR9485, STA mode + powersave
2016-11-28 08:13:20 +00:00
..
ath_dfs/null
ath_hal [ath_hal] add a new regdomain flag - I think this means "yes, you can use this 2016-09-26 02:05:02 +00:00
ath_rate [ath] [ath_hal] break out the duration calculation to optionally include SIFS. 2016-07-15 06:39:35 +00:00
ah_osdep.c
ah_osdep.h
if_ath_ahb.c
if_ath_alq.c
if_ath_alq.h [ath] add a placeholder event for debuggin EDMA TX FIFO push events. 2016-06-09 22:01:05 +00:00
if_ath_beacon.c [ath] fix target beacon interval programming for STA mode when in powersave. 2016-11-28 02:59:33 +00:00
if_ath_beacon.h
if_ath_btcoex_mci.c Fix kernel build. Improper definition location of a variable. 2016-06-02 01:59:41 +00:00
if_ath_btcoex_mci.h [ath] commit initial bluetooth coexistence support for the MCI NICs. 2016-06-02 00:51:36 +00:00
if_ath_btcoex.c [ath] remove now unused parameters. 2016-06-04 08:56:30 +00:00
if_ath_btcoex.h [ath] commit initial bluetooth coexistence support for the MCI NICs. 2016-06-02 00:51:36 +00:00
if_ath_debug.c
if_ath_debug.h
if_ath_descdma.c
if_ath_descdma.h
if_ath_ioctl.c [ath] Begin to lay the groundwork for btcoex related ioctl controls. 2016-11-27 18:34:29 +00:00
if_ath_ioctl.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_devlist.h
if_ath_pci.c
if_ath_rx_edma.c [ath] don't debug RX EDMA descriptors that are not yet complete. 2016-06-17 17:01:32 +00:00
if_ath_rx_edma.h
if_ath_rx.c [ath] include logging of TU versions of the TSF values. 2016-11-28 02:51:55 +00:00
if_ath_rx.h
if_ath_spectral.c
if_ath_spectral.h
if_ath_sysctl.c [ath] report node queue overflows. 2016-06-09 21:59:36 +00:00
if_ath_sysctl.h
if_ath_tdma.c Fix improper use of "its". 2016-11-08 23:59:41 +00:00
if_ath_tdma.h
if_ath_tsf.h
if_ath_tx_edma.c [ath] wake up the hardware from power-save before doing transmit completion checking. 2016-11-28 08:13:20 +00:00
if_ath_tx_edma.h
if_ath_tx_ht.c [ath] obey the peer A-MPDU density and max-size. 2016-11-22 02:42:00 +00:00
if_ath_tx_ht.h
if_ath_tx.c net80211: remove IEEE80211_RADIOTAP_TSFT field from transmit definitions. 2016-09-20 18:53:42 +00:00
if_ath_tx.h
if_ath.c [ath_hal] retire a "long RX desc" flag, store/use the TX/RX timestamp length. 2016-07-08 21:34:39 +00:00
if_athdfs.h
if_athioctl.h [ath] Begin to lay the groundwork for btcoex related ioctl controls. 2016-11-27 18:34:29 +00:00
if_athrate.h
if_athvar.h [ath] add a new buf flag, marking a buffer as involved with ToA/ToD positioning. 2016-07-08 22:20:35 +00:00