From f2b2a44971007c4d8031078476855560581b2341 Mon Sep 17 00:00:00 2001 From: Arek Kusztal Date: Thu, 10 Oct 2019 13:02:39 +0200 Subject: [PATCH] cryptodev: add asymmetric session-less This commit adds asymmetric session-less option to rte_crypto_asym_op. Feature flag for session-less is added to rte_cryptodev. Signed-off-by: Arek Kusztal Acked-by: Anoob Joseph Acked-by: Akhil Goyal --- doc/guides/cryptodevs/features/default.ini | 1 + doc/guides/prog_guide/cryptodev_lib.rst | 10 +++++++++- doc/guides/rel_notes/release_19_11.rst | 5 +++++ lib/librte_cryptodev/rte_crypto_asym.h | 9 +++++++-- lib/librte_cryptodev/rte_cryptodev.h | 2 ++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/doc/guides/cryptodevs/features/default.ini b/doc/guides/cryptodevs/features/default.ini index d3ee1afa52..b7f9a0a325 100644 --- a/doc/guides/cryptodevs/features/default.ini +++ b/doc/guides/cryptodevs/features/default.ini @@ -26,6 +26,7 @@ OOP LB In LB Out = RSA PRIV OP KEY EXP = RSA PRIV OP KEY QT = Digest encrypted = +Asymmetric sessionless = ; ; Supported crypto algorithms of a default crypto driver. diff --git a/doc/guides/prog_guide/cryptodev_lib.rst b/doc/guides/prog_guide/cryptodev_lib.rst index 971994426e..bf0ee79f8d 100644 --- a/doc/guides/prog_guide/cryptodev_lib.rst +++ b/doc/guides/prog_guide/cryptodev_lib.rst @@ -876,7 +876,15 @@ private asymmetric session data. Once this is done, session should be freed usin Asymmetric Sessionless Support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Currently asymmetric crypto framework does not support sessionless. + +Asymmetric crypto framework supports session-less operations as well. + +Fields that should be set by user are: + +Member xform of struct rte_crypto_asym_op should point to the user created rte_crypto_asym_xform. +Note that rte_crypto_asym_xform should be immutable for the lifetime of associated crypto_op. + +Member sess_type of rte_crypto_op should also be set to RTE_CRYPTO_OP_SESSIONLESS. Transforms and Transform Chaining ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst index fcf5c72c8e..af943039ec 100644 --- a/doc/guides/rel_notes/release_19_11.rst +++ b/doc/guides/rel_notes/release_19_11.rst @@ -91,6 +91,11 @@ New Features * Added support for protocol extraction on per Rx queue. * Added support for the ``RTE_ETH_DEV_CLOSE_REMOVE`` flag. +* **Added cryptodev asymmetric session-less operation.** + + Added session-less option to cryptodev asymmetric structure. It works the same + way as symmetric crypto, corresponding xform is used directly by the crypto op. + * **Added Marvell NITROX symmetric crypto PMD.** Added a symmetric crypto PMD for Marvell NITROX V security processor. diff --git a/lib/librte_cryptodev/rte_crypto_asym.h b/lib/librte_cryptodev/rte_crypto_asym.h index 4fbef2f893..0d34ce8dfd 100644 --- a/lib/librte_cryptodev/rte_crypto_asym.h +++ b/lib/librte_cryptodev/rte_crypto_asym.h @@ -522,8 +522,13 @@ struct rte_crypto_dsa_op_param { * */ struct rte_crypto_asym_op { - struct rte_cryptodev_asym_session *session; - /**< Handle for the initialised session context */ + RTE_STD_C11 + union { + struct rte_cryptodev_asym_session *session; + /**< Handle for the initialised session context */ + struct rte_crypto_asym_xform *xform; + /**< Session-less API crypto operation parameters */ + }; __extension__ union { diff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h index e175b838c7..c6ffa3b35f 100644 --- a/lib/librte_cryptodev/rte_cryptodev.h +++ b/lib/librte_cryptodev/rte_cryptodev.h @@ -448,6 +448,8 @@ rte_cryptodev_asym_get_xform_enum(enum rte_crypto_asym_xform_type *xform_enum, /**< Support RSA Private Key OP with CRT (quintuple) Keys */ #define RTE_CRYPTODEV_FF_DIGEST_ENCRYPTED (1ULL << 19) /**< Support encrypted-digest operations where digest is appended to data */ +#define RTE_CRYPTODEV_FF_ASYM_SESSIONLESS (1ULL << 20) +/**< Support asymmetric session-less operations */ /** -- 2.20.1