From: Sachin Saxena <sachin.sax...@nxp.com> - Updates the cache threshold value as per the platform specific optimal value.
Signed-off-by: Sachin Saxena <sachin.sax...@nxp.com> Signed-off-by: Vanshika Shukla <vanshika.shu...@nxp.com> --- drivers/mempool/dpaa/dpaa_mempool.c | 16 +++++++++++++++- drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/drivers/mempool/dpaa/dpaa_mempool.c b/drivers/mempool/dpaa/dpaa_mempool.c index 21e8938cc6..9e3a743575 100644 --- a/drivers/mempool/dpaa/dpaa_mempool.c +++ b/drivers/mempool/dpaa/dpaa_mempool.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright 2017,2019 NXP + * Copyright 2017,2019,2023 NXP * */ @@ -51,6 +51,8 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp) struct bman_pool_params params = { .flags = BMAN_POOL_FLAG_DYNAMIC_BPID }; + unsigned int lcore_id; + struct rte_mempool_cache *cache; MEMPOOL_INIT_FUNC_TRACE(); @@ -118,6 +120,18 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp) rte_memcpy(bp_info, (void *)&rte_dpaa_bpid_info[bpid], sizeof(struct dpaa_bp_info)); mp->pool_data = (void *)bp_info; + /* Update per core mempool cache threshold to optimal value which is + * number of buffers that can be released to HW buffer pool in + * a single API call. + */ + for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) { + cache = &mp->local_cache[lcore_id]; + DPAA_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d\n", + lcore_id, cache->flushthresh, + (uint32_t)(cache->size + DPAA_MBUF_MAX_ACQ_REL)); + if (cache->flushthresh) + cache->flushthresh = cache->size + DPAA_MBUF_MAX_ACQ_REL; + } DPAA_MEMPOOL_INFO("BMAN pool created for bpid =%d", bpid); return 0; diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c index 4c9245cb81..fe82475b10 100644 --- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c +++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c @@ -44,6 +44,8 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp) struct dpaa2_bp_info *bp_info; struct dpbp_attr dpbp_attr; uint32_t bpid; + unsigned int lcore_id; + struct rte_mempool_cache *cache; int ret; avail_dpbp = dpaa2_alloc_dpbp_dev(); @@ -132,6 +134,19 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp) DPAA2_MEMPOOL_DEBUG("BP List created for bpid =%d", dpbp_attr.bpid); h_bp_list = bp_list; + /* Update per core mempool cache threshold to optimal value which is + * number of buffers that can be released to HW buffer pool in + * a single API call. + */ + for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) { + cache = &mp->local_cache[lcore_id]; + DPAA2_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d\n", + lcore_id, cache->flushthresh, + (uint32_t)(cache->size + DPAA2_MBUF_MAX_ACQ_REL)); + if (cache->flushthresh) + cache->flushthresh = cache->size + DPAA2_MBUF_MAX_ACQ_REL; + } + return 0; err3: rte_free(bp_info); -- 2.25.1