Skip to content

Commit 4c897cf

Browse files
rleondavem330
authored andcommitted
devlink: Simplify devlink resources unregister call
The devlink_resources_unregister() used second parameter as an entry point for the recursive removal of devlink resources. None of the callers outside of devlink core needed to use this field, so let's remove it. As part of this removal, the "struct devlink_resource" was moved from .h to .c file as it is not possible to use in any place in the code except devlink.c. Signed-off-by: Leon Romanovsky <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent c448c89 commit 4c897cf

File tree

6 files changed

+58
-53
lines changed

6 files changed

+58
-53
lines changed

drivers/net/ethernet/mellanox/mlxsw/core.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ static void mlxsw_ports_fini(struct mlxsw_core *mlxsw_core, bool reload)
160160

161161
devlink_resource_occ_get_unregister(devlink, MLXSW_CORE_RESOURCE_PORTS);
162162
if (!reload)
163-
devlink_resources_unregister(priv_to_devlink(mlxsw_core), NULL);
163+
devlink_resources_unregister(priv_to_devlink(mlxsw_core));
164164

165165
kfree(mlxsw_core->ports);
166166
}
@@ -2033,7 +2033,7 @@ __mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
20332033
mlxsw_ports_fini(mlxsw_core, reload);
20342034
err_ports_init:
20352035
if (!reload)
2036-
devlink_resources_unregister(devlink, NULL);
2036+
devlink_resources_unregister(devlink);
20372037
err_register_resources:
20382038
mlxsw_bus->fini(bus_priv);
20392039
err_bus_init:
@@ -2099,7 +2099,7 @@ void mlxsw_core_bus_device_unregister(struct mlxsw_core *mlxsw_core,
20992099
kfree(mlxsw_core->lag.mapping);
21002100
mlxsw_ports_fini(mlxsw_core, reload);
21012101
if (!reload)
2102-
devlink_resources_unregister(devlink, NULL);
2102+
devlink_resources_unregister(devlink);
21032103
mlxsw_core->bus->fini(mlxsw_core->bus_priv);
21042104
if (!reload)
21052105
devlink_free(devlink);
@@ -2108,7 +2108,7 @@ void mlxsw_core_bus_device_unregister(struct mlxsw_core *mlxsw_core,
21082108

21092109
reload_fail_deinit:
21102110
mlxsw_core_params_unregister(mlxsw_core);
2111-
devlink_resources_unregister(devlink, NULL);
2111+
devlink_resources_unregister(devlink);
21122112
devlink_free(devlink);
21132113
}
21142114
EXPORT_SYMBOL(mlxsw_core_bus_device_unregister);

drivers/net/ethernet/mellanox/mlxsw/spectrum.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3336,7 +3336,7 @@ static int mlxsw_sp1_resources_register(struct mlxsw_core *mlxsw_core)
33363336
err_policer_resources_register:
33373337
err_resources_counter_register:
33383338
err_resources_span_register:
3339-
devlink_resources_unregister(priv_to_devlink(mlxsw_core), NULL);
3339+
devlink_resources_unregister(priv_to_devlink(mlxsw_core));
33403340
return err;
33413341
}
33423342

@@ -3370,7 +3370,7 @@ static int mlxsw_sp2_resources_register(struct mlxsw_core *mlxsw_core)
33703370
err_policer_resources_register:
33713371
err_resources_counter_register:
33723372
err_resources_span_register:
3373-
devlink_resources_unregister(priv_to_devlink(mlxsw_core), NULL);
3373+
devlink_resources_unregister(priv_to_devlink(mlxsw_core));
33743374
return err;
33753375
}
33763376

drivers/net/netdevsim/dev.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1622,7 +1622,7 @@ int nsim_drv_probe(struct nsim_bus_dev *nsim_bus_dev)
16221622
devlink_params_unregister(devlink, nsim_devlink_params,
16231623
ARRAY_SIZE(nsim_devlink_params));
16241624
err_dl_unregister:
1625-
devlink_resources_unregister(devlink, NULL);
1625+
devlink_resources_unregister(devlink);
16261626
err_vfc_free:
16271627
kfree(nsim_dev->vfconfigs);
16281628
err_devlink_free:
@@ -1668,7 +1668,7 @@ void nsim_drv_remove(struct nsim_bus_dev *nsim_bus_dev)
16681668
nsim_dev_debugfs_exit(nsim_dev);
16691669
devlink_params_unregister(devlink, nsim_devlink_params,
16701670
ARRAY_SIZE(nsim_devlink_params));
1671-
devlink_resources_unregister(devlink, NULL);
1671+
devlink_resources_unregister(devlink);
16721672
kfree(nsim_dev->vfconfigs);
16731673
devlink_free(devlink);
16741674
dev_set_drvdata(&nsim_bus_dev->dev, NULL);

include/net/devlink.h

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -361,33 +361,6 @@ devlink_resource_size_params_init(struct devlink_resource_size_params *size_para
361361

362362
typedef u64 devlink_resource_occ_get_t(void *priv);
363363

364-
/**
365-
* struct devlink_resource - devlink resource
366-
* @name: name of the resource
367-
* @id: id, per devlink instance
368-
* @size: size of the resource
369-
* @size_new: updated size of the resource, reload is needed
370-
* @size_valid: valid in case the total size of the resource is valid
371-
* including its children
372-
* @parent: parent resource
373-
* @size_params: size parameters
374-
* @list: parent list
375-
* @resource_list: list of child resources
376-
*/
377-
struct devlink_resource {
378-
const char *name;
379-
u64 id;
380-
u64 size;
381-
u64 size_new;
382-
bool size_valid;
383-
struct devlink_resource *parent;
384-
struct devlink_resource_size_params size_params;
385-
struct list_head list;
386-
struct list_head resource_list;
387-
devlink_resource_occ_get_t *occ_get;
388-
void *occ_get_priv;
389-
};
390-
391364
#define DEVLINK_RESOURCE_ID_PARENT_TOP 0
392365

393366
#define DEVLINK_RESOURCE_GENERIC_NAME_PORTS "physical_ports"
@@ -1571,8 +1544,7 @@ int devlink_resource_register(struct devlink *devlink,
15711544
u64 resource_id,
15721545
u64 parent_resource_id,
15731546
const struct devlink_resource_size_params *size_params);
1574-
void devlink_resources_unregister(struct devlink *devlink,
1575-
struct devlink_resource *resource);
1547+
void devlink_resources_unregister(struct devlink *devlink);
15761548
int devlink_resource_size_get(struct devlink *devlink,
15771549
u64 resource_id,
15781550
u64 *p_resource_size);

net/core/devlink.c

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,35 @@ struct devlink {
6969
char priv[] __aligned(NETDEV_ALIGN);
7070
};
7171

72+
/**
73+
* struct devlink_resource - devlink resource
74+
* @name: name of the resource
75+
* @id: id, per devlink instance
76+
* @size: size of the resource
77+
* @size_new: updated size of the resource, reload is needed
78+
* @size_valid: valid in case the total size of the resource is valid
79+
* including its children
80+
* @parent: parent resource
81+
* @size_params: size parameters
82+
* @list: parent list
83+
* @resource_list: list of child resources
84+
* @occ_get: occupancy getter callback
85+
* @occ_get_priv: occupancy getter callback priv
86+
*/
87+
struct devlink_resource {
88+
const char *name;
89+
u64 id;
90+
u64 size;
91+
u64 size_new;
92+
bool size_valid;
93+
struct devlink_resource *parent;
94+
struct devlink_resource_size_params size_params;
95+
struct list_head list;
96+
struct list_head resource_list;
97+
devlink_resource_occ_get_t *occ_get;
98+
void *occ_get_priv;
99+
};
100+
72101
void *devlink_priv(struct devlink *devlink)
73102
{
74103
return &devlink->priv;
@@ -9908,34 +9937,38 @@ int devlink_resource_register(struct devlink *devlink,
99089937
}
99099938
EXPORT_SYMBOL_GPL(devlink_resource_register);
99109939

9940+
static void devlink_resource_unregister(struct devlink *devlink,
9941+
struct devlink_resource *resource)
9942+
{
9943+
struct devlink_resource *tmp, *child_resource;
9944+
9945+
list_for_each_entry_safe(child_resource, tmp, &resource->resource_list,
9946+
list) {
9947+
devlink_resource_unregister(devlink, child_resource);
9948+
list_del(&child_resource->list);
9949+
kfree(child_resource);
9950+
}
9951+
}
9952+
99119953
/**
99129954
* devlink_resources_unregister - free all resources
99139955
*
99149956
* @devlink: devlink
9915-
* @resource: resource
99169957
*/
9917-
void devlink_resources_unregister(struct devlink *devlink,
9918-
struct devlink_resource *resource)
9958+
void devlink_resources_unregister(struct devlink *devlink)
99199959
{
99209960
struct devlink_resource *tmp, *child_resource;
9921-
struct list_head *resource_list;
9922-
9923-
if (resource)
9924-
resource_list = &resource->resource_list;
9925-
else
9926-
resource_list = &devlink->resource_list;
99279961

9928-
if (!resource)
9929-
mutex_lock(&devlink->lock);
9962+
mutex_lock(&devlink->lock);
99309963

9931-
list_for_each_entry_safe(child_resource, tmp, resource_list, list) {
9932-
devlink_resources_unregister(devlink, child_resource);
9964+
list_for_each_entry_safe(child_resource, tmp, &devlink->resource_list,
9965+
list) {
9966+
devlink_resource_unregister(devlink, child_resource);
99339967
list_del(&child_resource->list);
99349968
kfree(child_resource);
99359969
}
99369970

9937-
if (!resource)
9938-
mutex_unlock(&devlink->lock);
9971+
mutex_unlock(&devlink->lock);
99399972
}
99409973
EXPORT_SYMBOL_GPL(devlink_resources_unregister);
99419974

net/dsa/dsa.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ EXPORT_SYMBOL_GPL(dsa_devlink_resource_register);
406406

407407
void dsa_devlink_resources_unregister(struct dsa_switch *ds)
408408
{
409-
devlink_resources_unregister(ds->devlink, NULL);
409+
devlink_resources_unregister(ds->devlink);
410410
}
411411
EXPORT_SYMBOL_GPL(dsa_devlink_resources_unregister);
412412

0 commit comments

Comments
 (0)