Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Dec 2008 08:12:50 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r186213 - head/sys/net
Message-ID:  <200812170812.mBH8CoXx061960@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Wed Dec 17 08:12:50 2008
New Revision: 186213
URL: http://svn.freebsd.org/changeset/base/186213

Log:
  Keep stats in drbr_enqueue
  
  Discussed with: ps

Modified:
  head/sys/net/if_var.h

Modified: head/sys/net/if_var.h
==============================================================================
--- head/sys/net/if_var.h	Wed Dec 17 06:56:58 2008	(r186212)
+++ head/sys/net/if_var.h	Wed Dec 17 08:12:50 2008	(r186213)
@@ -550,16 +550,29 @@ do {									\
 } while (0)
 
 #ifdef _KERNEL
+static __inline void
+drbr_stats_update(struct ifnet *ifp, int len, int mflags)
+{
+
+	ifp->if_obytes += len;
+	if (mflags & M_MCAST)
+		ifp->if_omcasts++;
+}
+
 static __inline int
-drbr_enqueue(struct buf_ring *br, struct mbuf *m)
+drbr_enqueue(struct ifnet *ifp, struct buf_ring *br, struct mbuf *m)
 {	
 	int error = 0;
+	int len = m->m_pkthdr.len;
+	int mflags = m->m_flags;
 
 	if ((error = buf_ring_enqueue(br, m)) == ENOBUFS) {
 		br->br_drops++;
+		_IF_DROP(&ifp->if_snd);
 		m_freem(m);
-	}
-
+	} else
+		drbr_stats_update(ifp, len, mflags);
+	
 	return (error);
 }
 



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