summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
diff options
context:
space:
mode:
authorJiri Pirko <jiri@mellanox.com>2018-07-08 23:51:17 +0300
committerDavid S. Miller <davem@davemloft.net>2018-07-09 16:24:16 -0700
commit4b6b18692aec205b98dd333938b714af9d7aefe1 (patch)
treef2d22dfb001c2f549c015ab5e44893a2a4d6a6b0 /drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
parentebcff74386e6fbfe1d5dc406b99db63481f9c2c7 (diff)
mlxsw: spectrum_kvdl: Pass entry type to alloc/free
Future Spectrum-2 KVD linear manager implementation needs to know type of the entry to alloc and free. So define the types in an enum and pass it down to alloc and free functions. Once the entry type is passed down, KVDL common part knows sizes of each entry types, so replace size function arg with entry count. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c')
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
index 2b514e47ca2b..3f9130afe5ea 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c
@@ -74,28 +74,32 @@ void mlxsw_sp_kvdl_fini(struct mlxsw_sp *mlxsw_sp)
kfree(kvdl);
}
-int mlxsw_sp_kvdl_alloc(struct mlxsw_sp *mlxsw_sp, unsigned int entry_count,
- u32 *p_entry_index)
+int mlxsw_sp_kvdl_alloc(struct mlxsw_sp *mlxsw_sp,
+ enum mlxsw_sp_kvdl_entry_type type,
+ unsigned int entry_count, u32 *p_entry_index)
{
struct mlxsw_sp_kvdl *kvdl = mlxsw_sp->kvdl;
- return kvdl->kvdl_ops->alloc(mlxsw_sp, kvdl->priv,
+ return kvdl->kvdl_ops->alloc(mlxsw_sp, kvdl->priv, type,
entry_count, p_entry_index);
}
-void mlxsw_sp_kvdl_free(struct mlxsw_sp *mlxsw_sp, int entry_index)
+void mlxsw_sp_kvdl_free(struct mlxsw_sp *mlxsw_sp,
+ enum mlxsw_sp_kvdl_entry_type type,
+ int entry_index)
{
struct mlxsw_sp_kvdl *kvdl = mlxsw_sp->kvdl;
- kvdl->kvdl_ops->free(mlxsw_sp, kvdl->priv, entry_index);
+ kvdl->kvdl_ops->free(mlxsw_sp, kvdl->priv, type, entry_index);
}
-int mlxsw_sp_kvdl_alloc_size_query(struct mlxsw_sp *mlxsw_sp,
- unsigned int entry_count,
- unsigned int *p_alloc_size)
+int mlxsw_sp_kvdl_alloc_count_query(struct mlxsw_sp *mlxsw_sp,
+ enum mlxsw_sp_kvdl_entry_type type,
+ unsigned int entry_count,
+ unsigned int *p_alloc_count)
{
struct mlxsw_sp_kvdl *kvdl = mlxsw_sp->kvdl;
- return kvdl->kvdl_ops->alloc_size_query(mlxsw_sp, kvdl->priv,
- entry_count, p_alloc_size);
+ return kvdl->kvdl_ops->alloc_size_query(mlxsw_sp, kvdl->priv, type,
+ entry_count, p_alloc_count);
}