From 566b427b05ff21f4b50e3e10ceea30bc66939116 Mon Sep 17 00:00:00 2001 From: Benoît Ganne Date: Fri, 22 Jan 2021 18:43:14 +0100 Subject: crypto-ipsecmb: more explicit errors reporting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use error counters related to ipsec-mb return codes instead of 'bad-hmac' only. Type: improvement Change-Id: I9329da300a70d76b4d4ab30fa45f0a2a85d6519b Signed-off-by: Benoît Ganne --- src/plugins/crypto_ipsecmb/ipsecmb.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'src/plugins/crypto_ipsecmb') diff --git a/src/plugins/crypto_ipsecmb/ipsecmb.c b/src/plugins/crypto_ipsecmb/ipsecmb.c index 0501dcccb08..91661c41531 100644 --- a/src/plugins/crypto_ipsecmb/ipsecmb.c +++ b/src/plugins/crypto_ipsecmb/ipsecmb.c @@ -86,15 +86,35 @@ static ipsecmb_main_t ipsecmb_main = { }; _(AES_192_GCM, 192) \ _(AES_256_GCM, 256) +static_always_inline vnet_crypto_op_status_t +ipsecmb_status_job (JOB_STS status) +{ + switch (status) + { + case STS_COMPLETED: + return VNET_CRYPTO_OP_STATUS_COMPLETED; + case STS_BEING_PROCESSED: + case STS_COMPLETED_AES: + case STS_COMPLETED_HMAC: + return VNET_CRYPTO_OP_STATUS_WORK_IN_PROGRESS; + case STS_INVALID_ARGS: + case STS_INTERNAL_ERROR: + case STS_ERROR: + return VNET_CRYPTO_OP_STATUS_FAIL_ENGINE_ERR; + } + ASSERT (0); + return VNET_CRYPTO_OP_STATUS_FAIL_ENGINE_ERR; +} + always_inline void ipsecmb_retire_hmac_job (JOB_AES_HMAC * job, u32 * n_fail, u32 digest_size) { vnet_crypto_op_t *op = job->user_data; u32 len = op->digest_len ? op->digest_len : digest_size; - if (STS_COMPLETED != job->status) + if (PREDICT_FALSE (STS_COMPLETED != job->status)) { - op->status = VNET_CRYPTO_OP_STATUS_FAIL_BAD_HMAC; + op->status = ipsecmb_status_job (job->status); *n_fail = *n_fail + 1; return; } @@ -180,9 +200,9 @@ ipsecmb_retire_cipher_job (JOB_AES_HMAC * job, u32 * n_fail) { vnet_crypto_op_t *op = job->user_data; - if (STS_COMPLETED != job->status) + if (PREDICT_FALSE (STS_COMPLETED != job->status)) { - op->status = VNET_CRYPTO_OP_STATUS_FAIL_BAD_HMAC; + op->status = ipsecmb_status_job (job->status); *n_fail = *n_fail + 1; } else -- cgit 1.2.3-korg