* [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update @ 2019-12-10 8:28 Ruifeng Wang 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 1/3] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang ` (5 more replies) 0 siblings, 6 replies; 20+ messages in thread From: Ruifeng Wang @ 2019-12-10 8:28 UTC (permalink / raw) To: gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Maintainance of armv8_crypto library created by Marvell/Cavium will be discontinued. Going forward, Armv8 crypto PMD will link to AArch64 crypto library hosted by Arm. Patch 1/3, 2/3 update source code and document respectively to reflect the change. Patch 3/3 fixed Clang build issue when Armv8 crypto PMD is enabled. Ruifeng Wang (3): crypto/armv8: link PMD to crypto library hosted by Arm doc: update link to the crypto library for armv8 PMD crypto/armv8: fix clang build doc/guides/cryptodevs/armv8.rst | 7 ++- drivers/crypto/armv8/Makefile | 3 +- drivers/crypto/armv8/armv8_pmd_private.h | 4 +- drivers/crypto/armv8/rte_armv8_pmd.c | 55 ++++++++++++++++-------- drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 - mk/rte.app.mk | 2 +- 6 files changed, 44 insertions(+), 29 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [RFC PATCH 1/3] crypto/armv8: link PMD to crypto library hosted by Arm 2019-12-10 8:28 [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Ruifeng Wang @ 2019-12-10 8:28 ` Ruifeng Wang 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 2/3] doc: update link to the crypto library for armv8 PMD Ruifeng Wang ` (4 subsequent siblings) 5 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2019-12-10 8:28 UTC (permalink / raw) To: gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Armv8 crypto PMD linked to armv8_crypto library created by Marvell. Maintenance of armv8_crypto library will be discontinued. Change Armv8 PMD to link to AArch64 crypto library hosted by Arm. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com> --- drivers/crypto/armv8/Makefile | 3 +- drivers/crypto/armv8/armv8_pmd_private.h | 4 ++- drivers/crypto/armv8/rte_armv8_pmd.c | 40 ++++++++++++++---------- drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 -- mk/rte.app.mk | 2 +- 5 files changed, 29 insertions(+), 22 deletions(-) diff --git a/drivers/crypto/armv8/Makefile b/drivers/crypto/armv8/Makefile index 125283664..7f20a28d4 100644 --- a/drivers/crypto/armv8/Makefile +++ b/drivers/crypto/armv8/Makefile @@ -24,9 +24,8 @@ EXPORT_MAP := rte_pmd_armv8_version.map # external library dependencies CFLAGS += -I$(ARMV8_CRYPTO_LIB_PATH) -CFLAGS += -I$(ARMV8_CRYPTO_LIB_PATH)/asm/include CFLAGS += -DALLOW_EXPERIMENTAL_API -LDLIBS += -L$(ARMV8_CRYPTO_LIB_PATH) -larmv8_crypto +LDLIBS += -L$(ARMV8_CRYPTO_LIB_PATH) -lAArch64crypto LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_cryptodev LDLIBS += -lrte_bus_vdev diff --git a/drivers/crypto/armv8/armv8_pmd_private.h b/drivers/crypto/armv8/armv8_pmd_private.h index 24040dda2..9caf9e13f 100644 --- a/drivers/crypto/armv8/armv8_pmd_private.h +++ b/drivers/crypto/armv8/armv8_pmd_private.h @@ -5,6 +5,8 @@ #ifndef _ARMV8_PMD_PRIVATE_H_ #define _ARMV8_PMD_PRIVATE_H_ +#include "AArch64cryptolib.h" + #define CRYPTODEV_NAME_ARMV8_PMD crypto_armv8 /**< ARMv8 Crypto PMD device name */ @@ -98,7 +100,7 @@ enum armv8_crypto_auth_mode { typedef int (*crypto_func_t)(uint8_t *, uint8_t *, uint64_t, uint8_t *, uint8_t *, uint64_t, - crypto_arg_t *); + AArch64crypto_cipher_digest_t *); typedef void (*crypto_key_sched_t)(uint8_t *, const uint8_t *); diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c index 7dc83e69e..2b2c5a3bf 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd.c +++ b/drivers/crypto/armv8/rte_armv8_pmd.c @@ -12,7 +12,7 @@ #include <rte_malloc.h> #include <rte_cpuflags.h> -#include "armv8_crypto_defs.h" +#include "AArch64cryptolib.h" #include "armv8_pmd_private.h" @@ -78,8 +78,10 @@ crypto_func_tbl_t[CRYPTO_CIPHER_MAX][CRYPTO_AUTH_MAX][CRYPTO_CIPHER_KEYLEN_MAX]; static const crypto_func_tbl_t crypto_op_ca_encrypt = { /* [cipher alg][auth alg][key length] = crypto_function, */ - [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = aes128cbc_sha1_hmac, - [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = aes128cbc_sha256_hmac, + [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = + AArch64crypto_encrypt_aes128cbc_sha1, + [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = + AArch64crypto_encrypt_aes128cbc_sha256, }; static const crypto_func_tbl_t @@ -95,8 +97,10 @@ crypto_op_ac_encrypt = { static const crypto_func_tbl_t crypto_op_ac_decrypt = { /* [cipher alg][auth alg][key length] = crypto_function, */ - [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = sha1_hmac_aes128cbc_dec, - [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = sha256_hmac_aes128cbc_dec, + [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = + AArch64crypto_decrypt_aes128cbc_sha1, + [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = + AArch64crypto_decrypt_aes128cbc_sha256, }; /** @@ -155,13 +159,13 @@ crypto_key_sched_tbl_t[CRYPTO_CIPHER_MAX][CRYPTO_CIPHER_KEYLEN_MAX]; static const crypto_key_sched_tbl_t crypto_key_sched_encrypt = { /* [cipher alg][key length] = key_expand_func, */ - [CIPH_AES_CBC][KEYL(128)] = aes128_key_sched_enc, + [CIPH_AES_CBC][KEYL(128)] = AArch64crypto_aes_cbc_expandkeys_128_enc, }; static const crypto_key_sched_tbl_t crypto_key_sched_decrypt = { /* [cipher alg][key length] = key_expand_func, */ - [CIPH_AES_CBC][KEYL(128)] = aes128_key_sched_dec, + [CIPH_AES_CBC][KEYL(128)] = AArch64crypto_aes_cbc_expandkeys_128_dec, }; /** @@ -277,14 +281,16 @@ auth_set_prerequisites(struct armv8_crypto_session *sess, * Calculate partial hash values for i_key_pad and o_key_pad. * Will be used as initialization state for final HMAC. */ - error = sha1_block_partial(NULL, sess->auth.hmac.i_key_pad, - partial, SHA1_BLOCK_SIZE); + error = AArch64crypto_sha1_block_partial(NULL, + sess->auth.hmac.i_key_pad, + partial, SHA1_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.i_key_pad, partial, SHA1_BLOCK_SIZE); - error = sha1_block_partial(NULL, sess->auth.hmac.o_key_pad, - partial, SHA1_BLOCK_SIZE); + error = AArch64crypto_sha1_block_partial(NULL, + sess->auth.hmac.o_key_pad, + partial, SHA1_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.o_key_pad, partial, SHA1_BLOCK_SIZE); @@ -310,14 +316,16 @@ auth_set_prerequisites(struct armv8_crypto_session *sess, * Calculate partial hash values for i_key_pad and o_key_pad. * Will be used as initialization state for final HMAC. */ - error = sha256_block_partial(NULL, sess->auth.hmac.i_key_pad, - partial, SHA256_BLOCK_SIZE); + error = AArch64crypto_sha256_block_partial(NULL, + sess->auth.hmac.i_key_pad, + partial, SHA256_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.i_key_pad, partial, SHA256_BLOCK_SIZE); - error = sha256_block_partial(NULL, sess->auth.hmac.o_key_pad, - partial, SHA256_BLOCK_SIZE); + error = AArch64crypto_sha256_block_partial(NULL, + sess->auth.hmac.o_key_pad, + partial, SHA256_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.o_key_pad, partial, SHA256_BLOCK_SIZE); @@ -552,7 +560,7 @@ process_armv8_chained_op(struct armv8_crypto_qp *qp, struct rte_crypto_op *op, struct rte_mbuf *mbuf_src, struct rte_mbuf *mbuf_dst) { crypto_func_t crypto_func; - crypto_arg_t arg; + AArch64crypto_cipher_digest_t arg; struct rte_mbuf *m_asrc, *m_adst; uint8_t *csrc, *cdst; uint8_t *adst, *asrc; diff --git a/drivers/crypto/armv8/rte_armv8_pmd_ops.c b/drivers/crypto/armv8/rte_armv8_pmd_ops.c index 57952bef5..4fd384d1a 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd_ops.c +++ b/drivers/crypto/armv8/rte_armv8_pmd_ops.c @@ -8,8 +8,6 @@ #include <rte_malloc.h> #include <rte_cryptodev_pmd.h> -#include "armv8_crypto_defs.h" - #include "armv8_pmd_private.h" static const struct rte_cryptodev_capabilities diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 05ea034b9..ab47e4cee 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -274,7 +274,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KASUMI) += -L$(LIBSSO_KASUMI_PATH)/build -l _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -lrte_pmd_zuc _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -L$(LIBSSO_ZUC_PATH)/build -lsso_zuc _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -lrte_pmd_armv8 -_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -L$(ARMV8_CRYPTO_LIB_PATH) -larmv8_crypto +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -L$(ARMV8_CRYPTO_LIB_PATH) -lAArch64crypto _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO) += -L$(LIBMUSDK_PATH)/lib -lrte_pmd_mvsam_crypto -lmusdk _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NITROX) += -lrte_pmd_nitrox _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += -lrte_pmd_octeontx_crypto -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [RFC PATCH 2/3] doc: update link to the crypto library for armv8 PMD 2019-12-10 8:28 [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Ruifeng Wang 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 1/3] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang @ 2019-12-10 8:28 ` Ruifeng Wang 2019-12-10 10:07 ` Jerin Jacob 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 3/3] crypto/armv8: fix clang build Ruifeng Wang ` (3 subsequent siblings) 5 siblings, 1 reply; 20+ messages in thread From: Ruifeng Wang @ 2019-12-10 8:28 UTC (permalink / raw) To: gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Armv8 crypto PMD now uses crypto library hosted by Arm. Update doc with the crypto library link to reflect the change. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> --- doc/guides/cryptodevs/armv8.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/guides/cryptodevs/armv8.rst b/doc/guides/cryptodevs/armv8.rst index 1ab40096e..fee85354b 100644 --- a/doc/guides/cryptodevs/armv8.rst +++ b/doc/guides/cryptodevs/armv8.rst @@ -28,12 +28,11 @@ Installation In order to enable this virtual crypto PMD, user must: -* Download ARMv8 crypto library source code from - `here <https://github.com/caviumnetworks/armv8_crypto>`_ +* Download AArch64 crypto library source code from + `here <https://github.com/ARM-software/AArch64cryptolib>`_ * Export the environmental variable ARMV8_CRYPTO_LIB_PATH with - the path where the ``armv8_crypto`` library was downloaded - or cloned. + the path to ``AArch64cryptolib`` library. * Build the library by invoking: -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [RFC PATCH 2/3] doc: update link to the crypto library for armv8 PMD 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 2/3] doc: update link to the crypto library for armv8 PMD Ruifeng Wang @ 2019-12-10 10:07 ` Jerin Jacob 0 siblings, 0 replies; 20+ messages in thread From: Jerin Jacob @ 2019-12-10 10:07 UTC (permalink / raw) To: Ruifeng Wang; +Cc: Gavin Hu, dpdk-dev, Jerin Jacob, Honnappa Nagarahalli, nd On Tue, Dec 10, 2019 at 1:59 PM Ruifeng Wang <ruifeng.wang@arm.com> wrote: > > Armv8 crypto PMD now uses crypto library hosted by Arm. > Update doc with the crypto library link to reflect the change. > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Acked-by: Jerin Jacob <jerinj@marvell.com> > --- > doc/guides/cryptodevs/armv8.rst | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/doc/guides/cryptodevs/armv8.rst b/doc/guides/cryptodevs/armv8.rst > index 1ab40096e..fee85354b 100644 > --- a/doc/guides/cryptodevs/armv8.rst > +++ b/doc/guides/cryptodevs/armv8.rst > @@ -28,12 +28,11 @@ Installation > > In order to enable this virtual crypto PMD, user must: > > -* Download ARMv8 crypto library source code from > - `here <https://github.com/caviumnetworks/armv8_crypto>`_ > +* Download AArch64 crypto library source code from > + `here <https://github.com/ARM-software/AArch64cryptolib>`_ > > * Export the environmental variable ARMV8_CRYPTO_LIB_PATH with > - the path where the ``armv8_crypto`` library was downloaded > - or cloned. > + the path to ``AArch64cryptolib`` library. > > * Build the library by invoking: > > -- > 2.17.1 > ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [RFC PATCH 3/3] crypto/armv8: fix clang build 2019-12-10 8:28 [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Ruifeng Wang 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 1/3] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 2/3] doc: update link to the crypto library for armv8 PMD Ruifeng Wang @ 2019-12-10 8:28 ` Ruifeng Wang 2020-01-17 12:11 ` [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Akhil Goyal ` (2 subsequent siblings) 5 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2019-12-10 8:28 UTC (permalink / raw) To: gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang, stable 1. Clang requires braces around initialization of subobject. 2. Clang complains implicit conversion of enumeration type. Trapped issue with Clang version 8.0 and CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO was set. Error messages: rte_armv8_pmd.c:144:2: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] NULL ^~~~ { } /usr/lib/llvm-8/lib/clang/8.0.0/include/stddef.h:105:16: note: expanded from macro 'NULL' ^~~~~~~~~~ rte_armv8_pmd.c:429:21: error: implicit conversion from enumeration type 'enum rte_crypto_cipher_operation' to different enumeration type 'enum armv8_crypto_cipher_operation' [-Werror,-Wenum-conversion] cop = sess->cipher.direction; ~ ~~~~~~~~~~~~~^~~~~~~~~ Fixes: 169ca3db550c ("crypto/armv8: add PMD optimized for ARMv8 processors") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- drivers/crypto/armv8/rte_armv8_pmd.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c index 2b2c5a3bf..f6997e2e9 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd.c +++ b/drivers/crypto/armv8/rte_armv8_pmd.c @@ -86,12 +86,12 @@ crypto_op_ca_encrypt = { static const crypto_func_tbl_t crypto_op_ca_decrypt = { - NULL + {{NULL}} }; static const crypto_func_tbl_t crypto_op_ac_encrypt = { - NULL + {{NULL}} }; static const crypto_func_tbl_t @@ -377,7 +377,16 @@ armv8_crypto_set_session_chained_parameters(struct armv8_crypto_session *sess, /* Select cipher key */ sess->cipher.key.length = cipher_xform->cipher.key.length; /* Set cipher direction */ - cop = sess->cipher.direction; + switch (sess->cipher.direction) { + case RTE_CRYPTO_CIPHER_OP_ENCRYPT: + cop = ARMV8_CRYPTO_CIPHER_OP_ENCRYPT; + break; + case RTE_CRYPTO_CIPHER_OP_DECRYPT: + cop = ARMV8_CRYPTO_CIPHER_OP_DECRYPT; + break; + default: + return -ENOTSUP; + } /* Set cipher algorithm */ calg = cipher_xform->cipher.algo; -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update 2019-12-10 8:28 [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Ruifeng Wang ` (2 preceding siblings ...) 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 3/3] crypto/armv8: fix clang build Ruifeng Wang @ 2020-01-17 12:11 ` Akhil Goyal 2020-01-17 14:28 ` Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 " Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 0/5] " Ruifeng Wang 5 siblings, 1 reply; 20+ messages in thread From: Akhil Goyal @ 2020-01-17 12:11 UTC (permalink / raw) To: Ruifeng Wang, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd Hi Ruifeng, > Maintainance of armv8_crypto library created by Marvell/Cavium will > be discontinued. Going forward, Armv8 crypto PMD will link to AArch64 > crypto library hosted by Arm. > > Patch 1/3, 2/3 update source code and document respectively to reflect > the change. > Patch 3/3 fixed Clang build issue when Armv8 crypto PMD is enabled. > > > Ruifeng Wang (3): > crypto/armv8: link PMD to crypto library hosted by Arm > doc: update link to the crypto library for armv8 PMD > crypto/armv8: fix clang build > > doc/guides/cryptodevs/armv8.rst | 7 ++- > drivers/crypto/armv8/Makefile | 3 +- > drivers/crypto/armv8/armv8_pmd_private.h | 4 +- > drivers/crypto/armv8/rte_armv8_pmd.c | 55 ++++++++++++++++-------- > drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 - > mk/rte.app.mk | 2 +- > 6 files changed, 44 insertions(+), 29 deletions(-) > This patchset was sent as RFC. Do you intend to send a formal patchset or this was the final patch and RFC was mentioned by mistake? Regards, Akhil ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update 2020-01-17 12:11 ` [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Akhil Goyal @ 2020-01-17 14:28 ` Ruifeng Wang 0 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-17 14:28 UTC (permalink / raw) To: Akhil.goyal@nxp.com, Gavin Hu; +Cc: dev, jerinj, Honnappa Nagarahalli, nd, nd > -----Original Message----- > From: Akhil Goyal <akhil.goyal@nxp.com> > Sent: Friday, January 17, 2020 20:12 > To: Ruifeng Wang <Ruifeng.Wang@arm.com>; Gavin Hu > <Gavin.Hu@arm.com> > Cc: dev@dpdk.org; jerinj@marvell.com; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> > Subject: RE: [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update > > Hi Ruifeng, > > > Maintainance of armv8_crypto library created by Marvell/Cavium will be > > discontinued. Going forward, Armv8 crypto PMD will link to AArch64 > > crypto library hosted by Arm. > > > > Patch 1/3, 2/3 update source code and document respectively to reflect > > the change. > > Patch 3/3 fixed Clang build issue when Armv8 crypto PMD is enabled. > > > > > > Ruifeng Wang (3): > > crypto/armv8: link PMD to crypto library hosted by Arm > > doc: update link to the crypto library for armv8 PMD > > crypto/armv8: fix clang build > > > > doc/guides/cryptodevs/armv8.rst | 7 ++- > > drivers/crypto/armv8/Makefile | 3 +- > > drivers/crypto/armv8/armv8_pmd_private.h | 4 +- > > drivers/crypto/armv8/rte_armv8_pmd.c | 55 ++++++++++++++++------- > - > > drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 - > > mk/rte.app.mk | 2 +- > > 6 files changed, 44 insertions(+), 29 deletions(-) > > > > This patchset was sent as RFC. Do you intend to send a formal patchset or > this was the final patch and RFC was mentioned by mistake? > Hi Akhil, Thanks for asking. I will send a formal patchset, in couple of days. /Ruifeng > Regards, > Akhil ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v2 0/3] armv8 crypto PMD update 2019-12-10 8:28 [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Ruifeng Wang ` (3 preceding siblings ...) 2020-01-17 12:11 ` [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Akhil Goyal @ 2020-01-19 7:40 ` Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 1/3] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang ` (3 more replies) 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 0/5] " Ruifeng Wang 5 siblings, 4 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-19 7:40 UTC (permalink / raw) To: akhil.goyal, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Maintainance of armv8_crypto library created by Marvell/Cavium will be discontinued. Going forward, Armv8 crypto PMD will link to AArch64 crypto library hosted by Arm. Patch 1/3, 2/3 update source code and document respectively to reflect the change. Patch 3/3 fixs Clang build issue when Armv8 crypto PMD is enabled. v2: Convert to formal patches from RFC. API and public structure renaming. Ruifeng Wang (3): crypto/armv8: link PMD to crypto library hosted by Arm doc: update link to the crypto library for armv8 PMD crypto/armv8: fix clang build doc/guides/cryptodevs/armv8.rst | 7 ++- drivers/crypto/armv8/Makefile | 3 +- drivers/crypto/armv8/armv8_pmd_private.h | 4 +- drivers/crypto/armv8/rte_armv8_pmd.c | 55 ++++++++++++++++-------- drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 - mk/rte.app.mk | 2 +- 6 files changed, 44 insertions(+), 29 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v2 1/3] crypto/armv8: link PMD to crypto library hosted by Arm 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 " Ruifeng Wang @ 2020-01-19 7:40 ` Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 2/3] doc: update link to the crypto library for armv8 PMD Ruifeng Wang ` (2 subsequent siblings) 3 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-19 7:40 UTC (permalink / raw) To: akhil.goyal, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Armv8 crypto PMD linked to armv8_crypto library created by Marvell. Maintenance of armv8_crypto library will be discontinued. Change Armv8 PMD to link to AArch64 crypto library hosted by Arm. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com> --- drivers/crypto/armv8/Makefile | 3 +- drivers/crypto/armv8/armv8_pmd_private.h | 4 ++- drivers/crypto/armv8/rte_armv8_pmd.c | 40 ++++++++++++++---------- drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 -- mk/rte.app.mk | 2 +- 5 files changed, 29 insertions(+), 22 deletions(-) diff --git a/drivers/crypto/armv8/Makefile b/drivers/crypto/armv8/Makefile index 125283664..7f20a28d4 100644 --- a/drivers/crypto/armv8/Makefile +++ b/drivers/crypto/armv8/Makefile @@ -24,9 +24,8 @@ EXPORT_MAP := rte_pmd_armv8_version.map # external library dependencies CFLAGS += -I$(ARMV8_CRYPTO_LIB_PATH) -CFLAGS += -I$(ARMV8_CRYPTO_LIB_PATH)/asm/include CFLAGS += -DALLOW_EXPERIMENTAL_API -LDLIBS += -L$(ARMV8_CRYPTO_LIB_PATH) -larmv8_crypto +LDLIBS += -L$(ARMV8_CRYPTO_LIB_PATH) -lAArch64crypto LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_cryptodev LDLIBS += -lrte_bus_vdev diff --git a/drivers/crypto/armv8/armv8_pmd_private.h b/drivers/crypto/armv8/armv8_pmd_private.h index 24040dda2..e08d0df78 100644 --- a/drivers/crypto/armv8/armv8_pmd_private.h +++ b/drivers/crypto/armv8/armv8_pmd_private.h @@ -5,6 +5,8 @@ #ifndef _ARMV8_PMD_PRIVATE_H_ #define _ARMV8_PMD_PRIVATE_H_ +#include "AArch64cryptolib.h" + #define CRYPTODEV_NAME_ARMV8_PMD crypto_armv8 /**< ARMv8 Crypto PMD device name */ @@ -98,7 +100,7 @@ enum armv8_crypto_auth_mode { typedef int (*crypto_func_t)(uint8_t *, uint8_t *, uint64_t, uint8_t *, uint8_t *, uint64_t, - crypto_arg_t *); + armv8_cipher_digest_t *); typedef void (*crypto_key_sched_t)(uint8_t *, const uint8_t *); diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c index 7dc83e69e..fd8140896 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd.c +++ b/drivers/crypto/armv8/rte_armv8_pmd.c @@ -12,7 +12,7 @@ #include <rte_malloc.h> #include <rte_cpuflags.h> -#include "armv8_crypto_defs.h" +#include "AArch64cryptolib.h" #include "armv8_pmd_private.h" @@ -78,8 +78,10 @@ crypto_func_tbl_t[CRYPTO_CIPHER_MAX][CRYPTO_AUTH_MAX][CRYPTO_CIPHER_KEYLEN_MAX]; static const crypto_func_tbl_t crypto_op_ca_encrypt = { /* [cipher alg][auth alg][key length] = crypto_function, */ - [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = aes128cbc_sha1_hmac, - [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = aes128cbc_sha256_hmac, + [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = + armv8_enc_aes_cbc_sha1_128, + [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = + armv8_enc_aes_cbc_sha256_128, }; static const crypto_func_tbl_t @@ -95,8 +97,10 @@ crypto_op_ac_encrypt = { static const crypto_func_tbl_t crypto_op_ac_decrypt = { /* [cipher alg][auth alg][key length] = crypto_function, */ - [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = sha1_hmac_aes128cbc_dec, - [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = sha256_hmac_aes128cbc_dec, + [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = + armv8_dec_aes_cbc_sha1_128, + [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = + armv8_dec_aes_cbc_sha256_128, }; /** @@ -155,13 +159,13 @@ crypto_key_sched_tbl_t[CRYPTO_CIPHER_MAX][CRYPTO_CIPHER_KEYLEN_MAX]; static const crypto_key_sched_tbl_t crypto_key_sched_encrypt = { /* [cipher alg][key length] = key_expand_func, */ - [CIPH_AES_CBC][KEYL(128)] = aes128_key_sched_enc, + [CIPH_AES_CBC][KEYL(128)] = armv8_expandkeys_enc_aes_cbc_128, }; static const crypto_key_sched_tbl_t crypto_key_sched_decrypt = { /* [cipher alg][key length] = key_expand_func, */ - [CIPH_AES_CBC][KEYL(128)] = aes128_key_sched_dec, + [CIPH_AES_CBC][KEYL(128)] = armv8_expandkeys_dec_aes_cbc_128, }; /** @@ -277,14 +281,16 @@ auth_set_prerequisites(struct armv8_crypto_session *sess, * Calculate partial hash values for i_key_pad and o_key_pad. * Will be used as initialization state for final HMAC. */ - error = sha1_block_partial(NULL, sess->auth.hmac.i_key_pad, - partial, SHA1_BLOCK_SIZE); + error = armv8_sha1_block_partial(NULL, + sess->auth.hmac.i_key_pad, + partial, SHA1_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.i_key_pad, partial, SHA1_BLOCK_SIZE); - error = sha1_block_partial(NULL, sess->auth.hmac.o_key_pad, - partial, SHA1_BLOCK_SIZE); + error = armv8_sha1_block_partial(NULL, + sess->auth.hmac.o_key_pad, + partial, SHA1_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.o_key_pad, partial, SHA1_BLOCK_SIZE); @@ -310,14 +316,16 @@ auth_set_prerequisites(struct armv8_crypto_session *sess, * Calculate partial hash values for i_key_pad and o_key_pad. * Will be used as initialization state for final HMAC. */ - error = sha256_block_partial(NULL, sess->auth.hmac.i_key_pad, - partial, SHA256_BLOCK_SIZE); + error = armv8_sha256_block_partial(NULL, + sess->auth.hmac.i_key_pad, + partial, SHA256_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.i_key_pad, partial, SHA256_BLOCK_SIZE); - error = sha256_block_partial(NULL, sess->auth.hmac.o_key_pad, - partial, SHA256_BLOCK_SIZE); + error = armv8_sha256_block_partial(NULL, + sess->auth.hmac.o_key_pad, + partial, SHA256_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.o_key_pad, partial, SHA256_BLOCK_SIZE); @@ -552,7 +560,7 @@ process_armv8_chained_op(struct armv8_crypto_qp *qp, struct rte_crypto_op *op, struct rte_mbuf *mbuf_src, struct rte_mbuf *mbuf_dst) { crypto_func_t crypto_func; - crypto_arg_t arg; + armv8_cipher_digest_t arg; struct rte_mbuf *m_asrc, *m_adst; uint8_t *csrc, *cdst; uint8_t *adst, *asrc; diff --git a/drivers/crypto/armv8/rte_armv8_pmd_ops.c b/drivers/crypto/armv8/rte_armv8_pmd_ops.c index 57952bef5..4fd384d1a 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd_ops.c +++ b/drivers/crypto/armv8/rte_armv8_pmd_ops.c @@ -8,8 +8,6 @@ #include <rte_malloc.h> #include <rte_cryptodev_pmd.h> -#include "armv8_crypto_defs.h" - #include "armv8_pmd_private.h" static const struct rte_cryptodev_capabilities diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 05ea034b9..ab47e4cee 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -274,7 +274,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KASUMI) += -L$(LIBSSO_KASUMI_PATH)/build -l _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -lrte_pmd_zuc _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -L$(LIBSSO_ZUC_PATH)/build -lsso_zuc _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -lrte_pmd_armv8 -_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -L$(ARMV8_CRYPTO_LIB_PATH) -larmv8_crypto +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -L$(ARMV8_CRYPTO_LIB_PATH) -lAArch64crypto _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO) += -L$(LIBMUSDK_PATH)/lib -lrte_pmd_mvsam_crypto -lmusdk _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NITROX) += -lrte_pmd_nitrox _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += -lrte_pmd_octeontx_crypto -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v2 2/3] doc: update link to the crypto library for armv8 PMD 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 " Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 1/3] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang @ 2020-01-19 7:40 ` Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 3/3] crypto/armv8: fix clang build Ruifeng Wang 2020-01-21 7:09 ` [dpdk-dev] [PATCH v2 0/3] armv8 crypto PMD update Akhil Goyal 3 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-19 7:40 UTC (permalink / raw) To: akhil.goyal, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Armv8 crypto PMD now uses crypto library hosted by Arm. Update doc with the crypto library link to reflect the change. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Acked-by: Jerin Jacob <jerinj@marvell.com> --- doc/guides/cryptodevs/armv8.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/guides/cryptodevs/armv8.rst b/doc/guides/cryptodevs/armv8.rst index 1ab40096e..fee85354b 100644 --- a/doc/guides/cryptodevs/armv8.rst +++ b/doc/guides/cryptodevs/armv8.rst @@ -28,12 +28,11 @@ Installation In order to enable this virtual crypto PMD, user must: -* Download ARMv8 crypto library source code from - `here <https://github.com/caviumnetworks/armv8_crypto>`_ +* Download AArch64 crypto library source code from + `here <https://github.com/ARM-software/AArch64cryptolib>`_ * Export the environmental variable ARMV8_CRYPTO_LIB_PATH with - the path where the ``armv8_crypto`` library was downloaded - or cloned. + the path to ``AArch64cryptolib`` library. * Build the library by invoking: -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v2 3/3] crypto/armv8: fix clang build 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 " Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 1/3] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 2/3] doc: update link to the crypto library for armv8 PMD Ruifeng Wang @ 2020-01-19 7:40 ` Ruifeng Wang 2020-01-21 7:09 ` [dpdk-dev] [PATCH v2 0/3] armv8 crypto PMD update Akhil Goyal 3 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-19 7:40 UTC (permalink / raw) To: akhil.goyal, gavin.hu Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang, stable 1. Clang requires braces around initialization of subobject. 2. Clang complains implicit conversion of enumeration type. Trapped issue with Clang version 8.0 and CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO was set. Error messages: rte_armv8_pmd.c:144:2: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] NULL ^~~~ { } /usr/lib/llvm-8/lib/clang/8.0.0/include/stddef.h:105:16: note: expanded from macro 'NULL' ^~~~~~~~~~ rte_armv8_pmd.c:429:21: error: implicit conversion from enumeration type 'enum rte_crypto_cipher_operation' to different enumeration type 'enum armv8_crypto_cipher_operation' [-Werror,-Wenum-conversion] cop = sess->cipher.direction; ~ ~~~~~~~~~~~~~^~~~~~~~~ Fixes: 169ca3db550c ("crypto/armv8: add PMD optimized for ARMv8 processors") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- drivers/crypto/armv8/rte_armv8_pmd.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c index fd8140896..d2b7ab5e0 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd.c +++ b/drivers/crypto/armv8/rte_armv8_pmd.c @@ -86,12 +86,12 @@ crypto_op_ca_encrypt = { static const crypto_func_tbl_t crypto_op_ca_decrypt = { - NULL + { {NULL} } }; static const crypto_func_tbl_t crypto_op_ac_encrypt = { - NULL + { {NULL} } }; static const crypto_func_tbl_t @@ -377,7 +377,16 @@ armv8_crypto_set_session_chained_parameters(struct armv8_crypto_session *sess, /* Select cipher key */ sess->cipher.key.length = cipher_xform->cipher.key.length; /* Set cipher direction */ - cop = sess->cipher.direction; + switch (sess->cipher.direction) { + case RTE_CRYPTO_CIPHER_OP_ENCRYPT: + cop = ARMV8_CRYPTO_CIPHER_OP_ENCRYPT; + break; + case RTE_CRYPTO_CIPHER_OP_DECRYPT: + cop = ARMV8_CRYPTO_CIPHER_OP_DECRYPT; + break; + default: + return -ENOTSUP; + } /* Set cipher algorithm */ calg = cipher_xform->cipher.algo; -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH v2 0/3] armv8 crypto PMD update 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 " Ruifeng Wang ` (2 preceding siblings ...) 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 3/3] crypto/armv8: fix clang build Ruifeng Wang @ 2020-01-21 7:09 ` Akhil Goyal 2020-01-21 9:49 ` Ruifeng Wang 3 siblings, 1 reply; 20+ messages in thread From: Akhil Goyal @ 2020-01-21 7:09 UTC (permalink / raw) To: Ruifeng Wang, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd Hi, Please also enable meson build for armv8 PMD. There was a patch in last release which was not applied. That need a rebase and can be included in this series if more changes need to be done for the changes in this patchset. http://patches.dpdk.org/patch/60499/ Please also update the release notes that the hosting for armv8 crypto has changed and the name has also changed. I sent out a mail for the compilation issue that I face. Could you please reply to that as well and add any missing info required in the patchset. Regards, Akhil > -----Original Message----- > From: Ruifeng Wang <ruifeng.wang@arm.com> > Sent: Sunday, January 19, 2020 1:10 PM > To: Akhil Goyal <akhil.goyal@nxp.com>; gavin.hu@arm.com > Cc: dev@dpdk.org; jerinj@marvell.com; honnappa.nagarahalli@arm.com; > nd@arm.com; Ruifeng Wang <ruifeng.wang@arm.com> > Subject: [PATCH v2 0/3] armv8 crypto PMD update > > Maintainance of armv8_crypto library created by Marvell/Cavium will > be discontinued. Going forward, Armv8 crypto PMD will link to AArch64 > crypto library hosted by Arm. > > Patch 1/3, 2/3 update source code and document respectively to reflect > the change. > Patch 3/3 fixs Clang build issue when Armv8 crypto PMD is enabled. > > > v2: > Convert to formal patches from RFC. > API and public structure renaming. > > Ruifeng Wang (3): > crypto/armv8: link PMD to crypto library hosted by Arm > doc: update link to the crypto library for armv8 PMD > crypto/armv8: fix clang build > > doc/guides/cryptodevs/armv8.rst | 7 ++- > drivers/crypto/armv8/Makefile | 3 +- > drivers/crypto/armv8/armv8_pmd_private.h | 4 +- > drivers/crypto/armv8/rte_armv8_pmd.c | 55 ++++++++++++++++-------- > drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 - > mk/rte.app.mk | 2 +- > 6 files changed, 44 insertions(+), 29 deletions(-) > > -- > 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH v2 0/3] armv8 crypto PMD update 2020-01-21 7:09 ` [dpdk-dev] [PATCH v2 0/3] armv8 crypto PMD update Akhil Goyal @ 2020-01-21 9:49 ` Ruifeng Wang 0 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-21 9:49 UTC (permalink / raw) To: Akhil.goyal@nxp.com, Gavin Hu; +Cc: dev, jerinj, Honnappa Nagarahalli, nd, nd > -----Original Message----- > From: Akhil Goyal <akhil.goyal@nxp.com> > Sent: Tuesday, January 21, 2020 15:09 > To: Ruifeng Wang <Ruifeng.Wang@arm.com>; Gavin Hu > <Gavin.Hu@arm.com> > Cc: dev@dpdk.org; jerinj@marvell.com; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> > Subject: RE: [PATCH v2 0/3] armv8 crypto PMD update > > Hi, > > Please also enable meson build for armv8 PMD. > There was a patch in last release which was not applied. That need a rebase > and can be included in this series if more changes need to be done for the > changes in this patchset. > http://patches.dpdk.org/patch/60499/ > Yes, I will include this patch in this series. > Please also update the release notes that the hosting for armv8 crypto has > changed and the name has also changed. > OK. > I sent out a mail for the compilation issue that I face. Could you please reply > to that as well and add any missing info required in the patchset. OK. > > Regards, > Akhil > > > -----Original Message----- > > From: Ruifeng Wang <ruifeng.wang@arm.com> > > Sent: Sunday, January 19, 2020 1:10 PM > > To: Akhil Goyal <akhil.goyal@nxp.com>; gavin.hu@arm.com > > Cc: dev@dpdk.org; jerinj@marvell.com; honnappa.nagarahalli@arm.com; > > nd@arm.com; Ruifeng Wang <ruifeng.wang@arm.com> > > Subject: [PATCH v2 0/3] armv8 crypto PMD update > > > > Maintainance of armv8_crypto library created by Marvell/Cavium will be > > discontinued. Going forward, Armv8 crypto PMD will link to AArch64 > > crypto library hosted by Arm. > > > > Patch 1/3, 2/3 update source code and document respectively to reflect > > the change. > > Patch 3/3 fixs Clang build issue when Armv8 crypto PMD is enabled. > > > > > > v2: > > Convert to formal patches from RFC. > > API and public structure renaming. > > > > Ruifeng Wang (3): > > crypto/armv8: link PMD to crypto library hosted by Arm > > doc: update link to the crypto library for armv8 PMD > > crypto/armv8: fix clang build > > > > doc/guides/cryptodevs/armv8.rst | 7 ++- > > drivers/crypto/armv8/Makefile | 3 +- > > drivers/crypto/armv8/armv8_pmd_private.h | 4 +- > > drivers/crypto/armv8/rte_armv8_pmd.c | 55 ++++++++++++++++------- > - > > drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 - > > mk/rte.app.mk | 2 +- > > 6 files changed, 44 insertions(+), 29 deletions(-) > > > > -- > > 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v3 0/5] armv8 crypto PMD update 2019-12-10 8:28 [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Ruifeng Wang ` (4 preceding siblings ...) 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 " Ruifeng Wang @ 2020-01-23 3:45 ` Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 1/5] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang ` (5 more replies) 5 siblings, 6 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-23 3:45 UTC (permalink / raw) To: akhil.goyal, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Maintainance of armv8_crypto library created by Marvell/Cavium will be discontinued. Going forward, Armv8 crypto PMD will link to AArch64 crypto library hosted by Arm. Patch 1/5, 3/5 update source code and document respectively to reflect the change. Patch 2/5 adds meson build support for this PMD. Patch 5/5 fixs Clang build issue when Armv8 crypto PMD is enabled. v3: Include meson build support patch. Add release notes. v2: Convert to formal patches from RFC. API and public structure renaming. Dharmik Thakkar (1): crypto/armv8: enable meson build Ruifeng Wang (4): crypto/armv8: link PMD to crypto library hosted by Arm doc: update link to the crypto library for armv8 PMD doc: update release notes for armv8 crypto PMD crypto/armv8: fix clang build doc/guides/cryptodevs/armv8.rst | 7 ++- doc/guides/rel_notes/release_20_02.rst | 5 +++ drivers/crypto/armv8/Makefile | 3 +- drivers/crypto/armv8/armv8_pmd_private.h | 4 +- drivers/crypto/armv8/meson.build | 25 +++++++++++ drivers/crypto/armv8/rte_armv8_pmd.c | 55 ++++++++++++++++-------- drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 - drivers/crypto/meson.build | 1 + meson_options.txt | 2 + mk/rte.app.mk | 2 +- 10 files changed, 77 insertions(+), 29 deletions(-) create mode 100644 drivers/crypto/armv8/meson.build -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v3 1/5] crypto/armv8: link PMD to crypto library hosted by Arm 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 0/5] " Ruifeng Wang @ 2020-01-23 3:45 ` Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 2/5] crypto/armv8: enable meson build Ruifeng Wang ` (4 subsequent siblings) 5 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-23 3:45 UTC (permalink / raw) To: akhil.goyal, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Armv8 crypto PMD linked to armv8_crypto library created by Marvell. Maintenance of armv8_crypto library will be discontinued. Change Armv8 PMD to link to AArch64 crypto library hosted by Arm. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com> --- drivers/crypto/armv8/Makefile | 3 +- drivers/crypto/armv8/armv8_pmd_private.h | 4 ++- drivers/crypto/armv8/rte_armv8_pmd.c | 40 ++++++++++++++---------- drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 -- mk/rte.app.mk | 2 +- 5 files changed, 29 insertions(+), 22 deletions(-) diff --git a/drivers/crypto/armv8/Makefile b/drivers/crypto/armv8/Makefile index 125283664..7f20a28d4 100644 --- a/drivers/crypto/armv8/Makefile +++ b/drivers/crypto/armv8/Makefile @@ -24,9 +24,8 @@ EXPORT_MAP := rte_pmd_armv8_version.map # external library dependencies CFLAGS += -I$(ARMV8_CRYPTO_LIB_PATH) -CFLAGS += -I$(ARMV8_CRYPTO_LIB_PATH)/asm/include CFLAGS += -DALLOW_EXPERIMENTAL_API -LDLIBS += -L$(ARMV8_CRYPTO_LIB_PATH) -larmv8_crypto +LDLIBS += -L$(ARMV8_CRYPTO_LIB_PATH) -lAArch64crypto LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_cryptodev LDLIBS += -lrte_bus_vdev diff --git a/drivers/crypto/armv8/armv8_pmd_private.h b/drivers/crypto/armv8/armv8_pmd_private.h index 24040dda2..e08d0df78 100644 --- a/drivers/crypto/armv8/armv8_pmd_private.h +++ b/drivers/crypto/armv8/armv8_pmd_private.h @@ -5,6 +5,8 @@ #ifndef _ARMV8_PMD_PRIVATE_H_ #define _ARMV8_PMD_PRIVATE_H_ +#include "AArch64cryptolib.h" + #define CRYPTODEV_NAME_ARMV8_PMD crypto_armv8 /**< ARMv8 Crypto PMD device name */ @@ -98,7 +100,7 @@ enum armv8_crypto_auth_mode { typedef int (*crypto_func_t)(uint8_t *, uint8_t *, uint64_t, uint8_t *, uint8_t *, uint64_t, - crypto_arg_t *); + armv8_cipher_digest_t *); typedef void (*crypto_key_sched_t)(uint8_t *, const uint8_t *); diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c index 7dc83e69e..fd8140896 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd.c +++ b/drivers/crypto/armv8/rte_armv8_pmd.c @@ -12,7 +12,7 @@ #include <rte_malloc.h> #include <rte_cpuflags.h> -#include "armv8_crypto_defs.h" +#include "AArch64cryptolib.h" #include "armv8_pmd_private.h" @@ -78,8 +78,10 @@ crypto_func_tbl_t[CRYPTO_CIPHER_MAX][CRYPTO_AUTH_MAX][CRYPTO_CIPHER_KEYLEN_MAX]; static const crypto_func_tbl_t crypto_op_ca_encrypt = { /* [cipher alg][auth alg][key length] = crypto_function, */ - [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = aes128cbc_sha1_hmac, - [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = aes128cbc_sha256_hmac, + [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = + armv8_enc_aes_cbc_sha1_128, + [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = + armv8_enc_aes_cbc_sha256_128, }; static const crypto_func_tbl_t @@ -95,8 +97,10 @@ crypto_op_ac_encrypt = { static const crypto_func_tbl_t crypto_op_ac_decrypt = { /* [cipher alg][auth alg][key length] = crypto_function, */ - [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = sha1_hmac_aes128cbc_dec, - [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = sha256_hmac_aes128cbc_dec, + [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = + armv8_dec_aes_cbc_sha1_128, + [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = + armv8_dec_aes_cbc_sha256_128, }; /** @@ -155,13 +159,13 @@ crypto_key_sched_tbl_t[CRYPTO_CIPHER_MAX][CRYPTO_CIPHER_KEYLEN_MAX]; static const crypto_key_sched_tbl_t crypto_key_sched_encrypt = { /* [cipher alg][key length] = key_expand_func, */ - [CIPH_AES_CBC][KEYL(128)] = aes128_key_sched_enc, + [CIPH_AES_CBC][KEYL(128)] = armv8_expandkeys_enc_aes_cbc_128, }; static const crypto_key_sched_tbl_t crypto_key_sched_decrypt = { /* [cipher alg][key length] = key_expand_func, */ - [CIPH_AES_CBC][KEYL(128)] = aes128_key_sched_dec, + [CIPH_AES_CBC][KEYL(128)] = armv8_expandkeys_dec_aes_cbc_128, }; /** @@ -277,14 +281,16 @@ auth_set_prerequisites(struct armv8_crypto_session *sess, * Calculate partial hash values for i_key_pad and o_key_pad. * Will be used as initialization state for final HMAC. */ - error = sha1_block_partial(NULL, sess->auth.hmac.i_key_pad, - partial, SHA1_BLOCK_SIZE); + error = armv8_sha1_block_partial(NULL, + sess->auth.hmac.i_key_pad, + partial, SHA1_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.i_key_pad, partial, SHA1_BLOCK_SIZE); - error = sha1_block_partial(NULL, sess->auth.hmac.o_key_pad, - partial, SHA1_BLOCK_SIZE); + error = armv8_sha1_block_partial(NULL, + sess->auth.hmac.o_key_pad, + partial, SHA1_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.o_key_pad, partial, SHA1_BLOCK_SIZE); @@ -310,14 +316,16 @@ auth_set_prerequisites(struct armv8_crypto_session *sess, * Calculate partial hash values for i_key_pad and o_key_pad. * Will be used as initialization state for final HMAC. */ - error = sha256_block_partial(NULL, sess->auth.hmac.i_key_pad, - partial, SHA256_BLOCK_SIZE); + error = armv8_sha256_block_partial(NULL, + sess->auth.hmac.i_key_pad, + partial, SHA256_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.i_key_pad, partial, SHA256_BLOCK_SIZE); - error = sha256_block_partial(NULL, sess->auth.hmac.o_key_pad, - partial, SHA256_BLOCK_SIZE); + error = armv8_sha256_block_partial(NULL, + sess->auth.hmac.o_key_pad, + partial, SHA256_BLOCK_SIZE); if (error != 0) return -1; memcpy(sess->auth.hmac.o_key_pad, partial, SHA256_BLOCK_SIZE); @@ -552,7 +560,7 @@ process_armv8_chained_op(struct armv8_crypto_qp *qp, struct rte_crypto_op *op, struct rte_mbuf *mbuf_src, struct rte_mbuf *mbuf_dst) { crypto_func_t crypto_func; - crypto_arg_t arg; + armv8_cipher_digest_t arg; struct rte_mbuf *m_asrc, *m_adst; uint8_t *csrc, *cdst; uint8_t *adst, *asrc; diff --git a/drivers/crypto/armv8/rte_armv8_pmd_ops.c b/drivers/crypto/armv8/rte_armv8_pmd_ops.c index 57952bef5..4fd384d1a 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd_ops.c +++ b/drivers/crypto/armv8/rte_armv8_pmd_ops.c @@ -8,8 +8,6 @@ #include <rte_malloc.h> #include <rte_cryptodev_pmd.h> -#include "armv8_crypto_defs.h" - #include "armv8_pmd_private.h" static const struct rte_cryptodev_capabilities diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 15acf95db..fb391af57 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -280,7 +280,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KASUMI) += -L$(LIBSSO_KASUMI_PATH)/build -l _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -lrte_pmd_zuc _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -L$(LIBSSO_ZUC_PATH)/build -lsso_zuc _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -lrte_pmd_armv8 -_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -L$(ARMV8_CRYPTO_LIB_PATH) -larmv8_crypto +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -L$(ARMV8_CRYPTO_LIB_PATH) -lAArch64crypto _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO) += -L$(LIBMUSDK_PATH)/lib -lrte_pmd_mvsam_crypto -lmusdk _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NITROX) += -lrte_pmd_nitrox _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += -lrte_pmd_octeontx_crypto -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v3 2/5] crypto/armv8: enable meson build 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 0/5] " Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 1/5] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang @ 2020-01-23 3:45 ` Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 3/5] doc: update link to the crypto library for armv8 PMD Ruifeng Wang ` (3 subsequent siblings) 5 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-23 3:45 UTC (permalink / raw) To: akhil.goyal, gavin.hu Cc: dev, jerinj, honnappa.nagarahalli, nd, Dharmik Thakkar From: Dharmik Thakkar <dharmik.thakkar@arm.com> Add new meson.build file for crypto/armv8 Suggested-by: Thomas Monjalon <thomas@monjalon.net> Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Tested-by: Ruifeng Wang <ruifeng.wang@arm.com> --- drivers/crypto/armv8/meson.build | 25 +++++++++++++++++++++++++ drivers/crypto/meson.build | 1 + meson_options.txt | 2 ++ 3 files changed, 28 insertions(+) create mode 100644 drivers/crypto/armv8/meson.build diff --git a/drivers/crypto/armv8/meson.build b/drivers/crypto/armv8/meson.build new file mode 100644 index 000000000..6ecb78b42 --- /dev/null +++ b/drivers/crypto/armv8/meson.build @@ -0,0 +1,25 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2019 Arm Limited + +path = get_option('armv8_crypto_dir') +if path == '' + build = false + reason = 'missing dependency, "armv8_crypto"' + subdir_done() +endif + +inc_dir = path + +lib = cc.find_library('libAArch64crypto', dirs: [path], required: false) +if not lib.found() + build = false + reason = 'missing dependency, "AArch64crypto"' + subdir_done() +else + ext_deps += lib + includes += include_directories(inc_dir) +endif + +deps += ['bus_vdev'] +sources = files('rte_armv8_pmd.c', 'rte_armv8_pmd_ops.c') +allow_experimental_apis = true diff --git a/drivers/crypto/meson.build b/drivers/crypto/meson.build index 229debdfe..7fa1fbe26 100644 --- a/drivers/crypto/meson.build +++ b/drivers/crypto/meson.build @@ -3,6 +3,7 @@ drivers = ['aesni_gcm', 'aesni_mb', + 'armv8', 'caam_jr', 'ccp', 'dpaa_sec', diff --git a/meson_options.txt b/meson_options.txt index 53dfe13c3..20be15fe6 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,5 +1,7 @@ # Please keep these options sorted alphabetically. +option('armv8_crypto_dir', type: 'string', value: '', + description: 'path to the armv8_crypto library installation directory') option('disable_drivers', type: 'string', value: '', description: 'Comma-separated list of drivers to explicitly disable.') option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>', -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v3 3/5] doc: update link to the crypto library for armv8 PMD 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 0/5] " Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 1/5] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 2/5] crypto/armv8: enable meson build Ruifeng Wang @ 2020-01-23 3:45 ` Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 4/5] doc: update release notes for armv8 crypto PMD Ruifeng Wang ` (2 subsequent siblings) 5 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-23 3:45 UTC (permalink / raw) To: akhil.goyal, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Armv8 crypto PMD now uses crypto library hosted by Arm. Update doc with the crypto library link to reflect the change. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Acked-by: Jerin Jacob <jerinj@marvell.com> --- doc/guides/cryptodevs/armv8.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/guides/cryptodevs/armv8.rst b/doc/guides/cryptodevs/armv8.rst index 1ab40096e..fee85354b 100644 --- a/doc/guides/cryptodevs/armv8.rst +++ b/doc/guides/cryptodevs/armv8.rst @@ -28,12 +28,11 @@ Installation In order to enable this virtual crypto PMD, user must: -* Download ARMv8 crypto library source code from - `here <https://github.com/caviumnetworks/armv8_crypto>`_ +* Download AArch64 crypto library source code from + `here <https://github.com/ARM-software/AArch64cryptolib>`_ * Export the environmental variable ARMV8_CRYPTO_LIB_PATH with - the path where the ``armv8_crypto`` library was downloaded - or cloned. + the path to ``AArch64cryptolib`` library. * Build the library by invoking: -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v3 4/5] doc: update release notes for armv8 crypto PMD 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 0/5] " Ruifeng Wang ` (2 preceding siblings ...) 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 3/5] doc: update link to the crypto library for armv8 PMD Ruifeng Wang @ 2020-01-23 3:45 ` Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 5/5] crypto/armv8: fix clang build Ruifeng Wang 2020-01-23 13:38 ` [dpdk-dev] [PATCH v3 0/5] armv8 crypto PMD update Akhil Goyal 5 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-23 3:45 UTC (permalink / raw) To: akhil.goyal, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang Armv8 crypto PMD is changed to depend on external crypto library hosted by Arm. Library name also has change. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> --- doc/guides/rel_notes/release_20_02.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/guides/rel_notes/release_20_02.rst b/doc/guides/rel_notes/release_20_02.rst index 50e2c1484..b0484af1b 100644 --- a/doc/guides/rel_notes/release_20_02.rst +++ b/doc/guides/rel_notes/release_20_02.rst @@ -143,6 +143,11 @@ New Features Added a new OCTEON TX2 rawdev PMD for End Point mode of operation. See the :doc:`../rawdevs/octeontx2_ep` for more details on this new PMD. +* **Changed armv8 crypto PMD external dependency.** + + armv8 crypto PMD now depends on Arm crypto library, and Marvell's + armv8 crypto library is not used anymore. Library name is changed + from armv8_crypto to AArch64crypto. Removed Items ------------- -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* [dpdk-dev] [PATCH v3 5/5] crypto/armv8: fix clang build 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 0/5] " Ruifeng Wang ` (3 preceding siblings ...) 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 4/5] doc: update release notes for armv8 crypto PMD Ruifeng Wang @ 2020-01-23 3:45 ` Ruifeng Wang 2020-01-23 13:38 ` [dpdk-dev] [PATCH v3 0/5] armv8 crypto PMD update Akhil Goyal 5 siblings, 0 replies; 20+ messages in thread From: Ruifeng Wang @ 2020-01-23 3:45 UTC (permalink / raw) To: akhil.goyal, gavin.hu Cc: dev, jerinj, honnappa.nagarahalli, nd, Ruifeng Wang, stable 1. Clang requires braces around initialization of subobject. 2. Clang complains implicit conversion of enumeration type. Trapped issue with Clang version 8.0 and CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO was set. Error messages: rte_armv8_pmd.c:144:2: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] NULL ^~~~ { } /usr/lib/llvm-8/lib/clang/8.0.0/include/stddef.h:105:16: note: expanded from macro 'NULL' ^~~~~~~~~~ rte_armv8_pmd.c:429:21: error: implicit conversion from enumeration type 'enum rte_crypto_cipher_operation' to different enumeration type 'enum armv8_crypto_cipher_operation' [-Werror,-Wenum-conversion] cop = sess->cipher.direction; ~ ~~~~~~~~~~~~~^~~~~~~~~ Fixes: 169ca3db550c ("crypto/armv8: add PMD optimized for ARMv8 processors") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- drivers/crypto/armv8/rte_armv8_pmd.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c index fd8140896..d2b7ab5e0 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd.c +++ b/drivers/crypto/armv8/rte_armv8_pmd.c @@ -86,12 +86,12 @@ crypto_op_ca_encrypt = { static const crypto_func_tbl_t crypto_op_ca_decrypt = { - NULL + { {NULL} } }; static const crypto_func_tbl_t crypto_op_ac_encrypt = { - NULL + { {NULL} } }; static const crypto_func_tbl_t @@ -377,7 +377,16 @@ armv8_crypto_set_session_chained_parameters(struct armv8_crypto_session *sess, /* Select cipher key */ sess->cipher.key.length = cipher_xform->cipher.key.length; /* Set cipher direction */ - cop = sess->cipher.direction; + switch (sess->cipher.direction) { + case RTE_CRYPTO_CIPHER_OP_ENCRYPT: + cop = ARMV8_CRYPTO_CIPHER_OP_ENCRYPT; + break; + case RTE_CRYPTO_CIPHER_OP_DECRYPT: + cop = ARMV8_CRYPTO_CIPHER_OP_DECRYPT; + break; + default: + return -ENOTSUP; + } /* Set cipher algorithm */ calg = cipher_xform->cipher.algo; -- 2.17.1 ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [dpdk-dev] [PATCH v3 0/5] armv8 crypto PMD update 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 0/5] " Ruifeng Wang ` (4 preceding siblings ...) 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 5/5] crypto/armv8: fix clang build Ruifeng Wang @ 2020-01-23 13:38 ` Akhil Goyal 5 siblings, 0 replies; 20+ messages in thread From: Akhil Goyal @ 2020-01-23 13:38 UTC (permalink / raw) To: Ruifeng Wang, gavin.hu; +Cc: dev, jerinj, honnappa.nagarahalli, nd > > Maintainance of armv8_crypto library created by Marvell/Cavium will > be discontinued. Going forward, Armv8 crypto PMD will link to AArch64 > crypto library hosted by Arm. > > Patch 1/5, 3/5 update source code and document respectively to reflect > the change. > Patch 2/5 adds meson build support for this PMD. > Patch 5/5 fixs Clang build issue when Armv8 crypto PMD is enabled. > > > v3: > Include meson build support patch. > Add release notes. > > v2: > Convert to formal patches from RFC. > API and public structure renaming. > > Dharmik Thakkar (1): > crypto/armv8: enable meson build > > Ruifeng Wang (4): > crypto/armv8: link PMD to crypto library hosted by Arm > doc: update link to the crypto library for armv8 PMD > doc: update release notes for armv8 crypto PMD > crypto/armv8: fix clang build > > doc/guides/cryptodevs/armv8.rst | 7 ++- > doc/guides/rel_notes/release_20_02.rst | 5 +++ > drivers/crypto/armv8/Makefile | 3 +- > drivers/crypto/armv8/armv8_pmd_private.h | 4 +- > drivers/crypto/armv8/meson.build | 25 +++++++++++ > drivers/crypto/armv8/rte_armv8_pmd.c | 55 ++++++++++++++++-------- > drivers/crypto/armv8/rte_armv8_pmd_ops.c | 2 - > drivers/crypto/meson.build | 1 + > meson_options.txt | 2 + > mk/rte.app.mk | 2 +- > 10 files changed, 77 insertions(+), 29 deletions(-) > create mode 100644 drivers/crypto/armv8/meson.build > Acked-by: Akhil Goyal <akhil.goyal@nxp.com> Applied to dpdk-next-crypto Squashed the doc patches to 1/5. As per current protocol no separate patches for doc. Thanks. ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2020-01-23 13:38 UTC | newest] Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-12-10 8:28 [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Ruifeng Wang 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 1/3] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 2/3] doc: update link to the crypto library for armv8 PMD Ruifeng Wang 2019-12-10 10:07 ` Jerin Jacob 2019-12-10 8:28 ` [dpdk-dev] [RFC PATCH 3/3] crypto/armv8: fix clang build Ruifeng Wang 2020-01-17 12:11 ` [dpdk-dev] [RFC PATCH 0/3] armv8 crypto PMD update Akhil Goyal 2020-01-17 14:28 ` Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 " Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 1/3] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 2/3] doc: update link to the crypto library for armv8 PMD Ruifeng Wang 2020-01-19 7:40 ` [dpdk-dev] [PATCH v2 3/3] crypto/armv8: fix clang build Ruifeng Wang 2020-01-21 7:09 ` [dpdk-dev] [PATCH v2 0/3] armv8 crypto PMD update Akhil Goyal 2020-01-21 9:49 ` Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 0/5] " Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 1/5] crypto/armv8: link PMD to crypto library hosted by Arm Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 2/5] crypto/armv8: enable meson build Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 3/5] doc: update link to the crypto library for armv8 PMD Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 4/5] doc: update release notes for armv8 crypto PMD Ruifeng Wang 2020-01-23 3:45 ` [dpdk-dev] [PATCH v3 5/5] crypto/armv8: fix clang build Ruifeng Wang 2020-01-23 13:38 ` [dpdk-dev] [PATCH v3 0/5] armv8 crypto PMD update Akhil Goyal
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).