devlink: convert flash_update to use params structure
The devlink core recently gained support for checking whether the driver supports a flash_update parameter, via `supported_flash_update_params`. However, parameters are specified as function arguments. Adding a new parameter still requires modifying the signature of the .flash_update callback in all drivers. Convert the .flash_update function to take a new `struct devlink_flash_update_params` instead. By using this structure, and the `supported_flash_update_params` bit field, a new parameter to flash_update can be added without requiring modification to existing drivers. As before, all parameters except file_name will require driver opt-in. Because file_name is a necessary field to for the flash_update to make sense, no "SUPPORTED" bitflag is provided and it is always considered valid. All future additional parameters will require a new bit in the supported_flash_update_params bitfield. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Reviewed-by: Jakub Kicinski <kuba@kernel.org> Cc: Jiri Pirko <jiri@mellanox.com> Cc: Jakub Kicinski <kuba@kernel.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Michael Chan <michael.chan@broadcom.com> Cc: Bin Luo <luobin9@huawei.com> Cc: Saeed Mahameed <saeedm@mellanox.com> Cc: Leon Romanovsky <leon@kernel.org> Cc: Ido Schimmel <idosch@mellanox.com> Cc: Danielle Ratson <danieller@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
22ec3d232f
commit
bc75c054f0
@@ -742,8 +742,8 @@ static int nsim_dev_info_get(struct devlink *devlink,
|
||||
#define NSIM_DEV_FLASH_CHUNK_SIZE 1000
|
||||
#define NSIM_DEV_FLASH_CHUNK_TIME_MS 10
|
||||
|
||||
static int nsim_dev_flash_update(struct devlink *devlink, const char *file_name,
|
||||
const char *component,
|
||||
static int nsim_dev_flash_update(struct devlink *devlink,
|
||||
struct devlink_flash_update_params *params,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nsim_dev *nsim_dev = devlink_priv(devlink);
|
||||
@@ -753,13 +753,13 @@ static int nsim_dev_flash_update(struct devlink *devlink, const char *file_name,
|
||||
devlink_flash_update_begin_notify(devlink);
|
||||
devlink_flash_update_status_notify(devlink,
|
||||
"Preparing to flash",
|
||||
component, 0, 0);
|
||||
params->component, 0, 0);
|
||||
}
|
||||
|
||||
for (i = 0; i < NSIM_DEV_FLASH_SIZE / NSIM_DEV_FLASH_CHUNK_SIZE; i++) {
|
||||
if (nsim_dev->fw_update_status)
|
||||
devlink_flash_update_status_notify(devlink, "Flashing",
|
||||
component,
|
||||
params->component,
|
||||
i * NSIM_DEV_FLASH_CHUNK_SIZE,
|
||||
NSIM_DEV_FLASH_SIZE);
|
||||
msleep(NSIM_DEV_FLASH_CHUNK_TIME_MS);
|
||||
@@ -767,13 +767,13 @@ static int nsim_dev_flash_update(struct devlink *devlink, const char *file_name,
|
||||
|
||||
if (nsim_dev->fw_update_status) {
|
||||
devlink_flash_update_status_notify(devlink, "Flashing",
|
||||
component,
|
||||
params->component,
|
||||
NSIM_DEV_FLASH_SIZE,
|
||||
NSIM_DEV_FLASH_SIZE);
|
||||
devlink_flash_update_timeout_notify(devlink, "Flash select",
|
||||
component, 81);
|
||||
params->component, 81);
|
||||
devlink_flash_update_status_notify(devlink, "Flashing done",
|
||||
component, 0, 0);
|
||||
params->component, 0, 0);
|
||||
devlink_flash_update_end_notify(devlink);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user