Hi Radu, Using same session across multiple devices would only work if the device instances are same. For example, if you use QAT device 0 & QAT device 1, then the sharing is okay. But if we have QAT and some SW crypto PMD, then the same session will not work. Is it possible to throw a warning when the crypto devices are not of same type?
Thanks, Anoob > -----Original Message----- > From: Radu Nicolau <radu.nico...@intel.com> > Sent: Friday, February 23, 2024 4:31 PM > To: dev@dpdk.org > Cc: Radu Nicolau <radu.nico...@intel.com>; sta...@dpdk.org; Volodymyr Fialko > <vfia...@marvell.com>; Ting-Kai Ku <ting-kai...@intel.com>; Ciara Power > <ciara.po...@intel.com>; Kai Ji <kai...@intel.com>; Akhil Goyal > <gak...@marvell.com> > Subject: [EXT] [PATCH v2] examples/ipsec-secgw: fix cryptodev to SA mapping > > External Email > > ---------------------------------------------------------------------- > 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: sta...@dpdk.org > Cc: vfia...@marvell.com > > Signed-off-by: Radu Nicolau <radu.nico...@intel.com> > Signed-off-by: Radu Nicolau <radu.nico...@intel.com> > Tested-by: Ting-Kai Ku <ting-kai...@intel.com> > Signed-off-by: Radu Nicolau <radu.nico...@intel.com> > Acked-by: Ciara Power <ciara.po...@intel.com> > Acked-by: Kai Ji <kai...@intel.com> > --- > v2: add likely to CQP available branch > > examples/ipsec-secgw/ipsec.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > diff --git a/examples/ipsec-secgw/ipsec.c b/examples/ipsec-secgw/ipsec.c index > f5cec4a928..7bb9646736 100644 > --- a/examples/ipsec-secgw/ipsec.c > +++ b/examples/ipsec-secgw/ipsec.c > @@ -288,10 +288,9 @@ 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; > + RTE_LOG(WARNING, IPSEC, > + "SA mapped to multiple cryptodevs for SPI > %d\n", > + sa->spi); > } > > /* Store per core queue pair information */ @@ -908,7 +907,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