kernel-fxtec-pro1x/drivers/net/wireless
Bob Copeland 209d889bab ath5k: update channel in sw state after stopping RX and TX
This fixes a non-theoretical race condition when transmitting and
receiving frames during a scan.  If the channel or operating band
changes while processing status descriptors in the tasklets, ath5k
will incorrectly use the new channel and band when reporting the
rates, even if the frame was actually sent on a previous channel.

Typically this will manifest as a beacon found on an incorrect
frequency and/or a warning in the driver while scanning:

[ 4773.891944] cfg80211: Found new beacon on frequency: 5805 MHz (Ch 161) on phy0
[ 4785.461125] ------------[ cut here ]------------
[ 4785.461135] WARNING: at drivers/net/wireless/ath/ath5k/base.c:1141 ath5k_tasklet_rx+0x2ff/0x577 [ath5k]()
[ 4785.461143] Hardware name: MacBook1,1
[ 4785.461148] invalid hw_rix: 1b
[ 4785.461152] Modules linked in: fuse i915 drm af_packet acpi_cpufreq binfmt_misc dm_mirror dm_region_hash dm_log dm_multipath dm_mod arc4 ecb snd_hda_codec_idt snd_hda_intel snd_hda_codec snd_seq_dummy snd_seq_oss snd_seq_midi_event ath5k snd_seq hid_apple usbhid snd_seq_device mac80211 appletouch snd_pcm_oss sky2 ohci1394 snd_mixer_oss ath ieee1394 snd_pcm bitrev snd_timer cfg80211 crc32 snd snd_page_alloc button processor ac ehci_hcd joydev uhci_hcd sg battery thermal sr_mod cdrom applesmc evdev input_polldev unix [last unloaded: microcode]
[ 4785.461296] Pid: 0, comm: swapper Tainted: G        W  2.6.30-rc3-wl #112
[ 4785.461302] Call Trace:
[ 4785.461316]  [<c012590f>] warn_slowpath+0x76/0xa5
[ 4785.461331]  [<c0219839>] ? debug_dma_unmap_page+0x5a/0x62
[ 4785.461357]  [<f9982f88>] ath5k_tasklet_rx+0x2ff/0x577 [ath5k]
[ 4785.461371]  [<c01446f7>] ? trace_hardirqs_off+0xb/0xd
[ 4785.461381]  [<c0129928>] ? __tasklet_schedule+0x6e/0x7c
[ 4785.461392]  [<c0129b02>] tasklet_action+0x92/0xe5
[ 4785.461402]  [<c0129f91>] __do_softirq+0xb1/0x182
[ 4785.461411]  [<c012a092>] do_softirq+0x30/0x48
[ 4785.461428]  [<c012a20a>] irq_exit+0x3d/0x74
[ 4785.461435]  [<c035a0de>] do_IRQ+0x76/0x8c
[ 4785.461440]  [<c010312e>] common_interrupt+0x2e/0x34
[ 4785.461445]  [<c014007b>] ? timer_list_show+0x1ab/0x939
[ 4785.461457]  [<f85fd25c>] ? acpi_idle_enter_bm+0x27c/0x2b9 [processor]
[ 4785.461463]  [<c02d1ed6>] cpuidle_idle_call+0x6a/0x9c
[ 4785.461468]  [<c0101cc8>] cpu_idle+0x53/0x87
[ 4785.461473]  [<c0346584>] rest_init+0x6c/0x6e
[ 4785.461479]  [<c04df74d>] start_kernel+0x286/0x28b
[ 4785.461484]  [<c04df037>] __init_begin+0x37/0x3c
[ 4785.461487] ---[ end trace aaf8496ba3679dfb ]---

Signed-off-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-05-11 15:07:01 -04:00
..
ar9170 ar9170usb: fix hang on resume 2009-04-20 16:36:26 -04:00
ath5k ath5k: update channel in sw state after stopping RX and TX 2009-05-11 15:07:01 -04:00
ath9k ath9k: fix access to a freed skb in ath_rx_tasklet() 2009-04-16 10:39:07 -04:00
b43 b43: Do radio lock assertion in software 2009-04-16 10:39:14 -04:00
b43legacy dma-mapping: replace all DMA_30BIT_MASK macro with DMA_BIT_MASK(30) 2009-04-07 08:31:11 -07:00
hostap
ipw2x00 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
iwlwifi iwlwifi: update key flags at time key is set 2009-05-04 16:22:10 -04:00
libertas libertas: don't leak skb on receive error 2009-04-16 10:39:08 -04:00
libertas_tf
orinoco orinoco: correct timeout logic in __orinoco_hw_set_tkip_key() 2009-04-16 10:39:17 -04:00
p54 p54: deactivate broken powersave function 2009-04-20 16:36:26 -04:00
prism54 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
rt2x00 rt2x00: Don't free register information on suspend 2009-04-20 16:36:26 -04:00
rtl818x rtl8187: use DMA-aware buffers with usb_control_msg 2009-05-11 15:07:01 -04:00
zd1211rw
adm8211.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
adm8211.h
airo.c airo: airo_get_encode{,ext} potential buffer overflow 2009-05-11 15:07:01 -04:00
airo.h
airo_cs.c
arlan-main.c Merge branch 'linus' into percpu-cpumask-x86-for-linus-2 2009-03-28 04:26:01 +01:00
arlan-proc.c
arlan.h
at76c50x-usb.c at76c50x-usb: Add device ID for OQO model 01+ 2009-04-16 10:39:09 -04:00
at76c50x-usb.h
atmel.c atmel: fix netdev ops conversion 2009-04-21 02:08:51 -07:00
atmel.h
atmel_cs.c
atmel_pci.c
i82586.h
i82593.h
Kconfig ar9170: update Makefile, Kconfig and MAINTAINERS 2009-03-27 20:13:09 -04:00
mac80211_hwsim.c mac80211/iwlwifi: move virtual A-MDPU queue bookkeeping to iwlwifi 2009-03-27 20:13:23 -04:00
Makefile ar9170: single module build 2009-03-27 20:13:19 -04:00
mwl8k.c mwl8: fix build warning. 2009-04-21 16:43:33 -04:00
netwave_cs.c
ray_cs.c
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: fix initialization order for workqueue&workers 2009-04-28 15:59:48 -04:00
strip.c
wavelan.c
wavelan.h
wavelan.p.h
wavelan_cs.c
wavelan_cs.h
wavelan_cs.p.h
wl3501.h
wl3501_cs.c
zd1201.c wireless: remove duplicated .ndo_set_mac_address 2009-03-29 13:52:21 -07:00
zd1201.h