<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Good point Kai, i'll update the patch.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Thanks,</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Brian</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Ji, Kai <kai.ji@intel.com><br>
<b>Sent:</b> Monday, October 7, 2024 11:09 AM<br>
<b>To:</b> Dooley, Brian <brian.dooley@intel.com>; De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com><br>
<b>Cc:</b> dev@dpdk.org <dev@dpdk.org>; gakhil@marvell.com <gakhil@marvell.com>; wathsala.vithanage@arm.com <wathsala.vithanage@arm.com><br>
<b>Subject:</b> Re: [PATCH v1] crypto/ipsec_mb: bump minimum IPsec MB version</font>
<div> </div>
</div>
<style type="text/css" style="display:none">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div class="x_elementToProof" style="font-family:"IntelOne Text"; font-size:10pt; color:rgb(0,0,0)">
Acked-by: Kai Ji <kai.ji@intel.com></div>
<div class="x_elementToProof" style="font-family:"IntelOne Text"; font-size:10pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:"IntelOne Text"; font-size:10pt; color:rgb(0,0,0)">
Any release doc needs to be updated ? </div>
<div id="x_appendonsend"></div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Dooley, Brian <brian.dooley@intel.com><br>
<b>Sent:</b> 04 October 2024 15:58<br>
<b>To:</b> Ji, Kai <kai.ji@intel.com>; De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com><br>
<b>Cc:</b> dev@dpdk.org <dev@dpdk.org>; gakhil@marvell.com <gakhil@marvell.com>; wathsala.vithanage@arm.com <wathsala.vithanage@arm.com>; Dooley, Brian <brian.dooley@intel.com><br>
<b>Subject:</b> [PATCH v1] crypto/ipsec_mb: bump minimum IPsec MB version</font>
<div> </div>
</div>
<div class="x_BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="x_PlainText">AESNI_MB SW PMDs increment Intel IPsec MB version to 1.4.<br>
A minimum IPsec Multi-buffer version of 1.4 or greater is now required<br>
for the 24.11 LTS release.<br>
<br>
Signed-off-by: Brian Dooley <brian.dooley@intel.com><br>
---<br>
This patch relates to a deprecation notice sent in the 24.03 release.<br>
Intel IPsec MB minimum version being bumped to 1.4 for the 24.11 release.<br>
<a href="https://patches.dpdk.org/project/dpdk/patch/20240314103731.3242086-2-brian.dooley@intel.com/">https://patches.dpdk.org/project/dpdk/patch/20240314103731.3242086-2-brian.dooley@intel.com/</a><br>
---<br>
 doc/guides/cryptodevs/aesni_gcm.rst         |   3 +-<br>
 doc/guides/cryptodevs/aesni_mb.rst          |   3 +-<br>
 doc/guides/cryptodevs/chacha20_poly1305.rst |   3 +-<br>
 doc/guides/cryptodevs/kasumi.rst            |   3 +-<br>
 doc/guides/cryptodevs/snow3g.rst            |   3 +-<br>
 doc/guides/cryptodevs/zuc.rst               |   3 +-<br>
 drivers/crypto/ipsec_mb/ipsec_mb_ops.c      |  24 ---<br>
 drivers/crypto/ipsec_mb/meson.build         |   2 +-<br>
 drivers/crypto/ipsec_mb/pmd_aesni_mb.c      | 164 --------------------<br>
 drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h |   9 --<br>
 10 files changed, 13 insertions(+), 204 deletions(-)<br>
<br>
diff --git a/doc/guides/cryptodevs/aesni_gcm.rst b/doc/guides/cryptodevs/aesni_gcm.rst<br>
index 3af1486553..7592d33da2 100644<br>
--- a/doc/guides/cryptodevs/aesni_gcm.rst<br>
+++ b/doc/guides/cryptodevs/aesni_gcm.rst<br>
@@ -74,7 +74,8 @@ and the external crypto libraries supported by them:<br>
    DPDK version   Crypto library version<br>
    =============  ================================<br>
    20.11 - 21.08  Multi-buffer library 0.53 - 1.3<br>
-   21.11+         Multi-buffer library 1.0  - 1.5<br>
+   21.11 - 24.07  Multi-buffer library 1.0  - 1.5<br>
+   24.11+         Multi-buffer library 1.4  - 1.5<br>
    =============  ================================<br>
 <br>
 Initialization<br>
diff --git a/doc/guides/cryptodevs/aesni_mb.rst b/doc/guides/cryptodevs/aesni_mb.rst<br>
index 3c77d0f463..c2f6633ee6 100644<br>
--- a/doc/guides/cryptodevs/aesni_mb.rst<br>
+++ b/doc/guides/cryptodevs/aesni_mb.rst<br>
@@ -132,7 +132,8 @@ and the Multi-Buffer library version supported by them:<br>
    DPDK version    Multi-buffer library version<br>
    ==============  ============================<br>
    20.11 - 21.08   0.53 - 1.3<br>
-   21.11+          1.0  - 1.5<br>
+   21.11 - 24.07   1.0  - 1.5<br>
+   24.11+          1.4  - 1.5<br>
    ==============  ============================<br>
 <br>
 Initialization<br>
diff --git a/doc/guides/cryptodevs/chacha20_poly1305.rst b/doc/guides/cryptodevs/chacha20_poly1305.rst<br>
index 44cff85918..b5a980b247 100644<br>
--- a/doc/guides/cryptodevs/chacha20_poly1305.rst<br>
+++ b/doc/guides/cryptodevs/chacha20_poly1305.rst<br>
@@ -66,7 +66,8 @@ and the external crypto libraries supported by them:<br>
    =============  ================================<br>
    DPDK version   Crypto library version<br>
    =============  ================================<br>
-   21.11+         Multi-buffer library 1.0-1.5<br>
+   21.11 - 24.07  Multi-buffer library 1.0  - 1.5<br>
+   24.11+         Multi-buffer library 1.4  - 1.5<br>
    =============  ================================<br>
 <br>
 Initialization<br>
diff --git a/doc/guides/cryptodevs/kasumi.rst b/doc/guides/cryptodevs/kasumi.rst<br>
index 4070f025e1..b57f18b56f 100644<br>
--- a/doc/guides/cryptodevs/kasumi.rst<br>
+++ b/doc/guides/cryptodevs/kasumi.rst<br>
@@ -80,7 +80,8 @@ and the external crypto libraries supported by them:<br>
    DPDK version   Crypto library version<br>
    =============  ================================<br>
    20.02 - 21.08  Multi-buffer library 0.53 - 1.3<br>
-   21.11+         Multi-buffer library 1.0  - 1.5<br>
+   21.11 - 24.07  Multi-buffer library 1.0  - 1.5<br>
+   24.11+         Multi-buffer library 1.4  - 1.5<br>
    =============  ================================<br>
 <br>
 Initialization<br>
diff --git a/doc/guides/cryptodevs/snow3g.rst b/doc/guides/cryptodevs/snow3g.rst<br>
index 6eb8229fb5..fb4e0448ac 100644<br>
--- a/doc/guides/cryptodevs/snow3g.rst<br>
+++ b/doc/guides/cryptodevs/snow3g.rst<br>
@@ -89,7 +89,8 @@ and the external crypto libraries supported by them:<br>
    DPDK version   Crypto library version<br>
    =============  ================================<br>
    20.02 - 21.08  Multi-buffer library 0.53 - 1.3<br>
-   21.11+         Multi-buffer library 1.0  - 1.5<br>
+   21.11 - 24.07  Multi-buffer library 1.0  - 1.5<br>
+   24.11+         Multi-buffer library 1.4  - 1.5<br>
    =============  ================================<br>
 <br>
 Initialization<br>
diff --git a/doc/guides/cryptodevs/zuc.rst b/doc/guides/cryptodevs/zuc.rst<br>
index 29fe6279aa..4615562246 100644<br>
--- a/doc/guides/cryptodevs/zuc.rst<br>
+++ b/doc/guides/cryptodevs/zuc.rst<br>
@@ -88,7 +88,8 @@ and the external crypto libraries supported by them:<br>
    DPDK version   Crypto library version<br>
    =============  ================================<br>
    20.02 - 21.08  Multi-buffer library 0.53 - 1.3<br>
-   21.11+         Multi-buffer library 1.0  - 1.5<br>
+   21.11 - 24.07  Multi-buffer library 1.0  - 1.5<br>
+   24.11+         Multi-buffer library 1.4  - 1.5<br>
    =============  ================================<br>
 <br>
 Initialization<br>
diff --git a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c<br>
index ba899604d2..910efb1a97 100644<br>
--- a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c<br>
+++ b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c<br>
@@ -11,8 +11,6 @@<br>
 <br>
 #include "ipsec_mb_private.h"<br>
 <br>
-#define IMB_MP_REQ_VER_STR "1.1.0"<br>
-<br>
 /** Configure device */<br>
 int<br>
 ipsec_mb_config(__rte_unused struct rte_cryptodev *dev,<br>
@@ -147,15 +145,10 @@ ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)<br>
         if (rte_eal_process_type() == RTE_PROC_PRIMARY) {<br>
                 rte_ring_free(rte_ring_lookup(qp->name));<br>
 <br>
-#if IMB_VERSION(1, 1, 0) > IMB_VERSION_NUM<br>
-               if (qp->mb_mgr)<br>
-                       free_mb_mgr(qp->mb_mgr);<br>
-#else<br>
                 if (qp->mb_mgr_mz) {<br>
                         rte_memzone_free(qp->mb_mgr_mz);<br>
                         qp->mb_mgr = NULL;<br>
                 }<br>
-#endif<br>
                 rte_free(qp);<br>
                 dev->data->queue_pairs[qp_id] = NULL;<br>
         } else { /* secondary process */<br>
@@ -211,7 +204,6 @@ static struct rte_ring<br>
                                RING_F_SP_ENQ | RING_F_SC_DEQ);<br>
 }<br>
 <br>
-#if IMB_VERSION(1, 1, 0) <= IMB_VERSION_NUM<br>
 static IMB_MGR *<br>
 ipsec_mb_alloc_mgr_from_memzone(const struct rte_memzone **mb_mgr_mz,<br>
                 const char *mb_mgr_mz_name)<br>
@@ -244,7 +236,6 @@ ipsec_mb_alloc_mgr_from_memzone(const struct rte_memzone **mb_mgr_mz,<br>
         }<br>
         return mb_mgr;<br>
 }<br>
-#endif<br>
 <br>
 /** Setup a queue pair */<br>
 int<br>
@@ -260,12 +251,6 @@ ipsec_mb_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,<br>
         int ret;<br>
 <br>
         if (rte_eal_process_type() == RTE_PROC_SECONDARY) {<br>
-#if IMB_VERSION(1, 1, 0) > IMB_VERSION_NUM<br>
-               IPSEC_MB_LOG(ERR, "The intel-ipsec-mb version (%s) does not support multiprocess,"<br>
-                               "the minimum version required for this feature is %s.",<br>
-                               IMB_VERSION_STR, IMB_MP_REQ_VER_STR);<br>
-               return -EINVAL;<br>
-#endif<br>
                 qp = dev->data->queue_pairs[qp_id];<br>
                 if (qp == NULL) {<br>
                         IPSEC_MB_LOG(DEBUG, "Secondary process setting up device qp.");<br>
@@ -285,15 +270,11 @@ ipsec_mb_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,<br>
                         return -ENOMEM;<br>
         }<br>
 <br>
-#if IMB_VERSION(1, 1, 0) > IMB_VERSION_NUM<br>
-       qp->mb_mgr = alloc_init_mb_mgr();<br>
-#else<br>
         char mz_name[IPSEC_MB_MAX_MZ_NAME];<br>
         snprintf(mz_name, sizeof(mz_name), "IMB_MGR_DEV_%d_QP_%d",<br>
                         dev->data->dev_id, qp_id);<br>
         qp->mb_mgr = ipsec_mb_alloc_mgr_from_memzone(&(qp->mb_mgr_mz),<br>
                         mz_name);<br>
-#endif<br>
         if (qp->mb_mgr == NULL) {<br>
                 ret = -ENOMEM;<br>
                 goto qp_setup_cleanup;<br>
@@ -330,14 +311,9 @@ ipsec_mb_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,<br>
         return 0;<br>
 <br>
 qp_setup_cleanup:<br>
-#if IMB_VERSION(1, 1, 0) > IMB_VERSION_NUM<br>
-       if (qp->mb_mgr)<br>
-               free_mb_mgr(qp->mb_mgr);<br>
-#else<br>
         if (rte_eal_process_type() == RTE_PROC_SECONDARY)<br>
                 return ret;<br>
         rte_memzone_free(qp->mb_mgr_mz);<br>
-#endif<br>
         rte_free(qp);<br>
         return ret;<br>
 }<br>
diff --git a/drivers/crypto/ipsec_mb/meson.build b/drivers/crypto/ipsec_mb/meson.build<br>
index 87bf965554..0c988d7411 100644<br>
--- a/drivers/crypto/ipsec_mb/meson.build<br>
+++ b/drivers/crypto/ipsec_mb/meson.build<br>
@@ -7,7 +7,7 @@ if is_windows<br>
     subdir_done()<br>
 endif<br>
 <br>
-IMB_required_ver = '1.0.0'<br>
+IMB_required_ver = '1.4.0'<br>
 IMB_header = '#include<intel-ipsec-mb.h>'<br>
 if arch_subdir == 'arm'<br>
     IMB_header = '#include<ipsec-mb.h>'<br>
diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
index ef4228bd38..0f11b36d35 100644<br>
--- a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
+++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
@@ -216,13 +216,9 @@ aesni_mb_set_session_auth_parameters(IMB_MGR *mb_mgr,<br>
                         }<br>
                 } else if (xform->auth.key.length == 32) {<br>
                         sess->template_job.hash_alg = IMB_AUTH_ZUC256_EIA3_BITLEN;<br>
-#if IMB_VERSION(1, 2, 0) < IMB_VERSION_NUM<br>
                         if (sess->auth.req_digest_len != 4 &&<br>
                                         sess->auth.req_digest_len != 8 &&<br>
                                         sess->auth.req_digest_len != 16) {<br>
-#else<br>
-                       if (sess->auth.req_digest_len != 4) {<br>
-#endif<br>
                                 IPSEC_MB_LOG(ERR, "Invalid digest size\n");<br>
                                 return -EINVAL;<br>
                         }<br>
@@ -879,11 +875,9 @@ aesni_mb_session_configure(IMB_MGR *mb_mgr,<br>
                 }<br>
         }<br>
 <br>
-#if IMB_VERSION(1, 3, 0) < IMB_VERSION_NUM<br>
         sess->session_id = imb_set_session(mb_mgr, &sess->template_job);<br>
         sess->pid = getpid();<br>
         RTE_PER_LCORE(pid) = sess->pid;<br>
-#endif<br>
 <br>
         return 0;<br>
 }<br>
@@ -1016,9 +1010,7 @@ aesni_mb_set_docsis_sec_session_parameters(<br>
                 goto error_exit;<br>
         }<br>
 <br>
-#if IMB_VERSION(1, 3, 0) < IMB_VERSION_NUM<br>
         ipsec_sess->session_id = imb_set_session(mb_mgr, &ipsec_sess->template_job);<br>
-#endif<br>
 <br>
 error_exit:<br>
         free_mb_mgr(mb_mgr);<br>
@@ -1273,7 +1265,6 @@ imb_lib_support_sgl_algo(IMB_CIPHER_MODE alg)<br>
         return 0;<br>
 }<br>
 <br>
-#if IMB_VERSION(1, 2, 0) < IMB_VERSION_NUM<br>
 static inline int<br>
 single_sgl_job(IMB_JOB *job, struct rte_crypto_op *op,<br>
                 int oop, uint32_t offset, struct rte_mbuf *m_src,<br>
@@ -1358,7 +1349,6 @@ single_sgl_job(IMB_JOB *job, struct rte_crypto_op *op,<br>
         job->sgl_io_segs = sgl_segs;<br>
         return 0;<br>
 }<br>
-#endif<br>
 <br>
 static inline int<br>
 multi_sgl_job(IMB_JOB *job, struct rte_crypto_op *op,<br>
@@ -1428,9 +1418,7 @@ set_gcm_job(IMB_MGR *mb_mgr, IMB_JOB *job, const uint8_t sgl,<br>
                 job->msg_len_to_hash_in_bytes = 0;<br>
                 job->msg_len_to_cipher_in_bytes = 0;<br>
                 job->cipher_start_src_offset_in_bytes = 0;<br>
-#if IMB_VERSION(1, 3, 0) < IMB_VERSION_NUM<br>
                 imb_set_session(mb_mgr, job);<br>
-#endif<br>
         } else {<br>
                 job->hash_start_src_offset_in_bytes =<br>
                                 op->sym->aead.data.offset;<br>
@@ -1458,13 +1446,11 @@ set_gcm_job(IMB_MGR *mb_mgr, IMB_JOB *job, const uint8_t sgl,<br>
                 job->src = NULL;<br>
                 job->dst = NULL;<br>
 <br>
-#if IMB_VERSION(1, 2, 0) < IMB_VERSION_NUM<br>
                 if (m_src->nb_segs <= MAX_NUM_SEGS)<br>
                         return single_sgl_job(job, op, oop,<br>
                                         m_offset, m_src, m_dst,<br>
                                         qp_data->sgl_segs);<br>
                 else<br>
-#endif<br>
                         return multi_sgl_job(job, op, oop,<br>
                                         m_offset, m_src, m_dst, mb_mgr);<br>
         } else {<br>
@@ -1554,10 +1540,6 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp,<br>
         uint8_t sgl = 0;<br>
         uint8_t lb_sgl = 0;<br>
 <br>
-#if IMB_VERSION(1, 3, 0) >= IMB_VERSION_NUM<br>
-       (void) pid;<br>
-#endif<br>
-<br>
         session = ipsec_mb_get_session_private(qp, op);<br>
         if (session == NULL) {<br>
                 op->status = RTE_CRYPTO_OP_STATUS_INVALID_SESSION;<br>
@@ -1567,12 +1549,10 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp,<br>
         const IMB_CIPHER_MODE cipher_mode =<br>
                         session->template_job.cipher_mode;<br>
 <br>
-#if IMB_VERSION(1, 3, 0) < IMB_VERSION_NUM<br>
         if (session->pid != pid) {<br>
                 memcpy(job, &session->template_job, sizeof(IMB_JOB));<br>
                 imb_set_session(mb_mgr, job);<br>
         } else if (job->session_id != session->session_id)<br>
-#endif<br>
                 memcpy(job, &session->template_job, sizeof(IMB_JOB));<br>
 <br>
         if (!op->sym->m_dst) {<br>
@@ -1613,9 +1593,7 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp,<br>
                         job->u.GCM.ctx = &qp_data->gcm_sgl_ctx;<br>
                         job->cipher_mode = IMB_CIPHER_GCM_SGL;<br>
                         job->hash_alg = IMB_AUTH_GCM_SGL;<br>
-#if IMB_VERSION(1, 3, 0) < IMB_VERSION_NUM<br>
                         imb_set_session(mb_mgr, job);<br>
-#endif<br>
                 }<br>
                 break;<br>
         case IMB_AUTH_AES_GMAC_128:<br>
@@ -1640,9 +1618,7 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp,<br>
                         job->u.CHACHA20_POLY1305.ctx = &qp_data->chacha_sgl_ctx;<br>
                         job->cipher_mode = IMB_CIPHER_CHACHA20_POLY1305_SGL;<br>
                         job->hash_alg = IMB_AUTH_CHACHA20_POLY1305_SGL;<br>
-#if IMB_VERSION(1, 3, 0) < IMB_VERSION_NUM<br>
                         imb_set_session(mb_mgr, job);<br>
-#endif<br>
                 }<br>
                 break;<br>
         default:<br>
@@ -1838,13 +1814,11 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp,<br>
                 if (lb_sgl)<br>
                         return handle_sgl_linear(job, op, m_offset, session);<br>
 <br>
-#if IMB_VERSION(1, 2, 0) < IMB_VERSION_NUM<br>
                 if (m_src->nb_segs <= MAX_NUM_SEGS)<br>
                         return single_sgl_job(job, op, oop,<br>
                                         m_offset, m_src, m_dst,<br>
                                         qp_data->sgl_segs);<br>
                 else<br>
-#endif<br>
                         return multi_sgl_job(job, op, oop,<br>
                                         m_offset, m_src, m_dst, mb_mgr);<br>
         }<br>
@@ -2164,7 +2138,6 @@ set_job_null_op(IMB_JOB *job, struct rte_crypto_op *op)<br>
         return job;<br>
 }<br>
 <br>
-#if IMB_VERSION(1, 2, 0) < IMB_VERSION_NUM<br>
 uint16_t<br>
 aesni_mb_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops,<br>
                 uint16_t nb_ops)<br>
@@ -2297,144 +2270,7 @@ aesni_mb_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops,<br>
 <br>
         return processed_jobs;<br>
 }<br>
-#else<br>
-<br>
-/**<br>
- * Process a completed IMB_JOB job and keep processing jobs until<br>
- * get_completed_job return NULL<br>
- *<br>
- * @param qp           Queue Pair to process<br>
- * @param mb_mgr       IMB_MGR to use<br>
- * @param job          IMB_JOB job<br>
- * @param ops          crypto ops to fill<br>
- * @param nb_ops       number of crypto ops<br>
- *<br>
- * @return<br>
- * - Number of processed jobs<br>
- */<br>
-static unsigned<br>
-handle_completed_jobs(struct ipsec_mb_qp *qp, IMB_MGR *mb_mgr,<br>
-               IMB_JOB *job, struct rte_crypto_op **ops,<br>
-               uint16_t nb_ops)<br>
-{<br>
-       struct rte_crypto_op *op = NULL;<br>
-       uint16_t processed_jobs = 0;<br>
-<br>
-       while (job != NULL) {<br>
-               op = post_process_mb_job(qp, job);<br>
-<br>
-               if (op) {<br>
-                       ops[processed_jobs++] = op;<br>
-                       qp->stats.dequeued_count++;<br>
-               } else {<br>
-                       qp->stats.dequeue_err_count++;<br>
-                       break;<br>
-               }<br>
-               if (processed_jobs == nb_ops)<br>
-                       break;<br>
-<br>
-               job = IMB_GET_COMPLETED_JOB(mb_mgr);<br>
-       }<br>
-<br>
-       return processed_jobs;<br>
-}<br>
-<br>
-static inline uint16_t<br>
-flush_mb_mgr(struct ipsec_mb_qp *qp, IMB_MGR *mb_mgr,<br>
-               struct rte_crypto_op **ops, uint16_t nb_ops)<br>
-{<br>
-       int processed_ops = 0;<br>
-<br>
-       /* Flush the remaining jobs */<br>
-       IMB_JOB *job = IMB_FLUSH_JOB(mb_mgr);<br>
-<br>
-       if (job)<br>
-               processed_ops += handle_completed_jobs(qp, mb_mgr, job,<br>
-                               &ops[processed_ops], nb_ops - processed_ops);<br>
-<br>
-       return processed_ops;<br>
-}<br>
-<br>
-uint16_t<br>
-aesni_mb_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops,<br>
-               uint16_t nb_ops)<br>
-{<br>
-       struct ipsec_mb_qp *qp = queue_pair;<br>
-       IMB_MGR *mb_mgr = qp->mb_mgr;<br>
-       struct rte_crypto_op *op;<br>
-       IMB_JOB *job;<br>
-       int retval, processed_jobs = 0;<br>
-       pid_t pid = 0;<br>
 <br>
-       if (unlikely(nb_ops == 0 || mb_mgr == NULL))<br>
-               return 0;<br>
-<br>
-       uint8_t digest_idx = qp->digest_idx;<br>
-<br>
-       do {<br>
-               /* Get next free mb job struct from mb manager */<br>
-               job = IMB_GET_NEXT_JOB(mb_mgr);<br>
-               if (unlikely(job == NULL)) {<br>
-                       /* if no free mb job structs we need to flush mb_mgr */<br>
-                       processed_jobs += flush_mb_mgr(qp, mb_mgr,<br>
-                                       &ops[processed_jobs],<br>
-                                       nb_ops - processed_jobs);<br>
-<br>
-                       if (nb_ops == processed_jobs)<br>
-                               break;<br>
-<br>
-                       job = IMB_GET_NEXT_JOB(mb_mgr);<br>
-               }<br>
-<br>
-               /*<br>
-                * Get next operation to process from ingress queue.<br>
-                * There is no need to return the job to the IMB_MGR<br>
-                * if there are no more operations to process, since the IMB_MGR<br>
-                * can use that pointer again in next get_next calls.<br>
-                */<br>
-               retval = rte_ring_dequeue(qp->ingress_queue, (void **)&op);<br>
-               if (retval < 0)<br>
-                       break;<br>
-<br>
-               if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION)<br>
-                       retval = set_sec_mb_job_params(job, qp, op,<br>
-                                               &digest_idx);<br>
-               else<br>
-                       retval = set_mb_job_params(job, qp, op,<br>
-                               &digest_idx, mb_mgr, pid);<br>
-<br>
-               if (unlikely(retval != 0)) {<br>
-                       qp->stats.dequeue_err_count++;<br>
-                       set_job_null_op(job, op);<br>
-               }<br>
-<br>
-               /* Submit job to multi-buffer for processing */<br>
-#ifdef RTE_LIBRTE_PMD_AESNI_MB_DEBUG<br>
-               job = IMB_SUBMIT_JOB(mb_mgr);<br>
-#else<br>
-               job = IMB_SUBMIT_JOB_NOCHECK(mb_mgr);<br>
-#endif<br>
-               /*<br>
-                * If submit returns a processed job then handle it,<br>
-                * before submitting subsequent jobs<br>
-                */<br>
-               if (job)<br>
-                       processed_jobs += handle_completed_jobs(qp, mb_mgr,<br>
-                                       job, &ops[processed_jobs],<br>
-                                       nb_ops - processed_jobs);<br>
-<br>
-       } while (processed_jobs < nb_ops);<br>
-<br>
-       qp->digest_idx = digest_idx;<br>
-<br>
-       if (processed_jobs < 1)<br>
-               processed_jobs += flush_mb_mgr(qp, mb_mgr,<br>
-                               &ops[processed_jobs],<br>
-                               nb_ops - processed_jobs);<br>
-<br>
-       return processed_jobs;<br>
-}<br>
-#endif<br>
 static inline int<br>
 check_crypto_sgl(union rte_crypto_sym_ofs so, const struct rte_crypto_sgl *sgl)<br>
 {<br>
diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h<br>
index d6af2d4ded..6af699bfdd 100644<br>
--- a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h<br>
+++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h<br>
@@ -17,9 +17,7 @@<br>
 #define HMAC_IPAD_VALUE                 (0x36)<br>
 #define HMAC_OPAD_VALUE                 (0x5C)<br>
 <br>
-#if IMB_VERSION(1, 2, 0) < IMB_VERSION_NUM<br>
 #define MAX_NUM_SEGS 16<br>
-#endif<br>
 <br>
 int<br>
 aesni_mb_session_configure(IMB_MGR * m __rte_unused, void *priv_sess,<br>
@@ -580,13 +578,8 @@ static const struct rte_cryptodev_capabilities aesni_mb_capabilities[] = {<br>
                                 },<br>
                                 .digest_size = {<br>
                                         .min = 4,<br>
-#if IMB_VERSION(1, 2, 0) < IMB_VERSION_NUM<br>
                                         .max = 16,<br>
                                         .increment = 4<br>
-#else<br>
-                                       .max = 4,<br>
-                                       .increment = 0<br>
-#endif<br>
                                 },<br>
                                 .iv_size = {<br>
                                         .min = 16,<br>
@@ -741,9 +734,7 @@ struct aesni_mb_qp_data {<br>
          * by the driver when verifying a digest provided<br>
          * by the user (using authentication verify operation)<br>
          */<br>
-#if IMB_VERSION(1, 2, 0) < IMB_VERSION_NUM<br>
         struct IMB_SGL_IOV sgl_segs[MAX_NUM_SEGS];<br>
-#endif<br>
         union {<br>
                 struct gcm_context_data gcm_sgl_ctx;<br>
                 struct chacha20_poly1305_context_data chacha_sgl_ctx;<br>
-- <br>
2.25.1<br>
<br>
</div>
</span></font></div>
</div>
</body>
</html>