On Mon, Mar 14, 2022 at 06:56:49PM +0200, Vladimir Oltean wrote: > > diff --git a/net/dsa/port.c b/net/dsa/port.c > > index 58291df14cdb..1a17a0efa2fa 100644 > > --- a/net/dsa/port.c > > +++ b/net/dsa/port.c > > @@ -240,6 +240,10 @@ static int dsa_port_switchdev_sync_attrs(struct dsa_port *dp, > > if (err && err != -EOPNOTSUPP) > > return err; > > > > + err = dsa_port_mst_enable(dp, br_mst_enabled(br), extack); > > + if (err && err != -EOPNOTSUPP) > > + return err; > > Sadly this will break down because we don't have unwinding on error in > place (sorry). We'd end up with an unoffloaded bridge port with > partially synced bridge port attributes. Could you please add a patch > previous to this one that handles this, and unoffloads those on error? Actually I would rather rename the entire dsa_port_mst_enable() function to dsa_port_mst_validate() and move it to the beginning of dsa_port_bridge_join(). This simplifies the unwinding that needs to take place quite a bit.