linux-hardened/drivers/net/wireless/ath/ath9k
Felix Fietkau 70cf15335e ath9k: use AP beacon miss as a trigger for fast recalibration
When beacons get stuck in AP mode, the most likely cause is interference.
Such interference can often go on for a while, and too many consecutive
beacon misses can lead to connected clients getting dropped.

Since connected clients might not be subjected to the same interference
if that happens to be very local, the AP should try to deal with it as
good as it can. One way to do this is to trigger an NF calibration with
automatic baseband update right after the beacon miss. In my tests with
very strong interference, this allowed the AP to continue transmitting
beacons after only 2-3 misses, which allows a normal client to stay
connected.

With some of the newer - really sensitive - chips, the maximum noise
floor limit is very low, which can be problematic during very strong
interference. To avoid an endless loop of stuck beacons -> nfcal ->
periodic calibration -> stuck beacons, the beacon miss event also sets
a flag, which allows the calibration code to bypass the chip specific
maximum NF value. This flag is automatically cleared, as soon as the
first NF median goes back below the limits for all chains.

In my tests, this allowed an ath9k AP to survive very strong interference
(measured NF: -68, or sometimes even higher) without losing connectivity
to its clients. Even under these conditions, I was able to transmit
several mbits/s through the interface.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-08-16 15:26:39 -04:00
..
ahb.c drivers/net/wireless: Use wiphy_<level> 2010-07-27 15:14:13 -04:00
ani.c ath9k: add new ANI implementation for AR9003 2010-06-14 15:39:29 -04:00
ani.h ath9k: add new ANI implementation for AR9003 2010-06-14 15:39:29 -04:00
ar5008_initvals.h ath9k_hw: reformat the ar5008, ar9001 and ar9002 initvals to match ar9003 2010-07-02 13:44:34 -04:00
ar5008_phy.c ath9k_hw: fix invalid extension channel noisefloor readings in HT20 2010-07-26 15:32:42 -04:00
ar9001_initvals.h ath9k_hw: sync initvals for ar9001 and ar9002 with Atheros 2010-07-02 13:44:35 -04:00
ar9002_calib.c ath9k_hw: fix a noise floor calibration related race condition 2010-08-04 15:27:37 -04:00
ar9002_hw.c ath9k_hw: remove initvals for hardware which was never sold 2010-07-14 13:52:46 -04:00
ar9002_initvals.h ath9k_hw: remove initvals for hardware which was never sold 2010-07-14 13:52:46 -04:00
ar9002_mac.c ath9k_hw: report the TID in the tx status on AR5008-AR9002 2010-07-12 16:05:38 -04:00
ar9002_phy.c ath9k_hw: fix invalid extension channel noisefloor readings in HT20 2010-07-26 15:32:42 -04:00
ar9002_phy.h ath9k_hw: sanitize noise floor values properly on all chips 2010-07-02 13:44:36 -04:00
ar9003_2p0_initvals.h ath9k_hw: update 5 GHz tx gain tables for femless and high power PA 2010-06-14 15:39:30 -04:00
ar9003_2p2_initvals.h ath9k_hw: update 5 GHz tx gain tables for femless and high power PA 2010-06-14 15:39:30 -04:00
ar9003_calib.c ath9k_hw: clean up per-channel calibration data 2010-08-04 15:27:37 -04:00
ar9003_eeprom.c ath9k_hw: Fix regulatory CTL index usage for AR9003 2010-08-04 15:27:38 -04:00
ar9003_eeprom.h ath9k_hw: add support for parsing PA predistortion related EEPROM fields 2010-06-14 15:39:32 -04:00
ar9003_hw.c ath9k_hw: dynamically choose the SERDES array for low power 2010-06-23 15:14:03 -04:00
ar9003_mac.c ath9k_hw: Fix AR9003 MPDU delimeter CRC check for middle subframes 2010-07-16 14:03:42 -04:00
ar9003_mac.h ath9k_hw: report the TID in the tx status on AR5008-AR9002 2010-07-12 16:05:38 -04:00
ar9003_paprd.c ath9k_hw: clean up per-channel calibration data 2010-08-04 15:27:37 -04:00
ar9003_phy.c ath9k_hw: fix analog shift register writes on AR9003 2010-08-04 15:27:37 -04:00
ar9003_phy.h ath9k_hw: add register definitions related to PA predistortion 2010-06-14 15:39:32 -04:00
ath9k.h ath9k_hw: clean up per-channel calibration data 2010-08-04 15:27:37 -04:00
beacon.c ath9k: use AP beacon miss as a trigger for fast recalibration 2010-08-16 15:26:39 -04:00
btcoex.c
btcoex.h
calib.c ath9k: use AP beacon miss as a trigger for fast recalibration 2010-08-16 15:26:39 -04:00
calib.h ath9k: use AP beacon miss as a trigger for fast recalibration 2010-08-16 15:26:39 -04:00
common.c ath9k: fix crash with WEP in ad-hoc mode 2010-07-02 13:44:38 -04:00
common.h ath9k_common: Move count_streams to common module 2010-06-04 16:00:39 -04:00
debug.c ath9k: add a debugfs entry for ignoring CCA on the extension channel in HT40 2010-06-14 15:39:31 -04:00
debug.h ath9k: enable the baseband watchdog events for AR9003 2010-06-02 16:13:00 -04:00
eeprom.c ath9k_hw: Cleanup TX power calculation for AR9287 2010-06-03 14:10:46 -04:00
eeprom.h ath9k_htc: load proper firmware for device ID 7015 2010-08-13 13:46:20 -04:00
eeprom_4k.c ath9k: remove unneeded calculation of minimal calibration power 2010-07-14 13:52:45 -04:00
eeprom_9287.c ath9k_htc: load proper firmware for device ID 7015 2010-08-13 13:46:20 -04:00
eeprom_def.c ath9k: remove unneeded calculation of minimal calibration power 2010-07-14 13:52:45 -04:00
gpio.c ath9k: Add a module parameter to disable led blinking. 2010-06-23 15:14:05 -04:00
hif_usb.c ath9k_htc: load proper firmware for device ID 7015 2010-08-13 13:46:20 -04:00
hif_usb.h ath9k_htc: Add support for AR7010 2010-06-04 16:00:39 -04:00
htc.h ath9k_hw: clean up per-channel calibration data 2010-08-04 15:27:37 -04:00
htc_drv_beacon.c ath9k_htc: use common WMM AC definitions instead of ath9k ones 2010-06-14 15:39:30 -04:00
htc_drv_init.c ath9k_htc: load proper firmware for device ID 7015 2010-08-13 13:46:20 -04:00
htc_drv_main.c ath9k_htc: Fix disconnect issue in HT40 mode. 2010-08-13 13:46:19 -04:00
htc_drv_txrx.c ath9k_htc: fix panic on packet injection using airbase-ng tool. 2010-08-11 16:24:43 -04:00
htc_hst.c ath9k_htc: Configure credit size for AR7010 2010-06-04 16:00:39 -04:00
htc_hst.h ath9k_htc: Fix array overflow 2010-05-12 16:39:06 -04:00
hw-ops.h ath9k: merge noisefloor load implementations 2010-07-12 16:05:39 -04:00
hw.c ath9k_hw: clean up per-channel calibration data 2010-08-04 15:27:37 -04:00
hw.h ath9k: use AP beacon miss as a trigger for fast recalibration 2010-08-16 15:26:39 -04:00
init.c ath9k: fix panic while cleaning up virtaul wifis 2010-07-14 13:52:45 -04:00
Kconfig
mac.c ath9k_hw: avoid setting cwmin/cwmax to 0 for IBSS for AR9003 2010-06-15 16:02:22 -04:00
mac.h ath9k_hw: report the TID in the tx status on AR5008-AR9002 2010-07-12 16:05:38 -04:00
main.c ath9k: add fastcc to debug print for channel change 2010-08-16 15:26:13 -04:00
Makefile ath9k_hw: add functions for controlling PA predistortion calibration 2010-06-14 15:39:32 -04:00
pci.c drivers/net/wireless: Use wiphy_<level> 2010-07-27 15:14:13 -04:00
phy.h ath9k_hw: add OFDM spur mitigation for AR9003 2010-04-16 15:43:38 -04:00
rc.c ath9k: remove unused base_index from rate table. 2010-07-27 14:59:59 -04:00
rc.h ath9k: remove unused base_index from rate table. 2010-07-27 14:59:59 -04:00
recv.c ath9k: fix erased ieee80211_rx_status.mactime 2010-08-04 15:28:37 -04:00
reg.h ath9k_htc: load proper firmware for device ID 7015 2010-08-13 13:46:20 -04:00
virtual.c ath9k: Fix inconsistency between txq->stopped and the actual queue state 2010-07-26 15:32:41 -04:00
wmi.c ath9k: cleanup: remove unneeded null check 2010-06-02 16:13:33 -04:00
wmi.h ath9k_htc: Increase WMI timeout value 2010-04-26 14:21:20 -04:00
xmit.c ath9k: fix an issue in ath_atx_tid paused flag management 2010-08-04 15:27:38 -04:00