Skip to content

Commit ffd19b9

Browse files
Vasundhara Volamdavem330
authored andcommitted
devlink: Add support for driverinit get value for devlink_port
Add support for "driverinit" configuration mode value for devlink_port configuration parameters. Add devlink_port_param_driverinit_value_get() function to help the driver get the value from devlink_port. Also, move the common code to __devlink_param_driverinit_value_get() to be used by both device and port params. v7->v8: -Add the missing devlink_port_param_driverinit_value_get() declaration. -Also, order devlink_port_param_driverinit_value_get() after devlink_param_driverinit_value_get/set() calls Cc: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 9c54873 commit ffd19b9

File tree

2 files changed

+62
-17
lines changed

2 files changed

+62
-17
lines changed

include/net/devlink.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,10 @@ int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
578578
union devlink_param_value *init_val);
579579
int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id,
580580
union devlink_param_value init_val);
581+
int
582+
devlink_port_param_driverinit_value_get(struct devlink_port *devlink_port,
583+
u32 param_id,
584+
union devlink_param_value *init_val);
581585
void devlink_param_value_changed(struct devlink *devlink, u32 param_id);
582586
void devlink_param_value_str_fill(union devlink_param_value *dst_val,
583587
const char *src);
@@ -827,6 +831,14 @@ devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id,
827831
return -EOPNOTSUPP;
828832
}
829833

834+
static inline int
835+
devlink_port_param_driverinit_value_get(struct devlink_port *devlink_port,
836+
u32 param_id,
837+
union devlink_param_value *init_val)
838+
{
839+
return -EOPNOTSUPP;
840+
}
841+
830842
static inline void
831843
devlink_param_value_changed(struct devlink *devlink, u32 param_id)
832844
{

net/core/devlink.c

Lines changed: 50 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4714,26 +4714,13 @@ void devlink_port_params_unregister(struct devlink_port *devlink_port,
47144714
}
47154715
EXPORT_SYMBOL_GPL(devlink_port_params_unregister);
47164716

4717-
/**
4718-
* devlink_param_driverinit_value_get - get configuration parameter
4719-
* value for driver initializing
4720-
*
4721-
* @devlink: devlink
4722-
* @param_id: parameter ID
4723-
* @init_val: value of parameter in driverinit configuration mode
4724-
*
4725-
* This function should be used by the driver to get driverinit
4726-
* configuration for initialization after reload command.
4727-
*/
4728-
int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
4729-
union devlink_param_value *init_val)
4717+
static int
4718+
__devlink_param_driverinit_value_get(struct list_head *param_list, u32 param_id,
4719+
union devlink_param_value *init_val)
47304720
{
47314721
struct devlink_param_item *param_item;
47324722

4733-
if (!devlink->ops || !devlink->ops->reload)
4734-
return -EOPNOTSUPP;
4735-
4736-
param_item = devlink_param_find_by_id(&devlink->param_list, param_id);
4723+
param_item = devlink_param_find_by_id(param_list, param_id);
47374724
if (!param_item)
47384725
return -EINVAL;
47394726

@@ -4749,6 +4736,27 @@ int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
47494736

47504737
return 0;
47514738
}
4739+
4740+
/**
4741+
* devlink_param_driverinit_value_get - get configuration parameter
4742+
* value for driver initializing
4743+
*
4744+
* @devlink: devlink
4745+
* @param_id: parameter ID
4746+
* @init_val: value of parameter in driverinit configuration mode
4747+
*
4748+
* This function should be used by the driver to get driverinit
4749+
* configuration for initialization after reload command.
4750+
*/
4751+
int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
4752+
union devlink_param_value *init_val)
4753+
{
4754+
if (!devlink->ops || !devlink->ops->reload)
4755+
return -EOPNOTSUPP;
4756+
4757+
return __devlink_param_driverinit_value_get(&devlink->param_list,
4758+
param_id, init_val);
4759+
}
47524760
EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_get);
47534761

47544762
/**
@@ -4787,6 +4795,31 @@ int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id,
47874795
}
47884796
EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_set);
47894797

4798+
/**
4799+
* devlink_port_param_driverinit_value_get - get configuration parameter
4800+
* value for driver initializing
4801+
*
4802+
* @devlink_port: devlink_port
4803+
* @param_id: parameter ID
4804+
* @init_val: value of parameter in driverinit configuration mode
4805+
*
4806+
* This function should be used by the driver to get driverinit
4807+
* configuration for initialization after reload command.
4808+
*/
4809+
int devlink_port_param_driverinit_value_get(struct devlink_port *devlink_port,
4810+
u32 param_id,
4811+
union devlink_param_value *init_val)
4812+
{
4813+
struct devlink *devlink = devlink_port->devlink;
4814+
4815+
if (!devlink->ops || !devlink->ops->reload)
4816+
return -EOPNOTSUPP;
4817+
4818+
return __devlink_param_driverinit_value_get(&devlink_port->param_list,
4819+
param_id, init_val);
4820+
}
4821+
EXPORT_SYMBOL_GPL(devlink_port_param_driverinit_value_get);
4822+
47904823
/**
47914824
* devlink_param_value_changed - notify devlink on a parameter's value
47924825
* change. Should be called by the driver

0 commit comments

Comments
 (0)