Re: [PATCH v5 0/7] Add crypto PMD optimized for ARMv8
From: Jerin Jacob <hidden>
Date: 2017-01-18 15:24:05
On Wed, Jan 18, 2017 at 03:27:23PM +0100, zbigniew.bodek@caviumnetworks.com wrote:
From: Zbigniew Bodek <redacted> 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. 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. --- v5: * Add user defined name initializing parameter (according to b8a661f15eb8) * Align with the current next-crypto master branch * Another changes to commit logs
Tested-by: Jerin Jacob <redacted> dpdk-crypto-next: changeset: 0f0099d86e9b0b0865837b70a09018b0e4bd8411 https://github.com/caviumnetworks/armv8_crypto.git changeset: 71258fb9fe100d411a53a247040e675fbae45e63