summaryrefslogtreecommitdiffstats
path: root/sys/net/if_var.h
diff options
context:
space:
mode:
authorkmacy <kmacy@FreeBSD.org>2008-12-17 08:12:50 +0000
committerkmacy <kmacy@FreeBSD.org>2008-12-17 08:12:50 +0000
commit7efe2ccd487653a48a680daec35810cb43bdb1f2 (patch)
treeca34783be25df5766e77748292e76d4c92011158 /sys/net/if_var.h
parent39a3668dccb441d4080c6f8653899b5361f948e7 (diff)
downloadFreeBSD-src-7efe2ccd487653a48a680daec35810cb43bdb1f2.zip
FreeBSD-src-7efe2ccd487653a48a680daec35810cb43bdb1f2.tar.gz
Keep stats in drbr_enqueue
Discussed with: ps
Diffstat (limited to 'sys/net/if_var.h')
-rw-r--r--sys/net/if_var.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/sys/net/if_var.h b/sys/net/if_var.h
index 6e6d2db..250bed9 100644
--- a/sys/net/if_var.h
+++ b/sys/net/if_var.h
@@ -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);
}
OpenPOWER on IntegriCloud