ath5k: move reset to mac80211 workqueue
authorBob Copeland <me@bobcopeland.com>
Tue, 13 Jul 2010 15:32:40 +0000 (11:32 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 14 Jul 2010 17:52:46 +0000 (13:52 -0400)
commit5faaff747710dfb79d5aa72b9faface94ad4b3f3
treefaddf5250f62abfe8d9b9f96a53712ca3db3e737
parentda5747eb89eb1511dcfc1d8b32c70370616eac92
ath5k: move reset to mac80211 workqueue

We currently trigger a reset via a tasklet when certain error
conditions are detected so that the card will (eventually)
restart.  Unfortunately this makes locking complicated since
reset can also be called in process context (e.g. for channel
change).  Currently nothing protects against concurrent resets,
which can be the source of corruption bugs.

Reset takes too long to spinlock the whole thing, so this
patch moves deferred resets into the mac80211 workqueue to
enable use of sc->lock mutex.

Signed-off-by: Bob Copeland <me@bobcopeland.com>
Acked-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/base.c
drivers/net/wireless/ath/ath5k/base.h
drivers/net/wireless/ath/ath5k/debug.c