diff mbox series

erspan: remove the incorrect mtu limit for erspan

Message ID 1569567500-20113-1-git-send-email-yanhaishuang@cmss.chinamobile.com
State Accepted
Delegated to: David Miller
Headers show
Series erspan: remove the incorrect mtu limit for erspan | expand

Commit Message

Haishuang Yan Sept. 27, 2019, 6:58 a.m. UTC
erspan driver calls ether_setup(), after commit 61e84623ace3
("net: centralize net_device min/max MTU checking"), the range
of mtu is [min_mtu, max_mtu], which is [68, 1500] by default.

It causes the dev mtu of the erspan device to not be greater
than 1500, this limit value is not correct for ipgre tap device.

Tested:
Before patch:
# ip link set erspan0 mtu 1600
Error: mtu greater than device maximum.
After patch:
# ip link set erspan0 mtu 1600
# ip -d link show erspan0
21: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1600 qdisc noop state DOWN
mode DEFAULT group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 0

Fixes: 61e84623ace3 ("net: centralize net_device min/max MTU checking")
Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
---
 net/ipv4/ip_gre.c | 1 +
 1 file changed, 1 insertion(+)

Comments

David Miller Sept. 30, 2019, 6:11 p.m. UTC | #1
From: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
Date: Fri, 27 Sep 2019 14:58:20 +0800

> erspan driver calls ether_setup(), after commit 61e84623ace3
> ("net: centralize net_device min/max MTU checking"), the range
> of mtu is [min_mtu, max_mtu], which is [68, 1500] by default.
> 
> It causes the dev mtu of the erspan device to not be greater
> than 1500, this limit value is not correct for ipgre tap device.
> 
> Tested:
> Before patch:
> # ip link set erspan0 mtu 1600
> Error: mtu greater than device maximum.
> After patch:
> # ip link set erspan0 mtu 1600
> # ip -d link show erspan0
> 21: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1600 qdisc noop state DOWN
> mode DEFAULT group default qlen 1000
>     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 0
> 
> Fixes: 61e84623ace3 ("net: centralize net_device min/max MTU checking")
> Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>

Applied and queued up for -stable.
William Tu Oct. 3, 2019, 6:29 p.m. UTC | #2
On Thu, Sep 26, 2019 at 11:59 PM Haishuang Yan
<yanhaishuang@cmss.chinamobile.com> wrote:
>
> erspan driver calls ether_setup(), after commit 61e84623ace3
> ("net: centralize net_device min/max MTU checking"), the range
> of mtu is [min_mtu, max_mtu], which is [68, 1500] by default.
>
> It causes the dev mtu of the erspan device to not be greater
> than 1500, this limit value is not correct for ipgre tap device.
>
> Tested:
> Before patch:
> # ip link set erspan0 mtu 1600
> Error: mtu greater than device maximum.
> After patch:
> # ip link set erspan0 mtu 1600
> # ip -d link show erspan0
> 21: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1600 qdisc noop state DOWN
> mode DEFAULT group default qlen 1000
>     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 0
>
> Fixes: 61e84623ace3 ("net: centralize net_device min/max MTU checking")
> Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
> ---

Thanks for the patch!
Acked-by: William Tu <u9012063@gmail.com>


>  net/ipv4/ip_gre.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
> index a53a543..52690bb 100644
> --- a/net/ipv4/ip_gre.c
> +++ b/net/ipv4/ip_gre.c
> @@ -1446,6 +1446,7 @@ static void erspan_setup(struct net_device *dev)
>         struct ip_tunnel *t = netdev_priv(dev);
>
>         ether_setup(dev);
> +       dev->max_mtu = 0;
>         dev->netdev_ops = &erspan_netdev_ops;
>         dev->priv_flags &= ~IFF_TX_SKB_SHARING;
>         dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
> --
> 1.8.3.1
>
>
>
diff mbox series

Patch

diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index a53a543..52690bb 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -1446,6 +1446,7 @@  static void erspan_setup(struct net_device *dev)
 	struct ip_tunnel *t = netdev_priv(dev);
 
 	ether_setup(dev);
+	dev->max_mtu = 0;
 	dev->netdev_ops = &erspan_netdev_ops;
 	dev->priv_flags &= ~IFF_TX_SKB_SHARING;
 	dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;