From patchwork Fri Jun 11 10:12:21 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruno Randolf X-Patchwork-Id: 105527 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o5BACbD4015370 for ; Fri, 11 Jun 2010 10:12:38 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756099Ab0FKKMh (ORCPT ); Fri, 11 Jun 2010 06:12:37 -0400 Received: from mail30f.wh2.ocn.ne.jp ([220.111.41.203]:44881 "HELO mail30f.wh2.ocn.ne.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1755942Ab0FKKMg (ORCPT ); Fri, 11 Jun 2010 06:12:36 -0400 Received: from vs3015.wh2.ocn.ne.jp (125.206.180.247) by mail30f.wh2.ocn.ne.jp (RS ver 1.0.95vs) with SMTP id 2-0995721152 for ; Fri, 11 Jun 2010 19:12:32 +0900 (JST) Received: (qmail 58784 invoked from network); 11 Jun 2010 10:12:32 -0000 Received: from unknown (HELO ?192.168.3.123?) (220.110.201.18) by with SMTP; 11 Jun 2010 10:12:32 -0000 Subject: [PATCH] ath5k: disable all tasklets while resetting To: linville@tuxdriver.com From: Bruno Randolf Cc: ath5k-devel@venema.h4ckr.net, linux-wireless@vger.kernel.org Date: Fri, 11 Jun 2010 19:12:21 +0900 Message-ID: <20100611101221.26538.46913.stgit@tt-desk> User-Agent: StGit/0.15 MIME-Version: 1.0 X-SF-Loop: 1 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Fri, 11 Jun 2010 10:12:38 +0000 (UTC) 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 */ + if (chan) { ath5k_hw_set_imr(ah, 0); ath5k_txq_cleanup(sc); @@ -2948,6 +2954,12 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan) ath5k_beacon_config(sc); /* intrs are enabled by ath5k_beacon_config */ + tasklet_enable(&sc->rxtq); /* ath5k_tasklet_rx */ + tasklet_enable(&sc->txtq); /* ath5k_tasklet_tx */ + tasklet_enable(&sc->calib); /* ath5k_tasklet_calibrate */ + tasklet_enable(&sc->beacontq); /* ath5k_tasklet_beacon */ + tasklet_enable(&sc->ani_tasklet); /* ath5k_tasklet_ani */ + ieee80211_wake_queues(sc->hw); return 0;