ath9k: Add support for get_stats callback
authorMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Sat, 20 Aug 2011 11:51:42 +0000 (17:21 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 24 Aug 2011 18:57:14 +0000 (14:57 -0400)
this useful for debugging and to keep track of success/failure of
frames such as ACK, RTS and FCS error count in a noisy environment

Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/main.c

index 113c1df26b362c6e41d768d47a2fa3364b946be2..5ac4f3f2ad60e0200bcb49f3e464330d50ea37b5 100644 (file)
@@ -2403,6 +2403,20 @@ skip:
        return sc->beacon.tx_last;
 }
 
+static int ath9k_get_stats(struct ieee80211_hw *hw,
+                          struct ieee80211_low_level_stats *stats)
+{
+       struct ath_softc *sc = hw->priv;
+       struct ath_hw *ah = sc->sc_ah;
+       struct ath9k_mib_stats *mib_stats = &ah->ah_mibStats;
+
+       stats->dot11ACKFailureCount = mib_stats->ackrcv_bad;
+       stats->dot11RTSFailureCount = mib_stats->rts_bad;
+       stats->dot11FCSErrorCount = mib_stats->fcs_bad;
+       stats->dot11RTSSuccessCount = mib_stats->rts_good;
+       return 0;
+}
+
 struct ieee80211_ops ath9k_ops = {
        .tx                 = ath9k_tx,
        .start              = ath9k_start,
@@ -2427,5 +2441,6 @@ struct ieee80211_ops ath9k_ops = {
        .set_coverage_class = ath9k_set_coverage_class,
        .flush              = ath9k_flush,
        .tx_frames_pending  = ath9k_tx_frames_pending,
-       .tx_last_beacon = ath9k_tx_last_beacon,
+       .tx_last_beacon     = ath9k_tx_last_beacon,
+       .get_stats          = ath9k_get_stats,
 };