mlxsw: spectrum: Fix handling of resource_size_param
Current code uses global variables, adjusts them and passes pointer down
to devlink. With every other mlxsw_core instance, the previously passed
pointer values are rewritten. Fix this by de-globalize the variables and
also memcpy size_params during devlink resource registration.
Also, introduce a convenient size_param_init helper.
Fixes: ef3116e540
("mlxsw: spectrum: Register KVD resources with devlink")
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
2ddc94c76c
commit
77d270967c
@@ -257,6 +257,18 @@ struct devlink_resource_size_params {
|
||||
enum devlink_resource_unit unit;
|
||||
};
|
||||
|
||||
static inline void
|
||||
devlink_resource_size_params_init(struct devlink_resource_size_params *size_params,
|
||||
u64 size_min, u64 size_max,
|
||||
u64 size_granularity,
|
||||
enum devlink_resource_unit unit)
|
||||
{
|
||||
size_params->size_min = size_min;
|
||||
size_params->size_max = size_max;
|
||||
size_params->size_granularity = size_granularity;
|
||||
size_params->unit = unit;
|
||||
}
|
||||
|
||||
/**
|
||||
* struct devlink_resource - devlink resource
|
||||
* @name: name of the resource
|
||||
@@ -278,7 +290,7 @@ struct devlink_resource {
|
||||
u64 size_new;
|
||||
bool size_valid;
|
||||
struct devlink_resource *parent;
|
||||
struct devlink_resource_size_params *size_params;
|
||||
struct devlink_resource_size_params size_params;
|
||||
struct list_head list;
|
||||
struct list_head resource_list;
|
||||
const struct devlink_resource_ops *resource_ops;
|
||||
@@ -402,7 +414,7 @@ int devlink_resource_register(struct devlink *devlink,
|
||||
u64 resource_size,
|
||||
u64 resource_id,
|
||||
u64 parent_resource_id,
|
||||
struct devlink_resource_size_params *size_params,
|
||||
const struct devlink_resource_size_params *size_params,
|
||||
const struct devlink_resource_ops *resource_ops);
|
||||
void devlink_resources_unregister(struct devlink *devlink,
|
||||
struct devlink_resource *resource);
|
||||
@@ -556,7 +568,7 @@ devlink_resource_register(struct devlink *devlink,
|
||||
u64 resource_size,
|
||||
u64 resource_id,
|
||||
u64 parent_resource_id,
|
||||
struct devlink_resource_size_params *size_params,
|
||||
const struct devlink_resource_size_params *size_params,
|
||||
const struct devlink_resource_ops *resource_ops)
|
||||
{
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user