On Fri, 2010-06-11 at 19:12 +0900, Bruno Randolf wrote: > Make sure no tasklets can run concurrently to a reset. > > Signed-off-by: Bruno Randolf <br1@xxxxxxxxxxx> > --- > drivers/net/wireless/ath/ath5k/base.c | 12 ++++++++++++ > 1 files changed, 12 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c > index 9d37c1a..585c517 100644 > --- a/drivers/net/wireless/ath/ath5k/base.c > +++ b/drivers/net/wireless/ath/ath5k/base.c > @@ -2908,6 +2908,12 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan) > > ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "resetting\n"); > > + tasklet_disable(&sc->rxtq); /* ath5k_tasklet_rx */ > + tasklet_disable(&sc->txtq); /* ath5k_tasklet_tx */ > + tasklet_disable(&sc->calib); /* ath5k_tasklet_calibrate */ > + tasklet_disable(&sc->beacontq); /* ath5k_tasklet_beacon */ > + tasklet_disable(&sc->ani_tasklet); /* ath5k_tasklet_ani */ I have no idea how long a reset can take, but this means that all these tasklets will spin while your reset is running if they were scheduled. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html