Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/113116 _apply patch failure_ Submitter: Tejasree Kondoj Date: Monday, June 20 2022 12:26:54 Applied on: CommitID:7342e612052ae3ec875ae018548324d29abfa9c2 Apply patch set 113116-113118 failed: Checking patch drivers/crypto/cnxk/cnxk_se.h... error: while searching for: memcpy(iv_d, iv_s, 16); } else { /* AES-CMAC EIA2, microcode expects 16B zeroized IV */ for (j = 0; j < 4; j++) iv_d[j] = 0; } } error: patch failed: drivers/crypto/cnxk/cnxk_se.h:82 Applying patch drivers/crypto/cnxk/cnxk_se.h with 1 reject... Rejected hunk #1. diff a/drivers/crypto/cnxk/cnxk_se.h b/drivers/crypto/cnxk/cnxk_se.h (rejected hunks) @@ -82,7 +82,7 @@ pdcp_iv_copy(uint8_t *iv_d, uint8_t *iv_s, const uint8_t pdcp_alg_type, memcpy(iv_d, iv_s, 16); } else { /* AES-CMAC EIA2, microcode expects 16B zeroized IV */ - for (j = 0; j < 4; j++) + for (j = 0; j < 16; j++) iv_d[j] = 0; } } Checking patch drivers/common/cnxk/roc_se.c... error: while searching for: /* For ZUC/SNOW3G/Kasumi */ switch (type) { case ROC_SE_SNOW3G_UIA2: zs_ctx->zuc.otk_ctx.w0.s.alg_type = ROC_SE_PDCP_ALG_TYPE_SNOW3G; zs_ctx->zuc.otk_ctx.w0.s.mac_len = ROC_SE_PDCP_MAC_LEN_32_BIT; se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_SNOW3G; cpt_snow3g_key_gen(key, keyx); memcpy(ci_key, keyx, key_len); se_ctx->fc_type = ROC_SE_PDCP; se_ctx->zsk_flags = 0x1; break; case ROC_SE_ZUC_EIA3: zs_ctx->zuc.otk_ctx.w0.s.alg_type = ROC_SE_PDCP_ALG_TYPE_ZUC; ret = cpt_pdcp_key_type_set(zs_ctx, key_len); if (ret) return ret; ret = cpt_pdcp_mac_len_set(zs_ctx, mac_len); if (ret) return ret; se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_ZUC; memcpy(ci_key, key, key_len); if (key_len == 32) roc_se_zuc_bytes_swap(ci_key, key_len); cpt_pdcp_update_zuc_const(zuc_const, key_len, mac_len); se_ctx->fc_type = ROC_SE_PDCP; se_ctx->zsk_flags = 0x1; break; case ROC_SE_AES_CMAC_EIA2: zs_ctx->zuc.otk_ctx.w0.s.alg_type = ROC_SE_PDCP_ALG_TYPE_AES_CTR; zs_ctx->zuc.otk_ctx.w0.s.mac_len = ROC_SE_PDCP_MAC_LEN_32_BIT; se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_AES_CTR; memcpy(ci_key, key, key_len); se_ctx->fc_type = ROC_SE_PDCP; se_ctx->zsk_flags = 0x1; break; case ROC_SE_KASUMI_F9_ECB: error: patch failed: drivers/common/cnxk/roc_se.c:262 Hunk #7 succeeded at 342 (offset -49 lines). Hunk #8 succeeded at 394 (offset -49 lines). error: while searching for: memcpy(fctx->hmac.ipad, &key[key_len], key_len); break; case ROC_SE_SNOW3G_UEA2: zs_ctx->zuc.otk_ctx.w0.s.key_len = ROC_SE_AES_128_BIT; zs_ctx->zuc.otk_ctx.w0.s.alg_type = ROC_SE_PDCP_ALG_TYPE_SNOW3G; se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_SNOW3G; cpt_snow3g_key_gen(key, keyx); memcpy(ci_key, keyx, key_len); se_ctx->zsk_flags = 0; goto success; case ROC_SE_ZUC_EEA3: ret = cpt_pdcp_key_type_set(zs_ctx, key_len); if (ret) return ret; zs_ctx->zuc.otk_ctx.w0.s.alg_type = ROC_SE_PDCP_ALG_TYPE_ZUC; se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_ZUC; memcpy(ci_key, key, key_len); if (key_len == 32) { roc_se_zuc_bytes_swap(ci_key, key_len); memcpy(zuc_const, zuc_key256, 16); } else memcpy(zuc_const, zuc_key128, 32); se_ctx->zsk_flags = 0; goto success; case ROC_SE_AES_CTR_EEA2: zs_ctx->zuc.otk_ctx.w0.s.key_len = ROC_SE_AES_128_BIT; zs_ctx->zuc.otk_ctx.w0.s.alg_type = ROC_SE_PDCP_ALG_TYPE_AES_CTR; se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_AES_CTR; memcpy(ci_key, key, key_len); se_ctx->zsk_flags = 0; goto success; case ROC_SE_KASUMI_F8_ECB: error: patch failed: drivers/common/cnxk/roc_se.c:447 Hunk #10 succeeded at 537 (offset -89 lines). Checking patch drivers/common/cnxk/roc_se.h... Checking patch drivers/crypto/cnxk/cnxk_cryptodev_ops.c... Checking patch drivers/crypto/cnxk/cnxk_se.h... Hunk #2 succeeded at 69 (offset 1 line). error: while searching for: for (j = 0; j < 4; j++) iv_temp[j] = iv_s_temp[3 - j]; memcpy(iv_d, iv_temp, 16); } else if (pdcp_alg_type == ROC_SE_PDCP_ALG_TYPE_ZUC) { if (pack_iv) { cpt_pack_iv(iv_s, iv_d); memcpy(iv_d + 6, iv_s + 8, 17); error: patch failed: drivers/crypto/cnxk/cnxk_se.h:74 Hunk #4 succeeded at 1007 (offset -1 lines). Hunk #5 succeeded at 1132 (offset -1 lines). Hunk #6 succeeded at 1145 (offset -1 lines). error: while searching for: } else { iv_s = params->iv_buf; iv_len = params->cipher_iv_len; if (iv_len == 25) { roc_se_zuc_bytes_swap(iv_s, iv_len); error: patch failed: drivers/crypto/cnxk/cnxk_se.h:1067 Hunk #8 succeeded at 1721 (offset -4 lines). Hunk #9 succeeded at 1755 (offset -4 lines). Hunk #10 succeeded at 1831 (offset -4 lines). Hunk #11 succeeded at 1868 (offset -4 lines). Hunk #12 succeeded at 1929 (offset -4 lines). Hunk #13 succeeded at 1961 (offset -4 lines). Hunk #14 succeeded at 2018 (offset -4 lines). Hunk #15 succeeded at 2056 (offset -4 lines). Hunk #16 succeeded at 2277 (offset -4 lines). Hunk #17 succeeded at 2303 (offset -4 lines). Hunk #18 succeeded at 2364 (offset -4 lines). Hunk #19 succeeded at 2426 (offset -4 lines). Hunk #20 succeeded at 2483 (offset -4 lines). Applying patch drivers/common/cnxk/roc_se.c with 2 rejects... Hunk #1 applied cleanly. Hunk #2 applied cleanly. Hunk #3 applied cleanly. Hunk #4 applied cleanly. Hunk #5 applied cleanly. Rejected hunk #6. Hunk #7 applied cleanly. Hunk #8 applied cleanly. Rejected hunk #9. Hunk #10 applied cleanly. Applied patch drivers/common/cnxk/roc_se.h cleanly. Applied patch drivers/crypto/cnxk/cnxk_cryptodev_ops.c cleanly. Applying patch drivers/crypto/cnxk/cnxk_se.h with 2 rejects... Hunk #1 applied cleanly. Hunk #2 applied cleanly. Rejected hunk #3. Hunk #4 applied cleanly. Hunk #5 applied cleanly. Hunk #6 applied cleanly. Rejected hunk #7. Hunk #8 applied cleanly. Hunk #9 applied cleanly. Hunk #10 applied cleanly. Hunk #11 applied cleanly. Hunk #12 applied cleanly. Hunk #13 applied cleanly. Hunk #14 applied cleanly. Hunk #15 applied cleanly. Hunk #16 applied cleanly. Hunk #17 applied cleanly. Hunk #18 applied cleanly. Hunk #19 applied cleanly. Hunk #20 applied cleanly. diff a/drivers/common/cnxk/roc_se.c b/drivers/common/cnxk/roc_se.c (rejected hunks) @@ -262,41 +290,88 @@ roc_se_auth_key_set(struct roc_se_ctx *se_ctx, roc_se_auth_type type, /* For ZUC/SNOW3G/Kasumi */ switch (type) { case ROC_SE_SNOW3G_UIA2: - zs_ctx->zuc.otk_ctx.w0.s.alg_type = - ROC_SE_PDCP_ALG_TYPE_SNOW3G; - zs_ctx->zuc.otk_ctx.w0.s.mac_len = - ROC_SE_PDCP_MAC_LEN_32_BIT; - se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_SNOW3G; - cpt_snow3g_key_gen(key, keyx); - memcpy(ci_key, keyx, key_len); - se_ctx->fc_type = ROC_SE_PDCP; + if (chained_op) { + struct roc_se_onk_zuc_chain_ctx *ctx = + &zs_ch_ctx->zuc.onk_ctx; + zs_ch_ctx->zuc.onk_ctx.w0.s.state_conf = + ROC_SE_PDCP_CHAIN_CTX_KEY_IV; + ctx->w0.s.auth_type = + ROC_SE_PDCP_CHAIN_ALG_TYPE_SNOW3G; + ctx->w0.s.mac_len = mac_len; + ctx->w0.s.auth_key_len = key_len; + se_ctx->fc_type = ROC_SE_PDCP_CHAIN; + cpt_snow3g_key_gen(key, keyx); + memcpy(ctx->st.auth_key, keyx, key_len); + } else { + zs_ctx->zuc.otk_ctx.w0.s.alg_type = + ROC_SE_PDCP_ALG_TYPE_SNOW3G; + zs_ctx->zuc.otk_ctx.w0.s.mac_len = + ROC_SE_PDCP_MAC_LEN_32_BIT; + cpt_snow3g_key_gen(key, keyx); + memcpy(ci_key, keyx, key_len); + se_ctx->fc_type = ROC_SE_PDCP; + } + se_ctx->pdcp_auth_alg = ROC_SE_PDCP_ALG_TYPE_SNOW3G; se_ctx->zsk_flags = 0x1; break; case ROC_SE_ZUC_EIA3: - zs_ctx->zuc.otk_ctx.w0.s.alg_type = - ROC_SE_PDCP_ALG_TYPE_ZUC; - ret = cpt_pdcp_key_type_set(zs_ctx, key_len); - if (ret) - return ret; - ret = cpt_pdcp_mac_len_set(zs_ctx, mac_len); - if (ret) - return ret; - se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_ZUC; - memcpy(ci_key, key, key_len); - if (key_len == 32) - roc_se_zuc_bytes_swap(ci_key, key_len); - cpt_pdcp_update_zuc_const(zuc_const, key_len, mac_len); - se_ctx->fc_type = ROC_SE_PDCP; + if (chained_op) { + struct roc_se_onk_zuc_chain_ctx *ctx = + &zs_ch_ctx->zuc.onk_ctx; + ctx->w0.s.state_conf = + ROC_SE_PDCP_CHAIN_CTX_KEY_IV; + ctx->w0.s.auth_type = + ROC_SE_PDCP_CHAIN_ALG_TYPE_ZUC; + ctx->w0.s.mac_len = mac_len; + ctx->w0.s.auth_key_len = key_len; + memcpy(ctx->st.auth_key, key, key_len); + cpt_zuc_const_update(ctx->st.auth_zuc_const, + key_len, mac_len); + se_ctx->fc_type = ROC_SE_PDCP_CHAIN; + } else { + zs_ctx->zuc.otk_ctx.w0.s.alg_type = + ROC_SE_PDCP_ALG_TYPE_ZUC; + ret = cpt_pdcp_key_type_set(zs_ctx, key_len); + if (ret) + return ret; + ret = cpt_pdcp_mac_len_set(zs_ctx, mac_len); + if (ret) + return ret; + memcpy(ci_key, key, key_len); + if (key_len == 32) + roc_se_zuc_bytes_swap(ci_key, key_len); + cpt_zuc_const_update(zuc_const, key_len, + mac_len); + se_ctx->fc_type = ROC_SE_PDCP; + } + se_ctx->pdcp_auth_alg = ROC_SE_PDCP_ALG_TYPE_ZUC; se_ctx->zsk_flags = 0x1; break; case ROC_SE_AES_CMAC_EIA2: - zs_ctx->zuc.otk_ctx.w0.s.alg_type = - ROC_SE_PDCP_ALG_TYPE_AES_CTR; - zs_ctx->zuc.otk_ctx.w0.s.mac_len = - ROC_SE_PDCP_MAC_LEN_32_BIT; - se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_AES_CTR; - memcpy(ci_key, key, key_len); - se_ctx->fc_type = ROC_SE_PDCP; + if (chained_op) { + struct roc_se_onk_zuc_chain_ctx *ctx = + &zs_ch_ctx->zuc.onk_ctx; + int key_type; + key_type = cpt_pdcp_chain_key_type_get(key_len); + if (key_type < 0) + return key_type; + ctx->w0.s.auth_key_len = key_type; + ctx->w0.s.state_conf = + ROC_SE_PDCP_CHAIN_CTX_KEY_IV; + ctx->w0.s.auth_type = + ROC_SE_PDCP_ALG_TYPE_AES_CTR; + ctx->w0.s.mac_len = mac_len; + memcpy(ctx->st.auth_key, key, key_len); + se_ctx->fc_type = ROC_SE_PDCP_CHAIN; + } else { + zs_ctx->zuc.otk_ctx.w0.s.alg_type = + ROC_SE_PDCP_ALG_TYPE_AES_CTR; + zs_ctx->zuc.otk_ctx.w0.s.mac_len = + ROC_SE_PDCP_MAC_LEN_32_BIT; + memcpy(ci_key, key, key_len); + se_ctx->fc_type = ROC_SE_PDCP; + } + se_ctx->pdcp_auth_alg = ROC_SE_PDCP_ALG_TYPE_AES_CMAC; se_ctx->zsk_flags = 0x1; break; case ROC_SE_KASUMI_F9_ECB: @@ -447,34 +532,73 @@ roc_se_ciph_key_set(struct roc_se_ctx *se_ctx, roc_se_cipher_type type, memcpy(fctx->hmac.ipad, &key[key_len], key_len); break; case ROC_SE_SNOW3G_UEA2: - zs_ctx->zuc.otk_ctx.w0.s.key_len = ROC_SE_AES_128_BIT; - zs_ctx->zuc.otk_ctx.w0.s.alg_type = ROC_SE_PDCP_ALG_TYPE_SNOW3G; - se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_SNOW3G; - cpt_snow3g_key_gen(key, keyx); - memcpy(ci_key, keyx, key_len); + if (chained_op == true) { + struct roc_se_onk_zuc_chain_ctx *ctx = + &zs_ch_ctx->zuc.onk_ctx; + zs_ch_ctx->zuc.onk_ctx.w0.s.state_conf = + ROC_SE_PDCP_CHAIN_CTX_KEY_IV; + zs_ch_ctx->zuc.onk_ctx.w0.s.cipher_type = + ROC_SE_PDCP_CHAIN_ALG_TYPE_SNOW3G; + zs_ch_ctx->zuc.onk_ctx.w0.s.ci_key_len = key_len; + cpt_snow3g_key_gen(key, keyx); + memcpy(ctx->st.ci_key, keyx, key_len); + } else { + zs_ctx->zuc.otk_ctx.w0.s.key_len = ROC_SE_AES_128_BIT; + zs_ctx->zuc.otk_ctx.w0.s.alg_type = + ROC_SE_PDCP_ALG_TYPE_SNOW3G; + cpt_snow3g_key_gen(key, keyx); + memcpy(ci_key, keyx, key_len); + } + se_ctx->pdcp_ci_alg = ROC_SE_PDCP_ALG_TYPE_SNOW3G; se_ctx->zsk_flags = 0; goto success; case ROC_SE_ZUC_EEA3: - ret = cpt_pdcp_key_type_set(zs_ctx, key_len); - if (ret) - return ret; - zs_ctx->zuc.otk_ctx.w0.s.alg_type = ROC_SE_PDCP_ALG_TYPE_ZUC; - se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_ZUC; - memcpy(ci_key, key, key_len); - if (key_len == 32) { - roc_se_zuc_bytes_swap(ci_key, key_len); - memcpy(zuc_const, zuc_key256, 16); - } else - memcpy(zuc_const, zuc_key128, 32); + if (chained_op == true) { + struct roc_se_onk_zuc_chain_ctx *ctx = + &zs_ch_ctx->zuc.onk_ctx; + zs_ch_ctx->zuc.onk_ctx.w0.s.state_conf = + ROC_SE_PDCP_CHAIN_CTX_KEY_IV; + zs_ch_ctx->zuc.onk_ctx.w0.s.cipher_type = + ROC_SE_PDCP_CHAIN_ALG_TYPE_ZUC; + memcpy(ctx->st.ci_key, key, key_len); + memcpy(ctx->st.ci_zuc_const, zuc_key128, 32); + zs_ch_ctx->zuc.onk_ctx.w0.s.ci_key_len = key_len; + } else { + ret = cpt_pdcp_key_type_set(zs_ctx, key_len); + if (ret) + return ret; + zs_ctx->zuc.otk_ctx.w0.s.alg_type = + ROC_SE_PDCP_ALG_TYPE_ZUC; + memcpy(ci_key, key, key_len); + if (key_len == 32) { + roc_se_zuc_bytes_swap(ci_key, key_len); + memcpy(zuc_const, zuc_key256, 16); + } else + memcpy(zuc_const, zuc_key128, 32); + } + se_ctx->pdcp_ci_alg = ROC_SE_PDCP_ALG_TYPE_ZUC; se_ctx->zsk_flags = 0; goto success; case ROC_SE_AES_CTR_EEA2: - zs_ctx->zuc.otk_ctx.w0.s.key_len = ROC_SE_AES_128_BIT; - zs_ctx->zuc.otk_ctx.w0.s.alg_type = - ROC_SE_PDCP_ALG_TYPE_AES_CTR; - se_ctx->pdcp_alg_type = ROC_SE_PDCP_ALG_TYPE_AES_CTR; - memcpy(ci_key, key, key_len); + if (chained_op == true) { + struct roc_se_onk_zuc_chain_ctx *ctx = + &zs_ch_ctx->zuc.onk_ctx; + int key_type; + key_type = cpt_pdcp_chain_key_type_get(key_len); + if (key_type < 0) + return key_type; + ctx->w0.s.ci_key_len = key_type; + ctx->w0.s.state_conf = ROC_SE_PDCP_CHAIN_CTX_KEY_IV; + ctx->w0.s.cipher_type = ROC_SE_PDCP_ALG_TYPE_AES_CTR; + memcpy(ctx->st.ci_key, key, key_len); + } else { + zs_ctx->zuc.otk_ctx.w0.s.key_len = ROC_SE_AES_128_BIT; + zs_ctx->zuc.otk_ctx.w0.s.alg_type = + ROC_SE_PDCP_ALG_TYPE_AES_CTR; + memcpy(ci_key, key, key_len); + } + se_ctx->pdcp_ci_alg = ROC_SE_PDCP_ALG_TYPE_AES_CTR; se_ctx->zsk_flags = 0; goto success; case ROC_SE_KASUMI_F8_ECB: diff a/drivers/crypto/cnxk/cnxk_se.h b/drivers/crypto/cnxk/cnxk_se.h (rejected hunks) @@ -74,7 +84,8 @@ pdcp_iv_copy(uint8_t *iv_d, uint8_t *iv_s, const uint8_t pdcp_alg_type, for (j = 0; j < 4; j++) iv_temp[j] = iv_s_temp[3 - j]; memcpy(iv_d, iv_temp, 16); - } else if (pdcp_alg_type == ROC_SE_PDCP_ALG_TYPE_ZUC) { + } else if ((pdcp_alg_type == ROC_SE_PDCP_ALG_TYPE_ZUC) || + pdcp_alg_type == ROC_SE_PDCP_ALG_TYPE_AES_CTR) { if (pack_iv) { cpt_pack_iv(iv_s, iv_d); memcpy(iv_d + 6, iv_s + 8, 17); @@ -1067,6 +1182,7 @@ cpt_pdcp_alg_prep(uint32_t req_flags, uint64_t d_offs, uint64_t d_lens, } else { iv_s = params->iv_buf; iv_len = params->cipher_iv_len; + pdcp_alg_type = se_ctx->pdcp_ci_alg; if (iv_len == 25) { roc_se_zuc_bytes_swap(iv_s, iv_len); Checking patch drivers/crypto/cnxk/cnxk_se.h... error: drivers/crypto/cnxk/cnxk_se.h: does not match index https://lab.dpdk.org/results/dashboard/patchsets/22700/ UNH-IOL DPDK Community Lab