diff mbox series

[API-NEXT,v1,4/9] api: crypto: deprecate ASYNC mode and odp_crypto_compl_t

Message ID 1498838409-4597-5-git-send-email-odpbot@yandex.ru
State Superseded
Headers show
Series [API-NEXT,v1,1/9] linux-generic: events subtype implementation | expand

Commit Message

Github ODP bot June 30, 2017, 4 p.m. UTC
From: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>


Setting pref_mode to ASYNC now results in SYNC behaviour, so let's
deprecate all ASYNC-related crypto items: pref_mode, odp_crypto_compl_t
and related functions.

Passing context through param/result is also deprecated, as
odp_crypto_operation now works only in sync mode, thus there is no need
to pass additional data around it.

Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>

---
/** Email created from pull request 64 (lumag:crypto-packet)
 ** https://github.com/Linaro/odp/pull/64
 ** Patch: https://github.com/Linaro/odp/pull/64.patch
 ** Base sha: 7a5813042d58598e1c66243d8cfed548302edfc4
 ** Merge commit sha: 25273ed7dee29d26a2ef7357e84a36aa4443f63e
 **/
 example/ipsec/odp_ipsec.c                          | 14 +-------
 example/ipsec/odp_ipsec_cache.c                    | 15 ++------
 example/ipsec/odp_ipsec_cache.h                    |  6 +---
 include/odp/api/spec/crypto.h                      | 24 ++++++++-----
 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            |  2 +-
 .../include/odp/api/plat/event_types.h             |  3 +-
 platform/linux-generic/odp_crypto.c                | 13 ++++---
 platform/linux-generic/odp_event.c                 |  2 ++
 test/common_plat/performance/odp_crypto.c          | 42 +---------------------
 test/common_plat/validation/api/crypto/crypto.c    |  2 --
 .../validation/api/crypto/odp_crypto_test_inp.c    | 40 +--------------------
 .../validation/api/crypto/odp_crypto_test_inp.h    |  2 --
 14 files changed, 41 insertions(+), 132 deletions(-)
diff mbox series

Patch

diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c
index 9ed3aa20..1ed03585 100644
--- a/example/ipsec/odp_ipsec.c
+++ b/example/ipsec/odp_ipsec.c
@@ -393,9 +393,7 @@  void ipsec_init_post(crypto_api_mode_e api_mode)
 						     auth_sa,
 						     tun,
 						     api_mode,
-						     entry->input,
-						     completionq,
-						     out_pool)) {
+						     entry->input)) {
 				EXAMPLE_ERR("Error: IPSec cache entry failed.\n"
 						);
 				exit(EXIT_FAILURE);
@@ -662,7 +660,6 @@  pkt_disposition_e do_ipsec_in_classify(odp_packet_t pkt,
 
 	/* Initialize parameters block */
 	memset(&params, 0, sizeof(params));
-	params.ctx = ctx;
 	params.session = entry->state.session;
 	params.pkt = pkt;
 	params.out_pkt = entry->in_place ? pkt : ODP_PACKET_INVALID;
@@ -843,7 +840,6 @@  pkt_disposition_e do_ipsec_out_classify(odp_packet_t pkt,
 	/* Initialize parameters block */
 	memset(&params, 0, sizeof(params));
 	params.session = entry->state.session;
-	params.ctx = ctx;
 	params.pkt = pkt;
 	params.out_pkt = entry->in_place ? pkt : ODP_PACKET_INVALID;
 
@@ -1085,14 +1081,6 @@  int pktio_thread(void *arg EXAMPLE_UNUSED)
 				}
 				ctx->state = PKT_STATE_INPUT_VERIFY;
 			}
-		} else if (ODP_EVENT_CRYPTO_COMPL == odp_event_type(ev)) {
-			odp_crypto_compl_t compl;
-
-			compl = odp_crypto_compl_from_event(ev);
-			odp_crypto_compl_result(compl, &result);
-			odp_crypto_compl_free(compl);
-			pkt = result.pkt;
-			ctx = result.ctx;
 		} else {
 			abort();
 		}
diff --git a/example/ipsec/odp_ipsec_cache.c b/example/ipsec/odp_ipsec_cache.c
index dba0ea0a..e4150336 100644
--- a/example/ipsec/odp_ipsec_cache.c
+++ b/example/ipsec/odp_ipsec_cache.c
@@ -40,9 +40,7 @@  int create_ipsec_cache_entry(sa_db_entry_t *cipher_sa,
 			     sa_db_entry_t *auth_sa,
 			     tun_db_entry_t *tun,
 			     crypto_api_mode_e api_mode,
-			     odp_bool_t in,
-			     odp_queue_t completionq,
-			     odp_pool_t out_pool)
+			     odp_bool_t in)
 {
 	odp_crypto_session_param_t params;
 	ipsec_cache_entry_t *entry;
@@ -65,15 +63,8 @@  int create_ipsec_cache_entry(sa_db_entry_t *cipher_sa,
 	/* Setup parameters and call crypto library to create session */
 	params.op = (in) ? ODP_CRYPTO_OP_DECODE : ODP_CRYPTO_OP_ENCODE;
 	params.auth_cipher_text = TRUE;
-	if (CRYPTO_API_SYNC == api_mode) {
-		params.pref_mode   = ODP_CRYPTO_SYNC;
-		params.compl_queue = ODP_QUEUE_INVALID;
-		params.output_pool = ODP_POOL_INVALID;
-	} else {
-		params.pref_mode   = ODP_CRYPTO_ASYNC;
-		params.compl_queue = completionq;
-		params.output_pool = out_pool;
-	}
+	params.compl_queue = ODP_QUEUE_INVALID;
+	params.output_pool = ODP_POOL_INVALID;
 
 	if (CRYPTO_API_ASYNC_NEW_BUFFER == api_mode)
 		entry->in_place = FALSE;
diff --git a/example/ipsec/odp_ipsec_cache.h b/example/ipsec/odp_ipsec_cache.h
index 7a4b95cd..ce37ccce 100644
--- a/example/ipsec/odp_ipsec_cache.h
+++ b/example/ipsec/odp_ipsec_cache.h
@@ -85,8 +85,6 @@  void init_ipsec_cache(void);
  * @param tun         Tunnel DB entry pointer
  * @param api_mode    Crypto API mode for testing
  * @param in          Direction (input versus output)
- * @param completionq Completion queue
- * @param out_pool    Output buffer pool
  *
  * @return 0 if successful else -1
  */
@@ -94,9 +92,7 @@  int create_ipsec_cache_entry(sa_db_entry_t *cipher_sa,
 			     sa_db_entry_t *auth_sa,
 			     tun_db_entry_t *tun,
 			     crypto_api_mode_e api_mode,
-			     odp_bool_t in,
-			     odp_queue_t completionq,
-			     odp_pool_t out_pool);
+			     odp_bool_t in);
 
 /**
  * Find a matching IPsec cache entry for input packet
diff --git a/include/odp/api/spec/crypto.h b/include/odp/api/spec/crypto.h
index 01b15d6b..d987de54 100644
--- a/include/odp/api/spec/crypto.h
+++ b/include/odp/api/spec/crypto.h
@@ -270,8 +270,11 @@  typedef struct odp_crypto_session_param_t {
 	 */
 	odp_bool_t auth_cipher_text;
 
-	/** Preferred sync vs. async */
-	odp_crypto_op_mode_t pref_mode;
+	/** 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);
 
 	/** Cipher algorithm
 	 *
@@ -334,8 +337,11 @@  typedef struct odp_crypto_op_param_t {
 	/** Session handle from creation */
 	odp_crypto_session_t session;
 
-	/** User context */
-	void *ctx;
+	/** User context
+	 *
+	 * @deprecated No need to pass context around sync calls
+	 * */
+	void *ODP_DEPRECATE(ctx);
 
 	/** Input packet
 	 *
@@ -618,7 +624,7 @@  int odp_crypto_session_destroy(odp_crypto_session_t session);
  *
  * @return crypto completion handle
  */
-odp_crypto_compl_t odp_crypto_compl_from_event(odp_event_t ev);
+ODP_DEPRECATE(odp_crypto_compl_t) ODP_DEPRECATE(odp_crypto_compl_from_event)(odp_event_t ev);
 
 /**
  * Convert crypto completion handle to event handle
@@ -627,14 +633,14 @@  odp_crypto_compl_t odp_crypto_compl_from_event(odp_event_t ev);
  *
  * @return Event handle
  */
-odp_event_t odp_crypto_compl_to_event(odp_crypto_compl_t completion_event);
+odp_event_t ODP_DEPRECATE(odp_crypto_compl_to_event)(ODP_DEPRECATE(odp_crypto_compl_t) completion_event);
 
 /**
  * Release crypto completion event
  *
  * @param completion_event  Completion event we are done accessing
  */
-void odp_crypto_compl_free(odp_crypto_compl_t completion_event);
+void ODP_DEPRECATE(odp_crypto_compl_free)(ODP_DEPRECATE(odp_crypto_compl_t) completion_event);
 
 /**
  * Crypto per packet operation
@@ -660,7 +666,7 @@  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_crypto_compl_result(odp_crypto_compl_t completion_event,
+void ODP_DEPRECATE(odp_crypto_compl_result)(ODP_DEPRECATE(odp_crypto_compl_t) completion_event,
 			     odp_crypto_op_result_t *result);
 
 /**
@@ -687,7 +693,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_crypto_compl_to_u64(odp_crypto_compl_t hdl);
+uint64_t ODP_DEPRECATE(odp_crypto_compl_to_u64)(ODP_DEPRECATE(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 f0793a19..2d02eee6 100644
--- a/include/odp/arch/default/api/abi/crypto.h
+++ b/include/odp/arch/default/api/abi/crypto.h
@@ -11,6 +11,8 @@ 
 extern "C" {
 #endif
 
+#include <odp/api/deprecated.h>
+
 #include <stdint.h>
 
 /** @internal Dummy type for strong typing */
@@ -23,7 +25,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_crypto_compl_t;
+typedef _odp_abi_crypto_compl_t *ODP_DEPRECATE(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 ab3c0f75..23b16efd 100644
--- a/include/odp/arch/default/api/abi/event.h
+++ b/include/odp/arch/default/api/abi/event.h
@@ -11,6 +11,8 @@ 
 extern "C" {
 #endif
 
+#include <odp/api/deprecated.h>
+
 #include <stdint.h>
 
 /** @internal Dummy type for strong typing */
@@ -28,7 +30,7 @@  typedef enum odp_event_type_t {
 	ODP_EVENT_BUFFER       = 1,
 	ODP_EVENT_PACKET       = 2,
 	ODP_EVENT_TIMEOUT      = 3,
-	ODP_EVENT_CRYPTO_COMPL = 4,
+	ODP_DEPRECATE(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 2cc747eb..3a375369 100644
--- a/platform/linux-generic/include/odp/api/plat/crypto_types.h
+++ b/platform/linux-generic/include/odp/api/plat/crypto_types.h
@@ -30,7 +30,7 @@  extern "C" {
 #define ODP_CRYPTO_SESSION_INVALID (0xffffffffffffffffULL)
 
 typedef uint64_t odp_crypto_session_t;
-typedef ODP_HANDLE_T(odp_crypto_compl_t);
+typedef ODP_HANDLE_T(ODP_DEPRECATE(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 5b3a07e3..1987bc8b 100644
--- a/platform/linux-generic/include/odp/api/plat/event_types.h
+++ b/platform/linux-generic/include/odp/api/plat/event_types.h
@@ -23,6 +23,7 @@  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>
 
@@ -38,7 +39,7 @@  typedef enum odp_event_type_t {
 	ODP_EVENT_BUFFER       = 1,
 	ODP_EVENT_PACKET       = 2,
 	ODP_EVENT_TIMEOUT      = 3,
-	ODP_EVENT_CRYPTO_COMPL = 4,
+	ODP_DEPRECATE(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 d6a6b7a9..06705625 100644
--- a/platform/linux-generic/odp_crypto.c
+++ b/platform/linux-generic/odp_crypto.c
@@ -885,7 +885,9 @@  odp_crypto_operation(odp_crypto_op_param_t *param,
 	}
 
 	/* Fill in result */
+#if ODP_DEPRECATED_API
 	local_result.ctx = param->ctx;
+#endif
 	local_result.pkt = param->out_pkt;
 	local_result.cipher_status.alg_err = rc_cipher;
 	local_result.cipher_status.hw_err = ODP_CRYPTO_HW_ERR_NONE;
@@ -1045,6 +1047,7 @@  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 */
@@ -1076,6 +1079,11 @@  odp_crypto_compl_free(odp_crypto_compl_t completion_event)
 	odp_buffer_free(odp_buffer_from_event(ev));
 }
 
+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)
 {
@@ -1086,8 +1094,3 @@  uint64_t odp_crypto_session_to_u64(odp_crypto_session_t hdl)
 {
 	return (uint64_t)hdl;
 }
-
-uint64_t odp_crypto_compl_to_u64(odp_crypto_compl_t hdl)
-{
-	return _odp_pri(hdl);
-}
diff --git a/platform/linux-generic/odp_event.c b/platform/linux-generic/odp_event.c
index 23b410d8..56cc90b0 100644
--- a/platform/linux-generic/odp_event.c
+++ b/platform/linux-generic/odp_event.c
@@ -46,9 +46,11 @@  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 c3dd6d38..bc29a888 100644
--- a/test/common_plat/performance/odp_crypto.c
+++ b/test/common_plat/performance/odp_crypto.c
@@ -427,7 +427,6 @@  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");
@@ -571,7 +570,7 @@  run_measure_one(crypto_args_t *cargs,
 				packets_sent++;
 		}
 
-		if (!posted) {
+		if (1) {
 			packets_received++;
 			if (cargs->debug_packets) {
 				mem = odp_packet_data(params.out_pkt);
@@ -587,45 +586,6 @@  run_measure_one(crypto_args_t *cargs,
 					odp_packet_free(params.out_pkt);
 				}
 			}
-		} else {
-			odp_event_t ev;
-			odp_crypto_compl_t compl;
-			odp_crypto_op_result_t result;
-			odp_packet_t out_pkt;
-
-			if (cargs->schedule)
-				ev = odp_schedule(NULL,
-						  ODP_SCHED_NO_WAIT);
-			else
-				ev = odp_queue_deq(out_queue);
-
-			while (ev != ODP_EVENT_INVALID) {
-				compl = odp_crypto_compl_from_event(ev);
-				odp_crypto_compl_result(compl, &result);
-				odp_crypto_compl_free(compl);
-				out_pkt = result.pkt;
-
-				if (cargs->debug_packets) {
-					mem = odp_packet_data(out_pkt);
-					print_mem("Receieved encrypted packet",
-						  mem,
-						  payload_length +
-						  config->
-						  session.auth_digest_len);
-				}
-				if (cargs->reuse_packet) {
-					params.pkt = out_pkt;
-					params.out_pkt = ODP_PACKET_INVALID;
-				} else {
-					odp_packet_free(out_pkt);
-				}
-				packets_received++;
-				if (cargs->schedule)
-					ev = odp_schedule(NULL,
-							  ODP_SCHED_NO_WAIT);
-				else
-					ev = odp_queue_deq(out_queue);
-			};
 		}
 	}
 
diff --git a/test/common_plat/validation/api/crypto/crypto.c b/test/common_plat/validation/api/crypto/crypto.c
index 94beb2f1..fde95ab7 100644
--- a/test/common_plat/validation/api/crypto/crypto.c
+++ b/test/common_plat/validation/api/crypto/crypto.c
@@ -15,8 +15,6 @@ 
 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_SUITE_INFO_NULL,
 };
 
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 1d7d49a2..d42ecb68 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
@@ -14,7 +14,6 @@ 
 #define MAX_ALG_CAPA 32
 
 struct suite_context_s {
-	odp_crypto_op_mode_t pref_mode;
 	odp_pool_t pool;
 	odp_queue_t queue;
 };
@@ -92,8 +91,6 @@  static void alg_test(odp_crypto_op_t op,
 	int rc;
 	odp_crypto_ses_create_err_t status;
 	odp_bool_t posted;
-	odp_event_t event;
-	odp_crypto_compl_t compl_event;
 	odp_crypto_op_result_t result;
 	odp_crypto_session_param_t ses_params;
 	odp_crypto_op_param_t op_params;
@@ -196,7 +193,6 @@  static void alg_test(odp_crypto_op_t op,
 	odp_crypto_session_param_init(&ses_params);
 	ses_params.op = op;
 	ses_params.auth_cipher_text = false;
-	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;
@@ -225,7 +221,6 @@  static void alg_test(odp_crypto_op_t op,
 	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;
@@ -258,27 +253,8 @@  static void alg_test(odp_crypto_op_t op,
 		goto cleanup;
 	}
 
-	if (posted) {
-		/* 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(posted == 0);
 	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 ==
@@ -1519,20 +1495,6 @@  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 0f693379..86ecce8e 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
@@ -9,14 +9,12 @@ 
 #include <odp_cunit_common.h>
 
 /* Suite names */
-#define ODP_CRYPTO_ASYNC_INP	"odp_crypto_async_inp"
 #define ODP_CRYPTO_SYNC_INP    "odp_crypto_sync_inp"
 
 /* Suite test array */
 extern odp_testinfo_t crypto_suite[];
 
 int crypto_suite_sync_init(void);
-int crypto_suite_async_init(void);
 int crypto_suite_term(void);
 
 #endif