From: lizhi <lizhi206@huawei.com> In abnormal scenarios, if the alg cores of hardware device are closed, the hw async task may return busy and can not finish the task. There is be a max loop count to avoid infinite loop. But there is already a 'MAX_POLL_TIMES' (1000) in uadk default poll policy.If hpre use 'PROV_RECV_MAX_CNT' to control the poll loop count, the actual count will be: MAX_POLL_TIMES * PROV_RECV_MAX_CNT, which is too large. This will cause the process use a very long time to exit. So modify the env poll loop time count. Signed-off-by: lizhi <lizhi206@huawei.com> --- src/uadk_prov.h | 23 +++++++++++++---------- src/uadk_prov_aead.c | 2 +- src/uadk_prov_cipher.c | 2 +- src/uadk_prov_dh.c | 2 +- src/uadk_prov_digest.c | 2 +- src/uadk_prov_hmac.c | 2 +- src/uadk_prov_pkey.c | 2 +- src/uadk_prov_pkey.h | 3 --- src/uadk_prov_rsa.c | 2 +- 9 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/uadk_prov.h b/src/uadk_prov.h index 3ac4ac3..0829b19 100644 --- a/src/uadk_prov.h +++ b/src/uadk_prov.h @@ -19,16 +19,19 @@ #define UADK_PROV_H #include <openssl/core_dispatch.h> -#define FUNC_MAX_NUM 32 -#define CTX_ASYNC 1 -#define CTX_SYNC 0 -#define UADK_UNINIT 0 -#define UADK_INIT_SUCCESS 1 -#define UADK_INIT_FAIL 2 -#define UADK_DEVICE_ERROR 3 -#define HW_SEC_V2 2 -#define HW_SEC_V3 3 -#define POLL_ERROR (-1) +#define FUNC_MAX_NUM 32 +#define CTX_ASYNC 1 +#define CTX_SYNC 0 +#define UADK_UNINIT 0 +#define UADK_INIT_SUCCESS 1 +#define UADK_INIT_FAIL 2 +#define UADK_DEVICE_ERROR 3 +#define HW_SEC_V2 2 +#define HW_SEC_V3 3 +#define POLL_ERROR (-1) +#define PROV_SEND_MAX_CNT 90000000 +#define PROV_RECV_MAX_CNT 60000000 +#define PROV_SCH_RECV_MAX_CNT 60000 /* Copy openssl/providers/implementations/include/prov/names.h */ #define PROV_NAMES_MD5 "MD5:SSL3-MD5:1.2.840.113549.2.5" diff --git a/src/uadk_prov_aead.c b/src/uadk_prov_aead.c index 88cf927..17b498d 100644 --- a/src/uadk_prov_aead.c +++ b/src/uadk_prov_aead.c @@ -140,7 +140,7 @@ static int uadk_aead_poll(void *ctx) if (ret < 0 || recv >= expt) return ret; rx_cnt++; - } while (rx_cnt < ENGINE_RECV_MAX_CNT); + } while (rx_cnt < PROV_SCH_RECV_MAX_CNT); fprintf(stderr, "failed to poll msg: timeout!\n"); diff --git a/src/uadk_prov_cipher.c b/src/uadk_prov_cipher.c index 82edc55..3c0d66b 100644 --- a/src/uadk_prov_cipher.c +++ b/src/uadk_prov_cipher.c @@ -390,7 +390,7 @@ static int uadk_cipher_poll(void *ctx) if (ret < 0 || recv >= expt) return ret; recv_cnt++; - } while (recv_cnt < ENGINE_RECV_MAX_CNT); + } while (recv_cnt < PROV_SCH_RECV_MAX_CNT); fprintf(stderr, "failed to poll provider cipher msg: timeout!\n"); diff --git a/src/uadk_prov_dh.c b/src/uadk_prov_dh.c index 4cbfa71..33729d2 100644 --- a/src/uadk_prov_dh.c +++ b/src/uadk_prov_dh.c @@ -630,7 +630,7 @@ static int uadk_prov_dh_poll(void *ctx) if (ret < 0 || recv == expt) return ret; rx_cnt++; - } while (rx_cnt < PROV_ENV_RECV_MAX_CNT); + } while (rx_cnt < PROV_SCH_RECV_MAX_CNT); fprintf(stderr, "failed to poll msg: timeout!\n"); diff --git a/src/uadk_prov_digest.c b/src/uadk_prov_digest.c index 457aa9a..486ed11 100644 --- a/src/uadk_prov_digest.c +++ b/src/uadk_prov_digest.c @@ -297,7 +297,7 @@ static int uadk_digest_poll(void *ctx) if (ret < 0 || recv == expt) return ret; rx_cnt++; - } while (rx_cnt < ENGINE_RECV_MAX_CNT); + } while (rx_cnt < PROV_SCH_RECV_MAX_CNT); fprintf(stderr, "failed to poll msg: timeout!\n"); diff --git a/src/uadk_prov_hmac.c b/src/uadk_prov_hmac.c index 0558bc2..49ae1d8 100644 --- a/src/uadk_prov_hmac.c +++ b/src/uadk_prov_hmac.c @@ -308,7 +308,7 @@ static int uadk_hmac_poll(void *ctx) if (ret < 0 || recv == expt) return ret; rx_cnt++; - } while (rx_cnt < ENGINE_RECV_MAX_CNT); + } while (rx_cnt < PROV_SCH_RECV_MAX_CNT); fprintf(stderr, "failed to poll msg: timeout!\n"); diff --git a/src/uadk_prov_pkey.c b/src/uadk_prov_pkey.c index 3c67c06..0acb53c 100644 --- a/src/uadk_prov_pkey.c +++ b/src/uadk_prov_pkey.c @@ -444,7 +444,7 @@ int uadk_prov_ecc_poll(void *ctx) if (ret < 0 || recv == expt) return ret; rx_cnt++; - } while (rx_cnt < PROV_RECV_MAX_CNT); + } while (rx_cnt < PROV_SCH_RECV_MAX_CNT); fprintf(stderr, "failed to recv msg: timeout!\n"); diff --git a/src/uadk_prov_pkey.h b/src/uadk_prov_pkey.h index 1886117..507e7ec 100644 --- a/src/uadk_prov_pkey.h +++ b/src/uadk_prov_pkey.h @@ -45,9 +45,6 @@ #define UADK_P_SUCCESS 1 #define UADK_P_FAIL 0 #define UADK_P_INVALID (-1) -#define PROV_SEND_MAX_CNT 90000000 -#define PROV_RECV_MAX_CNT 60000000 -#define PROV_ENV_RECV_MAX_CNT 60000 #define PROV_KEYMGMT_ALG_NUM 7 #define ECC_POINT_SIZE(n) ((n) << 1) #define UADK_OCTET_STRING 0x04 diff --git a/src/uadk_prov_rsa.c b/src/uadk_prov_rsa.c index 4218416..821ddde 100644 --- a/src/uadk_prov_rsa.c +++ b/src/uadk_prov_rsa.c @@ -1016,7 +1016,7 @@ static int uadk_rsa_env_poll(void *ctx) if (ret < 0 || recv == expt) return ret; rx_cnt++; - } while (rx_cnt < PROV_RECV_MAX_CNT); + } while (rx_cnt < PROV_SCH_RECV_MAX_CNT); fprintf(stderr, "failed to poll msg: timeout!\n"); -- 2.43.0