mirror of
https://github.com/opnsense/src.git
synced 2026-07-05 07:16:20 -04:00
One of the fun issues with scanning has been how the existing
ANI values were programmed into the hardware when channels were
changed. If you're on a really crappy channel and ANI has made
you deaf then when you scan you continue to be deaf on all channels.
This code passes in a flag to startpcureceive which in AR5416 and later
is also used to enable ANI. This allows it to know if it's a normal
operation or a scan operation.
This fixes my situation at home where a temporary spot of a device
going deaf due to interference starts scanning and .. can't hear
anything until I restart.
Now, this isn't the full fix - ideally:
(a) all the ANI config and per-channel information would be migrated
to the shared HAL stuff and enabled for all of the NICs;
(b) when a station reassociates and some other error conditions
(like missed beacons, NF calibration failures, etc) a knob
to reset ANI parameters would likely help recovery.
But hey, I'm committing bits of code again! woo!
Tested:
* AR9344 (2G), STA operation
|
||
|---|---|---|
| .. | ||
| ath_dfs/null | ||
| ath_hal | ||
| ath_rate | ||
| ah_osdep.c | ||
| ah_osdep.h | ||
| ah_osdep_ar5210.c | ||
| ah_osdep_ar5211.c | ||
| ah_osdep_ar5212.c | ||
| ah_osdep_ar5416.c | ||
| ah_osdep_ar9300.c | ||
| if_ath.c | ||
| if_ath_ahb.c | ||
| if_ath_alq.c | ||
| if_ath_alq.h | ||
| if_ath_beacon.c | ||
| if_ath_beacon.h | ||
| if_ath_btcoex.c | ||
| if_ath_btcoex.h | ||
| if_ath_btcoex_mci.c | ||
| if_ath_btcoex_mci.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.c | ||
| if_ath_pci_devlist.h | ||
| if_ath_rate.c | ||
| if_ath_rx.c | ||
| if_ath_rx.h | ||
| if_ath_rx_edma.c | ||
| if_ath_rx_edma.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.c | ||
| if_ath_tx.h | ||
| if_ath_tx_edma.c | ||
| if_ath_tx_edma.h | ||
| if_ath_tx_ht.c | ||
| if_ath_tx_ht.h | ||
| if_athdfs.h | ||
| if_athioctl.h | ||
| if_athrate.h | ||
| if_athvar.h | ||