From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 34682455AD for ; Mon, 15 Jul 2024 17:28:05 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2F27540B91; Mon, 15 Jul 2024 17:28:05 +0200 (CEST) Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by mails.dpdk.org (Postfix) with ESMTP id 84A62402DD for ; Mon, 15 Jul 2024 17:28:04 +0200 (CEST) Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-52e9a920e73so4940734e87.2 for ; Mon, 15 Jul 2024 08:28:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721057284; x=1721662084; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GU/jz4K33DX9yA/mFt9Cc8/IfYjTCMNNiAjLzUmceZw=; b=aQOC0oAL+lafqI6UldMSf/ljZUgA2TpID/ubH9gXdbWU9sD6Gw3ZCZozPmOWJ3ncJa 6Wy9mRbfZQA24pvieKt+1pzOdBsWgASLC6HjNSGLnICOPm9wl69iEvBzDC6q/z9QwH8t ktTV7Z9/w5F2mEOCBGeCsqi5A+5JO1rMcKpioQPlch3npO4uz6yaZpeGpRier+SYmAAL fJSPpUfr61dtKTo9KjtfqPMzDDpoCPw2NZThhFWi7gAl5wMpL7gDLpQdTN9EVj9ToGjN PKUIp0jIBDIwy6Gn/Qwfx5Z/JIxG77kQiZhsfFBaP45MJAFoH3D4kWdwpWEMrTmU8Bnk YKFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721057284; x=1721662084; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GU/jz4K33DX9yA/mFt9Cc8/IfYjTCMNNiAjLzUmceZw=; b=qGtjCHOX/DItqRl6AEky2nOkte33xbNZox0hSkPN4tGIjUqyL1MFTtQuq9d7Zt+HkU v8WpqqYi4AOnrx3xuHFHAIBoXRAjoqKHiBh8Qqwnwgzp7nUlF6rnIlBjogy+B7sQgIP9 fNRcmYL36S7wun87xVJVzS1nuQ/yulertWm93H9sZNE56iIhacyx8eaMVoxhwpSESwHq lZduaf+66CJXvvrca0jxcx3KSatzOZj7eSRHB+nCAHe1tdGFKRtV/PpS0y2XI1qRlZAX G4+vXJcA7zofnw+BKu01ai+ryfaoq/7p7aXfTMq+38vHAxApCdClzLm7QIuNd7vnwcHS k/dQ== X-Forwarded-Encrypted: i=1; AJvYcCVkN04GlmeR+TR6eOsLJH+jaDhciCHw7UHoaiSmQENiyCB+rWllEbXKC2WVpl4P5MJhhGkdQC1adXXwA1YHUOY= X-Gm-Message-State: AOJu0YyscH0DPwjvM4ZKtdu5vX1pKyH2y7v98RqQaIondJC6VxVvaFzs qdiBaHSUBOGsSOY60Zfd/GLO5YqTSiOun7pz96aCx7moc0ce8O+f X-Google-Smtp-Source: AGHT+IFulkSg2nT2LwDeNLZPXbHZR/1t23qV1HB4vu/agh9iETMxL3KY251YuWAqmgLh1mttw1+WCg== X-Received: by 2002:a05:6512:b9e:b0:52e:9dee:a6f5 with SMTP id 2adb3069b0e04-52eb99cc67fmr14712120e87.46.1721057283744; Mon, 15 Jul 2024 08:28:03 -0700 (PDT) Received: from localhost ([2a01:4b00:d036:ae00:7aef:1aaa:3dff:d546]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4279f276b8dsm125765595e9.21.2024.07.15.08.28.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Jul 2024 08:28:03 -0700 (PDT) From: luca.boccassi@gmail.com To: Jack Bond-Preston Cc: Kai Ji , Wathsala Vithanage , dpdk stable Subject: patch 'crypto/openssl: make per-QP cipher context clones' has been queued to stable release 22.11.6 Date: Mon, 15 Jul 2024 16:25:57 +0100 Message-Id: <20240715152704.2229503-19-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240715152704.2229503-1-luca.boccassi@gmail.com> References: <20240624235907.885628-81-luca.boccassi@gmail.com> <20240715152704.2229503-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 22.11.6 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/17/24. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/26e1e90724f9ab34120d25bba9a3cc47c9234540 Thanks. Luca Boccassi --- >From 26e1e90724f9ab34120d25bba9a3cc47c9234540 Mon Sep 17 00:00:00 2001 From: Jack Bond-Preston Date: Wed, 3 Jul 2024 13:45:49 +0000 Subject: [PATCH] crypto/openssl: make per-QP cipher context clones [ upstream commit b1d71126023521fe740ec473abfe5b295035b859 ] Currently EVP_CIPHER_CTXs are allocated, copied to (from openssl_session), and then freed for every cipher operation (ie. per packet). This is very inefficient, and avoidable. Make each openssl_session hold an array of pointers to per-queue-pair cipher context copies. These are populated on first use by allocating a new context and copying from the main context. These copies can then be used in a thread-safe manner by different worker lcores simultaneously. Consequently the cipher context allocation and copy only has to happen once - the first time a given qp uses an openssl_session. This brings about a large performance boost. Throughput performance uplift measurements for AES-CBC-128 encrypt on Ampere Altra Max platform: 1 worker lcore | buffer sz (B) | prev (Gbps) | optimised (Gbps) | uplift | |-----------------+---------------+--------------------+----------| | 64 | 1.51 | 2.94 | 94.4% | | 256 | 4.90 | 8.05 | 64.3% | | 1024 | 11.07 | 14.21 | 28.3% | | 2048 | 14.03 | 16.28 | 16.0% | | 4096 | 16.20 | 17.59 | 8.6% | 8 worker lcores | buffer sz (B) | prev (Gbps) | optimised (Gbps) | uplift | |-----------------+---------------+--------------------+----------| | 64 | 3.05 | 23.74 | 678.8% | | 256 | 10.46 | 64.86 | 520.3% | | 1024 | 40.97 | 113.80 | 177.7% | | 2048 | 73.25 | 130.21 | 77.8% | | 4096 | 103.89 | 140.62 | 35.4% | Signed-off-by: Jack Bond-Preston Acked-by: Kai Ji Reviewed-by: Wathsala Vithanage --- drivers/crypto/openssl/openssl_pmd_private.h | 11 +- drivers/crypto/openssl/rte_openssl_pmd.c | 105 ++++++++++++------- drivers/crypto/openssl/rte_openssl_pmd_ops.c | 34 +++++- 3 files changed, 108 insertions(+), 42 deletions(-) diff --git a/drivers/crypto/openssl/openssl_pmd_private.h b/drivers/crypto/openssl/openssl_pmd_private.h index 4e224b040b..810b539f10 100644 --- a/drivers/crypto/openssl/openssl_pmd_private.h +++ b/drivers/crypto/openssl/openssl_pmd_private.h @@ -165,6 +165,14 @@ struct openssl_session { /**< digest length */ } auth; + uint16_t ctx_copies_len; + /* < number of entries in ctx_copies */ + EVP_CIPHER_CTX *qp_ctx[]; + /**< Flexible array member of per-queue-pair pointers to copies of EVP + * context structure. Cipher contexts are not safe to use from multiple + * cores simultaneously, so maintaining these copies allows avoiding + * per-buffer copying into a temporary context. + */ } __rte_cache_aligned; /** OPENSSL crypto private asymmetric session structure */ @@ -211,7 +219,8 @@ struct openssl_asym_session { /** Set and validate OPENSSL crypto session parameters */ extern int openssl_set_session_parameters(struct openssl_session *sess, - const struct rte_crypto_sym_xform *xform); + const struct rte_crypto_sym_xform *xform, + uint16_t nb_queue_pairs); /** Reset OPENSSL crypto session parameters */ extern void diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c index bfdcda8841..62a179b6b6 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd.c +++ b/drivers/crypto/openssl/rte_openssl_pmd.c @@ -466,13 +466,10 @@ openssl_set_sess_aead_dec_param(struct openssl_session *sess, return 0; } +#if (OPENSSL_VERSION_NUMBER >= 0x30000000L && OPENSSL_VERSION_NUMBER < 0x30200000L) static int openssl_aesni_ctx_clone(EVP_CIPHER_CTX **dest, struct openssl_session *sess) { -#if (OPENSSL_VERSION_NUMBER >= 0x30200000L) - *dest = EVP_CIPHER_CTX_dup(sess->ctx); - return 0; -#elif (OPENSSL_VERSION_NUMBER >= 0x30000000L) /* OpenSSL versions 3.0.0 <= V < 3.2.0 have no dupctx() implementation * for AES-GCM and AES-CCM. In this case, we have to create new empty * contexts and initialise, as we did the original context. @@ -488,13 +485,8 @@ static int openssl_aesni_ctx_clone(EVP_CIPHER_CTX **dest, return openssl_set_sess_aead_dec_param(sess, sess->aead_algo, sess->auth.digest_length, sess->cipher.key.data, dest); -#else - *dest = EVP_CIPHER_CTX_new(); - if (EVP_CIPHER_CTX_copy(*dest, sess->cipher.ctx) != 1) - return -EINVAL; - return 0; -#endif } +#endif /** Set session cipher parameters */ static int @@ -823,7 +815,8 @@ openssl_set_session_aead_parameters(struct openssl_session *sess, /** Parse crypto xform chain and set private session parameters */ int openssl_set_session_parameters(struct openssl_session *sess, - const struct rte_crypto_sym_xform *xform) + const struct rte_crypto_sym_xform *xform, + uint16_t nb_queue_pairs) { const struct rte_crypto_sym_xform *cipher_xform = NULL; const struct rte_crypto_sym_xform *auth_xform = NULL; @@ -885,6 +878,12 @@ openssl_set_session_parameters(struct openssl_session *sess, } } + /* + * With only one queue pair, the array of copies is not needed. + * Otherwise, one entry per queue pair is required. + */ + sess->ctx_copies_len = nb_queue_pairs > 1 ? nb_queue_pairs : 0; + return 0; } @@ -892,6 +891,13 @@ openssl_set_session_parameters(struct openssl_session *sess, void openssl_reset_session(struct openssl_session *sess) { + for (uint16_t i = 0; i < sess->ctx_copies_len; i++) { + if (sess->qp_ctx[i] != NULL) { + EVP_CIPHER_CTX_free(sess->qp_ctx[i]); + sess->qp_ctx[i] = NULL; + } + } + EVP_CIPHER_CTX_free(sess->cipher.ctx); if (sess->chain_order == OPENSSL_CHAIN_CIPHER_BPI) @@ -958,7 +964,7 @@ get_session(struct openssl_qp *qp, struct rte_crypto_op *op) sess = (struct openssl_session *)_sess->driver_priv_data; if (unlikely(openssl_set_session_parameters(sess, - op->sym->xform) != 0)) { + op->sym->xform, 1) != 0)) { rte_mempool_put(qp->sess_mp, _sess); sess = NULL; } @@ -1606,11 +1612,45 @@ process_auth_err: # endif /*----------------------------------------------------------------------------*/ +static inline EVP_CIPHER_CTX * +get_local_cipher_ctx(struct openssl_session *sess, struct openssl_qp *qp) +{ + /* If the array is not being used, just return the main context. */ + if (sess->ctx_copies_len == 0) + return sess->cipher.ctx; + + EVP_CIPHER_CTX **lctx = &sess->qp_ctx[qp->id]; + + if (unlikely(*lctx == NULL)) { +#if OPENSSL_VERSION_NUMBER >= 0x30200000L + /* EVP_CIPHER_CTX_dup() added in OSSL 3.2 */ + *lctx = EVP_CIPHER_CTX_dup(sess->cipher.ctx); + return *lctx; +#elif OPENSSL_VERSION_NUMBER >= 0x30000000L + if (sess->chain_order == OPENSSL_CHAIN_COMBINED) { + /* AESNI special-cased to use openssl_aesni_ctx_clone() + * to allow for working around lack of + * EVP_CIPHER_CTX_copy support for 3.0.0 <= OSSL Version + * < 3.2.0. + */ + if (openssl_aesni_ctx_clone(lctx, sess) != 0) + *lctx = NULL; + return *lctx; + } +#endif + + *lctx = EVP_CIPHER_CTX_new(); + EVP_CIPHER_CTX_copy(*lctx, sess->cipher.ctx); + } + + return *lctx; +} + /** Process auth/cipher combined operation */ static void -process_openssl_combined_op - (struct rte_crypto_op *op, struct openssl_session *sess, - struct rte_mbuf *mbuf_src, struct rte_mbuf *mbuf_dst) +process_openssl_combined_op(struct openssl_qp *qp, struct rte_crypto_op *op, + struct openssl_session *sess, struct rte_mbuf *mbuf_src, + struct rte_mbuf *mbuf_dst) { /* cipher */ uint8_t *dst = NULL, *iv, *tag, *aad; @@ -1627,11 +1667,7 @@ process_openssl_combined_op return; } - EVP_CIPHER_CTX *ctx; - if (openssl_aesni_ctx_clone(&ctx, sess) != 0) { - op->status = RTE_CRYPTO_OP_STATUS_ERROR; - return; - } + EVP_CIPHER_CTX *ctx = get_local_cipher_ctx(sess, qp); iv = rte_crypto_op_ctod_offset(op, uint8_t *, sess->iv.offset); @@ -1687,8 +1723,6 @@ process_openssl_combined_op dst, tag, taglen, ctx); } - EVP_CIPHER_CTX_free(ctx); - if (status != 0) { if (status == (-EFAULT) && sess->auth.operation == @@ -1701,14 +1735,13 @@ process_openssl_combined_op /** Process cipher operation */ static void -process_openssl_cipher_op - (struct rte_crypto_op *op, struct openssl_session *sess, - struct rte_mbuf *mbuf_src, struct rte_mbuf *mbuf_dst) +process_openssl_cipher_op(struct openssl_qp *qp, struct rte_crypto_op *op, + struct openssl_session *sess, struct rte_mbuf *mbuf_src, + struct rte_mbuf *mbuf_dst) { uint8_t *dst, *iv; int srclen, status; uint8_t inplace = (mbuf_src == mbuf_dst) ? 1 : 0; - EVP_CIPHER_CTX *ctx_copy; /* * Segmented OOP destination buffer is not supported for encryption/ @@ -1727,24 +1760,22 @@ process_openssl_cipher_op iv = rte_crypto_op_ctod_offset(op, uint8_t *, sess->iv.offset); - ctx_copy = EVP_CIPHER_CTX_new(); - EVP_CIPHER_CTX_copy(ctx_copy, sess->cipher.ctx); + + EVP_CIPHER_CTX *ctx = get_local_cipher_ctx(sess, qp); if (sess->cipher.mode == OPENSSL_CIPHER_LIB) if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) status = process_openssl_cipher_encrypt(mbuf_src, dst, op->sym->cipher.data.offset, iv, - srclen, ctx_copy, inplace); + srclen, ctx, inplace); else status = process_openssl_cipher_decrypt(mbuf_src, dst, op->sym->cipher.data.offset, iv, - srclen, ctx_copy, inplace); + srclen, ctx, inplace); else status = process_openssl_cipher_des3ctr(mbuf_src, dst, - op->sym->cipher.data.offset, iv, srclen, - ctx_copy); + op->sym->cipher.data.offset, iv, srclen, ctx); - EVP_CIPHER_CTX_free(ctx_copy); if (status != 0) op->status = RTE_CRYPTO_OP_STATUS_ERROR; } @@ -2910,13 +2941,13 @@ process_op(struct openssl_qp *qp, struct rte_crypto_op *op, switch (sess->chain_order) { case OPENSSL_CHAIN_ONLY_CIPHER: - process_openssl_cipher_op(op, sess, msrc, mdst); + process_openssl_cipher_op(qp, op, sess, msrc, mdst); break; case OPENSSL_CHAIN_ONLY_AUTH: process_openssl_auth_op(qp, op, sess, msrc, mdst); break; case OPENSSL_CHAIN_CIPHER_AUTH: - process_openssl_cipher_op(op, sess, msrc, mdst); + process_openssl_cipher_op(qp, op, sess, msrc, mdst); /* OOP */ if (msrc != mdst) copy_plaintext(msrc, mdst, op); @@ -2924,10 +2955,10 @@ process_op(struct openssl_qp *qp, struct rte_crypto_op *op, break; case OPENSSL_CHAIN_AUTH_CIPHER: process_openssl_auth_op(qp, op, sess, msrc, mdst); - process_openssl_cipher_op(op, sess, msrc, mdst); + process_openssl_cipher_op(qp, op, sess, msrc, mdst); break; case OPENSSL_CHAIN_COMBINED: - process_openssl_combined_op(op, sess, msrc, mdst); + process_openssl_combined_op(qp, op, sess, msrc, mdst); break; case OPENSSL_CHAIN_CIPHER_BPI: process_openssl_docsis_bpi_op(op, sess, msrc, mdst); diff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/drivers/crypto/openssl/rte_openssl_pmd_ops.c index 24d6d48262..a448279029 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c +++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c @@ -777,9 +777,34 @@ qp_setup_cleanup: /** Returns the size of the symmetric session structure */ static unsigned -openssl_pmd_sym_session_get_size(struct rte_cryptodev *dev __rte_unused) +openssl_pmd_sym_session_get_size(struct rte_cryptodev *dev) { - return sizeof(struct openssl_session); + /* + * For 0 qps, return the max size of the session - this is necessary if + * the user calls into this function to create the session mempool, + * without first configuring the number of qps for the cryptodev. + */ + if (dev->data->nb_queue_pairs == 0) { + unsigned int max_nb_qps = ((struct openssl_private *) + dev->data->dev_private)->max_nb_qpairs; + return sizeof(struct openssl_session) + + (sizeof(void *) * max_nb_qps); + } + + /* + * With only one queue pair, the thread safety of multiple context + * copies is not necessary, so don't allocate extra memory for the + * array. + */ + if (dev->data->nb_queue_pairs == 1) + return sizeof(struct openssl_session); + + /* + * Otherwise, the size of the flexible array member should be enough to + * fit pointers to per-qp contexts. + */ + return sizeof(struct openssl_session) + + (sizeof(void *) * dev->data->nb_queue_pairs); } /** Returns the size of the asymmetric session structure */ @@ -791,7 +816,7 @@ openssl_pmd_asym_session_get_size(struct rte_cryptodev *dev __rte_unused) /** Configure the session from a crypto xform chain */ static int -openssl_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused, +openssl_pmd_sym_session_configure(struct rte_cryptodev *dev, struct rte_crypto_sym_xform *xform, struct rte_cryptodev_sym_session *sess) { @@ -803,7 +828,8 @@ openssl_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused, return -EINVAL; } - ret = openssl_set_session_parameters(sess_private_data, xform); + ret = openssl_set_session_parameters(sess_private_data, xform, + dev->data->nb_queue_pairs); if (ret != 0) { OPENSSL_LOG(ERR, "failed configure session parameters"); -- 2.39.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2024-07-15 16:19:35.745313284 +0100 +++ 0019-crypto-openssl-make-per-QP-cipher-context-clones.patch 2024-07-15 16:19:34.488204755 +0100 @@ -1 +1 @@ -From b1d71126023521fe740ec473abfe5b295035b859 Mon Sep 17 00:00:00 2001 +From 26e1e90724f9ab34120d25bba9a3cc47c9234540 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit b1d71126023521fe740ec473abfe5b295035b859 ] + @@ -38,2 +39,0 @@ -Cc: stable@dpdk.org - @@ -50 +50 @@ -index 0f038b218c..bad7dcf2f5 100644 +index 4e224b040b..810b539f10 100644 @@ -53 +53 @@ -@@ -166,6 +166,14 @@ struct __rte_cache_aligned openssl_session { +@@ -165,6 +165,14 @@ struct openssl_session { @@ -65 +65 @@ - }; + } __rte_cache_aligned; @@ -68 +68 @@ -@@ -217,7 +225,8 @@ struct __rte_cache_aligned openssl_asym_session { +@@ -211,7 +219,8 @@ struct openssl_asym_session { @@ -79 +79 @@ -index bd09d58d88..df44cc097e 100644 +index bfdcda8841..62a179b6b6 100644 @@ -82 +82 @@ -@@ -467,13 +467,10 @@ openssl_set_sess_aead_dec_param(struct openssl_session *sess, +@@ -466,13 +466,10 @@ openssl_set_sess_aead_dec_param(struct openssl_session *sess, @@ -97 +97 @@ -@@ -489,13 +486,8 @@ static int openssl_aesni_ctx_clone(EVP_CIPHER_CTX **dest, +@@ -488,13 +485,8 @@ static int openssl_aesni_ctx_clone(EVP_CIPHER_CTX **dest, @@ -112 +112 @@ -@@ -824,7 +816,8 @@ openssl_set_session_aead_parameters(struct openssl_session *sess, +@@ -823,7 +815,8 @@ openssl_set_session_aead_parameters(struct openssl_session *sess, @@ -122 +122 @@ -@@ -886,6 +879,12 @@ openssl_set_session_parameters(struct openssl_session *sess, +@@ -885,6 +878,12 @@ openssl_set_session_parameters(struct openssl_session *sess, @@ -135 +135 @@ -@@ -893,6 +892,13 @@ openssl_set_session_parameters(struct openssl_session *sess, +@@ -892,6 +891,13 @@ openssl_set_session_parameters(struct openssl_session *sess, @@ -149 +149 @@ -@@ -959,7 +965,7 @@ get_session(struct openssl_qp *qp, struct rte_crypto_op *op) +@@ -958,7 +964,7 @@ get_session(struct openssl_qp *qp, struct rte_crypto_op *op) @@ -158 +158 @@ -@@ -1607,11 +1613,45 @@ process_auth_err: +@@ -1606,11 +1612,45 @@ process_auth_err: @@ -207 +207 @@ -@@ -1628,11 +1668,7 @@ process_openssl_combined_op +@@ -1627,11 +1667,7 @@ process_openssl_combined_op @@ -220 +220 @@ -@@ -1688,8 +1724,6 @@ process_openssl_combined_op +@@ -1687,8 +1723,6 @@ process_openssl_combined_op @@ -229 +229 @@ -@@ -1702,14 +1736,13 @@ process_openssl_combined_op +@@ -1701,14 +1735,13 @@ process_openssl_combined_op @@ -247 +247 @@ -@@ -1728,24 +1761,22 @@ process_openssl_cipher_op +@@ -1727,24 +1760,22 @@ process_openssl_cipher_op @@ -277 +277 @@ -@@ -3150,13 +3181,13 @@ process_op(struct openssl_qp *qp, struct rte_crypto_op *op, +@@ -2910,13 +2941,13 @@ process_op(struct openssl_qp *qp, struct rte_crypto_op *op, @@ -293 +293 @@ -@@ -3164,10 +3195,10 @@ process_op(struct openssl_qp *qp, struct rte_crypto_op *op, +@@ -2924,10 +2955,10 @@ process_op(struct openssl_qp *qp, struct rte_crypto_op *op, @@ -307 +307 @@ -index b16baaa08f..4209c6ab6f 100644 +index 24d6d48262..a448279029 100644 @@ -310 +310 @@ -@@ -794,9 +794,34 @@ qp_setup_cleanup: +@@ -777,9 +777,34 @@ qp_setup_cleanup: @@ -347 +347 @@ -@@ -808,7 +833,7 @@ openssl_pmd_asym_session_get_size(struct rte_cryptodev *dev __rte_unused) +@@ -791,7 +816,7 @@ openssl_pmd_asym_session_get_size(struct rte_cryptodev *dev __rte_unused) @@ -356 +356 @@ -@@ -820,7 +845,8 @@ openssl_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused, +@@ -803,7 +828,8 @@ openssl_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused,