From e11bdd37745229bf26b557305c07d118c3dbaad7 Mon Sep 17 00:00:00 2001 From: Akhil Goyal Date: Sun, 10 May 2020 04:42:09 +0530 Subject: [PATCH] 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. Signed-off-by: Akhil Goyal Acked-by: Fiona Trahe Acked-by: Adam Dybkowski Acked-by: Anoob Joseph --- 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 118479db52..fb1ddca71e 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 99ded0401d..8380a57655 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 8b971cc1da..b2caefe3a2 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 f7bff4291c..21d074f9b2 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 a20921249b..73077e3d9d 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 8e82dde552..c939064d5f 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 17926b4714..4598818735 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 7693eb69cd..f30e3cbff5 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 3dbb5ceb23..257840ea45 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.20.1