Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Mar 2015 16:40:09 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r280625 - in projects/ifnet/sys: dev/bge dev/e1000 dev/msk dev/virtio/network dev/xl net
Message-ID:  <201503251640.t2PGe9HY071325@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201503251640.t2PGe9HY071325>