diff options
author | Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> | 2017-07-12 16:44:20 +0300 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2017-12-27 21:41:45 +0300 |
commit | a781cc2773b10264d82eecba65150fd01fb1ace9 (patch) | |
tree | 2088c80a117b37cc447da3dfaa3cfdf05b413f49 | |
parent | 7b9d96d6fba4edf68ba7ed80b240345b02757b57 (diff) |
api: crypto: revert deprecation of crypto completion API
It was decided that it would be benefitable to live with both API types
at this point, as odp_crypto_compl_t was available for some time. So
undeprecate odp_crypto_compl_t and related functionality. Validation
tests also provide necessary tests for pref_mode and for completion
event.
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>
Reviewed-by: Petri Savolainen <petri.savolainen@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
-rw-r--r-- | include/odp/api/spec/crypto.h | 38 | ||||
-rw-r--r-- | include/odp/arch/default/api/abi/crypto.h | 4 | ||||
-rw-r--r-- | include/odp/arch/default/api/abi/event.h | 4 | ||||
-rw-r--r-- | platform/linux-generic/include/odp/api/plat/crypto_types.h | 3 | ||||
-rw-r--r-- | platform/linux-generic/include/odp/api/plat/event_types.h | 3 | ||||
-rw-r--r-- | platform/linux-generic/odp_crypto.c | 4 | ||||
-rw-r--r-- | platform/linux-generic/odp_event.c | 2 | ||||
-rw-r--r-- | test/performance/odp_crypto.c | 1 | ||||
-rw-r--r-- | test/validation/api/crypto/crypto.c | 2 | ||||
-rw-r--r-- | test/validation/api/crypto/odp_crypto_test_inp.c | 42 | ||||
-rw-r--r-- | test/validation/api/crypto/odp_crypto_test_inp.h | 2 |
11 files changed, 62 insertions, 43 deletions
diff --git a/include/odp/api/spec/crypto.h b/include/odp/api/spec/crypto.h index 1cd09afda..6d4807c4b 100644 --- a/include/odp/api/spec/crypto.h +++ b/include/odp/api/spec/crypto.h @@ -271,11 +271,8 @@ typedef struct odp_crypto_session_param_t { */ odp_bool_t auth_cipher_text; - /** Preferred sync vs. async - * - * @deprecated no-op now, odp_crypto_operation() will always process - * data in non-posted mode */ - odp_crypto_op_mode_t ODP_DEPRECATE(pref_mode); + /** Preferred sync vs. async for odp_crypto_operation() */ + odp_crypto_op_mode_t pref_mode; /** Operation mode when using packet interface: sync or async */ odp_crypto_op_mode_t op_mode; @@ -340,11 +337,8 @@ typedef struct odp_crypto_op_param_t { /** Session handle from creation */ odp_crypto_session_t session; - /** User context - * - * @deprecated No need to pass context around sync calls - * */ - void *ODP_DEPRECATE(ctx); + /** User context */ + void *ctx; /** Input packet * @@ -504,11 +498,8 @@ typedef struct odp_crypto_op_result { /** Request completed successfully */ odp_bool_t ok; - /** User context from request - * - * @deprecated No need to pass context around sync calls - * */ - void *ODP_DEPRECATE(ctx); + /** User context from request */ + void *ctx; /** Output packet */ odp_packet_t pkt; @@ -692,8 +683,7 @@ int odp_crypto_session_destroy(odp_crypto_session_t session); * * @return crypto completion handle */ -ODP_DEPRECATE(odp_crypto_compl_t) ODP_DEPRECATE(odp_crypto_compl_from_event)( - odp_event_t ev); +odp_crypto_compl_t odp_crypto_compl_from_event(odp_event_t ev); /** * Convert crypto completion handle to event handle @@ -702,16 +692,14 @@ ODP_DEPRECATE(odp_crypto_compl_t) ODP_DEPRECATE(odp_crypto_compl_from_event)( * * @return Event handle */ -odp_event_t ODP_DEPRECATE(odp_crypto_compl_to_event)( - ODP_DEPRECATE(odp_crypto_compl_t) completion_event); +odp_event_t odp_crypto_compl_to_event(odp_crypto_compl_t completion_event); /** * Release crypto completion event * * @param completion_event Completion event we are done accessing */ -void ODP_DEPRECATE(odp_crypto_compl_free)( - ODP_DEPRECATE(odp_crypto_compl_t) completion_event); +void odp_crypto_compl_free(odp_crypto_compl_t completion_event); /** * Crypto per packet operation @@ -739,9 +727,8 @@ int odp_crypto_operation(odp_crypto_op_param_t *param, * @param completion_event Event containing operation results * @param result Pointer to result structure */ -void ODP_DEPRECATE(odp_crypto_compl_result)( - ODP_DEPRECATE(odp_crypto_compl_t) completion_event, - odp_crypto_op_result_t *result); +void odp_crypto_compl_result(odp_crypto_compl_t completion_event, + odp_crypto_op_result_t *result); /** * Get printable value for an odp_crypto_session_t @@ -767,8 +754,7 @@ uint64_t odp_crypto_session_to_u64(odp_crypto_session_t hdl); * to enable applications to generate a printable value that represents * an odp_crypto_compl_t handle. */ -uint64_t ODP_DEPRECATE(odp_crypto_compl_to_u64)( - ODP_DEPRECATE(odp_crypto_compl_t) hdl); +uint64_t odp_crypto_compl_to_u64(odp_crypto_compl_t hdl); /** * Initialize crypto session parameters diff --git a/include/odp/arch/default/api/abi/crypto.h b/include/odp/arch/default/api/abi/crypto.h index 2d02eee69..f0793a198 100644 --- a/include/odp/arch/default/api/abi/crypto.h +++ b/include/odp/arch/default/api/abi/crypto.h @@ -11,8 +11,6 @@ extern "C" { #endif -#include <odp/api/deprecated.h> - #include <stdint.h> /** @internal Dummy type for strong typing */ @@ -25,7 +23,7 @@ typedef struct { char dummy; /**< @internal Dummy */ } _odp_abi_crypto_compl_t; #define ODP_CRYPTO_SESSION_INVALID (0xffffffffffffffffULL) typedef uint64_t odp_crypto_session_t; -typedef _odp_abi_crypto_compl_t *ODP_DEPRECATE(odp_crypto_compl_t); +typedef _odp_abi_crypto_compl_t *odp_crypto_compl_t; /** * @} diff --git a/include/odp/arch/default/api/abi/event.h b/include/odp/arch/default/api/abi/event.h index 08dce73d5..b52a1a222 100644 --- a/include/odp/arch/default/api/abi/event.h +++ b/include/odp/arch/default/api/abi/event.h @@ -11,8 +11,6 @@ extern "C" { #endif -#include <odp/api/deprecated.h> - #include <stdint.h> /** @internal Dummy type for strong typing */ @@ -30,7 +28,7 @@ typedef enum odp_event_type_t { ODP_EVENT_BUFFER = 1, ODP_EVENT_PACKET = 2, ODP_EVENT_TIMEOUT = 3, - ODP_DEPRECATE(ODP_EVENT_CRYPTO_COMPL) = 4, + ODP_EVENT_CRYPTO_COMPL = 4, ODP_EVENT_IPSEC_STATUS = 5 } odp_event_type_t; diff --git a/platform/linux-generic/include/odp/api/plat/crypto_types.h b/platform/linux-generic/include/odp/api/plat/crypto_types.h index 23e1cc42b..2cc747eb2 100644 --- a/platform/linux-generic/include/odp/api/plat/crypto_types.h +++ b/platform/linux-generic/include/odp/api/plat/crypto_types.h @@ -22,7 +22,6 @@ extern "C" { #if ODP_ABI_COMPAT == 1 #include <odp/api/abi/crypto.h> #else -#include <odp/api/deprecated.h> /** @ingroup odp_crypto * @{ @@ -31,7 +30,7 @@ extern "C" { #define ODP_CRYPTO_SESSION_INVALID (0xffffffffffffffffULL) typedef uint64_t odp_crypto_session_t; -typedef ODP_HANDLE_T(ODP_DEPRECATE(odp_crypto_compl_t)); +typedef ODP_HANDLE_T(odp_crypto_compl_t); /** * @} diff --git a/platform/linux-generic/include/odp/api/plat/event_types.h b/platform/linux-generic/include/odp/api/plat/event_types.h index 4dc7a93c5..9bff607a5 100644 --- a/platform/linux-generic/include/odp/api/plat/event_types.h +++ b/platform/linux-generic/include/odp/api/plat/event_types.h @@ -23,7 +23,6 @@ extern "C" { #include <odp/api/abi/event.h> #else -#include <odp/api/deprecated.h> #include <odp/api/std_types.h> #include <odp/api/plat/strong_types.h> @@ -39,7 +38,7 @@ typedef enum odp_event_type_t { ODP_EVENT_BUFFER = 1, ODP_EVENT_PACKET = 2, ODP_EVENT_TIMEOUT = 3, - ODP_DEPRECATE(ODP_EVENT_CRYPTO_COMPL) = 4, + ODP_EVENT_CRYPTO_COMPL = 4, ODP_EVENT_IPSEC_STATUS = 5 } odp_event_type_t; diff --git a/platform/linux-generic/odp_crypto.c b/platform/linux-generic/odp_crypto.c index de73ee9d6..88114a3dc 100644 --- a/platform/linux-generic/odp_crypto.c +++ b/platform/linux-generic/odp_crypto.c @@ -878,9 +878,7 @@ odp_crypto_operation(odp_crypto_op_param_t *param, ODP_EVENT_PACKET_BASIC); /* Fill in result */ -#if ODP_DEPRECATED_API local_result.ctx = param->ctx; -#endif local_result.pkt = out_pkt; local_result.cipher_status = packet_result.cipher_status; local_result.auth_status = packet_result.auth_status; @@ -1017,7 +1015,6 @@ int32_t odp_random_test_data(uint8_t *buf, uint32_t len, uint64_t *seed) return len; } -#if ODP_DEPRECATED_API odp_crypto_compl_t odp_crypto_compl_from_event(odp_event_t ev) { /* This check not mandated by the API specification */ @@ -1054,7 +1051,6 @@ uint64_t odp_crypto_compl_to_u64(odp_crypto_compl_t hdl) { return _odp_pri(hdl); } -#endif void odp_crypto_session_param_init(odp_crypto_session_param_t *param) { diff --git a/platform/linux-generic/odp_event.c b/platform/linux-generic/odp_event.c index 696774ec3..991d0e17d 100644 --- a/platform/linux-generic/odp_event.c +++ b/platform/linux-generic/odp_event.c @@ -48,11 +48,9 @@ void odp_event_free(odp_event_t event) case ODP_EVENT_TIMEOUT: odp_timeout_free(odp_timeout_from_event(event)); break; -#if ODP_DEPRECATED_API case ODP_EVENT_CRYPTO_COMPL: odp_crypto_compl_free(odp_crypto_compl_from_event(event)); break; -#endif default: ODP_ABORT("Invalid event type: %d\n", odp_event_type(event)); } diff --git a/test/performance/odp_crypto.c b/test/performance/odp_crypto.c index 5590ce0e3..f97f20a34 100644 --- a/test/performance/odp_crypto.c +++ b/test/performance/odp_crypto.c @@ -429,6 +429,7 @@ create_session_from_config(odp_crypto_session_t *session, odp_crypto_session_param_init(¶ms); memcpy(¶ms, &config->session, sizeof(odp_crypto_session_param_t)); params.op = ODP_CRYPTO_OP_ENCODE; + params.pref_mode = ODP_CRYPTO_SYNC; /* Lookup the packet pool */ pkt_pool = odp_pool_lookup("packet_pool"); diff --git a/test/validation/api/crypto/crypto.c b/test/validation/api/crypto/crypto.c index d5b09be1b..7298d544b 100644 --- a/test/validation/api/crypto/crypto.c +++ b/test/validation/api/crypto/crypto.c @@ -17,6 +17,8 @@ odp_suiteinfo_t crypto_suites[] = { {ODP_CRYPTO_SYNC_INP, crypto_suite_sync_init, crypto_suite_term, crypto_suite}, + {ODP_CRYPTO_ASYNC_INP, crypto_suite_async_init, + crypto_suite_term, crypto_suite}, {ODP_CRYPTO_PACKET_SYNC_INP, crypto_suite_packet_sync_init, crypto_suite_term, crypto_suite}, {ODP_CRYPTO_PACKET_ASYNC_INP, crypto_suite_packet_async_init, diff --git a/test/validation/api/crypto/odp_crypto_test_inp.c b/test/validation/api/crypto/odp_crypto_test_inp.c index b0f8c2e72..4744be96d 100644 --- a/test/validation/api/crypto/odp_crypto_test_inp.c +++ b/test/validation/api/crypto/odp_crypto_test_inp.c @@ -18,6 +18,7 @@ struct suite_context_s { odp_bool_t packet; odp_crypto_op_mode_t op_mode; + odp_crypto_op_mode_t pref_mode; odp_pool_t pool; odp_queue_t queue; }; @@ -83,6 +84,7 @@ static int alg_op(odp_packet_t pkt, op_params.session = session; op_params.pkt = pkt; op_params.out_pkt = pkt; + op_params.ctx = (void *)0xdeadbeef; if (cipher_range) { op_params.cipher_range = *cipher_range; @@ -111,8 +113,31 @@ static int alg_op(odp_packet_t pkt, return rc; } - CU_ASSERT(posted == 0); + if (posted) { + odp_event_t event; + odp_crypto_compl_t compl_event; + + /* Poll completion queue for results */ + do { + event = odp_queue_deq(suite_context.queue); + } while (event == ODP_EVENT_INVALID); + + CU_ASSERT(ODP_EVENT_CRYPTO_COMPL == odp_event_type(event)); + CU_ASSERT(ODP_EVENT_NO_SUBTYPE == odp_event_subtype(event)); + CU_ASSERT(ODP_EVENT_CRYPTO_COMPL == + odp_event_types(event, &subtype)); + CU_ASSERT(ODP_EVENT_NO_SUBTYPE == subtype); + + compl_event = odp_crypto_compl_from_event(event); + CU_ASSERT(odp_crypto_compl_to_u64(compl_event) == + odp_crypto_compl_to_u64( + odp_crypto_compl_from_event(event))); + odp_crypto_compl_result(compl_event, &result); + odp_crypto_compl_free(compl_event); + } + CU_ASSERT(result.pkt == pkt); + CU_ASSERT(result.ctx == (void *)0xdeadbeef); CU_ASSERT(ODP_EVENT_PACKET == odp_event_type(odp_packet_to_event(result.pkt))); CU_ASSERT(ODP_EVENT_PACKET_BASIC == @@ -405,6 +430,7 @@ static void alg_test(odp_crypto_op_t op, ses_params.op = op; ses_params.auth_cipher_text = false; ses_params.op_mode = suite_context.op_mode; + ses_params.pref_mode = suite_context.pref_mode; ses_params.cipher_alg = cipher_alg; ses_params.auth_alg = auth_alg; ses_params.compl_queue = suite_context.queue; @@ -1680,6 +1706,20 @@ int crypto_suite_sync_init(void) return -1; suite_context.queue = ODP_QUEUE_INVALID; + suite_context.pref_mode = ODP_CRYPTO_SYNC; + return 0; +} + +int crypto_suite_async_init(void) +{ + suite_context.pool = odp_pool_lookup("packet_pool"); + if (suite_context.pool == ODP_POOL_INVALID) + return -1; + suite_context.queue = odp_queue_lookup("crypto-out"); + if (suite_context.queue == ODP_QUEUE_INVALID) + return -1; + + suite_context.pref_mode = ODP_CRYPTO_ASYNC; return 0; } diff --git a/test/validation/api/crypto/odp_crypto_test_inp.h b/test/validation/api/crypto/odp_crypto_test_inp.h index 2bc77a940..c50b84933 100644 --- a/test/validation/api/crypto/odp_crypto_test_inp.h +++ b/test/validation/api/crypto/odp_crypto_test_inp.h @@ -10,6 +10,7 @@ /* Suite names */ #define ODP_CRYPTO_SYNC_INP "odp_crypto_sync_inp" +#define ODP_CRYPTO_ASYNC_INP "odp_crypto_async_inp" #define ODP_CRYPTO_PACKET_SYNC_INP "odp_crypto_packet_sync_inp" #define ODP_CRYPTO_PACKET_ASYNC_INP "odp_crypto_packet_async_inp" @@ -17,6 +18,7 @@ extern odp_testinfo_t crypto_suite[]; int crypto_suite_sync_init(void); +int crypto_suite_async_init(void); int crypto_suite_packet_sync_init(void); int crypto_suite_packet_async_init(void); int crypto_suite_term(void); |