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