X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcrypto%2Fcnxk%2Fcnxk_cryptodev_ops.c;fp=drivers%2Fcrypto%2Fcnxk%2Fcnxk_cryptodev_ops.c;h=a2281fb8de2877e1d3f23122c20260363a04317e;hb=fd390896f4a3dd27ebdf551673960bece8aff966;hp=e49f826225dcf37bfd5111b66641ea6afee58696;hpb=a455fd869cd7cfedb9cc7a55ea7efb8f867ac4f6;p=dpdk.git diff --git a/drivers/crypto/cnxk/cnxk_cryptodev_ops.c b/drivers/crypto/cnxk/cnxk_cryptodev_ops.c index e49f826225..a2281fb8de 100644 --- a/drivers/crypto/cnxk/cnxk_cryptodev_ops.c +++ b/drivers/crypto/cnxk/cnxk_cryptodev_ops.c @@ -174,9 +174,10 @@ cnxk_cpt_metabuf_mempool_create(const struct rte_cryptodev *dev, { char mempool_name[RTE_MEMPOOL_NAMESIZE]; struct cpt_qp_meta_info *meta_info; + int lcore_cnt = rte_lcore_count(); struct rte_mempool *pool; + int mb_pool_sz, mlen = 8; uint32_t cache_sz; - int mlen = 8; if (dev->feature_flags & RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO) { /* Get meta len */ @@ -189,14 +190,22 @@ cnxk_cpt_metabuf_mempool_create(const struct rte_cryptodev *dev, mlen = RTE_MAX(mlen, cnxk_cpt_asym_get_mlen()); } + mb_pool_sz = nb_elements; cache_sz = RTE_MIN(RTE_MEMPOOL_CACHE_MAX_SIZE, nb_elements / 1.5); + /* For poll mode, core that enqueues and core that dequeues can be + * different. For event mode, all cores are allowed to use same crypto + * queue pair. + */ + + mb_pool_sz += (RTE_MAX(2, lcore_cnt) * cache_sz); + /* Allocate mempool */ snprintf(mempool_name, RTE_MEMPOOL_NAMESIZE, "cnxk_cpt_mb_%u:%u", dev->data->dev_id, qp_id); - pool = rte_mempool_create(mempool_name, nb_elements, mlen, cache_sz, 0, + pool = rte_mempool_create(mempool_name, mb_pool_sz, mlen, cache_sz, 0, NULL, NULL, NULL, NULL, rte_socket_id(), 0); if (pool == NULL) { @@ -269,9 +278,8 @@ cnxk_cpt_qp_create(const struct rte_cryptodev *dev, uint16_t qp_id, /* Initialize pending queue */ qp->pend_q.req_queue = pq_mem->addr; - qp->pend_q.enq_tail = 0; - qp->pend_q.deq_head = 0; - qp->pend_q.pending_count = 0; + qp->pend_q.head = 0; + qp->pend_q.tail = 0; return qp; @@ -372,6 +380,8 @@ cnxk_cpt_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id, goto exit; } + qp->pend_q.pq_mask = qp->lf.nb_desc - 1; + roc_cpt->lf[qp_id] = &qp->lf; ret = roc_cpt_lmtline_init(roc_cpt, &qp->lmtline, qp_id);