aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_mci.c10
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_mci.h1
-rw-r--r--drivers/net/wireless/ath/ath9k/btcoex.h1
3 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.c b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
index 87d9c348e598..b04fa4622822 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
@@ -1203,7 +1203,7 @@ EXPORT_SYMBOL(ar9003_mci_cleanup);
1203u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type) 1203u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type)
1204{ 1204{
1205 struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci; 1205 struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
1206 u32 value = 0; 1206 u32 value = 0, tsf;
1207 u8 query_type; 1207 u8 query_type;
1208 1208
1209 switch (state_type) { 1209 switch (state_type) {
@@ -1261,6 +1261,14 @@ u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type)
1261 ar9003_mci_send_coex_bt_status_query(ah, true, query_type); 1261 ar9003_mci_send_coex_bt_status_query(ah, true, query_type);
1262 break; 1262 break;
1263 case MCI_STATE_RECOVER_RX: 1263 case MCI_STATE_RECOVER_RX:
1264 tsf = ath9k_hw_gettsf32(ah);
1265 if ((tsf - mci->last_recovery) <= MCI_RECOVERY_DUR_TSF) {
1266 ath_dbg(ath9k_hw_common(ah), MCI,
1267 "(MCI) ignore Rx recovery\n");
1268 break;
1269 }
1270 ath_dbg(ath9k_hw_common(ah), MCI, "(MCI) RECOVER RX\n");
1271 mci->last_recovery = tsf;
1264 ar9003_mci_prep_interface(ah); 1272 ar9003_mci_prep_interface(ah);
1265 mci->query_bt = true; 1273 mci->query_bt = true;
1266 mci->need_flush_btinfo = true; 1274 mci->need_flush_btinfo = true;
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.h b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
index 0910310ae834..3e51f54b0122 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
@@ -18,6 +18,7 @@
18#define AR9003_MCI_H 18#define AR9003_MCI_H
19 19
20#define MCI_FLAG_DISABLE_TIMESTAMP 0x00000001 /* Disable time stamp */ 20#define MCI_FLAG_DISABLE_TIMESTAMP 0x00000001 /* Disable time stamp */
21#define MCI_RECOVERY_DUR_TSF (100 * 1000) /* 100 ms */
21 22
22/* Default remote BT device MCI COEX version */ 23/* Default remote BT device MCI COEX version */
23#define MCI_GPM_COEX_MAJOR_VERSION_DEFAULT 3 24#define MCI_GPM_COEX_MAJOR_VERSION_DEFAULT 3
diff --git a/drivers/net/wireless/ath/ath9k/btcoex.h b/drivers/net/wireless/ath/ath9k/btcoex.h
index 94e921147e4c..2f84ab273d0c 100644
--- a/drivers/net/wireless/ath/ath9k/btcoex.h
+++ b/drivers/net/wireless/ath/ath9k/btcoex.h
@@ -88,6 +88,7 @@ struct ath9k_hw_mci {
88 u8 bt_state; 88 u8 bt_state;
89 u8 stomp_ftp; 89 u8 stomp_ftp;
90 bool concur_tx; 90 bool concur_tx;
91 u32 last_recovery;
91}; 92};
92 93
93struct ath_btcoex_hw { 94struct ath_btcoex_hw {