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..74bfcab509 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",
+                       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

Reply via email to