ath9k: Setup MCI interrupts properly
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Mon, 4 Jun 2012 10:57:19 +0000 (16:27 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 6 Jun 2012 19:20:24 +0000 (15:20 -0400)
MCI interrupts have to be enabled only when BTCOEX is
actually in use.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/mci.c
drivers/net/wireless/ath/ath9k/mci.h

index cfbcc04..3809fc8 100644 (file)
@@ -1045,8 +1045,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
        if (ah->caps.hw_caps & ATH9K_HW_CAP_HT)
                ah->imask |= ATH9K_INT_CST;
 
-       if (ah->caps.hw_caps & ATH9K_HW_CAP_MCI)
-               ah->imask |= ATH9K_INT_MCI;
+       ath_mci_enable(sc);
 
        sc->sc_flags &= ~SC_OP_INVALID;
        sc->sc_ah->is_monitoring = false;
index 29fe52d..7b553f6 100644 (file)
@@ -538,3 +538,14 @@ void ath_mci_intr(struct ath_softc *sc)
                mci_int &= ~(AR_MCI_INTERRUPT_RX_INVALID_HDR |
                             AR_MCI_INTERRUPT_CONT_INFO_TIMEOUT);
 }
+
+void ath_mci_enable(struct ath_softc *sc)
+{
+       struct ath_common *common = ath9k_hw_common(sc->sc_ah);
+
+       if (!common->btcoex_enabled)
+               return;
+
+       if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_MCI)
+               sc->sc_ah->imask |= ATH9K_INT_MCI;
+}
index c841444..fc14eea 100644 (file)
@@ -130,4 +130,13 @@ void ath_mci_flush_profile(struct ath_mci_profile *mci);
 int ath_mci_setup(struct ath_softc *sc);
 void ath_mci_cleanup(struct ath_softc *sc);
 void ath_mci_intr(struct ath_softc *sc);
-#endif
+
+#ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
+void ath_mci_enable(struct ath_softc *sc);
+#else
+static inline void ath_mci_enable(struct ath_softc *sc)
+{
+}
+#endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */
+
+#endif /* MCI_H*/