Recheck-request: iol-broadcom-Performance This patch should not fail a performance test in CI - checking with a rerun now. On Mon, Feb 26, 2024 at 5:25 AM Radu Nicolau wrote: > There are use cases where a SA should be able to use different cryptodevs > on > different lcores, for example there can be cryptodevs with just 1 qp per > VF. > For this purpose this patch relaxes the check in create lookaside session > function. > Also add a check to verify that a CQP is available for the current lcore. > > Fixes: a8ade12123c3 ("examples/ipsec-secgw: create lookaside sessions at > init") > Cc: stable@dpdk.org > Cc: vfialko@marvell.com > > Signed-off-by: Radu Nicolau > Tested-by: Ting-Kai Ku > Acked-by: Ciara Power > Acked-by: Kai Ji > --- > v3: check if the cryptodev are not of the same type > > examples/ipsec-secgw/ipsec.c | 25 ++++++++++++++++++++----- > 1 file changed, 20 insertions(+), 5 deletions(-) > > diff --git a/examples/ipsec-secgw/ipsec.c b/examples/ipsec-secgw/ipsec.c > index f5cec4a928..b59576c049 100644 > --- a/examples/ipsec-secgw/ipsec.c > +++ b/examples/ipsec-secgw/ipsec.c > @@ -288,10 +288,21 @@ create_lookaside_session(struct ipsec_ctx > *ipsec_ctx_lcore[], > if (cdev_id == RTE_CRYPTO_MAX_DEVS) > cdev_id = ipsec_ctx->tbl[cdev_id_qp].id; > else if (cdev_id != ipsec_ctx->tbl[cdev_id_qp].id) { > - RTE_LOG(ERR, IPSEC, > - "SA mapping to multiple cryptodevs > is " > - "not supported!"); > - return -EINVAL; > + struct rte_cryptodev_info dev_info_1, dev_info_2; > + rte_cryptodev_info_get(cdev_id, &dev_info_1); > + > rte_cryptodev_info_get(ipsec_ctx->tbl[cdev_id_qp].id, > + &dev_info_2); > + if (dev_info_1.driver_id == dev_info_2.driver_id) { > + RTE_LOG(WARNING, IPSEC, > + "SA mapped to multiple cryptodevs > for SPI %d\n", > + sa->spi); > + > + } else { > + RTE_LOG(WARNING, IPSEC, > + "SA mapped to multiple cryptodevs > of different types for SPI %d\n", > + sa->spi); > + > + } > } > > /* Store per core queue pair information */ > @@ -908,7 +919,11 @@ ipsec_enqueue(ipsec_xform_fn xform_func, struct > ipsec_ctx *ipsec_ctx, > continue; > } > > - enqueue_cop(sa->cqp[ipsec_ctx->lcore_id], &priv->cop); > + if (likely(sa->cqp[ipsec_ctx->lcore_id])) > + enqueue_cop(sa->cqp[ipsec_ctx->lcore_id], > &priv->cop); > + else > + RTE_LOG(ERR, IPSEC, "No CQP available for lcore > %d\n", > + ipsec_ctx->lcore_id); > } > } > > -- > 2.34.1 > >