[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250617155742-mutt-send-email-mst@kernel.org>
Date: Tue, 17 Jun 2025 15:58:24 -0400
From: "Michael S. Tsirkin" <mst@...hat.com>
To: Paolo Abeni <pabeni@...hat.com>
Cc: netdev@...r.kernel.org,
Willem de Bruijn <willemdebruijn.kernel@...il.com>,
Jason Wang <jasowang@...hat.com>,
Andrew Lunn <andrew+netdev@...n.ch>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Xuan Zhuo <xuanzhuo@...ux.alibaba.com>,
Eugenio Pérez <eperezma@...hat.com>,
Yuri Benditovich <yuri.benditovich@...nix.com>,
Akihiko Odaki <akihiko.odaki@...nix.com>
Subject: Re: [PATCH v4 net-next 0/8] virtio: introduce GSO over UDP tunnel
On Tue, Jun 17, 2025 at 06:12:07PM +0200, Paolo Abeni wrote:
> Some virtualized deployments use UDP tunnel pervasively and are impacted
> negatively by the lack of GSO support for such kind of traffic in the
> virtual NIC driver.
>
> The virtio_net specification recently introduced support for GSO over
> UDP tunnel, this series updates the virtio implementation to support
> such a feature.
>
> Currently the kernel virtio support limits the feature space to 64,
> while the virtio specification allows for a larger number of features.
> Specifically the GSO-over-UDP-tunnel-related virtio features use bits
> 65-69.
>
> The first four patches in this series rework the virtio and vhost
> feature support to cope with up to 128 bits. The limit is set by
> a define and could be easily raised in future, as needed.
>
> This implementation choice is aimed at keeping the code churn as
> limited as possible. For the same reason, only the virtio_net driver is
> reworked to leverage the extended feature space; all other
> virtio/vhost drivers are unaffected, but could be upgraded to support
> the extended features space in a later time.
>
> The last four patches bring in the actual GSO over UDP tunnel support.
> As per specification, some additional fields are introduced into the
> virtio net header to support the new offload. The presence of such
> fields depends on the negotiated features.
>
> New helpers are introduced to convert the UDP-tunneled skb metadata to
> an extended virtio net header and vice versa. Such helpers are used by
> the tun and virtio_net driver to cope with the newly supported offloads.
>
> Tested with basic stream transfer with all the possible permutations of
> host kernel/qemu/guest kernel with/without GSO over UDP tunnel support.
>
Hi!
I'm out sick. Hope to get to this next week. Sorry about the delay.
> ---
> v3 -> v4:
> - vnet sockopt cleanup
> - fixed offset for UDP-tunnel related field
> - use dev->features instead of flags
> v3: https://lore.kernel.org/netdev/cover.1749210083.git.pabeni@redhat.com/
>
> v2 -> v3:
> - uint128_t -> u64[2]
> - dropped related ifdef
> - define and use vnet_hdr with tunnel layouts
> v2: https://lore.kernel.org/netdev/cover.1748614223.git.pabeni@redhat.com/
>
> v1 -> v2:
> - fix build failures
> - many comment clarification
> - changed the vhost_net ioctl API
> - fixed some hdr <> skb helper bugs
> v1: https://lore.kernel.org/netdev/cover.1747822866.git.pabeni@redhat.com/
>
> Paolo Abeni (8):
> virtio: introduce extended features
> virtio_pci_modern: allow configuring extended features
> vhost-net: allow configuring extended features
> virtio_net: add supports for extended offloads
> net: implement virtio helpers to handle UDP GSO tunneling.
> virtio_net: enable gso over UDP tunnel support.
> tun: enable gso over UDP tunnel support.
> vhost/net: enable gso over UDP tunnel support.
>
> drivers/net/tun.c | 70 +++++++--
> drivers/net/tun_vnet.h | 88 +++++++++--
> drivers/net/virtio_net.c | 109 +++++++++++---
> drivers/vhost/net.c | 95 +++++++++---
> drivers/vhost/vhost.c | 2 +-
> drivers/vhost/vhost.h | 4 +-
> drivers/virtio/virtio.c | 43 +++---
> drivers/virtio/virtio_debug.c | 27 ++--
> drivers/virtio/virtio_pci_modern.c | 10 +-
> drivers/virtio/virtio_pci_modern_dev.c | 69 +++++----
> include/linux/virtio.h | 5 +-
> include/linux/virtio_config.h | 41 +++---
> include/linux/virtio_features.h | 88 +++++++++++
> include/linux/virtio_net.h | 196 ++++++++++++++++++++++++-
> include/linux/virtio_pci_modern.h | 43 +++++-
> include/uapi/linux/if_tun.h | 9 ++
> include/uapi/linux/vhost.h | 7 +
> include/uapi/linux/vhost_types.h | 5 +
> include/uapi/linux/virtio_net.h | 33 +++++
> 19 files changed, 780 insertions(+), 164 deletions(-)
> create mode 100644 include/linux/virtio_features.h
>
> --
> 2.49.0
Powered by blists - more mailing lists