mlxsw: spectrum_switchdev: Fix mrouter flag update
authorNogah Frankel <nogahf@mellanox.com>
Tue, 22 Aug 2017 08:28:11 +0000 (10:28 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 22 Aug 2017 21:22:54 +0000 (14:22 -0700)
Update the value of the mrouter flag in struct mlxsw_sp_bridge_port when
it is being changed.

Fixes: c57529e1d5d8 ("mlxsw: spectrum: Replace vPorts with Port-VLAN")
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Reviewed-by: Ido Schimmel <idosch@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 5eb1606765c58064a5e2fd6677a791165c18c071..d39ffbfcc436fdb4343b391f2ac6bbdd48dd14af 100644 (file)
@@ -705,6 +705,7 @@ static int mlxsw_sp_port_attr_mc_router_set(struct mlxsw_sp_port *mlxsw_sp_port,
                                            bool is_port_mc_router)
 {
        struct mlxsw_sp_bridge_port *bridge_port;
+       int err;
 
        if (switchdev_trans_ph_prepare(trans))
                return 0;
@@ -715,11 +716,17 @@ static int mlxsw_sp_port_attr_mc_router_set(struct mlxsw_sp_port *mlxsw_sp_port,
                return 0;
 
        if (!bridge_port->bridge_device->multicast_enabled)
-               return 0;
+               goto out;
 
-       return mlxsw_sp_bridge_port_flood_table_set(mlxsw_sp_port, bridge_port,
-                                                   MLXSW_SP_FLOOD_TYPE_MC,
-                                                   is_port_mc_router);
+       err = mlxsw_sp_bridge_port_flood_table_set(mlxsw_sp_port, bridge_port,
+                                                  MLXSW_SP_FLOOD_TYPE_MC,
+                                                  is_port_mc_router);
+       if (err)
+               return err;
+
+out:
+       bridge_port->mrouter = is_port_mc_router;
+       return 0;
 }
 
 static int mlxsw_sp_port_mc_disabled_set(struct mlxsw_sp_port *mlxsw_sp_port,