Hi Akhil, > -----Original Message----- > From: Akhil Goyal <akhil.go...@nxp.com> > Sent: Monday, May 4, 2020 10:58 PM > To: dev@dpdk.org > Cc: ruifeng.w...@arm.com; Doherty, Declan <declan.dohe...@intel.com>; > asoma...@amd.com; > ano...@marvell.com; Zhang, Roy Fan <roy.fan.zh...@intel.com>; Trahe, Fiona > <fiona.tr...@intel.com>; t...@semihalf.com; rnagadhee...@marvell.com; > adwiv...@marvell.com; > g.si...@nxp.com; hemant.agra...@nxp.com; jianjay.z...@huawei.com; De Lara > Guarch, Pablo > <pablo.de.lara.gua...@intel.com>; Akhil Goyal <akhil.go...@nxp.com> > Subject: [PATCH 1/9] cryptodev: add feature flag for non-byte aligned data > > Some wireless algos like SNOW, ZUC may support input > data in bits which are not byte aligned. However, not > all PMDs can support this requirement. Hence added a > new feature flag RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA > to identify which all PMDs can support non-byte aligned > data. [Fiona] I know it's a bit pedantic, but shouldn't this really be called NON_BYTE_MULTIPLE?
As a non-byte-multiple data set could have its start byte-aligned, but still not be supported. > Signed-off-by: Akhil Goyal <akhil.go...@nxp.com> > --- > doc/guides/cryptodevs/features/default.ini | 1 + > doc/guides/cryptodevs/features/kasumi.ini | 1 + > doc/guides/cryptodevs/features/snow3g.ini | 1 + > doc/guides/cryptodevs/features/zuc.ini | 1 + > drivers/crypto/kasumi/rte_kasumi_pmd.c | 1 + > drivers/crypto/snow3g/rte_snow3g_pmd.c | 1 + > drivers/crypto/zuc/rte_zuc_pmd.c | 1 + > lib/librte_cryptodev/rte_cryptodev.c | 2 ++ > lib/librte_cryptodev/rte_cryptodev.h | 2 ++ > 9 files changed, 11 insertions(+) > > diff --git a/doc/guides/cryptodevs/features/default.ini > b/doc/guides/cryptodevs/features/default.ini > index 118479db5..fb1ddca71 100644 > --- a/doc/guides/cryptodevs/features/default.ini > +++ b/doc/guides/cryptodevs/features/default.ini > @@ -29,6 +29,7 @@ Digest encrypted = > Asymmetric sessionless = > CPU crypto = > Symmetric sessionless = > +Non-Byte aligned data = > > ; > ; Supported crypto algorithms of a default crypto driver. > diff --git a/doc/guides/cryptodevs/features/kasumi.ini > b/doc/guides/cryptodevs/features/kasumi.ini > index 99ded0401..8380a5765 100644 > --- a/doc/guides/cryptodevs/features/kasumi.ini > +++ b/doc/guides/cryptodevs/features/kasumi.ini > @@ -7,6 +7,7 @@ > Symmetric crypto = Y > Sym operation chaining = Y > Symmetric sessionless = Y > +Non-Byte aligned data = Y > > ; > ; Supported crypto algorithms of the 'kasumi' crypto driver. > diff --git a/doc/guides/cryptodevs/features/snow3g.ini > b/doc/guides/cryptodevs/features/snow3g.ini > index 8b971cc1d..b2caefe3a 100644 > --- a/doc/guides/cryptodevs/features/snow3g.ini > +++ b/doc/guides/cryptodevs/features/snow3g.ini > @@ -7,6 +7,7 @@ > Symmetric crypto = Y > Sym operation chaining = Y > Symmetric sessionless = Y > +Non-Byte aligned data = Y > > ; > ; Supported crypto algorithms of the 'snow3g' crypto driver. > diff --git a/doc/guides/cryptodevs/features/zuc.ini > b/doc/guides/cryptodevs/features/zuc.ini > index f7bff4291..21d074f9b 100644 > --- a/doc/guides/cryptodevs/features/zuc.ini > +++ b/doc/guides/cryptodevs/features/zuc.ini > @@ -7,6 +7,7 @@ > Symmetric crypto = Y > Sym operation chaining = Y > Symmetric sessionless = Y > +Non-Byte aligned data = Y > > ; > ; Supported crypto algorithms of the 'zuc' crypto driver. > diff --git a/drivers/crypto/kasumi/rte_kasumi_pmd.c > b/drivers/crypto/kasumi/rte_kasumi_pmd.c > index a20921249..73077e3d9 100644 > --- a/drivers/crypto/kasumi/rte_kasumi_pmd.c > +++ b/drivers/crypto/kasumi/rte_kasumi_pmd.c > @@ -551,6 +551,7 @@ cryptodev_kasumi_create(const char *name, > > dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | > RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | > + RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA | > RTE_CRYPTODEV_FF_SYM_SESSIONLESS; > > mgr = alloc_mb_mgr(0); > diff --git a/drivers/crypto/snow3g/rte_snow3g_pmd.c > b/drivers/crypto/snow3g/rte_snow3g_pmd.c > index 8e82dde55..c939064d5 100644 > --- a/drivers/crypto/snow3g/rte_snow3g_pmd.c > +++ b/drivers/crypto/snow3g/rte_snow3g_pmd.c > @@ -563,6 +563,7 @@ cryptodev_snow3g_create(const char *name, > > dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | > RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | > + RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA | > RTE_CRYPTODEV_FF_SYM_SESSIONLESS; > > mgr = alloc_mb_mgr(0); > diff --git a/drivers/crypto/zuc/rte_zuc_pmd.c > b/drivers/crypto/zuc/rte_zuc_pmd.c > index 17926b471..459881873 100644 > --- a/drivers/crypto/zuc/rte_zuc_pmd.c > +++ b/drivers/crypto/zuc/rte_zuc_pmd.c > @@ -470,6 +470,7 @@ cryptodev_zuc_create(const char *name, > > dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | > RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | > + RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA | > RTE_CRYPTODEV_FF_SYM_SESSIONLESS; > > mb_mgr = alloc_mb_mgr(0); > diff --git a/lib/librte_cryptodev/rte_cryptodev.c > b/lib/librte_cryptodev/rte_cryptodev.c > index 7693eb69c..f30e3cbff 100644 > --- a/lib/librte_cryptodev/rte_cryptodev.c > +++ b/lib/librte_cryptodev/rte_cryptodev.c > @@ -500,6 +500,8 @@ rte_cryptodev_get_feature_name(uint64_t flag) > return "ASYM_SESSIONLESS"; > case RTE_CRYPTODEV_FF_SYM_SESSIONLESS: > return "SYM_SESSIONLESS"; > + case RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA: > + return "NON_BYTE_ALIGNED_DATA"; > default: > return NULL; > } > diff --git a/lib/librte_cryptodev/rte_cryptodev.h > b/lib/librte_cryptodev/rte_cryptodev.h > index 3dbb5ceb2..257840ea4 100644 > --- a/lib/librte_cryptodev/rte_cryptodev.h > +++ b/lib/librte_cryptodev/rte_cryptodev.h > @@ -456,6 +456,8 @@ rte_cryptodev_asym_get_xform_enum(enum > rte_crypto_asym_xform_type > *xform_enum, > /**< Support symmetric cpu-crypto processing */ > #define RTE_CRYPTODEV_FF_SYM_SESSIONLESS (1ULL << 22) > /**< Support symmetric session-less operations */ > +#define RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA (1ULL << 23) > +/**< Support operations on data which is not byte aligned */ > > > /** > -- > 2.17.1