[dpdk-dev] [PATCH 2/8] crypto/octeontx: add RSA and modexp asym capabilities
Akhil Goyal
akhil.goyal at nxp.com
Thu Oct 3 10:03:44 CEST 2019
> >
> > Hi Anoob,
> >
> > > const struct rte_cryptodev_capabilities *
> > > -otx_get_capabilities(void)
> > > +otx_get_capabilities(uint64_t flags)
> > > {
> > > - return otx_capabilities;
> > > + if (flags & RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO)
> > > + return otx_asym_capabilities;
> > > + else
> > > + return otx_sym_capabilities;
> > > +
> > > }
> >
> > I believe this will give Asym capabilities always. As the feature flag
> > RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO will always be set, as the flags
> are
> > set in init.
> >
> > It will never go in else.
>
> [Anoob] The flags is set based on the type of underlying device. The crypto
> module on OCTEONTX exposes two kinds of VFs. One which does only
> symmetric and one which does only asymmetric. Both are never supported
> together for a VF, and hence the if...else.
OK probably a comment should be added to avoid this confusion while calling infos_get.
And add this info in doc as well if not already there.
>
> From the first patch, crypto/octeontx: add device type mailbox routine
>
> switch (cptvf->vftype) {
> case OTX_CPT_VF_TYPE_AE:
> /* Set asymmetric cpt feature flags */
> c_dev->feature_flags =
> RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO |
> RTE_CRYPTODEV_FF_HW_ACCELERATED;
> break;
> case OTX_CPT_VF_TYPE_SE:
> /* Set symmetric cpt feature flags */
> c_dev->feature_flags =
> RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO |
> RTE_CRYPTODEV_FF_HW_ACCELERATED |
>
> RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING |
> RTE_CRYPTODEV_FF_IN_PLACE_SGL |
> RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT |
> RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT;
> break;
>
> Hope this clarifies.
>
> >
> > > diff --git a/drivers/crypto/octeontx/otx_cryptodev_capabilities.h
> > > b/drivers/crypto/octeontx/otx_cryptodev_capabilities.h
> > > index fc62821..439b50e 100644
> > > --- a/drivers/crypto/octeontx/otx_cryptodev_capabilities.h
> > > +++ b/drivers/crypto/octeontx/otx_cryptodev_capabilities.h
> > > @@ -8,10 +8,9 @@
> > > #include <rte_cryptodev.h>
> > >
> > > /*
> > > - * Get capabilities list for the device
> > > - *
> > > + * Get capabilities list for the device, based on device type
> > > */
> > > const struct rte_cryptodev_capabilities *
> > > -otx_get_capabilities(void);
> > > +otx_get_capabilities(uint64_t flags);
> > >
> > > #endif /* _OTX_CRYPTODEV_CAPABILITIES_H_ */ diff --git
> > > a/drivers/crypto/octeontx/otx_cryptodev_ops.c
> > > b/drivers/crypto/octeontx/otx_cryptodev_ops.c
> > > index 88efed3..b59a001 100644
> > > --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c
> > > +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c
> > > @@ -105,7 +105,7 @@ otx_cpt_dev_info_get(struct rte_cryptodev *dev,
> > > struct rte_cryptodev_info *info)
> > > if (info != NULL) {
> > > info->max_nb_queue_pairs = CPT_NUM_QS_PER_VF;
> > > info->feature_flags = dev->feature_flags;
> > > - info->capabilities = otx_get_capabilities();
> > > + info->capabilities = otx_get_capabilities(info->feature_flags);
> > > info->sym.max_nb_sessions = 0;
> > > info->driver_id = otx_cryptodev_driver_id;
> > > info->min_mbuf_headroom_req =
> > > OTX_CPT_MIN_HEADROOM_REQ;
> > > @@ -635,7 +635,8 @@ otx_cpt_dev_create(struct rte_cryptodev *c_dev)
> > > case OTX_CPT_VF_TYPE_AE:
> > > /* Set asymmetric cpt feature flags */
> > > c_dev->feature_flags =
> > > RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO |
> > > - RTE_CRYPTODEV_FF_HW_ACCELERATED;
> > > + RTE_CRYPTODEV_FF_HW_ACCELERATED |
> > > + RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT;
> > > break;
> > > case OTX_CPT_VF_TYPE_SE:
> > > /* Set symmetric cpt feature flags */
> > > --
> > > 2.7.4
More information about the dev
mailing list