Commit f7f87871 authored by Eric Garver's avatar Eric Garver Committed by Greg Kroah-Hartman

geneve: fix needed_headroom and max_mtu for collect_metadata


[ Upstream commit 9a1c44d9 ]

Since commit 9b4437a5 ("geneve: Unify LWT and netdev handling.")
when using COLLECT_METADATA geneve devices are created with too small of
a needed_headroom and too large of a max_mtu. This is because
ip_tunnel_info_af() is not valid with the device level info when using
COLLECT_METADATA and we mistakenly fall into the IPv4 case.

For COLLECT_METADATA, always use the worst case of ipv6 since both
sockets are created.

Fixes: 9b4437a5 ("geneve: Unify LWT and netdev handling.")
Signed-off-by: default avatarEric Garver <e@erig.me>
Acked-by: default avatarPravin B Shelar <pshelar@ovn.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 19456d45
...@@ -1133,7 +1133,7 @@ static int geneve_configure(struct net *net, struct net_device *dev, ...@@ -1133,7 +1133,7 @@ static int geneve_configure(struct net *net, struct net_device *dev,
/* make enough headroom for basic scenario */ /* make enough headroom for basic scenario */
encap_len = GENEVE_BASE_HLEN + ETH_HLEN; encap_len = GENEVE_BASE_HLEN + ETH_HLEN;
if (ip_tunnel_info_af(info) == AF_INET) { if (!metadata && ip_tunnel_info_af(info) == AF_INET) {
encap_len += sizeof(struct iphdr); encap_len += sizeof(struct iphdr);
dev->max_mtu -= sizeof(struct iphdr); dev->max_mtu -= sizeof(struct iphdr);
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment