linux/drivers/net/wireless/ti/wlcore
Ido Yariv c24ec83bca wlcore: Prevent processing of work items during op_stop
The interrupt line is disabled in op_stop using disable_irq. Since
pending interrupts are synchronized, the mutex has to be released before
disabling the interrupt to avoid a deadlock with the interrupt handler.

In addition, the internal state of the driver is only set to 'off'
after the interrupt is disabled. Otherwise, if an interrupt fires after
the state is set but before the interrupt line is disabled, the
interrupt handler will not be able to acknowledge the interrupt
resulting in an interrupt storm.

The driver's operations might be called during recovery. If these
acquire the mutex after it was released by op_stop, but before the
driver's state is changed, they may queue new work items instead of just
failing. This is especially problematic in the case of scans, in which a
new scan may be scheduled after all scan requests were cancelled.

Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
2012-07-10 12:10:14 -04:00
..
Kconfig wlcore: drop INET dependency 2012-06-25 15:14:13 -04:00
Makefile
acx.c wlcore: reconfigure sleep_auth when removing interfaces 2012-06-21 12:51:55 +03:00
acx.h wlcore: allow setting sleep_auth before interface init 2012-06-21 12:51:41 +03:00
boot.c wlcore/wl12xx/wl18xx: check min FW version 2012-07-10 12:10:12 -04:00
boot.h wlcore: create private static_data area and add operation to parse it 2012-06-05 15:58:20 +03:00
cmd.c wlcore: add probe request templates for sched and one-shot scans 2012-07-10 12:10:13 -04:00
cmd.h wlcore: add probe request templates for sched and one-shot scans 2012-07-10 12:10:13 -04:00
conf.h wlcore: allow setting sleep_auth before interface init 2012-06-21 12:51:41 +03:00
debug.h
debugfs.c wlcore: access the firmware memory via debugfs 2012-06-22 22:52:01 +03:00
debugfs.h wlcore: add debugfs macro to help print fw statistics arrays 2012-06-05 15:58:08 +03:00
event.c wlcore: Propagate errors from wl1271_raw_write32 2012-06-22 10:49:44 +03:00
event.h
hw_ops.h wlcore: Propagate errors from wl1271_write 2012-06-22 10:46:34 +03:00
ini.h wlcore/wl12xx: add support for HP and SKW FEM radio manufacturers 2012-06-13 21:52:56 +03:00
init.c wlcore: add probe request templates for sched and one-shot scans 2012-07-10 12:10:13 -04:00
init.h
io.c wlcore: Prevent processing of work items during op_stop 2012-07-10 12:10:14 -04:00
io.h wlcore: Prevent processing of work items during op_stop 2012-07-10 12:10:14 -04:00
main.c wlcore: Prevent processing of work items during op_stop 2012-07-10 12:10:14 -04:00
ps.c wlcore: Propagate errors from wl1271_raw_write32 2012-06-22 10:49:44 +03:00
ps.h
rx.c wlcore: check Rx-filter functions in the suspend path 2012-06-23 09:32:32 +03:00
rx.h wlcore: check Rx-filter functions in the suspend path 2012-06-23 09:32:32 +03:00
scan.c wlcore: add probe request templates for sched and one-shot scans 2012-07-10 12:10:13 -04:00
scan.h wlcore: set channels 12-14 as pactive for sched scan 2012-06-06 19:40:27 +03:00
sdio.c wl12xx/wlcore: increase FW filename version 2012-07-10 12:10:13 -04:00
spi.c wl12xx/wlcore: increase FW filename version 2012-07-10 12:10:13 -04:00
testmode.c wlcore: remove recover cmd from testmode 2012-07-10 12:10:13 -04:00
testmode.h
tx.c wlcore: fix broken TX due to wrong queuing of recovery 2012-06-26 20:30:03 +03:00
tx.h wlcore: Propagate errors from wl1271_write 2012-06-22 10:46:34 +03:00
wl12xx_80211.h
wl12xx_platform_data.c
wlcore.h wlcore: add probe request templates for sched and one-shot scans 2012-07-10 12:10:13 -04:00
wlcore_i.h wl12xx/wlcore: increase FW filename version 2012-07-10 12:10:13 -04:00