From: Anoob Joseph <ano...@marvell.com> When performing crypto offload, the packet length of the input/output buffer does not matter. The length that matters is the cipher/authentication range specified in crypto_op. Since application can request for ciphering of a small portion of the buffer, the extra comparison of buffer lengths may result in false failures during enqueue of OOP operations.
Signed-off-by: Anoob Joseph <ano...@marvell.com> --- drivers/crypto/cnxk/cnxk_se.h | 54 +++-------------------------------- 1 file changed, 4 insertions(+), 50 deletions(-) diff --git a/drivers/crypto/cnxk/cnxk_se.h b/drivers/crypto/cnxk/cnxk_se.h index a85e4c5170..87414eb131 100644 --- a/drivers/crypto/cnxk/cnxk_se.h +++ b/drivers/crypto/cnxk/cnxk_se.h @@ -2539,23 +2539,6 @@ fill_fc_params(struct rte_crypto_op *cop, struct cnxk_se_sess *sess, } if (unlikely(m_dst != NULL)) { - uint32_t pkt_len; - - /* Try to make room as much as src has */ - pkt_len = rte_pktmbuf_pkt_len(m_dst); - - if (unlikely(pkt_len < rte_pktmbuf_pkt_len(m_src))) { - pkt_len = rte_pktmbuf_pkt_len(m_src) - pkt_len; - if (!rte_pktmbuf_append(m_dst, pkt_len)) { - plt_dp_err("Not enough space in " - "m_dst %p, need %u" - " more", - m_dst, pkt_len); - ret = -EINVAL; - goto err_exit; - } - } - if (prepare_iov_from_pkt(m_dst, fc_params.dst_iov, 0)) { plt_dp_err("Prepare dst iov failed for " "m_dst %p", @@ -2650,32 +2633,18 @@ fill_pdcp_params(struct rte_crypto_op *cop, struct cnxk_se_sess *sess, fc_params.dst_iov = fc_params.src_iov = (void *)src; prepare_iov_from_pkt_inplace(m_src, &fc_params, &flags); } else { - uint32_t pkt_len; - /* Out of place processing */ + fc_params.src_iov = (void *)src; fc_params.dst_iov = (void *)dst; /* Store SG I/O in the api for reuse */ - if (prepare_iov_from_pkt(m_src, fc_params.src_iov, 0)) { + if (unlikely(prepare_iov_from_pkt(m_src, fc_params.src_iov, 0))) { plt_dp_err("Prepare src iov failed"); ret = -EINVAL; goto err_exit; } - /* Try to make room as much as src has */ - pkt_len = rte_pktmbuf_pkt_len(m_dst); - - if (unlikely(pkt_len < rte_pktmbuf_pkt_len(m_src))) { - pkt_len = rte_pktmbuf_pkt_len(m_src) - pkt_len; - if (unlikely(rte_pktmbuf_append(m_dst, pkt_len) == NULL)) { - plt_dp_err("Not enough space in m_dst %p, need %u more", m_dst, - pkt_len); - ret = -EINVAL; - goto err_exit; - } - } - if (unlikely(prepare_iov_from_pkt(m_dst, fc_params.dst_iov, 0))) { plt_dp_err("Prepare dst iov failed for m_dst %p", m_dst); ret = -EINVAL; @@ -2689,7 +2658,8 @@ fill_pdcp_params(struct rte_crypto_op *cop, struct cnxk_se_sess *sess, mdata = alloc_op_meta(&fc_params.meta_buf, m_info->mlen, m_info->pool, infl_req); if (mdata == NULL) { plt_dp_err("Could not allocate meta buffer"); - return -ENOMEM; + ret = -ENOMEM; + goto err_exit; } } @@ -2798,22 +2768,6 @@ fill_pdcp_chain_params(struct rte_crypto_op *cop, struct cnxk_se_sess *sess, } if (unlikely(m_dst != NULL)) { - uint32_t pkt_len; - - /* Try to make room as much as src has */ - pkt_len = rte_pktmbuf_pkt_len(m_dst); - - if (unlikely(pkt_len < rte_pktmbuf_pkt_len(m_src))) { - pkt_len = rte_pktmbuf_pkt_len(m_src) - pkt_len; - if (!rte_pktmbuf_append(m_dst, pkt_len)) { - plt_dp_err("Not enough space in m_dst " - "%p, need %u more", - m_dst, pkt_len); - ret = -EINVAL; - goto err_exit; - } - } - if (unlikely(prepare_iov_from_pkt(m_dst, fc_params.dst_iov, 0))) { plt_dp_err("Could not prepare m_dst iov %p", m_dst); ret = -EINVAL; -- 2.25.1