Commit c7f46cca authored by Ido Schimmel's avatar Ido Schimmel Committed by David S. Miller

mlxsw: spectrum_switchdev: Do not remove mrouter port from MDB's ports list

When IGMP snooping is enabled on a bridge, traffic forwarded by an MDB
entry should be sent to both ports member in the MDB's ports list and
mrouter ports.

In case a port needs to be removed from an MDB's ports list, but this
port is also configured as an mrouter port, then do not update the
device so that it will continue to forward traffic through that port.

Fix a copy-paste error that checked that IGMP snooping is enabled twice
instead of checking the port's mrouter state.

Fixes: ded711c8 ("mlxsw: spectrum_switchdev: Consider mrouter status for mdb changes")
Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Reported-by: default avatarColin King <colin.king@canonical.com>
Reviewed-by: default avatarNogah Frankel <nogahf@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6a9a27d5
...@@ -1718,13 +1718,11 @@ __mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port, ...@@ -1718,13 +1718,11 @@ __mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
struct net_device *dev = mlxsw_sp_port->dev; struct net_device *dev = mlxsw_sp_port->dev;
int err; int err;
if (bridge_port->bridge_device->multicast_enabled) { if (bridge_port->bridge_device->multicast_enabled &&
if (bridge_port->bridge_device->multicast_enabled) { !bridge_port->mrouter) {
err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, false);
false); if (err)
if (err) netdev_err(dev, "Unable to remove port from SMID\n");
netdev_err(dev, "Unable to remove port from SMID\n");
}
} }
err = mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid); err = mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment