From ff97a647359e3878008ff8ed18346df4f97106ef Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Thu, 8 Jul 2010 15:20:57 +0000 Subject: [PATCH] Add TX-path aligned/unaligned stats for if_arge. --- sys/mips/atheros/if_arge.c | 12 +++++++++++- sys/mips/atheros/if_argevar.h | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/sys/mips/atheros/if_arge.c b/sys/mips/atheros/if_arge.c index c0afc8f3a08..807173d92b1 100644 --- a/sys/mips/atheros/if_arge.c +++ b/sys/mips/atheros/if_arge.c @@ -209,6 +209,14 @@ arge_attach_sysctl(device_t dev) SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "debug", CTLFLAG_RW, &sc->arge_debug, 0, "arge interface debugging flags"); + + SYSCTL_ADD_UINT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "tx_pkts_aligned", CTLFLAG_RW, &sc->stats.tx_pkts_aligned, 0, + "number of TX aligned packets"); + + SYSCTL_ADD_UINT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "tx_pkts_unaligned", CTLFLAG_RW, &sc->stats.tx_pkts_unaligned, 0, + "number of TX unaligned packets"); } static int @@ -876,13 +884,15 @@ arge_encap(struct arge_softc *sc, struct mbuf **m_head) */ m = *m_head; if (! arge_mbuf_chain_is_tx_aligned(m)) { + sc->stats.tx_pkts_unaligned++; m = m_defrag(*m_head, M_DONTWAIT); if (m == NULL) { *m_head = NULL; return (ENOBUFS); } *m_head = m; - } + } else + sc->stats.tx_pkts_aligned++; prod = sc->arge_cdata.arge_tx_prod; txd = &sc->arge_cdata.arge_txdesc[prod]; diff --git a/sys/mips/atheros/if_argevar.h b/sys/mips/atheros/if_argevar.h index 39a0aa7870c..df1c34dd018 100644 --- a/sys/mips/atheros/if_argevar.h +++ b/sys/mips/atheros/if_argevar.h @@ -155,6 +155,10 @@ struct arge_softc { uint32_t arge_pll_reg_shift; int arge_if_flags; uint32_t arge_debug; + struct { + uint32_t tx_pkts_unaligned; + uint32_t tx_pkts_aligned; + } stats; }; #endif /* __IF_ARGEVAR_H__ */ -- 2.45.2