From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 23A9DA04C1; Wed, 20 Nov 2019 05:31:52 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E60162C6D; Wed, 20 Nov 2019 05:31:51 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id E11992C36 for ; Wed, 20 Nov 2019 05:31:50 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAK4Vo4E018361; Tue, 19 Nov 2019 20:31:50 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=W5Mx/Ymr9KD7Q/wE7ZVOaKSZ05+TpysgOOyIYa0WlPw=; b=YkTvcHqjEmF5hKozjkvAhw9DdCbWcpF7Ro7JpAVUfUXoWX0L6xek+QE60Dz6KLL6OqwE RtGQSjFfzXozAWG2qX+TR6LA30K5nO/k4ujgNq8rQz7p2TdbPmlUsAfJFkkPc3GPC20A W1FAYo3eLKP7d7erFXFtYa0144RV8lVh19720JY9e/ou3pQO92JEo53WhHFIAUL/abyi M/yNYb2CEQFO55sBCNxUbOhHvzwkAGUj54S8XDuIIeVxGQ1q2K6BBzIOWMRWNnMk4sr+ eqvDoJlnCJimlBywcjcG++MDHte4VQz0EzgbYfvnv0ExEjSeNbzsooJfSiRgZ2gKvH1U 4Q== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 2wc82vntn6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 19 Nov 2019 20:31:50 -0800 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 19 Nov 2019 20:31:48 -0800 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (104.47.44.51) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Tue, 19 Nov 2019 20:31:48 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bT74vP6kbYarp2fCHbSxQlz/LEyON6njtYtNBQWtceey4hq9isq0cr9fBFhi/iLuZjvv8qY2Ma6wb492whCtxyR08TT3mR6dArjyP1fhxCrl+WOUTJ4hqevwiRUYH9/5VFqX849VtLDOdreMr1sbX7/ysmVjkXHrXlcjr8Y6/t9y1E7PsyOtDUSLbVK4G9axtemdnNX+evBpnEmJsw00RlgAllAgUtgK3jM/Wa6N33qXLqhzc8UPOWDeSBvZu03u5gYd+N13cGjToEXcIYCBzfE61W2BM1+nP297CgFXnNwzmq6lbMHpPyAFyrzt5n5XTI8JMFOO5MzeyY0Q1xCHkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W5Mx/Ymr9KD7Q/wE7ZVOaKSZ05+TpysgOOyIYa0WlPw=; b=ad+kMOYz6nU0bps4IJwGdkX2VK5s6tN5SBQOuvZjwUkh1rob9jFbWXCLZptwTdfDdfwCs11g8BZbFWJEyf0C79zFvGcqy8GUWmIsyktKao3tGx/nz7iavgnS9FjdAf2YraVQieB1pfA8aN5yLAGyCLWGzPZW+Kjk26mOIYCR9Fvs/vPl1opqDcAQXf52Zm++8vdy6CFgdx7EYG3AdjabrRmgRVDr3hXBi87hqmh/FFR1L5+5Yuwr5cuc8caZUXWAi6jyHW9Y9OvQRhcKkXvDWUXN0lyfz1WX+2Dx77beGv3UloHiW++0ElZ0+HdUt6qkrV7DKWkK7hKxF36Q7vkyig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W5Mx/Ymr9KD7Q/wE7ZVOaKSZ05+TpysgOOyIYa0WlPw=; b=s7eBsnseylUYXS4z4JZdTOvwVY3FDGeeiqXQfTtyOO/WGnlsFBf1T2EFvDUXZRlfeCD4edebnPJ37gmCIu7LLgZOXGFc3pYsPYdN7D2qHlu0rAKhocPXyDCztaZTRMYQa29PjUMaDEjLDmQCBh315wUQ2yUBmJOMyuVi959pzX0= Received: from MN2PR18MB2877.namprd18.prod.outlook.com (20.179.20.218) by MN2PR18MB3327.namprd18.prod.outlook.com (10.255.236.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23; Wed, 20 Nov 2019 04:31:45 +0000 Received: from MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::10fb:1671:dbff:6710]) by MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::10fb:1671:dbff:6710%4]) with mapi id 15.20.2474.015; Wed, 20 Nov 2019 04:31:45 +0000 From: Anoob Joseph To: Akhil Goyal , "dev@dpdk.org" CC: "declan.doherty@intel.com" , "konstantin.ananyev@intel.com" , "Jerin Jacob Kollanukkaran" Thread-Topic: [EXT] [PATCH v2] crypto/openssl: support SG for inplace buffers Thread-Index: AQHVnhdcJs30Sw2T/EuesTR3GyybWaeTegYg Date: Wed, 20 Nov 2019 04:31:45 +0000 Message-ID: References: <20190902124234.2314-1-akhil.goyal@nxp.com> <20191118133623.26400-1-akhil.goyal@nxp.com> In-Reply-To: <20191118133623.26400-1-akhil.goyal@nxp.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [14.140.231.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cf34282c-c403-4da4-3371-08d76d728cf8 x-ms-traffictypediagnostic: MN2PR18MB3327: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-forefront-prvs: 02272225C5 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(396003)(39860400002)(136003)(346002)(366004)(376002)(189003)(199004)(13464003)(9686003)(4326008)(66476007)(55016002)(33656002)(107886003)(11346002)(6246003)(486006)(476003)(446003)(71200400001)(71190400001)(305945005)(76176011)(7736002)(7696005)(2501003)(102836004)(8936002)(316002)(55236004)(6506007)(53546011)(256004)(14444005)(6436002)(26005)(8676002)(81166006)(81156014)(30864003)(25786009)(186003)(229853002)(74316002)(54906003)(110136005)(66066001)(3846002)(5660300002)(14454004)(478600001)(6116002)(52536014)(66946007)(76116006)(99286004)(86362001)(66446008)(64756008)(66556008)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3327; H:MN2PR18MB2877.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: y5zNoezseEE/6XclKfcUeDTxmP91nKFwvnoxTl7KGT74sXa3PipfOyuQBHQvjhrx4faVagfEcvwYswSSCKH6ku2o3G6SUUaJP4HErQ1YM111pufF0EX5MDyGzGEc2A53XOLMU7vP8+A2Q0u8UN491+EMk2nhE8LjIfKQ07DZelAQ32mrzE5gmICCpNoomjSU6Lu6oEaz/baOmhro63Ls61923Eem3CWI/W2WGb47yBiqDnR6eHY2fkCAaCJGrTB/Frynw84GNxGVgUt2j1VpzWqL7g85n+rQ+Gn7oIi5Um/UYUSB64wOg5kMqqeMifJP6MoyM2ghKCvp47a4ACMeeAlVo56u8mktg1vlA39v2hCleW1kwm0N3z/40Ne2/2Aljz2cXsF8DBMnqq5N+MV5/LooCyxE6e7kJrbTQiFzJCsfv1kS8bNXHFJoY3tF5BZY Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: cf34282c-c403-4da4-3371-08d76d728cf8 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Nov 2019 04:31:45.4110 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 0FKDZJjH66dVwsJmXBfEnDgqqPY2Q7FlziZcz3Stcu7gLGBaOSeuuZWeSY46VV0tYv2HPXWmZZCRUCnZf61uTg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB3327 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-19_08:2019-11-15,2019-11-19 signatures=0 Subject: Re: [dpdk-dev] [EXT] [PATCH v2] crypto/openssl: support SG for inplace buffers 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Akhil, A minor question. Otherwise, looks good. Thanks, Anoob > -----Original Message----- > From: Akhil Goyal > Sent: Monday, November 18, 2019 7:06 PM > To: dev@dpdk.org > Cc: declan.doherty@intel.com; Anoob Joseph ; > konstantin.ananyev@intel.com; Jerin Jacob Kollanukkaran > ; Akhil Goyal > Subject: [EXT] [PATCH v2] crypto/openssl: support SG for inplace buffers >=20 > External Email >=20 > ---------------------------------------------------------------------- > As per current support, Scatter Gather is only supported for out of place= input > and output buffers. > This patch add support for Scatter Gather for inplace buffers. >=20 > Signed-off-by: Akhil Goyal > --- > changes in v2: > - fixed typo > - enabled corresponding test case > - removed hardcodings >=20 >=20 > app/test/test_cryptodev_aes_test_vectors.h | 2 + > doc/guides/cryptodevs/features/openssl.ini | 1 + > drivers/crypto/openssl/rte_openssl_pmd.c | 84 ++++++++++++++++------ > 3 files changed, 66 insertions(+), 21 deletions(-) >=20 > diff --git a/app/test/test_cryptodev_aes_test_vectors.h > b/app/test/test_cryptodev_aes_test_vectors.h > index 9afa3aef8..8307fcf9a 100644 > --- a/app/test/test_cryptodev_aes_test_vectors.h > +++ b/app/test/test_cryptodev_aes_test_vectors.h > @@ -1773,6 +1773,7 @@ static const struct blockcipher_test_case > aes_chain_test_cases[] =3D { > BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR | > BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX | > BLOCKCIPHER_TEST_TARGET_PMD_NITROX | > + BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | > BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX2 > }, > { > @@ -2248,6 +2249,7 @@ static const struct blockcipher_test_case > aes_cipheronly_test_cases[] =3D { > BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | > BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR | > BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX | > + BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | > BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX2 > }, > { > diff --git a/doc/guides/cryptodevs/features/openssl.ini > b/doc/guides/cryptodevs/features/openssl.ini > index 6ddca39e7..30ffb111d 100644 > --- a/doc/guides/cryptodevs/features/openssl.ini > +++ b/doc/guides/cryptodevs/features/openssl.ini > @@ -6,6 +6,7 @@ > [Features] > Symmetric crypto =3D Y > Sym operation chaining =3D Y > +In Place SGL =3D Y > OOP SGL In LB Out =3D Y > OOP LB In LB Out =3D Y > Asymmetric crypto =3D Y > diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c > b/drivers/crypto/openssl/rte_openssl_pmd.c > index d68713e7e..369ad1aa7 100644 > --- a/drivers/crypto/openssl/rte_openssl_pmd.c > +++ b/drivers/crypto/openssl/rte_openssl_pmd.c > @@ -798,12 +798,12 @@ get_session(struct openssl_qp *qp, struct > rte_crypto_op *op) > */ > static inline int > process_openssl_encryption_update(struct rte_mbuf *mbuf_src, int offset, > - uint8_t **dst, int srclen, EVP_CIPHER_CTX *ctx) > + uint8_t **dst, int srclen, EVP_CIPHER_CTX *ctx, uint8_t inplace) > { > struct rte_mbuf *m; > int dstlen; > int l, n =3D srclen; > - uint8_t *src; > + uint8_t *src, temp[EVP_CIPHER_CTX_block_size(ctx)]; >=20 > for (m =3D mbuf_src; m !=3D NULL && offset > rte_pktmbuf_data_len(m); > m =3D m->next) > @@ -813,6 +813,8 @@ process_openssl_encryption_update(struct rte_mbuf > *mbuf_src, int offset, > return -1; >=20 > src =3D rte_pktmbuf_mtod_offset(m, uint8_t *, offset); > + if (inplace) > + *dst =3D src; >=20 > l =3D rte_pktmbuf_data_len(m) - offset; > if (srclen <=3D l) { > @@ -829,8 +831,24 @@ process_openssl_encryption_update(struct rte_mbuf > *mbuf_src, int offset, > n -=3D l; >=20 > for (m =3D m->next; (m !=3D NULL) && (n > 0); m =3D m->next) { > + uint8_t diff =3D l - dstlen, rem; > + > src =3D rte_pktmbuf_mtod(m, uint8_t *); > - l =3D rte_pktmbuf_data_len(m) < n ? rte_pktmbuf_data_len(m) : n; > + l =3D RTE_MIN(rte_pktmbuf_data_len(m), n); > + if (diff && inplace) { > + rem =3D RTE_MIN(l, > + (EVP_CIPHER_CTX_block_size(ctx) - diff)); > + if (EVP_EncryptUpdate(ctx, temp, > + &dstlen, src, rem) <=3D 0) > + return -1; > + n -=3D rem; > + rte_memcpy(*dst, temp, diff); > + rte_memcpy(src, temp + diff, rem); > + src +=3D rem; > + l -=3D rem; > + } > + if (inplace) > + *dst =3D src; > if (EVP_EncryptUpdate(ctx, *dst, &dstlen, src, l) <=3D 0) > return -1; > *dst +=3D dstlen; > @@ -842,12 +860,12 @@ process_openssl_encryption_update(struct rte_mbuf > *mbuf_src, int offset, >=20 > static inline int > process_openssl_decryption_update(struct rte_mbuf *mbuf_src, int offset, > - uint8_t **dst, int srclen, EVP_CIPHER_CTX *ctx) > + uint8_t **dst, int srclen, EVP_CIPHER_CTX *ctx, uint8_t inplace) > { > struct rte_mbuf *m; > int dstlen; > int l, n =3D srclen; > - uint8_t *src; > + uint8_t *src, temp[128]; [Anoob] In case of encrypt_update, the buffer is 'temp[EVP_CIPHER_CTX_block= _size(ctx)]'. Is the above intentional? >=20 > for (m =3D mbuf_src; m !=3D NULL && offset > rte_pktmbuf_data_len(m); > m =3D m->next) > @@ -857,6 +875,8 @@ process_openssl_decryption_update(struct rte_mbuf > *mbuf_src, int offset, > return -1; >=20 > src =3D rte_pktmbuf_mtod_offset(m, uint8_t *, offset); > + if (inplace) > + *dst =3D src; >=20 > l =3D rte_pktmbuf_data_len(m) - offset; > if (srclen <=3D l) { > @@ -873,8 +893,24 @@ process_openssl_decryption_update(struct rte_mbuf > *mbuf_src, int offset, > n -=3D l; >=20 > for (m =3D m->next; (m !=3D NULL) && (n > 0); m =3D m->next) { > + uint8_t diff =3D l - dstlen, rem; > + > src =3D rte_pktmbuf_mtod(m, uint8_t *); > - l =3D rte_pktmbuf_data_len(m) < n ? rte_pktmbuf_data_len(m) : n; > + l =3D RTE_MIN(rte_pktmbuf_data_len(m), n); > + if (diff && inplace) { > + rem =3D RTE_MIN(l, > + (EVP_CIPHER_CTX_block_size(ctx) - diff)); > + if (EVP_DecryptUpdate(ctx, temp, > + &dstlen, src, rem) <=3D 0) > + return -1; > + n -=3D rem; > + rte_memcpy(*dst, temp, diff); > + rte_memcpy(src, temp + diff, rem); > + src +=3D rem; > + l -=3D rem; > + } > + if (inplace) > + *dst =3D src; > if (EVP_DecryptUpdate(ctx, *dst, &dstlen, src, l) <=3D 0) > return -1; > *dst +=3D dstlen; > @@ -887,7 +923,8 @@ process_openssl_decryption_update(struct rte_mbuf > *mbuf_src, int offset, > /** Process standard openssl cipher encryption */ static int > process_openssl_cipher_encrypt(struct rte_mbuf *mbuf_src, uint8_t *dst, > - int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx) > + int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx, > + uint8_t inplace) > { > int totlen; >=20 > @@ -897,7 +934,7 @@ process_openssl_cipher_encrypt(struct rte_mbuf > *mbuf_src, uint8_t *dst, > EVP_CIPHER_CTX_set_padding(ctx, 0); >=20 > if (process_openssl_encryption_update(mbuf_src, offset, &dst, > - srclen, ctx)) > + srclen, ctx, inplace)) > goto process_cipher_encrypt_err; >=20 > if (EVP_EncryptFinal_ex(ctx, dst, &totlen) <=3D 0) @@ -936,7 +973,8 @@ > process_openssl_cipher_bpi_encrypt(uint8_t *src, uint8_t *dst, > /** Process standard openssl cipher decryption */ static int > process_openssl_cipher_decrypt(struct rte_mbuf *mbuf_src, uint8_t *dst, > - int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx) > + int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx, > + uint8_t inplace) > { > int totlen; >=20 > @@ -946,7 +984,7 @@ process_openssl_cipher_decrypt(struct rte_mbuf > *mbuf_src, uint8_t *dst, > EVP_CIPHER_CTX_set_padding(ctx, 0); >=20 > if (process_openssl_decryption_update(mbuf_src, offset, &dst, > - srclen, ctx)) > + srclen, ctx, inplace)) > goto process_cipher_decrypt_err; >=20 > if (EVP_DecryptFinal_ex(ctx, dst, &totlen) <=3D 0) @@ -1033,7 +1071,7 > @@ process_openssl_auth_encryption_gcm(struct rte_mbuf *mbuf_src, int > offset, >=20 > if (srclen > 0) > if (process_openssl_encryption_update(mbuf_src, offset, &dst, > - srclen, ctx)) > + srclen, ctx, 0)) > goto process_auth_encryption_gcm_err; >=20 > /* Workaround open ssl bug in version less then 1.0.1f */ @@ -1078,7 > +1116,7 @@ process_openssl_auth_encryption_ccm(struct rte_mbuf > *mbuf_src, int offset, >=20 > if (srclen > 0) > if (process_openssl_encryption_update(mbuf_src, offset, &dst, > - srclen, ctx)) > + srclen, ctx, 0)) > goto process_auth_encryption_ccm_err; >=20 > if (EVP_EncryptFinal_ex(ctx, dst, &len) <=3D 0) @@ -1115,7 +1153,7 @@ > process_openssl_auth_decryption_gcm(struct rte_mbuf *mbuf_src, int offset= , >=20 > if (srclen > 0) > if (process_openssl_decryption_update(mbuf_src, offset, &dst, > - srclen, ctx)) > + srclen, ctx, 0)) > goto process_auth_decryption_gcm_err; >=20 > /* Workaround open ssl bug in version less then 1.0.1f */ @@ -1161,7 > +1199,7 @@ process_openssl_auth_decryption_ccm(struct rte_mbuf > *mbuf_src, int offset, >=20 > if (srclen > 0) > if (process_openssl_decryption_update(mbuf_src, offset, &dst, > - srclen, ctx)) > + srclen, ctx, 0)) > return -EFAULT; >=20 > return 0; > @@ -1376,13 +1414,16 @@ process_openssl_cipher_op { > uint8_t *dst, *iv; > int srclen, status; > + uint8_t inplace =3D (mbuf_src =3D=3D mbuf_dst) ? 1 : 0; > EVP_CIPHER_CTX *ctx_copy; >=20 > /* > - * Segmented destination buffer is not supported for > - * encryption/decryption > + * Segmented OOP destination buffer is not supported for encryption/ > + * decryption. In case of des3ctr, even inplace segmented buffers are > + * not supported. > */ > - if (!rte_pktmbuf_is_contiguous(mbuf_dst)) { > + if (!rte_pktmbuf_is_contiguous(mbuf_dst) && > + (!inplace || sess->cipher.mode !=3D > OPENSSL_CIPHER_LIB)) { > op->status =3D RTE_CRYPTO_OP_STATUS_ERROR; > return; > } > @@ -1400,11 +1441,11 @@ process_openssl_cipher_op > if (sess->cipher.direction =3D=3D > RTE_CRYPTO_CIPHER_OP_ENCRYPT) > status =3D process_openssl_cipher_encrypt(mbuf_src, dst, > op->sym->cipher.data.offset, iv, > - srclen, ctx_copy); > + srclen, ctx_copy, inplace); > else > status =3D process_openssl_cipher_decrypt(mbuf_src, dst, > op->sym->cipher.data.offset, iv, > - srclen, ctx_copy); > + srclen, ctx_copy, inplace); > else > status =3D process_openssl_cipher_des3ctr(mbuf_src, dst, > op->sym->cipher.data.offset, iv, > @@ -1449,7 +1490,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op > *op, > /* Encrypt with the block aligned stream with CBC > mode */ > status =3D process_openssl_cipher_encrypt(mbuf_src, dst, > op->sym->cipher.data.offset, iv, > - srclen, sess->cipher.ctx); > + srclen, sess->cipher.ctx, 0); > if (last_block_len) { > /* Point at last block */ > dst +=3D srclen; > @@ -1499,7 +1540,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op > *op, > /* Decrypt with CBC mode */ > status |=3D process_openssl_cipher_decrypt(mbuf_src, > dst, > op->sym->cipher.data.offset, iv, > - srclen, sess->cipher.ctx); > + srclen, sess->cipher.ctx, 0); > } > } >=20 > @@ -2137,6 +2178,7 @@ cryptodev_openssl_create(const char *name, > dev->feature_flags =3D RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | > RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | > RTE_CRYPTODEV_FF_CPU_AESNI | > + RTE_CRYPTODEV_FF_IN_PLACE_SGL | > RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT | > RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT | > RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO | > -- > 2.17.1