When __mempool_get_bulk() grabs entries from the cache it returns zero instead of the number of entries obtained. Plus the stats were increased by the wrong count of objects.
Signed-off-by: Keith Wiles <keith.wiles at windriver.com> --- lib/librte_mempool/rte_mempool.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h index 299d4d7..6750e78 100644 --- a/lib/librte_mempool/rte_mempool.h +++ b/lib/librte_mempool/rte_mempool.h @@ -988,9 +988,9 @@ __mempool_get_bulk(struct rte_mempool *mp, void **obj_table, cache->len -= n; - __MEMPOOL_STAT_ADD(mp, get_success, n_orig); + __MEMPOOL_STAT_ADD(mp, get_success, n); - return 0; + return n; ring_dequeue: #endif /* RTE_MEMPOOL_CACHE_MAX_SIZE > 0 */ @@ -1004,7 +1004,7 @@ ring_dequeue: if (ret < 0) __MEMPOOL_STAT_ADD(mp, get_fail, n_orig); else - __MEMPOOL_STAT_ADD(mp, get_success, n_orig); + __MEMPOOL_STAT_ADD(mp, get_success, ret); return ret; } -- 2.1.0Keith Wiles, Principal Technologist with CTO office, Wind River mobile 972-213-5533