linux/drivers/net/wireless/ath
Bruno Randolf 86415d43ef ath5k: fix I/Q calibration (for real)
I/Q calibration was completely broken, resulting in a high number of CRC errors
on received packets. before i could see around 10% to 20% CRC errors, with this
patch they are between 0% and 3%.

1.) the removal of the mask in commit "ath5k: Fix I/Q calibration
(f1cf2dbd0f)" resulted in no mask beeing used
when writing the I/Q values into the register. additional errors in the
calculation of the values (see 2.) resulted too high numbers, exceeding the
masks, so wrong values like 0xfffffffe were written. to be safe we should
always use the bitmask when writing parts of a register.

2.) using a (s32) cast for q_coff is a wrong conversion to signed, since we
convert to a signed value later by substracting 128. this resulted in too low
numbers for Q many times, which were limited to -16 by the boundary check later
on.

3.) checked everything against the HAL sources and took over comments and minor
optimizations from there.

4.) we can't use ENABLE_BITS when we want to write a number (the number can
contain zeros). also always write the correction values first and set ENABLE
bit last, like the HAL does.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Cc: stable@kernel.org
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-03-10 16:16:56 -05:00
..
ar9170 ar9170: load firmware asynchronously 2010-03-02 14:31:50 -05:00
ath5k ath5k: fix I/Q calibration (for real) 2010-03-10 16:16:56 -05:00
ath9k mac80211: Fix HT rate control configuration 2010-03-03 15:39:21 -05:00
ath.h ath9k: fix access to freed data on unload 2010-02-01 15:40:09 -05:00
debug.c
debug.h ath: make gcc check format arguments of ath_print(), fix all misuses 2010-02-01 15:40:04 -05:00
hw.c
Kconfig wireless: remove WLAN_80211 and WLAN_PRE80211 from Kconfig 2009-10-30 16:50:35 -04:00
main.c
Makefile
reg.h
regd_common.h
regd.c ath: fix WARN_ON with Polish (Poland) Contry code 2010-02-08 16:51:02 -05:00
regd.h