@@ -287,32 +287,6 @@ struct roc_se_iov_ptr {
struct roc_se_buf_ptr bufs[];
};
-struct roc_se_fc_params {
- /* 0th cache line */
- union {
- struct roc_se_buf_ptr bufs[1];
- struct {
- struct roc_se_iov_ptr *src_iov;
- struct roc_se_iov_ptr *dst_iov;
- };
- };
- void *iv_buf;
- void *auth_iv_buf;
- struct roc_se_buf_ptr meta_buf;
- struct roc_se_buf_ptr ctx_buf;
- uint32_t rsvd2;
- uint8_t rsvd3;
- uint8_t iv_ovr;
- uint8_t cipher_iv_len;
- uint8_t auth_iv_len;
-
- /* 1st cache line */
- struct roc_se_buf_ptr aad_buf __plt_cache_aligned;
- struct roc_se_buf_ptr mac_buf;
-};
-
-PLT_STATIC_ASSERT((offsetof(struct roc_se_fc_params, aad_buf) % 128) == 0);
-
#define ROC_SE_PDCP_ALG_TYPE_ZUC 0
#define ROC_SE_PDCP_ALG_TYPE_SNOW3G 1
#define ROC_SE_PDCP_ALG_TYPE_AES_CTR 2
@@ -349,6 +323,25 @@ struct roc_se_ctx {
uint8_t *auth_key;
};
+struct roc_se_fc_params {
+ union {
+ struct roc_se_buf_ptr bufs[1];
+ struct {
+ struct roc_se_iov_ptr *src_iov;
+ struct roc_se_iov_ptr *dst_iov;
+ };
+ };
+ void *iv_buf;
+ void *auth_iv_buf;
+ struct roc_se_ctx *ctx;
+ struct roc_se_buf_ptr meta_buf;
+ uint8_t cipher_iv_len;
+ uint8_t auth_iv_len;
+
+ struct roc_se_buf_ptr aad_buf;
+ struct roc_se_buf_ptr mac_buf;
+};
+
static inline void
roc_se_zuc_bytes_swap(uint8_t *arr, int len)
{
@@ -334,7 +334,7 @@ cpt_digest_gen_prep(uint32_t flags, uint64_t d_lens,
uint32_t g_size_bytes, s_size_bytes;
union cpt_inst_w4 cpt_inst_w4;
- ctx = params->ctx_buf.vaddr;
+ ctx = params->ctx;
hash_type = ctx->hash_type;
mac_len = ctx->mac_len;
@@ -478,7 +478,8 @@ cpt_enc_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens,
aad_len = fc_params->aad_buf.size;
aad_buf = &fc_params->aad_buf;
}
- se_ctx = fc_params->ctx_buf.vaddr;
+
+ se_ctx = fc_params->ctx;
cipher_type = se_ctx->enc_cipher;
hash_type = se_ctx->hash_type;
mac_len = se_ctx->mac_len;
@@ -777,7 +778,7 @@ cpt_dec_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens,
aad_buf = &fc_params->aad_buf;
}
- se_ctx = fc_params->ctx_buf.vaddr;
+ se_ctx = fc_params->ctx;
hash_type = se_ctx->hash_type;
mac_len = se_ctx->mac_len;
op_minor = se_ctx->template_w4.s.opcode_minor;
@@ -1087,7 +1088,7 @@ cpt_pdcp_chain_alg_prep(uint32_t req_flags, uint64_t d_offs, uint64_t d_lens,
return -1;
}
- se_ctx = params->ctx_buf.vaddr;
+ se_ctx = params->ctx;
mac_len = se_ctx->mac_len;
pdcp_ci_alg = se_ctx->pdcp_ci_alg;
pdcp_auth_alg = se_ctx->pdcp_auth_alg;
@@ -1281,7 +1282,7 @@ cpt_pdcp_alg_prep(uint32_t req_flags, uint64_t d_offs, uint64_t d_lens,
uint8_t pack_iv = 0;
union cpt_inst_w4 cpt_inst_w4;
- se_ctx = params->ctx_buf.vaddr;
+ se_ctx = params->ctx;
flags = se_ctx->zsk_flags;
mac_len = se_ctx->mac_len;
@@ -1562,7 +1563,7 @@ cpt_kasumi_enc_prep(uint32_t req_flags, uint64_t d_offs, uint64_t d_lens,
encr_data_len = ROC_SE_ENCR_DLEN(d_lens);
auth_data_len = ROC_SE_AUTH_DLEN(d_lens);
- se_ctx = params->ctx_buf.vaddr;
+ se_ctx = params->ctx;
flags = se_ctx->zsk_flags;
mac_len = se_ctx->mac_len;
@@ -1751,7 +1752,7 @@ cpt_kasumi_dec_prep(uint64_t d_offs, uint64_t d_lens,
encr_offset = ROC_SE_ENCR_OFFSET(d_offs) / 8;
encr_data_len = ROC_SE_ENCR_DLEN(d_lens);
- se_ctx = params->ctx_buf.vaddr;
+ se_ctx = params->ctx;
flags = se_ctx->zsk_flags;
cpt_inst_w4.u64 = 0;
@@ -1863,7 +1864,7 @@ static __rte_always_inline int
cpt_fc_enc_hmac_prep(uint32_t flags, uint64_t d_offs, uint64_t d_lens,
struct roc_se_fc_params *fc_params, struct cpt_inst_s *inst)
{
- struct roc_se_ctx *ctx = fc_params->ctx_buf.vaddr;
+ struct roc_se_ctx *ctx = fc_params->ctx;
uint8_t fc_type;
int ret = -1;
@@ -2408,7 +2409,7 @@ fill_fc_params(struct rte_crypto_op *cop, struct cnxk_se_sess *sess,
flags |= ROC_SE_VALID_IV_BUF;
fc_params.iv_buf = rte_crypto_op_ctod_offset(cop, uint8_t *,
sess->iv_offset);
- if (sess->aes_ctr && unlikely(sess->iv_length != 16)) {
+ if (!is_aead && sess->aes_ctr && unlikely(sess->iv_length != 16)) {
memcpy((uint8_t *)iv_buf,
rte_crypto_op_ctod_offset(cop, uint8_t *,
sess->iv_offset),
@@ -2523,7 +2524,7 @@ fill_fc_params(struct rte_crypto_op *cop, struct cnxk_se_sess *sess,
}
}
}
- fc_params.ctx_buf.vaddr = &sess->roc_se_ctx;
+ fc_params.ctx = &sess->roc_se_ctx;
if (!(sess->auth_first) && unlikely(sess->is_null || sess->cpt_op == ROC_SE_OP_DECODE))
inplace = 0;
@@ -2651,7 +2652,7 @@ fill_pdcp_params(struct rte_crypto_op *cop, struct cnxk_se_sess *sess,
d_offs = (uint64_t)c_data_off << 16;
d_lens = (uint64_t)c_data_len << 32;
- fc_params.ctx_buf.vaddr = &sess->roc_se_ctx;
+ fc_params.ctx = &sess->roc_se_ctx;
if (likely(m_dst == NULL || m_src == m_dst)) {
fc_params.dst_iov = fc_params.src_iov = (void *)src;
@@ -2794,7 +2795,7 @@ fill_pdcp_chain_params(struct rte_crypto_op *cop, struct cnxk_se_sess *sess,
ci_data_length, true);
}
- fc_params.ctx_buf.vaddr = &sess->roc_se_ctx;
+ fc_params.ctx = &sess->roc_se_ctx;
if (likely((m_dst == NULL || m_dst == m_src)) && inplace) {
fc_params.dst_iov = fc_params.src_iov = (void *)src;
@@ -2993,7 +2994,7 @@ fill_digest_params(struct rte_crypto_op *cop, struct cnxk_se_sess *sess,
d_lens = sym_op->auth.data.length;
- params.ctx_buf.vaddr = &sess->roc_se_ctx;
+ params.ctx = &sess->roc_se_ctx;
if (auth_op == ROC_SE_OP_AUTH_GENERATE) {
if (sym_op->auth.digest.data) {