net/ice: fix Tx prepare to set positive rte_errno
[dpdk.git] / drivers / mempool / dpaa / dpaa_mempool.c
index 10c536b..0030817 100644 (file)
@@ -26,6 +26,7 @@
 #include <rte_ring.h>
 
 #include <dpaa_mempool.h>
+#include <dpaax_iova_table.h>
 
 /* List of all the memseg information locally maintained in dpaa driver. This
  * is to optimize the PA_to_VA searches until a better mechanism (algo) is
@@ -34,7 +35,7 @@
 struct dpaa_memseg_list rte_dpaa_memsegs
        = TAILQ_HEAD_INITIALIZER(rte_dpaa_memsegs);
 
-struct dpaa_bp_info rte_dpaa_bpid_info[DPAA_MAX_BPOOLS];
+struct dpaa_bp_info *rte_dpaa_bpid_info;
 
 static int
 dpaa_mbuf_create_pool(struct rte_mempool *mp)
@@ -73,6 +74,14 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
                DPAA_MEMPOOL_WARN("drained %u bufs from BPID %d",
                                  num_bufs, bpid);
 
+       if (rte_dpaa_bpid_info == NULL) {
+               rte_dpaa_bpid_info = (struct dpaa_bp_info *)rte_zmalloc(NULL,
+                               sizeof(struct dpaa_bp_info) * DPAA_MAX_BPOOLS,
+                               RTE_CACHE_LINE_SIZE);
+               if (rte_dpaa_bpid_info == NULL)
+                       return -ENOMEM;
+       }
+
        rte_dpaa_bpid_info[bpid].mp = mp;
        rte_dpaa_bpid_info[bpid].bpid = bpid;
        rte_dpaa_bpid_info[bpid].size = mp->elt_size;
@@ -122,7 +131,7 @@ dpaa_buf_free(struct dpaa_bp_info *bp_info, uint64_t addr)
        struct bm_buffer buf;
        int ret;
 
-       DPAA_MEMPOOL_DEBUG("Free 0x%" PRIx64 " to bpid: %d",
+       DPAA_MEMPOOL_DPDEBUG("Free 0x%" PRIx64 " to bpid: %d",
                           addr, bp_info->bpid);
 
        bm_buffer_set64(&buf, addr);
@@ -285,6 +294,9 @@ dpaa_populate(struct rte_mempool *mp, unsigned int max_objs,
                return 0;
        }
 
+       /* Update the PA-VA Table */
+       dpaax_iova_table_update(paddr, vaddr, len);
+
        bp_info = DPAA_MEMPOOL_TO_POOL_INFO(mp);
        total_elt_sz = mp->header_size + mp->elt_size + mp->trailer_size;
 
@@ -324,7 +336,7 @@ dpaa_populate(struct rte_mempool *mp, unsigned int max_objs,
                                               obj_cb, obj_cb_arg);
 }
 
-struct rte_mempool_ops dpaa_mpool_ops = {
+static const struct rte_mempool_ops dpaa_mpool_ops = {
        .name = DPAA_MEMPOOL_OPS_NAME,
        .alloc = dpaa_mbuf_create_pool,
        .free = dpaa_mbuf_free_pool,