summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIdo Schimmel2017-06-04 16:53:40 +0200
committerDavid S. Miller2017-06-05 05:49:49 +0200
commitde5ed99e9777a487da4ad9c58e409ed26b640d9e (patch)
tree1746950039e57e11c44674b289d216f469b7b006
parentmlxsw: Fix typo inside enumeration (diff)
downloadkernel-qcow2-linux-de5ed99e9777a487da4ad9c58e409ed26b640d9e.tar.gz
kernel-qcow2-linux-de5ed99e9777a487da4ad9c58e409ed26b640d9e.tar.xz
kernel-qcow2-linux-de5ed99e9777a487da4ad9c58e409ed26b640d9e.zip
mlxsw: spectrum_router: Align RIF index allocation with existing code
The way we usually allocate an index is by letting the allocation function return an error instead of an invalid index. Do the same for RIF index. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Reviewed-by: Petr Machata <petrm@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
index a4272c351e3a..20061058801e 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
@@ -2979,16 +2979,18 @@ mlxsw_sp_dev_rif_type(const struct mlxsw_sp *mlxsw_sp,
return mlxsw_sp_fid_type_rif_type(mlxsw_sp, type);
}
-#define MLXSW_SP_INVALID_INDEX_RIF 0xffff
-static int mlxsw_sp_avail_rif_get(struct mlxsw_sp *mlxsw_sp)
+static int mlxsw_sp_rif_index_alloc(struct mlxsw_sp *mlxsw_sp, u16 *p_rif_index)
{
int i;
- for (i = 0; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS); i++)
- if (!mlxsw_sp->router->rifs[i])
- return i;
+ for (i = 0; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS); i++) {
+ if (!mlxsw_sp->router->rifs[i]) {
+ *p_rif_index = i;
+ return 0;
+ }
+ }
- return MLXSW_SP_INVALID_INDEX_RIF;
+ return -ENOBUFS;
}
static struct mlxsw_sp_rif *mlxsw_sp_rif_alloc(size_t rif_size, u16 rif_index,
@@ -3048,11 +3050,9 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
if (IS_ERR(vr))
return ERR_CAST(vr);
- rif_index = mlxsw_sp_avail_rif_get(mlxsw_sp);
- if (rif_index == MLXSW_SP_INVALID_INDEX_RIF) {
- err = -ERANGE;
- goto err_avail_rif_get;
- }
+ err = mlxsw_sp_rif_index_alloc(mlxsw_sp, &rif_index);
+ if (err)
+ goto err_rif_index_alloc;
rif = mlxsw_sp_rif_alloc(ops->rif_size, rif_index, vr->id, params->dev);
if (!rif) {
@@ -3095,7 +3095,7 @@ err_configure:
err_fid_get:
kfree(rif);
err_rif_alloc:
-err_avail_rif_get:
+err_rif_index_alloc:
mlxsw_sp_vr_put(vr);
return ERR_PTR(err);
}