On Monday 29 March 2010 10:42:11 Bob Copeland wrote: > Review spotted a couple of strange invocations to > ieee80211_wake_queues that could potentially cause problems: > > - queues are awakened in the calibration tasklet before > phy calibration, and then again after calibration > > - queues are awakened inside reset when we're trying to > drain the ath5k transmit queues, and again after > reset is completed (in callers to ath5k_reset_wake). > > In both cases the first reset works at cross purposes to the > goal of pausing transmissions, so nix them.
i don't understand this sentence... > Signed-off-by: Bob Copeland <m...@bobcopeland.com> > --- > drivers/net/wireless/ath/ath5k/base.c | 3 +-- > 1 files changed, 1 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath5k/base.c > b/drivers/net/wireless/ath/ath5k/base.c index c085a06..38c41e3 100644 > --- a/drivers/net/wireless/ath/ath5k/base.c > +++ b/drivers/net/wireless/ath/ath5k/base.c > @@ -1636,7 +1636,6 @@ ath5k_txq_cleanup(struct ath5k_softc *sc) > sc->txqs[i].link); > } > } > - ieee80211_wake_queues(sc->hw); /* XXX move to callers */ > > for (i = 0; i < ARRAY_SIZE(sc->txqs); i++) > if (sc->txqs[i].setup) > @@ -2775,7 +2774,7 @@ ath5k_tasklet_calibrate(unsigned long data) > * to load new gain values. > */ > ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "calibration, resetting\n"); > - ath5k_reset_wake(sc); > + ath5k_reset(sc, sc->curchan); > } > if (ath5k_hw_phy_calibrate(ah, sc->curchan)) > ATH5K_ERR(sc, "calibration of channel %u failed\n", couldn't we then also get rid of ath5k_reset_wake() completely? i think we need to re-think the whole queue handling and reset code, but this seems like a good start. bruno _______________________________________________ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel