[PATCH] crypto/cnxk: changes to align with zuc256 v2 auth

Nithinsen Kaithakadan nkaithakadan at marvell.com
Fri Oct 23 13:40:50 CEST 2026


This patch add changes to align with ZUC 256 V2
authentication microcode support.

Signed-off-by: Nithinsen Kaithakadan <nkaithakadan at marvell.com>
---
 drivers/common/cnxk/roc_se.c                      | 5 +++++
 drivers/crypto/cnxk/cnxk_cryptodev_capabilities.c | 5 ++++-
 drivers/crypto/cnxk/cnxk_cryptodev_ops.c          | 2 +-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/common/cnxk/roc_se.c b/drivers/common/cnxk/roc_se.c
index 1cec536169..ce0e7fe84a 100644
--- a/drivers/common/cnxk/roc_se.c
+++ b/drivers/common/cnxk/roc_se.c
@@ -255,6 +255,11 @@ cpt_pdcp_chain_key_type_get(uint16_t key_len)
 static void
 cpt_zuc_const_update(uint8_t *zuc_const, int key_len, int mac_len)
 {
+	if (key_len == 32 && roc_model_is_cn20k()) {
+		memcpy(zuc_const, zuc_key256_v2, 16);
+		return;
+	}
+
 	if (key_len == 16) {
 		memcpy(zuc_const, zuc_key128, 32);
 	} else if (key_len == 32) {
diff --git a/drivers/crypto/cnxk/cnxk_cryptodev_capabilities.c b/drivers/crypto/cnxk/cnxk_cryptodev_capabilities.c
index 577f080ba7..b941567015 100644
--- a/drivers/crypto/cnxk/cnxk_cryptodev_capabilities.c
+++ b/drivers/crypto/cnxk/cnxk_cryptodev_capabilities.c
@@ -2091,7 +2091,10 @@ cn10k_20k_crypto_caps_update(struct rte_cryptodev_capabilities cnxk_caps[])
 			caps->sym.auth.key_size.increment = 16;
 			caps->sym.auth.digest_size.max = 16;
 			caps->sym.auth.digest_size.increment = 4;
-			caps->sym.auth.iv_size.max = 25;
+			if (roc_model_is_cn20k())
+				caps->sym.auth.iv_size.max = 16;
+			else
+				caps->sym.auth.iv_size.max = 25;
 			caps->sym.auth.iv_size.increment = 1;
 		}
 	}
diff --git a/drivers/crypto/cnxk/cnxk_cryptodev_ops.c b/drivers/crypto/cnxk/cnxk_cryptodev_ops.c
index a5b8aff146..14a4b0fff9 100644
--- a/drivers/crypto/cnxk/cnxk_cryptodev_ops.c
+++ b/drivers/crypto/cnxk/cnxk_cryptodev_ops.c
@@ -672,8 +672,8 @@ cnxk_sess_fill(struct roc_cpt *roc_cpt, struct rte_crypto_sym_xform *xform,
 	bool ciph_then_auth = false;
 
 	if (roc_model_is_cn20k()) {
-		sess->roc_se_ctx->pdcp_iv_len = 40;
 		sess->roc_se_ctx->pdcp_iv_offset = 16;
+		sess->roc_se_ctx->pdcp_iv_len = 32;
 	} else if (roc_cpt->hw_caps[CPT_ENG_TYPE_SE].pdcp_chain_zuc256) {
 		sess->roc_se_ctx->pdcp_iv_offset = 24;
 		sess->roc_se_ctx->pdcp_iv_len = 48;
-- 
2.34.1



More information about the dev mailing list