From 40b022f9b9a77c5d9b319d2295eaf0fe98ab8376 Mon Sep 17 00:00:00 2001 From: "Luis R. Rodriguez" Date: Tue, 6 Oct 2009 21:19:08 -0400 Subject: [PATCH] --- yaml --- r: 170623 b: refs/heads/master c: 7fda16665152851fe65ee73e24afdcaf67acba59 h: refs/heads/master i: 170621: e86e7b3ecb62aaea7bedc755a9f97bc40f343846 170619: 2b514f2924a8629d0ce771aacc53032c0a11d0be 170615: dc7dd738794cf214217d905be02e298dde2be5c9 170607: 843d27ba8d68d7fe9a88e12c12db405495b859fc 170591: 7f9726dcf978e7ed683fc5c66578f0734790249d 170559: bba7384f90970aaca0ef21181f50072e9b674af9 170495: 6e23c519fa7874607135729fd8d491a9e74b1da2 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/ath/ath9k/main.c | 23 +++++++++++++-------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 2df04cffd4e3..c059666548a3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 211f5859af951788a3fe4752142a5e9047afa5d8 +refs/heads/master: 7fda16665152851fe65ee73e24afdcaf67acba59 diff --git a/trunk/drivers/net/wireless/ath/ath9k/main.c b/trunk/drivers/net/wireless/ath/ath9k/main.c index 0fe915acd21e..e6842dd83ce2 100644 --- a/trunk/drivers/net/wireless/ath/ath9k/main.c +++ b/trunk/drivers/net/wireless/ath/ath9k/main.c @@ -1325,6 +1325,17 @@ void ath_cleanup(struct ath_softc *sc) ieee80211_free_hw(sc->hw); } +static void ath9k_uninit_hw(struct ath_softc *sc) +{ + struct ath_hw *ah = sc->sc_ah; + + BUG_ON(!ah); + + ath9k_exit_debug(ah); + ath9k_hw_detach(ah); + sc->sc_ah = NULL; +} + void ath_detach(struct ath_softc *sc) { struct ieee80211_hw *hw = sc->hw; @@ -1365,9 +1376,7 @@ void ath_detach(struct ath_softc *sc) ah->btcoex_hw.scheme == ATH_BTCOEX_CFG_3WIRE) ath_gen_timer_free(ah, sc->btcoex.no_stomp_timer); - ath9k_exit_debug(ah); - ath9k_hw_detach(ah); - sc->sc_ah = NULL; + ath9k_uninit_hw(sc); } static int ath9k_reg_notifier(struct wiphy *wiphy, @@ -1850,10 +1859,8 @@ static int ath_init_softc(u16 devid, struct ath_softc *sc, u16 subsysid, if (ATH_TXQ_SETUP(sc, i)) ath_tx_cleanupq(sc, &sc->tx.txq[i]); - ath9k_exit_debug(ah); bad_free_hw: - ath9k_hw_detach(ah); - sc->sc_ah = NULL; + ath9k_uninit_hw(sc); return r; } @@ -1966,9 +1973,7 @@ int ath_init_device(u16 devid, struct ath_softc *sc, u16 subsysid, if (ATH_TXQ_SETUP(sc, i)) ath_tx_cleanupq(sc, &sc->tx.txq[i]); - ath9k_exit_debug(ah); - ath9k_hw_detach(ah); - sc->sc_ah = NULL; + ath9k_uninit_hw(sc); return error; }