Skip to content

Commit f7ff1fd

Browse files
NicolasDichteldavem330
authored andcommitted
ip6_tunnel: remove magic mtu value 0xFFF8
I don't know where this value comes from (probably a copy and paste and paste and paste ...). Let's use standard values which are a bit greater. Link: https://git.kernel.org/pub/scm/linux/kernel/git/davem/netdev-vger-cvs.git/commit/?id=e5afd356a411a Signed-off-by: Nicolas Dichtel <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 82612de commit f7ff1fd

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

net/ipv6/ip6_tunnel.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1692,8 +1692,13 @@ int ip6_tnl_change_mtu(struct net_device *dev, int new_mtu)
16921692
if (new_mtu < ETH_MIN_MTU)
16931693
return -EINVAL;
16941694
}
1695-
if (new_mtu > 0xFFF8 - dev->hard_header_len)
1696-
return -EINVAL;
1695+
if (tnl->parms.proto == IPPROTO_IPV6 || tnl->parms.proto == 0) {
1696+
if (new_mtu > IP6_MAX_MTU - dev->hard_header_len)
1697+
return -EINVAL;
1698+
} else {
1699+
if (new_mtu > IP_MAX_MTU - dev->hard_header_len)
1700+
return -EINVAL;
1701+
}
16971702
dev->mtu = new_mtu;
16981703
return 0;
16991704
}
@@ -1841,7 +1846,7 @@ ip6_tnl_dev_init_gen(struct net_device *dev)
18411846
if (!(t->parms.flags & IP6_TNL_F_IGN_ENCAP_LIMIT))
18421847
dev->mtu -= 8;
18431848
dev->min_mtu = ETH_MIN_MTU;
1844-
dev->max_mtu = 0xFFF8 - dev->hard_header_len;
1849+
dev->max_mtu = IP6_MAX_MTU - dev->hard_header_len;
18451850

18461851
return 0;
18471852

net/ipv6/sit.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,7 +1371,7 @@ static void ipip6_tunnel_setup(struct net_device *dev)
13711371
dev->hard_header_len = LL_MAX_HEADER + t_hlen;
13721372
dev->mtu = ETH_DATA_LEN - t_hlen;
13731373
dev->min_mtu = IPV6_MIN_MTU;
1374-
dev->max_mtu = 0xFFF8 - t_hlen;
1374+
dev->max_mtu = IP6_MAX_MTU - t_hlen;
13751375
dev->flags = IFF_NOARP;
13761376
netif_keep_dst(dev);
13771377
dev->addr_len = 4;
@@ -1583,7 +1583,8 @@ static int ipip6_newlink(struct net *src_net, struct net_device *dev,
15831583
if (tb[IFLA_MTU]) {
15841584
u32 mtu = nla_get_u32(tb[IFLA_MTU]);
15851585

1586-
if (mtu >= IPV6_MIN_MTU && mtu <= 0xFFF8 - dev->hard_header_len)
1586+
if (mtu >= IPV6_MIN_MTU &&
1587+
mtu <= IP6_MAX_MTU - dev->hard_header_len)
15871588
dev->mtu = mtu;
15881589
}
15891590

0 commit comments

Comments
 (0)