aboutsummaryrefslogtreecommitdiffstats
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)
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,
279{ 279{
280 struct ath5k_softc *sc = file->private_data; 280 struct ath5k_softc *sc = file->private_data;
281 ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "debug file triggered reset\n"); 281 ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "debug file triggered reset\n");
282 tasklet_schedule(&sc->restq); 282 ieee80211_queue_work(sc->hw, &sc->reset_work);
283 return count; 283 return count;
284} 284}
285 285