summaryrefslogtreecommitdiffstats
path: root/src/vnet/devices/netmap/device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/devices/netmap/device.c')
-rw-r--r--src/vnet/devices/netmap/device.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/src/vnet/devices/netmap/device.c b/src/vnet/devices/netmap/device.c
index 2152824f733..aea9ddf4eb1 100644
--- a/src/vnet/devices/netmap/device.c
+++ b/src/vnet/devices/netmap/device.c
@@ -105,11 +105,7 @@ netmap_interface_tx (vlib_main_t * vm,
netmap_if_t *nif = pool_elt_at_index (nm->interfaces, rd->dev_instance);
int cur_ring;
- if (PREDICT_FALSE (nif->lockp != 0))
- {
- while (__sync_lock_test_and_set (nif->lockp, 1))
- ;
- }
+ clib_spinlock_lock_if_init (&nif->lockp);
cur_ring = nif->first_tx_ring;
@@ -165,8 +161,7 @@ netmap_interface_tx (vlib_main_t * vm,
if (n_left < frame->n_vectors)
ioctl (nif->fd, NIOCTXSYNC, NULL);
- if (PREDICT_FALSE (nif->lockp != 0))
- *nif->lockp = 0;
+ clib_spinlock_unlock_if_init (&nif->lockp);
if (n_left)
vlib_error_count (vm, node->node_index,