ath5k: Print rx/tx bytes in debugfs
authorBen Greear <greearb@candelatech.com>
Fri, 1 Oct 2010 17:54:04 +0000 (10:54 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 5 Oct 2010 17:35:25 +0000 (13:35 -0400)
This adds counters for tx and rx bytes, including any
errored packets as well as all wireless headers.

Signed-off-by: Ben Greear <greearb@candelatech.com>
Acked-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/base.c
drivers/net/wireless/ath/ath5k/base.h
drivers/net/wireless/ath/ath5k/debug.c

index 2ed327a8d690765ab810a1b691c1ef3d2de71de1..d914a31cb0b6d9d932b0dc3e9790a6a6e476bcae 100644 (file)
@@ -1433,6 +1433,7 @@ static bool
 ath5k_receive_frame_ok(struct ath5k_softc *sc, struct ath5k_rx_status *rs)
 {
        sc->stats.rx_all_count++;
+       sc->stats.rx_bytes_count += rs->rs_datalen;
 
        if (unlikely(rs->rs_status)) {
                if (rs->rs_status & AR5K_RXERR_CRC)
@@ -1611,6 +1612,7 @@ ath5k_tx_frame_completed(struct ath5k_softc *sc, struct sk_buff *skb,
        int i;
 
        sc->stats.tx_all_count++;
+       sc->stats.tx_bytes_count += skb->len;
        info = IEEE80211_SKB_CB(skb);
 
        ieee80211_tx_info_clear_status(info);
index b9f6d13b7675760757c8eafdea89d95ec14cd251..9a79773cdc2a43f59ccbddf2a53f51172e06d8a6 100644 (file)
@@ -121,6 +121,13 @@ struct ath5k_statistics {
        /* frame errors */
        unsigned int rx_all_count;      /* all RX frames, including errors */
        unsigned int tx_all_count;      /* all TX frames, including errors */
+       unsigned int rx_bytes_count;    /* all RX bytes, including errored pks
+                                        * and the MAC headers for each packet
+                                        */
+       unsigned int tx_bytes_count;    /* all TX bytes, including errored pkts
+                                        * and the MAC headers and padding for
+                                        * each packet.
+                                        */
        unsigned int rxerr_crc;
        unsigned int rxerr_phy;
        unsigned int rxerr_phy_code[32];
index 0f06e849031400405673c37b07835e95165a3af2..c2d549f871f936075ed64587690273c5717edd10 100644 (file)
@@ -587,6 +587,8 @@ static ssize_t read_file_frameerrors(struct file *file, char __user *user_buf,
                                st->rxerr_jumbo*100/st->rx_all_count : 0);
        len += snprintf(buf+len, sizeof(buf)-len, "[RX all\t%d]\n",
                        st->rx_all_count);
+       len += snprintf(buf+len, sizeof(buf)-len, "RX-all-bytes\t%d\n",
+                       st->rx_bytes_count);
 
        len += snprintf(buf+len, sizeof(buf)-len,
                        "\nTX\n---------------------\n");
@@ -604,6 +606,8 @@ static ssize_t read_file_frameerrors(struct file *file, char __user *user_buf,
                                st->txerr_filt*100/st->tx_all_count : 0);
        len += snprintf(buf+len, sizeof(buf)-len, "[TX all\t%d]\n",
                        st->tx_all_count);
+       len += snprintf(buf+len, sizeof(buf)-len, "TX-all-bytes\t%d\n",
+                       st->tx_bytes_count);
 
        if (len > sizeof(buf))
                len = sizeof(buf);