diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_mci.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_mci.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/btcoex.h | 1 |
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); | |||
1203 | u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type) | 1203 | u32 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 | ||
93 | struct ath_btcoex_hw { | 94 | struct ath_btcoex_hw { |