On Thu, Jan 28, 2021 at 9:21 PM Willem de Bruijn <willemdebruijn.ker...@gmail.com> wrote: > > On Thu, Jan 28, 2021 at 8:02 PM Vadim Fedorenko <vfedore...@novek.ru> wrote: > > > > dev->hard_header_len for tunnel interface is set only when header_ops > > are set too and already contains full overhead of any tunnel encapsulation. > > That's why there is not need to use this overhead twice in mtu calc. > > > > Fixes: fdafed459998 ("ip_gre: set dev->hard_header_len and > > dev->needed_headroom properly") > > Reported-by: Slava Bacherikov <m...@slava.cc> > > Signed-off-by: Vadim Fedorenko <vfedore...@novek.ru> > > Acked-by: Willem de Bruijn <will...@google.com> > > It is easy to verify that if hard_header_len is zero the calculation > does not change. And as discussed, ip_gre is the only ip_tunnel > user that sometimes has it non-zero (for legacy reasons that > we cannot revert now). In that case it is equivalent to tun->hlen + > sizeof(struct iphdr). LGTM. Thanks!
Actually, following that reasoning, we can just remove dev->hard_header_len from these calculations, no need for branching. > > Btw, ip6_gre might need the same after commit 832ba596494b > ("net: ip6_gre: set dev->hard_header_len when using header_ops")