From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zbigniew Bodek Subject: Re: [PATCH v3 0/8] Add crypto PMD optimized for ARMv8 Date: Fri, 13 Jan 2017 19:59:26 +0100 Message-ID: <82638aad-780d-1909-6f3f-f46d0fcb9f0f@caviumnetworks.com> References: <1481077985-4224-2-git-send-email-zbigniew.bodek@caviumnetworks.com> <1483551207-18236-1-git-send-email-zbigniew.bodek@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Cc: , , To: Hemant Agrawal , Return-path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0064.outbound.protection.outlook.com [104.47.42.64]) by dpdk.org (Postfix) with ESMTP id 28E282C6B for ; Fri, 13 Jan 2017 19:59:42 +0100 (CET) In-Reply-To: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hello Hemant, Thank you for your remarks and comments. Please check my answer below. Kind regards Zbigniew On 13.01.2017 09:07, Hemant Agrawal wrote: > On 1/4/2017 11:03 PM, zbigniew.bodek@caviumnetworks.com wrote: >> From: Zbigniew Bodek >> >> Introduce crypto poll mode driver using ARMv8 >> cryptographic extensions. This PMD is optimized >> to provide performance boost for chained >> crypto operations processing, such as: >> * encryption + HMAC generation >> * decryption + HMAC validation. >> In particular, cipher only or hash only >> operations are not provided. > > Do you have a plan to add the crypto only, auth/hash only support into > this driver? OpenSSL driver is already implementing that and it is optimized for ARMv8. > Also, do you plan to add additional cases w.r.t supported by other > crypto driver? We may do it in the future but this depends on our resource availability. > >> Performance gain can be observed in tests >> against OpenSSL PMD which also uses ARM >> crypto extensions for packets processing. >> >> Exemplary crypto performance tests comparison: >> >> cipher_hash. cipher algo: AES_CBC >> auth algo: SHA1_HMAC cipher key size=16. >> burst_size: 64 ops >> >> ARMv8 PMD improvement over OpenSSL PMD >> (Optimized for ARMv8 cipher only and hash >> only cases): >> >> Buffer >> Size(B) OPS(M) Throughput(Gbps) >> 64 729 % 742 % >> 128 577 % 592 % >> 256 483 % 476 % >> 512 336 % 351 % >> 768 300 % 286 % >> 1024 263 % 250 % >> 1280 225 % 229 % >> 1536 214 % 213 % >> 1792 186 % 203 % >> 2048 200 % 193 % >> >> The driver currently supports AES-128-CBC >> in combination with: SHA256 HMAC and SHA1 HMAC. >> The core crypto functionality of this driver is >> provided by the external armv8_crypto library >> that can be downloaded from the Cavium repository: >> https://github.com/caviumnetworks/armv8_crypto >> >> CPU compatibility with this virtual device >> is detected in run-time and virtual crypto >> device will not be created if CPU doesn't >> provide AES, SHA1, SHA2 and NEON. >> >> The functionality and performance of this >> code can be tested using generic test application >> with the following commands: >> * cryptodev_sw_armv8_autotest >> * cryptodev_sw_armv8_perftest >> New test vectors and cases have been added >> to the general pool. In particular SHA1 and >> SHA256 HMAC for short cases were introduced. >> This is because low-level ARM assembly code >> is using different code paths for long and >> short data sets, so in order to test the >> mentioned driver correctly, two different >> data sets need to be provided. >> >> --- >> v3: >> * Addressed review remarks >> * Moved low-level assembly code to the external library >> * Removed SHA256 MAC cases >> * Various fixes: interface to the library, digest destination >> and source address interpreting, missing mbuf manipulations. >> >> v2: >> * Fixed checkpatch warnings >> * Divide patches into smaller logical parts >> >> Zbigniew Bodek (8): >> mk: fix build of assembly files for ARM64 >> lib: add cryptodev type for the upcoming ARMv8 PMD >> crypto/armv8: add PMD optimized for ARMv8 processors >> mk/crypto/armv8: add PMD to the build system >> doc/armv8: update documentation about crypto PMD >> crypto/armv8: enable ARMv8 PMD in the configuration >> crypto/armv8: update MAINTAINERS entry for ARMv8 crypto >> app/test: add ARMv8 crypto tests and test vectors >> >> MAINTAINERS | 6 + >> app/test/test_cryptodev.c | 63 ++ >> app/test/test_cryptodev_aes_test_vectors.h | 144 +++- >> app/test/test_cryptodev_blockcipher.c | 4 + >> app/test/test_cryptodev_blockcipher.h | 1 + >> app/test/test_cryptodev_perf.c | 480 +++++++++++++ >> config/common_base | 6 + >> doc/guides/cryptodevs/armv8.rst | 96 +++ >> doc/guides/cryptodevs/index.rst | 1 + >> doc/guides/rel_notes/release_17_02.rst | 5 + >> drivers/crypto/Makefile | 1 + >> drivers/crypto/armv8/Makefile | 73 ++ >> drivers/crypto/armv8/rte_armv8_pmd.c | 926 >> +++++++++++++++++++++++++ >> drivers/crypto/armv8/rte_armv8_pmd_ops.c | 369 ++++++++++ >> drivers/crypto/armv8/rte_armv8_pmd_private.h | 211 ++++++ >> drivers/crypto/armv8/rte_armv8_pmd_version.map | 3 + >> lib/librte_cryptodev/rte_cryptodev.h | 3 + >> mk/arch/arm64/rte.vars.mk | 1 - >> mk/rte.app.mk | 2 + >> mk/toolchain/gcc/rte.vars.mk | 6 +- >> 20 files changed, 2390 insertions(+), 11 deletions(-) >> create mode 100644 doc/guides/cryptodevs/armv8.rst >> create mode 100644 drivers/crypto/armv8/Makefile >> create mode 100644 drivers/crypto/armv8/rte_armv8_pmd.c >> create mode 100644 drivers/crypto/armv8/rte_armv8_pmd_ops.c >> create mode 100644 drivers/crypto/armv8/rte_armv8_pmd_private.h >> create mode 100644 drivers/crypto/armv8/rte_armv8_pmd_version.map >> > >