virtio_ring: Fix error reporting in virtqueue_resize

JIRA: https://issues.redhat.com/browse/RHEL-84199

Enforce minimum TX ring size for reliability

The tx_may_stop() logic stops TX queues if free descriptors (sq->vq->num_free) fall below the threshold of (MAX_SKB_FRAGS + 2). If the total ring size (ring_num) is not strictly greater than this value, queues can become persistently stopped or stop after minimal use, severely degrading performance.

A single sk_buff transmission typically requires descriptors for:

  • The virtio_net_hdr (1 descriptor)
  • The sk_buff's linear data (head) (1 descriptor)
  • Paged fragments (up to MAX_SKB_FRAGS descriptors)

Signed-off-by: Laurent Vivier lvivier@redhat.com

Edited by Laurent Vivier

Merge request reports

Loading