Commit 72a4c8c9 authored by Jiri Pirko's avatar Jiri Pirko Committed by Jakub Kicinski
Browse files

mlxsw: convert driver to use unlocked devlink API during init/fini



Prepare for devlink reload being called with devlink->lock held and
convert the mlxsw 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: default avatarJiri Pirko <jiri@nvidia.com>
Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
Tested-by: default avatarIdo Schimmel <idosch@nvidia.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 70a2ff89
Loading
Loading
Loading
Loading
+34 −19
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ static int mlxsw_core_resources_ports_register(struct mlxsw_core *mlxsw_core)
					  max_ports, 1,
					  DEVLINK_RESOURCE_UNIT_ENTRY);

	return devlink_resource_register(devlink,
	return devl_resource_register(devlink,
				      DEVLINK_RESOURCE_GENERIC_NAME_PORTS,
				      max_ports, MLXSW_CORE_RESOURCE_PORTS,
				      DEVLINK_RESOURCE_ID_PARENT_TOP,
@@ -157,7 +157,7 @@ static int mlxsw_ports_init(struct mlxsw_core *mlxsw_core, bool reload)
			goto err_resources_ports_register;
	}
	atomic_set(&mlxsw_core->active_ports_count, 0);
	devlink_resource_occ_get_register(devlink, MLXSW_CORE_RESOURCE_PORTS,
	devl_resource_occ_get_register(devlink, MLXSW_CORE_RESOURCE_PORTS,
				       mlxsw_ports_occ_get, mlxsw_core);

	return 0;
@@ -171,9 +171,9 @@ static void mlxsw_ports_fini(struct mlxsw_core *mlxsw_core, bool reload)
{
	struct devlink *devlink = priv_to_devlink(mlxsw_core);

	devlink_resource_occ_get_unregister(devlink, MLXSW_CORE_RESOURCE_PORTS);
	devl_resource_occ_get_unregister(devlink, MLXSW_CORE_RESOURCE_PORTS);
	if (!reload)
		devlink_resources_unregister(priv_to_devlink(mlxsw_core));
		devl_resources_unregister(priv_to_devlink(mlxsw_core));

	kfree(mlxsw_core->ports);
}
@@ -1488,7 +1488,9 @@ mlxsw_devlink_core_bus_device_reload_down(struct devlink *devlink,
	if (!(mlxsw_core->bus->features & MLXSW_BUS_F_RESET))
		return -EOPNOTSUPP;

	devl_lock(devlink);
	mlxsw_core_bus_device_unregister(mlxsw_core, true);
	devl_unlock(devlink);
	return 0;
}

@@ -1498,13 +1500,17 @@ mlxsw_devlink_core_bus_device_reload_up(struct devlink *devlink, enum devlink_re
					struct netlink_ext_ack *extack)
{
	struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
	int err;

	*actions_performed = BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT) |
			     BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE);
	return mlxsw_core_bus_device_register(mlxsw_core->bus_info,
	devl_lock(devlink);
	err = mlxsw_core_bus_device_register(mlxsw_core->bus_info,
					     mlxsw_core->bus,
					     mlxsw_core->bus_priv, true,
					     devlink, extack);
	devl_unlock(devlink);
	return err;
}

static int mlxsw_devlink_flash_update(struct devlink *devlink,
@@ -2102,6 +2108,7 @@ __mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
			err = -ENOMEM;
			goto err_devlink_alloc;
		}
		devl_lock(devlink);
	}

	mlxsw_core = devlink_priv(devlink);
@@ -2187,6 +2194,7 @@ __mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,

	if (!reload) {
		devlink_set_features(devlink, DEVLINK_F_RELOAD);
		devl_unlock(devlink);
		devlink_register(devlink);
	}
	return 0;
@@ -2214,12 +2222,14 @@ __mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
	mlxsw_ports_fini(mlxsw_core, reload);
err_ports_init:
	if (!reload)
		devlink_resources_unregister(devlink);
		devl_resources_unregister(devlink);
err_register_resources:
	mlxsw_bus->fini(bus_priv);
err_bus_init:
	if (!reload)
	if (!reload) {
		devl_unlock(devlink);
		devlink_free(devlink);
	}
err_devlink_alloc:
	return err;
}
@@ -2255,8 +2265,10 @@ void mlxsw_core_bus_device_unregister(struct mlxsw_core *mlxsw_core,
{
	struct devlink *devlink = priv_to_devlink(mlxsw_core);

	if (!reload)
	if (!reload) {
		devlink_unregister(devlink);
		devl_lock(devlink);
	}

	if (devlink_is_reload_failed(devlink)) {
		if (!reload)
@@ -2281,17 +2293,20 @@ void mlxsw_core_bus_device_unregister(struct mlxsw_core *mlxsw_core,
	kfree(mlxsw_core->lag.mapping);
	mlxsw_ports_fini(mlxsw_core, reload);
	if (!reload)
		devlink_resources_unregister(devlink);
		devl_resources_unregister(devlink);
	mlxsw_core->bus->fini(mlxsw_core->bus_priv);
	if (!reload)
	if (!reload) {
		devlink_free(devlink);
		devl_unlock(devlink);
	}

	return;

reload_fail_deinit:
	mlxsw_core_params_unregister(mlxsw_core);
	devlink_resources_unregister(devlink);
	devl_resources_unregister(devlink);
	devlink_free(devlink);
	devl_unlock(devlink);
}
EXPORT_SYMBOL(mlxsw_core_bus_device_unregister);

+48 −55
Original line number Diff line number Diff line
@@ -1999,7 +1999,6 @@ __mlxsw_sp_port_mapping_events_cancel(struct mlxsw_sp *mlxsw_sp)
static void mlxsw_sp_ports_remove(struct mlxsw_sp *mlxsw_sp)
{
	unsigned int max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
	struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
	int i;

	for (i = 1; i < max_ports; i++)
@@ -2007,12 +2006,10 @@ static void mlxsw_sp_ports_remove(struct mlxsw_sp *mlxsw_sp)
	/* Make sure all scheduled events are processed */
	__mlxsw_sp_port_mapping_events_cancel(mlxsw_sp);

	devl_lock(devlink);
	for (i = 1; i < max_ports; i++)
		if (mlxsw_sp_port_created(mlxsw_sp, i))
			mlxsw_sp_port_remove(mlxsw_sp, i);
	mlxsw_sp_cpu_port_remove(mlxsw_sp);
	devl_unlock(devlink);
	kfree(mlxsw_sp->ports);
	mlxsw_sp->ports = NULL;
}
@@ -2034,7 +2031,6 @@ mlxsw_sp_ports_remove_selected(struct mlxsw_core *mlxsw_core,
static int mlxsw_sp_ports_create(struct mlxsw_sp *mlxsw_sp)
{
	unsigned int max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
	struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
	struct mlxsw_sp_port_mapping_events *events;
	struct mlxsw_sp_port_mapping *port_mapping;
	size_t alloc_size;
@@ -2057,7 +2053,6 @@ static int mlxsw_sp_ports_create(struct mlxsw_sp *mlxsw_sp)
			goto err_event_enable;
	}

	devl_lock(devlink);
	err = mlxsw_sp_cpu_port_create(mlxsw_sp);
	if (err)
		goto err_cpu_port_create;
@@ -2070,7 +2065,6 @@ static int mlxsw_sp_ports_create(struct mlxsw_sp *mlxsw_sp)
		if (err)
			goto err_port_create;
	}
	devl_unlock(devlink);
	return 0;

err_port_create:
@@ -2080,7 +2074,6 @@ static int mlxsw_sp_ports_create(struct mlxsw_sp *mlxsw_sp)
	i = max_ports;
	mlxsw_sp_cpu_port_remove(mlxsw_sp);
err_cpu_port_create:
	devl_unlock(devlink);
err_event_enable:
	for (i--; i >= 1; i--)
		mlxsw_sp_port_mapping_event_set(mlxsw_sp, i, false);
@@ -3477,7 +3470,7 @@ static int mlxsw_sp1_resources_kvd_register(struct mlxsw_core *mlxsw_core)
					      &hash_single_size_params);

	kvd_size = MLXSW_CORE_RES_GET(mlxsw_core, KVD_SIZE);
	err = devlink_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD,
	err = devl_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD,
				     kvd_size, MLXSW_SP_RESOURCE_KVD,
				     DEVLINK_RESOURCE_ID_PARENT_TOP,
				     &kvd_size_params);
@@ -3485,7 +3478,7 @@ static int mlxsw_sp1_resources_kvd_register(struct mlxsw_core *mlxsw_core)
		return err;

	linear_size = profile->kvd_linear_size;
	err = devlink_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_LINEAR,
	err = devl_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_LINEAR,
				     linear_size,
				     MLXSW_SP_RESOURCE_KVD_LINEAR,
				     MLXSW_SP_RESOURCE_KVD,
@@ -3502,7 +3495,7 @@ static int mlxsw_sp1_resources_kvd_register(struct mlxsw_core *mlxsw_core)
	double_size /= profile->kvd_hash_double_parts +
		       profile->kvd_hash_single_parts;
	double_size = rounddown(double_size, MLXSW_SP_KVD_GRANULARITY);
	err = devlink_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_HASH_DOUBLE,
	err = devl_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_HASH_DOUBLE,
				     double_size,
				     MLXSW_SP_RESOURCE_KVD_HASH_DOUBLE,
				     MLXSW_SP_RESOURCE_KVD,
@@ -3511,7 +3504,7 @@ static int mlxsw_sp1_resources_kvd_register(struct mlxsw_core *mlxsw_core)
		return err;

	single_size = kvd_size - double_size - linear_size;
	err = devlink_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_HASH_SINGLE,
	err = devl_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_HASH_SINGLE,
				     single_size,
				     MLXSW_SP_RESOURCE_KVD_HASH_SINGLE,
				     MLXSW_SP_RESOURCE_KVD,
@@ -3536,7 +3529,7 @@ static int mlxsw_sp2_resources_kvd_register(struct mlxsw_core *mlxsw_core)
					  MLXSW_SP_KVD_GRANULARITY,
					  DEVLINK_RESOURCE_UNIT_ENTRY);

	return devlink_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD,
	return devl_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD,
				      kvd_size, MLXSW_SP_RESOURCE_KVD,
				      DEVLINK_RESOURCE_ID_PARENT_TOP,
				      &kvd_size_params);
@@ -3555,7 +3548,7 @@ static int mlxsw_sp_resources_span_register(struct mlxsw_core *mlxsw_core)
	devlink_resource_size_params_init(&span_size_params, max_span, max_span,
					  1, DEVLINK_RESOURCE_UNIT_ENTRY);

	return devlink_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_SPAN,
	return devl_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_SPAN,
				      max_span, MLXSW_SP_RESOURCE_SPAN,
				      DEVLINK_RESOURCE_ID_PARENT_TOP,
				      &span_size_params);
@@ -3577,7 +3570,7 @@ mlxsw_sp_resources_rif_mac_profile_register(struct mlxsw_core *mlxsw_core)
					  max_rif_mac_profiles, 1,
					  DEVLINK_RESOURCE_UNIT_ENTRY);

	return devlink_resource_register(devlink,
	return devl_resource_register(devlink,
				      "rif_mac_profiles",
				      max_rif_mac_profiles,
				      MLXSW_SP_RESOURCE_RIF_MAC_PROFILES,
@@ -3598,7 +3591,7 @@ static int mlxsw_sp_resources_rifs_register(struct mlxsw_core *mlxsw_core)
	devlink_resource_size_params_init(&size_params, max_rifs, max_rifs,
					  1, DEVLINK_RESOURCE_UNIT_ENTRY);

	return devlink_resource_register(devlink, "rifs", max_rifs,
	return devl_resource_register(devlink, "rifs", max_rifs,
				      MLXSW_SP_RESOURCE_RIFS,
				      DEVLINK_RESOURCE_ID_PARENT_TOP,
				      &size_params);
@@ -3639,7 +3632,7 @@ static int mlxsw_sp1_resources_register(struct mlxsw_core *mlxsw_core)
err_policer_resources_register:
err_resources_counter_register:
err_resources_span_register:
	devlink_resources_unregister(priv_to_devlink(mlxsw_core));
	devl_resources_unregister(priv_to_devlink(mlxsw_core));
	return err;
}

@@ -3678,7 +3671,7 @@ static int mlxsw_sp2_resources_register(struct mlxsw_core *mlxsw_core)
err_policer_resources_register:
err_resources_counter_register:
err_resources_span_register:
	devlink_resources_unregister(priv_to_devlink(mlxsw_core));
	devl_resources_unregister(priv_to_devlink(mlxsw_core));
	return err;
}

@@ -3702,13 +3695,13 @@ static int mlxsw_sp_kvd_sizes_get(struct mlxsw_core *mlxsw_core,
	 * granularity from the profile. In case the user
	 * provided the sizes they are obtained via devlink.
	 */
	err = devlink_resource_size_get(devlink,
	err = devl_resource_size_get(devlink,
				     MLXSW_SP_RESOURCE_KVD_LINEAR,
				     p_linear_size);
	if (err)
		*p_linear_size = profile->kvd_linear_size;

	err = devlink_resource_size_get(devlink,
	err = devl_resource_size_get(devlink,
				     MLXSW_SP_RESOURCE_KVD_HASH_DOUBLE,
				     p_double_size);
	if (err) {
@@ -3721,7 +3714,7 @@ static int mlxsw_sp_kvd_sizes_get(struct mlxsw_core *mlxsw_core,
					   MLXSW_SP_KVD_GRANULARITY);
	}

	err = devlink_resource_size_get(devlink,
	err = devl_resource_size_get(devlink,
				     MLXSW_SP_RESOURCE_KVD_HASH_SINGLE,
				     p_single_size);
	if (err)
+41 −41
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ mlxsw_sp1_kvdl_part_init(struct mlxsw_sp *mlxsw_sp,
	u64 resource_size;
	int err;

	err = devlink_resource_size_get(devlink, info->resource_id,
	err = devl_resource_size_get(devlink, info->resource_id,
				     &resource_size);
	if (err) {
		need_update = false;
@@ -338,19 +338,19 @@ static int mlxsw_sp1_kvdl_init(struct mlxsw_sp *mlxsw_sp, void *priv)
	err = mlxsw_sp1_kvdl_parts_init(mlxsw_sp, kvdl);
	if (err)
		return err;
	devlink_resource_occ_get_register(devlink,
	devl_resource_occ_get_register(devlink,
				       MLXSW_SP_RESOURCE_KVD_LINEAR,
				       mlxsw_sp1_kvdl_occ_get,
				       kvdl);
	devlink_resource_occ_get_register(devlink,
	devl_resource_occ_get_register(devlink,
				       MLXSW_SP_RESOURCE_KVD_LINEAR_SINGLE,
				       mlxsw_sp1_kvdl_single_occ_get,
				       kvdl);
	devlink_resource_occ_get_register(devlink,
	devl_resource_occ_get_register(devlink,
				       MLXSW_SP_RESOURCE_KVD_LINEAR_CHUNKS,
				       mlxsw_sp1_kvdl_chunks_occ_get,
				       kvdl);
	devlink_resource_occ_get_register(devlink,
	devl_resource_occ_get_register(devlink,
				       MLXSW_SP_RESOURCE_KVD_LINEAR_LARGE_CHUNKS,
				       mlxsw_sp1_kvdl_large_chunks_occ_get,
				       kvdl);
@@ -362,13 +362,13 @@ static void mlxsw_sp1_kvdl_fini(struct mlxsw_sp *mlxsw_sp, void *priv)
	struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
	struct mlxsw_sp1_kvdl *kvdl = priv;

	devlink_resource_occ_get_unregister(devlink,
	devl_resource_occ_get_unregister(devlink,
					 MLXSW_SP_RESOURCE_KVD_LINEAR_LARGE_CHUNKS);
	devlink_resource_occ_get_unregister(devlink,
	devl_resource_occ_get_unregister(devlink,
					 MLXSW_SP_RESOURCE_KVD_LINEAR_CHUNKS);
	devlink_resource_occ_get_unregister(devlink,
	devl_resource_occ_get_unregister(devlink,
					 MLXSW_SP_RESOURCE_KVD_LINEAR_SINGLE);
	devlink_resource_occ_get_unregister(devlink,
	devl_resource_occ_get_unregister(devlink,
					 MLXSW_SP_RESOURCE_KVD_LINEAR);
	mlxsw_sp1_kvdl_parts_fini(kvdl);
}
@@ -396,7 +396,7 @@ int mlxsw_sp1_kvdl_resources_register(struct mlxsw_core *mlxsw_core)
	devlink_resource_size_params_init(&size_params, 0, kvdl_max_size,
					  MLXSW_SP1_KVDL_SINGLE_ALLOC_SIZE,
					  DEVLINK_RESOURCE_UNIT_ENTRY);
	err = devlink_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_LINEAR_SINGLES,
	err = devl_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_LINEAR_SINGLES,
				     MLXSW_SP1_KVDL_SINGLE_SIZE,
				     MLXSW_SP_RESOURCE_KVD_LINEAR_SINGLE,
				     MLXSW_SP_RESOURCE_KVD_LINEAR,
@@ -407,7 +407,7 @@ int mlxsw_sp1_kvdl_resources_register(struct mlxsw_core *mlxsw_core)
	devlink_resource_size_params_init(&size_params, 0, kvdl_max_size,
					  MLXSW_SP1_KVDL_CHUNKS_ALLOC_SIZE,
					  DEVLINK_RESOURCE_UNIT_ENTRY);
	err = devlink_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_LINEAR_CHUNKS,
	err = devl_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_LINEAR_CHUNKS,
				     MLXSW_SP1_KVDL_CHUNKS_SIZE,
				     MLXSW_SP_RESOURCE_KVD_LINEAR_CHUNKS,
				     MLXSW_SP_RESOURCE_KVD_LINEAR,
@@ -418,7 +418,7 @@ int mlxsw_sp1_kvdl_resources_register(struct mlxsw_core *mlxsw_core)
	devlink_resource_size_params_init(&size_params, 0, kvdl_max_size,
					  MLXSW_SP1_KVDL_LARGE_CHUNKS_ALLOC_SIZE,
					  DEVLINK_RESOURCE_UNIT_ENTRY);
	err = devlink_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_LINEAR_LARGE_CHUNKS,
	err = devl_resource_register(devlink, MLXSW_SP_RESOURCE_NAME_KVD_LINEAR_LARGE_CHUNKS,
				     MLXSW_SP1_KVDL_LARGE_CHUNKS_SIZE,
				     MLXSW_SP_RESOURCE_KVD_LINEAR_LARGE_CHUNKS,
				     MLXSW_SP_RESOURCE_KVD_LINEAR,
+7 −7
Original line number Diff line number Diff line
@@ -1290,7 +1290,7 @@ int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp)
	if (err)
		goto err_sb_mms_init;
	mlxsw_sp_pool_count(mlxsw_sp, &ing_pool_count, &eg_pool_count);
	err = devlink_sb_register(priv_to_devlink(mlxsw_sp->core), 0,
	err = devl_sb_register(priv_to_devlink(mlxsw_sp->core), 0,
			       mlxsw_sp->sb->sb_size,
			       ing_pool_count,
			       eg_pool_count,
@@ -1314,7 +1314,7 @@ int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp)

void mlxsw_sp_buffers_fini(struct mlxsw_sp *mlxsw_sp)
{
	devlink_sb_unregister(priv_to_devlink(mlxsw_sp->core), 0);
	devl_sb_unregister(priv_to_devlink(mlxsw_sp->core), 0);
	mlxsw_sp_sb_ports_fini(mlxsw_sp);
	kfree(mlxsw_sp->sb);
}
+31 −31
Original line number Diff line number Diff line
@@ -67,13 +67,13 @@ static int mlxsw_sp_counter_sub_pools_init(struct mlxsw_sp *mlxsw_sp)
			return -EIO;
		sub_pool->entry_size = mlxsw_core_res_get(mlxsw_sp->core,
							  res_id);
		err = devlink_resource_size_get(devlink,
		err = devl_resource_size_get(devlink,
					     sub_pool->resource_id,
					     &sub_pool->size);
		if (err)
			goto err_resource_size_get;

		devlink_resource_occ_get_register(devlink,
		devl_resource_occ_get_register(devlink,
					       sub_pool->resource_id,
					       mlxsw_sp_counter_sub_pool_occ_get,
					       sub_pool);
@@ -88,7 +88,7 @@ static int mlxsw_sp_counter_sub_pools_init(struct mlxsw_sp *mlxsw_sp)
	for (i--; i >= 0; i--) {
		sub_pool = &pool->sub_pools[i];

		devlink_resource_occ_get_unregister(devlink,
		devl_resource_occ_get_unregister(devlink,
						 sub_pool->resource_id);
	}
	return err;
@@ -105,7 +105,7 @@ static void mlxsw_sp_counter_sub_pools_fini(struct mlxsw_sp *mlxsw_sp)
		sub_pool = &pool->sub_pools[i];

		WARN_ON(atomic_read(&sub_pool->active_entries_count));
		devlink_resource_occ_get_unregister(devlink,
		devl_resource_occ_get_unregister(devlink,
						 sub_pool->resource_id);
	}
}
@@ -135,11 +135,11 @@ int mlxsw_sp_counter_pool_init(struct mlxsw_sp *mlxsw_sp)
	spin_lock_init(&pool->counter_pool_lock);
	atomic_set(&pool->active_entries_count, 0);

	err = devlink_resource_size_get(devlink, MLXSW_SP_RESOURCE_COUNTERS,
	err = devl_resource_size_get(devlink, MLXSW_SP_RESOURCE_COUNTERS,
				     &pool->pool_size);
	if (err)
		goto err_pool_resource_size_get;
	devlink_resource_occ_get_register(devlink, MLXSW_SP_RESOURCE_COUNTERS,
	devl_resource_occ_get_register(devlink, MLXSW_SP_RESOURCE_COUNTERS,
				       mlxsw_sp_counter_pool_occ_get, pool);

	pool->usage = bitmap_zalloc(pool->pool_size, GFP_KERNEL);
@@ -157,7 +157,7 @@ int mlxsw_sp_counter_pool_init(struct mlxsw_sp *mlxsw_sp)
err_sub_pools_init:
	bitmap_free(pool->usage);
err_usage_alloc:
	devlink_resource_occ_get_unregister(devlink,
	devl_resource_occ_get_unregister(devlink,
					 MLXSW_SP_RESOURCE_COUNTERS);
err_pool_resource_size_get:
	kfree(pool);
@@ -174,7 +174,7 @@ void mlxsw_sp_counter_pool_fini(struct mlxsw_sp *mlxsw_sp)
			       pool->pool_size);
	WARN_ON(atomic_read(&pool->active_entries_count));
	bitmap_free(pool->usage);
	devlink_resource_occ_get_unregister(devlink,
	devl_resource_occ_get_unregister(devlink,
					 MLXSW_SP_RESOURCE_COUNTERS);
	kfree(pool);
}
@@ -262,7 +262,7 @@ int mlxsw_sp_counter_resources_register(struct mlxsw_core *mlxsw_core)
	devlink_resource_size_params_init(&size_params, pool_size,
					  pool_size, bank_size,
					  DEVLINK_RESOURCE_UNIT_ENTRY);
	err = devlink_resource_register(devlink,
	err = devl_resource_register(devlink,
				     MLXSW_SP_RESOURCE_NAME_COUNTERS,
				     pool_size,
				     MLXSW_SP_RESOURCE_COUNTERS,
@@ -287,7 +287,7 @@ int mlxsw_sp_counter_resources_register(struct mlxsw_core *mlxsw_core)
		devlink_resource_size_params_init(&size_params, sub_pool_size,
						  sub_pool_size, bank_size,
						  DEVLINK_RESOURCE_UNIT_ENTRY);
		err = devlink_resource_register(devlink,
		err = devl_resource_register(devlink,
					     sub_pool->resource_name,
					     sub_pool_size,
					     sub_pool->resource_id,
Loading