OSDN Git Service

ath9k_hw: check if the chip failed to wake up
authorFelix Fietkau <nbd@nbd.name>
Thu, 2 Feb 2017 09:14:51 +0000 (10:14 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 29 Apr 2018 05:50:02 +0000 (07:50 +0200)
commit a34d0a0da1abae46a5f6ebd06fb0ec484ca099d9 upstream.

In an RFC patch, Sven Eckelmann and Simon Wunderlich reported:

"QCA 802.11n chips (especially AR9330/AR9340) sometimes end up in a
state in which a read of AR_CFG always returns 0xdeadbeef.
This should not happen when when the power_mode of the device is
ATH9K_PM_AWAKE."

Include the check for the default register state in the existing MAC
hang check.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Cc: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/ath/ath9k/hw.c

index 41382f8..4435c7b 100644 (file)
@@ -1595,6 +1595,10 @@ bool ath9k_hw_check_alive(struct ath_hw *ah)
        int count = 50;
        u32 reg, last_val;
 
+       /* Check if chip failed to wake up */
+       if (REG_READ(ah, AR_CFG) == 0xdeadbeef)
+               return false;
+
        if (AR_SREV_9300(ah))
                return !ath9k_hw_detect_mac_hang(ah);