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.

Reply via email to