linux/drivers/net/wireless
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
..
ath ath5k: fix I/Q calibration (for real) 2010-03-10 16:16:56 -05:00
b43 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2010-02-27 02:05:54 -08:00
b43legacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2010-02-25 23:26:21 -08:00
hostap Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2010-02-25 23:26:21 -08:00
ipw2x00 libipw: split ieee->networks into small pieces 2010-03-10 16:16:55 -05:00
iwlwifi iwlwifi: load firmware asynchronously before mac80211 registration 2010-03-02 14:31:51 -05:00
iwmc3200wifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2010-02-26 16:54:45 -05:00
libertas wireless: convert to use netdev_for_each_mc_addr 2010-02-28 01:44:01 -08:00
libertas_tf Add Station and AdHoc mode support to libertas_tf 2010-02-10 16:36:50 -05:00
orinoco wireless: convert to use netdev_for_each_mc_addr 2010-02-28 01:44:01 -08:00
p54 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2010-02-25 23:26:21 -08:00
prism54 drivers/net/: use DEFINE_PCI_DEVICE_TABLE() 2010-01-07 23:54:26 -08:00
rt2x00 rt2x00: remove KSEG1ADDR define from rt2x00soc.h 2010-03-10 16:16:53 -05:00
rtl818x Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2010-02-26 16:54:45 -05:00
wl12xx wl1271: Added alloc and free hw functions 2010-02-19 15:52:48 -05:00
zd1211rw zd1211rw: fix potential array underflow 2010-03-02 14:28:49 -05:00
adm8211.c Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2010-02-14 17:45:59 -08:00
adm8211.h
airo.c airo: return from set_wep_key() when key length is zero 2010-03-02 14:28:48 -05:00
airo.h
airo_cs.c
at76c50x-usb.c mac80211: remove struct ieee80211_if_init_conf 2009-12-28 16:55:07 -05:00
at76c50x-usb.h
atmel.c
atmel.h
atmel_cs.c
atmel_pci.c drivers/net/: use DEFINE_PCI_DEVICE_TABLE() 2010-01-07 23:54:26 -08:00
Kconfig wireless: airo_cs build fixes 2010-02-15 16:12:52 -05:00
mac80211_hwsim.c mac80211_hwsim: convert to new station add/remove callbacks 2010-02-19 15:52:52 -05:00
Makefile
mwl8k.c mwl8k: convert to new station add/remove callbacks 2010-02-22 11:21:43 -05:00
ray_cs.c wireless: convert to use netdev_for_each_mc_addr 2010-02-28 01:44:01 -08:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: correct multicast_list handling V3 2010-03-04 03:32:16 -08:00
wl3501.h
wl3501_cs.c
zd1201.c wireless: convert to use netdev_for_each_mc_addr 2010-02-28 01:44:01 -08:00
zd1201.h