Commit 99c15bf5 authored by Ben Greear's avatar Ben Greear Committed by John W. Linville

ath9k: Report total tx/rx bytes and packets in debugfs.

Includes pkts/bytes that may have had errors, and includes
wireless headers when counting bytes.
Signed-off-by: default avatarBen Greear <greearb@candelatech.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent b72acddb
...@@ -701,6 +701,8 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf, ...@@ -701,6 +701,8 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
PR("DESC CFG Error: ", desc_cfg_err); PR("DESC CFG Error: ", desc_cfg_err);
PR("DATA Underrun: ", data_underrun); PR("DATA Underrun: ", data_underrun);
PR("DELIM Underrun: ", delim_underrun); PR("DELIM Underrun: ", delim_underrun);
PR("TX-Pkts-All: ", tx_pkts_all);
PR("TX-Bytes-All: ", tx_bytes_all);
if (len > size) if (len > size)
len = size; len = size;
...@@ -714,6 +716,9 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf, ...@@ -714,6 +716,9 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
void ath_debug_stat_tx(struct ath_softc *sc, struct ath_txq *txq, void ath_debug_stat_tx(struct ath_softc *sc, struct ath_txq *txq,
struct ath_buf *bf, struct ath_tx_status *ts) struct ath_buf *bf, struct ath_tx_status *ts)
{ {
TX_STAT_INC(txq->axq_qnum, tx_pkts_all);
sc->debug.stats.txstats[txq->axq_qnum].tx_bytes_all += bf->bf_mpdu->len;
if (bf_isampdu(bf)) { if (bf_isampdu(bf)) {
if (bf_isxretried(bf)) if (bf_isxretried(bf))
TX_STAT_INC(txq->axq_qnum, a_xretries); TX_STAT_INC(txq->axq_qnum, a_xretries);
...@@ -808,6 +813,13 @@ static ssize_t read_file_recv(struct file *file, char __user *user_buf, ...@@ -808,6 +813,13 @@ static ssize_t read_file_recv(struct file *file, char __user *user_buf,
PHY_ERR("HT-LENGTH", ATH9K_PHYERR_HT_LENGTH_ILLEGAL); PHY_ERR("HT-LENGTH", ATH9K_PHYERR_HT_LENGTH_ILLEGAL);
PHY_ERR("HT-RATE", ATH9K_PHYERR_HT_RATE_ILLEGAL); PHY_ERR("HT-RATE", ATH9K_PHYERR_HT_RATE_ILLEGAL);
len += snprintf(buf + len, size - len,
"%18s : %10u\n", "RX-Pkts-All",
sc->debug.stats.rxstats.rx_pkts_all);
len += snprintf(buf + len, size - len,
"%18s : %10u\n", "RX-Bytes-All",
sc->debug.stats.rxstats.rx_bytes_all);
if (len > size) if (len > size)
len = size; len = size;
...@@ -826,6 +838,9 @@ void ath_debug_stat_rx(struct ath_softc *sc, struct ath_rx_status *rs) ...@@ -826,6 +838,9 @@ void ath_debug_stat_rx(struct ath_softc *sc, struct ath_rx_status *rs)
u32 phyerr; u32 phyerr;
RX_STAT_INC(rx_pkts_all);
sc->debug.stats.rxstats.rx_bytes_all += rs->rs_datalen;
if (rs->rs_status & ATH9K_RXERR_CRC) if (rs->rs_status & ATH9K_RXERR_CRC)
RX_STAT_INC(crc_err); RX_STAT_INC(crc_err);
if (rs->rs_status & ATH9K_RXERR_DECRYPT) if (rs->rs_status & ATH9K_RXERR_DECRYPT)
......
...@@ -89,6 +89,10 @@ struct ath_rc_stats { ...@@ -89,6 +89,10 @@ struct ath_rc_stats {
/** /**
* struct ath_tx_stats - Statistics about TX * struct ath_tx_stats - Statistics about TX
* @tx_pkts_all: No. of total frames transmitted, including ones that
may have had errors.
* @tx_bytes_all: No. of total bytes transmitted, including ones that
may have had errors.
* @queued: Total MPDUs (non-aggr) queued * @queued: Total MPDUs (non-aggr) queued
* @completed: Total MPDUs (non-aggr) completed * @completed: Total MPDUs (non-aggr) completed
* @a_aggr: Total no. of aggregates queued * @a_aggr: Total no. of aggregates queued
...@@ -107,6 +111,8 @@ struct ath_rc_stats { ...@@ -107,6 +111,8 @@ struct ath_rc_stats {
* @delim_urn: TX delimiter underrun errors * @delim_urn: TX delimiter underrun errors
*/ */
struct ath_tx_stats { struct ath_tx_stats {
u32 tx_pkts_all;
u32 tx_bytes_all;
u32 queued; u32 queued;
u32 completed; u32 completed;
u32 a_aggr; u32 a_aggr;
...@@ -124,6 +130,10 @@ struct ath_tx_stats { ...@@ -124,6 +130,10 @@ struct ath_tx_stats {
/** /**
* struct ath_rx_stats - RX Statistics * struct ath_rx_stats - RX Statistics
* @rx_pkts_all: No. of total frames received, including ones that
may have had errors.
* @rx_bytes_all: No. of total bytes received, including ones that
may have had errors.
* @crc_err: No. of frames with incorrect CRC value * @crc_err: No. of frames with incorrect CRC value
* @decrypt_crc_err: No. of frames whose CRC check failed after * @decrypt_crc_err: No. of frames whose CRC check failed after
decryption process completed decryption process completed
...@@ -136,6 +146,8 @@ struct ath_tx_stats { ...@@ -136,6 +146,8 @@ struct ath_tx_stats {
* @phy_err_stats: Individual PHY error statistics * @phy_err_stats: Individual PHY error statistics
*/ */
struct ath_rx_stats { struct ath_rx_stats {
u32 rx_pkts_all;
u32 rx_bytes_all;
u32 crc_err; u32 crc_err;
u32 decrypt_crc_err; u32 decrypt_crc_err;
u32 phy_err; u32 phy_err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment