From: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org>

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.ereminsoleni...@linaro.org>
---
/** Email created from pull request 74 (lumag:crypto-packet)
 ** https://github.com/Linaro/odp/pull/74
 ** Patch: https://github.com/Linaro/odp/pull/74.patch
 ** Base sha: ee5be324411a7520528a367967c28fc529d3bc2e
 ** Merge commit sha: 5411462e6545fa2d6a286a40c2057db97714ee74
 **/
 include/odp/api/spec/crypto.h                      | 38 +++++++-------------
 include/odp/arch/default/api/abi/crypto.h          |  4 +--
 include/odp/arch/default/api/abi/event.h           |  4 +--
 .../include/odp/api/plat/crypto_types.h            |  3 +-
 .../include/odp/api/plat/event_types.h             |  3 +-
 platform/linux-generic/odp_crypto.c                |  4 ---
 platform/linux-generic/odp_event.c                 |  2 --
 test/common_plat/performance/odp_crypto.c          |  1 +
 test/common_plat/validation/api/crypto/crypto.c    |  2 ++
 .../validation/api/crypto/odp_crypto_test_inp.c    | 41 +++++++++++++++++++++-
 .../validation/api/crypto/odp_crypto_test_inp.h    |  2 ++
 11 files changed, 61 insertions(+), 43 deletions(-)

diff --git a/include/odp/api/spec/crypto.h b/include/odp/api/spec/crypto.h
index 3e47f3ef..6736214b 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 2d02eee6..f0793a19 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 871d2cf9..f86d8e27 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 23e1cc42..2cc747eb 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 58ce0a8b..4d0efff1 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 80ff6f59..ca51bdf0 100644
--- a/platform/linux-generic/odp_crypto.c
+++ b/platform/linux-generic/odp_crypto.c
@@ -881,9 +881,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;
@@ -1030,7 +1028,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 */
@@ -1067,7 +1064,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 56cc90b0..23b410d8 100644
--- a/platform/linux-generic/odp_event.c
+++ b/platform/linux-generic/odp_event.c
@@ -46,11 +46,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/common_plat/performance/odp_crypto.c 
b/test/common_plat/performance/odp_crypto.c
index 27d4fd30..7a25ffdc 100644
--- a/test/common_plat/performance/odp_crypto.c
+++ b/test/common_plat/performance/odp_crypto.c
@@ -427,6 +427,7 @@ create_session_from_config(odp_crypto_session_t *session,
        odp_crypto_session_param_init(&params);
        memcpy(&params, &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/common_plat/validation/api/crypto/crypto.c 
b/test/common_plat/validation/api/crypto/crypto.c
index 8a6c20ec..04ca527d 100644
--- a/test/common_plat/validation/api/crypto/crypto.c
+++ b/test/common_plat/validation/api/crypto/crypto.c
@@ -15,6 +15,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/common_plat/validation/api/crypto/odp_crypto_test_inp.c 
b/test/common_plat/validation/api/crypto/odp_crypto_test_inp.c
index ac59744f..953fef02 100644
--- a/test/common_plat/validation/api/crypto/odp_crypto_test_inp.c
+++ b/test/common_plat/validation/api/crypto/odp_crypto_test_inp.c
@@ -16,6 +16,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;
 };
@@ -81,6 +82,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;
@@ -109,8 +111,30 @@ 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 ==
@@ -403,6 +427,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;
@@ -1678,6 +1703,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/common_plat/validation/api/crypto/odp_crypto_test_inp.h 
b/test/common_plat/validation/api/crypto/odp_crypto_test_inp.h
index 2bc77a94..c50b8493 100644
--- a/test/common_plat/validation/api/crypto/odp_crypto_test_inp.h
+++ b/test/common_plat/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);

Reply via email to