From 0045209c80fb2d418d3172b2b3026f446b22d176 Mon Sep 17 00:00:00 2001 From: "fisher.yu" Date: Tue, 20 Jun 2023 06:21:11 +0000 Subject: [PATCH] Optimize SNOW3G implementation to fix compilation warnings. Change-Id: I1aecb252d29b3e1bac6cb2fd7fe3cc44c9d6741a --- .../mb_mgr_snow3g_submit_flush_common_aarch64.h | 16 ++++++++-------- lib/aarch64/snow3g_common_aarch64.h | 10 +++++----- lib/include/ipsec_ooo_mgr.h | 10 +++++++--- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/lib/aarch64/mb_mgr_snow3g_submit_flush_common_aarch64.h b/lib/aarch64/mb_mgr_snow3g_submit_flush_common_aarch64.h index e55d3978..4a88fed1 100644 --- a/lib/aarch64/mb_mgr_snow3g_submit_flush_common_aarch64.h +++ b/lib/aarch64/mb_mgr_snow3g_submit_flush_common_aarch64.h @@ -71,11 +71,11 @@ void SNOW3G_F8_1_BUFFER_STREAM_JOB(void *pCtx, void SNOW3G_F8_MULTI_BUFFER_INITIALIZE_JOB(void *pCtx, const snow3g_key_schedule_t **pKeySched, - const void **pIV); + const uint8_t **pIV); void SNOW3G_F8_MULTI_BUFFER_STREAM_JOB(void *pCtx, - const void **pBufferIn, - void **pBufferOut, + const uint8_t **pBufferIn, + uint8_t **pBufferOut, const uint32_t lengthInBytes); void SNOW3G_F9_MULTI_BUFFER_KEYSTREAM_JOB(void *pCtx, @@ -272,7 +272,7 @@ IMB_JOB *SUBMIT_JOB_SNOW3G_UEA2(IMB_MGR *state, SNOW3G_F8_MULTI_BUFFER_INITIALIZE_JOB(&tmp_ctx, (const snow3g_key_schedule_t **)snow3g_state->args.keys, - (const void**)snow3g_state->args.iv); + (const uint8_t**)snow3g_state->args.iv); cpy_newly_intialized_ctx_to_state(&tmp_ctx, snow3g_state); for (int i = 0; i < SNOW3G_MB_MAX_LANES_SIMD; i++) { @@ -281,8 +281,8 @@ IMB_JOB *SUBMIT_JOB_SNOW3G_UEA2(IMB_MGR *state, } SNOW3G_F8_MULTI_BUFFER_STREAM_JOB(pCtx, - (const void **)snow3g_state->args.in, - (void **)snow3g_state->args.out, + (const uint8_t **)snow3g_state->args.in, + (uint8_t **)snow3g_state->args.out, min_word_len * SNOW3G_4_BYTES); for (int i = 0; i < SNOW3G_MB_MAX_LANES_SIMD; i++) { @@ -406,7 +406,7 @@ IMB_JOB *SUBMIT_JOB_SNOW3G_UIA2(IMB_MGR *state, snow3gKeyStateMulti_t ctx; SNOW3G_F8_MULTI_BUFFER_INITIALIZE_JOB(&ctx, (const snow3g_key_schedule_t **)snow3g_state->args.keys, - (const void**)snow3g_state->args.iv); + (const uint8_t**)snow3g_state->args.iv); SNOW3G_F9_MULTI_BUFFER_KEYSTREAM_JOB(&ctx, snow3g_state->ks); snow3g_state->init_done = INIT_ALL_DONE; @@ -460,7 +460,7 @@ IMB_JOB *FLUSH_JOB_SNOW3G_UIA2(IMB_MGR *state) snow3gKeyStateMulti_t ctx; SNOW3G_F8_MULTI_BUFFER_INITIALIZE_JOB(&ctx, (const snow3g_key_schedule_t **)snow3g_state->args.keys, - (const void **)snow3g_state->args.iv); + (const uint8_t **)snow3g_state->args.iv); SNOW3G_F9_MULTI_BUFFER_KEYSTREAM_JOB(&ctx, snow3g_state->ks); // pick a initialized lane diff --git a/lib/aarch64/snow3g_common_aarch64.h b/lib/aarch64/snow3g_common_aarch64.h index 577e8348..f49ca555 100644 --- a/lib/aarch64/snow3g_common_aarch64.h +++ b/lib/aarch64/snow3g_common_aarch64.h @@ -2309,8 +2309,8 @@ void SNOW3G_F8_4_BUFFER(const snow3g_key_schedule_t *pHandle, vst1q_u32((uint32_t *)pBufferOut[i], in ^ ks[i]); - pBufferOut[i] += (2 * SNOW3G_8_BYTES); - pBufferIn[i] += (2 * SNOW3G_8_BYTES); + pBufferOut[i] = (uint8_t *)pBufferOut[i] + 2 * SNOW3G_8_BYTES; + pBufferIn[i] = (const uint8_t *)pBufferIn[i] + 2 * SNOW3G_8_BYTES; } qwords = qwords - 2; @@ -2331,7 +2331,7 @@ void SNOW3G_F8_4_BUFFER(const snow3g_key_schedule_t *pHandle, vgetq_lane_u64(vreinterpretq_u64_u32(H), 1)); for (i = 0; i < num_lanes; i++) - pBufferOut[i] += SNOW3G_8_BYTES; + pBufferOut[i] = (uint8_t *)pBufferOut[i] + SNOW3G_8_BYTES; } /* process the remaining of each buffer @@ -2881,8 +2881,8 @@ void SNOW3G_F8_4_BUFFER_STREAM_JOB(void *pCtx, xor_keystream_reverse_32(pBufferOut[3], pBufferIn[3], vgetq_lane_u32(ks4, 3)); for (uint32_t i = 0; i < num_lanes; i++) { - pBufferIn[i] += SNOW3G_4_BYTES; - pBufferOut[i] += SNOW3G_4_BYTES; + pBufferIn[i] = (const uint8_t *)pBufferIn[i] + SNOW3G_4_BYTES; + pBufferOut[i] = (uint8_t *)pBufferOut[i] + SNOW3G_4_BYTES; } } diff --git a/lib/include/ipsec_ooo_mgr.h b/lib/include/ipsec_ooo_mgr.h index 67f6230c..46e6abb3 100644 --- a/lib/include/ipsec_ooo_mgr.h +++ b/lib/include/ipsec_ooo_mgr.h @@ -166,10 +166,14 @@ typedef struct { * Structure to store the Snow3G state for 16 packets. *****************************************************************************/ typedef struct { - void *in[16]; + /* + * The type of in, keys and iv should be "const void *", to be + * consistent with the type definition in ipsec_mb.h + */ + const void *in[16]; void *out[16]; - void *keys[16]; - void *iv[16]; + const void *keys[16]; + const void *iv[16]; uint32_t LFSR_0[16]; uint32_t LFSR_1[16]; uint32_t LFSR_2[16]; -- GitLab