summaryrefslogtreecommitdiffstats
path: root/sys/net/if_vlan.c
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2015-03-20 14:05:17 +0000
committerglebius <glebius@FreeBSD.org>2015-03-20 14:05:17 +0000
commit754f126520cda89ecc8684cfb468b8e4824c74ad (patch)
treea8b69e5e591e551bea6f342cdfb9430bffe16b14 /sys/net/if_vlan.c
parentca90fc742446732b36d708a64c7f21f2477ad161 (diff)
downloadFreeBSD-src-754f126520cda89ecc8684cfb468b8e4824c74ad.zip
FreeBSD-src-754f126520cda89ecc8684cfb468b8e4824c74ad.tar.gz
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.
Diffstat (limited to 'sys/net/if_vlan.c')
-rw-r--r--sys/net/if_vlan.c66
1 files changed, 9 insertions, 57 deletions
diff --git a/sys/net/if_vlan.c b/sys/net/if_vlan.c
index 54c4833..bdea733 100644
--- a/sys/net/if_vlan.c
+++ b/sys/net/if_vlan.c
@@ -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, char *name, size_t len, caddr_t params)
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, char *name, size_t len, caddr_t params)
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, struct ifnet *ifp)
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 mbuf *m)
*/
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 mbuf *m)
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 mbuf *m)
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 mbuf *m)
*/
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 mbuf *m)
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);
OpenPOWER on IntegriCloud