8c01c3dc46
Although I added the reset type field to ath_hal_reset() years ago, I never finished adding it both throughout the HALs and in if_ath.c. This will eventually deprecate the ath_hal force_full_reset option because it can be requested at the driver layer. So: * Teach ar5416ChipReset() and ar9300_chip_reset() about the HAL type * Use it in ar5416Reset() and ar9300_reset() when doing a full chip reset * Extend ath_reset() to include the HAL_RESET_TYPE parameter added in the above functions * Use HAL_RESET_NORMAL in most calls to ath_reset() * .. but use HAL_RESET_BBPANIC for the BB panics, and HAL_RESET_FORCE_COLD during fatal, beacon miss and other hardware related hangs. This should be a glorified no-op outside of actual hardware issues. I've tested things with ath_hal force_full_reset set to 1 for years now, so I know that feature and a full reset works (albeit much slower than a warm reset!) and it does unwedge hardware. The eventual aim is to use this for all the places where the driver detects a potential hang as well as if long calibration - ie, noise floor calibration - fails to complete. That's one of the big hardware related things that causes station mode operation to hang without easy recovery. Differential Revision: https://reviews.freebsd.org/D24981 |
||
---|---|---|
.. | ||
ath_dfs/null | ||
ath_hal | ||
ath_rate | ||
ah_osdep_ar5210.c | ||
ah_osdep_ar5211.c | ||
ah_osdep_ar5212.c | ||
ah_osdep_ar5416.c | ||
ah_osdep_ar9300.c | ||
ah_osdep.c | ||
ah_osdep.h | ||
if_ath_ahb.c | ||
if_ath_alq.c | ||
if_ath_alq.h | ||
if_ath_beacon.c | ||
if_ath_beacon.h | ||
if_ath_btcoex_mci.c | ||
if_ath_btcoex_mci.h | ||
if_ath_btcoex.c | ||
if_ath_btcoex.h | ||
if_ath_debug.c | ||
if_ath_debug.h | ||
if_ath_descdma.c | ||
if_ath_descdma.h | ||
if_ath_dfs.c | ||
if_ath_drv.c | ||
if_ath_ioctl.c | ||
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_rate.c | ||
if_ath_rx_edma.c | ||
if_ath_rx_edma.h | ||
if_ath_rx.c | ||
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 | ||
if_ath_tx.h | ||
if_ath.c | ||
if_athdfs.h | ||
if_athioctl.h | ||
if_athrate.h | ||
if_athvar.h |