From 053e1f3c1378b9e73811d0217c46d644ed1f37ef Mon Sep 17 00:00:00 2001 From: Mariusz Drost Date: Wed, 18 Mar 2020 14:26:59 +0100 Subject: [PATCH] examples/ipsec-secgw: enable CPU crypto fallback Added cpu-crypto fallback option parsing as well as tests for it Signed-off-by: Mariusz Drost Tested-by: Konstantin Ananyev Acked-by: Konstantin Ananyev --- examples/ipsec-secgw/sa.c | 6 ++++-- examples/ipsec-secgw/test/common_defs.sh | 12 ++++++++++++ .../test/trs_aesgcm_inline_crypto_fallback_defs.sh | 6 +++++- .../test/tun_aesgcm_inline_crypto_fallback_defs.sh | 6 +++++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/examples/ipsec-secgw/sa.c b/examples/ipsec-secgw/sa.c index 0eb52d1412..a6bf5e8b13 100644 --- a/examples/ipsec-secgw/sa.c +++ b/examples/ipsec-secgw/sa.c @@ -669,9 +669,11 @@ parse_sa_tokens(char **tokens, uint32_t n_tokens, if (status->status < 0) return; fb = ipsec_get_fallback_session(rule); - if (strcmp(tokens[ti], "lookaside-none") == 0) { + if (strcmp(tokens[ti], "lookaside-none") == 0) fb->type = RTE_SECURITY_ACTION_TYPE_NONE; - } else { + else if (strcmp(tokens[ti], "cpu-crypto") == 0) + fb->type = RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO; + else { APP_CHECK(0, status, "unrecognized fallback " "type %s.", tokens[ti]); return; diff --git a/examples/ipsec-secgw/test/common_defs.sh b/examples/ipsec-secgw/test/common_defs.sh index 6b6ae06f39..35cdd1c55e 100644 --- a/examples/ipsec-secgw/test/common_defs.sh +++ b/examples/ipsec-secgw/test/common_defs.sh @@ -51,6 +51,13 @@ select_mode() SGW_CFG_XPRM="${SGW_CFG_XPRM} ${CRYPTO_PRIM_TYPE}" fi + # check if fallback type is needed + if [[ "${MODE}" == *fallback* ]]; then + if [[ -n "${CRYPTO_FLBK_TYPE}" ]]; then + echo "${CRYPTO_FLBK_TYPE} is enabled" + fi + fi + #make linux to generate fragmented packets if [[ -n "${MULTI_SEG_TEST}" && -n "${SGW_CMD_XPRM}" ]]; then echo "multi-segment test is enabled" @@ -58,6 +65,11 @@ select_mode() PING_LEN=5000 MTU_LEN=1500 else + if [[ -z "${MULTI_SEG_TEST}" && "${MODE}" == *fallback* ]]; then + echo "MULTI_SEG_TEST environment variable needs to be \ +set for ${MODE} test" + exit 127 + fi PING_LEN=${DEF_PING_LEN} MTU_LEN=${DEF_MTU_LEN} fi diff --git a/examples/ipsec-secgw/test/trs_aesgcm_inline_crypto_fallback_defs.sh b/examples/ipsec-secgw/test/trs_aesgcm_inline_crypto_fallback_defs.sh index f21b01d635..c00a5ba3a6 100644 --- a/examples/ipsec-secgw/test/trs_aesgcm_inline_crypto_fallback_defs.sh +++ b/examples/ipsec-secgw/test/trs_aesgcm_inline_crypto_fallback_defs.sh @@ -3,4 +3,8 @@ . ${DIR}/trs_aesgcm_defs.sh -SGW_CFG_XPRM_IN='port_id 0 type inline-crypto-offload fallback lookaside-none' +if [[ -z "${CRYPTO_FLBK_TYPE}" ]]; then + CRYPTO_FLBK_TYPE="fallback lookaside-none" +fi + +SGW_CFG_XPRM_IN="port_id 0 type inline-crypto-offload ${CRYPTO_FLBK_TYPE}" diff --git a/examples/ipsec-secgw/test/tun_aesgcm_inline_crypto_fallback_defs.sh b/examples/ipsec-secgw/test/tun_aesgcm_inline_crypto_fallback_defs.sh index 97b9431f42..e098bd3a71 100644 --- a/examples/ipsec-secgw/test/tun_aesgcm_inline_crypto_fallback_defs.sh +++ b/examples/ipsec-secgw/test/tun_aesgcm_inline_crypto_fallback_defs.sh @@ -3,4 +3,8 @@ . ${DIR}/tun_aesgcm_defs.sh -SGW_CFG_XPRM_IN='port_id 0 type inline-crypto-offload fallback lookaside-none' +if [[ -z "${CRYPTO_FLBK_TYPE}" ]]; then + CRYPTO_FLBK_TYPE="fallback lookaside-none" +fi + +SGW_CFG_XPRM_IN="port_id 0 type inline-crypto-offload ${CRYPTO_FLBK_TYPE}" -- 2.20.1