ath9k: Add TSFOOR interrupt stats in debug info
authorMohammed Shafi Shajakhan <mshajakhan@atheros.com>
Fri, 22 Apr 2011 11:57:01 +0000 (17:27 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 25 Apr 2011 18:50:20 +0000 (14:50 -0400)
This helped the developers to fix an issue of chip not entering network
sleep during idle state, previously this was only available as a debug
message

Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/debug.c
drivers/net/wireless/ath/ath9k/debug.h

index 34f191ec8e8cab2b3a043dcf1640fb69984a35d7..bad1a87249b6011898027cce7300cea8358dbc49 100644 (file)
@@ -326,6 +326,8 @@ void ath_debug_stat_interrupt(struct ath_softc *sc, enum ath9k_int status)
                sc->debug.stats.istats.dtimsync++;
        if (status & ATH9K_INT_DTIM)
                sc->debug.stats.istats.dtim++;
+       if (status & ATH9K_INT_TSFOOR)
+               sc->debug.stats.istats.tsfoor++;
 }
 
 static ssize_t read_file_interrupt(struct file *file, char __user *user_buf,
@@ -379,9 +381,12 @@ static ssize_t read_file_interrupt(struct file *file, char __user *user_buf,
                "%8s: %10u\n", "DTIMSYNC", sc->debug.stats.istats.dtimsync);
        len += snprintf(buf + len, sizeof(buf) - len,
                "%8s: %10u\n", "DTIM", sc->debug.stats.istats.dtim);
+       len += snprintf(buf + len, sizeof(buf) - len,
+               "%8s: %10u\n", "TSFOOR", sc->debug.stats.istats.tsfoor);
        len += snprintf(buf + len, sizeof(buf) - len,
                "%8s: %10u\n", "TOTAL", sc->debug.stats.istats.total);
 
+
        if (len > sizeof(buf))
                len = sizeof(buf);
 
index 1f9f8eada465d88331e46a334aeaa31c7da05e55..5488a324cc100b142ed1871a9ce493f18b893543 100644 (file)
@@ -54,6 +54,9 @@ struct ath_buf;
  * @dtimsync: DTIM sync lossage
  * @dtim: RX Beacon with DTIM
  * @bb_watchdog: Baseband watchdog
+ * @tsfoor: TSF out of range, indicates that the corrected TSF received
+ * from a beacon differs from the PCU's internal TSF by more than a
+ * (programmable) threshold
  */
 struct ath_interrupt_stats {
        u32 total;
@@ -78,6 +81,7 @@ struct ath_interrupt_stats {
        u32 dtimsync;
        u32 dtim;
        u32 bb_watchdog;
+       u32 tsfoor;
 };
 
 /**