summaryrefslogtreecommitdiffstats
path: root/src/vnet/devices/virtio
diff options
context:
space:
mode:
authorSteven Luong <sluong@cisco.com>2024-03-20 12:28:49 -0700
committerBeno�t Ganne <bganne@cisco.com>2024-05-23 17:50:50 +0000
commit1b053782a51d0bd2b1172b62665520af476d1a54 (patch)
treef146eb175b54c00b62bb0fc621030c2084b47ef5 /src/vnet/devices/virtio
parent0df582e8ecbe6a4d45c9b2a8b822dcbe039eec29 (diff)
virtio: Add RX queue full statisitics
In production network, often the host and the vm are managed by different groups. The host statistics may not be readily available to the folks who manage the VM. Having the RX queue full statistics in VPP can inform that there might possibly be drops in the host. Type: improvement Change-Id: I43206647ac0d8092968c4187236d9696ae0acccd Signed-off-by: Steven Luong <sluong@cisco.com>
Diffstat (limited to 'src/vnet/devices/virtio')
-rw-r--r--src/vnet/devices/virtio/node.c10
-rw-r--r--src/vnet/devices/virtio/virtio_inline.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/src/vnet/devices/virtio/node.c b/src/vnet/devices/virtio/node.c
index 8c837575cf8..027e1ed4e74 100644
--- a/src/vnet/devices/virtio/node.c
+++ b/src/vnet/devices/virtio/node.c
@@ -282,6 +282,16 @@ virtio_device_input_gso_inline (vlib_main_t *vm, vlib_node_runtime_t *node,
if (n_left == 0)
return 0;
+ if (PREDICT_FALSE (n_left == vring->queue_size))
+ {
+ /*
+ * Informational error logging when VPP is not pulling packets fast
+ * enough.
+ */
+ vlib_error_count (vm, node->node_index, VIRTIO_INPUT_ERROR_FULL_RX_QUEUE,
+ 1);
+ }
+
if (type == VIRTIO_IF_TYPE_TUN)
{
next_index = VNET_DEVICE_INPUT_NEXT_IP4_INPUT;
diff --git a/src/vnet/devices/virtio/virtio_inline.h b/src/vnet/devices/virtio/virtio_inline.h
index 179f319aa4c..41bba755934 100644
--- a/src/vnet/devices/virtio/virtio_inline.h
+++ b/src/vnet/devices/virtio/virtio_inline.h
@@ -17,6 +17,7 @@
#define foreach_virtio_input_error \
_ (BUFFER_ALLOC, "buffer alloc error") \
+ _ (FULL_RX_QUEUE, "full rx queue (driver tx drop)") \
_ (UNKNOWN, "unknown")
typedef enum