virtio: add packet buffering on tx
Type: feature
This patch adds packet buffering on tx for
slow backend which have some jitter/delays
in freeing the vrings.
There are some limitations to the current design:
1) It only works in poll mode.
2) Atleast 1 rx queue of an interface (with buffering
enabled) should be placed on each worker and main thread.
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
Change-Id: Ib93c350298b228e80426e58ac77f3bbc93b8be27
diff --git a/src/vnet/devices/virtio/virtio_api.c b/src/vnet/devices/virtio/virtio_api.c
index 9a145d9..d993104 100644
--- a/src/vnet/devices/virtio/virtio_api.c
+++ b/src/vnet/devices/virtio/virtio_api.c
@@ -126,15 +126,18 @@
STATIC_ASSERT (((int) VIRTIO_API_FLAG_IN_ORDER ==
(int) VIRTIO_FLAG_IN_ORDER),
"virtio in-order api flag mismatch");
+ STATIC_ASSERT (((int) VIRTIO_API_FLAG_BUFFERING ==
+ (int) VIRTIO_FLAG_BUFFERING),
+ "virtio buffering api flag mismatch");
ap->virtio_flags = clib_net_to_host_u32 (mp->virtio_flags);
ap->features = clib_net_to_host_u64 (mp->features);
- if (ap->virtio_flags & VIRTIO_FLAG_GSO)
+ if (ap->virtio_flags & VIRTIO_API_FLAG_GSO)
ap->gso_enabled = 1;
else
ap->gso_enabled = 0;
- if (ap->virtio_flags & VIRTIO_FLAG_CSUM_OFFLOAD)
+ if (ap->virtio_flags & VIRTIO_API_FLAG_CSUM_OFFLOAD)
ap->checksum_offload_enabled = 1;
else
ap->checksum_offload_enabled = 0;