Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Aug 2000 14:51:05 +1000 (EST)
From:      peter.jeremy@alcatel.com.au
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/20611: VLAN parent device does not count VLAN output bytes
Message-ID:  <00Aug15.145110est.115224@border.alcanet.com.au>

next in thread | raw e-mail | index | archive | help

>Number:         20611
>Category:       kern
>Synopsis:       VLAN parent device does not count VLAN output bytes
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Aug 14 22:00:01 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Peter Jeremy
>Release:        FreeBSD 4.1-STABLE i386
>Organization:
Alcatel Australia Limited
>Environment:

	`current' -stable

>Description:

	Each network device includes counters for bytes and packets
	in and out.  For a physical interface associated with a VLAN
	interface, incoming and outgoing packets, as well as incoming
	bytes associated with the VLAN are counted, but outgoing bytes
	from the VLAN are not counted.  This is inconsistent.

	The problem is that output bytes are accumulated by
	ether_output_frame().  Packets sent to the VLAN go through
	this routine - which calls vlan_start() to process the
	packet.  vlan_start() directly calls the XX_start() routine
	associated with the physical interface.  vlan_start()
	replicates the relevant code within ether_output_frame(),
	but does not update the output byte count.  Likewise,
	the number of multicast frames sent via the VLAN are not
	counted.

	(There's also no support for bridging packets into an 802.1Q
	VLAN trunk.  Fixing this looks non-trivial, and I don't need
	this functionality, so I'll skip it).

>How-To-Repeat:

	Create (eg) vlan0 associated with (eg) fxp0 and pass traffic
	via vlan0 (with no traffic addressed directly to fxp0).  A
	netstat shows:

wansim# netstat -I fxp0 1
            input         (fxp0)           output
   packets  errs      bytes    packets  errs      bytes colls
       564     0      78690        586     0          0     0
       506     0      81024        521     0          0     0
       504     0      84068        519     0          0     0
       509     0     100559        530     0          0     0
       532     0      85011        557     0          0     0
^C

>Fix:

Index: if_vlan.c
===================================================================
RCS file: /gsmx07/CVSROOT/src/sys/net/if_vlan.c,v
retrieving revision 1.15.2.2
diff -u -r1.15.2.2 if_vlan.c
--- if_vlan.c	2000/07/17 21:24:34	1.15.2.2
+++ if_vlan.c	2000/08/15 04:47:01
@@ -268,6 +268,9 @@
 			m_freem(m);
 			continue;
 		}
+		p->if_obytes += m->m_pkthdr.len;
+		if (m->m_flags & M_MCAST)
+			p->if_omcasts++;
 		IF_ENQUEUE(&p->if_snd, m);
 		if ((p->if_flags & IFF_OACTIVE) == 0) {
 			p->if_start(p);

>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?00Aug15.145110est.115224>