mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-28 21:46:43 -04:00
netdevsim: convert driver to use unlocked devlink API during init/fini
Prepare for devlink reload being called with devlink->lock held and convert the netdevsim driver to use unlocked devlink API during init and fini flows. Take devl_lock() in reload_down() and reload_up() ops in the meantime before reload cmd is converted to take the lock itself. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
eb0e9fa2c6
commit
012ec02ae4
@@ -1453,7 +1453,7 @@ static void nsim_fib_set_max_all(struct nsim_fib_data *data,
|
||||
int err;
|
||||
u64 val;
|
||||
|
||||
err = devlink_resource_size_get(devlink, res_ids[i], &val);
|
||||
err = devl_resource_size_get(devlink, res_ids[i], &val);
|
||||
if (err)
|
||||
val = (u64) -1;
|
||||
nsim_fib_set_max(data, res_ids[i], val);
|
||||
@@ -1562,26 +1562,26 @@ struct nsim_fib_data *nsim_fib_create(struct devlink *devlink,
|
||||
goto err_nexthop_nb_unregister;
|
||||
}
|
||||
|
||||
devlink_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_IPV4_FIB,
|
||||
nsim_fib_ipv4_resource_occ_get,
|
||||
data);
|
||||
devlink_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_IPV4_FIB_RULES,
|
||||
nsim_fib_ipv4_rules_res_occ_get,
|
||||
data);
|
||||
devlink_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_IPV6_FIB,
|
||||
nsim_fib_ipv6_resource_occ_get,
|
||||
data);
|
||||
devlink_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_IPV6_FIB_RULES,
|
||||
nsim_fib_ipv6_rules_res_occ_get,
|
||||
data);
|
||||
devlink_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_NEXTHOPS,
|
||||
nsim_fib_nexthops_res_occ_get,
|
||||
data);
|
||||
devl_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_IPV4_FIB,
|
||||
nsim_fib_ipv4_resource_occ_get,
|
||||
data);
|
||||
devl_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_IPV4_FIB_RULES,
|
||||
nsim_fib_ipv4_rules_res_occ_get,
|
||||
data);
|
||||
devl_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_IPV6_FIB,
|
||||
nsim_fib_ipv6_resource_occ_get,
|
||||
data);
|
||||
devl_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_IPV6_FIB_RULES,
|
||||
nsim_fib_ipv6_rules_res_occ_get,
|
||||
data);
|
||||
devl_resource_occ_get_register(devlink,
|
||||
NSIM_RESOURCE_NEXTHOPS,
|
||||
nsim_fib_nexthops_res_occ_get,
|
||||
data);
|
||||
return data;
|
||||
|
||||
err_nexthop_nb_unregister:
|
||||
@@ -1604,16 +1604,16 @@ err_data_free:
|
||||
|
||||
void nsim_fib_destroy(struct devlink *devlink, struct nsim_fib_data *data)
|
||||
{
|
||||
devlink_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_NEXTHOPS);
|
||||
devlink_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_IPV6_FIB_RULES);
|
||||
devlink_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_IPV6_FIB);
|
||||
devlink_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_IPV4_FIB_RULES);
|
||||
devlink_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_IPV4_FIB);
|
||||
devl_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_NEXTHOPS);
|
||||
devl_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_IPV6_FIB_RULES);
|
||||
devl_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_IPV6_FIB);
|
||||
devl_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_IPV4_FIB_RULES);
|
||||
devl_resource_occ_get_unregister(devlink,
|
||||
NSIM_RESOURCE_IPV4_FIB);
|
||||
unregister_fib_notifier(devlink_net(devlink), &data->fib_nb);
|
||||
unregister_nexthop_notifier(devlink_net(devlink), &data->nexthop_nb);
|
||||
flush_work(&data->fib_event_work);
|
||||
|
||||
Reference in New Issue
Block a user