mlxsw: spectrum: Update mc_disabled flag by switchdev attr
Add a function to update mc_disabled from switchdev attr SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED Signed-off-by: Nogah Frankel <nogahf@mellanox.com> Signed-off-by: Yotam Gigi <yotamg@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1e5d94327d
commit
90e0f0c1b4
@ -274,6 +274,30 @@ err_port_flood_set:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int mlxsw_sp_port_mc_disabled_set(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
struct switchdev_trans *trans,
|
||||
bool mc_disabled)
|
||||
{
|
||||
int set;
|
||||
int err = 0;
|
||||
|
||||
if (switchdev_trans_ph_prepare(trans))
|
||||
return 0;
|
||||
|
||||
if (mlxsw_sp_port->mc_router != mlxsw_sp_port->mc_flood) {
|
||||
set = mc_disabled ?
|
||||
mlxsw_sp_port->mc_flood : mlxsw_sp_port->mc_router;
|
||||
err = mlxsw_sp_port_flood_table_set(mlxsw_sp_port,
|
||||
MLXSW_SP_FLOOD_TABLE_MC,
|
||||
set);
|
||||
}
|
||||
|
||||
if (!err)
|
||||
mlxsw_sp_port->mc_disabled = mc_disabled;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 fid,
|
||||
bool set)
|
||||
{
|
||||
@ -461,6 +485,10 @@ static int mlxsw_sp_port_attr_set(struct net_device *dev,
|
||||
err = mlxsw_sp_port_attr_mc_router_set(mlxsw_sp_port, trans,
|
||||
attr->u.mrouter);
|
||||
break;
|
||||
case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED:
|
||||
err = mlxsw_sp_port_mc_disabled_set(mlxsw_sp_port, trans,
|
||||
attr->u.mc_disabled);
|
||||
break;
|
||||
default:
|
||||
err = -EOPNOTSUPP;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user