aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/devices/netmap/netmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'vnet/vnet/devices/netmap/netmap.h')
-rw-r--r--vnet/vnet/devices/netmap/netmap.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/vnet/vnet/devices/netmap/netmap.h b/vnet/vnet/devices/netmap/netmap.h
index d9a476b6959..15b14dbb0b7 100644
--- a/vnet/vnet/devices/netmap/netmap.h
+++ b/vnet/vnet/devices/netmap/netmap.h
@@ -120,6 +120,23 @@ int netmap_delete_if(vlib_main_t * vm, u8 * host_if_name);
(ring)->nr_buf_size )
static inline uint32_t
+nm_ring_next(struct netmap_ring *ring, uint32_t i)
+{
+ return ( unlikely(i + 1 == ring->num_slots) ? 0 : i + 1);
+}
+
+
+/*
+ * Return 1 if we have pending transmissions in the tx ring.
+ * When everything is complete ring->head = ring->tail + 1 (modulo ring size)
+ */
+static inline int
+nm_tx_pending(struct netmap_ring *ring)
+{
+ return nm_ring_next(ring, ring->tail) != ring->head;
+}
+
+static inline uint32_t
nm_ring_space(struct netmap_ring *ring)
{
int ret = ring->tail - ring->cur;