From: Hemant Agrawal Date: Mon, 3 May 2021 08:39:53 +0000 (+0530) Subject: crypto/dpaa_sec: affine the thread portal affinity X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=22629f05f8832358d01872414e0e30c2c81e43d4;p=dpdk.git crypto/dpaa_sec: affine the thread portal affinity DPAA requires the I/O shall be done in a HW portal context only. The portal affinity is currently only being done in session create and config APIs with the assumption that same thread will be used for IO. This is causing issue. This patch add support during I/O to check the HW portal affinity and affine portal- if not affined already. Fixes: 9a984458f755 ("crypto/dpaa_sec: rewrite Rx/Tx path") Cc: stable@dpdk.org Signed-off-by: Hemant Agrawal --- diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index 43363ba6ba..19d4684e24 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -1717,6 +1717,13 @@ dpaa_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, uint32_t index, flags[DPAA_SEC_BURST] = {0}; struct qman_fq *inq[DPAA_SEC_BURST]; + if (unlikely(!DPAA_PER_LCORE_PORTAL)) { + if (rte_dpaa_portal_init((void *)0)) { + DPAA_SEC_ERR("Failure in affining portal"); + return 0; + } + } + while (nb_ops) { frames_to_send = (nb_ops > DPAA_SEC_BURST) ? DPAA_SEC_BURST : nb_ops; @@ -1917,6 +1924,13 @@ dpaa_sec_dequeue_burst(void *qp, struct rte_crypto_op **ops, uint16_t num_rx; struct dpaa_sec_qp *dpaa_qp = (struct dpaa_sec_qp *)qp; + if (unlikely(!DPAA_PER_LCORE_PORTAL)) { + if (rte_dpaa_portal_init((void *)0)) { + DPAA_SEC_ERR("Failure in affining portal"); + return 0; + } + } + num_rx = dpaa_sec_deq(dpaa_qp, ops, nb_ops); dpaa_qp->rx_pkts += num_rx;