This implements virtio_net for the mergeable buffers and big_packet modes. I tested this with vhost_net running on qemu and did not see any issues. For testing num_buf > 1 I added a hack to vhost driver to only use 100 bytes per buffer so that packets were pushed across multiple buffers.
There are some restrictions for XDP to be enabled and work well (see patch 3) for more details. 1. LRO must be off 2. MTU must be less than PAGE_SIZE 3. queues must be available to dedicate to XDP 4. num_bufs received in mergeable buffers must be 1 5. big_packet mode must have all data on single page Please review any comments/feedback welcome as always. --- John Fastabend (6): net: virtio dynamically disable/enable LRO net: xdp: add invalid buffer warning virtio_net: Add XDP support virtio_net: add dedicated XDP transmit queues virtio_net: add XDP_TX support virtio_net: xdp, add slowpath case for non contiguous buffers drivers/net/virtio_net.c | 376 +++++++++++++++++++++++++++++++++++++++++++++- include/linux/filter.h | 1 net/core/filter.c | 6 + 3 files changed, 377 insertions(+), 6 deletions(-) -- Signature