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);