Update some patch for uadk_engine from mainline. Signed-off-by: Yang Shen <shenyang39@huawei.com> (cherry picked from commit 6ae4d8c0999343eddb153c4e4e879a6b66ef528f)
170 lines
4.5 KiB
Diff
170 lines
4.5 KiB
Diff
From 4fbef0e061a97e3ead086de7f3f5689e9d53f454 Mon Sep 17 00:00:00 2001
|
|
From: Kai Ye <yekai13@huawei.com>
|
|
Date: Mon, 18 Jul 2022 09:41:39 +0800
|
|
Subject: [PATCH 44/57] engine: add receiving timeout count
|
|
|
|
Task fail due to hardware errors, but the process of poll
|
|
isn't exit. Increase the count of packet receiving timeout
|
|
as doing async jobs. Prevents falling into an infinite loop
|
|
in poll ctx.
|
|
|
|
Signed-off-by: Kai Ye <yekai13@huawei.com>
|
|
---
|
|
src/uadk.h | 5 +++--
|
|
src/uadk_cipher.c | 7 +++++--
|
|
src/uadk_dh.c | 7 +++++--
|
|
src/uadk_digest.c | 7 +++++--
|
|
src/uadk_pkey.c | 7 +++++--
|
|
src/uadk_rsa.c | 7 +++++--
|
|
6 files changed, 28 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/src/uadk.h b/src/uadk.h
|
|
index ef09274..e2635d4 100644
|
|
--- a/src/uadk.h
|
|
+++ b/src/uadk.h
|
|
@@ -22,8 +22,9 @@
|
|
#include <uadk/wd_sched.h>
|
|
#include "uadk_utils.h"
|
|
|
|
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
|
-#define ENV_STRING_LEN 256
|
|
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
|
+#define ENV_STRING_LEN 256
|
|
+#define ENGINE_RECV_MAX_CNT 60000000
|
|
|
|
enum {
|
|
KUNPENG920,
|
|
diff --git a/src/uadk_cipher.c b/src/uadk_cipher.c
|
|
index 7eba992..472c0ad 100644
|
|
--- a/src/uadk_cipher.c
|
|
+++ b/src/uadk_cipher.c
|
|
@@ -504,6 +504,7 @@ static int sched_single_poll_policy(handle_t h_sched_ctx,
|
|
static int uadk_e_cipher_poll(void *ctx)
|
|
{
|
|
struct cipher_priv_ctx *priv = (struct cipher_priv_ctx *) ctx;
|
|
+ __u64 rx_cnt = 0;
|
|
__u32 recv = 0;
|
|
/* Poll one packet currently */
|
|
int expt = 1;
|
|
@@ -520,9 +521,11 @@ static int uadk_e_cipher_poll(void *ctx)
|
|
return 0;
|
|
else if (ret < 0 && ret != -EAGAIN)
|
|
return ret;
|
|
- } while (ret == -EAGAIN);
|
|
+ } while (ret == -EAGAIN && (rx_cnt++ < ENGINE_RECV_MAX_CNT));
|
|
|
|
- return ret;
|
|
+ fprintf(stderr, "failed to recv msg: timeout!\n");
|
|
+
|
|
+ return -ETIMEDOUT;
|
|
}
|
|
|
|
static int uadk_e_cipher_env_poll(void *ctx)
|
|
diff --git a/src/uadk_dh.c b/src/uadk_dh.c
|
|
index 3882306..893b0f2 100644
|
|
--- a/src/uadk_dh.c
|
|
+++ b/src/uadk_dh.c
|
|
@@ -204,6 +204,7 @@ static __u32 dh_pick_next_ctx(handle_t sched_ctx,
|
|
|
|
static int uadk_e_dh_poll(void *ctx)
|
|
{
|
|
+ __u64 rx_cnt = 0;
|
|
__u32 recv = 0;
|
|
int expect = 1;
|
|
int idx = 1;
|
|
@@ -215,9 +216,11 @@ static int uadk_e_dh_poll(void *ctx)
|
|
return UADK_E_POLL_SUCCESS;
|
|
else if (ret < 0 && ret != -EAGAIN)
|
|
return ret;
|
|
- } while (ret == -EAGAIN);
|
|
+ } while (ret == -EAGAIN && (rx_cnt++ < ENGINE_RECV_MAX_CNT));
|
|
|
|
- return ret;
|
|
+ fprintf(stderr, "failed to recv msg: timeout!\n");
|
|
+
|
|
+ return -ETIMEDOUT;
|
|
}
|
|
|
|
static void uadk_e_dh_cb(void *req_t)
|
|
diff --git a/src/uadk_digest.c b/src/uadk_digest.c
|
|
index ecc0ce6..2e61e80 100644
|
|
--- a/src/uadk_digest.c
|
|
+++ b/src/uadk_digest.c
|
|
@@ -332,6 +332,7 @@ static int sched_single_poll_policy(handle_t h_sched_ctx,
|
|
|
|
static int uadk_e_digest_poll(void *ctx)
|
|
{
|
|
+ __u64 rx_cnt = 0;
|
|
__u32 recv = 0;
|
|
int expt = 1;
|
|
int ret = 0;
|
|
@@ -342,9 +343,11 @@ static int uadk_e_digest_poll(void *ctx)
|
|
return 0;
|
|
else if (ret < 0 && ret != -EAGAIN)
|
|
return ret;
|
|
- } while (ret == -EAGAIN);
|
|
+ } while (ret == -EAGAIN && (rx_cnt++ < ENGINE_RECV_MAX_CNT));
|
|
|
|
- return ret;
|
|
+ fprintf(stderr, "failed to recv msg: timeout!\n");
|
|
+
|
|
+ return -ETIMEDOUT;
|
|
}
|
|
|
|
static int uadk_e_digest_env_poll(void *ctx)
|
|
diff --git a/src/uadk_pkey.c b/src/uadk_pkey.c
|
|
index d4ec30e..2616c5e 100644
|
|
--- a/src/uadk_pkey.c
|
|
+++ b/src/uadk_pkey.c
|
|
@@ -113,6 +113,7 @@ void uadk_ecc_cb(void *req_t)
|
|
static int uadk_ecc_poll(void *ctx)
|
|
{
|
|
unsigned int recv = 0;
|
|
+ __u64 rx_cnt = 0;
|
|
int expt = 1;
|
|
int ret;
|
|
|
|
@@ -122,9 +123,11 @@ static int uadk_ecc_poll(void *ctx)
|
|
return 0;
|
|
else if (ret < 0 && ret != -EAGAIN)
|
|
return ret;
|
|
- } while (ret == -EAGAIN);
|
|
+ } while (ret == -EAGAIN && (rx_cnt++ < ENGINE_RECV_MAX_CNT));
|
|
|
|
- return ret;
|
|
+ fprintf(stderr, "failed to recv msg: timeout!\n");
|
|
+
|
|
+ return -ETIMEDOUT;
|
|
}
|
|
|
|
/* make resource configure static */
|
|
diff --git a/src/uadk_rsa.c b/src/uadk_rsa.c
|
|
index a80d203..29b2521 100644
|
|
--- a/src/uadk_rsa.c
|
|
+++ b/src/uadk_rsa.c
|
|
@@ -656,6 +656,7 @@ static int rsa_poll_policy(handle_t h_sched_ctx, __u32 expect, __u32 *count)
|
|
|
|
static int uadk_e_rsa_poll(void *ctx)
|
|
{
|
|
+ __u64 rx_cnt = 0;
|
|
__u32 recv = 0;
|
|
int expt = 1;
|
|
int ret;
|
|
@@ -666,9 +667,11 @@ static int uadk_e_rsa_poll(void *ctx)
|
|
return UADK_E_POLL_SUCCESS;
|
|
else if (ret < 0 && ret != -EAGAIN)
|
|
return ret;
|
|
- } while (ret == -EAGAIN);
|
|
+ } while (ret == -EAGAIN && (rx_cnt++ < ENGINE_RECV_MAX_CNT));
|
|
|
|
- return ret;
|
|
+ fprintf(stderr, "failed to recv msg: timeout!\n");
|
|
+
|
|
+ return -ETIMEDOUT;
|
|
}
|
|
|
|
static struct rsa_res_config rsa_res_config = {
|
|
--
|
|
2.27.0
|
|
|