From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0053.outbound.protection.outlook.com [104.47.38.53]) by dpdk.org (Postfix) with ESMTP id 890471B029 for ; Wed, 13 Dec 2017 15:00:51 +0100 (CET) Received: from DM5PR03CA0060.namprd03.prod.outlook.com (10.174.189.177) by CY1PR03MB2362.namprd03.prod.outlook.com (10.166.207.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.302.9; Wed, 13 Dec 2017 14:00:50 +0000 Received: from BN1AFFO11FD008.protection.gbl (2a01:111:f400:7c10::130) by DM5PR03CA0060.outlook.office365.com (2603:10b6:4:3b::49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.302.9 via Frontend Transport; Wed, 13 Dec 2017 14:00:49 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; NXP1.onmicrosoft.com; dkim=none (message not signed) header.d=none;NXP1.onmicrosoft.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD008.mail.protection.outlook.com (10.58.52.68) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.282.5 via Frontend Transport; Wed, 13 Dec 2017 14:00:42 +0000 Received: from netperf2.ap.freescale.net ([10.232.133.164]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id vBDE0WHm023690; Wed, 13 Dec 2017 07:00:46 -0700 From: Akhil Goyal To: CC: , , , Akhil Goyal , Nipun Gupta Date: Wed, 13 Dec 2017 19:26:59 +0530 Message-ID: <20171213135659.32648-6-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20171213135659.32648-1-akhil.goyal@nxp.com> References: <20171213135659.32648-1-akhil.goyal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131576472425463887; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(336005)(7966004)(39380400002)(39860400002)(376002)(346002)(2980300002)(1110001)(1109001)(339900001)(199004)(189003)(316002)(296002)(59450400001)(4326008)(48376002)(50466002)(85426001)(2950100002)(498600001)(36756003)(51416003)(53936002)(97736004)(77096006)(5890100001)(54906003)(8656006)(76176011)(2906002)(6916009)(6666003)(16586007)(105606002)(86362001)(2351001)(106466001)(47776003)(1076002)(104016004)(68736007)(50226002)(81166006)(356003)(81156014)(305945005)(8936002)(5660300001)(8676002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2362; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD008; 1:E37MYYh36/5CJw6vlH6TsPfcZjf4Vh2gzCVkahglb07dM6EtsEbVfNDi+Guf8AojB2yeAI1QAWcojytKLnvp7roCT0eBpodE4MsNtzo3xKy+fDeb6wVH56fJXqpaLbVP MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 37e7d3a4-24fd-4a7b-9ef0-08d54231e62c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4628075)(201703131517081)(5600026)(4604075)(2017052603307); SRVR:CY1PR03MB2362; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2362; 3:EQK3TohomCxOUocU49L6aVLKNvuUa+Ln0jU4QXxJwrEUDfSTuNxqH1Wg+L/VXJssmLuX3LuXmL5/euodIQanXV2wQMWdql1V1k8XGwOfSr4tt+zz3igKnJZWUr5IS1J4Pvd67+nJefsCG4e7ZgdHlGBK+Ky5ZbyizXzZmsfNIjvU9VUQauysbP30nb3FHC1+OvHody9Vp4OvbG0W/YZcKlSy4yrUikhCBs7fjUZGbdQcL/IlB52Jrpa5px2o5UGEJy/a75F59VQMgJY7IhuYUMiAapow1oeuJ13ZpqYAiTHEp4WYykDPnbyulkCZ8WiwOuzHaRZ1buwQSDIW17NGnA+9MdLQfNXQWqQDCH1AvWI=; 25:a/yuA5JGfxp7TokLqwuJNoDZwHt5Gg8rqEavS3Ijlk0g/Cehq0F35HJppHgBv3mpJWzk5jS+MZ+741uFJ9ymiID0/J287LGQwek2ZFkQE7MKaHxKmdoSlBDF4yl9F65+AjqFJ1SvPcloIu2oOhpFmaxgCAUZKXbeJZbTVaA4kPBzMYk42nFA6b/Ldctlmtcy2bmqGlId3IrGwx+NmCaRsYT8eur82GCdcJVPdwWSdBYbR9O0IYTQ6I+QqlWBkFqP6o/Lm75DsgbF6TkpCcFisHTmDqMjtB0K7o4s4uvK8WrXob2osj0cRuKW4bF4GLuqEgyMIbHQGiEXihttaGe7XQ== X-MS-TrafficTypeDiagnostic: CY1PR03MB2362: X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2362; 31:MCF0OIOUyHyX5lQvDRM20CSOBFa+9JxRRH/E767u0dHqpnT7WDKWYSWKqevs+IDMLg8C9ffVKt0oYgWMJ2zC5ilpwARaH8mGAZ1CLF4zMuALPZ79buMVQ94COEQ13FsEWVvq+yo81yuknjMXQBUgl3ULyh5A/ux4YoJYEgEOlhPVzgwA7w3Y+czha9G42k4mjaO0qrZIjNTN+iYXlbRbAy6vwgiTLNPO2NKgWETF0Kk=; 4:DQ8Bc3+p2EbBA1wDNhe1ewcc0Y/CSWgI1ZqM1QcyKShAWRnde8uslJbVgCRnYA9EhcEzKQnFUYTo4sTmL5P12iNQWA0wPbSrpux3CkemcQ4i5H4pIzv5CC1PlPqFxujs1jL2zfs2bQ/dqZWDl/+SDQxH/O3esDUxi+VwME5X2ALu5ajwQ848EbLE23j3AN4Bqqk42pSJWVVIXBWSVXfPhYOtq0B9x5ctEKOcbbdB8K/8x7vj0dFVL+1uGSYEyWoJ1Lon1ZXxwoGZYBq8fuqoW5/u5qW+ZLzpIqKvueu4MHoH/ERBezctfAHt6Lt5qbrP X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(5005006)(8121501046)(3231023)(3002001)(93006095)(93001095)(10201501046)(6055026)(6096035)(20161123556025)(20161123561025)(20161123559100)(20161123565025)(20161123563025)(201703131430075)(201703131520075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(201708071742011); SRVR:CY1PR03MB2362; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:CY1PR03MB2362; X-Forefront-PRVS: 052017CAF1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2362; 23:w6LQrZdgzadXROrzTaHkDiauEmfC7OScYt5iB37ps?= =?us-ascii?Q?hCBP4Mp6nClIvfukRcLF3BfwzHMVEg80C8iWPBq8W80p04Uw1alFpTL4s/jy?= =?us-ascii?Q?cPqcjKZTw5vpryGMj+2Wk5VCSAjgNdUYm2WC1/5/m6OhGgnIbtvlZYjCTzJF?= =?us-ascii?Q?UR/d20wFsB+lTqvtM9G2JFq/pxntieHPWLE2PCzdBzDkJlr/UuK48g+z0ET8?= =?us-ascii?Q?axwF5Rera2nuTwRPtY/KS+6ox5rAek2PX9eZbKyzkaIi4RLL8CMw1nCXz7qu?= =?us-ascii?Q?LWLbjPwpw5M+3Z+loan//tyDm+NKHDFLfH49sFLi6t/VBACy15sU58CwFdXt?= =?us-ascii?Q?Qo2GkGbNNrkafyWL7hrbFLrZueDCqAv5K+b8b5/7vG8lJu0Ex/sAVi1Kvn1n?= =?us-ascii?Q?2hC22o7Lm9XGMcOKwMKDAaXzuy++MHcxqMAOiLxlsFAIvfogySlF4hOHYZvC?= =?us-ascii?Q?7EOWEXfArVuW6ssOnt+rVM4MpC+HGzm5RrONIJhDj6Pr2OBYTIWA9KhVADLP?= =?us-ascii?Q?VkjBOYdJst84dO3ZjW2Sl2NcdlaFqVxxaOE5dwlWFoLfOjOkY6wufxZZaGme?= =?us-ascii?Q?ExE/Or7TVMNOnrgLRhBUsRgUfd66vlgVpy1JOKcEhkY/myCZ8cVuSD7Tvxvm?= =?us-ascii?Q?DX6Df10AJXz+Fx3EXVPX2sCFhQlwrtoQwp63tQVBSjet0KiuPdEAwcBqswYg?= =?us-ascii?Q?Th6/wmyM4nYPIqNe5b9e5jFOhOJjPTMn8pHN8AqYrhXDvg+uSAvqIXzgZxZG?= =?us-ascii?Q?5k6j704zvWNsON/byc0PjLIzqOE0DhjX0i/tbmt6h/4OQKK1QI7bhhbTwMB8?= =?us-ascii?Q?6h+S4J5dvbp7MBD/Cqh3zuMbRTY3DKHAJ5i0XWiz9/SxM2K8yrdU3bE3RWqu?= =?us-ascii?Q?sMgnXQDn4Q9p37eMHQsxIfNXFZ9yuZ/nES+cpKiY3EwcsL7UR0r/hGSjpiYT?= =?us-ascii?Q?BErt2yxEjGxOFSXNQoxGgtrHIYEXk4aXYcZpsKce3KOZrPeBqX8mV8BZ2MAg?= =?us-ascii?Q?v9N4hBlem2HC5lm0vGlQJsP6Qh7gSa/avs5gNYSc6KZNResRqvtQWUwtvKjO?= =?us-ascii?Q?UCym3VGuy4y7VoyS/9OtKHlwMe4nVGOTPcz3zqbsGc+N8becEXh277k0/chA?= =?us-ascii?Q?s/MJjctiQbVJ3R4mjvqurhr52eW9t7sjlISdMoWbvQuitwPa6zWGWUNSDatW?= =?us-ascii?Q?z7xOdjCcRVWWYc=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2362; 6:s+FMY4Qcy/QMYXcBIpWFfEWPkdCwplbMZG/7CTbOuwJdQApzTjqSa6I+Nswe/W9z8BVQpr4gPlWoRgHHrxkFmjwv39gExNvo15Zyrqpk12Tqs0E4MoRQi21yi0vX31ig/oCviw9yomETE7PLN2WgU70sfkuESUDi966KMLgmS3NMyLsEz+JKhNfLT9JKkpkDQlKktjv2EjCmt45cHBdscbwVHTVi4Fbng5W10Z1W6mjd6LF4B6e6EaX5VotgnfEPN2cRuecT/1TEMGQaq9ddYpW8I/kVjY5MoXIuS+magko4NBTFnznUbWGmU7p1GZZx1nvRQ+SohhaYad3DnuuwwGvKHgP75yK7SZN49+KWe2E=; 5:HR0xLUsnxUK5BkIn/s+5NCfPS0XDiRo9zMb9oRckDnkVXXMzpEvDfDoNANDHGOrvD+o06qc2tQ0qSa8Hfv00G7bfL/m5MS8UcX+jsz/AhOnhXeX7p3e5MWf8IJJN3fnnWTIg0aDsw3XlPyIPs9t8OGj+udf3FJAoYsc3GAI7YhQ=; 24:RpRLFPUXOAwjYQ8ZyngeWScfAJskcJutJHKLze/P6FkxHlkMZmdSU+OQVHcj15wKNINXkxjDYo17ljS6RxSZ2PVn4/ON16z/Gl4Tk7SljLM=; 7:jqCjUBphAlt4yQeuI590qV/GG5FLS3qdUGeqOtjO0/rey+rflj/jvK0US/brB3UTFl1ps4G2r5zDoSgxA25Pul116ed4K6/m8uA/paE54US8MLS0zqGexrEt1HGHxiVSIJaYJ6iPnixP/91K1wHlKOyOBtAZASUPtPEl+iNuyLMVKuNrXPc2oslBl1btV0ax1ZBqDQldC5nb0yoS2hVy8Xh20sPk//bxIo6DU54xaN3Ed/ibdhX/ZEYITxvrf3L1 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Dec 2017 14:00:42.3591 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 37e7d3a4-24fd-4a7b-9ef0-08d54231e62c X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2362 Subject: [dpdk-dev] [PATCH 5/5] crypto/dpaa_sec: rewrite Rx/Tx path X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Dec 2017 14:00:52 -0000 Rx and Tx patch are rewritten with improved internal APIs to improve performance. Signed-off-by: Akhil Goyal Signed-off-by: Nipun Gupta --- drivers/crypto/dpaa_sec/dpaa_sec.c | 260 ++++++++++++++++++++++--------------- drivers/crypto/dpaa_sec/dpaa_sec.h | 2 +- 2 files changed, 153 insertions(+), 109 deletions(-) diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index ea744e6..b650d5c 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -563,46 +563,67 @@ dpaa_sec_prep_cdb(dpaa_sec_session *ses) return 0; } -static inline unsigned int -dpaa_volatile_deq(struct qman_fq *fq, unsigned int len, bool exact) -{ - unsigned int pkts = 0; - int ret; - struct qm_mcr_queryfq_np np; - enum qman_fq_state state; - uint32_t flags; - uint32_t vdqcr; - - qman_query_fq_np(fq, &np); - if (np.frm_cnt) { - vdqcr = QM_VDQCR_NUMFRAMES_SET(len); - if (exact) - vdqcr |= QM_VDQCR_EXACT; - ret = qman_volatile_dequeue(fq, 0, vdqcr); - if (ret) - return 0; - do { - pkts += qman_poll_dqrr(len); - qman_fq_state(fq, &state, &flags); - } while (flags & QMAN_FQ_STATE_VDQCR); - } - return pkts; -} - +#define DPAA_MAX_DEQUEUE_NUM_FRAMES 32 /* qp is lockless, should be accessed by only one thread */ static int dpaa_sec_deq(struct dpaa_sec_qp *qp, struct rte_crypto_op **ops, int nb_ops) { struct qman_fq *fq; + unsigned int pkts = 0; + int ret; + struct qm_dqrr_entry *dq; fq = &qp->outq; - dpaa_sec_op_nb = 0; - dpaa_sec_ops = ops; + ret = qman_set_vdq(fq, (nb_ops > DPAA_MAX_DEQUEUE_NUM_FRAMES) ? + DPAA_MAX_DEQUEUE_NUM_FRAMES : nb_ops); + if (ret) + return 0; + + do { + const struct qm_fd *fd; + struct dpaa_sec_job *job; + struct dpaa_sec_op_ctx *ctx; + struct rte_crypto_op *op; + + dq = qman_dequeue(fq); + if (!dq) + continue; + + fd = &dq->fd; + /* sg is embedded in an op ctx, + * sg[0] is for output + * sg[1] for input + */ + job = dpaa_mem_ptov(qm_fd_addr_get64(fd)); + + ctx = container_of(job, struct dpaa_sec_op_ctx, job); + ctx->fd_status = fd->status; + op = ctx->op; + if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) { + struct qm_sg_entry *sg_out; + uint32_t len; + + sg_out = &job->sg[0]; + hw_sg_to_cpu(sg_out); + len = sg_out->length; + op->sym->m_src->pkt_len = len; + op->sym->m_src->data_len = len; + } + if (!ctx->fd_status) { + op->status = RTE_CRYPTO_OP_STATUS_SUCCESS; + } else { + printf("\nSEC return err: 0x%x", ctx->fd_status); + op->status = RTE_CRYPTO_OP_STATUS_ERROR; + } + ops[pkts++] = op; - if (unlikely(nb_ops > DPAA_SEC_BURST)) - nb_ops = DPAA_SEC_BURST; + /* report op status to sym->op and then free the ctx memeory */ + rte_mempool_put(ctx->ctx_pool, (void *)ctx); - return dpaa_volatile_deq(fq, nb_ops, 1); + qman_dqrr_consume(fq, dq); + } while (fq->flags & QMAN_FQ_STATE_VDQCR); + + return pkts; } /** @@ -975,95 +996,118 @@ build_proto(struct rte_crypto_op *op, dpaa_sec_session *ses) return cf; } -static int -dpaa_sec_enqueue_op(struct rte_crypto_op *op, struct dpaa_sec_qp *qp) -{ - struct dpaa_sec_job *cf; - dpaa_sec_session *ses; - struct qm_fd fd; - int ret; - uint32_t auth_only_len = op->sym->auth.data.length - - op->sym->cipher.data.length; - - if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) - ses = (dpaa_sec_session *)get_session_private_data( - op->sym->session, cryptodev_driver_id); - else if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) - ses = (dpaa_sec_session *)get_sec_session_private_data( - op->sym->sec_session); - else - return -ENOTSUP; - - if (unlikely(!ses->qp || ses->qp != qp)) { - PMD_INIT_LOG(DEBUG, "sess->qp - %p qp %p", ses->qp, qp); - if (dpaa_sec_attach_sess_q(qp, ses)) - return -1; - } - - /* - * Segmented buffer is not supported. - */ - if (!rte_pktmbuf_is_contiguous(op->sym->m_src)) { - op->status = RTE_CRYPTO_OP_STATUS_ERROR; - return -ENOTSUP; - } - if (is_auth_only(ses)) { - cf = build_auth_only(op, ses); - } else if (is_cipher_only(ses)) { - cf = build_cipher_only(op, ses); - } else if (is_aead(ses)) { - cf = build_cipher_auth_gcm(op, ses); - auth_only_len = ses->auth_only_len; - } else if (is_auth_cipher(ses)) { - cf = build_cipher_auth(op, ses); - } else if (is_proto_ipsec(ses)) { - cf = build_proto(op, ses); - } else { - PMD_TX_LOG(ERR, "not supported sec op"); - return -ENOTSUP; - } - if (unlikely(!cf)) - return -ENOMEM; - - memset(&fd, 0, sizeof(struct qm_fd)); - qm_fd_addr_set64(&fd, dpaa_mem_vtop(cf->sg)); - fd._format1 = qm_fd_compound; - fd.length29 = 2 * sizeof(struct qm_sg_entry); - /* Auth_only_len is set as 0 in descriptor and it is overwritten - * here in the fd.cmd which will update the DPOVRD reg. - */ - if (auth_only_len) - fd.cmd = 0x80000000 | auth_only_len; - do { - ret = qman_enqueue(ses->inq, &fd, 0); - } while (ret != 0); - - return 0; -} - static uint16_t dpaa_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) { /* Function to transmit the frames to given device and queuepair */ uint32_t loop; - int32_t ret; struct dpaa_sec_qp *dpaa_qp = (struct dpaa_sec_qp *)qp; uint16_t num_tx = 0; + struct qm_fd fds[DPAA_SEC_BURST], *fd; + uint32_t frames_to_send; + struct rte_crypto_op *op; + struct dpaa_sec_job *cf; + dpaa_sec_session *ses; + struct dpaa_sec_op_ctx *ctx; + uint32_t auth_only_len; + struct qman_fq *inq[DPAA_SEC_BURST]; + + while (nb_ops) { + frames_to_send = (nb_ops > DPAA_SEC_BURST) ? + DPAA_SEC_BURST : nb_ops; + for (loop = 0; loop < frames_to_send; loop++) { + op = *(ops++); + switch (op->sess_type) { + case RTE_CRYPTO_OP_WITH_SESSION: + ses = (dpaa_sec_session *) + get_session_private_data( + op->sym->session, + cryptodev_driver_id); + break; + case RTE_CRYPTO_OP_SECURITY_SESSION: + ses = (dpaa_sec_session *) + get_sec_session_private_data( + op->sym->sec_session); + break; + default: + PMD_TX_LOG(ERR, + "sessionless crypto op not supported"); + frames_to_send = loop; + nb_ops = loop; + goto send_pkts; + } + if (unlikely(!ses->qp || ses->qp != qp)) { + PMD_INIT_LOG(DEBUG, "sess->qp - %p qp %p", + ses->qp, qp); + if (dpaa_sec_attach_sess_q(qp, ses)) { + frames_to_send = loop; + nb_ops = loop; + goto send_pkts; + } + } - if (unlikely(nb_ops == 0)) - return 0; + /* + * Segmented buffer is not supported. + */ + if (!rte_pktmbuf_is_contiguous(op->sym->m_src)) { + op->status = RTE_CRYPTO_OP_STATUS_ERROR; + frames_to_send = loop; + nb_ops = loop; + goto send_pkts; + } + auth_only_len = op->sym->auth.data.length - + op->sym->cipher.data.length; + + if (is_auth_only(ses)) { + cf = build_auth_only(op, ses); + } else if (is_cipher_only(ses)) { + cf = build_cipher_only(op, ses); + } else if (is_aead(ses)) { + cf = build_cipher_auth_gcm(op, ses); + auth_only_len = ses->auth_only_len; + } else if (is_auth_cipher(ses)) { + cf = build_cipher_auth(op, ses); + } else if (is_proto_ipsec(ses)) { + cf = build_proto(op, ses); + } else { + PMD_TX_LOG(ERR, "not supported sec op"); + frames_to_send = loop; + nb_ops = loop; + goto send_pkts; + } + if (unlikely(!cf)) { + frames_to_send = loop; + nb_ops = loop; + goto send_pkts; + } - /*Prepare each packet which is to be sent*/ - for (loop = 0; loop < nb_ops; loop++) { - if (ops[loop]->sess_type == RTE_CRYPTO_OP_SESSIONLESS) { - PMD_TX_LOG(ERR, "sessionless crypto op not supported"); - return 0; + fd = &fds[loop]; + inq[loop] = ses->inq; + fd->opaque_addr = 0; + fd->cmd = 0; + ctx = container_of(cf, struct dpaa_sec_op_ctx, job); + qm_fd_addr_set64(fd, dpaa_mem_vtop_ctx(ctx, cf->sg)); + fd->_format1 = qm_fd_compound; + fd->length29 = 2 * sizeof(struct qm_sg_entry); + /* Auth_only_len is set as 0 in descriptor and it is + * overwritten here in the fd.cmd which will update + * the DPOVRD reg. + */ + if (auth_only_len) + fd->cmd = 0x80000000 | auth_only_len; + + } +send_pkts: + loop = 0; + while (loop < frames_to_send) { + loop += qman_enqueue_multi_fq(&inq[loop], &fds[loop], + frames_to_send - loop); } - ret = dpaa_sec_enqueue_op(ops[loop], dpaa_qp); - if (!ret) - num_tx++; + nb_ops -= frames_to_send; + num_tx += frames_to_send; } + dpaa_qp->tx_pkts += num_tx; dpaa_qp->tx_errs += nb_ops - num_tx; diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.h b/drivers/crypto/dpaa_sec/dpaa_sec.h index 295abf3..b00d50a 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.h +++ b/drivers/crypto/dpaa_sec/dpaa_sec.h @@ -34,7 +34,7 @@ #define _DPAA_SEC_H_ #define NUM_POOL_CHANNELS 4 -#define DPAA_SEC_BURST 32 +#define DPAA_SEC_BURST 7 #define DPAA_SEC_ALG_UNSUPPORT (-1) #define TDES_CBC_IV_LEN 8 #define AES_CBC_IV_LEN 16 -- 2.9.3