Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d31a36a6 authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville
Browse files

ath9k: reduce baseband hang detection false positive rate



Check if the baseband state remains stable, and add a small delay
between register reads.

Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 558ff225
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -1534,7 +1534,7 @@ EXPORT_SYMBOL(ath9k_hw_check_nav);
bool ath9k_hw_check_alive(struct ath_hw *ah)
{
	int count = 50;
	u32 reg;
	u32 reg, last_val;

	if (AR_SREV_9300(ah))
		return !ath9k_hw_detect_mac_hang(ah);
@@ -1542,9 +1542,13 @@ bool ath9k_hw_check_alive(struct ath_hw *ah)
	if (AR_SREV_9285_12_OR_LATER(ah))
		return true;

	last_val = REG_READ(ah, AR_OBS_BUS_1);
	do {
		reg = REG_READ(ah, AR_OBS_BUS_1);
		if (reg != last_val)
			return true;

		last_val = reg;
		if ((reg & 0x7E7FFFEF) == 0x00702400)
			continue;

@@ -1556,6 +1560,8 @@ bool ath9k_hw_check_alive(struct ath_hw *ah)
		default:
			return true;
		}

		udelay(1);
	} while (count-- > 0);

	return false;