svn commit: r184911 - user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb
Kip Macy
kmacy at FreeBSD.org
Wed Nov 12 21:31:38 PST 2008
Author: kmacy
Date: Thu Nov 13 05:31:37 2008
New Revision: 184911
URL: http://svn.freebsd.org/changeset/base/184911
Log:
lock buf ring on dequeue
Modified:
user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb/cxgb_osdep.h
Modified: user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb/cxgb_osdep.h
==============================================================================
--- user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb/cxgb_osdep.h Thu Nov 13 05:28:42 2008 (r184910)
+++ user/kmacy/HEAD_fast_multi_xmit/sys/dev/cxgb/cxgb_osdep.h Thu Nov 13 05:31:37 2008 (r184911)
@@ -228,7 +228,7 @@ buf_ring_full(struct buf_ring *mr)
*
*/
static __inline void *
-buf_ring_dequeue(struct buf_ring *mr)
+__buf_ring_dequeue(struct buf_ring *mr)
{
uint32_t prod, cons, mask;
caddr_t *ring, m;
@@ -236,19 +236,28 @@ buf_ring_dequeue(struct buf_ring *mr)
ring = (caddr_t *)mr->br_ring;
mask = mr->br_size - 1;
cons = mr->br_cons;
- mb();
prod = mr->br_prod;
m = NULL;
if (cons != prod) {
m = ring[cons];
ring[cons] = NULL;
mr->br_cons = (cons + 1) & mask;
- mb();
}
return (m);
}
-#ifdef DEBUG_BUFRING
+static __inline void *
+buf_ring_dequeue(struct buf_ring *mr)
+{
+ void *buf;
+
+ mtx_lock(&mr->br_lock);
+ buf = __buf_ring_dequeue(mr);
+ mtx_unlock(&mr->br_lock);
+ return (buf);
+}
+
+#ifdef INVARIANT_SUPPORT
static __inline void
__buf_ring_scan(struct buf_ring *mr, void *m, char *file, int line)
{
More information about the svn-src-user
mailing list