diff mbox

[net,internal] mlxsw: spectrum_switchdev: Do not remove mrouter port from MDB's ports list

Message ID 20180424154017.16856-1-idosch@mellanox.com (mailing list archive)
State Accepted
Delegated to: Ido Schimmel
Headers show

Commit Message

Ido Schimmel April 24, 2018, 3:40 p.m. UTC
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: ded711c87a04 ("mlxsw: spectrum_switchdev: Consider mrouter status for mdb changes")
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reported-by: Colin King <colin.king@canonical.com>
---
Nogah, please review.
---
 drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

Comments

Nogah Frankel April 26, 2018, 7:37 a.m. UTC | #1
> 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: ded711c87a04 ("mlxsw: spectrum_switchdev: Consider mrouter status

> for mdb changes")

> Signed-off-by: Ido Schimmel <idosch@mellanox.com>

> Reported-by: Colin King <colin.king@canonical.com>

> ---

> Nogah, please review.


Reviewed-by: Nogah Frankel <nogahf@mellanox.com>


Thanks
Ido Schimmel April 26, 2018, 8:04 a.m. UTC | #2
On Thu, Apr 26, 2018 at 10:37:24AM +0300, Nogah Frankel wrote:
> > 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: ded711c87a04 ("mlxsw: spectrum_switchdev: Consider mrouter status
> > for mdb changes")
> > Signed-off-by: Ido Schimmel <idosch@mellanox.com>
> > Reported-by: Colin King <colin.king@canonical.com>
> > ---
> > Nogah, please review.
> 
> Reviewed-by: Nogah Frankel <nogahf@mellanox.com>

Thanks! Will submit upstream today.
diff mbox

Patch

diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index c11c9a635866..4ed01182a82c 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -1718,13 +1718,11 @@  __mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
 	struct net_device *dev = mlxsw_sp_port->dev;
 	int err;
 
-	if (bridge_port->bridge_device->multicast_enabled) {
-		if (bridge_port->bridge_device->multicast_enabled) {
-			err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid,
-						     false);
-			if (err)
-				netdev_err(dev, "Unable to remove port from SMID\n");
-		}
+	if (bridge_port->bridge_device->multicast_enabled &&
+	    !bridge_port->mrouter) {
+		err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, false);
+		if (err)
+			netdev_err(dev, "Unable to remove port from SMID\n");
 	}
 
 	err = mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid);