diff mbox

[PATCHv2,3/4] linux-generic: crypto: implement odp_crypto_get_operation_compl_packet()

Message ID 1418739571-656-4-git-send-email-taras.kondratiuk@linaro.org
State Accepted
Commit f6047c5cbe2d833635523b474017d415599fb810
Headers show

Commit Message

Taras Kondratiuk Dec. 16, 2014, 2:19 p.m. UTC
Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org>
---
 platform/linux-generic/include/odp_crypto_internal.h |  1 +
 platform/linux-generic/odp_crypto.c                  | 11 ++++++++---
 2 files changed, 9 insertions(+), 3 deletions(-)
diff mbox

Patch

diff --git a/platform/linux-generic/include/odp_crypto_internal.h b/platform/linux-generic/include/odp_crypto_internal.h
index 7ea1f5c..2e5a71c 100644
--- a/platform/linux-generic/include/odp_crypto_internal.h
+++ b/platform/linux-generic/include/odp_crypto_internal.h
@@ -70,6 +70,7 @@  typedef struct odp_crypto_generic_op_result {
 	odp_crypto_compl_status_t cipher;
 	odp_crypto_compl_status_t auth;
 	void *op_context;
+	odp_packet_t out_pkt;
 } odp_crypto_generic_op_result_t;
 
 /**
diff --git a/platform/linux-generic/odp_crypto.c b/platform/linux-generic/odp_crypto.c
index 8bbca94..5493eff 100644
--- a/platform/linux-generic/odp_crypto.c
+++ b/platform/linux-generic/odp_crypto.c
@@ -386,6 +386,7 @@  odp_crypto_operation(odp_crypto_op_params_t *params,
 	result->cipher.hw_err = ODP_CRYPTO_HW_ERR_NONE;
 	result->auth.alg_err = rc_auth;
 	result->auth.hw_err = ODP_CRYPTO_HW_ERR_NONE;
+	result->out_pkt = params->out_pkt;
 
 	/* If specified during creation post event to completion queue */
 	if (ODP_QUEUE_INVALID != session->compl_queue) {
@@ -472,8 +473,12 @@  void
 }
 
 odp_packet_t
-odp_crypto_get_operation_compl_packet(odp_buffer_t completion_event ODP_UNUSED)
+odp_crypto_get_operation_compl_packet(odp_buffer_t completion_event)
 {
-	ODP_UNIMPLEMENTED();
-	return ODP_PACKET_INVALID;
+	odp_crypto_generic_op_result_t *result;
+
+	result = get_op_result_from_buffer(completion_event);
+	ODP_ASSERT(OP_RESULT_MAGIC == result->magic, "Bad completion magic");
+
+	return result->out_pkt;
 }