Module Name: src Committed By: thorpej Date: Thu Jan 30 05:24:53 UTC 2020
Modified Files: src/sys/dev/pci: if_cas.c if_dge.c if_ste.c if_stge.c if_tl.c if_vge.c if_vr.c Log Message: Adopt <net/if_stats.h>. To generate a diff of this commit: cvs rdiff -u -r1.37 -r1.38 src/sys/dev/pci/if_cas.c cvs rdiff -u -r1.56 -r1.57 src/sys/dev/pci/if_dge.c cvs rdiff -u -r1.58 -r1.59 src/sys/dev/pci/if_ste.c cvs rdiff -u -r1.77 -r1.78 src/sys/dev/pci/if_stge.c cvs rdiff -u -r1.118 -r1.119 src/sys/dev/pci/if_tl.c cvs rdiff -u -r1.78 -r1.79 src/sys/dev/pci/if_vge.c cvs rdiff -u -r1.131 -r1.132 src/sys/dev/pci/if_vr.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/pci/if_cas.c diff -u src/sys/dev/pci/if_cas.c:1.37 src/sys/dev/pci/if_cas.c:1.38 --- src/sys/dev/pci/if_cas.c:1.37 Thu Dec 26 17:51:08 2019 +++ src/sys/dev/pci/if_cas.c Thu Jan 30 05:24:53 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_cas.c,v 1.37 2019/12/26 17:51:08 msaitoh Exp $ */ +/* $NetBSD: if_cas.c,v 1.38 2020/01/30 05:24:53 thorpej Exp $ */ /* $OpenBSD: if_cas.c,v 1.29 2009/11/29 16:19:38 kettenis Exp $ */ /* @@ -44,7 +44,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_cas.c,v 1.37 2019/12/26 17:51:08 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_cas.c,v 1.38 2020/01/30 05:24:53 thorpej Exp $"); #ifndef _MODULE #include "opt_inet.h" @@ -842,20 +842,24 @@ cas_tick(void *arg) int s; uint32_t v; + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + /* unload collisions counters */ v = bus_space_read_4(t, mac, CAS_MAC_EXCESS_COLL_CNT) + bus_space_read_4(t, mac, CAS_MAC_LATE_COLL_CNT); - ifp->if_collisions += v + + if_statadd_ref(nsr, if_collisions, v + bus_space_read_4(t, mac, CAS_MAC_NORM_COLL_CNT) + - bus_space_read_4(t, mac, CAS_MAC_FIRST_COLL_CNT); - ifp->if_oerrors += v; + bus_space_read_4(t, mac, CAS_MAC_FIRST_COLL_CNT)); + if_statadd_ref(nsr, if_oerrors, v); /* read error counters */ - ifp->if_ierrors += + if_statadd_ref(nsr, if_ierrors, bus_space_read_4(t, mac, CAS_MAC_RX_LEN_ERR_CNT) + bus_space_read_4(t, mac, CAS_MAC_RX_ALIGN_ERR) + bus_space_read_4(t, mac, CAS_MAC_RX_CRC_ERR_CNT) + - bus_space_read_4(t, mac, CAS_MAC_RX_CODE_VIOL); + bus_space_read_4(t, mac, CAS_MAC_RX_CODE_VIOL)); + + IF_STAT_PUTREF(ifp); /* clear the hardware counters */ bus_space_write_4(t, mac, CAS_MAC_NORM_COLL_CNT, 0); @@ -1416,7 +1420,7 @@ cas_rint(struct cas_softc *sc) m->m_pkthdr.csum_flags = 0; if_percpuq_enqueue(ifp->if_percpuq, m); } else - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); } len = CAS_RC0_DATA_LEN(word[0]); @@ -1446,7 +1450,7 @@ cas_rint(struct cas_softc *sc) m->m_pkthdr.csum_flags = 0; if_percpuq_enqueue(ifp->if_percpuq, m); } else - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); } if (word[0] & CAS_RC0_SPLIT) @@ -1586,7 +1590,7 @@ cas_intr(void *v) * due to a silicon bug so handle them silently. */ if (rxstat & CAS_MAC_RX_OVERFLOW) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); cas_init(ifp); } #ifdef CAS_DEBUG @@ -1612,7 +1616,7 @@ cas_watchdog(struct ifnet *ifp) bus_space_read_4(sc->sc_memt, sc->sc_memh, CAS_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. */ cas_init(ifp); @@ -2131,7 +2135,7 @@ cas_tint(struct cas_softc *sc, uint32_t bus_dmamap_unload(sc->sc_dmatag, sd->sd_map); m_freem(sd->sd_mbuf); sd->sd_mbuf = NULL; - ifp->if_opackets++; + if_statinc(ifp, if_opackets); } sc->sc_tx_cnt--; if (++cons == CAS_NTXDESC) Index: src/sys/dev/pci/if_dge.c diff -u src/sys/dev/pci/if_dge.c:1.56 src/sys/dev/pci/if_dge.c:1.57 --- src/sys/dev/pci/if_dge.c:1.56 Sun Nov 10 21:16:36 2019 +++ src/sys/dev/pci/if_dge.c Thu Jan 30 05:24:53 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_dge.c,v 1.56 2019/11/10 21:16:36 chs Exp $ */ +/* $NetBSD: if_dge.c,v 1.57 2020/01/30 05:24:53 thorpej Exp $ */ /* * Copyright (c) 2004, SUNET, Swedish University Computer Network. @@ -80,7 +80,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_dge.c,v 1.56 2019/11/10 21:16:36 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_dge.c,v 1.57 2020/01/30 05:24:53 thorpej Exp $"); @@ -1425,7 +1425,7 @@ dge_watchdog(struct ifnet *ifp) printf("%s: device timeout (txfree %d txsfree %d txnext %d)\n", device_xname(sc->sc_dev), sc->sc_txfree, sc->sc_txsfree, sc->sc_txnext); - ifp->if_oerrors++; + if_statinc(ifp, if_oerrors); /* Reset the interface. */ (void) dge_init(ifp); @@ -1622,7 +1622,7 @@ dge_txintr(struct dge_softc *sc) device_xname(sc->sc_dev), i, txs->txs_firstdesc, txs->txs_lastdesc)); - ifp->if_opackets++; + if_statinc(ifp, if_opackets); sc->sc_txfree += txs->txs_ndesc; bus_dmamap_sync(sc->sc_dmat, txs->txs_dmamap, 0, txs->txs_dmamap->dm_mapsize, BUS_DMASYNC_POSTWRITE); @@ -1706,7 +1706,7 @@ dge_rxintr(struct dge_softc *sc) * Failed, throw away what we've done so * far, and discard the rest of the packet. */ - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); bus_dmamap_sync(sc->sc_dmat, rxs->rxs_dmamap, 0, rxs->rxs_dmamap->dm_mapsize, BUS_DMASYNC_PREREAD); DGE_INIT_RXDESC(sc, i); @@ -1761,7 +1761,7 @@ dge_rxintr(struct dge_softc *sc) */ if (errors & (RDESC_ERR_CE | RDESC_ERR_SE | RDESC_ERR_P | RDESC_ERR_RXE)) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); if (errors & RDESC_ERR_SE) printf("%s: symbol error\n", device_xname(sc->sc_dev)); Index: src/sys/dev/pci/if_ste.c diff -u src/sys/dev/pci/if_ste.c:1.58 src/sys/dev/pci/if_ste.c:1.59 --- src/sys/dev/pci/if_ste.c:1.58 Sat Nov 2 21:11:55 2019 +++ src/sys/dev/pci/if_ste.c Thu Jan 30 05:24:53 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ste.c,v 1.58 2019/11/02 21:11:55 tnn Exp $ */ +/* $NetBSD: if_ste.c,v 1.59 2020/01/30 05:24:53 thorpej Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ste.c,v 1.58 2019/11/02 21:11:55 tnn Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ste.c,v 1.59 2020/01/30 05:24:53 thorpej Exp $"); #include <sys/param.h> @@ -780,7 +780,7 @@ ste_watchdog(struct ifnet *ifp) struct ste_softc *sc = ifp->if_softc; printf("%s: device timeout\n", device_xname(sc->sc_dev)); - ifp->if_oerrors++; + if_statinc(ifp, if_oerrors); ste_txintr(sc); ste_rxintr(sc); @@ -1039,7 +1039,7 @@ ste_rxintr(struct ste_softc *sc) m = ds->ds_mbuf; if (ste_add_rxbuf(sc, i) != 0) { dropit: - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); STE_INIT_RXDESC(sc, i); bus_dmamap_sync(sc->sc_dmat, ds->ds_dmamap, 0, @@ -1097,25 +1097,29 @@ ste_stats_update(struct ste_softc *sc) (void) bus_space_read_2(st, sh, STE_OctetsTransmittedOk0); (void) bus_space_read_2(st, sh, STE_OctetsTransmittedOk1); - ifp->if_opackets += - (u_int) bus_space_read_2(st, sh, STE_FramesTransmittedOK); + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + + if_statadd_ref(nsr, if_opackets, + (u_int) bus_space_read_2(st, sh, STE_FramesTransmittedOK)); (void) bus_space_read_2(st, sh, STE_FramesReceivedOK); - ifp->if_collisions += + if_statadd_ref(nsr, if_collisions, (u_int) bus_space_read_1(st, sh, STE_LateCollisions) + (u_int) bus_space_read_1(st, sh, STE_MultipleColFrames) + - (u_int) bus_space_read_1(st, sh, STE_SingleColFrames); + (u_int) bus_space_read_1(st, sh, STE_SingleColFrames)); (void) bus_space_read_1(st, sh, STE_FramesWDeferredXmt); - ifp->if_ierrors += - (u_int) bus_space_read_1(st, sh, STE_FramesLostRxErrors); + if_statadd_ref(nsr, if_ierrors, + (u_int) bus_space_read_1(st, sh, STE_FramesLostRxErrors)); - ifp->if_oerrors += + if_statadd_ref(nsr, if_oerrors, (u_int) bus_space_read_1(st, sh, STE_FramesWExDeferral) + (u_int) bus_space_read_1(st, sh, STE_FramesXbortXSColls) + - bus_space_read_1(st, sh, STE_CarrierSenseErrors); + bus_space_read_1(st, sh, STE_CarrierSenseErrors)); + + IF_STAT_PUTREF(ifp); (void) bus_space_read_1(st, sh, STE_BcstFramesXmtdOk); (void) bus_space_read_1(st, sh, STE_BcstFramesRcvdOk); Index: src/sys/dev/pci/if_stge.c diff -u src/sys/dev/pci/if_stge.c:1.77 src/sys/dev/pci/if_stge.c:1.78 --- src/sys/dev/pci/if_stge.c:1.77 Tue Jan 14 09:49:26 2020 +++ src/sys/dev/pci/if_stge.c Thu Jan 30 05:24:53 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_stge.c,v 1.77 2020/01/14 09:49:26 msaitoh Exp $ */ +/* $NetBSD: if_stge.c,v 1.78 2020/01/30 05:24:53 thorpej Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_stge.c,v 1.77 2020/01/14 09:49:26 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_stge.c,v 1.78 2020/01/30 05:24:53 thorpej Exp $"); #include <sys/param.h> @@ -1028,7 +1028,7 @@ stge_watchdog(struct ifnet *ifp) stge_txintr(sc); if (sc->sc_txpending != 0) { printf("%s: device timeout\n", device_xname(sc->sc_dev)); - ifp->if_oerrors++; + if_statinc(ifp, if_oerrors); (void) stge_init(ifp); @@ -1261,7 +1261,7 @@ stge_rxintr(struct stge_softc *sc) * Failed, throw away what we've done so * far, and discard the rest of the packet. */ - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); bus_dmamap_sync(sc->sc_dmat, ds->ds_dmamap, 0, ds->ds_dmamap->dm_mapsize, BUS_DMASYNC_POSTREAD); STGE_INIT_RXDESC(sc, i); @@ -1331,7 +1331,7 @@ stge_rxintr(struct stge_softc *sc) struct mbuf *nm; MGETHDR(nm, M_DONTWAIT, MT_DATA); if (nm == NULL) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); m_freem(m); continue; } @@ -1433,22 +1433,26 @@ stge_stats_update(struct stge_softc *sc) (void) CSR_READ_4(sc, STGE_FramesRcvdOk); - ifp->if_ierrors += - (u_int) CSR_READ_2(sc, STGE_FramesLostRxErrors); + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + + if_statadd_ref(nsr, if_ierrors, + (u_int) CSR_READ_2(sc, STGE_FramesLostRxErrors)); (void) CSR_READ_4(sc, STGE_OctetXmtdOk); - ifp->if_opackets += - CSR_READ_4(sc, STGE_FramesXmtdOk); + if_statadd_ref(nsr, if_opackets, + CSR_READ_4(sc, STGE_FramesXmtdOk)); - ifp->if_collisions += + if_statadd_ref(nsr, if_collisions, CSR_READ_4(sc, STGE_LateCollisions) + CSR_READ_4(sc, STGE_MultiColFrames) + - CSR_READ_4(sc, STGE_SingleColFrames); + CSR_READ_4(sc, STGE_SingleColFrames)); - ifp->if_oerrors += + if_statadd_ref(nsr, if_oerrors, (u_int) CSR_READ_2(sc, STGE_FramesAbortXSColls) + - (u_int) CSR_READ_2(sc, STGE_FramesWEXDeferal); + (u_int) CSR_READ_2(sc, STGE_FramesWEXDeferal)); + + IF_STAT_PUTREF(ifp); } /* Index: src/sys/dev/pci/if_tl.c diff -u src/sys/dev/pci/if_tl.c:1.118 src/sys/dev/pci/if_tl.c:1.119 --- src/sys/dev/pci/if_tl.c:1.118 Sun Dec 22 23:23:32 2019 +++ src/sys/dev/pci/if_tl.c Thu Jan 30 05:24:53 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_tl.c,v 1.118 2019/12/22 23:23:32 thorpej Exp $ */ +/* $NetBSD: if_tl.c,v 1.119 2020/01/30 05:24:53 thorpej Exp $ */ /* * Copyright (c) 1997 Manuel Bouyer. All rights reserved. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_tl.c,v 1.118 2019/12/22 23:23:32 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_tl.c,v 1.119 2020/01/30 05:24:53 thorpej Exp $"); #undef TLDEBUG #define TL_PRIV_STATS @@ -1409,7 +1409,7 @@ tl_ifwatchdog(struct ifnet *ifp) if ((ifp->if_flags & IFF_RUNNING) == 0) return; printf("%s: device timeout\n", device_xname(sc->sc_dev)); - ifp->if_oerrors++; + if_statinc(ifp, if_oerrors); tl_init(ifp); } @@ -1504,8 +1504,10 @@ tl_read_stats(tl_softc_t *sc) int oerr_carrloss; struct ifnet *ifp = &sc->tl_if; + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + reg = tl_intreg_read(sc, TL_INT_STATS_TX); - ifp->if_opackets += reg & 0x00ffffff; + if_statadd_ref(nsr, if_opackets, reg & 0x00ffffff); oerr_underr = reg >> 24; reg = tl_intreg_read(sc, TL_INT_STATS_RX); @@ -1525,11 +1527,11 @@ tl_read_stats(tl_softc_t *sc) oerr_latecoll = (reg & TL_LERR_LCOLL) >> 8; oerr_carrloss = (reg & TL_LERR_CL) >> 16; - - ifp->if_oerrors += oerr_underr + oerr_exesscoll + oerr_latecoll + - oerr_carrloss; - ifp->if_collisions += oerr_coll + oerr_multicoll; - ifp->if_ierrors += ierr_overr + ierr_code + ierr_crc; + if_statadd_ref(nsr, if_oerrors, + oerr_underr + oerr_exesscoll + oerr_latecoll + oerr_carrloss); + if_statadd_ref(nsr, if_collisions, oerr_coll + oerr_multicoll); + if_statadd_ref(nsr, if_ierrors, ierr_overr + ierr_code + ierr_crc); + IF_STAT_PUTREF(ifp); if (ierr_overr) printf("%s: receiver ring buffer overrun\n", Index: src/sys/dev/pci/if_vge.c diff -u src/sys/dev/pci/if_vge.c:1.78 src/sys/dev/pci/if_vge.c:1.79 --- src/sys/dev/pci/if_vge.c:1.78 Fri Dec 27 07:41:23 2019 +++ src/sys/dev/pci/if_vge.c Thu Jan 30 05:24:53 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_vge.c,v 1.78 2019/12/27 07:41:23 msaitoh Exp $ */ +/* $NetBSD: if_vge.c,v 1.79 2020/01/30 05:24:53 thorpej Exp $ */ /*- * Copyright (c) 2004 @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_vge.c,v 1.78 2019/12/27 07:41:23 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_vge.c,v 1.79 2020/01/30 05:24:53 thorpej Exp $"); /* * VIA Networking Technologies VT612x PCI gigabit ethernet NIC driver. @@ -1231,7 +1231,7 @@ vge_rxeof(struct vge_softc *sc) if ((rxstat & VGE_RDSTS_RXOK) == 0 && (rxstat & VGE_RDSTS_VIDM) == 0 && (rxstat & VGE_RDSTS_CSUMERR) == 0) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); /* * If this is part of a multi-fragment packet, * discard all the pieces. @@ -1250,7 +1250,7 @@ vge_rxeof(struct vge_softc *sc) */ if (vge_newbuf(sc, idx, NULL)) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); if (sc->sc_rx_mhead != NULL) { m_freem(sc->sc_rx_mhead); sc->sc_rx_mhead = sc->sc_rx_mtail = NULL; @@ -1363,12 +1363,14 @@ vge_txeof(struct vge_softc *sc) bus_dmamap_sync(sc->sc_dmat, txs->txs_dmamap, 0, txs->txs_dmamap->dm_mapsize, BUS_DMASYNC_POSTWRITE); bus_dmamap_unload(sc->sc_dmat, txs->txs_dmamap); + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); if (txstat & (VGE_TDSTS_EXCESSCOLL | VGE_TDSTS_COLL)) - ifp->if_collisions++; + if_statinc_ref(nsr, if_collisions); if (txstat & VGE_TDSTS_TXERR) - ifp->if_oerrors++; + if_statinc_ref(nsr, if_oerrors); else - ifp->if_opackets++; + if_statinc_ref(nsr, if_opackets); + IF_STAT_PUTREF(ifp); } sc->sc_tx_considx = idx; @@ -2019,7 +2021,7 @@ vge_watchdog(struct ifnet *ifp) sc = ifp->if_softc; s = splnet(); printf("%s: watchdog timeout\n", device_xname(sc->sc_dev)); - ifp->if_oerrors++; + if_statinc(ifp, if_oerrors); vge_txeof(sc); vge_rxeof(sc); Index: src/sys/dev/pci/if_vr.c diff -u src/sys/dev/pci/if_vr.c:1.131 src/sys/dev/pci/if_vr.c:1.132 --- src/sys/dev/pci/if_vr.c:1.131 Fri Sep 13 07:55:07 2019 +++ src/sys/dev/pci/if_vr.c Thu Jan 30 05:24:53 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_vr.c,v 1.131 2019/09/13 07:55:07 msaitoh Exp $ */ +/* $NetBSD: if_vr.c,v 1.132 2020/01/30 05:24:53 thorpej Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -97,7 +97,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_vr.c,v 1.131 2019/09/13 07:55:07 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_vr.c,v 1.132 2020/01/30 05:24:53 thorpej Exp $"); @@ -625,7 +625,7 @@ vr_rxeof(struct vr_softc *sc) if (rxstat & VR_RXSTAT_RXERR) { const char *errstr; - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); switch (rxstat & 0x000000FF) { case VR_RXSTAT_CRCERR: errstr = "crc error"; @@ -665,7 +665,7 @@ vr_rxeof(struct vr_softc *sc) * time. In case we receive a fragment that is not * a complete packet, we discard it. */ - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); aprint_error_dev(sc->vr_dev, "receive error: incomplete frame; " @@ -689,7 +689,7 @@ vr_rxeof(struct vr_softc *sc) * missed to handle an error condition above. * Discard it to avoid a later crash. */ - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); aprint_error_dev(sc->vr_dev, "receive error: zero-length packet; " @@ -733,7 +733,7 @@ vr_rxeof(struct vr_softc *sc) m = ds->ds_mbuf; if (vr_add_rxbuf(sc, i) == ENOBUFS) { dropit: - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); VR_INIT_RXDESC(sc, i); bus_dmamap_sync(sc->vr_dmat, ds->ds_dmamap, 0, @@ -752,7 +752,7 @@ vr_rxeof(struct vr_softc *sc) MGETHDR(m, M_DONTWAIT, MT_DATA); if (m == NULL) { dropit: - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); VR_INIT_RXDESC(sc, i); bus_dmamap_sync(sc->vr_dmat, ds->ds_dmamap, 0, ds->ds_dmamap->dm_mapsize, BUS_DMASYNC_PREREAD); @@ -798,7 +798,7 @@ vr_rxeoc(struct vr_softc *sc) ifp = &sc->vr_ec.ec_if; - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); VR_CLRBIT16(sc, VR_COMMAND, VR_CMD_RX_ON); for (i = 0; i < VR_TIMEOUT; i++) { @@ -874,16 +874,19 @@ vr_txeof(struct vr_softc *sc) m_freem(ds->ds_mbuf); ds->ds_mbuf = NULL; + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); if (txstat & VR_TXSTAT_ERRSUM) { - ifp->if_oerrors++; + if_statinc_ref(nsr, if_oerrors); if (txstat & VR_TXSTAT_DEFER) - ifp->if_collisions++; + if_statinc_ref(nsr, if_collisions); if (txstat & VR_TXSTAT_LATECOLL) - ifp->if_collisions++; + if_statinc_ref(nsr, if_collisions); } - ifp->if_collisions += (txstat & VR_TXSTAT_COLLCNT) >> 3; - ifp->if_opackets++; + if_statadd_ref(nsr, if_collisions, + (txstat & VR_TXSTAT_COLLCNT) >> 3); + if_statinc_ref(nsr, if_opackets); + IF_STAT_PUTREF(ifp); } /* Update the dirty transmit buffer pointer. */ @@ -934,7 +937,7 @@ vr_intr(void *arg) if (status & VR_ISR_RX_DROPPED) { aprint_error_dev(sc->vr_dev, "rx packet lost\n"); - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); } if (status & @@ -967,7 +970,7 @@ vr_intr(void *arg) if (status & VR_ISR_TX_UDFI) aprint_error_dev(sc->vr_dev, "transmit underflow\n"); - ifp->if_oerrors++; + if_statinc(ifp, if_oerrors); dotx = 1; vr_txeof(sc); if (sc->vr_txpending) { @@ -1330,7 +1333,7 @@ vr_watchdog(struct ifnet *ifp) struct vr_softc *sc = ifp->if_softc; aprint_error_dev(sc->vr_dev, "device timeout\n"); - ifp->if_oerrors++; + if_statinc(ifp, if_oerrors); (void) vr_init(ifp); }