diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_lag.c')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_lag.c | 18 | 
1 files changed, 4 insertions, 14 deletions
| diff --git a/drivers/net/ethernet/intel/ice/ice_lag.c b/drivers/net/ethernet/intel/ice/ice_lag.c index 37c18c66b5c7..e375ac849aec 100644 --- a/drivers/net/ethernet/intel/ice/ice_lag.c +++ b/drivers/net/ethernet/intel/ice/ice_lag.c @@ -100,9 +100,9 @@ static void ice_display_lag_info(struct ice_lag *lag)   */  static void ice_lag_info_event(struct ice_lag *lag, void *ptr)  { -	struct net_device *event_netdev, *netdev_tmp;  	struct netdev_notifier_bonding_info *info;  	struct netdev_bonding_info *bonding_info; +	struct net_device *event_netdev;  	const char *lag_netdev_name;  	event_netdev = netdev_notifier_info_to_dev(ptr); @@ -123,19 +123,6 @@ static void ice_lag_info_event(struct ice_lag *lag, void *ptr)  		goto lag_out;  	} -	rcu_read_lock(); -	for_each_netdev_in_bond_rcu(lag->upper_netdev, netdev_tmp) { -		if (!netif_is_ice(netdev_tmp)) -			continue; - -		if (netdev_tmp && netdev_tmp != lag->netdev && -		    lag->peer_netdev != netdev_tmp) { -			dev_hold(netdev_tmp); -			lag->peer_netdev = netdev_tmp; -		} -	} -	rcu_read_unlock(); -  	if (bonding_info->slave.state)  		ice_lag_set_backup(lag);  	else @@ -319,6 +306,9 @@ ice_lag_event_handler(struct notifier_block *notif_blk, unsigned long event,  	case NETDEV_BONDING_INFO:  		ice_lag_info_event(lag, ptr);  		break; +	case NETDEV_UNREGISTER: +		ice_lag_unlink(lag, ptr); +		break;  	default:  		break;  	} |