MTU: Software interface / Per-protocol MTU support
[vpp.git] / src / vnet / devices / virtio / virtio.c
index 3867cf0..072e8a7 100644 (file)
@@ -100,7 +100,7 @@ virtio_vring_init (vlib_main_t * vm, virtio_if_t * vif, u16 idx, u16 sz)
   memset (vring->used, 0, i);
 
   ASSERT (vring->buffers == 0);
-  vec_validate_aligned (vring->buffers, sz * 2, CLIB_CACHE_LINE_BYTES);
+  vec_validate_aligned (vring->buffers, sz, CLIB_CACHE_LINE_BYTES);
 
   vring->size = sz;
   vring->call_fd = eventfd (0, EFD_NONBLOCK | EFD_CLOEXEC);
@@ -109,6 +109,8 @@ virtio_vring_init (vlib_main_t * vm, virtio_if_t * vif, u16 idx, u16 sz)
   t.read_function = call_read_ready;
   t.file_descriptor = vring->call_fd;
   t.private_data = vif->dev_instance << 16 | idx;
+  t.description = format (0, "%U vring %u", format_virtio_device_name,
+                         vif->dev_instance, idx);
   vring->call_file_index = clib_file_add (&file_main, &t);
 
   state.index = idx;
@@ -138,13 +140,13 @@ static_always_inline void
 virtio_free_rx_buffers (vlib_main_t * vm, virtio_vring_t * vring)
 {
   u16 used = vring->desc_in_use;
-  u16 next = vring->desc_next;
+  u16 last = vring->last_used_idx;
   u16 mask = vring->size - 1;
 
   while (used)
     {
-      vlib_buffer_free (vm, &vring->buffers[next], 1);
-      next = (next + 1) & mask;
+      vlib_buffer_free (vm, &vring->buffers[last & mask], 1);
+      last++;
       used--;
     }
 }