From be29826f373b9ebea27e9ca4df65dda94c10b141 Mon Sep 17 00:00:00 2001 From: thorpej Date: Fri, 31 Jan 2020 22:41:07 +0000 Subject: [PATCH] Adopt . --- sys/dev/pci/if_aq.c | 91 ++++++++++----------------------------------- 1 file changed, 19 insertions(+), 72 deletions(-) diff --git a/sys/dev/pci/if_aq.c b/sys/dev/pci/if_aq.c index 0b978951f6c9..9e2d0a4623af 100644 --- a/sys/dev/pci/if_aq.c +++ b/sys/dev/pci/if_aq.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_aq.c,v 1.5 2020/01/25 07:57:48 msaitoh Exp $ */ +/* $NetBSD: if_aq.c,v 1.6 2020/01/31 22:41:07 thorpej Exp $ */ /** * aQuantia Corporation Network Driver @@ -62,7 +62,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_aq.c,v 1.5 2020/01/25 07:57:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_aq.c,v 1.6 2020/01/31 22:41:07 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_if_aq.h" @@ -867,12 +867,6 @@ struct aq_txring { unsigned int txr_prodidx; unsigned int txr_considx; int txr_nfree; - - /* counters */ - uint64_t txr_opackets; - uint64_t txr_obytes; - uint64_t txr_omcasts; - uint64_t txr_oerrors; }; struct aq_rxring { @@ -890,12 +884,6 @@ struct aq_rxring { bus_dmamap_t dmamap; } rxr_mbufs[AQ_RXD_NUM]; unsigned int rxr_readidx; - - /* counters */ - uint64_t rxr_ipackets; - uint64_t rxr_ibytes; - uint64_t rxr_ierrors; - uint64_t rxr_iqdrops; }; struct aq_queue { @@ -4173,6 +4161,8 @@ aq_tx_intr(void *arg) goto tx_intr_done; } + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + for (idx = txring->txr_considx; idx != hw_head; idx = TXRING_NEXTIDX(idx), n++) { @@ -4180,10 +4170,10 @@ aq_tx_intr(void *arg) bus_dmamap_unload(sc->sc_dmat, txring->txr_mbufs[idx].dmamap); - txring->txr_opackets++; - txring->txr_obytes += m->m_pkthdr.len; + if_statinc_ref(nsr, if_opackets); + if_statadd_ref(nsr, if_obytes, m->m_pkthdr.len); if (m->m_flags & M_MCAST) - txring->txr_omcasts++; + if_statinc_ref(nsr, if_omcasts); m_freem(m); txring->txr_mbufs[idx].m = NULL; @@ -4193,6 +4183,8 @@ aq_tx_intr(void *arg) } txring->txr_considx = idx; + IF_STAT_PUTREF(ifp); + if (ringidx == 0 && txring->txr_nfree >= AQ_TXD_MIN) ifp->if_flags &= ~IFF_OACTIVE; @@ -4231,6 +4223,8 @@ aq_rx_intr(void *arg) goto rx_intr_done; } + net_stat_ref_t nsr = IF_STAT_GETREF(ifp); + m0 = mprev = NULL; for (idx = rxring->rxr_readidx; idx != AQ_READ_REG_BIT(sc, RX_DMA_DESC_HEAD_PTR_REG(ringidx), @@ -4254,7 +4248,7 @@ aq_rx_intr(void *arg) if ((rxd_status & RXDESC_STATUS_MACERR) || (rxd_type & RXDESC_TYPE_MAC_DMA_ERR)) { - rxring->rxr_ierrors++; + if_statinc_ref(nsr, if_ierrors); goto rx_next; } @@ -4269,7 +4263,7 @@ aq_rx_intr(void *arg) * cannot allocate new mbuf. * discard this packet, and reuse mbuf for next. */ - rxring->rxr_iqdrops++; + if_statinc_ref(nsr, if_iqdrops); goto rx_next; } rxring->rxr_mbufs[idx].m = NULL; @@ -4371,8 +4365,8 @@ aq_rx_intr(void *arg) } #endif m_set_rcvif(m0, ifp); - rxring->rxr_ipackets++; - rxring->rxr_ibytes += m0->m_pkthdr.len; + if_statinc_ref(nsr, if_ipackets); + if_statadd_ref(nsr, if_ibytes, m0->m_pkthdr.len); if_percpuq_enqueue(ifp->if_percpuq, m0); m0 = mprev = NULL; } @@ -4383,6 +4377,8 @@ aq_rx_intr(void *arg) } rxring->rxr_readidx = idx; + IF_STAT_PUTREF(ifp); + rx_intr_done: mutex_exit(&rxring->rxr_mutex); @@ -4511,7 +4507,7 @@ aq_send_common_locked(struct ifnet *ifp, struct aq_softc *sc, if (error != 0) { /* too many mbuf chains? or not enough descriptors? */ m_freem(m); - txring->txr_oerrors++; + if_statinc(ifp, if_oerrors); if (txring->txr_index == 0 && error == ENOBUFS) ifp->if_flags |= IFF_OACTIVE; break; @@ -4668,61 +4664,12 @@ aq_ioctl(struct ifnet *ifp, unsigned long cmd, void *data) { struct aq_softc *sc __unused; struct ifreq *ifr __unused; - uint64_t opackets, oerrors, obytes, omcasts; - uint64_t ipackets, ierrors, ibytes, iqdrops; - int error, i, s; + int error, s; sc = (struct aq_softc *)ifp->if_softc; ifr = (struct ifreq *)data; error = 0; - switch (cmd) { - case SIOCGIFDATA: - case SIOCZIFDATA: - opackets = oerrors = obytes = omcasts = 0; - ipackets = ierrors = ibytes = iqdrops = 0; - for (i = 0; i < sc->sc_nqueues; i++) { - struct aq_txring *txring = &sc->sc_queue[i].txring; - mutex_enter(&txring->txr_mutex); - if (cmd == SIOCZIFDATA) { - txring->txr_opackets = 0; - txring->txr_obytes = 0; - txring->txr_omcasts = 0; - txring->txr_oerrors = 0; - } else { - opackets += txring->txr_opackets; - oerrors += txring->txr_oerrors; - obytes += txring->txr_obytes; - omcasts += txring->txr_omcasts; - } - mutex_exit(&txring->txr_mutex); - - struct aq_rxring *rxring = &sc->sc_queue[i].rxring; - mutex_enter(&rxring->rxr_mutex); - if (cmd == SIOCZIFDATA) { - rxring->rxr_ipackets = 0; - rxring->rxr_ibytes = 0; - rxring->rxr_ierrors = 0; - rxring->rxr_iqdrops = 0; - } else { - ipackets += rxring->rxr_ipackets; - ierrors += rxring->rxr_ierrors; - ibytes += rxring->rxr_ibytes; - iqdrops += rxring->rxr_iqdrops; - } - mutex_exit(&rxring->rxr_mutex); - } - ifp->if_opackets = opackets; - ifp->if_oerrors = oerrors; - ifp->if_obytes = obytes; - ifp->if_omcasts = omcasts; - ifp->if_ipackets = ipackets; - ifp->if_ierrors = ierrors; - ifp->if_ibytes = ibytes; - ifp->if_iqdrops = iqdrops; - break; - } - s = splnet(); error = ether_ioctl(ifp, cmd, data); splx(s);