kernel-ark/drivers/net/wireless/ath5k
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
..
ath5k.h ath5k: Add tx power calibration support 2009-03-27 20:12:56 -04:00
attach.c ath5k: Add tx power calibration support 2009-03-27 20:12:56 -04:00
base.c ath5k: update channel in sw state after stopping RX and TX 2009-05-11 15:07:01 -04:00
base.h ath5k: warn and correct rate for unknown hw rate indexes 2009-03-27 20:13:18 -04:00
caps.c ath5k: discard 11g caps if reported by an ar5211 eeprom 2009-01-29 16:00:26 -05:00
debug.c ath5k: fix buffer overrun in rate debug code 2009-04-28 15:59:48 -04:00
debug.h mac80211: Generic TSF debugging 2009-01-29 16:01:46 -05:00
desc.c ath5k: Add tx power calibration support 2009-03-27 20:12:56 -04:00
desc.h ath5k: HW code cleanup 2008-09-05 16:15:24 -04:00
dma.c fix similar typos to successfull 2009-01-08 08:31:15 -08:00
eeprom.c ath5k: Convert chip specific calibration data to a generic format 2009-03-27 20:12:54 -04:00
eeprom.h ath5k: Convert chip specific calibration data to a generic format 2009-03-27 20:12:54 -04:00
gpio.c ath5k: fix off-by-one in gpio checks 2009-01-29 15:59:45 -05:00
initvals.c ath5k: Choose the right initvals for RF2425 2009-03-27 20:12:54 -04:00
Kconfig
led.c ath5k: Support LED's on Acer Extensa 5620z 2009-03-27 20:13:10 -04:00
Makefile ath5k: extract LED code into a separate file 2009-03-16 18:09:37 -04:00
pcu.c ath5k: Set TSF fix 2009-03-05 14:39:40 -05:00
phy.c ath5k: Add tx power calibration support 2009-03-27 20:12:56 -04:00
qcu.c ath5k: Minor QCU updates 2009-01-29 15:59:53 -05:00
reg.h ath5k: Add tx power calibration support 2009-03-27 20:12:56 -04:00
reset.c ath5k: Add tx power calibration support 2009-03-27 20:12:56 -04:00
rfbuffer.h ath5k: Update RF Buffer handling 2009-02-13 13:44:45 -05:00
rfgain.h ath5k: Update gain_F calibration code and add documentation 2009-02-13 13:44:43 -05:00