[Bridge] [PATCH] net:bridge:always disable auto-tuning when the user specified MTU

Petr Machata petrm at mellanox.com
Wed Apr 10 10:34:17 UTC 2019

Stephen Hemminger <stephen at networkplumber.org> writes:

> On Wed, 10 Apr 2019 02:32:08 +0000
> Huang Rui <huangruippp at gmail.com> wrote:
>> For example.
>> My purpose is to create a bridge br0 and join eth0 into br0.
>> if we use this following way, the auto-tuning flag will not be disabled.
>> If eth0's mtu is 1200
>> step 1.brctl addbr br0
>> step 2.brctl addif br0 eth0
>> step 3.ifconfig br0 mtu 1200
>> step 4.ifconfig eth0 mtu 1500
>> Result:
>> br0's MTU: 1500, eth0's MTU: 1500
>> Expected:
>> br0's MTU: 1200, eth0's MTU: 1500
>> I have specified br0's MTU,  but auto-min policy works. So the MTU is
>> not the result what we expected.
>> As expected, if i have specified bridge's MTU, it will set the flag:
>> BROPT_MTU_SET_BY_USER in net_bridge_opts disabled and auto-min/max
>> policy will not work.But in this case, because the dev_set_mtu return
>> early, the BROPT_MTU_SET_BY_USER flag will not be disabled and
>> auto-min/max policy will still work.
>> Signed-off-by: Huang Rui <huangruiPPP at gmail.com>
> A bridge like this going to drop frames.
> A frame received with MTU of 1200 will get dropped.

That's true even if above you set br0's MTU to 1201, but then the
auto-tuning is disabled as expected. The problem is that setting MTU to
1200 is perceived as a non-change, whereas it should instead be
perceived as a signal that the user takes over the MTU management.

> The proper way to do this is to change MTU of both interfaces to match.

More information about the Bridge mailing list