Re: [PATCH net] virtio_net: fix alignment for virtio_net_hdr_v1_hash
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2025-10-30 08:17:50
Also in:
lkml, stable, virtualization
On Thu, Oct 30, 2025 at 10:40:13AM +0800, Jason Wang wrote:
On Wed, Oct 29, 2025 at 4:20 PM Paolo Abeni [off-list ref] wrote:quoted
On 10/29/25 2:24 AM, Jason Wang wrote:quoted
From: "Michael S. Tsirkin" <mst@redhat.com> Changing alignment of header would mean it's no longer safe to cast a 2 byte aligned pointer between formats. Use two 16 bit fields to make it 2 byte aligned as previously. This fixes the performance regression since commit ("virtio_net: enable gso over UDP tunnel support.") as it uses virtio_net_hdr_v1_hash_tunnel which embeds virtio_net_hdr_v1_hash. Pktgen in guest + XDP_DROP on TAP + vhost_net shows the TX PPS is recovered from 2.4Mpps to 4.45Mpps. Fixes: 56a06bd40fab ("virtio_net: enable gso over UDP tunnel support.") Cc: stable@vger.kernel.org Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Jason Wang <redacted>Whoops, I replied to the older thread before reading this one. Acked-by: Paolo Abeni <pabeni@redhat.com>I apologize, build will be broken since commit b2284768c6b32aa224ca7d0ef0741beb434f03aa Author: Jason Wang [off-list ref] Date: Wed Oct 22 11:44:21 2025 +0800 virtio-net: zero unused hash fields I will prepare a new version. Btw, it looks like there's an uAPI change that may break builds of the userspace:
No, I think this has not been out long enough to matter. QEMU imports linux headers extremely quickly but it can adapt.
quoted hunk ↗ jump to hunk
diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h index 8bf27ab8bcb4..1db45b01532b 100644 --- a/include/uapi/linux/virtio_net.h +++ b/include/uapi/linux/virtio_net.h@@ -193,7 +193,8 @@ struct virtio_net_hdr_v1 { struct virtio_net_hdr_v1_hash { struct virtio_net_hdr_v1 hdr; - __le32 hash_value; + __le16 hash_value_lo; + __le16 hash_value_hi;We can have a kernel only version for this but it probably means we need a kernel only version for all the future extension of vnet header? Thanks
Let's not complicate things too much please. -- MST