svn commit: r186213 - head/sys/net

Kip Macy kmacy at FreeBSD.org
Wed Dec 17 08:12:50 UTC 2008


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);
 }
 


More information about the svn-src-all mailing list