diff options
author | Rajkumar Manoharan <rmanohar@qca.qualcomm.com> | 2012-06-11 02:49:32 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-06-13 14:35:53 -0400 |
commit | 3863495b86d8ee8e7e70a328de5b88d555d7305a (patch) | |
tree | 1d74ca3fbb7774bed9cee07c4162b1ef2e52459b /drivers/net/wireless/ath/ath9k/hw.c | |
parent | 9dd9b0dc1de8031a31b3eaebc6a9c0ab60612026 (diff) |
ath9k_hw: check GPM HW write pointer before chip reset
Both "MAC Warm Reset" and "MCI Reset Rx" will reset GPM HW write_ptr.
We should check software cached write_ptr against HW write_ptr before
reset. Otherwise the pending DMA data will be lost.
Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/hw.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 6d893335f42b..8412128b842a 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c | |||
@@ -1348,6 +1348,9 @@ static bool ath9k_hw_set_reset(struct ath_hw *ah, int type) | |||
1348 | } | 1348 | } |
1349 | } | 1349 | } |
1350 | 1350 | ||
1351 | if (ath9k_hw_mci_is_enabled(ah)) | ||
1352 | ar9003_mci_state(ah, MCI_STATE_CHECK_GPM_OFFSET, NULL); | ||
1353 | |||
1351 | REG_WRITE(ah, AR_RTC_RC, rst_flags); | 1354 | REG_WRITE(ah, AR_RTC_RC, rst_flags); |
1352 | 1355 | ||
1353 | REGWRITE_BUFFER_FLUSH(ah); | 1356 | REGWRITE_BUFFER_FLUSH(ah); |