From: Ruifeng Wang Date: Thu, 23 Jan 2020 03:45:53 +0000 (+0800) Subject: crypto/armv8: link to library hosted by Arm X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=commitdiff_plain;h=bde43e8a775c483d133ff11ba1692ecd9d96e4c2 crypto/armv8: link to library hosted by Arm 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 Reviewed-by: Honnappa Nagarahalli Reviewed-by: Gavin Hu Reviewed-by: Ola Liljedahl Acked-by: Jerin Jacob Acked-by: Akhil Goyal --- diff --git a/doc/guides/cryptodevs/armv8.rst b/doc/guides/cryptodevs/armv8.rst index 1ab40096e3..fee85354ba 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 `_ +* Download AArch64 crypto library source code from + `here `_ * 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: diff --git a/doc/guides/rel_notes/release_20_02.rst b/doc/guides/rel_notes/release_20_02.rst index 4b96fe11cb..2c8ee326e4 100644 --- a/doc/guides/rel_notes/release_20_02.rst +++ b/doc/guides/rel_notes/release_20_02.rst @@ -155,6 +155,12 @@ New Features * Transistioned underlying library from libSSO SNOW3G to intel-ipsec-mb library (minimum version required 0.53). +* **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. + * **Added Marvell OCTEON TX2 End Point rawdev PMD.** Added a new OCTEON TX2 rawdev PMD for End Point mode of operation. diff --git a/drivers/crypto/armv8/Makefile b/drivers/crypto/armv8/Makefile index 1252836648..7f20a28d49 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 24040dda26..e08d0df781 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 7dc83e69e1..fd81408968 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd.c +++ b/drivers/crypto/armv8/rte_armv8_pmd.c @@ -12,7 +12,7 @@ #include #include -#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 57952bef5b..4fd384d1a3 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd_ops.c +++ b/drivers/crypto/armv8/rte_armv8_pmd_ops.c @@ -8,8 +8,6 @@ #include #include -#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 5175614be3..d295ca0a52 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -284,7 +284,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KASUMI) += -lIPSec_MB _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -lrte_pmd_zuc _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -lIPSec_MB _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