All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 related	[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 related	[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 related	[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

* 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 related	[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 related	[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 related	[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 related	[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 related	[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 related	[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 related	[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 related	[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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.