Commit 6700acc5 authored by Shannon Nelson's avatar Shannon Nelson Committed by David S. Miller

devlink: collect flash notify params into a struct

The dev flash status notify function parameter lists are getting
rather long, so add a struct to be filled and passed rather than
continuously changing the function signatures.
Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f92970c6
...@@ -391,6 +391,25 @@ struct devlink_param_gset_ctx { ...@@ -391,6 +391,25 @@ struct devlink_param_gset_ctx {
enum devlink_param_cmode cmode; enum devlink_param_cmode cmode;
}; };
/**
* struct devlink_flash_notify - devlink dev flash notify data
* @status_msg: current status string
* @component: firmware component being updated
* @done: amount of work completed of total amount
* @total: amount of work expected to be done
* @timeout: expected max timeout in seconds
*
* These are values to be given to userland to be displayed in order
* to show current activity in a firmware update process.
*/
struct devlink_flash_notify {
const char *status_msg;
const char *component;
unsigned long done;
unsigned long total;
unsigned long timeout;
};
/** /**
* struct devlink_param - devlink configuration parameter data * struct devlink_param - devlink configuration parameter data
* @name: name of the parameter * @name: name of the parameter
......
...@@ -3022,11 +3022,7 @@ static int devlink_nl_cmd_reload(struct sk_buff *skb, struct genl_info *info) ...@@ -3022,11 +3022,7 @@ static int devlink_nl_cmd_reload(struct sk_buff *skb, struct genl_info *info)
static int devlink_nl_flash_update_fill(struct sk_buff *msg, static int devlink_nl_flash_update_fill(struct sk_buff *msg,
struct devlink *devlink, struct devlink *devlink,
enum devlink_command cmd, enum devlink_command cmd,
const char *status_msg, struct devlink_flash_notify *params)
const char *component,
unsigned long done,
unsigned long total,
unsigned long timeout)
{ {
void *hdr; void *hdr;
...@@ -3040,22 +3036,22 @@ static int devlink_nl_flash_update_fill(struct sk_buff *msg, ...@@ -3040,22 +3036,22 @@ static int devlink_nl_flash_update_fill(struct sk_buff *msg,
if (cmd != DEVLINK_CMD_FLASH_UPDATE_STATUS) if (cmd != DEVLINK_CMD_FLASH_UPDATE_STATUS)
goto out; goto out;
if (status_msg && if (params->status_msg &&
nla_put_string(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG, nla_put_string(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG,
status_msg)) params->status_msg))
goto nla_put_failure; goto nla_put_failure;
if (component && if (params->component &&
nla_put_string(msg, DEVLINK_ATTR_FLASH_UPDATE_COMPONENT, nla_put_string(msg, DEVLINK_ATTR_FLASH_UPDATE_COMPONENT,
component)) params->component))
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE, if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE,
done, DEVLINK_ATTR_PAD)) params->done, DEVLINK_ATTR_PAD))
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL, if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL,
total, DEVLINK_ATTR_PAD)) params->total, DEVLINK_ATTR_PAD))
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT, if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT,
timeout, DEVLINK_ATTR_PAD)) params->timeout, DEVLINK_ATTR_PAD))
goto nla_put_failure; goto nla_put_failure;
out: out:
...@@ -3069,11 +3065,7 @@ static int devlink_nl_flash_update_fill(struct sk_buff *msg, ...@@ -3069,11 +3065,7 @@ static int devlink_nl_flash_update_fill(struct sk_buff *msg,
static void __devlink_flash_update_notify(struct devlink *devlink, static void __devlink_flash_update_notify(struct devlink *devlink,
enum devlink_command cmd, enum devlink_command cmd,
const char *status_msg, struct devlink_flash_notify *params)
const char *component,
unsigned long done,
unsigned long total,
unsigned long timeout)
{ {
struct sk_buff *msg; struct sk_buff *msg;
int err; int err;
...@@ -3086,8 +3078,7 @@ static void __devlink_flash_update_notify(struct devlink *devlink, ...@@ -3086,8 +3078,7 @@ static void __devlink_flash_update_notify(struct devlink *devlink,
if (!msg) if (!msg)
return; return;
err = devlink_nl_flash_update_fill(msg, devlink, cmd, status_msg, err = devlink_nl_flash_update_fill(msg, devlink, cmd, params);
component, done, total, timeout);
if (err) if (err)
goto out_free_msg; goto out_free_msg;
...@@ -3101,17 +3092,21 @@ static void __devlink_flash_update_notify(struct devlink *devlink, ...@@ -3101,17 +3092,21 @@ static void __devlink_flash_update_notify(struct devlink *devlink,
void devlink_flash_update_begin_notify(struct devlink *devlink) void devlink_flash_update_begin_notify(struct devlink *devlink)
{ {
struct devlink_flash_notify params = { 0 };
__devlink_flash_update_notify(devlink, __devlink_flash_update_notify(devlink,
DEVLINK_CMD_FLASH_UPDATE, DEVLINK_CMD_FLASH_UPDATE,
NULL, NULL, 0, 0, 0); &params);
} }
EXPORT_SYMBOL_GPL(devlink_flash_update_begin_notify); EXPORT_SYMBOL_GPL(devlink_flash_update_begin_notify);
void devlink_flash_update_end_notify(struct devlink *devlink) void devlink_flash_update_end_notify(struct devlink *devlink)
{ {
struct devlink_flash_notify params = { 0 };
__devlink_flash_update_notify(devlink, __devlink_flash_update_notify(devlink,
DEVLINK_CMD_FLASH_UPDATE_END, DEVLINK_CMD_FLASH_UPDATE_END,
NULL, NULL, 0, 0, 0); &params);
} }
EXPORT_SYMBOL_GPL(devlink_flash_update_end_notify); EXPORT_SYMBOL_GPL(devlink_flash_update_end_notify);
...@@ -3121,9 +3116,16 @@ void devlink_flash_update_status_notify(struct devlink *devlink, ...@@ -3121,9 +3116,16 @@ void devlink_flash_update_status_notify(struct devlink *devlink,
unsigned long done, unsigned long done,
unsigned long total) unsigned long total)
{ {
struct devlink_flash_notify params = {
.status_msg = status_msg,
.component = component,
.done = done,
.total = total,
};
__devlink_flash_update_notify(devlink, __devlink_flash_update_notify(devlink,
DEVLINK_CMD_FLASH_UPDATE_STATUS, DEVLINK_CMD_FLASH_UPDATE_STATUS,
status_msg, component, done, total, 0); &params);
} }
EXPORT_SYMBOL_GPL(devlink_flash_update_status_notify); EXPORT_SYMBOL_GPL(devlink_flash_update_status_notify);
...@@ -3132,9 +3134,15 @@ void devlink_flash_update_timeout_notify(struct devlink *devlink, ...@@ -3132,9 +3134,15 @@ void devlink_flash_update_timeout_notify(struct devlink *devlink,
const char *component, const char *component,
unsigned long timeout) unsigned long timeout)
{ {
struct devlink_flash_notify params = {
.status_msg = status_msg,
.component = component,
.timeout = timeout,
};
__devlink_flash_update_notify(devlink, __devlink_flash_update_notify(devlink,
DEVLINK_CMD_FLASH_UPDATE_STATUS, DEVLINK_CMD_FLASH_UPDATE_STATUS,
status_msg, component, 0, 0, timeout); &params);
} }
EXPORT_SYMBOL_GPL(devlink_flash_update_timeout_notify); EXPORT_SYMBOL_GPL(devlink_flash_update_timeout_notify);
......
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