Skip to content

Commit 17b334a

Browse files
idoschdavem330
authored andcommitted
mlxsw: spectrum_switchdev: Don't warn about valid situations
Some operations in the bridge driver such as MDB deletion are preformed in an atomic context and thus deferred to a process context by the switchdev infrastructure. Therefore, by the time the operation is performed by the underlying device driver it's possible the bridge port context is already gone. This is especially true for removal flows, but theoretically can also be invoked during addition. Remove the warnings in such situations and return normally. Fixes: c57529e ("mlxsw: spectrum: Replace vPorts with Port-VLAN") Fixes: 3922285 ("net: bridge: Add support for offloading port attributes") Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 337f1b0 commit 17b334a

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -626,8 +626,8 @@ static int mlxsw_sp_port_attr_br_flags_set(struct mlxsw_sp_port *mlxsw_sp_port,
626626

627627
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp_port->mlxsw_sp->bridge,
628628
orig_dev);
629-
if (WARN_ON(!bridge_port))
630-
return -EINVAL;
629+
if (!bridge_port)
630+
return 0;
631631

632632
err = mlxsw_sp_bridge_port_flood_table_set(mlxsw_sp_port, bridge_port,
633633
MLXSW_SP_FLOOD_TYPE_UC,
@@ -711,8 +711,8 @@ static int mlxsw_sp_port_attr_mc_router_set(struct mlxsw_sp_port *mlxsw_sp_port,
711711

712712
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp_port->mlxsw_sp->bridge,
713713
orig_dev);
714-
if (WARN_ON(!bridge_port))
715-
return -EINVAL;
714+
if (!bridge_port)
715+
return 0;
716716

717717
if (!bridge_port->bridge_device->multicast_enabled)
718718
return 0;
@@ -1283,15 +1283,15 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
12831283
return 0;
12841284

12851285
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
1286-
if (WARN_ON(!bridge_port))
1287-
return -EINVAL;
1286+
if (!bridge_port)
1287+
return 0;
12881288

12891289
bridge_device = bridge_port->bridge_device;
12901290
mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_bridge(mlxsw_sp_port,
12911291
bridge_device,
12921292
mdb->vid);
1293-
if (WARN_ON(!mlxsw_sp_port_vlan))
1294-
return -EINVAL;
1293+
if (!mlxsw_sp_port_vlan)
1294+
return 0;
12951295

12961296
fid_index = mlxsw_sp_fid_index(mlxsw_sp_port_vlan->fid);
12971297

@@ -1407,15 +1407,15 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
14071407
int err = 0;
14081408

14091409
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
1410-
if (WARN_ON(!bridge_port))
1411-
return -EINVAL;
1410+
if (!bridge_port)
1411+
return 0;
14121412

14131413
bridge_device = bridge_port->bridge_device;
14141414
mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_bridge(mlxsw_sp_port,
14151415
bridge_device,
14161416
mdb->vid);
1417-
if (WARN_ON(!mlxsw_sp_port_vlan))
1418-
return -EINVAL;
1417+
if (!mlxsw_sp_port_vlan)
1418+
return 0;
14191419

14201420
fid_index = mlxsw_sp_fid_index(mlxsw_sp_port_vlan->fid);
14211421

0 commit comments

Comments
 (0)