aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorLuigi Rizzo <luigi@FreeBSD.org>2014-06-06 18:02:32 +0000
committerLuigi Rizzo <luigi@FreeBSD.org>2014-06-06 18:02:32 +0000
commit997b054cf10b391fd4796b5e92c286ebd1fb1405 (patch)
treea549466f01595fc69453502a804e60b8904e1a12 /sys
parenta845d42777e57980e359b4df7f407d8a40bf6ea8 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/netmap/netmap.c8
-rw-r--r--sys/dev/netmap/netmap_mbq.c8
-rw-r--r--sys/dev/netmap/netmap_mbq.h12
3 files changed, 19 insertions, 9 deletions
diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c
index 8b62dec9888b..274a7d79d3f9 100644
--- a/sys/dev/netmap/netmap.c
+++ b/sys/dev/netmap/netmap.c
@@ -1050,7 +1050,7 @@ netmap_rxsync_from_host(struct netmap_adapter *na, struct thread *td, void *pwai
(void)pwait; /* disable unused warnings */
(void)td;
- mtx_lock_spin(&q->lock);
+ mbq_lock(q);
/* First part: import newly received packets */
n = mbq_len(q);
@@ -1092,7 +1092,7 @@ netmap_rxsync_from_host(struct netmap_adapter *na, struct thread *td, void *pwai
if (kring->rcur == kring->rtail && td) /* no bufs available */
selrecord(td, &kring->si);
- mtx_unlock_spin(&q->lock);
+ mbq_unlock(q);
return ret;
}
@@ -2459,7 +2459,7 @@ netmap_transmit(struct ifnet *ifp, struct mbuf *m)
* not possible on Linux).
* Also avoid overflowing the queue.
*/
- mtx_lock_spin(&q->lock);
+ mbq_lock(q);
space = kring->nr_hwtail - kring->nr_hwcur;
if (space < 0)
@@ -2476,7 +2476,7 @@ netmap_transmit(struct ifnet *ifp, struct mbuf *m)
m = NULL;
error = 0;
}
- mtx_unlock_spin(&q->lock);
+ mbq_unlock(q);
done:
if (m)
diff --git a/sys/dev/netmap/netmap_mbq.c b/sys/dev/netmap/netmap_mbq.c
index 86f0bb79fd2c..503f5a13aa95 100644
--- a/sys/dev/netmap/netmap_mbq.c
+++ b/sys/dev/netmap/netmap_mbq.c
@@ -76,9 +76,9 @@ static inline void __mbq_enqueue(struct mbq *q, struct mbuf *m)
void mbq_safe_enqueue(struct mbq *q, struct mbuf *m)
{
- mtx_lock_spin(&q->lock);
+ mbq_lock(q);
__mbq_enqueue(q, m);
- mtx_unlock_spin(&q->lock);
+ mbq_unlock(q);
}
@@ -110,9 +110,9 @@ struct mbuf *mbq_safe_dequeue(struct mbq *q)
{
struct mbuf *ret;
- mtx_lock_spin(&q->lock);
+ mbq_lock(q);
ret = __mbq_dequeue(q);
- mtx_unlock_spin(&q->lock);
+ mbq_unlock(q);
return ret;
}
diff --git a/sys/dev/netmap/netmap_mbq.h b/sys/dev/netmap/netmap_mbq.h
index d273d8a8fa23..a011c4c7716a 100644
--- a/sys/dev/netmap/netmap_mbq.h
+++ b/sys/dev/netmap/netmap_mbq.h
@@ -62,7 +62,17 @@ void mbq_enqueue(struct mbq *q, struct mbuf *m);
struct mbuf *mbq_dequeue(struct mbq *q);
void mbq_purge(struct mbq *q);
-/* XXX missing mbq_lock() and mbq_unlock */
+static inline void
+mbq_lock(struct mbq *q)
+{
+ mtx_lock_spin(&q->lock);
+}
+
+static inline void
+mbq_unlock(struct mbq *q)
+{
+ mtx_unlock_spin(&q->lock);
+}
void mbq_safe_init(struct mbq *q);
void mbq_safe_destroy(struct mbq *q);