Module Name: src Committed By: thorpej Date: Sat Feb 1 12:45:05 UTC 2020
Modified Files: src/sys/dev/pci: if_ixl.c Log Message: Adopt <net/if_stats.h>. To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/sys/dev/pci/if_ixl.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_ixl.c diff -u src/sys/dev/pci/if_ixl.c:1.34 src/sys/dev/pci/if_ixl.c:1.35 --- src/sys/dev/pci/if_ixl.c:1.34 Fri Jan 31 03:30:37 2020 +++ src/sys/dev/pci/if_ixl.c Sat Feb 1 12:45:05 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ixl.c,v 1.34 2020/01/31 03:30:37 yamaguchi Exp $ */ +/* $NetBSD: if_ixl.c,v 1.35 2020/02/01 12:45:05 thorpej Exp $ */ /* * Copyright (c) 2013-2015, Intel Corporation @@ -434,11 +434,6 @@ struct ixl_tx_ring { pcq_t *txr_intrq; void *txr_si; - uint64_t txr_oerrors; /* if_oerrors */ - uint64_t txr_opackets; /* if_opackets */ - uint64_t txr_obytes; /* if_obytes */ - uint64_t txr_omcasts; /* if_omcasts */ - struct evcnt txr_defragged; struct evcnt txr_defrag_failed; struct evcnt txr_pcqdrop; @@ -467,11 +462,6 @@ struct ixl_rx_ring { bus_size_t rxr_tail; unsigned int rxr_qid; - uint64_t rxr_ipackets; /* if_ipackets */ - uint64_t rxr_ibytes; /* if_ibytes */ - uint64_t rxr_iqdrops; /* iqdrops */ - uint64_t rxr_ierrors; /* if_ierrors */ - struct evcnt rxr_mgethdr_failed; struct evcnt rxr_mgetcl_failed; struct evcnt rxr_mbuf_load_failed; @@ -1842,12 +1832,10 @@ ixl_ioctl(struct ifnet *ifp, u_long cmd, { struct ifreq *ifr = (struct ifreq *)data; struct ixl_softc *sc = (struct ixl_softc *)ifp->if_softc; - struct ixl_tx_ring *txr; - struct ixl_rx_ring *rxr; const struct sockaddr *sa; uint8_t addrhi[ETHER_ADDR_LEN], addrlo[ETHER_ADDR_LEN]; int s, error = 0; - unsigned int i, nmtu; + unsigned int nmtu; switch (cmd) { case SIOCSIFMTU: @@ -1891,45 +1879,6 @@ ixl_ioctl(struct ifnet *ifp, u_long cmd, } break; - case SIOCGIFDATA: - case SIOCZIFDATA: - ifp->if_ipackets = 0; - ifp->if_ibytes = 0; - ifp->if_iqdrops = 0; - ifp->if_ierrors = 0; - ifp->if_opackets = 0; - ifp->if_obytes = 0; - ifp->if_omcasts = 0; - - for (i = 0; i < sc->sc_nqueue_pairs_max; i++) { - txr = sc->sc_qps[i].qp_txr; - rxr = sc->sc_qps[i].qp_rxr; - - mutex_enter(&rxr->rxr_lock); - ifp->if_ipackets += rxr->rxr_ipackets; - ifp->if_ibytes += rxr->rxr_ibytes; - ifp->if_iqdrops += rxr->rxr_iqdrops; - ifp->if_ierrors += rxr->rxr_ierrors; - if (cmd == SIOCZIFDATA) { - rxr->rxr_ipackets = 0; - rxr->rxr_ibytes = 0; - rxr->rxr_iqdrops = 0; - rxr->rxr_ierrors = 0; - } - mutex_exit(&rxr->rxr_lock); - - mutex_enter(&txr->txr_lock); - ifp->if_opackets += txr->txr_opackets; - ifp->if_obytes += txr->txr_obytes; - ifp->if_omcasts += txr->txr_omcasts; - if (cmd == SIOCZIFDATA) { - txr->txr_opackets = 0; - txr->txr_obytes = 0; - txr->txr_omcasts = 0; - } - mutex_exit(&txr->txr_lock); - } - /* FALLTHROUGH */ default: s = splnet(); error = ether_ioctl(ifp, cmd, data); @@ -2787,7 +2736,7 @@ ixl_tx_common_locked(struct ifnet *ifp, map = txm->txm_map; if (ixl_load_mbuf(sc->sc_dmat, map, &m, txr) != 0) { - txr->txr_oerrors++; + if_statinc(ifp, if_oerrors); m_freem(m); continue; } @@ -2870,6 +2819,8 @@ ixl_txeof(struct ixl_softc *sc, struct i ring = IXL_DMA_KVA(&txr->txr_mem); mask = sc->sc_tx_ring_ndescs - 1; + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + do { if (txlimit-- <= 0) { more = 1; @@ -2892,10 +2843,10 @@ ixl_txeof(struct ixl_softc *sc, struct i m = txm->txm_m; if (m != NULL) { - txr->txr_opackets++; - txr->txr_obytes += m->m_pkthdr.len; + if_statinc_ref(nsr, if_opackets); + if_statadd_ref(nsr, if_obytes, m->m_pkthdr.len); if (ISSET(m->m_flags, M_MCAST)) - txr->txr_omcasts++; + if_statinc_ref(nsr, if_omcasts); m_freem(m); } @@ -2907,6 +2858,8 @@ ixl_txeof(struct ixl_softc *sc, struct i done = 1; } while (cons != prod); + IF_STAT_PUTREF(ifp); + bus_dmamap_sync(sc->sc_dmat, IXL_DMA_MAP(&txr->txr_mem), 0, IXL_DMA_LEN(&txr->txr_mem), BUS_DMASYNC_PREREAD); @@ -3260,6 +3213,8 @@ ixl_rxeof(struct ixl_softc *sc, struct i ring = IXL_DMA_KVA(&rxr->rxr_mem); mask = sc->sc_rx_ring_ndescs - 1; + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + do { if (rxlimit-- <= 0) { more = 1; @@ -3310,11 +3265,12 @@ ixl_rxeof(struct ixl_softc *sc, struct i if (!ISSET(word, IXL_RX_DESC_RXE | IXL_RX_DESC_OVERSIZE)) { m_set_rcvif(m, ifp); - rxr->rxr_ipackets++; - rxr->rxr_ibytes += m->m_pkthdr.len; + if_statinc_ref(nsr, if_ipackets); + if_statadd_ref(nsr, if_ibytes, + m->m_pkthdr.len); if_percpuq_enqueue(ifp->if_percpuq, m); } else { - rxr->rxr_ierrors++; + if_statinc_ref(nsr, if_ierrors); m_freem(m); } @@ -3331,9 +3287,11 @@ ixl_rxeof(struct ixl_softc *sc, struct i if (done) { rxr->rxr_cons = cons; if (ixl_rxfill(sc, rxr) == -1) - rxr->rxr_iqdrops++; + if_statinc_ref(nsr, if_iqdrops); } + IF_STAT_PUTREF(ifp); + bus_dmamap_sync(sc->sc_dmat, IXL_DMA_MAP(&rxr->rxr_mem), 0, IXL_DMA_LEN(&rxr->rxr_mem), BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);