summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/ath5k/debug.c
diff options
context:
space:
mode:
authorBob Copeland <me@bobcopeland.com>2010-07-13 11:32:40 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-07-14 13:52:46 -0400
commit5faaff747710dfb79d5aa72b9faface94ad4b3f3 (patch)
treefaddf5250f62abfe8d9b9f96a53712ca3db3e737 /drivers/net/wireless/ath/ath5k/debug.c
parentda5747eb89eb1511dcfc1d8b32c70370616eac92 (diff)
downloadlwn-5faaff747710dfb79d5aa72b9faface94ad4b3f3.tar.gz
lwn-5faaff747710dfb79d5aa72b9faface94ad4b3f3.zip
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>
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/debug.c')
-rw-r--r--drivers/net/wireless/ath/ath5k/debug.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath5k/debug.c b/drivers/net/wireless/ath/ath5k/debug.c
index 8c638865c712..ebb9c237a0d5 100644
--- a/drivers/net/wireless/ath/ath5k/debug.c
+++ b/drivers/net/wireless/ath/ath5k/debug.c
@@ -279,7 +279,7 @@ static ssize_t write_file_reset(struct file *file,
{
struct ath5k_softc *sc = file->private_data;
ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "debug file triggered reset\n");
- tasklet_schedule(&sc->restq);
+ ieee80211_queue_work(sc->hw, &sc->reset_work);
return count;
}