#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
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)
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;
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;
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,