diff options
author | Felix Fietkau <nbd@openwrt.org> | 2014-06-11 11:28:58 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2014-06-11 11:28:58 +0000 |
commit | d373178835f665896f5c4534ecb89ae47911690b (patch) | |
tree | adae9727f7e74ac8b34419aacbe4db4a3fde9780 /package/kernel/mac80211/patches/564-ath9k_cleanup_reset_debug.patch | |
parent | 3ab9651cb0e2464e165bb159603edf6e9eb5277e (diff) | |
download | upstream-d373178835f665896f5c4534ecb89ae47911690b.tar.gz upstream-d373178835f665896f5c4534ecb89ae47911690b.tar.bz2 upstream-d373178835f665896f5c4534ecb89ae47911690b.zip |
ath9k: do a chip reset if noise floor calibration fails, should improve stability
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 41113
Diffstat (limited to 'package/kernel/mac80211/patches/564-ath9k_cleanup_reset_debug.patch')
-rw-r--r-- | package/kernel/mac80211/patches/564-ath9k_cleanup_reset_debug.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/564-ath9k_cleanup_reset_debug.patch b/package/kernel/mac80211/patches/564-ath9k_cleanup_reset_debug.patch new file mode 100644 index 0000000000..c636c5aa27 --- /dev/null +++ b/package/kernel/mac80211/patches/564-ath9k_cleanup_reset_debug.patch @@ -0,0 +1,60 @@ +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -846,36 +846,30 @@ static ssize_t read_file_reset(struct fi + size_t count, loff_t *ppos) + { + struct ath_softc *sc = file->private_data; ++ static const char * const reset_cause[__RESET_TYPE_MAX] = { ++ [RESET_TYPE_BB_HANG] = "Baseband Hang", ++ [RESET_TYPE_BB_WATCHDOG] = "Baseband Watchdog", ++ [RESET_TYPE_FATAL_INT] = "Fatal HW Error", ++ [RESET_TYPE_TX_ERROR] = "TX HW error", ++ [RESET_TYPE_TX_GTT] = "Transmit timeout", ++ [RESET_TYPE_TX_HANG] = "TX Path Hang", ++ [RESET_TYPE_PLL_HANG] = "PLL RX Hang", ++ [RESET_TYPE_MAC_HANG] = "MAC Hang", ++ [RESET_TYPE_BEACON_STUCK] = "Stuck Beacon", ++ [RESET_TYPE_MCI] = "MCI Reset", ++ }; + char buf[512]; + unsigned int len = 0; ++ int i; + +- len += scnprintf(buf + len, sizeof(buf) - len, +- "%17s: %2d\n", "Baseband Hang", +- sc->debug.stats.reset[RESET_TYPE_BB_HANG]); +- len += scnprintf(buf + len, sizeof(buf) - len, +- "%17s: %2d\n", "Baseband Watchdog", +- sc->debug.stats.reset[RESET_TYPE_BB_WATCHDOG]); +- len += scnprintf(buf + len, sizeof(buf) - len, +- "%17s: %2d\n", "Fatal HW Error", +- sc->debug.stats.reset[RESET_TYPE_FATAL_INT]); +- len += scnprintf(buf + len, sizeof(buf) - len, +- "%17s: %2d\n", "TX HW error", +- sc->debug.stats.reset[RESET_TYPE_TX_ERROR]); +- len += scnprintf(buf + len, sizeof(buf) - len, +- "%17s: %2d\n", "TX Path Hang", +- sc->debug.stats.reset[RESET_TYPE_TX_HANG]); +- len += scnprintf(buf + len, sizeof(buf) - len, +- "%17s: %2d\n", "PLL RX Hang", +- sc->debug.stats.reset[RESET_TYPE_PLL_HANG]); +- len += scnprintf(buf + len, sizeof(buf) - len, +- "%17s: %2d\n", "MAC Hang", +- sc->debug.stats.reset[RESET_TYPE_MAC_HANG]); +- len += scnprintf(buf + len, sizeof(buf) - len, +- "%17s: %2d\n", "Stuck Beacon", +- sc->debug.stats.reset[RESET_TYPE_BEACON_STUCK]); +- len += scnprintf(buf + len, sizeof(buf) - len, +- "%17s: %2d\n", "MCI Reset", +- sc->debug.stats.reset[RESET_TYPE_MCI]); ++ for (i = 0; i < ARRAY_SIZE(reset_cause); i++) { ++ if (!reset_cause[i]) ++ continue; ++ ++ len += scnprintf(buf + len, sizeof(buf) - len, ++ "%17s: %2d\n", reset_cause[i], ++ sc->debug.stats.reset[i]); ++ } + + if (len > sizeof(buf)) + len = sizeof(buf); |