diff options
author | Steven Luo <steven@steven676.net> | 2009-04-12 05:57:54 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-04-22 16:54:45 -0400 |
commit | a89bff9a78b2bf51e21a961b473b5be94b22f12e (patch) | |
tree | cff6dc88649dfa5aa72d92b149387ff66f06fb30 /drivers/net/wireless/ath/ath9k/hw.c | |
parent | 2d1f96dd90a20c25243cc3b13e9f21d72f00aba0 (diff) |
ath9k: reset after PCI FATAL/PERR interrupts
ath9k_hw_getisr() doesn't appear to set anything in the status mask for
PCI FATAL or PERR interrupts (AR_INTR_SYNC_HOST1_FATAL/PERR), which
the open-source HAL seems to do. This means that the card isn't reset
after these interrupts.
This patch seems to fix a problem where the wireless drops out with an
"ath9k: received PCI FATAL interrupt" in dmesg after some time; the
hardware is an AR5416 in an ASUS WL-500W running 2.6.28.7 (OpenWRT) and
compat-wireless 2009-03-31.
Signed-off-by: Steven Luo <steven@steven676.net>
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 | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 24299e65fdcf..9cb85b0e9851 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c | |||
@@ -2976,6 +2976,7 @@ bool ath9k_hw_getisr(struct ath_hw *ah, enum ath9k_int *masked) | |||
2976 | DPRINTF(ah->ah_sc, ATH_DBG_ANY, | 2976 | DPRINTF(ah->ah_sc, ATH_DBG_ANY, |
2977 | "received PCI PERR interrupt\n"); | 2977 | "received PCI PERR interrupt\n"); |
2978 | } | 2978 | } |
2979 | *masked |= ATH9K_INT_FATAL; | ||
2979 | } | 2980 | } |
2980 | if (sync_cause & AR_INTR_SYNC_RADM_CPL_TIMEOUT) { | 2981 | if (sync_cause & AR_INTR_SYNC_RADM_CPL_TIMEOUT) { |
2981 | DPRINTF(ah->ah_sc, ATH_DBG_INTERRUPT, | 2982 | DPRINTF(ah->ah_sc, ATH_DBG_INTERRUPT, |