diff options
Diffstat (limited to 'vnet/vnet/devices/netmap/netmap.h')
-rw-r--r-- | vnet/vnet/devices/netmap/netmap.h | 17 |
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; |