Skip to content

Commit 6a8b357

Browse files
dmertmananguy11
authored andcommitted
ice: Respond to a NETDEV_UNREGISTER event for LAG
When the PF is a member of a link aggregate, and the driver is removed, the process will hang unless we respond to the NETDEV_UNREGISTER event that is sent to the event_handler for LAG. Add a case statement for the ice_lag_event_handler to unlink the PF from the link aggregate. Also remove code that was incorrectly applying a dev_hold to peer_netdevs that were associated with the ice driver. Fixes: df006dd ("ice: Add initial support framework for LAG") Signed-off-by: Dave Ertman <[email protected]> Tested-by: Tony Brelinski <[email protected]> Signed-off-by: Tony Nguyen <[email protected]>
1 parent f7a1e76 commit 6a8b357

File tree

1 file changed

+4
-14
lines changed

1 file changed

+4
-14
lines changed

drivers/net/ethernet/intel/ice/ice_lag.c

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ static void ice_display_lag_info(struct ice_lag *lag)
100100
*/
101101
static void ice_lag_info_event(struct ice_lag *lag, void *ptr)
102102
{
103-
struct net_device *event_netdev, *netdev_tmp;
104103
struct netdev_notifier_bonding_info *info;
105104
struct netdev_bonding_info *bonding_info;
105+
struct net_device *event_netdev;
106106
const char *lag_netdev_name;
107107

108108
event_netdev = netdev_notifier_info_to_dev(ptr);
@@ -123,19 +123,6 @@ static void ice_lag_info_event(struct ice_lag *lag, void *ptr)
123123
goto lag_out;
124124
}
125125

126-
rcu_read_lock();
127-
for_each_netdev_in_bond_rcu(lag->upper_netdev, netdev_tmp) {
128-
if (!netif_is_ice(netdev_tmp))
129-
continue;
130-
131-
if (netdev_tmp && netdev_tmp != lag->netdev &&
132-
lag->peer_netdev != netdev_tmp) {
133-
dev_hold(netdev_tmp);
134-
lag->peer_netdev = netdev_tmp;
135-
}
136-
}
137-
rcu_read_unlock();
138-
139126
if (bonding_info->slave.state)
140127
ice_lag_set_backup(lag);
141128
else
@@ -319,6 +306,9 @@ ice_lag_event_handler(struct notifier_block *notif_blk, unsigned long event,
319306
case NETDEV_BONDING_INFO:
320307
ice_lag_info_event(lag, ptr);
321308
break;
309+
case NETDEV_UNREGISTER:
310+
ice_lag_unlink(lag, ptr);
311+
break;
322312
default:
323313
break;
324314
}

0 commit comments

Comments
 (0)