Skip to content

Commit

Permalink
devlink: Add APIs to publish, unpublish individual parameter
Browse files Browse the repository at this point in the history
Enable drivers to publish/unpublish individual parameter.

Signed-off-by: Parav Pandit <parav@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Parav Pandit authored and David S. Miller committed Aug 11, 2021
1 parent b40c51e commit 9c4a766
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
4 changes: 4 additions & 0 deletions include/net/devlink.h
Original file line number Diff line number Diff line change
Expand Up @@ -1651,6 +1651,10 @@ void devlink_param_unregister(struct devlink *devlink,
const struct devlink_param *param);
void devlink_params_publish(struct devlink *devlink);
void devlink_params_unpublish(struct devlink *devlink);
void devlink_param_publish(struct devlink *devlink,
const struct devlink_param *param);
void devlink_param_unpublish(struct devlink *devlink,
const struct devlink_param *param);
int devlink_port_params_register(struct devlink_port *devlink_port,
const struct devlink_param *params,
size_t params_count);
Expand Down
48 changes: 48 additions & 0 deletions net/core/devlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -9982,6 +9982,54 @@ void devlink_params_unpublish(struct devlink *devlink)
}
EXPORT_SYMBOL_GPL(devlink_params_unpublish);

/**
* devlink_param_publish - publish one configuration parameter
*
* @devlink: devlink
* @param: one configuration parameter
*
* Publish previously registered configuration parameter.
*/
void devlink_param_publish(struct devlink *devlink,
const struct devlink_param *param)
{
struct devlink_param_item *param_item;

list_for_each_entry(param_item, &devlink->param_list, list) {
if (param_item->param != param || param_item->published)
continue;
param_item->published = true;
devlink_param_notify(devlink, 0, param_item,
DEVLINK_CMD_PARAM_NEW);
break;
}
}
EXPORT_SYMBOL_GPL(devlink_param_publish);

/**
* devlink_param_unpublish - unpublish one configuration parameter
*
* @devlink: devlink
* @param: one configuration parameter
*
* Unpublish previously registered configuration parameter.
*/
void devlink_param_unpublish(struct devlink *devlink,
const struct devlink_param *param)
{
struct devlink_param_item *param_item;

list_for_each_entry(param_item, &devlink->param_list, list) {
if (param_item->param != param || !param_item->published)
continue;
param_item->published = false;
devlink_param_notify(devlink, 0, param_item,
DEVLINK_CMD_PARAM_DEL);
break;
}
}
EXPORT_SYMBOL_GPL(devlink_param_unpublish);

/**
* devlink_port_params_register - register port configuration parameters
*
Expand Down

0 comments on commit 9c4a766

Please sign in to comment.