Files
linux/include/linux
Jon Kohler 1cd1c47234 virtio-net: avoid unnecessary checksum calculation on guest RX
Commit a2fb4bc4e2 ("net: implement virtio helpers to handle UDP
GSO tunneling.") inadvertently altered checksum offload behavior
for guests not using UDP GSO tunneling.

Before, tun_put_user called tun_vnet_hdr_from_skb, which passed
has_data_valid = true to virtio_net_hdr_from_skb.

After, tun_put_user began calling tun_vnet_hdr_tnl_from_skb instead,
which passes has_data_valid = false into both call sites.

This caused virtio hdr flags to not include VIRTIO_NET_HDR_F_DATA_VALID
for SKBs where skb->ip_summed == CHECKSUM_UNNECESSARY. As a result,
guests are forced to recalculate checksums unnecessarily.

Restore the previous behavior by ensuring has_data_valid = true is
passed in the !tnl_gso_type case, but only from tun side, as
virtio_net_hdr_tnl_from_skb() is used also by the virtio_net driver,
which in turn must not use VIRTIO_NET_HDR_F_DATA_VALID on tx.

cc: stable@vger.kernel.org
Fixes: a2fb4bc4e2 ("net: implement virtio helpers to handle UDP GSO tunneling.")
Signed-off-by: Jon Kohler <jon@nutanix.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Link: https://patch.msgid.link/20251125222754.1737443-1-jon@nutanix.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-11-26 19:45:54 -08:00
..
2025-09-24 17:09:47 +02:00
2025-06-15 21:19:08 +05:30
2025-09-05 15:06:03 +02:00
2025-07-21 18:18:51 +01:00
2025-04-21 10:27:59 +02:00
2025-04-29 15:58:38 -04:00
2025-07-31 11:28:03 -04:00
2025-09-24 02:48:05 -07:00
2025-05-21 13:39:45 +02:00
2025-08-14 10:37:33 -07:00
2025-04-11 18:58:10 -07:00
2025-09-23 11:13:22 +02:00
2025-04-17 10:56:11 +02:00
2025-04-10 10:39:14 +01:00
2025-11-14 08:56:49 -08:00
2025-11-12 10:47:42 +01:00
2025-08-21 13:58:07 +02:00
2025-07-16 14:28:21 +02:00
2025-05-22 11:07:05 +02:00
2025-09-13 17:32:44 -07:00
2025-08-29 13:39:53 -07:00
2025-08-02 12:06:10 -07:00
2025-09-18 10:17:09 +02:00
2025-09-23 11:13:22 +02:00
2025-06-11 11:57:14 -07:00
2025-07-02 17:18:01 +01:00
2025-07-17 06:01:16 -06:00
2025-09-13 16:54:50 -07:00
2025-07-09 22:41:56 -07:00
2025-09-17 15:58:29 -04:00
2025-06-17 18:18:46 -07:00
2025-07-14 15:20:02 -07:00
2025-09-23 13:28:20 -04:00
2025-07-08 19:11:57 -04:00
2025-09-19 14:26:16 +02:00
2025-09-25 09:23:47 +02:00
2025-08-18 14:23:09 +02:00
2025-08-18 14:23:09 +02:00
2025-10-01 07:55:42 -05:00
2025-05-21 16:46:37 +02:00
2025-09-13 16:55:07 -07:00
2025-10-03 10:24:14 -07:00
2025-06-19 14:28:24 +02:00
2025-06-19 14:28:24 +02:00
2025-07-22 18:07:11 +02:00
2025-08-24 11:41:11 -06:00
2025-07-01 12:29:29 +02:00
2025-05-03 12:02:04 +02:00
2025-05-11 17:54:09 -07:00
2025-05-06 11:11:45 -06:00
2025-08-28 13:14:50 +02:00
2025-04-10 18:34:05 -07:00
2025-09-19 17:19:45 -07:00
2025-07-23 11:56:02 +02:00
2025-08-17 12:46:25 +02:00
2025-06-26 09:44:45 -07:00
2025-09-09 10:27:01 -06:00
2025-10-01 07:24:55 -04:00
2025-07-17 11:26:56 +02:00
2025-08-02 12:01:37 -07:00