Re: [PATCH net] ip6_tunnel: Fix broken GRO

From: Paolo Abeni
Date: Thu Aug 15 2024 - 06:59:21 EST




On 8/13/24 13:59, Thomas Bogendoerfer wrote:
GRO code checks for matching layer 2 headers to see, if packet belongs
to the same flow and because ip6 tunnel set dev->hard_header_len
this check fails in cases, where it shouldn't. To fix this don't
set hard_header_len, but use needed_headroom like ipv4/ip_tunnel.c
does.

Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@xxxxxxx>

Please include a suitable fixes tag.

@@ -1731,6 +1732,7 @@ ip6_tnl_siocdevprivate(struct net_device *dev, struct ifreq *ifr,
int ip6_tnl_change_mtu(struct net_device *dev, int new_mtu)
{
struct ip6_tnl *tnl = netdev_priv(dev);
+ int t_hlen = tnl->hlen + sizeof(struct ipv6hdr);

Please respect the reverse xmas tree order above.
if (tnl->parms.proto == IPPROTO_IPV6) {
if (new_mtu < IPV6_MIN_MTU
Side node: it would be nice to extend the existing self-tests to cover this kind of tunnels, too.

Thanks,

Paolo