[v2] crypto/aesni_mb: support AES-CCM-256

Message ID 20201009121859.196736-1-pablo.de.lara.guarch@intel.com (mailing list archive)
State Accepted, archived
Delegated to: akhil goyal
Headers
Series [v2] crypto/aesni_mb: support AES-CCM-256 |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/Intel-compilation fail apply issues

Commit Message

De Lara Guarch, Pablo Oct. 9, 2020, 12:18 p.m. UTC
  This patch adds support for AES-CCM-256 when using AESNI-MB

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

---

This patch depends on series http://patches.dpdk.org/project/dpdk/list/?series=12822.

Changes:

v2 :

 - Fixed session creation
 - Rebased on top of crypto subtree

---

 doc/guides/cryptodevs/features/aesni_mb.ini    | 1 +
 doc/guides/rel_notes/release_20_11.rst         | 1 +
 drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c     | 6 ++++++
 drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c | 5 +++++
 4 files changed, 13 insertions(+)
  

Comments

Akhil Goyal Oct. 12, 2020, 3:03 p.m. UTC | #1
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Pablo de Lara
> Sent: Friday, October 9, 2020 5:49 PM
> To: declan.doherty@intel.com
> Cc: dev@dpdk.org; Pablo de Lara <pablo.de.lara.guarch@intel.com>
> Subject: [dpdk-dev] [PATCH v2] crypto/aesni_mb: support AES-CCM-256
> 
> This patch adds support for AES-CCM-256 when using AESNI-MB
> 
> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
> 
> ---

Applied to dpdk-next-crypto

Thanks.
  

Patch

diff --git a/doc/guides/cryptodevs/features/aesni_mb.ini b/doc/guides/cryptodevs/features/aesni_mb.ini
index f391c3f38..9ebd32000 100644
--- a/doc/guides/cryptodevs/features/aesni_mb.ini
+++ b/doc/guides/cryptodevs/features/aesni_mb.ini
@@ -64,6 +64,7 @@  KASUMI F9    = Y
 ;
 [AEAD]
 AES CCM (128)     = Y
+AES CCM (256)     = Y
 AES GCM (128)     = Y
 AES GCM (192)     = Y
 AES GCM (256)     = Y
diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst
index 0e0b741b3..efae5784c 100644
--- a/doc/guides/rel_notes/release_20_11.rst
+++ b/doc/guides/rel_notes/release_20_11.rst
@@ -81,6 +81,7 @@  New Features
   * Added support for SNOW3G-UEA2/UIA2 algorithms.
   * Added support for KASUMI-F8/F9 algorithms.
   * Added support for Chacha20-Poly1305.
+  * Added support for AES-256 CCM algorithm.
 
 * **Updated the aesni_gcm crypto PMD.**
 
diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
index 42c23201a..db0910915 100644
--- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
+++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
@@ -686,6 +686,12 @@  aesni_mb_set_session_aead_parameters(const MB_MGR *mb_mgr,
 					sess->cipher.expanded_aes_keys.encode,
 					sess->cipher.expanded_aes_keys.decode);
 			break;
+		case AES_256_BYTES:
+			sess->cipher.key_length_in_bytes = AES_256_BYTES;
+			IMB_AES_KEYEXP_256(mb_mgr, xform->aead.key.data,
+					sess->cipher.expanded_aes_keys.encode,
+					sess->cipher.expanded_aes_keys.decode);
+			break;
 		default:
 			AESNI_MB_LOG(ERR, "Invalid cipher key length");
 			return -EINVAL;
diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c
index e8cb57ea9..3eb46d714 100644
--- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c
+++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c
@@ -400,8 +400,13 @@  static const struct rte_cryptodev_capabilities aesni_mb_pmd_capabilities[] = {
 				.block_size = 16,
 				.key_size = {
 					.min = 16,
+#if IMB_VERSION(0, 54, 2) <= IMB_VERSION_NUM
+					.max = 32,
+					.increment = 16
+#else
 					.max = 16,
 					.increment = 0
+#endif
 				},
 				.digest_size = {
 					.min = 4,