From a0e27ef25976baa74c1902fb8006d23d78ccc6a4 Mon Sep 17 00:00:00 2001 From: Alexander Egorenkov Date: Fri, 26 Feb 2010 21:16:51 +0100 Subject: [PATCH] Added more Tx/Rx statistic counters --- rt2860.c | 31 ++++++++++++++++++++++++++++--- rt2860_softc.h | 4 ++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/rt2860.c b/rt2860.c index ad0dbdf..872bf40 100644 --- a/rt2860.c +++ b/rt2860.c @@ -4869,7 +4869,7 @@ static void rt2860_update_stats(struct rt2860_softc *sc) struct ieee80211com *ic; struct ieee80211_node *ni; uint32_t stacnt[3]; - int beacons, noretryok, retryok, failed; + int beacons, noretryok, retryok, failed, underflows, zerolen; uint16_t associd; uint8_t wcid; @@ -4895,11 +4895,13 @@ static void rt2860_update_stats(struct rt2860_softc *sc) noretryok = stacnt[1] & 0xffff; retryok = stacnt[1] >> 16; failed = stacnt[0] & 0xffff; + underflows = stacnt[2] >> 16; + zerolen = stacnt[2] & 0xffff; RT2860_DPRINTF(sc, RT2860_DEBUG_STATS, - "%s: update statistic: beacons=%d, noretryok=%d, retryok=%d, failed=%d\n", + "%s: update statistic: beacons=%d, noretryok=%d, retryok=%d, failed=%d, underflows=%d, zerolen=%d\n", device_get_nameunit(sc->dev), - beacons, noretryok, retryok, failed); + beacons, noretryok, retryok, failed, underflows, zerolen); ifp->if_oerrors += failed; @@ -4907,6 +4909,8 @@ static void rt2860_update_stats(struct rt2860_softc *sc) sc->tx_noretryok += noretryok; sc->tx_retryok += retryok; sc->tx_failed += failed; + sc->tx_underflows += underflows; + sc->tx_zerolen += zerolen; if (ic->ic_opmode == IEEE80211_M_STA && ic->ic_state == IEEE80211_S_RUN) { @@ -5135,6 +5139,11 @@ static void rt2860_update_raw_counters(struct rt2860_softc *sc) sc->rx_dup_packets += tmp & 0xffff; sc->rx_fifo_overflows += tmp >> 16; + + tmp = rt2860_io_mac_read(sc, RT2860_REG_TXRX_MPDU_DEN_CNT); + + sc->tx_mpdu_zero_density += tmp & 0xffff; + sc->rx_mpdu_zero_density += tmp >> 16; } /* @@ -5866,6 +5875,14 @@ static void rt2860_sysctl_attach(struct rt2860_softc *sc) "Tx failed"); SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(stats), OID_AUTO, + "tx_underflows", CTLFLAG_RD, &sc->tx_underflows, 0, + "Tx underflows"); + + SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(stats), OID_AUTO, + "tx_zerolen", CTLFLAG_RD, &sc->tx_zerolen, 0, + "Tx zero length"); + + SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(stats), OID_AUTO, "tx_nonagg", CTLFLAG_RD, &sc->tx_nonagg, 0, "Tx non-aggregated"); @@ -5878,6 +5895,10 @@ static void rt2860_sysctl_attach(struct rt2860_softc *sc) "Tx A-MPDU"); SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(stats), OID_AUTO, + "tx_mpdu_zero_density", CTLFLAG_RD, &sc->tx_mpdu_zero_density, 0, + "Tx MPDU with zero density"); + + SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(stats), OID_AUTO, "rx_packets", CTLFLAG_RD, &sc->rx_packets, 0, "Rx packets"); @@ -5886,6 +5907,10 @@ static void rt2860_sysctl_attach(struct rt2860_softc *sc) "Rx A-MPDU"); SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(stats), OID_AUTO, + "rx_mpdu_zero_density", CTLFLAG_RD, &sc->rx_mpdu_zero_density, 0, + "Rx MPDU with zero density"); + + SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(stats), OID_AUTO, "rx_amsdu", CTLFLAG_RD, &sc->rx_amsdu, 0, "Rx A-MSDU"); diff --git a/rt2860_softc.h b/rt2860_softc.h index b640b33..bd9fb87 100644 --- a/rt2860_softc.h +++ b/rt2860_softc.h @@ -358,12 +358,16 @@ struct rt2860_softc unsigned long tx_noretryok; unsigned long tx_retryok; unsigned long tx_failed; + unsigned long tx_underflows; + unsigned long tx_zerolen; unsigned long tx_nonagg; unsigned long tx_agg; unsigned long tx_ampdu; + unsigned long tx_mpdu_zero_density; unsigned long rx_packets; unsigned long rx_ampdu; + unsigned long rx_mpdu_zero_density; unsigned long rx_amsdu; unsigned long rx_crc_errors; unsigned long rx_phy_errors; -- 2.11.4.GIT