]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - net/ipv6/ip6_tunnel.c
ip6_tunnel: remove magic mtu value 0xFFF8
[mirror_ubuntu-bionic-kernel.git] / net / ipv6 / ip6_tunnel.c
index 0cb28b1bfc8035acb07bf6667dcd6ff30735dd54..94edf3a0a41f67d4ec1eb41a9d512b859751de0f 100644 (file)
@@ -1685,8 +1685,13 @@ int ip6_tnl_change_mtu(struct net_device *dev, int new_mtu)
                if (new_mtu < ETH_MIN_MTU)
                        return -EINVAL;
        }
-       if (new_mtu > 0xFFF8 - dev->hard_header_len)
-               return -EINVAL;
+       if (tnl->parms.proto == IPPROTO_IPV6 || tnl->parms.proto == 0) {
+               if (new_mtu > IP6_MAX_MTU - dev->hard_header_len)
+                       return -EINVAL;
+       } else {
+               if (new_mtu > IP_MAX_MTU - dev->hard_header_len)
+                       return -EINVAL;
+       }
        dev->mtu = new_mtu;
        return 0;
 }
@@ -1834,7 +1839,7 @@ ip6_tnl_dev_init_gen(struct net_device *dev)
        if (!(t->parms.flags & IP6_TNL_F_IGN_ENCAP_LIMIT))
                dev->mtu -= 8;
        dev->min_mtu = ETH_MIN_MTU;
-       dev->max_mtu = 0xFFF8 - dev->hard_header_len;
+       dev->max_mtu = IP6_MAX_MTU - dev->hard_header_len;
 
        return 0;