On Sun, Aug 28, 2022 at 12:23:30PM +0200, netdev@xxxxxxxxxxxxxxxxxxxx wrote: > On 2022-08-27 17:19, Ido Schimmel wrote: > > On Fri, Aug 26, 2022 at 01:45:33PM +0200, Hans Schultz wrote: > > > > > > nbp_switchdev_frame_mark(p, skb); > > > @@ -943,6 +946,10 @@ static int br_setport(struct net_bridge_port > > > *p, struct nlattr *tb[], > > > br_set_port_flag(p, tb, IFLA_BRPORT_NEIGH_SUPPRESS, > > > BR_NEIGH_SUPPRESS); > > > br_set_port_flag(p, tb, IFLA_BRPORT_ISOLATED, BR_ISOLATED); > > > br_set_port_flag(p, tb, IFLA_BRPORT_LOCKED, BR_PORT_LOCKED); > > > + br_set_port_flag(p, tb, IFLA_BRPORT_MAB, BR_PORT_MAB); > > > + > > > + if (!(p->flags & BR_PORT_LOCKED)) > > > + p->flags &= ~BR_PORT_MAB; > > The reason for this is that I wanted it to be so that if you have MAB > enabled (and locked of course) and unlock the port, it will automatically > clear both flags instead of having to first disable MAB and then unlock the > port. User space can just do: # bridge link set dev swp1 locked off mab off I prefer not to push such logic into the kernel and instead fail explicitly. I won't argue if more people are in favor.