| From | Greg Kroah-Hartman <> | Subject | [PATCH 4.11 011/150] geneve: fix needed_headroom and max_mtu for collect_metadata | Date | Mon, 12 Jun 2017 17:23:38 +0200 |
| |
4.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Garver <e@erig.me>
[ Upstream commit 9a1c44d989bff4c992b8b9a112d9fda275ea5515 ]
Since commit 9b4437a5b870 ("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: 9b4437a5b870 ("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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- drivers/net/geneve.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -1133,7 +1133,7 @@ static int geneve_configure(struct net * /* make enough headroom for basic scenario */ 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); dev->max_mtu -= sizeof(struct iphdr); } else {
|