Commit a558c982 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by David S. Miller

nfp: flower: don't try to nack device unregister events

Returning an error from a notifier means we want to veto the change.
We shouldn't veto NETDEV_UNREGISTER just because we couldn't find
the tracking info for given master.

I can't seem to find a way to trigger this unless we have some
other bug, so it's probably not fix-worthy.

While at it move the checking if the netdev really is of interest
into the handling functions, like we do for other events.
Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: default avatarJohn Hurley <john.hurley@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e50bfdf7
...@@ -472,17 +472,25 @@ nfp_fl_lag_schedule_group_remove(struct nfp_fl_lag *lag, ...@@ -472,17 +472,25 @@ nfp_fl_lag_schedule_group_remove(struct nfp_fl_lag *lag,
schedule_delayed_work(&lag->work, NFP_FL_LAG_DELAY); schedule_delayed_work(&lag->work, NFP_FL_LAG_DELAY);
} }
static int static void
nfp_fl_lag_schedule_group_delete(struct nfp_fl_lag *lag, nfp_fl_lag_schedule_group_delete(struct nfp_fl_lag *lag,
struct net_device *master) struct net_device *master)
{ {
struct nfp_fl_lag_group *group; struct nfp_fl_lag_group *group;
struct nfp_flower_priv *priv;
priv = container_of(lag, struct nfp_flower_priv, nfp_lag);
if (!netif_is_bond_master(master))
return;
mutex_lock(&lag->lock); mutex_lock(&lag->lock);
group = nfp_fl_lag_find_group_for_master_with_lag(lag, master); group = nfp_fl_lag_find_group_for_master_with_lag(lag, master);
if (!group) { if (!group) {
mutex_unlock(&lag->lock); mutex_unlock(&lag->lock);
return -ENOENT; nfp_warn(priv->app->cpp, "untracked bond got unregistered %s\n",
netdev_name(master));
return;
} }
group->to_remove = true; group->to_remove = true;
...@@ -490,7 +498,6 @@ nfp_fl_lag_schedule_group_delete(struct nfp_fl_lag *lag, ...@@ -490,7 +498,6 @@ nfp_fl_lag_schedule_group_delete(struct nfp_fl_lag *lag,
mutex_unlock(&lag->lock); mutex_unlock(&lag->lock);
schedule_delayed_work(&lag->work, NFP_FL_LAG_DELAY); schedule_delayed_work(&lag->work, NFP_FL_LAG_DELAY);
return 0;
} }
static int static int
...@@ -643,12 +650,8 @@ nfp_fl_lag_netdev_event(struct notifier_block *nb, unsigned long event, ...@@ -643,12 +650,8 @@ nfp_fl_lag_netdev_event(struct notifier_block *nb, unsigned long event,
return NOTIFY_BAD; return NOTIFY_BAD;
return NOTIFY_OK; return NOTIFY_OK;
case NETDEV_UNREGISTER: case NETDEV_UNREGISTER:
if (netif_is_bond_master(netdev)) { nfp_fl_lag_schedule_group_delete(lag, netdev);
err = nfp_fl_lag_schedule_group_delete(lag, netdev); return NOTIFY_OK;
if (err)
return NOTIFY_BAD;
return NOTIFY_OK;
}
} }
return NOTIFY_DONE; return NOTIFY_DONE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment