linux/drivers/net/wireless
Rajkumar Manoharan 3782c69d6e ath9k_hw: Fix Tx IQ Calibration hang issue in AR9003 chips
On AR9003 chips, doing three IQ calibrations will possibly cause chip
in stuck state. In noisy environment, chip could receive
a packet during the middle of three calibrations and it causes
the conflict of HW access and the eventual failure. It also
causes IQ calibration outliers which results in poor Tx EVM.

The IQ Cal procedure is after resetting the chip, run IQ cal 3 times
per each cal cycle and find the two closest readings and average of two.
The advantage of running Tx IQ cal more than once is that we can compare
calibration results for the same gain setting over multiple iterations.
Most of the cases the IQ failures were observed after first pass.

For the AR9485 and later chips, Tx IQ Calibration is performed along
with AGC cal. But for pre-AR9485 chips, Tx IQ cal HW has to be separated
from the rest of calibration HW to avoid chip hang. After all
calibrations are done in HW, we can start SW post-processing.
By doing this way, we minimize the SW difference among all chips.

The order of calibration (run IQ cal before other calibration) is also
needed to avoid chip hang for chips before AR9485. This issue was
originally observed with AR9382.

During the issue kernel log was filled with following message
ath: timeout (100000 us) on reg 0xa640: 0x00000001 & 0x00000001 != 0x00000000
ath: timeout (100000 us) on reg 0xa2c4: 0x00158dd9 & 0x00000001 != 0x00000000
ath: Unable to reset channel (2412 MHz), reset status -5
ath: Unable to set channel

Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-04-26 15:50:27 -04:00
..
ath ath9k_hw: Fix Tx IQ Calibration hang issue in AR9003 chips 2011-04-26 15:50:27 -04:00
b43 b43: allocate receive buffers big enough for max frame len + offset 2011-04-04 15:22:11 -04:00
b43legacy mac80211: make tx() operation return void 2011-02-25 15:32:34 -05:00
hostap net: change to new flag variable 2011-03-17 14:05:35 +01:00
ipw2x00 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2011-03-16 16:29:25 -07:00
iwlegacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-04-26 15:39:10 -04:00
iwlwifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-04-26 15:39:10 -04:00
iwmc3200wifi
libertas libertas_spi: Add support for suspend/resume 2011-03-30 14:15:17 -04:00
libertas_tf mac80211: make tx() operation return void 2011-02-25 15:32:34 -05:00
mwifiex mwifiex: optimize driver initialization code 2011-04-19 15:38:04 -04:00
orinoco orinoco: Clear dangling pointer on hardware busy 2011-03-23 15:22:04 -04:00
p54 p54: Initialize extra_len in p54_tx_80211 2011-04-08 13:06:30 -04:00
prism54
rt2x00 rt2x00: Implement get_antenna and set_antenna callback functions 2011-04-19 15:40:07 -04:00
rtl818x rtl8187: Change rate-control feedback 2011-03-04 14:05:17 -05:00
rtlwifi rtlwifi: Fix unitialized variable warnings 2011-04-14 15:35:14 -04:00
wl12xx wl12xx: fix sparse warning about undeclared wl12xx_alloc_dummy_packet 2011-04-19 16:49:24 +03:00
wl1251 wl1251: Add support for idle mode 2011-04-07 15:34:14 -04:00
zd1211rw Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-04-07 16:45:40 -04:00
adm8211.c mac80211: make tx() operation return void 2011-02-25 15:32:34 -05:00
adm8211.h
airo_cs.c
airo.c
airo.h
at76c50x-usb.c at76c50x-usb: fix warning caused by at76_mac80211_tx now returning void 2011-02-28 13:57:30 -05:00
at76c50x-usb.h ieee80211: add IEEE80211_COUNTRY_STRING_LEN definition 2011-03-09 16:10:56 -05:00
atmel_cs.c
atmel_pci.c
atmel.c
atmel.h
Kconfig wireless: mwifiex: initial commit for Marvell mwifiex driver 2011-03-30 14:15:17 -04:00
mac80211_hwsim.c mac80211: make tx() operation return void 2011-02-25 15:32:34 -05:00
Makefile wireless: mwifiex: initial commit for Marvell mwifiex driver 2011-03-30 14:15:17 -04:00
mwl8k.c mwl8k: Enable life time expiry for tx packets in the hardware 2011-04-25 14:50:16 -04:00
ray_cs.c
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: use power save only for BCM4320b 2011-02-25 15:21:51 -05:00
wl3501_cs.c
wl3501.h
zd1201.c
zd1201.h