svn commit: r280625 - in projects/ifnet/sys: dev/bge dev/e1000 dev/msk dev/virtio/network dev/xl net
Gleb Smirnoff
glebius at FreeBSD.org
Wed Mar 25 16:40:13 UTC 2015
Author: glebius
Date: Wed Mar 25 16:40:08 2015
New Revision: 280625
URL: https://svnweb.freebsd.org/changeset/base/280625
Log:
In the new ifnet world order, drivers are responsible to update
their IFCOUNTER_IBYTES.
Sponsored by: Netflix
Sponsored by: Nginx, Inc.
Modified:
projects/ifnet/sys/dev/bge/if_bge.c
projects/ifnet/sys/dev/e1000/if_igb.c
projects/ifnet/sys/dev/msk/if_msk.c
projects/ifnet/sys/dev/virtio/network/if_vtnet.c
projects/ifnet/sys/dev/xl/if_xl.c
projects/ifnet/sys/net/if.h
projects/ifnet/sys/net/if_ethersubr.c
projects/ifnet/sys/net/if_vlan.c
Modified: projects/ifnet/sys/dev/bge/if_bge.c
==============================================================================
--- projects/ifnet/sys/dev/bge/if_bge.c Wed Mar 25 16:13:44 2015 (r280624)
+++ projects/ifnet/sys/dev/bge/if_bge.c Wed Mar 25 16:40:08 2015 (r280625)
@@ -4378,7 +4378,6 @@ bge_rxeof(struct bge_softc *sc, uint16_t
BGE_INC(sc->bge_std, BGE_STD_RX_RING_CNT);
}
- if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
#ifndef __NO_STRICT_ALIGNMENT
/*
* For architectures with strict alignment we must make sure
@@ -4392,6 +4391,8 @@ bge_rxeof(struct bge_softc *sc, uint16_t
#endif
m->m_pkthdr.len = m->m_len = cur_rx->bge_len - ETHER_CRC_LEN;
m->m_pkthdr.rcvif = ifp;
+ if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
+ if_inc_counter(ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len);
if (sc->bge_capenable & IFCAP_RXCSUM)
bge_rxcsum(sc, cur_rx, m);
Modified: projects/ifnet/sys/dev/e1000/if_igb.c
==============================================================================
--- projects/ifnet/sys/dev/e1000/if_igb.c Wed Mar 25 16:13:44 2015 (r280624)
+++ projects/ifnet/sys/dev/e1000/if_igb.c Wed Mar 25 16:40:08 2015 (r280625)
@@ -4824,6 +4824,8 @@ igb_rxeof(struct igb_queue *que, int cou
rxr->packets++;
rxr->bytes += rxr->fmp->m_pkthdr.len;
rxr->rx_bytes += rxr->fmp->m_pkthdr.len;
+ if_inc_counter(ifp, IFCOUNTER_IBYTES,
+ rxr->fmp->m_pkthdr.len);
if ((adapter->if_capenable & IFCAP_RXCSUM) != 0)
igb_rx_checksum(staterr, rxr->fmp, ptype);
Modified: projects/ifnet/sys/dev/msk/if_msk.c
==============================================================================
--- projects/ifnet/sys/dev/msk/if_msk.c Wed Mar 25 16:13:44 2015 (r280624)
+++ projects/ifnet/sys/dev/msk/if_msk.c Wed Mar 25 16:40:08 2015 (r280625)
@@ -3209,6 +3209,7 @@ msk_rxeof(struct msk_if_softc *sc_if, ui
msk_fixup_rx(m);
#endif
if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
+ if_inc_counter(ifp, IFCOUNTER_IBYTES, len);
if ((sc_if->msk_capenable & IFCAP_RXCSUM) != 0)
msk_rxcsum(sc_if, control, m);
/* Check for VLAN tagged packets. */
Modified: projects/ifnet/sys/dev/virtio/network/if_vtnet.c
==============================================================================
--- projects/ifnet/sys/dev/virtio/network/if_vtnet.c Wed Mar 25 16:13:44 2015 (r280624)
+++ projects/ifnet/sys/dev/virtio/network/if_vtnet.c Wed Mar 25 16:40:08 2015 (r280625)
@@ -2466,6 +2466,8 @@ vtnet_get_counter(if_t ifp, ift_counter
switch (cnt) {
case IFCOUNTER_IPACKETS:
return (rxaccum.vrxs_ipackets);
+ case IFCOUNTER_IBYTES:
+ return (rxaccum.vrxs_ibytes);
case IFCOUNTER_IQDROPS:
return (rxaccum.vrxs_iqdrops);
case IFCOUNTER_IERRORS:
Modified: projects/ifnet/sys/dev/xl/if_xl.c
==============================================================================
--- projects/ifnet/sys/dev/xl/if_xl.c Wed Mar 25 16:13:44 2015 (r280624)
+++ projects/ifnet/sys/dev/xl/if_xl.c Wed Mar 25 16:40:08 2015 (r280625)
@@ -1899,9 +1899,10 @@ again:
bus_dmamap_sync(sc->xl_ldata.xl_rx_tag,
sc->xl_ldata.xl_rx_dmamap, BUS_DMASYNC_PREWRITE);
- if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
m->m_pkthdr.rcvif = ifp;
m->m_pkthdr.len = m->m_len = total_len;
+ if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
+ if_inc_counter(ifp, IFCOUNTER_IBYTES, total_len);
if (sc->xl_capenable & IFCAP_RXCSUM) {
/* Do IP checksum checking. */
Modified: projects/ifnet/sys/net/if.h
==============================================================================
--- projects/ifnet/sys/net/if.h Wed Mar 25 16:13:44 2015 (r280624)
+++ projects/ifnet/sys/net/if.h Wed Mar 25 16:40:08 2015 (r280625)
@@ -232,7 +232,6 @@ enum {
#define IFCAP_NETMAP 0x100000 /* netmap mode supported/enabled */
#define IFCAP_RXCSUM_IPV6 0x200000 /* can offload checksum on IPv6 RX */
#define IFCAP_TXCSUM_IPV6 0x400000 /* can offload checksum on IPv6 TX */
-#define IFCAP_HWSTATS 0x800000 /* manages counters internally */
#define IFCAP_HWCSUM_IPV6 (IFCAP_RXCSUM_IPV6 | IFCAP_TXCSUM_IPV6)
Modified: projects/ifnet/sys/net/if_ethersubr.c
==============================================================================
--- projects/ifnet/sys/net/if_ethersubr.c Wed Mar 25 16:13:44 2015 (r280624)
+++ projects/ifnet/sys/net/if_ethersubr.c Wed Mar 25 16:40:08 2015 (r280625)
@@ -452,9 +452,6 @@ ether_input_internal(struct ifnet *ifp,
m->m_flags &= ~M_HASFCS;
}
- if (!(ifp->if_capenable & IFCAP_HWSTATS))
- if_inc_counter(ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len);
-
/* Allow monitor mode to claim this frame, after stats are updated. */
if (ifp->if_flags & IFF_MONITOR) {
m_freem(m);
Modified: projects/ifnet/sys/net/if_vlan.c
==============================================================================
--- projects/ifnet/sys/net/if_vlan.c Wed Mar 25 16:13:44 2015 (r280624)
+++ projects/ifnet/sys/net/if_vlan.c Wed Mar 25 16:40:08 2015 (r280625)
@@ -1145,6 +1145,7 @@ vlan_input(struct ifnet *ifp, struct mbu
m->m_pkthdr.rcvif = ifv->ifv_ifp;
if_inc_counter(ifv->ifv_ifp, IFCOUNTER_IPACKETS, 1);
+ if_inc_counter(ifv->ifv_ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len);
/* Pass it back through the parent's input routine. */
if_input(ifv->ifv_ifp, m);
More information about the svn-src-projects
mailing list