All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] ath9k patches
@ 2015-03-01  6:23 Sujith Manoharan
  2015-03-01  6:23 ` [PATCH 1/6] ath9k: Remove useless return value check Sujith Manoharan
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Sujith Manoharan @ 2015-03-01  6:23 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

ath9k patches for -next.

Sujith Manoharan (6):
  ath9k: Remove useless return value check
  ath9k: Initialize MCI state correctly
  ath9k: Fix MCI scheme initialization
  ath9k: Fix wlan-active gpio for the AR9003 family
  ath9k: Handle timers for MCI
  ath9k: Fix issues in the main btcoex timer

 drivers/net/wireless/ath/ath9k/btcoex.c | 43 ++++++++++-----
 drivers/net/wireless/ath/ath9k/btcoex.h |  1 +
 drivers/net/wireless/ath/ath9k/gpio.c   | 95 +++++++++++++++++----------------
 3 files changed, 79 insertions(+), 60 deletions(-)

-- 
2.3.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/6] ath9k: Remove useless return value check
  2015-03-01  6:23 [PATCH 0/6] ath9k patches Sujith Manoharan
@ 2015-03-01  6:23 ` Sujith Manoharan
  2015-03-03 13:47   ` [1/6] " Kalle Valo
  2015-03-01  6:23 ` [PATCH 2/6] ath9k: Initialize MCI state correctly Sujith Manoharan
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 8+ messages in thread
From: Sujith Manoharan @ 2015-03-01  6:23 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

ath_init_btcoex_timer() always returns 0, so
checking for error conditions is not required.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/gpio.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/gpio.c b/drivers/net/wireless/ath/ath9k/gpio.c
index da344b2..78695b5 100644
--- a/drivers/net/wireless/ath/ath9k/gpio.c
+++ b/drivers/net/wireless/ath/ath9k/gpio.c
@@ -271,7 +271,7 @@ static void ath_btcoex_no_stomp_timer(unsigned long arg)
 	ath9k_ps_restore(sc);
 }
 
-static int ath_init_btcoex_timer(struct ath_softc *sc)
+static void ath_init_btcoex_timer(struct ath_softc *sc)
 {
 	struct ath_btcoex *btcoex = &sc->btcoex;
 
@@ -287,8 +287,6 @@ static int ath_init_btcoex_timer(struct ath_softc *sc)
 			(unsigned long) sc);
 
 	spin_lock_init(&btcoex->btcoex_lock);
-
-	return 0;
 }
 
 /*
@@ -409,9 +407,8 @@ int ath9k_init_btcoex(struct ath_softc *sc)
 		break;
 	case ATH_BTCOEX_CFG_3WIRE:
 		ath9k_hw_btcoex_init_3wire(sc->sc_ah);
-		r = ath_init_btcoex_timer(sc);
-		if (r)
-			return -1;
+		ath_init_btcoex_timer(sc);
+
 		txq = sc->tx.txq_map[IEEE80211_AC_BE];
 		ath9k_hw_init_btcoex_hw(sc->sc_ah, txq->axq_qnum);
 		sc->btcoex.bt_stomp_type = ATH_BTCOEX_STOMP_LOW;
-- 
2.3.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/6] ath9k: Initialize MCI state correctly
  2015-03-01  6:23 [PATCH 0/6] ath9k patches Sujith Manoharan
  2015-03-01  6:23 ` [PATCH 1/6] ath9k: Remove useless return value check Sujith Manoharan
@ 2015-03-01  6:23 ` Sujith Manoharan
  2015-03-01  6:23 ` [PATCH 3/6] ath9k: Fix MCI scheme initialization Sujith Manoharan
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Sujith Manoharan @ 2015-03-01  6:23 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

The MCI configuration values are assigned
in ath9k_hw_btcoex_init_mci() which are used
by the MCI reset routine. When initializing
BTCOEX/MCI, ath_mci_setup() ends up using
uninitialized data. Fix this by setting up
the configuration parameters before issuing
a MCI reset.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/gpio.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/gpio.c b/drivers/net/wireless/ath/ath9k/gpio.c
index 78695b5..257ffce 100644
--- a/drivers/net/wireless/ath/ath9k/gpio.c
+++ b/drivers/net/wireless/ath/ath9k/gpio.c
@@ -415,12 +415,11 @@ int ath9k_init_btcoex(struct ath_softc *sc)
 		if (ath9k_hw_mci_is_enabled(ah)) {
 			sc->btcoex.duty_cycle = ATH_BTCOEX_DEF_DUTY_CYCLE;
 			INIT_LIST_HEAD(&sc->btcoex.mci.info);
+			ath9k_hw_btcoex_init_mci(ah);
 
 			r = ath_mci_setup(sc);
 			if (r)
 				return r;
-
-			ath9k_hw_btcoex_init_mci(ah);
 		}
 
 		break;
-- 
2.3.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/6] ath9k: Fix MCI scheme initialization
  2015-03-01  6:23 [PATCH 0/6] ath9k patches Sujith Manoharan
  2015-03-01  6:23 ` [PATCH 1/6] ath9k: Remove useless return value check Sujith Manoharan
  2015-03-01  6:23 ` [PATCH 2/6] ath9k: Initialize MCI state correctly Sujith Manoharan
@ 2015-03-01  6:23 ` Sujith Manoharan
  2015-03-01  6:23 ` [PATCH 4/6] ath9k: Fix wlan-active gpio for the AR9003 family Sujith Manoharan
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Sujith Manoharan @ 2015-03-01  6:23 UTC (permalink / raw)
  To: linux-wireless; +Cc: Rajkumar Manoharan

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

Commit "ath9k_hw: remove ATH_BTCOEX_CFG_MCI" removed
MCI as a separate coex scheme, but we need it to
avoid fiddling with GPIO registers during
ath9k_init_btcoex() that are meant only for 3-wire
cards.

Cc: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/btcoex.c | 40 ++++++++++++++++++++++-----------
 drivers/net/wireless/ath/ath9k/btcoex.h |  1 +
 drivers/net/wireless/ath/ath9k/gpio.c   | 23 ++++++++++---------
 3 files changed, 40 insertions(+), 24 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/btcoex.c b/drivers/net/wireless/ath/ath9k/btcoex.c
index 3dfc2c7..78e892e 100644
--- a/drivers/net/wireless/ath/ath9k/btcoex.c
+++ b/drivers/net/wireless/ath/ath9k/btcoex.c
@@ -103,7 +103,9 @@ void ath9k_hw_btcoex_init_scheme(struct ath_hw *ah)
 		return;
 	}
 
-	if (AR_SREV_9300_20_OR_LATER(ah)) {
+	if (ah->caps.hw_caps & ATH9K_HW_CAP_MCI) {
+		btcoex_hw->scheme = ATH_BTCOEX_CFG_MCI;
+	} else if (AR_SREV_9300_20_OR_LATER(ah)) {
 		btcoex_hw->scheme = ATH_BTCOEX_CFG_3WIRE;
 		btcoex_hw->btactive_gpio = ATH_BTACTIVE_GPIO_9300;
 		btcoex_hw->wlanactive_gpio = ATH_WLANACTIVE_GPIO_9300;
@@ -307,6 +309,18 @@ static void ath9k_hw_btcoex_enable_mci(struct ath_hw *ah)
 	btcoex->enabled = true;
 }
 
+static void ath9k_hw_btcoex_disable_mci(struct ath_hw *ah)
+{
+	struct ath_btcoex_hw *btcoex_hw = &ah->btcoex_hw;
+	int i;
+
+	ath9k_hw_btcoex_bt_stomp(ah, ATH_BTCOEX_STOMP_NONE);
+
+	for (i = 0; i < AR9300_NUM_BT_WEIGHTS; i++)
+		REG_WRITE(ah, AR_MCI_COEX_WL_WEIGHTS(i),
+			  btcoex_hw->wlan_weight[i]);
+}
+
 void ath9k_hw_btcoex_enable(struct ath_hw *ah)
 {
 	struct ath_btcoex_hw *btcoex_hw = &ah->btcoex_hw;
@@ -318,17 +332,18 @@ void ath9k_hw_btcoex_enable(struct ath_hw *ah)
 		ath9k_hw_btcoex_enable_2wire(ah);
 		break;
 	case ATH_BTCOEX_CFG_3WIRE:
-		if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
-			ath9k_hw_btcoex_enable_mci(ah);
-			return;
-		}
 		ath9k_hw_btcoex_enable_3wire(ah);
 		break;
+	case ATH_BTCOEX_CFG_MCI:
+		ath9k_hw_btcoex_enable_mci(ah);
+		break;
 	}
 
-	REG_RMW(ah, AR_GPIO_PDPU,
-		(0x2 << (btcoex_hw->btactive_gpio * 2)),
-		(0x3 << (btcoex_hw->btactive_gpio * 2)));
+	if (ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_MCI) {
+		REG_RMW(ah, AR_GPIO_PDPU,
+			(0x2 << (btcoex_hw->btactive_gpio * 2)),
+			(0x3 << (btcoex_hw->btactive_gpio * 2)));
+	}
 
 	ah->btcoex_hw.enabled = true;
 }
@@ -340,13 +355,12 @@ void ath9k_hw_btcoex_disable(struct ath_hw *ah)
 	int i;
 
 	btcoex_hw->enabled = false;
-	if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
-		ath9k_hw_btcoex_bt_stomp(ah, ATH_BTCOEX_STOMP_NONE);
-		for (i = 0; i < AR9300_NUM_BT_WEIGHTS; i++)
-			REG_WRITE(ah, AR_MCI_COEX_WL_WEIGHTS(i),
-				  btcoex_hw->wlan_weight[i]);
+
+	if (ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_MCI) {
+		ath9k_hw_btcoex_disable_mci(ah);
 		return;
 	}
+
 	ath9k_hw_set_gpio(ah, btcoex_hw->wlanactive_gpio, 0);
 
 	ath9k_hw_cfg_output(ah, btcoex_hw->wlanactive_gpio,
diff --git a/drivers/net/wireless/ath/ath9k/btcoex.h b/drivers/net/wireless/ath/ath9k/btcoex.h
index 6de26ea..5fe62ff 100644
--- a/drivers/net/wireless/ath/ath9k/btcoex.h
+++ b/drivers/net/wireless/ath/ath9k/btcoex.h
@@ -58,6 +58,7 @@ enum ath_btcoex_scheme {
 	ATH_BTCOEX_CFG_NONE,
 	ATH_BTCOEX_CFG_2WIRE,
 	ATH_BTCOEX_CFG_3WIRE,
+	ATH_BTCOEX_CFG_MCI,
 };
 
 struct ath9k_hw_mci {
diff --git a/drivers/net/wireless/ath/ath9k/gpio.c b/drivers/net/wireless/ath/ath9k/gpio.c
index 257ffce..b4a0612 100644
--- a/drivers/net/wireless/ath/ath9k/gpio.c
+++ b/drivers/net/wireless/ath/ath9k/gpio.c
@@ -280,6 +280,7 @@ static void ath_init_btcoex_timer(struct ath_softc *sc)
 		btcoex->btcoex_period / 100;
 	btcoex->btscan_no_stomp = (100 - ATH_BTCOEX_BTSCAN_DUTY_CYCLE) *
 				   btcoex->btcoex_period / 100;
+	btcoex->bt_stomp_type = ATH_BTCOEX_STOMP_LOW;
 
 	setup_timer(&btcoex->period_timer, ath_btcoex_period_timer,
 			(unsigned long) sc);
@@ -408,19 +409,19 @@ int ath9k_init_btcoex(struct ath_softc *sc)
 	case ATH_BTCOEX_CFG_3WIRE:
 		ath9k_hw_btcoex_init_3wire(sc->sc_ah);
 		ath_init_btcoex_timer(sc);
-
 		txq = sc->tx.txq_map[IEEE80211_AC_BE];
 		ath9k_hw_init_btcoex_hw(sc->sc_ah, txq->axq_qnum);
-		sc->btcoex.bt_stomp_type = ATH_BTCOEX_STOMP_LOW;
-		if (ath9k_hw_mci_is_enabled(ah)) {
-			sc->btcoex.duty_cycle = ATH_BTCOEX_DEF_DUTY_CYCLE;
-			INIT_LIST_HEAD(&sc->btcoex.mci.info);
-			ath9k_hw_btcoex_init_mci(ah);
-
-			r = ath_mci_setup(sc);
-			if (r)
-				return r;
-		}
+		break;
+	case ATH_BTCOEX_CFG_MCI:
+		ath_init_btcoex_timer(sc);
+
+		sc->btcoex.duty_cycle = ATH_BTCOEX_DEF_DUTY_CYCLE;
+		INIT_LIST_HEAD(&sc->btcoex.mci.info);
+		ath9k_hw_btcoex_init_mci(ah);
+
+		r = ath_mci_setup(sc);
+		if (r)
+			return r;
 
 		break;
 	default:
-- 
2.3.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/6] ath9k: Fix wlan-active gpio for the AR9003 family
  2015-03-01  6:23 [PATCH 0/6] ath9k patches Sujith Manoharan
                   ` (2 preceding siblings ...)
  2015-03-01  6:23 ` [PATCH 3/6] ath9k: Fix MCI scheme initialization Sujith Manoharan
@ 2015-03-01  6:23 ` Sujith Manoharan
  2015-03-01  6:23 ` [PATCH 5/6] ath9k: Handle timers for MCI Sujith Manoharan
  2015-03-01  6:23 ` [PATCH 6/6] ath9k: Fix issues in the main btcoex timer Sujith Manoharan
  5 siblings, 0 replies; 8+ messages in thread
From: Sujith Manoharan @ 2015-03-01  6:23 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

When disabling BTCOEX, clearing the wlanactive gpio line
is required only for pre-AR9003 cards.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/btcoex.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath9k/btcoex.c b/drivers/net/wireless/ath/ath9k/btcoex.c
index 78e892e..5a084d9 100644
--- a/drivers/net/wireless/ath/ath9k/btcoex.c
+++ b/drivers/net/wireless/ath/ath9k/btcoex.c
@@ -361,7 +361,8 @@ void ath9k_hw_btcoex_disable(struct ath_hw *ah)
 		return;
 	}
 
-	ath9k_hw_set_gpio(ah, btcoex_hw->wlanactive_gpio, 0);
+	if (!AR_SREV_9300_20_OR_LATER(ah))
+		ath9k_hw_set_gpio(ah, btcoex_hw->wlanactive_gpio, 0);
 
 	ath9k_hw_cfg_output(ah, btcoex_hw->wlanactive_gpio,
 			AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
-- 
2.3.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 5/6] ath9k: Handle timers for MCI
  2015-03-01  6:23 [PATCH 0/6] ath9k patches Sujith Manoharan
                   ` (3 preceding siblings ...)
  2015-03-01  6:23 ` [PATCH 4/6] ath9k: Fix wlan-active gpio for the AR9003 family Sujith Manoharan
@ 2015-03-01  6:23 ` Sujith Manoharan
  2015-03-01  6:23 ` [PATCH 6/6] ath9k: Fix issues in the main btcoex timer Sujith Manoharan
  5 siblings, 0 replies; 8+ messages in thread
From: Sujith Manoharan @ 2015-03-01  6:23 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

Make sure that the btcoex timers are started/stopped
properly for both 3-wire and MCI schemes.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/gpio.c | 52 +++++++++++++++++++++--------------
 1 file changed, 31 insertions(+), 21 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/gpio.c b/drivers/net/wireless/ath/ath9k/gpio.c
index b4a0612..6e22d80 100644
--- a/drivers/net/wireless/ath/ath9k/gpio.c
+++ b/drivers/net/wireless/ath/ath9k/gpio.c
@@ -298,6 +298,10 @@ void ath9k_btcoex_timer_resume(struct ath_softc *sc)
 	struct ath_btcoex *btcoex = &sc->btcoex;
 	struct ath_hw *ah = sc->sc_ah;
 
+	if (ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_3WIRE &&
+	    ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_MCI)
+		return;
+
 	ath_dbg(ath9k_hw_common(ah), BTCOEX, "Starting btcoex timers\n");
 
 	/* make sure duty cycle timer is also stopped when resuming */
@@ -311,13 +315,19 @@ void ath9k_btcoex_timer_resume(struct ath_softc *sc)
 	mod_timer(&btcoex->period_timer, jiffies);
 }
 
-
 /*
  * Pause btcoex timer and bt duty cycle timer
  */
 void ath9k_btcoex_timer_pause(struct ath_softc *sc)
 {
 	struct ath_btcoex *btcoex = &sc->btcoex;
+	struct ath_hw *ah = sc->sc_ah;
+
+	if (ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_3WIRE &&
+	    ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_MCI)
+		return;
+
+	ath_dbg(ath9k_hw_common(ah), BTCOEX, "Stopping btcoex timers\n");
 
 	del_timer_sync(&btcoex->period_timer);
 	del_timer_sync(&btcoex->no_stomp_timer);
@@ -355,33 +365,33 @@ void ath9k_start_btcoex(struct ath_softc *sc)
 {
 	struct ath_hw *ah = sc->sc_ah;
 
-	if ((ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) &&
-	    !ah->btcoex_hw.enabled) {
-		if (!(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_MCI))
-			ath9k_hw_btcoex_set_weight(ah, AR_BT_COEX_WGHT,
-						   AR_STOMP_LOW_WLAN_WGHT, 0);
-		else
-			ath9k_hw_btcoex_set_weight(ah, 0, 0,
-						   ATH_BTCOEX_STOMP_NONE);
-		ath9k_hw_btcoex_enable(ah);
+	if (ah->btcoex_hw.enabled ||
+	    ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_NONE)
+		return;
 
-		if (ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_3WIRE)
-			ath9k_btcoex_timer_resume(sc);
-	}
+	if (!(ah->caps.hw_caps & ATH9K_HW_CAP_MCI))
+		ath9k_hw_btcoex_set_weight(ah, AR_BT_COEX_WGHT,
+					   AR_STOMP_LOW_WLAN_WGHT, 0);
+	else
+		ath9k_hw_btcoex_set_weight(ah, 0, 0,
+					   ATH_BTCOEX_STOMP_NONE);
+	ath9k_hw_btcoex_enable(ah);
+	ath9k_btcoex_timer_resume(sc);
 }
 
 void ath9k_stop_btcoex(struct ath_softc *sc)
 {
 	struct ath_hw *ah = sc->sc_ah;
 
-	if (ah->btcoex_hw.enabled &&
-	    ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) {
-		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) || AR_SREV_9565(ah))
-			ath_mci_flush_profile(&sc->btcoex.mci);
-	}
+	if (!ah->btcoex_hw.enabled ||
+	    ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_NONE)
+		return;
+
+	ath9k_btcoex_timer_pause(sc);
+	ath9k_hw_btcoex_disable(ah);
+
+	if (ah->caps.hw_caps & ATH9K_HW_CAP_MCI)
+		ath_mci_flush_profile(&sc->btcoex.mci);
 }
 
 void ath9k_deinit_btcoex(struct ath_softc *sc)
-- 
2.3.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 6/6] ath9k: Fix issues in the main btcoex timer
  2015-03-01  6:23 [PATCH 0/6] ath9k patches Sujith Manoharan
                   ` (4 preceding siblings ...)
  2015-03-01  6:23 ` [PATCH 5/6] ath9k: Handle timers for MCI Sujith Manoharan
@ 2015-03-01  6:23 ` Sujith Manoharan
  5 siblings, 0 replies; 8+ messages in thread
From: Sujith Manoharan @ 2015-03-01  6:23 UTC (permalink / raw)
  To: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

* ath9k_mci_update_rssi() is required only for
  cards that use MCI scheme. Make sure that it
  is not called for 3-wire cards.

* Call ath9k_ps_wakeup() early since register
  accesses are made in ath9k_mci_update_rssi().

* Fix usage of btcoex_lock to handle no_stomp_timer.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/gpio.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/gpio.c b/drivers/net/wireless/ath/ath9k/gpio.c
index 6e22d80..86d46c1 100644
--- a/drivers/net/wireless/ath/ath9k/gpio.c
+++ b/drivers/net/wireless/ath/ath9k/gpio.c
@@ -202,17 +202,16 @@ static void ath_btcoex_period_timer(unsigned long data)
 	}
 	spin_unlock_irqrestore(&sc->sc_pm_lock, flags);
 
-	ath9k_mci_update_rssi(sc);
-
 	ath9k_ps_wakeup(sc);
+	spin_lock_bh(&btcoex->btcoex_lock);
 
-	if (!(ah->caps.hw_caps & ATH9K_HW_CAP_MCI))
-		ath_detect_bt_priority(sc);
-
-	if (ah->caps.hw_caps & ATH9K_HW_CAP_MCI)
+	if (ah->caps.hw_caps & ATH9K_HW_CAP_MCI) {
+		ath9k_mci_update_rssi(sc);
 		ath_mci_ftp_adjust(sc);
+	}
 
-	spin_lock_bh(&btcoex->btcoex_lock);
+	if (!(ah->caps.hw_caps & ATH9K_HW_CAP_MCI))
+		ath_detect_bt_priority(sc);
 
 	stomp_type = btcoex->bt_stomp_type;
 	timer_period = btcoex->btcoex_no_stomp;
@@ -252,9 +251,6 @@ static void ath_btcoex_no_stomp_timer(unsigned long arg)
 	struct ath_softc *sc = (struct ath_softc *)arg;
 	struct ath_hw *ah = sc->sc_ah;
 	struct ath_btcoex *btcoex = &sc->btcoex;
-	struct ath_common *common = ath9k_hw_common(ah);
-
-	ath_dbg(common, BTCOEX, "no stomp timer running\n");
 
 	ath9k_ps_wakeup(sc);
 	spin_lock_bh(&btcoex->btcoex_lock);
-- 
2.3.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [1/6] ath9k: Remove useless return value check
  2015-03-01  6:23 ` [PATCH 1/6] ath9k: Remove useless return value check Sujith Manoharan
@ 2015-03-03 13:47   ` Kalle Valo
  0 siblings, 0 replies; 8+ messages in thread
From: Kalle Valo @ 2015-03-03 13:47 UTC (permalink / raw)
  To: Sujith Manoharan; +Cc: linux-wireless


> From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
> 
> ath_init_btcoex_timer() always returns 0, so
> checking for error conditions is not required.
> 
> Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>

Thanks, 6 patches applied to wireless-drivers-next.git:

44b9b56e5095 ath9k: Remove useless return value check
510baea1e46d ath9k: Initialize MCI state correctly
e1ff147d878a ath9k: Fix MCI scheme initialization
30b818989100 ath9k: Fix wlan-active gpio for the AR9003 family
c7266e99b1b0 ath9k: Handle timers for MCI
6e6dd08dd320 ath9k: Fix issues in the main btcoex timer

Kalle Valo

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-03-03 13:47 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-01  6:23 [PATCH 0/6] ath9k patches Sujith Manoharan
2015-03-01  6:23 ` [PATCH 1/6] ath9k: Remove useless return value check Sujith Manoharan
2015-03-03 13:47   ` [1/6] " Kalle Valo
2015-03-01  6:23 ` [PATCH 2/6] ath9k: Initialize MCI state correctly Sujith Manoharan
2015-03-01  6:23 ` [PATCH 3/6] ath9k: Fix MCI scheme initialization Sujith Manoharan
2015-03-01  6:23 ` [PATCH 4/6] ath9k: Fix wlan-active gpio for the AR9003 family Sujith Manoharan
2015-03-01  6:23 ` [PATCH 5/6] ath9k: Handle timers for MCI Sujith Manoharan
2015-03-01  6:23 ` [PATCH 6/6] ath9k: Fix issues in the main btcoex timer Sujith Manoharan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.