@@ -3982,17 +3982,6 @@ int mlxsw_sp_port_fdb_flush(struct mlxsw_sp_port *mlxsw_sp_port, u16 fid)
3982
3982
return mlxsw_sp_port_fdb_flush_by_port_fid (mlxsw_sp_port , fid );
3983
3983
}
3984
3984
3985
- static void mlxsw_sp_master_bridge_gone_sync (struct mlxsw_sp * mlxsw_sp )
3986
- {
3987
- struct mlxsw_sp_fid * f , * tmp ;
3988
-
3989
- list_for_each_entry_safe (f , tmp , & mlxsw_sp -> fids , list )
3990
- if (-- f -> ref_count == 0 )
3991
- mlxsw_sp_fid_destroy (mlxsw_sp , f );
3992
- else
3993
- WARN_ON_ONCE (1 );
3994
- }
3995
-
3996
3985
static bool mlxsw_sp_master_bridge_check (struct mlxsw_sp * mlxsw_sp ,
3997
3986
struct net_device * br_dev )
3998
3987
{
@@ -4014,15 +4003,8 @@ static void mlxsw_sp_master_bridge_dec(struct mlxsw_sp *mlxsw_sp)
4014
4003
{
4015
4004
struct mlxsw_sp_upper * master_bridge = mlxsw_sp_master_bridge (mlxsw_sp );
4016
4005
4017
- if (-- master_bridge -> ref_count == 0 ) {
4006
+ if (-- master_bridge -> ref_count == 0 )
4018
4007
master_bridge -> dev = NULL ;
4019
- /* It's possible upper VLAN devices are still holding
4020
- * references to underlying FIDs. Drop the reference
4021
- * and release the resources if it was the last one.
4022
- * If it wasn't, then something bad happened.
4023
- */
4024
- mlxsw_sp_master_bridge_gone_sync (mlxsw_sp );
4025
- }
4026
4008
}
4027
4009
4028
4010
static int mlxsw_sp_port_bridge_join (struct mlxsw_sp_port * mlxsw_sp_port ,
@@ -4584,79 +4566,6 @@ static int mlxsw_sp_netdevice_lag_event(struct net_device *lag_dev,
4584
4566
return 0 ;
4585
4567
}
4586
4568
4587
- static int mlxsw_sp_master_bridge_vlan_link (struct mlxsw_sp * mlxsw_sp ,
4588
- struct net_device * vlan_dev )
4589
- {
4590
- u16 fid = vlan_dev_vlan_id (vlan_dev );
4591
- struct mlxsw_sp_fid * f ;
4592
-
4593
- f = mlxsw_sp_fid_find (mlxsw_sp , fid );
4594
- if (!f ) {
4595
- f = mlxsw_sp_fid_create (mlxsw_sp , fid );
4596
- if (IS_ERR (f ))
4597
- return PTR_ERR (f );
4598
- }
4599
-
4600
- f -> ref_count ++ ;
4601
-
4602
- return 0 ;
4603
- }
4604
-
4605
- static void mlxsw_sp_master_bridge_vlan_unlink (struct mlxsw_sp * mlxsw_sp ,
4606
- struct net_device * vlan_dev )
4607
- {
4608
- u16 fid = vlan_dev_vlan_id (vlan_dev );
4609
- struct mlxsw_sp_fid * f ;
4610
-
4611
- f = mlxsw_sp_fid_find (mlxsw_sp , fid );
4612
- if (f && f -> rif )
4613
- mlxsw_sp_rif_bridge_destroy (mlxsw_sp , f -> rif );
4614
- if (f && -- f -> ref_count == 0 )
4615
- mlxsw_sp_fid_destroy (mlxsw_sp , f );
4616
- }
4617
-
4618
- static int mlxsw_sp_netdevice_bridge_event (struct net_device * br_dev ,
4619
- unsigned long event , void * ptr )
4620
- {
4621
- struct netdev_notifier_changeupper_info * info ;
4622
- struct net_device * upper_dev ;
4623
- struct mlxsw_sp * mlxsw_sp ;
4624
- int err = 0 ;
4625
-
4626
- mlxsw_sp = mlxsw_sp_lower_get (br_dev );
4627
- if (!mlxsw_sp )
4628
- return 0 ;
4629
-
4630
- info = ptr ;
4631
-
4632
- switch (event ) {
4633
- case NETDEV_PRECHANGEUPPER :
4634
- upper_dev = info -> upper_dev ;
4635
- if (!is_vlan_dev (upper_dev ))
4636
- return - EINVAL ;
4637
- if (is_vlan_dev (upper_dev ) &&
4638
- br_dev != mlxsw_sp_master_bridge (mlxsw_sp )-> dev )
4639
- return - EINVAL ;
4640
- break ;
4641
- case NETDEV_CHANGEUPPER :
4642
- upper_dev = info -> upper_dev ;
4643
- if (is_vlan_dev (upper_dev )) {
4644
- if (info -> linking )
4645
- err = mlxsw_sp_master_bridge_vlan_link (mlxsw_sp ,
4646
- upper_dev );
4647
- else
4648
- mlxsw_sp_master_bridge_vlan_unlink (mlxsw_sp ,
4649
- upper_dev );
4650
- } else {
4651
- err = - EINVAL ;
4652
- WARN_ON (1 );
4653
- }
4654
- break ;
4655
- }
4656
-
4657
- return err ;
4658
- }
4659
-
4660
4569
static u16 mlxsw_sp_avail_vfid_get (const struct mlxsw_sp * mlxsw_sp )
4661
4570
{
4662
4571
return find_first_zero_bit (mlxsw_sp -> vfids .mapped ,
@@ -5012,8 +4921,6 @@ static int mlxsw_sp_netdevice_event(struct notifier_block *unused,
5012
4921
err = mlxsw_sp_netdevice_port_event (dev , dev , event , ptr );
5013
4922
else if (netif_is_lag_master (dev ))
5014
4923
err = mlxsw_sp_netdevice_lag_event (dev , event , ptr );
5015
- else if (netif_is_bridge_master (dev ))
5016
- err = mlxsw_sp_netdevice_bridge_event (dev , event , ptr );
5017
4924
else if (is_vlan_dev (dev ))
5018
4925
err = mlxsw_sp_netdevice_vlan_event (dev , event , ptr );
5019
4926
0 commit comments