* [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
2018-02-27 19:36 ` [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels David Miller
0 siblings, 2 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
2018-02-27 19:36 ` [PATCH net 0/3] net: fix IFLA_MTU ignored on NEWLINK for some ip and ipv6 tunnels David Miller
1 sibling, 1 reply; 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 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
0 siblings, 1 reply; 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 2/3] ip6_tunnel: " Xin Long
@ 2018-02-27 11:19 ` Xin Long
0 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
2018-02-27 11:19 ` [PATCH net 1/3] ip_gre: fix IFLA_MTU ignored on NEWLINK Xin Long
@ 2018-02-27 19:36 ` David Miller
1 sibling, 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).