Le 30/06/2020 à 08:22, Jakub Kicinski a écrit : [snip] > My understanding is that for a while now tunnels are not supposed to use > dev->hard_header_len to reserve skb space, and use dev->needed_headroom, > instead. sit uses hard_header_len and doesn't even copy needed_headroom > of the lower device.
I missed this. I was wondering why IPv6 tunnels uses hard_header_len, if there was a "good" reason: $ git grep "hard_header_len.*=" net/ipv6/ net/ipv6/ip6_tunnel.c: dev->hard_header_len = tdev->hard_header_len + t_hlen; net/ipv6/ip6_tunnel.c: dev->hard_header_len = LL_MAX_HEADER + t_hlen; net/ipv6/sit.c: dev->hard_header_len = tdev->hard_header_len + sizeof(struct iphdr); net/ipv6/sit.c: dev->hard_header_len = LL_MAX_HEADER + t_hlen; A cleanup would be nice ;-)