On 09/04/2019 10:36, Huang Rui wrote:
> If someone setup a bridge and add a port(for example: eth0)
> into the bridge, but configure the bridge's mtu which is equal
> to eth0's mtu, the auto tuning flag will not be set true. But
> the meaning of the auto tuning flag is that it will be set true
> if a user configure bridge's mtu.
> 
> Signed-off-by: Huang Rui <huangrui...@gmail.com>
> ---
>  net/core/dev.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 2b67f2a..ba410d7 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -7670,8 +7670,12 @@ int dev_set_mtu_ext(struct net_device *dev, int 
> new_mtu,
>  {
>       int err, orig_mtu;
>  
> -     if (new_mtu == dev->mtu)
> -             return 0;
> +     if (new_mtu == dev->mtu) {
> +             if (dev->priv_flags & IFF_EBRIDGE)
> +                     return __dev_set_mtu(dev, new_mtu);
> +             else
> +                     return 0;
> +     }
>  
>       /* MTU must be positive, and in range */
>       if (new_mtu < 0 || new_mtu < dev->min_mtu) {
> 

Nacked-by: Nikolay Aleksandrov <niko...@cumulusnetworks.com>

No, it is not. If the user specified the MTU then auto-tuning is disabled
on purpose because that is what the user desired as MTU. We've had so many
MTU issues over the years, it's hard to get it right and the auto-min/max
policies work only for some cases, to workaround that we disable the auto
policy when the user explicitly specifies the MTU[1].

Also please CC bridge maintainers when sending bridge patches.

Thanks,
 Nik

[1] This has been the behaviour since:
commit 804b854d374e
Author: Nikolay Aleksandrov <niko...@cumulusnetworks.com>
Date:   Fri Mar 30 13:46:19 2018 +0300

    net: bridge: disable bridge MTU auto tuning if it was set manually
    
    As Roopa noted today the biggest source of problems when configuring
    bridge and ports is that the bridge MTU keeps changing automatically on
    port events (add/del/changemtu). That leads to inconsistent behaviour
    and network config software needs to chase the MTU and fix it on each
    such event. Let's improve on that situation and allow for the user to
    set any MTU within ETH_MIN/MAX limits, but once manually configured it
    is the user's responsibility to keep it correct afterwards.
    
    In case the MTU isn't manually set - the behaviour reverts to the
    previous and the bridge follows the minimum MTU.
    
    Signed-off-by: Nikolay Aleksandrov <niko...@cumulusnetworks.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>

Reply via email to