On 04.11.20 20:52, Willem de Bruijn wrote: >>>> Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.") >>> >>> How did you arrive at this SHA1? >> I think the legacy usage of hard_header_len in ipv6/sit.c was overseen in >> c54419321455. >> Please correct me if I'm wrong. > > I don't see anything in that patch assign or modify hard_header_len. > It's not assigning or modifying it but changing expectations about how dev->hard_header_len is to be used.
The patch changed the MTU calculation from: mtu = dst_mtu(&rt->dst) - dev->hard_header_len - tunnel->hlen; to this: mtu = dst_mtu(&rt->dst) - dev->hard_header_len - sizeof(struct iphdr); Later is became this (in patch 23a3647. This is the current implementation.): mtu = dst_mtu(&rt->dst) - dev->hard_header_len - sizeof(struct iphdr) - tunnel_hlen; Apparently the initial usage of dev->hard_header_len was that it contains the length of all headers before the tunnel payload. c54419321455 changed it to assuming dev->hard_header_len does not contain the tunnels outter IP header. Thus I think the bug was introduced by c54419321455. Kind Regards Oliver