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 but 100 bytes per buffer.
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. v2, fixes rcu usage throughout thanks to Eric and the use of num_online_cpus() usage thanks to Jakub. v3, add slowpath patch to handle num_bufs > 1 Thanks, John --- 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 | 344 +++++++++++++++++++++++++++++++++++++++++++++- include/linux/filter.h | 1 net/core/filter.c | 6 + 3 files changed, 346 insertions(+), 5 deletions(-) -- Signature