[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <18b082d4-cef9-bb39-0680-8187f6951bbc@cumulusnetworks.com>
Date: Sun, 7 Apr 2019 07:30:29 -0700
From: David Ahern <dsa@...ulusnetworks.com>
To: linmiaohe <linmiaohe@...wei.com>,
Shrijeet Mukherjee <shrijeet@...il.com>, davem@...emloft.net,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: Mingfangsen <mingfangsen@...wei.com>
Subject: Re: [PATCH net v2] net: vrf: Fix ping failed when vrf mtu is set to 0
On 4/6/19 11:46 PM, linmiaohe wrote:
> diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
> index 7c1430ed0244..4d35d37f225a 100644
> --- a/drivers/net/vrf.c
> +++ b/drivers/net/vrf.c
> @@ -43,6 +43,12 @@
>
> #define FIB_RULE_PREF 1000 /* default preference for FIB rules */
>
> +/* The MTU is really irrelevant for VRF except for odd cases, so limit it
> + * to a reasonable range which both works for IPV4 and IPV6.
> + */
> +#define VRF_MIN_MTU 1280 /* same as IPV6_MIN_MTU */
> +#define VRF_MAX_MTU 0xFFFFU /* same as IP_MAX_MTU */
Since VRF does not care about MTU, there is no reason for VRF specific
macros.
> +
> static unsigned int vrf_net_id;
>
> struct net_vrf {
> @@ -1274,8 +1280,8 @@ static void vrf_setup(struct net_device *dev)
> /* default to no qdisc; user can add if desired */
> dev->priv_flags |= IFF_NO_QUEUE;
>
> - dev->min_mtu = 0;
> - dev->max_mtu = 0;
> + dev->min_mtu = VRF_MIN_MTU;
> + dev->max_mtu = VRF_MAX_MTU;
Set these to IPV6_MIN_MTU and ETH_MAX_MTU and add a comment that VRF
devices do not care about MTU, but if the MTU is set too low then the
ipv4 and ipv6 protocols are disabled which breaks networking.
Powered by blists - more mailing lists