Add rte_fib_tbl8_pool_get_stats() to retrieve the number of used and total tbl8 groups from a pool handle directly, without going through a FIB instance.
Signed-off-by: Maxime Leroy <[email protected]> --- lib/fib/fib_tbl8_pool.c | 17 +++++++++++++++++ lib/fib/rte_fib_tbl8_pool.h | 19 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/lib/fib/fib_tbl8_pool.c b/lib/fib/fib_tbl8_pool.c index 10e0c57ba7..d47fccd987 100644 --- a/lib/fib/fib_tbl8_pool.c +++ b/lib/fib/fib_tbl8_pool.c @@ -318,3 +318,20 @@ rte_fib_tbl8_pool_rcu_qsbr_add(struct rte_fib_tbl8_pool *pool, pool->v = cfg->v; return 0; } + +RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_fib_tbl8_pool_get_stats, 26.07) +int +rte_fib_tbl8_pool_get_stats(struct rte_fib_tbl8_pool *pool, + uint32_t *used, uint32_t *total, uint32_t *max) +{ + if (pool == NULL) + return -EINVAL; + + if (used != NULL) + *used = pool->cur_tbl8s; + if (total != NULL) + *total = pool->num_tbl8s; + if (max != NULL) + *max = pool->max_tbl8s; + return 0; +} diff --git a/lib/fib/rte_fib_tbl8_pool.h b/lib/fib/rte_fib_tbl8_pool.h index d37ddedff3..49a2589a5b 100644 --- a/lib/fib/rte_fib_tbl8_pool.h +++ b/lib/fib/rte_fib_tbl8_pool.h @@ -123,6 +123,25 @@ int rte_fib_tbl8_pool_resize(struct rte_fib_tbl8_pool *pool, uint32_t new_num_tbl8); +/** + * Retrieve tbl8 pool statistics. + * + * @param pool + * Pool handle + * @param used + * Number of tbl8 groups currently in use (can be NULL) + * @param total + * Total number of tbl8 groups (current capacity, can be NULL) + * @param max + * Maximum number of tbl8 groups (0 = fixed, can be NULL) + * @return + * 0 on success, -EINVAL if pool is NULL + */ +__rte_experimental +int +rte_fib_tbl8_pool_get_stats(struct rte_fib_tbl8_pool *pool, + uint32_t *used, uint32_t *total, uint32_t *max); + #ifdef __cplusplus } #endif -- 2.43.0

