Module Name: src Committed By: thorpej Date: Wed Jan 29 14:17:27 UTC 2020
Modified Files: src/sys/dev/ic: elink3.c elinkxl.c Log Message: Adopt <net/if_stats.h>. To generate a diff of this commit: cvs rdiff -u -r1.149 -r1.150 src/sys/dev/ic/elink3.c cvs rdiff -u -r1.133 -r1.134 src/sys/dev/ic/elinkxl.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ic/elink3.c diff -u src/sys/dev/ic/elink3.c:1.149 src/sys/dev/ic/elink3.c:1.150 --- src/sys/dev/ic/elink3.c:1.149 Wed May 29 06:17:28 2019 +++ src/sys/dev/ic/elink3.c Wed Jan 29 14:17:27 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: elink3.c,v 1.149 2019/05/29 06:17:28 msaitoh Exp $ */ +/* $NetBSD: elink3.c,v 1.150 2020/01/29 14:17:27 thorpej Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: elink3.c,v 1.149 2019/05/29 06:17:28 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: elink3.c,v 1.150 2020/01/29 14:17:27 thorpej Exp $"); #include "opt_inet.h" @@ -1123,7 +1123,7 @@ startagain: */ if (len + pad > ETHER_MAX_LEN) { /* packet is obviously too large: toss it */ - ++ifp->if_oerrors; + if_statinc(ifp, if_oerrors); IFQ_DEQUEUE(&ifp->if_snd, m0); m_freem(m0); goto readcheck; @@ -1229,7 +1229,7 @@ startagain: splx(sh); - ++ifp->if_opackets; + if_statinc(ifp, if_opackets); readcheck: if ((bus_space_read_2(iot, ioh, ep_w1_reg(sc, ELINK_W1_RX_STATUS)) & @@ -1318,6 +1318,7 @@ eptxstat(struct ep_softc *sc) { bus_space_tag_t iot = sc->sc_iot; bus_space_handle_t ioh = sc->sc_ioh; + struct ifnet *ifp = &sc->sc_ethercom.ec_if; int i; /* @@ -1330,13 +1331,13 @@ eptxstat(struct ep_softc *sc) 0x0); if (i & TXS_JABBER) { - ++sc->sc_ethercom.ec_if.if_oerrors; + if_statinc(ifp, if_oerrors); if (sc->sc_ethercom.ec_if.if_flags & IFF_DEBUG) printf("%s: jabber (%x)\n", device_xname(sc->sc_dev), i); epreset(sc); } else if (i & TXS_UNDERRUN) { - ++sc->sc_ethercom.ec_if.if_oerrors; + if_statinc(ifp, if_oerrors); if (sc->sc_ethercom.ec_if.if_flags & IFF_DEBUG) printf("%s: fifo underrun (%x) @%d\n", device_xname(sc->sc_dev), i, @@ -1347,7 +1348,7 @@ eptxstat(struct ep_softc *sc) sc->tx_succ_ok = 0; epreset(sc); } else if (i & TXS_MAX_COLLISION) { - ++sc->sc_ethercom.ec_if.if_collisions; + if_statinc(ifp, if_collisions); bus_space_write_2(iot, ioh, ELINK_COMMAND, TX_ENABLE); sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE; } else @@ -1472,7 +1473,7 @@ again: return; if (len & ERR_RX) { - ++ifp->if_ierrors; + if_statinc(ifp, if_ierrors); goto abort; } @@ -1481,7 +1482,7 @@ again: /* Pull packet off interface. */ m = epget(sc, len); if (m == 0) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); goto abort; } @@ -1713,7 +1714,7 @@ epwatchdog(struct ifnet *ifp) struct ep_softc *sc = ifp->if_softc; log(LOG_ERR, "%s: device timeout\n", device_xname(sc->sc_dev)); - ++sc->sc_ethercom.ec_if.if_oerrors; + if_statinc(ifp, if_oerrors); epreset(sc); } Index: src/sys/dev/ic/elinkxl.c diff -u src/sys/dev/ic/elinkxl.c:1.133 src/sys/dev/ic/elinkxl.c:1.134 --- src/sys/dev/ic/elinkxl.c:1.133 Wed Oct 30 07:26:28 2019 +++ src/sys/dev/ic/elinkxl.c Wed Jan 29 14:17:27 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: elinkxl.c,v 1.133 2019/10/30 07:26:28 msaitoh Exp $ */ +/* $NetBSD: elinkxl.c,v 1.134 2020/01/29 14:17:27 thorpej Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: elinkxl.c,v 1.133 2019/10/30 07:26:28 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: elinkxl.c,v 1.134 2020/01/29 14:17:27 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -86,7 +86,6 @@ void ex_read(struct ex_softc *); void ex_reset(struct ex_softc *); void ex_set_mc(struct ex_softc *); void ex_getstats(struct ex_softc *); -void ex_printstats(struct ex_softc *); void ex_tick(void *); static int ex_eeprom_busy(struct ex_softc *); @@ -814,7 +813,7 @@ ex_txstat(struct ex_softc *sc) /* Resetting takes a while and we will do more than wait. */ ifp->if_flags &= ~IFF_OACTIVE; - ++sc->sc_ethercom.ec_if.if_oerrors; + if_statinc(ifp, if_oerrors); aprint_error_dev(sc->sc_dev, "%s%s%s", (err & TXS_UNDERRUN) ? " transmit underrun" : "", (err & TXS_JABBER) ? " jabber" : "", @@ -834,7 +833,7 @@ ex_txstat(struct ex_softc *sc) } aprint_error("\n"); if (err & TXS_MAX_COLLISION) - ++sc->sc_ethercom.ec_if.if_collisions; + if_statinc(ifp, if_collisions); /* Wait for TX_RESET to finish. */ ex_waitcmd(sc); @@ -843,7 +842,7 @@ ex_txstat(struct ex_softc *sc) ex_setup_tx(sc); } else { if (err & TXS_MAX_COLLISION) - ++sc->sc_ethercom.ec_if.if_collisions; + if_statinc(ifp, if_collisions); sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE; } @@ -1367,7 +1366,7 @@ ex_intr(void *arg) ((sc->sc_ethercom.ec_capenable & ETHERCAP_VLAN_MTU) ? EX_UPD_ERR_VLAN : EX_UPD_ERR)) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); m_freem(m); goto rcvloop; } @@ -1485,18 +1484,26 @@ ex_getstats(struct ex_softc *sc) struct ifnet *ifp = &sc->sc_ethercom.ec_if; uint8_t upperok; + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + GO_WINDOW(6); upperok = bus_space_read_1(iot, ioh, UPPER_FRAMES_OK); - ifp->if_opackets += bus_space_read_1(iot, ioh, TX_FRAMES_OK); - ifp->if_opackets += (upperok & 0x30) << 4; - ifp->if_ierrors += bus_space_read_1(iot, ioh, RX_OVERRUNS); - ifp->if_collisions += bus_space_read_1(iot, ioh, TX_COLLISIONS); + if_statadd_ref(nsr, if_opackets, + bus_space_read_1(iot, ioh, TX_FRAMES_OK)); + if_statadd_ref(nsr, if_opackets, (upperok & 0x30) << 4); + if_statadd_ref(nsr, if_ierrors, + bus_space_read_1(iot, ioh, RX_OVERRUNS)); + if_statadd_ref(nsr, if_collisions, + bus_space_read_1(iot, ioh, TX_COLLISIONS)); /* * There seems to be no way to get the exact number of collisions, * this is the number that occurred at the very least. */ - ifp->if_collisions += 2 * bus_space_read_1(iot, ioh, - TX_AFTER_X_COLLISIONS); + if_statadd_ref(nsr, if_collisions, + 2 * bus_space_read_1(iot, ioh, TX_AFTER_X_COLLISIONS)); + + IF_STAT_PUTREF(ifp); + /* * Interface byte counts are counted by ether_input() and * ether_output(), so don't accumulate them here. Just @@ -1520,21 +1527,6 @@ ex_getstats(struct ex_softc *sc) } void -ex_printstats(struct ex_softc *sc) -{ - struct ifnet *ifp = &sc->sc_ethercom.ec_if; - - ex_getstats(sc); - printf("in %llu out %llu ierror %llu oerror %llu ibytes %llu obytes " - "%llu\n", (unsigned long long)ifp->if_ipackets, - (unsigned long long)ifp->if_opackets, - (unsigned long long)ifp->if_ierrors, - (unsigned long long)ifp->if_oerrors, - (unsigned long long)ifp->if_ibytes, - (unsigned long long)ifp->if_obytes); -} - -void ex_tick(void *arg) { struct ex_softc *sc = arg; @@ -1580,7 +1572,7 @@ ex_watchdog(struct ifnet *ifp) struct ex_softc *sc = ifp->if_softc; log(LOG_ERR, "%s: device timeout\n", device_xname(sc->sc_dev)); - ++sc->sc_ethercom.ec_if.if_oerrors; + if_statinc(ifp, if_oerrors); ex_reset(sc); ex_init(ifp);