| From 9604276337484a875e03d29f1dddeb5ee961c6cb Mon Sep 17 00:00:00 2001 |
| From: Senthil Balasubramanian <senthilkumar@atheros.com> |
| Date: Wed, 22 Dec 2010 21:14:20 +0530 |
| Subject: [PATCH] ath9k_hw: Fix incorrect macversion and macrev checks |
| |
| commit ac45c12dfb3f727a5a7a3332ed9c11b4a5ab287e upstream. |
| |
| There are few places where we are checking for macversion and revsions |
| before RTC is powered ON. However we are reading the macversion and |
| revisions only after RTC is powered ON and so both macversion and |
| revisions are actully zero and this leads to incorrect srev checks |
| |
| Incorrect srev checks can cause registers to be configured wrongly and can |
| cause unexpected behavior. Fixing this seems to address the ASPM issue that |
| we have observed. The laptop becomes very slow and hangs mostly with ASPM L1 |
| enabled without this fix. |
| |
| fix this by reading the macversion and revisisons even before we start |
| using them. There is no reason why should we delay reading this info |
| until RTC is powered on as this is just a register information. |
| |
| Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c |
| index 1774a59..28d3d51 100644 |
| --- a/drivers/net/wireless/ath/ath9k/hw.c |
| +++ b/drivers/net/wireless/ath/ath9k/hw.c |
| @@ -850,6 +850,8 @@ int ath9k_hw_init(struct ath_hw *ah) |
| ath9k_hw_init_defaults(ah); |
| ath9k_hw_init_config(ah); |
| |
| + ath9k_hw_read_revisions(ah); |
| + |
| if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_POWER_ON)) { |
| ath_print(common, ATH_DBG_FATAL, |
| "Couldn't reset chip\n"); |
| @@ -1770,8 +1772,6 @@ static bool ath9k_hw_set_reset_power_on(struct ath_hw *ah) |
| return false; |
| } |
| |
| - ath9k_hw_read_revisions(ah); |
| - |
| return ath9k_hw_set_reset(ah, ATH9K_RESET_WARM); |
| } |
| |
| -- |
| 1.7.4.4 |
| |