svn commit: r280280 - head/sys/net

Gleb Smirnoff glebius at FreeBSD.org
Fri Mar 20 14:05:18 UTC 2015


Author: glebius
Date: Fri Mar 20 14:05:17 2015
New Revision: 280280
URL: https://svnweb.freebsd.org/changeset/base/280280

Log:
  Now, when r272244 introduced counter(9) based counters for all interfaces,
  revert the r271538, which did that for vlan(4) only.
  
  No objections:	melifaro
  Sponsored by:	Nginx, Inc.

Modified:
  head/sys/net/if_vlan.c

Modified: head/sys/net/if_vlan.c
==============================================================================
--- head/sys/net/if_vlan.c	Fri Mar 20 10:27:06 2015	(r280279)
+++ head/sys/net/if_vlan.c	Fri Mar 20 14:05:17 2015	(r280280)
@@ -104,12 +104,6 @@ struct vlan_mc_entry {
 struct	ifvlan {
 	struct	ifvlantrunk *ifv_trunk;
 	struct	ifnet *ifv_ifp;
-	counter_u64_t	ifv_ipackets;
-	counter_u64_t	ifv_ibytes;
-	counter_u64_t	ifv_opackets;
-	counter_u64_t	ifv_obytes;
-	counter_u64_t	ifv_omcasts;
-	counter_u64_t	ifv_oerrors;
 #define	TRUNK(ifv)	((ifv)->ifv_trunk)
 #define	PARENT(ifv)	((ifv)->ifv_trunk->parent)
 	void	*ifv_cookie;
@@ -202,7 +196,6 @@ static	void vlan_init(void *foo);
 static	void vlan_input(struct ifnet *ifp, struct mbuf *m);
 static	int vlan_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr);
 static	void vlan_qflush(struct ifnet *ifp);
-static uint64_t vlan_get_counter(struct ifnet *ifp, ift_counter cnt);
 static	int vlan_setflag(struct ifnet *ifp, int flag, int status,
     int (*func)(struct ifnet *, int));
 static	int vlan_setflags(struct ifnet *ifp, int status);
@@ -955,14 +948,6 @@ vlan_clone_create(struct if_clone *ifc, 
 		return (ENOSPC);
 	}
 	SLIST_INIT(&ifv->vlan_mc_listhead);
-	/* Prepare pcpu counters */
-	ifv->ifv_ipackets = counter_u64_alloc(M_WAITOK);
-	ifv->ifv_opackets = counter_u64_alloc(M_WAITOK);
-	ifv->ifv_ibytes = counter_u64_alloc(M_WAITOK);
-	ifv->ifv_obytes = counter_u64_alloc(M_WAITOK);
-	ifv->ifv_omcasts = counter_u64_alloc(M_WAITOK);
-	ifv->ifv_oerrors = counter_u64_alloc(M_WAITOK);
-
 	ifp->if_softc = ifv;
 	/*
 	 * Set the name manually rather than using if_initname because
@@ -981,7 +966,6 @@ vlan_clone_create(struct if_clone *ifc, 
 	ifp->if_qflush = vlan_qflush;
 	ifp->if_ioctl = vlan_ioctl;
 	ifp->if_flags = VLAN_IFFLAGS;
-	ifp->if_get_counter = vlan_get_counter;
 	ether_ifattach(ifp, eaddr);
 	/* Now undo some of the damage... */
 	ifp->if_baudrate = 0;
@@ -1024,12 +1008,6 @@ vlan_clone_destroy(struct if_clone *ifc,
 	ether_ifdetach(ifp);	/* first, remove it from system-wide lists */
 	vlan_unconfig(ifp);	/* now it can be unconfigured and freed */
 	if_free(ifp);
-	counter_u64_free(ifv->ifv_ipackets);
-	counter_u64_free(ifv->ifv_opackets);
-	counter_u64_free(ifv->ifv_ibytes);
-	counter_u64_free(ifv->ifv_obytes);
-	counter_u64_free(ifv->ifv_omcasts);
-	counter_u64_free(ifv->ifv_oerrors);
 	free(ifv, M_VLAN);
 	ifc_free_unit(ifc, unit);
 
@@ -1067,7 +1045,7 @@ vlan_transmit(struct ifnet *ifp, struct 
 	 */
 	if (!UP_AND_RUNNING(p)) {
 		m_freem(m);
-		counter_u64_add(ifv->ifv_oerrors, 1);
+		if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
 		return (ENETDOWN);
 	}
 
@@ -1094,7 +1072,7 @@ vlan_transmit(struct ifnet *ifp, struct 
 
 		if (n > 0) {
 			if_printf(ifp, "cannot pad short frame\n");
-			counter_u64_add(ifv->ifv_oerrors, 1);
+			if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
 			m_freem(m);
 			return (0);
 		}
@@ -1114,7 +1092,7 @@ vlan_transmit(struct ifnet *ifp, struct 
 		m = ether_vlanencap(m, ifv->ifv_vid);
 		if (m == NULL) {
 			if_printf(ifp, "unable to prepend VLAN header\n");
-			counter_u64_add(ifv->ifv_oerrors, 1);
+			if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
 			return (0);
 		}
 	}
@@ -1124,40 +1102,14 @@ vlan_transmit(struct ifnet *ifp, struct 
 	 */
 	error = (p->if_transmit)(p, m);
 	if (error == 0) {
-		counter_u64_add(ifv->ifv_opackets, 1);
-		counter_u64_add(ifv->ifv_obytes, len);
-		counter_u64_add(ifv->ifv_omcasts, mcast);
+		if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
+		if_inc_counter(ifp, IFCOUNTER_OBYTES, len);
+		if_inc_counter(ifp, IFCOUNTER_OMCASTS, mcast);
 	} else
-		counter_u64_add(ifv->ifv_oerrors, 1);
+		if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
 	return (error);
 }
 
-static uint64_t
-vlan_get_counter(struct ifnet *ifp, ift_counter cnt)
-{
-	struct ifvlan *ifv;
-
-	ifv = ifp->if_softc;
-
-	switch (cnt) {
-		case IFCOUNTER_IPACKETS:
-			return (counter_u64_fetch(ifv->ifv_ipackets));
-		case IFCOUNTER_OPACKETS:
-			return (counter_u64_fetch(ifv->ifv_opackets));
-		case IFCOUNTER_IBYTES:
-			return (counter_u64_fetch(ifv->ifv_ibytes));
-		case IFCOUNTER_OBYTES:
-			return (counter_u64_fetch(ifv->ifv_obytes));
-		case IFCOUNTER_OMCASTS:
-			return (counter_u64_fetch(ifv->ifv_omcasts));
-		case IFCOUNTER_OERRORS:
-			return (counter_u64_fetch(ifv->ifv_oerrors));
-		default:
-			return (if_get_counter_default(ifp, cnt));
-	}
-	/* NOTREACHED */
-}
-
 /*
  * The ifp->if_qflush entry point for vlan(4) is a no-op.
  */
@@ -1232,8 +1184,8 @@ vlan_input(struct ifnet *ifp, struct mbu
 	TRUNK_RUNLOCK(trunk);
 
 	m->m_pkthdr.rcvif = ifv->ifv_ifp;
-	counter_u64_add(ifv->ifv_ipackets, 1);
-	counter_u64_add(ifv->ifv_ibytes, m->m_pkthdr.len);
+	if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
+	if_inc_counter(ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len);
 
 	/* Pass it back through the parent's input routine. */
 	(*ifp->if_input)(ifv->ifv_ifp, m);


More information about the svn-src-head mailing list