ath9k: Stop the BTCOEX timers before disabling BTCOEX
authorMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Fri, 6 Jul 2012 14:39:32 +0000 (20:09 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 9 Jul 2012 20:36:38 +0000 (16:36 -0400)
Its safe to stop the BTCOEX timers 'period_timer' and
'no_stomp_timer' before disabling BTCOEX. These timers
can call ath9k_hw_btcoex_enable (or) change the BT
stomp type if they seem to be running after we had
called ath9k_hw_btcoex_disable, which is obviously
not correct.

Cc: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Cc: Bala Shanmugam <bkamatch@qca.qualcomm.com>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/gpio.c
drivers/net/wireless/ath/ath9k/mci.c

index c9ac7df..bacdb8f 100644 (file)
@@ -393,9 +393,9 @@ void ath9k_stop_btcoex(struct ath_softc *sc)
 
        if (ah->btcoex_hw.enabled &&
            ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) {
-               ath9k_hw_btcoex_disable(ah);
                if (ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_3WIRE)
                        ath9k_btcoex_timer_pause(sc);
+               ath9k_hw_btcoex_disable(ah);
                if (AR_SREV_9462(ah))
                        ath_mci_flush_profile(&sc->btcoex.mci);
        }
index 64cc782..87acff7 100644 (file)
@@ -174,8 +174,8 @@ skip_tuning:
                        btcoex->btcoex_period >>= 1;
        }
 
-       ath9k_hw_btcoex_disable(sc->sc_ah);
        ath9k_btcoex_timer_pause(sc);
+       ath9k_hw_btcoex_disable(sc->sc_ah);
 
        if (IS_CHAN_5GHZ(sc->sc_ah->curchan))
                return;