* [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels
@ 2018-02-27 11:19 Xin Long
2018-02-27 11:19 ` [PATCH net 1/3] ip_gre: fix IFLA_MTU ignored on NEWLINK Xin Long
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Xin Long @ 2018-02-27 11:19 UTC (permalink / raw)
To: network dev; +Cc: davem
The fix for ip_gre follows the way other ip tunnels do: not to
set mtu in ndo_init, as ip_tunnel_newlink will take care of it
properly.
The fix for ip6_tunnel and sit follows the way ipv6 tunenls do:
to set mtu again according to IFLA_MTU after, as all bind_dev
are called in ndo_init where it can't get the tb[IFLA_MTU].
Xin Long (3):
ip_gre: fix IFLA_MTU ignored on NEWLINK
ip6_tunnel: fix IFLA_MTU ignored on NEWLINK
sit: fix IFLA_MTU ignored on NEWLINK
net/ipv4/ip_gre.c | 5 -----
net/ipv6/ip6_tunnel.c | 12 ++++++++----
net/ipv6/sit.c | 7 +++++++
3 files changed, 15 insertions(+), 9 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net 1/3] ip_gre: fix IFLA_MTU ignored on NEWLINK
2018-02-27 11:19 [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels Xin Long
@ 2018-02-27 11:19 ` Xin Long
2018-02-27 11:19 ` [PATCH net 2/3] ip6_tunnel: " Xin Long
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Xin Long @ 2018-02-27 11:19 UTC (permalink / raw)
To: network dev; +Cc: davem
It's safe to remove the setting of dev's needed_headroom and mtu in
__gre_tunnel_init, as discussed in [1], ip_tunnel_newlink can do it
properly.
Now Eric noticed that it could cover the mtu value set in do_setlink
when creating a ip_gre dev. It makes IFLA_MTU param not take effect.
So this patch is to remove them to make IFLA_MTU work, as in other
ipv4 tunnels.
[1]: https://patchwork.ozlabs.org/patch/823504/
Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
Reported-by: Eric Garver <e@erig.me>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
net/ipv4/ip_gre.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 45d97e9..0901de4 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -970,9 +970,6 @@ static void __gre_tunnel_init(struct net_device *dev)
t_hlen = tunnel->hlen + sizeof(struct iphdr);
- dev->needed_headroom = LL_MAX_HEADER + t_hlen + 4;
- dev->mtu = ETH_DATA_LEN - t_hlen - 4;
-
dev->features |= GRE_FEATURES;
dev->hw_features |= GRE_FEATURES;
@@ -1290,8 +1287,6 @@ static int erspan_tunnel_init(struct net_device *dev)
erspan_hdr_len(tunnel->erspan_ver);
t_hlen = tunnel->hlen + sizeof(struct iphdr);
- dev->needed_headroom = LL_MAX_HEADER + t_hlen + 4;
- dev->mtu = ETH_DATA_LEN - t_hlen - 4;
dev->features |= GRE_FEATURES;
dev->hw_features |= GRE_FEATURES;
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
--
2.1.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net 2/3] ip6_tunnel: fix IFLA_MTU ignored on NEWLINK
2018-02-27 11:19 [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels Xin Long
2018-02-27 11:19 ` [PATCH net 1/3] ip_gre: fix IFLA_MTU ignored on NEWLINK Xin Long
@ 2018-02-27 11:19 ` Xin Long
2018-02-27 11:19 ` [PATCH net 3/3] sit: " Xin Long
2018-02-27 19:36 ` [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels David Miller
3 siblings, 0 replies; 5+ messages in thread
From: Xin Long @ 2018-02-27 11:19 UTC (permalink / raw)
To: network dev; +Cc: davem
Commit 128bb975dc3c ("ip6_gre: init dev->mtu and dev->hard_header_len
correctly") fixed IFLA_MTU ignored on NEWLINK for ip6_gre. The same
mtu fix is also needed for ip6_tunnel.
Note that dev->hard_header_len setting for ip6_tunnel works fine,
no need to fix it.
Reported-by: Jianlin Shi <jishi@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
net/ipv6/ip6_tunnel.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
index 4b15fe9..6e0f21e 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -1982,14 +1982,14 @@ static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
{
struct net *net = dev_net(dev);
struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
- struct ip6_tnl *nt, *t;
struct ip_tunnel_encap ipencap;
+ struct ip6_tnl *nt, *t;
+ int err;
nt = netdev_priv(dev);
if (ip6_tnl_netlink_encap_parms(data, &ipencap)) {
- int err = ip6_tnl_encap_setup(nt, &ipencap);
-
+ err = ip6_tnl_encap_setup(nt, &ipencap);
if (err < 0)
return err;
}
@@ -2005,7 +2005,11 @@ static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
return -EEXIST;
}
- return ip6_tnl_create2(dev);
+ err = ip6_tnl_create2(dev);
+ if (!err && tb[IFLA_MTU])
+ ip6_tnl_change_mtu(dev, nla_get_u32(tb[IFLA_MTU]));
+
+ return err;
}
static int ip6_tnl_changelink(struct net_device *dev, struct nlattr *tb[],
--
2.1.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net 3/3] sit: fix IFLA_MTU ignored on NEWLINK
2018-02-27 11:19 [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels Xin Long
2018-02-27 11:19 ` [PATCH net 1/3] ip_gre: fix IFLA_MTU ignored on NEWLINK Xin Long
2018-02-27 11:19 ` [PATCH net 2/3] ip6_tunnel: " Xin Long
@ 2018-02-27 11:19 ` Xin Long
2018-02-27 19:36 ` [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels David Miller
3 siblings, 0 replies; 5+ messages in thread
From: Xin Long @ 2018-02-27 11:19 UTC (permalink / raw)
To: network dev; +Cc: davem
Commit 128bb975dc3c ("ip6_gre: init dev->mtu and dev->hard_header_len
correctly") fixed IFLA_MTU ignored on NEWLINK for ip6_gre. The same
mtu fix is also needed for sit.
Note that dev->hard_header_len setting for sit works fine, no need to
fix it. sit is actually ipv4 tunnel, it can't call ip6_tnl_change_mtu
to set mtu.
Reported-by: Jianlin Shi <jishi@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
net/ipv6/sit.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
index 3a1775a..0195598 100644
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -1578,6 +1578,13 @@ static int ipip6_newlink(struct net *src_net, struct net_device *dev,
if (err < 0)
return err;
+ if (tb[IFLA_MTU]) {
+ u32 mtu = nla_get_u32(tb[IFLA_MTU]);
+
+ if (mtu >= IPV6_MIN_MTU && mtu <= 0xFFF8 - dev->hard_header_len)
+ dev->mtu = mtu;
+ }
+
#ifdef CONFIG_IPV6_SIT_6RD
if (ipip6_netlink_6rd_parms(data, &ip6rd))
err = ipip6_tunnel_update_6rd(nt, &ip6rd);
--
2.1.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels
2018-02-27 11:19 [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels Xin Long
` (2 preceding siblings ...)
2018-02-27 11:19 ` [PATCH net 3/3] sit: " Xin Long
@ 2018-02-27 19:36 ` David Miller
3 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2018-02-27 19:36 UTC (permalink / raw)
To: lucien.xin; +Cc: netdev
From: Xin Long <lucien.xin@gmail.com>
Date: Tue, 27 Feb 2018 19:19:38 +0800
> The fix for ip_gre follows the way other ip tunnels do: not to
> set mtu in ndo_init, as ip_tunnel_newlink will take care of it
> properly.
>
> The fix for ip6_tunnel and sit follows the way ipv6 tunenls do:
> to set mtu again according to IFLA_MTU after, as all bind_dev
> are called in ndo_init where it can't get the tb[IFLA_MTU].
Series applied, thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-02-27 19:36 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-27 11:19 [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels Xin Long
2018-02-27 11:19 ` [PATCH net 1/3] ip_gre: fix IFLA_MTU ignored on NEWLINK Xin Long
2018-02-27 11:19 ` [PATCH net 2/3] ip6_tunnel: " Xin Long
2018-02-27 11:19 ` [PATCH net 3/3] sit: " Xin Long
2018-02-27 19:36 ` [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.