Forgot to actually add Petr
On Thu, Jan 07, 2021 at 12:38:39PM +0200, Ido Schimmel wrote: > +Petr > > On Thu, Jan 07, 2021 at 01:17:20AM +0200, Vladimir Oltean wrote: > > static int mlxsw_sp_port_obj_add(struct net_device *dev, > > const struct switchdev_obj *obj, > > - struct switchdev_trans *trans, > > struct netlink_ext_ack *extack) > > { > > struct mlxsw_sp_port *mlxsw_sp_port = netdev_priv(dev); > > const struct switchdev_obj_port_vlan *vlan; > > + struct switchdev_trans trans; > > int err = 0; > > > > switch (obj->id) { > > case SWITCHDEV_OBJ_ID_PORT_VLAN: > > vlan = SWITCHDEV_OBJ_PORT_VLAN(obj); > > - err = mlxsw_sp_port_vlans_add(mlxsw_sp_port, vlan, trans, > > + > > Got the regression results. The call to mlxsw_sp_span_respin() should be > placed here because it needs to be triggered regardless of the return > value of mlxsw_sp_port_vlans_add(). > > I'm looking into another failure, which might not be related to these > patches. I will also have results with a debug kernel tomorrow (takes > almost a day to complete). Will let you know. > > > + trans.ph_prepare = true; > > + err = mlxsw_sp_port_vlans_add(mlxsw_sp_port, vlan, &trans, > > extack); > > + if (err) > > + break; > > > > - if (switchdev_trans_ph_prepare(trans)) { > > - /* The event is emitted before the changes are actually > > - * applied to the bridge. Therefore schedule the respin > > - * call for later, so that the respin logic sees the > > - * updated bridge state. > > - */ > > - mlxsw_sp_span_respin(mlxsw_sp_port->mlxsw_sp); > > - } > > + /* The event is emitted before the changes are actually > > + * applied to the bridge. Therefore schedule the respin > > + * call for later, so that the respin logic sees the > > + * updated bridge state. > > + */ > > + mlxsw_sp_span_respin(mlxsw_sp_port->mlxsw_sp); > > + > > + trans.ph_prepare = false; > > + err = mlxsw_sp_port_vlans_add(mlxsw_sp_port, vlan, &trans, > > + extack); > > break; > > case SWITCHDEV_OBJ_ID_PORT_MDB: > > err = mlxsw_sp_port_mdb_add(mlxsw_sp_port, > > - SWITCHDEV_OBJ_PORT_MDB(obj), > > - trans); > > + SWITCHDEV_OBJ_PORT_MDB(obj)); > > break; > > default: > > err = -EOPNOTSUPP;