Module Name: src Committed By: thorpej Date: Wed Jan 29 14:47:08 UTC 2020
Modified Files: src/sys/dev/ic: gem.c hd64570.c hme.c Log Message: Adopt <net/if_stats.h>. To generate a diff of this commit: cvs rdiff -u -r1.124 -r1.125 src/sys/dev/ic/gem.c cvs rdiff -u -r1.54 -r1.55 src/sys/dev/ic/hd64570.c cvs rdiff -u -r1.105 -r1.106 src/sys/dev/ic/hme.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/gem.c diff -u src/sys/dev/ic/gem.c:1.124 src/sys/dev/ic/gem.c:1.125 --- src/sys/dev/ic/gem.c:1.124 Tue Dec 24 05:00:19 2019 +++ src/sys/dev/ic/gem.c Wed Jan 29 14:47:08 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: gem.c,v 1.124 2019/12/24 05:00:19 msaitoh Exp $ */ +/* $NetBSD: gem.c,v 1.125 2020/01/29 14:47:08 thorpej Exp $ */ /* * @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gem.c,v 1.124 2019/12/24 05:00:19 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gem.c,v 1.125 2020/01/29 14:47:08 thorpej Exp $"); #include "opt_inet.h" @@ -1642,15 +1642,17 @@ gem_tint(struct gem_softc *sc) int progress = 0; uint32_t v; + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + DPRINTF(sc, ("%s: gem_tint\n", device_xname(sc->sc_dev))); /* Unload collision counters ... */ v = bus_space_read_4(t, mac, GEM_MAC_EXCESS_COLL_CNT) + bus_space_read_4(t, mac, GEM_MAC_LATE_COLL_CNT); - ifp->if_collisions += v + + if_statadd_ref(nsr, if_collisions, v + bus_space_read_4(t, mac, GEM_MAC_NORM_COLL_CNT) + - bus_space_read_4(t, mac, GEM_MAC_FIRST_COLL_CNT); - ifp->if_oerrors += v; + bus_space_read_4(t, mac, GEM_MAC_FIRST_COLL_CNT)); + if_statadd_ref(nsr, if_oerrors, v); /* ... then clear the hardware counters. */ bus_space_write_4(t, mac, GEM_MAC_NORM_COLL_CNT, 0); @@ -1720,10 +1722,12 @@ gem_tint(struct gem_softc *sc) SIMPLEQ_INSERT_TAIL(&sc->sc_txfreeq, txs, txs_q); - ifp->if_opackets++; + if_statinc_ref(nsr, if_opackets); progress = 1; } + IF_STAT_PUTREF(ifp); + #if 0 DPRINTF(sc, ("gem_tint: GEM_TX_STATE_MACHINE %x " "GEM_TX_DATA_PTR %" PRIx64 "GEM_TX_COMPLETION %" PRIx32 "\n", @@ -1810,7 +1814,7 @@ gem_rint(struct gem_softc *sc) progress++; if (rxstat & GEM_RD_BAD_CRC) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); aprint_error_dev(sc->sc_dev, "receive error: CRC error\n"); GEM_INIT_RXDESC(sc, i); @@ -1840,7 +1844,7 @@ gem_rint(struct gem_softc *sc) m = rxs->rxs_mbuf; if (gem_add_rxbuf(sc, i) != 0) { GEM_COUNTER_INCR(sc, sc_ev_rxnobuf); - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); aprint_error_dev(sc->sc_dev, "receive error: RX no buffer space\n"); GEM_INIT_RXDESC(sc, i); @@ -1979,11 +1983,11 @@ swcsum: sc->sc_rxptr, bus_space_read_4(t, h, GEM_RX_COMPLETION))); /* Read error counters ... */ - ifp->if_ierrors += + if_statadd(ifp, if_ierrors, bus_space_read_4(t, h, GEM_MAC_RX_LEN_ERR_CNT) + bus_space_read_4(t, h, GEM_MAC_RX_ALIGN_ERR) + bus_space_read_4(t, h, GEM_MAC_RX_CRC_ERR_CNT) + - bus_space_read_4(t, h, GEM_MAC_RX_CODE_VIOL); + bus_space_read_4(t, h, GEM_MAC_RX_CODE_VIOL)); /* ... then clear the hardware counters. */ bus_space_write_4(t, h, GEM_MAC_RX_LEN_ERR_CNT, 0); @@ -2222,7 +2226,7 @@ gem_intr(void *v) * RX FIFO write and read pointers. */ if (rxstat & GEM_MAC_RX_OVERFLOW) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); aprint_error_dev(sc->sc_dev, "receive error: RX overflow sc->rxptr %d, complete %d\n", sc->sc_rxptr, bus_space_read_4(t, h, GEM_RX_COMPLETION)); sc->sc_rx_fifo_wr_ptr = @@ -2324,7 +2328,7 @@ gem_watchdog(struct ifnet *ifp) bus_space_read_4(sc->sc_bustag, sc->sc_h1, GEM_MAC_RX_CONFIG))); log(LOG_ERR, "%s: device timeout\n", device_xname(sc->sc_dev)); - ++ifp->if_oerrors; + if_statinc(ifp, if_oerrors); /* Try to get more packets going. */ gem_init(ifp); Index: src/sys/dev/ic/hd64570.c diff -u src/sys/dev/ic/hd64570.c:1.54 src/sys/dev/ic/hd64570.c:1.55 --- src/sys/dev/ic/hd64570.c:1.54 Tue Jun 26 06:48:00 2018 +++ src/sys/dev/ic/hd64570.c Wed Jan 29 14:47:08 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: hd64570.c,v 1.54 2018/06/26 06:48:00 msaitoh Exp $ */ +/* $NetBSD: hd64570.c,v 1.55 2020/01/29 14:47:08 thorpej Exp $ */ /* * Copyright (c) 1999 Christian E. Hopps @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: hd64570.c,v 1.54 2018/06/26 06:48:00 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hd64570.c,v 1.55 2020/01/29 14:47:08 thorpej Exp $"); #include "opt_inet.h" @@ -878,15 +878,18 @@ sca_output( IF_ENQUEUE(ifq, m); } else IFQ_ENQUEUE(&ifp->if_snd, m, error); + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); if (error != 0) { + if_statinc_ref(nsr, if_oerrors); + if_statinc_ref(nsr, if_collisions); + IF_STAT_PUTREF(ifp); splx(s); - ifp->if_oerrors++; - ifp->if_collisions++; return (error); } - ifp->if_obytes += len; + if_statadd_ref(nsr, if_obytes, len); if (mflags & M_MCAST) - ifp->if_omcasts++; + if_statinc_ref(nsr, if_omcasts); + IF_STAT_PUTREF(ifp); sca_start(ifp); splx(s); @@ -1113,7 +1116,7 @@ X sca_desc_write_buflen(sc, desc, len); sca_desc_write_stat(sc, desc, SCA_DESC_EOM); - ifp->if_opackets++; + if_statinc(ifp, if_opackets); /* * Pass packet to bpf if there is a listener. @@ -1490,7 +1493,7 @@ sca_frame_avail(sca_port_t *scp) * consider an error condition the end * of a frame */ - scp->sp_if.if_ierrors++; + if_statinc(&scp->sp_if, if_ierrors); toolong = 0; continue; } @@ -1509,7 +1512,7 @@ sca_frame_avail(sca_port_t *scp) * we currently don't deal with frames * larger than a single buffer (fixed MTU) */ - scp->sp_if.if_ierrors++; + if_statinc(&scp->sp_if, if_ierrors); toolong = 1; } SCA_DPRINTF(SCA_DEBUG_RX, ("RX: idx %d no EOM\n", @@ -1557,7 +1560,7 @@ sca_frame_process(sca_port_t *scp) * skip packets that are too short */ if (len < sizeof(struct hdlc_header)) { - scp->sp_if.if_ierrors++; + if_statinc(&scp->sp_if, if_ierrors); return; } @@ -1578,7 +1581,7 @@ sca_frame_process(sca_port_t *scp) bpf_mtap_softint(&scp->sp_if, m); - scp->sp_if.if_ipackets++; + if_statinc(&scp->sp_if, if_ipackets); hdlc = mtod(m, struct hdlc_header *); switch (ntohs(hdlc->h_proto)) { @@ -1610,7 +1613,7 @@ sca_frame_process(sca_port_t *scp) SCA_DPRINTF(SCA_DEBUG_CISCO, ("short CISCO packet %d, wanted %d\n", len, CISCO_PKT_LEN)); - scp->sp_if.if_ierrors++; + if_statinc(&scp->sp_if, if_ierrors); goto dropit; } @@ -1627,12 +1630,12 @@ sca_frame_process(sca_port_t *scp) switch (ntohl(cisco->type)) { case CISCO_ADDR_REQ: printf("Got CISCO addr_req, ignoring\n"); - scp->sp_if.if_ierrors++; + if_statinc(&scp->sp_if, if_ierrors); goto dropit; case CISCO_ADDR_REPLY: printf("Got CISCO addr_reply, ignoring\n"); - scp->sp_if.if_ierrors++; + if_statinc(&scp->sp_if, if_ierrors); goto dropit; case CISCO_KEEPALIVE_REQ: @@ -1677,7 +1680,7 @@ sca_frame_process(sca_port_t *scp) ("Unknown CISCO keepalive protocol 0x%04x\n", ntohl(cisco->type))); - scp->sp_if.if_noproto++; + if_statinc(&scp->sp_if, if_noproto); goto dropit; } return; @@ -1685,14 +1688,14 @@ sca_frame_process(sca_port_t *scp) SCA_DPRINTF(SCA_DEBUG_RX, ("Unknown/unexpected ethertype 0x%04x\n", ntohs(hdlc->h_proto))); - scp->sp_if.if_noproto++; + if_statinc(&scp->sp_if, if_noproto); goto dropit; } /* Queue the packet */ if (__predict_true(pktq)) { if (__predict_false(!pktq_enqueue(pktq, m, 0))) { - scp->sp_if.if_iqdrops++; + if_statinc(&scp->sp_if, if_iqdrops); goto dropit; } return; @@ -1702,7 +1705,7 @@ sca_frame_process(sca_port_t *scp) schednetisr(isr); } else { IF_DROP(ifq); - scp->sp_if.if_iqdrops++; + if_statinc(&scp->sp_if, if_iqdrops); goto dropit; } return; Index: src/sys/dev/ic/hme.c diff -u src/sys/dev/ic/hme.c:1.105 src/sys/dev/ic/hme.c:1.106 --- src/sys/dev/ic/hme.c:1.105 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/hme.c Wed Jan 29 14:47:08 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: hme.c,v 1.105 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: hme.c,v 1.106 2020/01/29 14:47:08 thorpej Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: hme.c,v 1.105 2019/05/28 07:41:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hme.c,v 1.106 2020/01/29 14:47:08 thorpej Exp $"); /* #define HMEDEBUG */ @@ -862,14 +862,14 @@ hme_read(struct hme_softc *sc, int ix, u printf("%s: invalid packet size %d; dropping\n", device_xname(sc->sc_dev), len); #endif - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); return; } /* Pull packet off interface. */ m = hme_get(sc, ix, flags); if (m == 0) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); return; } @@ -976,15 +976,17 @@ hme_tint(struct hme_softc *sc) bus_space_handle_t mac = sc->sc_mac; unsigned int ri, txflags; + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + /* * Unload collision counters */ - ifp->if_collisions += + if_statadd_ref(nsr, if_collisions, bus_space_read_4(t, mac, HME_MACI_NCCNT) + - bus_space_read_4(t, mac, HME_MACI_FCCNT); - ifp->if_oerrors += + bus_space_read_4(t, mac, HME_MACI_FCCNT)); + if_statadd_ref(nsr, if_oerrors, bus_space_read_4(t, mac, HME_MACI_EXCNT) + - bus_space_read_4(t, mac, HME_MACI_LTCNT); + bus_space_read_4(t, mac, HME_MACI_LTCNT)); /* * then clear the hardware counters. @@ -1007,7 +1009,7 @@ hme_tint(struct hme_softc *sc) break; ifp->if_flags &= ~IFF_OACTIVE; - ifp->if_opackets++; + if_statinc_ref(nsr, if_opackets); if (++ri == sc->sc_rb.rb_ntbuf) ri = 0; @@ -1015,6 +1017,8 @@ hme_tint(struct hme_softc *sc) --sc->sc_rb.rb_td_nbusy; } + IF_STAT_PUTREF(ifp); + /* Update ring */ sc->sc_rb.rb_tdtail = ri; @@ -1067,11 +1071,11 @@ hme_rint(struct hme_softc *sc) sc->sc_rb.rb_rdtail = ri; /* Read error counters ... */ - ifp->if_ierrors += + if_statadd(ifp, if_ierrors, bus_space_read_4(t, mac, HME_MACI_STAT_LCNT) + bus_space_read_4(t, mac, HME_MACI_STAT_ACNT) + bus_space_read_4(t, mac, HME_MACI_STAT_CCNT) + - bus_space_read_4(t, mac, HME_MACI_STAT_CVCNT); + bus_space_read_4(t, mac, HME_MACI_STAT_CVCNT)); /* ... then clear the hardware counters. */ bus_space_write_4(t, mac, HME_MACI_STAT_LCNT, 0); @@ -1100,14 +1104,16 @@ hme_eint(struct hme_softc *sc, u_int sta } /* Receive error counters rolled over */ + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); if (status & HME_SEB_STAT_ACNTEXP) - ifp->if_ierrors += 0xff; + if_statadd_ref(nsr, if_ierrors, 0xff); if (status & HME_SEB_STAT_CCNTEXP) - ifp->if_ierrors += 0xff; + if_statadd_ref(nsr, if_ierrors, 0xff); if (status & HME_SEB_STAT_LCNTEXP) - ifp->if_ierrors += 0xff; + if_statadd_ref(nsr, if_ierrors, 0xff); if (status & HME_SEB_STAT_CVCNTEXP) - ifp->if_ierrors += 0xff; + if_statadd_ref(nsr, if_ierrors, 0xff); + IF_STAT_PUTREF(ifp); /* RXTERR locks up the interface, so do a reset */ if (status & HME_SEB_STAT_RXTERR) @@ -1151,7 +1157,7 @@ hme_watchdog(struct ifnet *ifp) struct hme_softc *sc = ifp->if_softc; log(LOG_ERR, "%s: device timeout\n", device_xname(sc->sc_dev)); - ++ifp->if_oerrors; + if_statinc(ifp, if_oerrors); hme_reset(sc); }