* [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).