<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>