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