Message ID | 20230127155042.1846608-3-jiri@resnulli.us (mailing list archive) |
---|---|
State | Accepted |
Commit | a131315a47bbb5e89a3330cac69fe6ab4836f762 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | devlink: fix reload notifications and remove features | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Clearly marked for net-next |
netdev/fixes_present | success | Fixes tag not required for -next series |
netdev/subject_prefix | success | Link |
netdev/cover_letter | success | Series has a cover letter |
netdev/patch_count | success | Link |
netdev/header_inline | success | No static functions without inline keyword in header files |
netdev/build_32bit | success | Errors and warnings before: 2 this patch: 2 |
netdev/cc_maintainers | success | CCed 6 of 6 maintainers |
netdev/build_clang | success | Errors and warnings before: 1 this patch: 1 |
netdev/module_param | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Signed-off-by tag matches author and committer |
netdev/check_selftest | success | No net selftest shell script |
netdev/verify_fixes | success | No Fixes tag |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 2 this patch: 2 |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 38 lines checked |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/source_inline | success | Was 0 now: 0 |
On 1/27/2023 7:50 AM, Jiri Pirko wrote: > From: Jiri Pirko <jiri@nvidia.com> > > Currently, the notifications are only sent for params. People who > introduced other objects forgot to add the reload notifications here. > > To make sure all notifications happen according to existing comment, > benefit from existence of devlink_notify_register/unregister() helpers > and use them in reload code. > Nice cleanup. Should be harder to forget notifications in the future! Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> > Signed-off-by: Jiri Pirko <jiri@nvidia.com> > --- > net/devlink/leftover.c | 20 ++------------------ > 1 file changed, 2 insertions(+), 18 deletions(-) > > diff --git a/net/devlink/leftover.c b/net/devlink/leftover.c > index 24e20861a28b..4f78ef5a46af 100644 > --- a/net/devlink/leftover.c > +++ b/net/devlink/leftover.c > @@ -4230,36 +4230,20 @@ static struct net *devlink_netns_get(struct sk_buff *skb, > return net; > } > > -static void devlink_param_notify(struct devlink *devlink, > - unsigned int port_index, > - struct devlink_param_item *param_item, > - enum devlink_command cmd); > - > static void devlink_reload_netns_change(struct devlink *devlink, > struct net *curr_net, > struct net *dest_net) > { > - struct devlink_param_item *param_item; > - > /* Userspace needs to be notified about devlink objects > * removed from original and entering new network namespace. > * The rest of the devlink objects are re-created during > * reload process so the notifications are generated separatelly. > */ > - > - list_for_each_entry(param_item, &devlink->param_list, list) > - devlink_param_notify(devlink, 0, param_item, > - DEVLINK_CMD_PARAM_DEL); > - devlink_notify(devlink, DEVLINK_CMD_DEL); > - > + devlink_notify_unregister(devlink); > move_netdevice_notifier_net(curr_net, dest_net, > &devlink->netdevice_nb); > write_pnet(&devlink->_net, dest_net); > - > - devlink_notify(devlink, DEVLINK_CMD_NEW); > - list_for_each_entry(param_item, &devlink->param_list, list) > - devlink_param_notify(devlink, 0, param_item, > - DEVLINK_CMD_PARAM_NEW); > + devlink_notify_register(devlink); > } > > static void devlink_reload_failed_set(struct devlink *devlink,
diff --git a/net/devlink/leftover.c b/net/devlink/leftover.c index 24e20861a28b..4f78ef5a46af 100644 --- a/net/devlink/leftover.c +++ b/net/devlink/leftover.c @@ -4230,36 +4230,20 @@ static struct net *devlink_netns_get(struct sk_buff *skb, return net; } -static void devlink_param_notify(struct devlink *devlink, - unsigned int port_index, - struct devlink_param_item *param_item, - enum devlink_command cmd); - static void devlink_reload_netns_change(struct devlink *devlink, struct net *curr_net, struct net *dest_net) { - struct devlink_param_item *param_item; - /* Userspace needs to be notified about devlink objects * removed from original and entering new network namespace. * The rest of the devlink objects are re-created during * reload process so the notifications are generated separatelly. */ - - list_for_each_entry(param_item, &devlink->param_list, list) - devlink_param_notify(devlink, 0, param_item, - DEVLINK_CMD_PARAM_DEL); - devlink_notify(devlink, DEVLINK_CMD_DEL); - + devlink_notify_unregister(devlink); move_netdevice_notifier_net(curr_net, dest_net, &devlink->netdevice_nb); write_pnet(&devlink->_net, dest_net); - - devlink_notify(devlink, DEVLINK_CMD_NEW); - list_for_each_entry(param_item, &devlink->param_list, list) - devlink_param_notify(devlink, 0, param_item, - DEVLINK_CMD_PARAM_NEW); + devlink_notify_register(devlink); } static void devlink_reload_failed_set(struct devlink *devlink,