From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6A4A8A00BE; Mon, 6 Jul 2020 07:37:21 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E35EF1D6C5; Mon, 6 Jul 2020 07:37:00 +0200 (CEST) Received: from inva020.nxp.com (inva020.nxp.com [92.121.34.13]) by dpdk.org (Postfix) with ESMTP id 3973A1D5D6 for ; Mon, 6 Jul 2020 07:36:55 +0200 (CEST) Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 1E6111A0569; Mon, 6 Jul 2020 07:36:55 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 36C751A055D; Mon, 6 Jul 2020 07:36:53 +0200 (CEST) Received: from lsv03273.swis.in-blr01.nxp.com (lsv03273.swis.in-blr01.nxp.com [92.120.147.113]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id D47A4402F7; Mon, 6 Jul 2020 13:36:50 +0800 (SGT) From: Akhil Goyal To: dev@dpdk.org Cc: hemant.agrawal@nxp.com, Akhil Goyal Date: Mon, 6 Jul 2020 11:06:48 +0530 Message-Id: <20200706053648.13271-4-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200706053648.13271-1-akhil.goyal@nxp.com> References: <20200706052142.12116-2-akhil.goyal@nxp.com> <20200706053648.13271-1-akhil.goyal@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Subject: [dpdk-dev] [PATCH v3 3/3] test/crypto-perf: add option to enable session HFN X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add a new option for PDCP cases to enable use of session based fixed HFN value instead of per packet HFN which was enabled by hfn override feature. By default HFN override is enabled and if session based fixed HFN need to be tested, add "--pdcp-ses-hfn-en" in the command line. Signed-off-by: Akhil Goyal --- app/test-crypto-perf/cperf_ops.c | 11 ++++++++--- app/test-crypto-perf/cperf_options.h | 3 +++ app/test-crypto-perf/cperf_options_parsing.c | 13 +++++++++++++ doc/guides/tools/cryptoperf.rst | 4 ++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/test-crypto-perf/cperf_ops.c b/app/test-crypto-perf/cperf_ops.c index e06b59f55..f851509ec 100644 --- a/app/test-crypto-perf/cperf_ops.c +++ b/app/test-crypto-perf/cperf_ops.c @@ -26,6 +26,10 @@ cperf_set_ops_security(struct rte_crypto_op **ops, (struct rte_security_session *)sess; uint32_t buf_sz; + uint32_t *per_pkt_hfn = rte_crypto_op_ctod_offset(ops[i], + uint32_t *, iv_offset); + *per_pkt_hfn = options->pdcp_ses_hfn_en ? 0 : PDCP_DEFAULT_HFN; + ops[i]->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED; rte_security_attach_session(ops[i], sec_sess); sym_op->m_src = (struct rte_mbuf *)((uint8_t *)ops[i] + @@ -554,16 +558,15 @@ cperf_create_session(struct rte_mempool *sess_mp, cipher_xform.cipher.algo = options->cipher_algo; cipher_xform.cipher.op = options->cipher_op; cipher_xform.cipher.iv.offset = iv_offset; + cipher_xform.cipher.iv.length = 4; /* cipher different than null */ if (options->cipher_algo != RTE_CRYPTO_CIPHER_NULL) { cipher_xform.cipher.key.data = test_vector->cipher_key.data; cipher_xform.cipher.key.length = test_vector->cipher_key.length; - cipher_xform.cipher.iv.length = test_vector->cipher_iv.length; } else { cipher_xform.cipher.key.data = NULL; cipher_xform.cipher.key.length = 0; - cipher_xform.cipher.iv.length = 0; } /* Setup Auth Parameters */ @@ -601,8 +604,10 @@ cperf_create_session(struct rte_mempool *sess_mp, .domain = options->pdcp_domain, .pkt_dir = 0, .sn_size = options->pdcp_sn_sz, - .hfn = 0x1, + .hfn = options->pdcp_ses_hfn_en ? + PDCP_DEFAULT_HFN : 0, .hfn_threshold = 0x70C0A, + .hfn_ovrd = !(options->pdcp_ses_hfn_en), } }, .crypto_xform = &cipher_xform }; diff --git a/app/test-crypto-perf/cperf_options.h b/app/test-crypto-perf/cperf_options.h index e5f1edffc..256fabb07 100644 --- a/app/test-crypto-perf/cperf_options.h +++ b/app/test-crypto-perf/cperf_options.h @@ -50,6 +50,8 @@ #ifdef RTE_LIBRTE_SECURITY #define CPERF_PDCP_SN_SZ ("pdcp-sn-sz") #define CPERF_PDCP_DOMAIN ("pdcp-domain") +#define CPERF_PDCP_SES_HFN_EN ("pdcp-ses-hfn-en") +#define PDCP_DEFAULT_HFN 0x1 #define CPERF_DOCSIS_HDR_SZ ("docsis-hdr-sz") #endif @@ -123,6 +125,7 @@ struct cperf_options { #ifdef RTE_LIBRTE_SECURITY uint16_t pdcp_sn_sz; + uint16_t pdcp_ses_hfn_en; enum rte_security_pdcp_domain pdcp_domain; uint16_t docsis_hdr_sz; #endif diff --git a/app/test-crypto-perf/cperf_options_parsing.c b/app/test-crypto-perf/cperf_options_parsing.c index 20577a144..44aa7f925 100644 --- a/app/test-crypto-perf/cperf_options_parsing.c +++ b/app/test-crypto-perf/cperf_options_parsing.c @@ -58,6 +58,9 @@ usage(char *progname) " and dequeue in pmd-cyclecount benchmarking mode\n" " --csv-friendly: enable test result output CSV friendly\n" #ifdef RTE_LIBRTE_SECURITY + " --pdcp-sn-sz N: set PDCP SN size N <5/7/12/15/18>\n" + " --pdcp-domain DOMAIN: set PDCP domain \n" + " --pdcp-ses-hfn-en: enable session based fixed HFN\n" " --docsis-hdr-sz: set DOCSIS header size\n" #endif " -h: prints this help\n", @@ -834,6 +837,7 @@ static struct option lgopts[] = { #ifdef RTE_LIBRTE_SECURITY { CPERF_PDCP_SN_SZ, required_argument, 0, 0 }, { CPERF_PDCP_DOMAIN, required_argument, 0, 0 }, + { CPERF_PDCP_SES_HFN_EN, no_argument, 0, 0 }, { CPERF_DOCSIS_HDR_SZ, required_argument, 0, 0 }, #endif { CPERF_CSV, no_argument, 0, 0}, @@ -905,6 +909,7 @@ cperf_options_default(struct cperf_options *opts) #ifdef RTE_LIBRTE_SECURITY opts->pdcp_sn_sz = 12; opts->pdcp_domain = RTE_SECURITY_PDCP_MODE_CONTROL; + opts->pdcp_ses_hfn_en = 0; opts->docsis_hdr_sz = 17; #endif } @@ -945,6 +950,7 @@ cperf_opts_parse_long(int opt_idx, struct cperf_options *opts) #ifdef RTE_LIBRTE_SECURITY { CPERF_PDCP_SN_SZ, parse_pdcp_sn_sz }, { CPERF_PDCP_DOMAIN, parse_pdcp_domain }, + { CPERF_PDCP_SES_HFN_EN, parse_pdcp_ses_hfn_en }, { CPERF_DOCSIS_HDR_SZ, parse_docsis_hdr_sz }, #endif { CPERF_CSV, parse_csv_friendly}, @@ -1079,6 +1085,13 @@ check_docsis_buffer_length(struct cperf_options *options) return 0; } + +static int +parse_pdcp_ses_hfn_en(struct cperf_options *opts, const char *arg __rte_unused) +{ + opts->pdcp_ses_hfn_en = 1; + return 0; +} #endif int diff --git a/doc/guides/tools/cryptoperf.rst b/doc/guides/tools/cryptoperf.rst index a8df8bc99..28b729dbd 100644 --- a/doc/guides/tools/cryptoperf.rst +++ b/doc/guides/tools/cryptoperf.rst @@ -347,6 +347,10 @@ The following are the application command-line options: Set DOCSIS header size(n) in bytes. +* ``--pdcp-ses-hfn-en`` + + Enable fixed session based HFN instead of per packet HFN. + Test Vector File ~~~~~~~~~~~~~~~~ -- 2.17.1