@@ -626,8 +626,8 @@ static int mlxsw_sp_port_attr_br_flags_set(struct mlxsw_sp_port *mlxsw_sp_port,
626
626
627
627
bridge_port = mlxsw_sp_bridge_port_find (mlxsw_sp_port -> mlxsw_sp -> bridge ,
628
628
orig_dev );
629
- if (WARN_ON ( !bridge_port ) )
630
- return - EINVAL ;
629
+ if (!bridge_port )
630
+ return 0 ;
631
631
632
632
err = mlxsw_sp_bridge_port_flood_table_set (mlxsw_sp_port , bridge_port ,
633
633
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,
711
711
712
712
bridge_port = mlxsw_sp_bridge_port_find (mlxsw_sp_port -> mlxsw_sp -> bridge ,
713
713
orig_dev );
714
- if (WARN_ON ( !bridge_port ) )
715
- return - EINVAL ;
714
+ if (!bridge_port )
715
+ return 0 ;
716
716
717
717
if (!bridge_port -> bridge_device -> multicast_enabled )
718
718
return 0 ;
@@ -1283,15 +1283,15 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
1283
1283
return 0 ;
1284
1284
1285
1285
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 ;
1288
1288
1289
1289
bridge_device = bridge_port -> bridge_device ;
1290
1290
mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_bridge (mlxsw_sp_port ,
1291
1291
bridge_device ,
1292
1292
mdb -> vid );
1293
- if (WARN_ON ( !mlxsw_sp_port_vlan ) )
1294
- return - EINVAL ;
1293
+ if (!mlxsw_sp_port_vlan )
1294
+ return 0 ;
1295
1295
1296
1296
fid_index = mlxsw_sp_fid_index (mlxsw_sp_port_vlan -> fid );
1297
1297
@@ -1407,15 +1407,15 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
1407
1407
int err = 0 ;
1408
1408
1409
1409
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 ;
1412
1412
1413
1413
bridge_device = bridge_port -> bridge_device ;
1414
1414
mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_bridge (mlxsw_sp_port ,
1415
1415
bridge_device ,
1416
1416
mdb -> vid );
1417
- if (WARN_ON ( !mlxsw_sp_port_vlan ) )
1418
- return - EINVAL ;
1417
+ if (!mlxsw_sp_port_vlan )
1418
+ return 0 ;
1419
1419
1420
1420
fid_index = mlxsw_sp_fid_index (mlxsw_sp_port_vlan -> fid );
1421
1421
@@ -1974,6 +1974,17 @@ static void mlxsw_sp_fdb_fini(struct mlxsw_sp *mlxsw_sp)
1974
1974
1975
1975
}
1976
1976
1977
+ static void mlxsw_sp_mids_fini (struct mlxsw_sp * mlxsw_sp )
1978
+ {
1979
+ struct mlxsw_sp_mid * mid , * tmp ;
1980
+
1981
+ list_for_each_entry_safe (mid , tmp , & mlxsw_sp -> bridge -> mids_list , list ) {
1982
+ list_del (& mid -> list );
1983
+ clear_bit (mid -> mid , mlxsw_sp -> bridge -> mids_bitmap );
1984
+ kfree (mid );
1985
+ }
1986
+ }
1987
+
1977
1988
int mlxsw_sp_switchdev_init (struct mlxsw_sp * mlxsw_sp )
1978
1989
{
1979
1990
struct mlxsw_sp_bridge * bridge ;
@@ -1996,7 +2007,7 @@ int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp)
1996
2007
void mlxsw_sp_switchdev_fini (struct mlxsw_sp * mlxsw_sp )
1997
2008
{
1998
2009
mlxsw_sp_fdb_fini (mlxsw_sp );
1999
- WARN_ON (! list_empty ( & mlxsw_sp -> bridge -> mids_list ) );
2010
+ mlxsw_sp_mids_fini ( mlxsw_sp );
2000
2011
WARN_ON (!list_empty (& mlxsw_sp -> bridge -> bridges_list ));
2001
2012
kfree (mlxsw_sp -> bridge );
2002
2013
}
0 commit comments