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

Reply via email to