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

Reply via email to