geneve: fix needed_headroom and max_mtu for collect_metadata

Since commit 9b4437a5b8 ("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: 9b4437a5b8 ("geneve: Unify LWT and netdev handling.")
Signed-off-by: Eric Garver <e@erig.me>
Acked-by: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Garver 2017-06-02 14:54:10 -04:00 committed by David S. Miller
parent 38b257938a
commit 9a1c44d989

View File

@ -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 {