DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
@ 2017-07-28 11:07 Akhil Goyal
  2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: add openssl path for cross compile Akhil Goyal
                   ` (2 more replies)
  0 siblings, 3 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-07-28 11:07 UTC (permalink / raw)
  To: dev, declan.doherty; +Cc: pablo.de.lara.guarch, hemant.agrawal, Akhil Goyal

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 config/defconfig_arm64-dpaa2-linuxapp-gcc | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/config/defconfig_arm64-dpaa2-linuxapp-gcc b/config/defconfig_arm64-dpaa2-linuxapp-gcc
index 8a42944..7de2d4e 100644
--- a/config/defconfig_arm64-dpaa2-linuxapp-gcc
+++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc
@@ -90,3 +90,9 @@ CONFIG_RTE_DPAA2_SEC_PMD_MAX_NB_SESSIONS=2048
 #
 CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=y
 CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV_DEBUG=n
+
+#
+# Compile PMD for Software backed device
+#
+CONFIG_RTE_LIBRTE_PMD_OPENSSL=y
+CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
-- 
2.9.3

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH] crypto/openssl: add openssl path for cross compile
  2017-07-28 11:07 [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc Akhil Goyal
@ 2017-07-28 11:07 ` Akhil Goyal
  2017-08-29  7:02   ` [dpdk-dev] [PATCH v2] " Akhil Goyal
  2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: performance improvements Akhil Goyal
  2017-09-04 14:48 ` [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc De Lara Guarch, Pablo
  2 siblings, 1 reply; 34+ messages in thread
From: Akhil Goyal @ 2017-07-28 11:07 UTC (permalink / raw)
  To: dev, declan.doherty; +Cc: pablo.de.lara.guarch, hemant.agrawal, Akhil Goyal

OPENSSL_PATH should be defined in case openssl
driver is cross compiled

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 doc/guides/cryptodevs/openssl.rst | 4 ++++
 drivers/crypto/openssl/Makefile   | 1 +
 mk/rte.app.mk                     | 2 +-
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/doc/guides/cryptodevs/openssl.rst b/doc/guides/cryptodevs/openssl.rst
index f18a456..08cc9ba 100644
--- a/doc/guides/cryptodevs/openssl.rst
+++ b/doc/guides/cryptodevs/openssl.rst
@@ -88,6 +88,10 @@ sudo apt-get install libc6-dev-i386 (for i686-native-linuxapp-gcc target)
 This code was also verified on Fedora 24.
 This code was NOT yet verified on FreeBSD.
 
+In case openssl is cross compiled, openssl can be installed separately
+and path for openssl install directory can be given as
+export OPENSSL_PATH=<openssl install dir>
+
 Initialization
 --------------
 
diff --git a/drivers/crypto/openssl/Makefile b/drivers/crypto/openssl/Makefile
index e5fdfb5..7297173 100644
--- a/drivers/crypto/openssl/Makefile
+++ b/drivers/crypto/openssl/Makefile
@@ -35,6 +35,7 @@ LIB = librte_pmd_openssl.a
 
 # build flags
 CFLAGS += -O3
+CFLAGS += -I${OPENSSL_PATH}/include/
 CFLAGS += $(WERROR_FLAGS)
 
 # library version
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index c25fdd9..ed38f3b 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -151,7 +151,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)    += -lrte_pmd_aesni_mb
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)    += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -lrte_pmd_aesni_gcm
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -lrte_pmd_openssl -lcrypto
+_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -L${OPENSSL_PATH}/lib -lrte_pmd_openssl -lcrypto
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += -lrte_pmd_null_crypto
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT)         += -lrte_pmd_qat -lcrypto
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G)      += -lrte_pmd_snow3g
-- 
2.9.3

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH] crypto/openssl: performance improvements
  2017-07-28 11:07 [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc Akhil Goyal
  2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: add openssl path for cross compile Akhil Goyal
@ 2017-07-28 11:07 ` Akhil Goyal
  2017-07-28 11:58   ` De Lara Guarch, Pablo
                     ` (2 more replies)
  2017-09-04 14:48 ` [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc De Lara Guarch, Pablo
  2 siblings, 3 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-07-28 11:07 UTC (permalink / raw)
  To: dev, declan.doherty; +Cc: pablo.de.lara.guarch, hemant.agrawal, Akhil Goyal

key and algo are added in the openssl ctx during
session initialization instead of adding it for
each packet.

Also in case of HMAC the openssl APIs HMAC_XXX give
better performance for all HMAC cases.

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
---
Tested on arm and xeon machines
autotest passed with no issues,
perftest passed with improved performance numbers,
l2fwd-crypto passed with improved performance 

 drivers/crypto/openssl/rte_openssl_pmd.c         | 95 +++++++++++++++---------
 drivers/crypto/openssl/rte_openssl_pmd_private.h |  3 +-
 2 files changed, 63 insertions(+), 35 deletions(-)

diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
index 0bd5f98..b11a7fb 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd.c
+++ b/drivers/crypto/openssl/rte_openssl_pmd.c
@@ -39,6 +39,7 @@
 #include <rte_malloc.h>
 #include <rte_cpuflags.h>
 
+#include <openssl/hmac.h>
 #include <openssl/evp.h>
 
 #include "rte_openssl_pmd_private.h"
@@ -307,6 +308,22 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess,
 
 		get_cipher_key(xform->cipher.key.data, sess->cipher.key.length,
 			sess->cipher.key.data);
+		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
+			if (EVP_EncryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		} else if (sess->cipher.direction ==
+				RTE_CRYPTO_CIPHER_OP_DECRYPT) {
+			if (EVP_DecryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		}
 
 		break;
 
@@ -333,6 +350,23 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess,
 
 		get_cipher_key(xform->cipher.key.data, sess->cipher.key.length,
 			sess->cipher.key.data);
+		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
+			if (EVP_EncryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		} else if (sess->cipher.direction ==
+				RTE_CRYPTO_CIPHER_OP_DECRYPT) {
+			if (EVP_DecryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		}
+
 		break;
 	default:
 		sess->cipher.algo = RTE_CRYPTO_CIPHER_NULL;
@@ -403,12 +437,16 @@ openssl_set_session_auth_parameters(struct openssl_session *sess,
 	case RTE_CRYPTO_AUTH_SHA384_HMAC:
 	case RTE_CRYPTO_AUTH_SHA512_HMAC:
 		sess->auth.mode = OPENSSL_AUTH_AS_HMAC;
-		sess->auth.hmac.ctx = EVP_MD_CTX_create();
+		HMAC_CTX_init(&sess->auth.hmac.ctx);
 		if (get_auth_algo(xform->auth.algo,
 				&sess->auth.hmac.evp_algo) != 0)
 			return -EINVAL;
-		sess->auth.hmac.pkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL,
-				xform->auth.key.data, xform->auth.key.length);
+
+		if (HMAC_Init_ex(&sess->auth.hmac.ctx,
+				xform->auth.key.data,
+				xform->auth.key.length,
+				sess->auth.hmac.evp_algo, NULL) != 1)
+			return -EINVAL;
 		break;
 
 	default:
@@ -547,7 +585,7 @@ openssl_reset_session(struct openssl_session *sess)
 		break;
 	case OPENSSL_AUTH_AS_HMAC:
 		EVP_PKEY_free(sess->auth.hmac.pkey);
-		EVP_MD_CTX_destroy(sess->auth.hmac.ctx);
+		HMAC_CTX_cleanup(&sess->auth.hmac.ctx);
 		break;
 	default:
 		break;
@@ -693,12 +731,11 @@ 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, uint8_t *key, int srclen,
-		EVP_CIPHER_CTX *ctx, const EVP_CIPHER *algo)
+		int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx)
 {
 	int totlen;
 
-	if (EVP_EncryptInit_ex(ctx, algo, NULL, key, iv) <= 0)
+	if (EVP_EncryptInit_ex(ctx, NULL, NULL, NULL, iv) <= 0)
 		goto process_cipher_encrypt_err;
 
 	EVP_CIPHER_CTX_set_padding(ctx, 0);
@@ -743,12 +780,11 @@ 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, uint8_t *key, int srclen,
-		EVP_CIPHER_CTX *ctx, const EVP_CIPHER *algo)
+		int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx)
 {
 	int totlen;
 
-	if (EVP_DecryptInit_ex(ctx, algo, NULL, key, iv) <= 0)
+	if (EVP_DecryptInit_ex(ctx, NULL, NULL, NULL, iv) <= 0)
 		goto process_cipher_decrypt_err;
 
 	EVP_CIPHER_CTX_set_padding(ctx, 0);
@@ -971,10 +1007,9 @@ process_openssl_auth(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
 /** Process standard openssl auth algorithms with hmac */
 static int
 process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
-		__rte_unused uint8_t *iv, EVP_PKEY *pkey,
-		int srclen, EVP_MD_CTX *ctx, const EVP_MD *algo)
+		int srclen, HMAC_CTX *ctx)
 {
-	size_t dstlen;
+	unsigned int dstlen;
 	struct rte_mbuf *m;
 	int l, n = srclen;
 	uint8_t *src;
@@ -986,19 +1021,16 @@ process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
 	if (m == 0)
 		goto process_auth_err;
 
-	if (EVP_DigestSignInit(ctx, NULL, algo, NULL, pkey) <= 0)
-		goto process_auth_err;
-
 	src = rte_pktmbuf_mtod_offset(m, uint8_t *, offset);
 
 	l = rte_pktmbuf_data_len(m) - offset;
 	if (srclen <= l) {
-		if (EVP_DigestSignUpdate(ctx, (char *)src, srclen) <= 0)
+		if (HMAC_Update(ctx, (unsigned char *)src, srclen) != 1)
 			goto process_auth_err;
 		goto process_auth_final;
 	}
 
-	if (EVP_DigestSignUpdate(ctx, (char *)src, l) <= 0)
+	if (HMAC_Update(ctx, (unsigned char *)src, l) != 1)
 		goto process_auth_err;
 
 	n -= l;
@@ -1006,13 +1038,16 @@ process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
 	for (m = m->next; (m != NULL) && (n > 0); m = m->next) {
 		src = rte_pktmbuf_mtod(m, uint8_t *);
 		l = rte_pktmbuf_data_len(m) < n ? rte_pktmbuf_data_len(m) : n;
-		if (EVP_DigestSignUpdate(ctx, (char *)src, l) <= 0)
+		if (HMAC_Update(ctx, (unsigned char *)src, l) != 1)
 			goto process_auth_err;
 		n -= l;
 	}
 
 process_auth_final:
-	if (EVP_DigestSignFinal(ctx, dst, &dstlen) <= 0)
+	if (HMAC_Final(ctx, dst, &dstlen) != 1)
+		goto process_auth_err;
+
+	if (unlikely(HMAC_Init_ex(ctx, NULL, 0, NULL, NULL) != 1))
 		goto process_auth_err;
 
 	return 0;
@@ -1122,15 +1157,11 @@ process_openssl_cipher_op
 		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT)
 			status = process_openssl_cipher_encrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx,
-					sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 		else
 			status = process_openssl_cipher_decrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx,
-					sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 	else
 		status = process_openssl_cipher_des3ctr(mbuf_src, dst,
 				op->sym->cipher.data.offset, iv,
@@ -1174,8 +1205,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op,
 			/* Encrypt with the block aligned stream with CBC mode */
 			status = process_openssl_cipher_encrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx, sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 			if (last_block_len) {
 				/* Point at last block */
 				dst += srclen;
@@ -1225,9 +1255,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op,
 			/* Decrypt with CBC mode */
 			status |= process_openssl_cipher_decrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx,
-					sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 		}
 	}
 
@@ -1265,9 +1293,8 @@ process_openssl_auth_op
 		break;
 	case OPENSSL_AUTH_AS_HMAC:
 		status = process_openssl_auth_hmac(mbuf_src, dst,
-				op->sym->auth.data.offset, NULL,
-				sess->auth.hmac.pkey, srclen,
-				sess->auth.hmac.ctx, sess->auth.hmac.evp_algo);
+				op->sym->auth.data.offset, srclen,
+				&sess->auth.hmac.ctx);
 		break;
 	default:
 		status = -1;
diff --git a/drivers/crypto/openssl/rte_openssl_pmd_private.h b/drivers/crypto/openssl/rte_openssl_pmd_private.h
index b7f7475..e36741e 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd_private.h
+++ b/drivers/crypto/openssl/rte_openssl_pmd_private.h
@@ -34,6 +34,7 @@
 #define _OPENSSL_PMD_PRIVATE_H_
 
 #include <openssl/evp.h>
+#include <openssl/hmac.h>
 #include <openssl/des.h>
 
 #define CRYPTODEV_NAME_OPENSSL_PMD	crypto_openssl
@@ -164,7 +165,7 @@ struct openssl_session {
 				/**< pointer to EVP key */
 				const EVP_MD *evp_algo;
 				/**< pointer to EVP algorithm function */
-				EVP_MD_CTX *ctx;
+				HMAC_CTX ctx;
 				/**< pointer to EVP context structure */
 			} hmac;
 		};
-- 
2.9.3

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/openssl: performance improvements
  2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: performance improvements Akhil Goyal
@ 2017-07-28 11:58   ` De Lara Guarch, Pablo
  2017-07-28 12:02     ` Akhil Goyal
  2017-08-14 14:17   ` De Lara Guarch, Pablo
  2017-08-29  6:58   ` [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
  2 siblings, 1 reply; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-07-28 11:58 UTC (permalink / raw)
  To: Akhil Goyal, dev, Doherty, Declan; +Cc: hemant.agrawal

Hi Akhil,

> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Friday, July 28, 2017 12:08 PM
> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
> Subject: [PATCH] crypto/openssl: performance improvements
> 
> key and algo are added in the openssl ctx during session initialization
> instead of adding it for each packet.
> 
> Also in case of HMAC the openssl APIs HMAC_XXX give better performance
> for all HMAC cases.
> 
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>

I assume that this and the other patches are meant to be for 17.11, right?

Thanks,
Pablo

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/openssl: performance improvements
  2017-07-28 11:58   ` De Lara Guarch, Pablo
@ 2017-07-28 12:02     ` Akhil Goyal
  2017-07-28 12:07       ` De Lara Guarch, Pablo
  0 siblings, 1 reply; 34+ messages in thread
From: Akhil Goyal @ 2017-07-28 12:02 UTC (permalink / raw)
  To: De Lara Guarch, Pablo, dev, Doherty, Declan; +Cc: hemant.agrawal

On 7/28/2017 5:28 PM, De Lara Guarch, Pablo wrote:
> Hi Akhil,
> 
>> -----Original Message-----
>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>> Sent: Friday, July 28, 2017 12:08 PM
>> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
>> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
>> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
>> Subject: [PATCH] crypto/openssl: performance improvements
>>
>> key and algo are added in the openssl ctx during session initialization
>> instead of adding it for each packet.
>>
>> Also in case of HMAC the openssl APIs HMAC_XXX give better performance
>> for all HMAC cases.
>>
>> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> 
> I assume that this and the other patches are meant to be for 17.11, right?
> 
yes, they are for 17.11.
But, I don't mind if these can be considered for 17.08.

-Akhil

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/openssl: performance improvements
  2017-07-28 12:02     ` Akhil Goyal
@ 2017-07-28 12:07       ` De Lara Guarch, Pablo
  0 siblings, 0 replies; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-07-28 12:07 UTC (permalink / raw)
  To: Akhil Goyal, dev, Doherty, Declan; +Cc: hemant.agrawal



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Akhil Goyal
> Sent: Friday, July 28, 2017 1:03 PM
> To: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
> dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
> Cc: hemant.agrawal@nxp.com
> Subject: Re: [dpdk-dev] [PATCH] crypto/openssl: performance
> improvements
> 
> On 7/28/2017 5:28 PM, De Lara Guarch, Pablo wrote:
> > Hi Akhil,
> >
> >> -----Original Message-----
> >> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> >> Sent: Friday, July 28, 2017 12:08 PM
> >> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
> >> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
> >> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
> >> Subject: [PATCH] crypto/openssl: performance improvements
> >>
> >> key and algo are added in the openssl ctx during session
> >> initialization instead of adding it for each packet.
> >>
> >> Also in case of HMAC the openssl APIs HMAC_XXX give better
> >> performance for all HMAC cases.
> >>
> >> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> >
> > I assume that this and the other patches are meant to be for 17.11, right?
> >
> yes, they are for 17.11.
> But, I don't mind if these can be considered for 17.08.

Unfortunately, at this stage, it is too late to include these sorts of patches in this release.
Just wanted to double check with you.

Thanks,
Pablo

> 
> -Akhil
> 
> 


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/openssl: performance improvements
  2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: performance improvements Akhil Goyal
  2017-07-28 11:58   ` De Lara Guarch, Pablo
@ 2017-08-14 14:17   ` De Lara Guarch, Pablo
  2017-08-15  6:44     ` Akhil Goyal
  2017-08-29  6:58   ` [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
  2 siblings, 1 reply; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-08-14 14:17 UTC (permalink / raw)
  To: Akhil Goyal, dev, Doherty, Declan; +Cc: hemant.agrawal

Hi Akhil,

> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Friday, July 28, 2017 12:08 PM
> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
> Subject: [PATCH] crypto/openssl: performance improvements
> 
> key and algo are added in the openssl ctx during session initialization
> instead of adding it for each packet.
> 
> Also in case of HMAC the openssl APIs HMAC_XXX give better performance
> for all HMAC cases.
> 
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>

Thanks for the patch, nice optimization!
Could you split this into two patches, as you are doing two different things here?
One for the first sentence and another one for the second sentence.
Also, as you do that, could you rename the title to be more explicit?
Like: crypto/openssl: initialize cipher key at session init

Finally, I was looking at GCM, and I think it could benefit from this.
I will send a separate patch for it, unless you want to integrate it in this patchset yourself.

Thanks,
Pablo

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/openssl: performance improvements
  2017-08-14 14:17   ` De Lara Guarch, Pablo
@ 2017-08-15  6:44     ` Akhil Goyal
  2017-08-15  7:26       ` De Lara Guarch, Pablo
  0 siblings, 1 reply; 34+ messages in thread
From: Akhil Goyal @ 2017-08-15  6:44 UTC (permalink / raw)
  To: De Lara Guarch, Pablo, dev, Doherty, Declan; +Cc: hemant.agrawal

On 8/14/2017 7:47 PM, De Lara Guarch, Pablo wrote:
> Hi Akhil,
> 
>> -----Original Message-----
>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>> Sent: Friday, July 28, 2017 12:08 PM
>> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
>> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
>> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
>> Subject: [PATCH] crypto/openssl: performance improvements
>>
>> key and algo are added in the openssl ctx during session initialization
>> instead of adding it for each packet.
>>
>> Also in case of HMAC the openssl APIs HMAC_XXX give better performance
>> for all HMAC cases.
>>
>> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> 
> Thanks for the patch, nice optimization!
> Could you split this into two patches, as you are doing two different things here?
> One for the first sentence and another one for the second sentence.
> Also, as you do that, could you rename the title to be more explicit?
> Like: crypto/openssl: initialize cipher key at session init
> 
> Finally, I was looking at GCM, and I think it could benefit from this.
> I will send a separate patch for it, unless you want to integrate it in this patchset yourself.
> 

Ok I would split the patches.
For GCM I will try to incorporate in this patchset, if I get some 
performance improvement, or I would send a different patch later if some 
issue comes.

Thanks,
Akhil

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/openssl: performance improvements
  2017-08-15  6:44     ` Akhil Goyal
@ 2017-08-15  7:26       ` De Lara Guarch, Pablo
  2017-08-16  7:03         ` Akhil Goyal
  0 siblings, 1 reply; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-08-15  7:26 UTC (permalink / raw)
  To: Akhil Goyal, dev, Doherty, Declan; +Cc: hemant.agrawal

Hi,

> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, August 15, 2017 7:45 AM
> To: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
> dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
> Cc: hemant.agrawal@nxp.com
> Subject: Re: [PATCH] crypto/openssl: performance improvements
> 
> On 8/14/2017 7:47 PM, De Lara Guarch, Pablo wrote:
> > Hi Akhil,
> >
> >> -----Original Message-----
> >> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> >> Sent: Friday, July 28, 2017 12:08 PM
> >> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
> >> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
> >> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
> >> Subject: [PATCH] crypto/openssl: performance improvements
> >>
> >> key and algo are added in the openssl ctx during session
> >> initialization instead of adding it for each packet.
> >>
> >> Also in case of HMAC the openssl APIs HMAC_XXX give better
> >> performance for all HMAC cases.
> >>
> >> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> >
> > Thanks for the patch, nice optimization!
> > Could you split this into two patches, as you are doing two different
> things here?
> > One for the first sentence and another one for the second sentence.
> > Also, as you do that, could you rename the title to be more explicit?
> > Like: crypto/openssl: initialize cipher key at session init
> >
> > Finally, I was looking at GCM, and I think it could benefit from this.
> > I will send a separate patch for it, unless you want to integrate it in this
> patchset yourself.
> >
> 
> Ok I would split the patches.
> For GCM I will try to incorporate in this patchset, if I get some performance
> improvement, or I would send a different patch later if some issue comes.

Thanks Ahkil. Since I am working on AES-CCM for this PMD, I have the change
already done. I have seen performance improvements, but it is not as straight forward
as the cipher algorithms, because GMAC is also affected, which is in a different code path,
but requires GCM to be set.

> 
> Thanks,
> Akhil
> 


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/openssl: performance improvements
  2017-08-15  7:26       ` De Lara Guarch, Pablo
@ 2017-08-16  7:03         ` Akhil Goyal
  0 siblings, 0 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-08-16  7:03 UTC (permalink / raw)
  To: De Lara Guarch, Pablo, dev, Doherty, Declan; +Cc: hemant.agrawal

Hi Pablo,
On 8/15/2017 12:56 PM, De Lara Guarch, Pablo wrote:
> Hi,
> 
>> -----Original Message-----
>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>> Sent: Tuesday, August 15, 2017 7:45 AM
>> To: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
>> dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
>> Cc: hemant.agrawal@nxp.com
>> Subject: Re: [PATCH] crypto/openssl: performance improvements
>>
>> On 8/14/2017 7:47 PM, De Lara Guarch, Pablo wrote:
>>> Hi Akhil,
>>>
>>>> -----Original Message-----
>>>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>>>> Sent: Friday, July 28, 2017 12:08 PM
>>>> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
>>>> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
>>>> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
>>>> Subject: [PATCH] crypto/openssl: performance improvements
>>>>
>>>> key and algo are added in the openssl ctx during session
>>>> initialization instead of adding it for each packet.
>>>>
>>>> Also in case of HMAC the openssl APIs HMAC_XXX give better
>>>> performance for all HMAC cases.
>>>>
>>>> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
>>>
>>> Thanks for the patch, nice optimization!
>>> Could you split this into two patches, as you are doing two different
>> things here?
>>> One for the first sentence and another one for the second sentence.
>>> Also, as you do that, could you rename the title to be more explicit?
>>> Like: crypto/openssl: initialize cipher key at session init
>>>
>>> Finally, I was looking at GCM, and I think it could benefit from this.
>>> I will send a separate patch for it, unless you want to integrate it in this
>> patchset yourself.
>>>
>>
>> Ok I would split the patches.
>> For GCM I will try to incorporate in this patchset, if I get some performance
>> improvement, or I would send a different patch later if some issue comes.
> 
> Thanks Ahkil. Since I am working on AES-CCM for this PMD, I have the change
> already done. I have seen performance improvements, but it is not as straight forward
> as the cipher algorithms, because GMAC is also affected, which is in a different code path,
> but requires GCM to be set.
> 

If you have the change and it is working fine, then you can send your 
patch, no issues in that.

Thanks,
Akhil

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs
  2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: performance improvements Akhil Goyal
  2017-07-28 11:58   ` De Lara Guarch, Pablo
  2017-08-14 14:17   ` De Lara Guarch, Pablo
@ 2017-08-29  6:58   ` Akhil Goyal
  2017-08-29  6:58     ` [dpdk-dev] [PATCH v2 2/2] crypto/openssl: performance improvements Akhil Goyal
                       ` (2 more replies)
  2 siblings, 3 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-08-29  6:58 UTC (permalink / raw)
  To: dev, pablo.de.lara.guarch; +Cc: hemant.agrawal, declan.doherty, Akhil Goyal

in case of HMAC the openssl APIs HMAC_XXX give
better performance for all HMAC cases as compared with
EVP_XXX

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
---
changes in v2:
patch split in two patches as per Pablo's recommendations

 drivers/crypto/openssl/rte_openssl_pmd.c         | 37 +++++++++++++-----------
 drivers/crypto/openssl/rte_openssl_pmd_private.h |  3 +-
 2 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
index 0bd5f98..889d632 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd.c
+++ b/drivers/crypto/openssl/rte_openssl_pmd.c
@@ -39,6 +39,7 @@
 #include <rte_malloc.h>
 #include <rte_cpuflags.h>
 
+#include <openssl/hmac.h>
 #include <openssl/evp.h>
 
 #include "rte_openssl_pmd_private.h"
@@ -403,12 +404,16 @@ openssl_set_session_auth_parameters(struct openssl_session *sess,
 	case RTE_CRYPTO_AUTH_SHA384_HMAC:
 	case RTE_CRYPTO_AUTH_SHA512_HMAC:
 		sess->auth.mode = OPENSSL_AUTH_AS_HMAC;
-		sess->auth.hmac.ctx = EVP_MD_CTX_create();
+		HMAC_CTX_init(&sess->auth.hmac.ctx);
 		if (get_auth_algo(xform->auth.algo,
 				&sess->auth.hmac.evp_algo) != 0)
 			return -EINVAL;
-		sess->auth.hmac.pkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL,
-				xform->auth.key.data, xform->auth.key.length);
+
+		if (HMAC_Init_ex(&sess->auth.hmac.ctx,
+				xform->auth.key.data,
+				xform->auth.key.length,
+				sess->auth.hmac.evp_algo, NULL) != 1)
+			return -EINVAL;
 		break;
 
 	default:
@@ -547,7 +552,7 @@ openssl_reset_session(struct openssl_session *sess)
 		break;
 	case OPENSSL_AUTH_AS_HMAC:
 		EVP_PKEY_free(sess->auth.hmac.pkey);
-		EVP_MD_CTX_destroy(sess->auth.hmac.ctx);
+		HMAC_CTX_cleanup(&sess->auth.hmac.ctx);
 		break;
 	default:
 		break;
@@ -971,10 +976,9 @@ process_openssl_auth(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
 /** Process standard openssl auth algorithms with hmac */
 static int
 process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
-		__rte_unused uint8_t *iv, EVP_PKEY *pkey,
-		int srclen, EVP_MD_CTX *ctx, const EVP_MD *algo)
+		int srclen, HMAC_CTX *ctx)
 {
-	size_t dstlen;
+	unsigned int dstlen;
 	struct rte_mbuf *m;
 	int l, n = srclen;
 	uint8_t *src;
@@ -986,19 +990,16 @@ process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
 	if (m == 0)
 		goto process_auth_err;
 
-	if (EVP_DigestSignInit(ctx, NULL, algo, NULL, pkey) <= 0)
-		goto process_auth_err;
-
 	src = rte_pktmbuf_mtod_offset(m, uint8_t *, offset);
 
 	l = rte_pktmbuf_data_len(m) - offset;
 	if (srclen <= l) {
-		if (EVP_DigestSignUpdate(ctx, (char *)src, srclen) <= 0)
+		if (HMAC_Update(ctx, (unsigned char *)src, srclen) != 1)
 			goto process_auth_err;
 		goto process_auth_final;
 	}
 
-	if (EVP_DigestSignUpdate(ctx, (char *)src, l) <= 0)
+	if (HMAC_Update(ctx, (unsigned char *)src, l) != 1)
 		goto process_auth_err;
 
 	n -= l;
@@ -1006,13 +1007,16 @@ process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
 	for (m = m->next; (m != NULL) && (n > 0); m = m->next) {
 		src = rte_pktmbuf_mtod(m, uint8_t *);
 		l = rte_pktmbuf_data_len(m) < n ? rte_pktmbuf_data_len(m) : n;
-		if (EVP_DigestSignUpdate(ctx, (char *)src, l) <= 0)
+		if (HMAC_Update(ctx, (unsigned char *)src, l) != 1)
 			goto process_auth_err;
 		n -= l;
 	}
 
 process_auth_final:
-	if (EVP_DigestSignFinal(ctx, dst, &dstlen) <= 0)
+	if (HMAC_Final(ctx, dst, &dstlen) != 1)
+		goto process_auth_err;
+
+	if (unlikely(HMAC_Init_ex(ctx, NULL, 0, NULL, NULL) != 1))
 		goto process_auth_err;
 
 	return 0;
@@ -1265,9 +1269,8 @@ process_openssl_auth_op
 		break;
 	case OPENSSL_AUTH_AS_HMAC:
 		status = process_openssl_auth_hmac(mbuf_src, dst,
-				op->sym->auth.data.offset, NULL,
-				sess->auth.hmac.pkey, srclen,
-				sess->auth.hmac.ctx, sess->auth.hmac.evp_algo);
+				op->sym->auth.data.offset, srclen,
+				&sess->auth.hmac.ctx);
 		break;
 	default:
 		status = -1;
diff --git a/drivers/crypto/openssl/rte_openssl_pmd_private.h b/drivers/crypto/openssl/rte_openssl_pmd_private.h
index b7f7475..e36741e 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd_private.h
+++ b/drivers/crypto/openssl/rte_openssl_pmd_private.h
@@ -34,6 +34,7 @@
 #define _OPENSSL_PMD_PRIVATE_H_
 
 #include <openssl/evp.h>
+#include <openssl/hmac.h>
 #include <openssl/des.h>
 
 #define CRYPTODEV_NAME_OPENSSL_PMD	crypto_openssl
@@ -164,7 +165,7 @@ struct openssl_session {
 				/**< pointer to EVP key */
 				const EVP_MD *evp_algo;
 				/**< pointer to EVP algorithm function */
-				EVP_MD_CTX *ctx;
+				HMAC_CTX ctx;
 				/**< pointer to EVP context structure */
 			} hmac;
 		};
-- 
2.9.3

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v2 2/2] crypto/openssl: performance improvements
  2017-08-29  6:58   ` [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
@ 2017-08-29  6:58     ` Akhil Goyal
  2017-09-04 15:39       ` De Lara Guarch, Pablo
  2017-09-05  5:57       ` [dpdk-dev] [PATCH v3 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
  2017-09-04 15:38     ` [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs De Lara Guarch, Pablo
  2017-09-08 14:03     ` De Lara Guarch, Pablo
  2 siblings, 2 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-08-29  6:58 UTC (permalink / raw)
  To: dev, pablo.de.lara.guarch; +Cc: hemant.agrawal, declan.doherty, Akhil Goyal

key and algo are added in the openssl ctx during
session initialization instead of adding it for
each packet.

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 drivers/crypto/openssl/rte_openssl_pmd.c | 58 ++++++++++++++++++++++----------
 1 file changed, 41 insertions(+), 17 deletions(-)

diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
index 889d632..b11a7fb 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd.c
+++ b/drivers/crypto/openssl/rte_openssl_pmd.c
@@ -308,6 +308,22 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess,
 
 		get_cipher_key(xform->cipher.key.data, sess->cipher.key.length,
 			sess->cipher.key.data);
+		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
+			if (EVP_EncryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		} else if (sess->cipher.direction ==
+				RTE_CRYPTO_CIPHER_OP_DECRYPT) {
+			if (EVP_DecryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		}
 
 		break;
 
@@ -334,6 +350,23 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess,
 
 		get_cipher_key(xform->cipher.key.data, sess->cipher.key.length,
 			sess->cipher.key.data);
+		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
+			if (EVP_EncryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		} else if (sess->cipher.direction ==
+				RTE_CRYPTO_CIPHER_OP_DECRYPT) {
+			if (EVP_DecryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		}
+
 		break;
 	default:
 		sess->cipher.algo = RTE_CRYPTO_CIPHER_NULL;
@@ -698,12 +731,11 @@ 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, uint8_t *key, int srclen,
-		EVP_CIPHER_CTX *ctx, const EVP_CIPHER *algo)
+		int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx)
 {
 	int totlen;
 
-	if (EVP_EncryptInit_ex(ctx, algo, NULL, key, iv) <= 0)
+	if (EVP_EncryptInit_ex(ctx, NULL, NULL, NULL, iv) <= 0)
 		goto process_cipher_encrypt_err;
 
 	EVP_CIPHER_CTX_set_padding(ctx, 0);
@@ -748,12 +780,11 @@ 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, uint8_t *key, int srclen,
-		EVP_CIPHER_CTX *ctx, const EVP_CIPHER *algo)
+		int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx)
 {
 	int totlen;
 
-	if (EVP_DecryptInit_ex(ctx, algo, NULL, key, iv) <= 0)
+	if (EVP_DecryptInit_ex(ctx, NULL, NULL, NULL, iv) <= 0)
 		goto process_cipher_decrypt_err;
 
 	EVP_CIPHER_CTX_set_padding(ctx, 0);
@@ -1126,15 +1157,11 @@ process_openssl_cipher_op
 		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT)
 			status = process_openssl_cipher_encrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx,
-					sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 		else
 			status = process_openssl_cipher_decrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx,
-					sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 	else
 		status = process_openssl_cipher_des3ctr(mbuf_src, dst,
 				op->sym->cipher.data.offset, iv,
@@ -1178,8 +1205,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op,
 			/* Encrypt with the block aligned stream with CBC mode */
 			status = process_openssl_cipher_encrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx, sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 			if (last_block_len) {
 				/* Point at last block */
 				dst += srclen;
@@ -1229,9 +1255,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op,
 			/* Decrypt with CBC mode */
 			status |= process_openssl_cipher_decrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx,
-					sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 		}
 	}
 
-- 
2.9.3

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v2] crypto/openssl: add openssl path for cross compile
  2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: add openssl path for cross compile Akhil Goyal
@ 2017-08-29  7:02   ` Akhil Goyal
  2017-09-05  8:22     ` De Lara Guarch, Pablo
  2017-09-05  9:02     ` [dpdk-dev] [PATCH v3] " Akhil Goyal
  0 siblings, 2 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-08-29  7:02 UTC (permalink / raw)
  To: dev, pablo.de.lara.guarch; +Cc: hemant.agrawal, declan.doherty, Akhil Goyal

OPENSSL_PATH should be defined in case openssl
driver is cross compiled

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
---
changes in v2:
made changes to support shared build also.

 doc/guides/cryptodevs/openssl.rst | 4 ++++
 drivers/crypto/openssl/Makefile   | 3 ++-
 mk/rte.app.mk                     | 2 +-
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/doc/guides/cryptodevs/openssl.rst b/doc/guides/cryptodevs/openssl.rst
index f18a456..08cc9ba 100644
--- a/doc/guides/cryptodevs/openssl.rst
+++ b/doc/guides/cryptodevs/openssl.rst
@@ -88,6 +88,10 @@ sudo apt-get install libc6-dev-i386 (for i686-native-linuxapp-gcc target)
 This code was also verified on Fedora 24.
 This code was NOT yet verified on FreeBSD.
 
+In case openssl is cross compiled, openssl can be installed separately
+and path for openssl install directory can be given as
+export OPENSSL_PATH=<openssl install dir>
+
 Initialization
 --------------
 
diff --git a/drivers/crypto/openssl/Makefile b/drivers/crypto/openssl/Makefile
index e5fdfb5..2781a76 100644
--- a/drivers/crypto/openssl/Makefile
+++ b/drivers/crypto/openssl/Makefile
@@ -35,6 +35,7 @@ LIB = librte_pmd_openssl.a
 
 # build flags
 CFLAGS += -O3
+CFLAGS += -I${OPENSSL_PATH}/include/
 CFLAGS += $(WERROR_FLAGS)
 
 # library version
@@ -44,7 +45,7 @@ LIBABIVER := 1
 EXPORT_MAP := rte_pmd_openssl_version.map
 
 # external library dependencies
-LDLIBS += -lcrypto
+LDLIBS += -L${OPENSSL_PATH}/lib/ -lcrypto
 
 # library source files
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL) += rte_openssl_pmd.c
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index c25fdd9..ed38f3b 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -151,7 +151,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)    += -lrte_pmd_aesni_mb
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)    += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -lrte_pmd_aesni_gcm
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -lrte_pmd_openssl -lcrypto
+_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -L${OPENSSL_PATH}/lib -lrte_pmd_openssl -lcrypto
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += -lrte_pmd_null_crypto
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT)         += -lrte_pmd_qat -lcrypto
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G)      += -lrte_pmd_snow3g
-- 
2.9.3

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
  2017-07-28 11:07 [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc Akhil Goyal
  2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: add openssl path for cross compile Akhil Goyal
  2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: performance improvements Akhil Goyal
@ 2017-09-04 14:48 ` De Lara Guarch, Pablo
  2017-09-05  5:58   ` Akhil Goyal
  2 siblings, 1 reply; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-09-04 14:48 UTC (permalink / raw)
  To: Akhil Goyal, dev, Doherty, Declan; +Cc: hemant.agrawal



> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Friday, July 28, 2017 12:08 PM
> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
> Subject: [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
> 
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> ---
>  config/defconfig_arm64-dpaa2-linuxapp-gcc | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/config/defconfig_arm64-dpaa2-linuxapp-gcc
> b/config/defconfig_arm64-dpaa2-linuxapp-gcc
> index 8a42944..7de2d4e 100644
> --- a/config/defconfig_arm64-dpaa2-linuxapp-gcc
> +++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc
> @@ -90,3 +90,9 @@
> CONFIG_RTE_DPAA2_SEC_PMD_MAX_NB_SESSIONS=2048
>  #
>  CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=y
>  CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV_DEBUG=n
> +
> +#
> +# Compile PMD for Software backed device #
> +CONFIG_RTE_LIBRTE_PMD_OPENSSL=y
> CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> --
> 2.9.3

Is OpenSSL installed by default in that system, so this can be enabled by default for this target?

Pablo

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs
  2017-08-29  6:58   ` [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
  2017-08-29  6:58     ` [dpdk-dev] [PATCH v2 2/2] crypto/openssl: performance improvements Akhil Goyal
@ 2017-09-04 15:38     ` De Lara Guarch, Pablo
  2017-09-08 14:03     ` De Lara Guarch, Pablo
  2 siblings, 0 replies; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-09-04 15:38 UTC (permalink / raw)
  To: Akhil Goyal, dev; +Cc: hemant.agrawal, Doherty, Declan



> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, August 29, 2017 7:59 AM
> To: dev@dpdk.org; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> Cc: hemant.agrawal@nxp.com; Doherty, Declan
> <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
> Subject: [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs
> 
> in case of HMAC the openssl APIs HMAC_XXX give better performance for
> all HMAC cases as compared with EVP_XXX
> 
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>

Reviewed-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v2 2/2] crypto/openssl: performance improvements
  2017-08-29  6:58     ` [dpdk-dev] [PATCH v2 2/2] crypto/openssl: performance improvements Akhil Goyal
@ 2017-09-04 15:39       ` De Lara Guarch, Pablo
  2017-09-05  5:57       ` [dpdk-dev] [PATCH v3 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
  1 sibling, 0 replies; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-09-04 15:39 UTC (permalink / raw)
  To: Akhil Goyal, dev; +Cc: hemant.agrawal, Doherty, Declan



> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, August 29, 2017 7:59 AM
> To: dev@dpdk.org; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> Cc: hemant.agrawal@nxp.com; Doherty, Declan
> <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
> Subject: [PATCH v2 2/2] crypto/openssl: performance improvements
> 
> key and algo are added in the openssl ctx during session initialization
> instead of adding it for each packet.
> 
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>

Could you modify the title to specify what you are improving?

Apart from that,

Reviewed-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v3 1/2] crypto/openssl: replace evp APIs with HMAC APIs
  2017-08-29  6:58     ` [dpdk-dev] [PATCH v2 2/2] crypto/openssl: performance improvements Akhil Goyal
  2017-09-04 15:39       ` De Lara Guarch, Pablo
@ 2017-09-05  5:57       ` Akhil Goyal
  2017-09-05  5:57         ` [dpdk-dev] [PATCH v3 2/2] crypto/openssl: key and algo updated during session init Akhil Goyal
  1 sibling, 1 reply; 34+ messages in thread
From: Akhil Goyal @ 2017-09-05  5:57 UTC (permalink / raw)
  To: dev, pablo.de.lara.guarch; +Cc: hemant.agrawal, declan.doherty, Akhil Goyal

in case of HMAC the openssl APIs HMAC_XXX give
better performance for all HMAC cases as compared with
EVP_XXX

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Reviewed-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 drivers/crypto/openssl/rte_openssl_pmd.c         | 37 +++++++++++++-----------
 drivers/crypto/openssl/rte_openssl_pmd_private.h |  3 +-
 2 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
index 0bd5f98..889d632 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd.c
+++ b/drivers/crypto/openssl/rte_openssl_pmd.c
@@ -39,6 +39,7 @@
 #include <rte_malloc.h>
 #include <rte_cpuflags.h>
 
+#include <openssl/hmac.h>
 #include <openssl/evp.h>
 
 #include "rte_openssl_pmd_private.h"
@@ -403,12 +404,16 @@ openssl_set_session_auth_parameters(struct openssl_session *sess,
 	case RTE_CRYPTO_AUTH_SHA384_HMAC:
 	case RTE_CRYPTO_AUTH_SHA512_HMAC:
 		sess->auth.mode = OPENSSL_AUTH_AS_HMAC;
-		sess->auth.hmac.ctx = EVP_MD_CTX_create();
+		HMAC_CTX_init(&sess->auth.hmac.ctx);
 		if (get_auth_algo(xform->auth.algo,
 				&sess->auth.hmac.evp_algo) != 0)
 			return -EINVAL;
-		sess->auth.hmac.pkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL,
-				xform->auth.key.data, xform->auth.key.length);
+
+		if (HMAC_Init_ex(&sess->auth.hmac.ctx,
+				xform->auth.key.data,
+				xform->auth.key.length,
+				sess->auth.hmac.evp_algo, NULL) != 1)
+			return -EINVAL;
 		break;
 
 	default:
@@ -547,7 +552,7 @@ openssl_reset_session(struct openssl_session *sess)
 		break;
 	case OPENSSL_AUTH_AS_HMAC:
 		EVP_PKEY_free(sess->auth.hmac.pkey);
-		EVP_MD_CTX_destroy(sess->auth.hmac.ctx);
+		HMAC_CTX_cleanup(&sess->auth.hmac.ctx);
 		break;
 	default:
 		break;
@@ -971,10 +976,9 @@ process_openssl_auth(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
 /** Process standard openssl auth algorithms with hmac */
 static int
 process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
-		__rte_unused uint8_t *iv, EVP_PKEY *pkey,
-		int srclen, EVP_MD_CTX *ctx, const EVP_MD *algo)
+		int srclen, HMAC_CTX *ctx)
 {
-	size_t dstlen;
+	unsigned int dstlen;
 	struct rte_mbuf *m;
 	int l, n = srclen;
 	uint8_t *src;
@@ -986,19 +990,16 @@ process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
 	if (m == 0)
 		goto process_auth_err;
 
-	if (EVP_DigestSignInit(ctx, NULL, algo, NULL, pkey) <= 0)
-		goto process_auth_err;
-
 	src = rte_pktmbuf_mtod_offset(m, uint8_t *, offset);
 
 	l = rte_pktmbuf_data_len(m) - offset;
 	if (srclen <= l) {
-		if (EVP_DigestSignUpdate(ctx, (char *)src, srclen) <= 0)
+		if (HMAC_Update(ctx, (unsigned char *)src, srclen) != 1)
 			goto process_auth_err;
 		goto process_auth_final;
 	}
 
-	if (EVP_DigestSignUpdate(ctx, (char *)src, l) <= 0)
+	if (HMAC_Update(ctx, (unsigned char *)src, l) != 1)
 		goto process_auth_err;
 
 	n -= l;
@@ -1006,13 +1007,16 @@ process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset,
 	for (m = m->next; (m != NULL) && (n > 0); m = m->next) {
 		src = rte_pktmbuf_mtod(m, uint8_t *);
 		l = rte_pktmbuf_data_len(m) < n ? rte_pktmbuf_data_len(m) : n;
-		if (EVP_DigestSignUpdate(ctx, (char *)src, l) <= 0)
+		if (HMAC_Update(ctx, (unsigned char *)src, l) != 1)
 			goto process_auth_err;
 		n -= l;
 	}
 
 process_auth_final:
-	if (EVP_DigestSignFinal(ctx, dst, &dstlen) <= 0)
+	if (HMAC_Final(ctx, dst, &dstlen) != 1)
+		goto process_auth_err;
+
+	if (unlikely(HMAC_Init_ex(ctx, NULL, 0, NULL, NULL) != 1))
 		goto process_auth_err;
 
 	return 0;
@@ -1265,9 +1269,8 @@ process_openssl_auth_op
 		break;
 	case OPENSSL_AUTH_AS_HMAC:
 		status = process_openssl_auth_hmac(mbuf_src, dst,
-				op->sym->auth.data.offset, NULL,
-				sess->auth.hmac.pkey, srclen,
-				sess->auth.hmac.ctx, sess->auth.hmac.evp_algo);
+				op->sym->auth.data.offset, srclen,
+				&sess->auth.hmac.ctx);
 		break;
 	default:
 		status = -1;
diff --git a/drivers/crypto/openssl/rte_openssl_pmd_private.h b/drivers/crypto/openssl/rte_openssl_pmd_private.h
index b7f7475..e36741e 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd_private.h
+++ b/drivers/crypto/openssl/rte_openssl_pmd_private.h
@@ -34,6 +34,7 @@
 #define _OPENSSL_PMD_PRIVATE_H_
 
 #include <openssl/evp.h>
+#include <openssl/hmac.h>
 #include <openssl/des.h>
 
 #define CRYPTODEV_NAME_OPENSSL_PMD	crypto_openssl
@@ -164,7 +165,7 @@ struct openssl_session {
 				/**< pointer to EVP key */
 				const EVP_MD *evp_algo;
 				/**< pointer to EVP algorithm function */
-				EVP_MD_CTX *ctx;
+				HMAC_CTX ctx;
 				/**< pointer to EVP context structure */
 			} hmac;
 		};
-- 
2.9.3

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v3 2/2] crypto/openssl: key and algo updated during session init
  2017-09-05  5:57       ` [dpdk-dev] [PATCH v3 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
@ 2017-09-05  5:57         ` Akhil Goyal
  2017-09-06 10:24           ` De Lara Guarch, Pablo
  0 siblings, 1 reply; 34+ messages in thread
From: Akhil Goyal @ 2017-09-05  5:57 UTC (permalink / raw)
  To: dev, pablo.de.lara.guarch; +Cc: hemant.agrawal, declan.doherty, Akhil Goyal

key and algo are added in the openssl ctx during
session initialization instead of adding it for
each packet.
This would give performance improvement.

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Reviewed-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
changes in v3:
updated patch title
---
 drivers/crypto/openssl/rte_openssl_pmd.c | 58 ++++++++++++++++++++++----------
 1 file changed, 41 insertions(+), 17 deletions(-)

diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c
index 889d632..b11a7fb 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd.c
+++ b/drivers/crypto/openssl/rte_openssl_pmd.c
@@ -308,6 +308,22 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess,
 
 		get_cipher_key(xform->cipher.key.data, sess->cipher.key.length,
 			sess->cipher.key.data);
+		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
+			if (EVP_EncryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		} else if (sess->cipher.direction ==
+				RTE_CRYPTO_CIPHER_OP_DECRYPT) {
+			if (EVP_DecryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		}
 
 		break;
 
@@ -334,6 +350,23 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess,
 
 		get_cipher_key(xform->cipher.key.data, sess->cipher.key.length,
 			sess->cipher.key.data);
+		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
+			if (EVP_EncryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		} else if (sess->cipher.direction ==
+				RTE_CRYPTO_CIPHER_OP_DECRYPT) {
+			if (EVP_DecryptInit_ex(sess->cipher.ctx,
+					sess->cipher.evp_algo,
+					NULL, xform->cipher.key.data,
+					NULL) != 1) {
+				return -EINVAL;
+			}
+		}
+
 		break;
 	default:
 		sess->cipher.algo = RTE_CRYPTO_CIPHER_NULL;
@@ -698,12 +731,11 @@ 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, uint8_t *key, int srclen,
-		EVP_CIPHER_CTX *ctx, const EVP_CIPHER *algo)
+		int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx)
 {
 	int totlen;
 
-	if (EVP_EncryptInit_ex(ctx, algo, NULL, key, iv) <= 0)
+	if (EVP_EncryptInit_ex(ctx, NULL, NULL, NULL, iv) <= 0)
 		goto process_cipher_encrypt_err;
 
 	EVP_CIPHER_CTX_set_padding(ctx, 0);
@@ -748,12 +780,11 @@ 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, uint8_t *key, int srclen,
-		EVP_CIPHER_CTX *ctx, const EVP_CIPHER *algo)
+		int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx)
 {
 	int totlen;
 
-	if (EVP_DecryptInit_ex(ctx, algo, NULL, key, iv) <= 0)
+	if (EVP_DecryptInit_ex(ctx, NULL, NULL, NULL, iv) <= 0)
 		goto process_cipher_decrypt_err;
 
 	EVP_CIPHER_CTX_set_padding(ctx, 0);
@@ -1126,15 +1157,11 @@ process_openssl_cipher_op
 		if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT)
 			status = process_openssl_cipher_encrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx,
-					sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 		else
 			status = process_openssl_cipher_decrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx,
-					sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 	else
 		status = process_openssl_cipher_des3ctr(mbuf_src, dst,
 				op->sym->cipher.data.offset, iv,
@@ -1178,8 +1205,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op,
 			/* Encrypt with the block aligned stream with CBC mode */
 			status = process_openssl_cipher_encrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx, sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 			if (last_block_len) {
 				/* Point at last block */
 				dst += srclen;
@@ -1229,9 +1255,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op,
 			/* Decrypt with CBC mode */
 			status |= process_openssl_cipher_decrypt(mbuf_src, dst,
 					op->sym->cipher.data.offset, iv,
-					sess->cipher.key.data, srclen,
-					sess->cipher.ctx,
-					sess->cipher.evp_algo);
+					srclen, sess->cipher.ctx);
 		}
 	}
 
-- 
2.9.3

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
  2017-09-04 14:48 ` [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc De Lara Guarch, Pablo
@ 2017-09-05  5:58   ` Akhil Goyal
  2017-09-06 10:25     ` De Lara Guarch, Pablo
  0 siblings, 1 reply; 34+ messages in thread
From: Akhil Goyal @ 2017-09-05  5:58 UTC (permalink / raw)
  To: De Lara Guarch, Pablo, dev, Doherty, Declan; +Cc: hemant.agrawal

Hi Pablo,
On 9/4/2017 8:18 PM, De Lara Guarch, Pablo wrote:
> 
> 
>> -----Original Message-----
>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>> Sent: Friday, July 28, 2017 12:08 PM
>> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
>> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
>> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
>> Subject: [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
>>
>> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
>> ---
>>   config/defconfig_arm64-dpaa2-linuxapp-gcc | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/config/defconfig_arm64-dpaa2-linuxapp-gcc
>> b/config/defconfig_arm64-dpaa2-linuxapp-gcc
>> index 8a42944..7de2d4e 100644
>> --- a/config/defconfig_arm64-dpaa2-linuxapp-gcc
>> +++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc
>> @@ -90,3 +90,9 @@
>> CONFIG_RTE_DPAA2_SEC_PMD_MAX_NB_SESSIONS=2048
>>   #
>>   CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=y
>>   CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV_DEBUG=n
>> +
>> +#
>> +# Compile PMD for Software backed device #
>> +CONFIG_RTE_LIBRTE_PMD_OPENSSL=y
>> CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
>> --
>> 2.9.3
> 
> Is OpenSSL installed by default in that system, so this can be enabled by default for this target?
> 
yes this is installed by default.

-Akhil

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v2] crypto/openssl: add openssl path for cross compile
  2017-08-29  7:02   ` [dpdk-dev] [PATCH v2] " Akhil Goyal
@ 2017-09-05  8:22     ` De Lara Guarch, Pablo
  2017-09-05  8:37       ` Akhil Goyal
  2017-09-05  9:02     ` [dpdk-dev] [PATCH v3] " Akhil Goyal
  1 sibling, 1 reply; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-09-05  8:22 UTC (permalink / raw)
  To: Akhil Goyal, dev; +Cc: hemant.agrawal, Doherty, Declan

Hi Akhil,

> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, August 29, 2017 8:02 AM
> To: dev@dpdk.org; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> Cc: hemant.agrawal@nxp.com; Doherty, Declan
> <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
> Subject: [PATCH v2] crypto/openssl: add openssl path for cross compile
> 
> OPENSSL_PATH should be defined in case openssl driver is cross compiled
> 
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> ---

...

> --- a/mk/rte.app.mk
> +++ b/mk/rte.app.mk
> @@ -151,7 +151,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)
> += -lrte_pmd_aesni_mb
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)    += -
> L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -
> lrte_pmd_aesni_gcm
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -
> L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
> -_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -lrte_pmd_openssl -
> lcrypto
> +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -
> L${OPENSSL_PATH}/lib -lrte_pmd_openssl -lcrypto

I am getting the following messages when compiling:

/usr/bin/ld: skipping incompatible /lib/libcrypto.so when searching for -lcrypto
/usr/bin/ld: skipping incompatible /lib/librt.so when searching for -lrt
/usr/bin/ld: skipping incompatible /lib/libm.so when searching for -lm

Since, OPENSSL_PATH is not defined in my system, it is trying to link against libraries in /lib/.
I suggest adding a condition to add the openssl directory only if OPENSSL_PATH is defined:

+ifeq ($(OPENSSL_PATH),)
+_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -lrte_pmd_openssl -lcrypto
+else
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -L${OPENSSL_PATH}/lib -lrte_pmd_openssl -lcrypto
+endif

Would this work for you?

Thanks,
Pablo

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v2] crypto/openssl: add openssl path for cross compile
  2017-09-05  8:22     ` De Lara Guarch, Pablo
@ 2017-09-05  8:37       ` Akhil Goyal
  0 siblings, 0 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-09-05  8:37 UTC (permalink / raw)
  To: De Lara Guarch, Pablo, dev; +Cc: hemant.agrawal, Doherty, Declan

Hi Pablo,
On 9/5/2017 1:52 PM, De Lara Guarch, Pablo wrote:
> Hi Akhil,
> 
>> -----Original Message-----
>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>> Sent: Tuesday, August 29, 2017 8:02 AM
>> To: dev@dpdk.org; De Lara Guarch, Pablo
>> <pablo.de.lara.guarch@intel.com>
>> Cc: hemant.agrawal@nxp.com; Doherty, Declan
>> <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
>> Subject: [PATCH v2] crypto/openssl: add openssl path for cross compile
>>
>> OPENSSL_PATH should be defined in case openssl driver is cross compiled
>>
>> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
>> ---
> 
> ...
> 
>> --- a/mk/rte.app.mk
>> +++ b/mk/rte.app.mk
>> @@ -151,7 +151,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)
>> += -lrte_pmd_aesni_mb
>>   _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)    += -
>> L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
>>   _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -
>> lrte_pmd_aesni_gcm
>>   _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -
>> L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
>> -_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -lrte_pmd_openssl -
>> lcrypto
>> +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -
>> L${OPENSSL_PATH}/lib -lrte_pmd_openssl -lcrypto
> 
> I am getting the following messages when compiling:
> 
> /usr/bin/ld: skipping incompatible /lib/libcrypto.so when searching for -lcrypto
> /usr/bin/ld: skipping incompatible /lib/librt.so when searching for -lrt
> /usr/bin/ld: skipping incompatible /lib/libm.so when searching for -lm
> 
> Since, OPENSSL_PATH is not defined in my system, it is trying to link against libraries in /lib/.
> I suggest adding a condition to add the openssl directory only if OPENSSL_PATH is defined:
> 
> +ifeq ($(OPENSSL_PATH),)
> +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -lrte_pmd_openssl -lcrypto
> +else
>   _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -L${OPENSSL_PATH}/lib -lrte_pmd_openssl -lcrypto
> +endif
> 
> Would this work for you?
> 
Thanks for the suggestion.
yes this would be fine. I will update the patch accordingly.

-Akhil

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v3] crypto/openssl: add openssl path for cross compile
  2017-08-29  7:02   ` [dpdk-dev] [PATCH v2] " Akhil Goyal
  2017-09-05  8:22     ` De Lara Guarch, Pablo
@ 2017-09-05  9:02     ` Akhil Goyal
  2017-09-06  9:26       ` De Lara Guarch, Pablo
                         ` (2 more replies)
  1 sibling, 3 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-09-05  9:02 UTC (permalink / raw)
  To: dev, pablo.de.lara.guarch; +Cc: hemant.agrawal, declan.doherty, Akhil Goyal

OPENSSL_PATH should be defined in case openssl
driver is cross compiled

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
---
changes in v3:
make OPENSSL_PATH usage conditional if it is not set as suggested by Pablo
 doc/guides/cryptodevs/openssl.rst | 4 ++++
 drivers/crypto/openssl/Makefile   | 7 +++++++
 mk/rte.app.mk                     | 4 ++++
 3 files changed, 15 insertions(+)

diff --git a/doc/guides/cryptodevs/openssl.rst b/doc/guides/cryptodevs/openssl.rst
index f18a456..08cc9ba 100644
--- a/doc/guides/cryptodevs/openssl.rst
+++ b/doc/guides/cryptodevs/openssl.rst
@@ -88,6 +88,10 @@ sudo apt-get install libc6-dev-i386 (for i686-native-linuxapp-gcc target)
 This code was also verified on Fedora 24.
 This code was NOT yet verified on FreeBSD.
 
+In case openssl is cross compiled, openssl can be installed separately
+and path for openssl install directory can be given as
+export OPENSSL_PATH=<openssl install dir>
+
 Initialization
 --------------
 
diff --git a/drivers/crypto/openssl/Makefile b/drivers/crypto/openssl/Makefile
index e5fdfb5..a6f13e0 100644
--- a/drivers/crypto/openssl/Makefile
+++ b/drivers/crypto/openssl/Makefile
@@ -35,6 +35,9 @@ LIB = librte_pmd_openssl.a
 
 # build flags
 CFLAGS += -O3
+ifneq ($(OPENSSL_PATH),)
+CFLAGS += -I${OPENSSL_PATH}/include/
+endif
 CFLAGS += $(WERROR_FLAGS)
 
 # library version
@@ -44,7 +47,11 @@ LIBABIVER := 1
 EXPORT_MAP := rte_pmd_openssl_version.map
 
 # external library dependencies
+ifneq ($(OPENSSL_PATH),)
+LDLIBS += -L${OPENSSL_PATH}/lib/ -lcrypto
+else
 LDLIBS += -lcrypto
+endif
 
 # library source files
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL) += rte_openssl_pmd.c
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index c25fdd9..799aa99 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -151,7 +151,11 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)    += -lrte_pmd_aesni_mb
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB)    += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -lrte_pmd_aesni_gcm
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM)   += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
+ifeq ($(OPENSSL_PATH),)
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -lrte_pmd_openssl -lcrypto
+else
+_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL)     += -L${OPENSSL_PATH}/lib -lrte_pmd_openssl -lcrypto
+endif # ($(OPENSSL_PATH),)
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += -lrte_pmd_null_crypto
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT)         += -lrte_pmd_qat -lcrypto
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G)      += -lrte_pmd_snow3g
-- 
2.9.3

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v3] crypto/openssl: add openssl path for cross compile
  2017-09-05  9:02     ` [dpdk-dev] [PATCH v3] " Akhil Goyal
@ 2017-09-06  9:26       ` De Lara Guarch, Pablo
  2017-09-06 10:15       ` De Lara Guarch, Pablo
  2017-10-12 13:06       ` Thomas Monjalon
  2 siblings, 0 replies; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-09-06  9:26 UTC (permalink / raw)
  To: Akhil Goyal, dev; +Cc: hemant.agrawal, Doherty, Declan



> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, September 5, 2017 10:03 AM
> To: dev@dpdk.org; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> Cc: hemant.agrawal@nxp.com; Doherty, Declan
> <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
> Subject: [PATCH v3] crypto/openssl: add openssl path for cross compile
> 
> OPENSSL_PATH should be defined in case openssl driver is cross compiled
> 
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>

Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v3] crypto/openssl: add openssl path for cross compile
  2017-09-05  9:02     ` [dpdk-dev] [PATCH v3] " Akhil Goyal
  2017-09-06  9:26       ` De Lara Guarch, Pablo
@ 2017-09-06 10:15       ` De Lara Guarch, Pablo
  2017-10-12 13:06       ` Thomas Monjalon
  2 siblings, 0 replies; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-09-06 10:15 UTC (permalink / raw)
  To: Akhil Goyal, dev; +Cc: hemant.agrawal, Doherty, Declan



> -----Original Message-----
> From: De Lara Guarch, Pablo
> Sent: Wednesday, September 6, 2017 10:27 AM
> To: 'Akhil Goyal' <akhil.goyal@nxp.com>; dev@dpdk.org
> Cc: hemant.agrawal@nxp.com; Doherty, Declan
> <declan.doherty@intel.com>
> Subject: RE: [PATCH v3] crypto/openssl: add openssl path for cross compile
> 
> 
> 
> > -----Original Message-----
> > From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> > Sent: Tuesday, September 5, 2017 10:03 AM
> > To: dev@dpdk.org; De Lara Guarch, Pablo
> > <pablo.de.lara.guarch@intel.com>
> > Cc: hemant.agrawal@nxp.com; Doherty, Declan
> > <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
> > Subject: [PATCH v3] crypto/openssl: add openssl path for cross compile
> >
> > OPENSSL_PATH should be defined in case openssl driver is cross
> > compiled
> >
> > Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> 
> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

Applied to dpdk-next-crypto.
Thanks,

Pablo

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v3 2/2] crypto/openssl: key and algo updated during session init
  2017-09-05  5:57         ` [dpdk-dev] [PATCH v3 2/2] crypto/openssl: key and algo updated during session init Akhil Goyal
@ 2017-09-06 10:24           ` De Lara Guarch, Pablo
  0 siblings, 0 replies; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-09-06 10:24 UTC (permalink / raw)
  To: Akhil Goyal, dev; +Cc: hemant.agrawal, Doherty, Declan



> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, September 5, 2017 6:58 AM
> To: dev@dpdk.org; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> Cc: hemant.agrawal@nxp.com; Doherty, Declan
> <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
> Subject: [PATCH v3 2/2] crypto/openssl: key and algo updated during
> session init
> 
> key and algo are added in the openssl ctx during session initialization
> instead of adding it for each packet.
> This would give performance improvement.
> 
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> Reviewed-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> changes in
> v3:
> updated patch title

Applied to dpdk-next-crypto.
Thanks,

Pablo

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
  2017-09-05  5:58   ` Akhil Goyal
@ 2017-09-06 10:25     ` De Lara Guarch, Pablo
  2017-10-12 13:01       ` Thomas Monjalon
  0 siblings, 1 reply; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-09-06 10:25 UTC (permalink / raw)
  To: Akhil Goyal, dev, Doherty, Declan; +Cc: hemant.agrawal



> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, September 5, 2017 6:59 AM
> To: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
> dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
> Cc: hemant.agrawal@nxp.com
> Subject: Re: [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
> 
> Hi Pablo,
> On 9/4/2017 8:18 PM, De Lara Guarch, Pablo wrote:
> >
> >
> >> -----Original Message-----
> >> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> >> Sent: Friday, July 28, 2017 12:08 PM
> >> To: dev@dpdk.org; Doherty, Declan <declan.doherty@intel.com>
> >> Cc: De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>;
> >> hemant.agrawal@nxp.com; Akhil Goyal <akhil.goyal@nxp.com>
> >> Subject: [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
> >>
> >> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> >> ---
> >>   config/defconfig_arm64-dpaa2-linuxapp-gcc | 6 ++++++
> >>   1 file changed, 6 insertions(+)
> >>
> >> diff --git a/config/defconfig_arm64-dpaa2-linuxapp-gcc
> >> b/config/defconfig_arm64-dpaa2-linuxapp-gcc
> >> index 8a42944..7de2d4e 100644
> >> --- a/config/defconfig_arm64-dpaa2-linuxapp-gcc
> >> +++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc
> >> @@ -90,3 +90,9 @@
> >> CONFIG_RTE_DPAA2_SEC_PMD_MAX_NB_SESSIONS=2048
> >>   #
> >>   CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=y
> >>   CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV_DEBUG=n
> >> +
> >> +#
> >> +# Compile PMD for Software backed device #
> >> +CONFIG_RTE_LIBRTE_PMD_OPENSSL=y
> >> CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> >> --
> >> 2.9.3
> >
> > Is OpenSSL installed by default in that system, so this can be enabled by
> default for this target?
> >
> yes this is installed by default.

Thanks for the reply.

Applied to dpdk-next-crypto.
Thanks,

Pablo
> 
> -Akhil


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs
  2017-08-29  6:58   ` [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
  2017-08-29  6:58     ` [dpdk-dev] [PATCH v2 2/2] crypto/openssl: performance improvements Akhil Goyal
  2017-09-04 15:38     ` [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs De Lara Guarch, Pablo
@ 2017-09-08 14:03     ` De Lara Guarch, Pablo
  2017-09-11  8:41       ` Akhil Goyal
  2017-09-20  9:56       ` Akhil Goyal
  2 siblings, 2 replies; 34+ messages in thread
From: De Lara Guarch, Pablo @ 2017-09-08 14:03 UTC (permalink / raw)
  To: Akhil Goyal, dev; +Cc: hemant.agrawal, Doherty, Declan

Hi Akhil,

> -----Original Message-----
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> Sent: Tuesday, August 29, 2017 7:59 AM
> To: dev@dpdk.org; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> Cc: hemant.agrawal@nxp.com; Doherty, Declan
> <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
> Subject: [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs
> 
> in case of HMAC the openssl APIs HMAC_XXX give better performance for
> all HMAC cases as compared with EVP_XXX
> 
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
> ---
> changes in v2:
> patch split in two patches as per Pablo's recommendations
> 
>  drivers/crypto/openssl/rte_openssl_pmd.c         | 37 +++++++++++++-------

I just come across an issue with this patch on openssl 1.1.0 (below).
Unfortunately, I have already applied the patch in the subtree, but if you could send a patch to fix this,
I can integrate as part of that patch.

Thanks,
Pablo

drivers/crypto/openssl/rte_openssl_pmd_private.h:168:14: error: field 'ctx' has incomplete type
     HMAC_CTX ctx;
              ^~~
In file included from drivers/crypto/openssl/rte_openssl_pmd_ops.c:39:0:
drivers/crypto/openssl/rte_openssl_pmd_private.h:168:14: error: field 'ctx' has incomplete type
     HMAC_CTX ctx;
              ^~~
drivers/crypto/openssl/rte_openssl_pmd.c: In function 'openssl_set_session_auth_parameters':
drivers/crypto/openssl/rte_openssl_pmd.c:440:3: error: implicit declaration of function 'HMAC_CTX_init'; did you mean 'HMAC_CTX_new'? [-Werror=implicit-function-declaration]
   HMAC_CTX_init(&sess->auth.hmac.ctx);
   ^~~~~~~~~~~~~
   HMAC_CTX_new

drivers/crypto/openssl/rte_openssl_pmd.c:440:3: error: nested extern declaration of 'HMAC_CTX_init' [-Werror=nested-externs]
make[4]: *** [mk/internal/rte.compile-pre.mk:140: rte_openssl_pmd_ops.o] Error 1
make[4]: *** Waiting for unfinished jobs....
drivers/crypto/openssl/rte_openssl_pmd.c: In function 'openssl_reset_session':
drivers/crypto/openssl/rte_openssl_pmd.c:588:3: error: implicit declaration of function 'HMAC_CTX_cleanup'; did you mean 'HMAC_CTX_get_md'? [-Werror=implicit-function-declaration]
   HMAC_CTX_cleanup(&sess->auth.hmac.ctx);
   ^~~~~~~~~~~~~~~~
   HMAC_CTX_get_md
drivers/crypto/openssl/rte_openssl_pmd.c:588:3: error: nested extern declaration of 'HMAC_CTX_cleanup' [-Werror=nested-externs]
cc1: all warnings being treated as errors
make[4]: *** [mk/internal/rte.compile-pre.mk:140: rte_openssl_pmd.o] Error 1

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs
  2017-09-08 14:03     ` De Lara Guarch, Pablo
@ 2017-09-11  8:41       ` Akhil Goyal
  2017-09-20  9:56       ` Akhil Goyal
  1 sibling, 0 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-09-11  8:41 UTC (permalink / raw)
  To: De Lara Guarch, Pablo, dev; +Cc: hemant.agrawal, Doherty, Declan

Hi Pablo,
On 9/8/2017 7:33 PM, De Lara Guarch, Pablo wrote:
> Hi Akhil,
> 
>> -----Original Message-----
>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>> Sent: Tuesday, August 29, 2017 7:59 AM
>> To: dev@dpdk.org; De Lara Guarch, Pablo
>> <pablo.de.lara.guarch@intel.com>
>> Cc: hemant.agrawal@nxp.com; Doherty, Declan
>> <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
>> Subject: [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs
>>
>> in case of HMAC the openssl APIs HMAC_XXX give better performance for
>> all HMAC cases as compared with EVP_XXX
>>
>> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
>> ---
>> changes in v2:
>> patch split in two patches as per Pablo's recommendations
>>
>>   drivers/crypto/openssl/rte_openssl_pmd.c         | 37 +++++++++++++-------
> 
> I just come across an issue with this patch on openssl 1.1.0 (below).
> Unfortunately, I have already applied the patch in the subtree, but if you could send a patch to fix this,
> I can integrate as part of that patch.
> 
> Thanks,
> Pablo
> 
> drivers/crypto/openssl/rte_openssl_pmd_private.h:168:14: error: field 'ctx' has incomplete type
>       HMAC_CTX ctx;
>                ^~~
> In file included from drivers/crypto/openssl/rte_openssl_pmd_ops.c:39:0:
> drivers/crypto/openssl/rte_openssl_pmd_private.h:168:14: error: field 'ctx' has incomplete type
>       HMAC_CTX ctx;
>                ^~~
> drivers/crypto/openssl/rte_openssl_pmd.c: In function 'openssl_set_session_auth_parameters':
> drivers/crypto/openssl/rte_openssl_pmd.c:440:3: error: implicit declaration of function 'HMAC_CTX_init'; did you mean 'HMAC_CTX_new'? [-Werror=implicit-function-declaration]
>     HMAC_CTX_init(&sess->auth.hmac.ctx);
>     ^~~~~~~~~~~~~
>     HMAC_CTX_new
> 
> drivers/crypto/openssl/rte_openssl_pmd.c:440:3: error: nested extern declaration of 'HMAC_CTX_init' [-Werror=nested-externs]
> make[4]: *** [mk/internal/rte.compile-pre.mk:140: rte_openssl_pmd_ops.o] Error 1
> make[4]: *** Waiting for unfinished jobs....
> drivers/crypto/openssl/rte_openssl_pmd.c: In function 'openssl_reset_session':
> drivers/crypto/openssl/rte_openssl_pmd.c:588:3: error: implicit declaration of function 'HMAC_CTX_cleanup'; did you mean 'HMAC_CTX_get_md'? [-Werror=implicit-function-declaration]
>     HMAC_CTX_cleanup(&sess->auth.hmac.ctx);
>     ^~~~~~~~~~~~~~~~
>     HMAC_CTX_get_md
> drivers/crypto/openssl/rte_openssl_pmd.c:588:3: error: nested extern declaration of 'HMAC_CTX_cleanup' [-Werror=nested-externs]
> cc1: all warnings being treated as errors
> make[4]: *** [mk/internal/rte.compile-pre.mk:140: rte_openssl_pmd.o] Error 1
> 

I will look into this and will send the patch ASAP.

Regards,
Akhil

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs
  2017-09-08 14:03     ` De Lara Guarch, Pablo
  2017-09-11  8:41       ` Akhil Goyal
@ 2017-09-20  9:56       ` Akhil Goyal
  1 sibling, 0 replies; 34+ messages in thread
From: Akhil Goyal @ 2017-09-20  9:56 UTC (permalink / raw)
  To: De Lara Guarch, Pablo, dev; +Cc: hemant.agrawal, Doherty, Declan

Hi Pablo,

On 9/8/2017 7:33 PM, De Lara Guarch, Pablo wrote:
> Hi Akhil,
> 
>> -----Original Message-----
>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>> Sent: Tuesday, August 29, 2017 7:59 AM
>> To: dev@dpdk.org; De Lara Guarch, Pablo
>> <pablo.de.lara.guarch@intel.com>
>> Cc: hemant.agrawal@nxp.com; Doherty, Declan
>> <declan.doherty@intel.com>; Akhil Goyal <akhil.goyal@nxp.com>
>> Subject: [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs
>>
>> in case of HMAC the openssl APIs HMAC_XXX give better performance for
>> all HMAC cases as compared with EVP_XXX
>>
>> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
>> ---
>> changes in v2:
>> patch split in two patches as per Pablo's recommendations
>>
>>   drivers/crypto/openssl/rte_openssl_pmd.c         | 37 +++++++++++++-------
> 
> I just come across an issue with this patch on openssl 1.1.0 (below).
> Unfortunately, I have already applied the patch in the subtree, but if you could send a patch to fix this,
> I can integrate as part of that patch.
> 
I have sent a patch to fix this.
http://dpdk.org/dev/patchwork/patch/28995/

Thanks,
Akhil

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
  2017-09-06 10:25     ` De Lara Guarch, Pablo
@ 2017-10-12 13:01       ` Thomas Monjalon
  2017-10-12 13:32         ` Hemant Agrawal
  0 siblings, 1 reply; 34+ messages in thread
From: Thomas Monjalon @ 2017-10-12 13:01 UTC (permalink / raw)
  To: De Lara Guarch, Pablo, Akhil Goyal; +Cc: dev, Doherty, Declan, hemant.agrawal

06/09/2017 12:25, De Lara Guarch, Pablo:
> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> > 
> > Hi Pablo,
> > On 9/4/2017 8:18 PM, De Lara Guarch, Pablo wrote:
> > > From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
> > >> --- a/config/defconfig_arm64-dpaa2-linuxapp-gcc
> > >> +++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc
> > >> @@ -90,3 +90,9 @@
> > >> CONFIG_RTE_DPAA2_SEC_PMD_MAX_NB_SESSIONS=2048
> > >>   #
> > >>   CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=y
> > >>   CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV_DEBUG=n
> > >> +
> > >> +#
> > >> +# Compile PMD for Software backed device #
> > >> +CONFIG_RTE_LIBRTE_PMD_OPENSSL=y
> > >> CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> > >> --
> > >> 2.9.3
> > >
> > > Is OpenSSL installed by default in that system, so this can be enabled by
> > default for this target?
> > >
> > yes this is installed by default.
> 
> Thanks for the reply.
> 
> Applied to dpdk-next-crypto.
> Thanks,

Where is it installed by default?
On your machine? In your build system?
It is at least not installed on my machine when I compile this target.

This file is a defconfig, not your preferred config.

This patch should be dropped.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v3] crypto/openssl: add openssl path for cross compile
  2017-09-05  9:02     ` [dpdk-dev] [PATCH v3] " Akhil Goyal
  2017-09-06  9:26       ` De Lara Guarch, Pablo
  2017-09-06 10:15       ` De Lara Guarch, Pablo
@ 2017-10-12 13:06       ` Thomas Monjalon
  2017-10-12 13:31         ` Hemant Agrawal
  2 siblings, 1 reply; 34+ messages in thread
From: Thomas Monjalon @ 2017-10-12 13:06 UTC (permalink / raw)
  To: Akhil Goyal, pablo.de.lara.guarch; +Cc: dev, hemant.agrawal, declan.doherty

05/09/2017 11:02, Akhil Goyal:
> OPENSSL_PATH should be defined in case openssl
> driver is cross compiled

No: in case OpenSSL cannot be found automatically,
you should use EXTRA_CFLAGS and EXTRA_LDFLAGS.

It is the same for other standard dependencies like
libnuma, libpcap, libzip, etc.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v3] crypto/openssl: add openssl path for cross compile
  2017-10-12 13:06       ` Thomas Monjalon
@ 2017-10-12 13:31         ` Hemant Agrawal
  2017-10-12 13:34           ` Thomas Monjalon
  0 siblings, 1 reply; 34+ messages in thread
From: Hemant Agrawal @ 2017-10-12 13:31 UTC (permalink / raw)
  To: Thomas Monjalon, Akhil Goyal, pablo.de.lara.guarch; +Cc: dev, declan.doherty

On 10/12/2017 6:36 PM, Thomas Monjalon wrote:
> 05/09/2017 11:02, Akhil Goyal:
>> OPENSSL_PATH should be defined in case openssl
>> driver is cross compiled
>
> No: in case OpenSSL cannot be found automatically,
> you should use EXTRA_CFLAGS and EXTRA_LDFLAGS.
>
> It is the same for other standard dependencies like
> libnuma, libpcap, libzip, etc.
>
Pablo/Thomas,
	We are ok to drop this patch.

Regards,
Hemant

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc
  2017-10-12 13:01       ` Thomas Monjalon
@ 2017-10-12 13:32         ` Hemant Agrawal
  0 siblings, 0 replies; 34+ messages in thread
From: Hemant Agrawal @ 2017-10-12 13:32 UTC (permalink / raw)
  To: Thomas Monjalon, De Lara Guarch, Pablo, Akhil Goyal; +Cc: dev, Doherty, Declan

On 10/12/2017 6:31 PM, Thomas Monjalon wrote:
> 06/09/2017 12:25, De Lara Guarch, Pablo:
>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>>>
>>> Hi Pablo,
>>> On 9/4/2017 8:18 PM, De Lara Guarch, Pablo wrote:
>>>> From: Akhil Goyal [mailto:akhil.goyal@nxp.com]
>>>>> --- a/config/defconfig_arm64-dpaa2-linuxapp-gcc
>>>>> +++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc
>>>>> @@ -90,3 +90,9 @@
>>>>> CONFIG_RTE_DPAA2_SEC_PMD_MAX_NB_SESSIONS=2048
>>>>>   #
>>>>>   CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=y
>>>>>   CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV_DEBUG=n
>>>>> +
>>>>> +#
>>>>> +# Compile PMD for Software backed device #
>>>>> +CONFIG_RTE_LIBRTE_PMD_OPENSSL=y
>>>>> CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
>>>>> --
>>>>> 2.9.3
>>>>
>>>> Is OpenSSL installed by default in that system, so this can be enabled by
>>> default for this target?
>>>>
>>> yes this is installed by default.
>>
>> Thanks for the reply.
>>
>> Applied to dpdk-next-crypto.
>> Thanks,
>
> Where is it installed by default?
> On your machine? In your build system?
> It is at least not installed on my machine when I compile this target.
>
> This file is a defconfig, not your preferred config.
>
> This patch should be dropped.
>
ok to drop.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v3] crypto/openssl: add openssl path for cross compile
  2017-10-12 13:31         ` Hemant Agrawal
@ 2017-10-12 13:34           ` Thomas Monjalon
  0 siblings, 0 replies; 34+ messages in thread
From: Thomas Monjalon @ 2017-10-12 13:34 UTC (permalink / raw)
  To: Hemant Agrawal; +Cc: Akhil Goyal, pablo.de.lara.guarch, dev, declan.doherty

12/10/2017 15:31, Hemant Agrawal:
> On 10/12/2017 6:36 PM, Thomas Monjalon wrote:
> > 05/09/2017 11:02, Akhil Goyal:
> >> OPENSSL_PATH should be defined in case openssl
> >> driver is cross compiled
> >
> > No: in case OpenSSL cannot be found automatically,
> > you should use EXTRA_CFLAGS and EXTRA_LDFLAGS.
> >
> > It is the same for other standard dependencies like
> > libnuma, libpcap, libzip, etc.
> >
> Pablo/Thomas,
> 	We are ok to drop this patch.

OK, thanks a lot for confirming. Appreciated

^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2017-10-12 13:34 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-28 11:07 [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc Akhil Goyal
2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: add openssl path for cross compile Akhil Goyal
2017-08-29  7:02   ` [dpdk-dev] [PATCH v2] " Akhil Goyal
2017-09-05  8:22     ` De Lara Guarch, Pablo
2017-09-05  8:37       ` Akhil Goyal
2017-09-05  9:02     ` [dpdk-dev] [PATCH v3] " Akhil Goyal
2017-09-06  9:26       ` De Lara Guarch, Pablo
2017-09-06 10:15       ` De Lara Guarch, Pablo
2017-10-12 13:06       ` Thomas Monjalon
2017-10-12 13:31         ` Hemant Agrawal
2017-10-12 13:34           ` Thomas Monjalon
2017-07-28 11:07 ` [dpdk-dev] [PATCH] crypto/openssl: performance improvements Akhil Goyal
2017-07-28 11:58   ` De Lara Guarch, Pablo
2017-07-28 12:02     ` Akhil Goyal
2017-07-28 12:07       ` De Lara Guarch, Pablo
2017-08-14 14:17   ` De Lara Guarch, Pablo
2017-08-15  6:44     ` Akhil Goyal
2017-08-15  7:26       ` De Lara Guarch, Pablo
2017-08-16  7:03         ` Akhil Goyal
2017-08-29  6:58   ` [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
2017-08-29  6:58     ` [dpdk-dev] [PATCH v2 2/2] crypto/openssl: performance improvements Akhil Goyal
2017-09-04 15:39       ` De Lara Guarch, Pablo
2017-09-05  5:57       ` [dpdk-dev] [PATCH v3 1/2] crypto/openssl: replace evp APIs with HMAC APIs Akhil Goyal
2017-09-05  5:57         ` [dpdk-dev] [PATCH v3 2/2] crypto/openssl: key and algo updated during session init Akhil Goyal
2017-09-06 10:24           ` De Lara Guarch, Pablo
2017-09-04 15:38     ` [dpdk-dev] [PATCH v2 1/2] crypto/openssl: replace evp APIs with HMAC APIs De Lara Guarch, Pablo
2017-09-08 14:03     ` De Lara Guarch, Pablo
2017-09-11  8:41       ` Akhil Goyal
2017-09-20  9:56       ` Akhil Goyal
2017-09-04 14:48 ` [dpdk-dev] [PATCH] config: add openssl in arm64-dpaa2-linuxapp-gcc De Lara Guarch, Pablo
2017-09-05  5:58   ` Akhil Goyal
2017-09-06 10:25     ` De Lara Guarch, Pablo
2017-10-12 13:01       ` Thomas Monjalon
2017-10-12 13:32         ` Hemant Agrawal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).