|
|
@@ -3105,7 +3105,10 @@ static int devlink_nl_cmd_param_set_doit(struct sk_buff *skb,
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
if (cmode == DEVLINK_PARAM_CMODE_DRIVERINIT) {
|
|
|
- param_item->driverinit_value = value;
|
|
|
+ if (param->type == DEVLINK_PARAM_TYPE_STRING)
|
|
|
+ strcpy(param_item->driverinit_value.vstr, value.vstr);
|
|
|
+ else
|
|
|
+ param_item->driverinit_value = value;
|
|
|
param_item->driverinit_value_valid = true;
|
|
|
} else {
|
|
|
if (!param->set)
|
|
|
@@ -4545,7 +4548,10 @@ int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
|
|
|
DEVLINK_PARAM_CMODE_DRIVERINIT))
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- *init_val = param_item->driverinit_value;
|
|
|
+ if (param_item->param->type == DEVLINK_PARAM_TYPE_STRING)
|
|
|
+ strcpy(init_val->vstr, param_item->driverinit_value.vstr);
|
|
|
+ else
|
|
|
+ *init_val = param_item->driverinit_value;
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
@@ -4576,7 +4582,10 @@ int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id,
|
|
|
DEVLINK_PARAM_CMODE_DRIVERINIT))
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- param_item->driverinit_value = init_val;
|
|
|
+ if (param_item->param->type == DEVLINK_PARAM_TYPE_STRING)
|
|
|
+ strcpy(param_item->driverinit_value.vstr, init_val.vstr);
|
|
|
+ else
|
|
|
+ param_item->driverinit_value = init_val;
|
|
|
param_item->driverinit_value_valid = true;
|
|
|
|
|
|
devlink_param_notify(devlink, param_item, DEVLINK_CMD_PARAM_NEW);
|