Fixes the behavior of the rte_fib_rcu_qsbr_add() function regarding its return value to align with the existing rte_fib API.
Fixes: 96c3d06a3547 ("fib: implement RCU rule reclamation") Signed-off-by: Vladimir Medvedkin <vladimir.medved...@intel.com> --- lib/fib/dir24_8.c | 21 ++++++++------------- lib/fib/rte_fib.h | 8 ++++---- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/lib/fib/dir24_8.c b/lib/fib/dir24_8.c index 2fb01a3f99..73a59f3397 100644 --- a/lib/fib/dir24_8.c +++ b/lib/fib/dir24_8.c @@ -617,15 +617,11 @@ dir24_8_rcu_qsbr_add(struct dir24_8_tbl *dp, struct rte_fib_rcu_config *cfg, struct rte_rcu_qsbr_dq_parameters params = {0}; char rcu_dq_name[RTE_RCU_QSBR_DQ_NAMESIZE]; - if (dp == NULL || cfg == NULL) { - rte_errno = EINVAL; - return 1; - } + if (dp == NULL || cfg == NULL) + return -EINVAL; - if (dp->v != NULL) { - rte_errno = EEXIST; - return 1; - } + if (dp->v != NULL) + return -EEXIST; if (cfg->mode == RTE_FIB_QSBR_MODE_SYNC) { /* No other things to do. */ @@ -648,12 +644,11 @@ dir24_8_rcu_qsbr_add(struct dir24_8_tbl *dp, struct rte_fib_rcu_config *cfg, dp->dq = rte_rcu_qsbr_dq_create(¶ms); if (dp->dq == NULL) { FIB_LOG(ERR, "LPM defer queue creation failed"); - return 1; + return -rte_errno; } - } else { - rte_errno = EINVAL; - return 1; - } + } else + return -EINVAL; + dp->rcu_mode = cfg->mode; dp->v = cfg->v; diff --git a/lib/fib/rte_fib.h b/lib/fib/rte_fib.h index 9732ace2e4..c49b02ab11 100644 --- a/lib/fib/rte_fib.h +++ b/lib/fib/rte_fib.h @@ -266,10 +266,10 @@ rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type); * @param cfg * RCU QSBR configuration * @return - * On success - 0 - * On error - 1 with error code set in rte_errno. - * Possible rte_errno codes are: - * - EINVAL - invalid pointer + * 0 on success + * Negative otherwise + * Possible error codes are: + * - EINVAL - invalid parameters * - EEXIST - already added QSBR * - ENOMEM - memory allocation failure * - ENOTSUP - not supported by configured dataplane algorithm -- 2.43.0