diff options
author | Rajkumar Manoharan <rmanoharan@atheros.com> | 2011-04-08 07:36:25 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-04-12 16:58:43 -0400 |
commit | f60c49b67dd6db2ccb740a6a671414f9dab00c4f (patch) | |
tree | fe447a905fbe88cd5972015ea452a971d22001c1 /drivers | |
parent | d0ef824b9a712b866e38212089ade3a7114225a4 (diff) |
ath9k: Fix kernel panic on module unload
The commit "ath9k: configure beacons based on hw opmode" introduced
a regression which leads to kernel panic. Failed to stop ani timer
during the driver unload while any of the beaconing vif is running.
Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/beacon.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c index eccb0ec87adb..b56f69e7677b 100644 --- a/drivers/net/wireless/ath/ath9k/beacon.c +++ b/drivers/net/wireless/ath/ath9k/beacon.c | |||
@@ -320,6 +320,7 @@ void ath_beacon_return(struct ath_softc *sc, struct ath_vif *avp) | |||
320 | if (avp->av_bcbuf != NULL) { | 320 | if (avp->av_bcbuf != NULL) { |
321 | struct ath_buf *bf; | 321 | struct ath_buf *bf; |
322 | 322 | ||
323 | avp->is_bslot_active = false; | ||
323 | if (avp->av_bslot != -1) { | 324 | if (avp->av_bslot != -1) { |
324 | sc->beacon.bslot[avp->av_bslot] = NULL; | 325 | sc->beacon.bslot[avp->av_bslot] = NULL; |
325 | sc->nbcnvifs--; | 326 | sc->nbcnvifs--; |
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 93b9fa2cbaf8..a55a8929810b 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
@@ -1375,6 +1375,9 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw, | |||
1375 | if ((iter_data.naps + iter_data.nadhocs) > 0) { | 1375 | if ((iter_data.naps + iter_data.nadhocs) > 0) { |
1376 | sc->sc_flags |= SC_OP_ANI_RUN; | 1376 | sc->sc_flags |= SC_OP_ANI_RUN; |
1377 | ath_start_ani(common); | 1377 | ath_start_ani(common); |
1378 | } else { | ||
1379 | sc->sc_flags &= ~SC_OP_ANI_RUN; | ||
1380 | del_timer_sync(&common->ani.timer); | ||
1378 | } | 1381 | } |
1379 | } | 1382 | } |
1380 | 1383 | ||