aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajkumar Manoharan <rmanohar@qca.qualcomm.com>2012-10-25 07:46:52 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-10-29 15:30:32 -0400
commite75d4ed6a9565fcccd579316b0fd933d2191f513 (patch)
tree3f6c72a7123505785bf963e1306dca277ec0f8ef
parent844648423dcf33fed96a4eb65f783f867efbe267 (diff)
ath9k_hw: Fix concurrent tx on lower tx power
Whenever WLAN receives scheduling msg from BT, it reduces tx power based on RSSI level. And then BT starts simultaneous transmission along with WLAN. Sometimes HW MAC compares tx power that is used prior to power reduction which is causing BT transmission to defer. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_mci.c5
-rw-r--r--drivers/net/wireless/ath/ath9k/reg.h2
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.c b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
index b04fa4622822..42b4412d6794 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
@@ -881,9 +881,12 @@ int ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
881 REG_RMW_FIELD(ah, AR_BTCOEX_CTRL3, 881 REG_RMW_FIELD(ah, AR_BTCOEX_CTRL3,
882 AR_BTCOEX_CTRL3_CONT_INFO_TIMEOUT, 20); 882 AR_BTCOEX_CTRL3_CONT_INFO_TIMEOUT, 20);
883 883
884 REG_RMW_FIELD(ah, AR_BTCOEX_CTRL2, AR_BTCOEX_CTRL2_RX_DEWEIGHT, 1); 884 REG_RMW_FIELD(ah, AR_BTCOEX_CTRL2, AR_BTCOEX_CTRL2_RX_DEWEIGHT, 0);
885 REG_RMW_FIELD(ah, AR_PCU_MISC, AR_PCU_BT_ANT_PREVENT_RX, 0); 885 REG_RMW_FIELD(ah, AR_PCU_MISC, AR_PCU_BT_ANT_PREVENT_RX, 0);
886 886
887 /* Set the time out to 3.125ms (5 BT slots) */
888 REG_RMW_FIELD(ah, AR_BTCOEX_WL_LNA, AR_BTCOEX_WL_LNA_TIMEOUT, 0x3D090);
889
887 /* concurrent tx priority */ 890 /* concurrent tx priority */
888 if (mci->config & ATH_MCI_CONFIG_CONCUR_TX) { 891 if (mci->config & ATH_MCI_CONFIG_CONCUR_TX) {
889 REG_RMW_FIELD(ah, AR_BTCOEX_CTRL2, 892 REG_RMW_FIELD(ah, AR_BTCOEX_CTRL2,
diff --git a/drivers/net/wireless/ath/ath9k/reg.h b/drivers/net/wireless/ath/ath9k/reg.h
index e9dec138b913..ad3c82c09177 100644
--- a/drivers/net/wireless/ath/ath9k/reg.h
+++ b/drivers/net/wireless/ath/ath9k/reg.h
@@ -2311,6 +2311,8 @@ enum {
2311#define AR_BTCOEX_MAX_TXPWR(_x) (0x18c0 + ((_x) << 2)) 2311#define AR_BTCOEX_MAX_TXPWR(_x) (0x18c0 + ((_x) << 2))
2312#define AR_BTCOEX_WL_LNA 0x1940 2312#define AR_BTCOEX_WL_LNA 0x1940
2313#define AR_BTCOEX_RFGAIN_CTRL 0x1944 2313#define AR_BTCOEX_RFGAIN_CTRL 0x1944
2314#define AR_BTCOEX_WL_LNA_TIMEOUT 0x003FFFFF
2315#define AR_BTCOEX_WL_LNA_TIMEOUT_S 0
2314 2316
2315#define AR_BTCOEX_CTRL2 0x1948 2317#define AR_BTCOEX_CTRL2 0x1948
2316#define AR_BTCOEX_CTRL2_TXPWR_THRESH 0x0007F800 2318#define AR_BTCOEX_CTRL2_TXPWR_THRESH 0x0007F800