]> www.infradead.org Git - users/willy/linux.git/commitdiff
mlxsw: spectrum_switchdev: Consider mrouter status for mdb changes
authorNogah Frankel <nogahf@mellanox.com>
Wed, 20 Sep 2017 14:15:16 +0000 (16:15 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Sep 2017 01:03:13 +0000 (18:03 -0700)
When a mrouter is registered or leaves a mid, don't update the HW.

Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c

index 459cedc23c47ef5a3ac15def12c813f62ec8e72e..0f9eac5f4ebfd68af75d41135583828c75b52d3e 100644 (file)
@@ -1491,6 +1491,9 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
        if (!bridge_device->multicast_enabled)
                return 0;
 
+       if (bridge_port->mrouter)
+               return 0;
+
        err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, true);
        if (err) {
                netdev_err(dev, "Unable to set SMID\n");
@@ -1613,10 +1616,12 @@ __mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
        int err;
 
        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) {
+                       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);