All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ruifeng Wang <ruifeng.wang@arm.com>
To: roy.fan.zhang@intel.com, pablo.de.lara.guarch@intel.com,
	yipeng1.wang@intel.com, sameh.gobriel@intel.com,
	bruce.richardson@intel.com, vladimir.medvedkin@intel.com,
	gakhil@marvell.com
Cc: dev@dpdk.org, honnappa.nagarahalli@arm.com, nd@arm.com,
	Ruifeng Wang <ruifeng.wang@arm.com>
Subject: [PATCH 2/2] crypto/ipsec_mb: enable IPsec on Arm platform
Date: Wed, 27 Jul 2022 16:13:52 +0800	[thread overview]
Message-ID: <20220727081352.1333695-3-ruifeng.wang@arm.com> (raw)
In-Reply-To: <20220727081352.1333695-1-ruifeng.wang@arm.com>

Arm port of ipsec_mb library [1] has different header file name than
the Intel ipsec_mb library. Proper header name is picked according to
the architecture to get the code compile when ipsec_mb is installed on
Arm platform.

And the Arm port currently supports ZUC and SNOW3g. Call to other
algorithms will be blocked.

[1] https://gitlab.arm.com/arm-reference-solutions/ipsec-mb/-/tree/main

Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
---
 app/test/test_cryptodev_hash_test_vectors.h |  4 ++++
 doc/guides/cryptodevs/snow3g.rst            | 14 ++++++++++----
 doc/guides/cryptodevs/zuc.rst               | 14 ++++++++++----
 drivers/common/qat/meson.build              |  6 +++++-
 drivers/crypto/ipsec_mb/ipsec_mb_private.c  |  6 ++++++
 drivers/crypto/ipsec_mb/ipsec_mb_private.h  |  4 ++++
 drivers/crypto/ipsec_mb/meson.build         |  6 +++++-
 drivers/crypto/qat/qat_sym_session.c        |  4 ++++
 8 files changed, 48 insertions(+), 10 deletions(-)

diff --git a/app/test/test_cryptodev_hash_test_vectors.h b/app/test/test_cryptodev_hash_test_vectors.h
index f7a0981636..5bd7858de4 100644
--- a/app/test/test_cryptodev_hash_test_vectors.h
+++ b/app/test/test_cryptodev_hash_test_vectors.h
@@ -6,8 +6,12 @@
 #define TEST_CRYPTODEV_HASH_TEST_VECTORS_H_
 
 #ifdef RTE_CRYPTO_AESNI_MB
+#if defined(RTE_ARCH_ARM)
+#include <ipsec-mb.h>
+#else
 #include <intel-ipsec-mb.h>
 #endif
+#endif
 
 static const uint8_t plaintext_hash[] = {
 	"What a lousy earth! He wondered how many people "
diff --git a/doc/guides/cryptodevs/snow3g.rst b/doc/guides/cryptodevs/snow3g.rst
index ad97f7d913..02e857c0d2 100644
--- a/doc/guides/cryptodevs/snow3g.rst
+++ b/doc/guides/cryptodevs/snow3g.rst
@@ -33,11 +33,17 @@ Installation
 ------------
 
 To build DPDK with the SNOW3G_PMD the user is required to download the multi-buffer
-library from `here <https://github.com/01org/intel-ipsec-mb>`_
-and compile it on their user system before building DPDK.
+library and compile it on their user system before building DPDK.
+
+For x86 system, the multi-buffer library is available
+`here <https://github.com/01org/intel-ipsec-mb>`_.
 The latest version of the library supported by this PMD is v1.2, which
 can be downloaded from `<https://github.com/01org/intel-ipsec-mb/archive/v1.2.zip>`_.
 
+For Arm system, ARM64 port of the multi-buffer library can be downloaded from
+`<https://gitlab.arm.com/arm-reference-solutions/ipsec-mb/-/tree/main/>`_. The
+latest version of the library supported by this PMD is tagged as SECLIB-IPSEC-2022.05.25.
+
 After downloading the library, the user needs to unpack and compile it
 on their system before building DPDK:
 
@@ -46,8 +52,8 @@ on their system before building DPDK:
     make
     make install
 
-The library requires NASM to be built. Depending on the library version, it might
-require a minimum NASM version (e.g. v0.54 requires at least NASM 2.14).
+The library requires NASM to be built on x86. Depending on the library version,
+it might require a minimum NASM version (e.g. v0.54 requires at least NASM 2.14).
 
 NASM is packaged for different OS. However, on some OS the version is too old,
 so a manual installation is required. In that case, NASM can be downloaded from
diff --git a/doc/guides/cryptodevs/zuc.rst b/doc/guides/cryptodevs/zuc.rst
index ea930ae152..10d44b7393 100644
--- a/doc/guides/cryptodevs/zuc.rst
+++ b/doc/guides/cryptodevs/zuc.rst
@@ -33,11 +33,17 @@ Installation
 ------------
 
 To build DPDK with the ZUC_PMD the user is required to download the multi-buffer
-library from `here <https://github.com/01org/intel-ipsec-mb>`_
-and compile it on their user system before building DPDK.
+library and compile it on their user system before building DPDK.
+
+For x86 system, the multi-buffer library is available
+`here <https://github.com/01org/intel-ipsec-mb>`_.
 The latest version of the library supported by this PMD is v1.2, which
 can be downloaded from `<https://github.com/01org/intel-ipsec-mb/archive/v1.2.zip>`_.
 
+For Arm system, ARM64 port of the multi-buffer library can be downloaded from
+`<https://gitlab.arm.com/arm-reference-solutions/ipsec-mb/-/tree/main/>`_. The
+latest version of the library supported by this PMD is tagged as SECLIB-IPSEC-2022.05.25.
+
 After downloading the library, the user needs to unpack and compile it
 on their system before building DPDK:
 
@@ -46,8 +52,8 @@ on their system before building DPDK:
     make
     make install
 
-The library requires NASM to be built. Depending on the library version, it might
-require a minimum NASM version (e.g. v0.54 requires at least NASM 2.14).
+The library requires NASM to be built on x86. Depending on the library version,
+it might require a minimum NASM version (e.g. v0.54 requires at least NASM 2.14).
 
 NASM is packaged for different OS. However, on some OS the version is too old,
 so a manual installation is required. In that case, NASM can be downloaded from
diff --git a/drivers/common/qat/meson.build b/drivers/common/qat/meson.build
index 245c0fbe61..8e5116acb5 100644
--- a/drivers/common/qat/meson.build
+++ b/drivers/common/qat/meson.build
@@ -36,11 +36,15 @@ if qat_crypto and not libcrypto.found()
 endif
 
 IMB_required_ver = '1.2.0'
+IMB_header = '#include<intel-ipsec-mb.h>'
+if arch_subdir == 'arm'
+    IMB_header = '#include<ipsec-mb.h>'
+endif
 libipsecmb = cc.find_library('IPSec_MB', required: false)
 if libipsecmb.found()
     # version comes with quotes, so we split based on " and take the middle
     imb_ver = cc.get_define('IMB_VERSION_STR',
-        prefix : '#include<intel-ipsec-mb.h>').split('"')[1]
+        prefix : IMB_header).split('"')[1]
 
     if (imb_ver.version_compare('>=' + IMB_required_ver))
         ext_deps += libipsecmb
diff --git a/drivers/crypto/ipsec_mb/ipsec_mb_private.c b/drivers/crypto/ipsec_mb/ipsec_mb_private.c
index b555a28a0b..1bc9744f09 100644
--- a/drivers/crypto/ipsec_mb/ipsec_mb_private.c
+++ b/drivers/crypto/ipsec_mb/ipsec_mb_private.c
@@ -53,6 +53,12 @@ ipsec_mb_create(struct rte_vdev_device *vdev,
 	const char *name, *args;
 	int retval;
 
+#if defined(RTE_ARCH_ARM)
+	if ((pmd_type != IPSEC_MB_PMD_TYPE_SNOW3G) &&
+		(pmd_type != IPSEC_MB_PMD_TYPE_ZUC))
+		return -ENOTSUP;
+#endif
+
 #if defined(RTE_ARCH_ARM64)
 	vector_mode = IPSEC_MB_ARM64;
 #elif defined(RTE_ARCH_X86_64)
diff --git a/drivers/crypto/ipsec_mb/ipsec_mb_private.h b/drivers/crypto/ipsec_mb/ipsec_mb_private.h
index d0a1bcc360..d074b33133 100644
--- a/drivers/crypto/ipsec_mb/ipsec_mb_private.h
+++ b/drivers/crypto/ipsec_mb/ipsec_mb_private.h
@@ -5,7 +5,11 @@
 #ifndef _IPSEC_MB_PRIVATE_H_
 #define _IPSEC_MB_PRIVATE_H_
 
+#if defined(RTE_ARCH_ARM)
+#include <ipsec-mb.h>
+#else
 #include <intel-ipsec-mb.h>
+#endif
 #include <cryptodev_pmd.h>
 #include <rte_bus_vdev.h>
 
diff --git a/drivers/crypto/ipsec_mb/meson.build b/drivers/crypto/ipsec_mb/meson.build
index a89b29d6c3..64fc22611d 100644
--- a/drivers/crypto/ipsec_mb/meson.build
+++ b/drivers/crypto/ipsec_mb/meson.build
@@ -8,6 +8,10 @@ if is_windows
 endif
 
 IMB_required_ver = '1.0.0'
+IMB_header = '#include<intel-ipsec-mb.h>'
+if arch_subdir == 'arm'
+    IMB_header = '#include<ipsec-mb.h>'
+endif
 lib = cc.find_library('IPSec_MB', required: false)
 if not lib.found()
     build = false
@@ -17,7 +21,7 @@ else
 
     # version comes with quotes, so we split based on " and take the middle
     imb_ver = cc.get_define('IMB_VERSION_STR',
-        prefix : '#include<intel-ipsec-mb.h>').split('"')[1]
+        prefix : IMB_header).split('"')[1]
 
     if (imb_ver == '') or (imb_ver.version_compare('<' + IMB_required_ver))
         reason = 'IPSec_MB version >= @0@ is required, found version @1@'.format(
diff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c
index b30396487e..59922cb824 100644
--- a/drivers/crypto/qat/qat_sym_session.c
+++ b/drivers/crypto/qat/qat_sym_session.c
@@ -10,8 +10,12 @@
 #include <openssl/evp.h>	/* Needed for bpi runt block processing */
 
 #ifdef RTE_QAT_LIBIPSECMB
+#if defined(RTE_ARCH_ARM)
+#include <ipsec-mb.h>
+#else
 #include <intel-ipsec-mb.h>
 #endif
+#endif
 
 #include <rte_memcpy.h>
 #include <rte_common.h>
-- 
2.25.1


  parent reply	other threads:[~2022-07-27  8:14 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-27  8:13 [PATCH 0/2] IPsec on Arm Ruifeng Wang
2022-07-27  8:13 ` [PATCH 1/2] crypto/ipsec_mb: remove redundant includes Ruifeng Wang
2022-07-27  8:13 ` Ruifeng Wang [this message]
2022-07-27  8:34   ` [PATCH 2/2] crypto/ipsec_mb: enable IPsec on Arm platform David Marchand
2022-07-27  8:42     ` Ruifeng Wang
2022-07-27 17:42       ` Honnappa Nagarahalli
2022-07-27  8:50   ` Ashwin Sekhar T K
2022-08-16 15:57 ` [EXT] [PATCH 0/2] IPsec on Arm Akhil Goyal
2022-08-22  7:54 ` Zhang, Roy Fan
2022-08-22  8:38   ` Ruifeng Wang
2022-08-26  8:47   ` Akhil Goyal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220727081352.1333695-3-ruifeng.wang@arm.com \
    --to=ruifeng.wang@arm.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=gakhil@marvell.com \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=nd@arm.com \
    --cc=pablo.de.lara.guarch@intel.com \
    --cc=roy.fan.zhang@intel.com \
    --cc=sameh.gobriel@intel.com \
    --cc=vladimir.medvedkin@intel.com \
    --cc=yipeng1.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.