diff options
| author | Luigi Rizzo <luigi@FreeBSD.org> | 2014-06-06 18:02:32 +0000 |
|---|---|---|
| committer | Luigi Rizzo <luigi@FreeBSD.org> | 2014-06-06 18:02:32 +0000 |
| commit | 997b054cf10b391fd4796b5e92c286ebd1fb1405 (patch) | |
| tree | a549466f01595fc69453502a804e60b8904e1a12 /sys | |
| parent | a845d42777e57980e359b4df7f407d8a40bf6ea8 (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/dev/netmap/netmap.c | 8 | ||||
| -rw-r--r-- | sys/dev/netmap/netmap_mbq.c | 8 | ||||
| -rw-r--r-- | sys/dev/netmap/netmap_mbq.h | 12 |
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); |
