freebsd-skq/sys/dev/ath
Adrian Chadd fb3edd4f3f [ath] do a cold reset if TSFOOR triggers
TSFOOR happens if a beacon with a given TSF isn't received within the
programmed/expected TSF value, plus/minus a fudge range. (OOR == out of range.)

If this happens then it could be because the baseband/mac is stuck, or
the baseband is deaf.  So, do a cold reset and resync the beacon to
try and unstick the hardware.

It also happens when a bad AP decides to err, slew its TSF because they
themselves are resetting and they don't preserve the TSF "well."

This has fixed a bunch of weird corner cases on my 2GHz AP radio upstairs
here where it occasionally goes deaf due to how much 2GHz noise is up
here (and ANI gets a little sideways) and this unsticks the station
VAP.

For AP modes a hung baseband/mac usually ends up as a stuck beacon
and those have been addressed for a long time by just resetting the
hardware.  But similar hangs in station mode didn't have a similar
recovery mechanism.

Tested:

* AR9380, STA mode, 2GHz/5GHz
* AR9580, STA mode, 5GHz
* QCA9344 SoC w/ on-board wifi (TL-WDR4300/3600 devices); 2GHz
  STA mode
2021-03-12 23:30:25 -08:00
..
ath_dfs/null ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
ath_hal ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
ath_rate ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
ah_osdep_ar5210.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
ah_osdep_ar5211.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
ah_osdep_ar5212.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
ah_osdep_ar5416.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
ah_osdep_ar9300.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
ah_osdep.c ath_hal: Stop printing messages during boot 2021-03-08 12:39:06 -05:00
ah_osdep.h
if_ath_ahb.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_alq.c
if_ath_alq.h
if_ath_beacon.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_beacon.h ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_btcoex_mci.c
if_ath_btcoex_mci.h
if_ath_btcoex.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_btcoex.h
if_ath_debug.c
if_ath_debug.h
if_ath_descdma.c
if_ath_descdma.h
if_ath_dfs.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_drv.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_ioctl.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_ioctl.h
if_ath_keycache.c
if_ath_keycache.h
if_ath_led.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_led.h
if_ath_lna_div.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_lna_div.h
if_ath_misc.h [ath] [ath_hal] Propagate the HAL_RESET_TYPE through to the chip reset; set it during ath_reset() 2020-05-25 22:31:45 +00:00
if_ath_pci_devlist.h ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_pci.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_rate.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_rx_edma.c [ath] Hopefully recover better-er upon RX restart on AR9380. 2020-05-21 04:35:12 +00:00
if_ath_rx_edma.h
if_ath_rx.c [ath] Don't use hard-coded values in the sanity check. 2020-12-08 17:27:24 +00:00
if_ath_rx.h
if_ath_spectral.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_spectral.h
if_ath_sysctl.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_sysctl.h
if_ath_tdma.c
if_ath_tdma.h
if_ath_tsf.h
if_ath_tx_edma.c ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath_tx_edma.h
if_ath_tx_ht.c Provide MS() and SM() macros for 80211 and wireless drivers. 2020-09-24 10:57:39 +00:00
if_ath_tx_ht.h
if_ath_tx.c Provide MS() and SM() macros for 80211 and wireless drivers. 2020-09-24 10:57:39 +00:00
if_ath_tx.h ath: clean up empty lines in .c and .h files 2020-09-01 21:41:07 +00:00
if_ath.c [ath] do a cold reset if TSFOOR triggers 2021-03-12 23:30:25 -08:00
if_athdfs.h
if_athioctl.h [ath] do a cold reset if TSFOOR triggers 2021-03-12 23:30:25 -08:00
if_athrate.h [ath_rate_sample] Limit the tx schedules for A-MPDU ; don't take short retries 2020-05-16 05:07:45 +00:00
if_athvar.h [ath] do a cold reset if TSFOOR triggers 2021-03-12 23:30:25 -08:00