From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6BA7DA0C43; Wed, 20 Oct 2021 15:11:10 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 37D2A4118F; Wed, 20 Oct 2021 15:11:09 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2065.outbound.protection.outlook.com [40.107.22.65]) by mails.dpdk.org (Postfix) with ESMTP id 9E5A240142 for ; Wed, 20 Oct 2021 15:11:07 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y+XRm7zbkaSWwte9k0+vys1MGHkulNwbADWS++UDHNr75OXlWTJRqJoMRWKNVfVvhDab4p6wpOlw3vIKCCKX/rTQxDi6PXDcYUkHbVGS4WMjoA2Ae9bzNbbi2bmCuQAf9k9lByLXKymJGiG68FuDzkvZSDyEp/yY8bGInsPOhq9hLjR9eM4mgAUdbKDC6TLX+FBjdBU7c6WpQdxDjKAAYcYpPY9wytSZAtJ6GgzC006i05/yh7BwDmE1M42d3eH0Bs6TPQnDJAATDjmOsdtH1hZ/J7itCRN7nFvkusw4YgVxCmbFeJF8jYdi1quodgw/AJe9z4u8QXdbs/LcUqF3IQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+RemNAHFyNGYzZ5eWz8TueCMWEtHh4M/UWuDPGbbmak=; b=Z3/stHyP1uVC81pwfoFfanIVpyXl6YOKhJV12alYXkIV9MIsbK+VaDxvIH2vWibkz8/JsmZJ1yPQ8PTcidtCCGGzyMjwwAonIgulJgl4lxeAeXJGMoUZOmZCgaU2PVE1eOCs5vVJoAGB+3mJpR70qecHsn+6tPwd5MbPexRcMIJefMenLCOwXzX5oOhhuygSbfHgh+vxQt7UpQgJZ198b14cE/lCMerhdNZko6hdP40PcNkkaE66+wHIKhSHfiBpEY9NMfY675LiMiON/XbsZ2IXWuEl/+fdQ2bZYt1MPD3gpB9LSsYSiksmIZKsu+aBRvGGA1vB6WP+/sHTk+8+cg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+RemNAHFyNGYzZ5eWz8TueCMWEtHh4M/UWuDPGbbmak=; b=gcwiuyl8Wlg2NJ3D9+m+bG9mriZnuh4Tv/gebgIXitK+mQQKywLXWuxEeVbqFE51YftmOog4xJ4eye0yo4NNCUkL35dUNDVtVoN9tM0kl6P/XZE05/x3B3WiW66XJhtb3padxP2HvNmuHuhOf1TsWxYyUAdrfRS0jd7hVpWOt5E= Authentication-Results: marvell.com; dkim=none (message not signed) header.d=none;marvell.com; dmarc=none action=none header.from=oss.nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8920.eurprd04.prod.outlook.com (2603:10a6:10:2e3::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.17; Wed, 20 Oct 2021 13:11:05 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Wed, 20 Oct 2021 13:11:05 +0000 Message-ID: <43bb7b32-ab2b-3482-25b5-cca5e501dbb6@oss.nxp.com> Date: Wed, 20 Oct 2021 18:40:52 +0530 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Content-Language: en-US To: Akhil Goyal , dev@dpdk.org Cc: thomas@monjalon.net, david.marchand@redhat.com, hemant.agrawal@nxp.com, anoobj@marvell.com, pablo.de.lara.guarch@intel.com, fiona.trahe@intel.com, declan.doherty@intel.com, matan@nvidia.com, g.singh@nxp.com, roy.fan.zhang@intel.com, jianjay.zhou@huawei.com, asomalap@amd.com, ruifeng.wang@arm.com, konstantin.ananyev@intel.com, radu.nicolau@intel.com, ajit.khaparde@broadcom.com, rnagadheeraj@marvell.com, adwivedi@marvell.com, ciara.power@intel.com References: <20210817174849.1591235-1-gakhil@marvell.com> <20211008201546.3496585-1-gakhil@marvell.com> From: Hemant Agrawal In-Reply-To: <20211008201546.3496585-1-gakhil@marvell.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SGBP274CA0017.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b0::29) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.3] (122.161.79.204) by SGBP274CA0017.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b0::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16 via Frontend Transport; Wed, 20 Oct 2021 13:10:59 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 42cffa84-5a05-46f2-8153-08d993cb12a7 X-MS-TrafficTypeDiagnostic: DU2PR04MB8920: X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:24; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DiUhxQJrA7BruEQ/TpWKdJn5t9fehUBkdnu/WYGyhC6D50r/v+J1HAl+UiNOU3XzBbpFDcnytJxK+uCB2U3frEbYXxnfV6S5vQAcDMcZtnnsO0RUz2WNtlZJ62XNm5fHTn/B90WutgsHCXNYQ89FPYhyVmAK8pG6bU1uQxguQS4XwsqoYg/b/VoaYW9b2mYZTrCLhRrXNtEte+467hpa3tcnQzqeXHP0t7TcYJZGGed12dsPKiJ7dRZAKf45REqRdqQYnJXnuK79ADvy6AY7YTo9stXqbwux5VVE3p5TyBfEnU03HEUTin3Ri/fCJa3dMdwDJ36eN4MfJbTyIJDZndoKOTtIdPvR3rU908CWnFtpvLYWrD6ElUzEaZnnYB8JZuv55j234FvnZ2rp/i6p1jtfkEd+Vg1nj5sRVB40VfUxnXMclIw8bj/fg8sZfo7JO4wLl4bBDnG3k3xq1bACcq4MJteZyCtHU7Ggg4m0AkAcPhKl3RPuSsK3208K2dLjnxod7VVccGUKB5Y6xsxu3vVoZHH/9Jnzdz3BYW72UOx0sXajRwXJ2w3DGIwmx3Z8ocfMMbCEphKHXoAX170asQ/cgHfNd4Mygm/fT48mc+Reg59uT8lY2QMBNfZAH2XKyTIH5KFfZS9Vp/BiPdr/jaeo8SRdV72ZTr6kaP3qvfVgi20teeXTXHnhA7nxQPwsdRAecMpRcM2VeY4st6FxDL3RKo72HPjNkOv+/K1NER4Ok8w+nyxPbOy/6bvvbz9hQq6qa/+CLVdv0ySk1e2TqA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(83380400001)(40140700001)(52116002)(44832011)(55236004)(508600001)(6666004)(6486002)(956004)(31686004)(2906002)(2616005)(66946007)(26005)(16576012)(38350700002)(38100700002)(316002)(31696002)(4326008)(66556008)(8936002)(8676002)(30864003)(186003)(53546011)(5660300002)(86362001)(66476007)(7416002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MTdhR1JOSFMxY0d5NzB1TmtQb3RLMGdSUGxpdG5LbkRYUGlzTC9wdHlwWDFN?= =?utf-8?B?NktPVTNGUmVSQy96OHBzWUM4VWVBOUNCZ0xJNU9QVEVGcjhwbm51ellvL3dB?= =?utf-8?B?cm9UeEZhRTlnRW9VTFVUUlY1WWxXb1hzb3VtQUJ6c2czMC91QUxQZ2JmTmdx?= =?utf-8?B?VUVxcXZNMHcwQ2dTMjlENWE0UHgwd1NpQVdJZlRraUlrMUFZZTF3SXhscDN5?= =?utf-8?B?elh0aXNsZWxmVXU0TTVvOXJGbHlyRWp3cTRxNlNVWTMrdEVBQ2hscnk4YXdm?= =?utf-8?B?Tk93YnYyWUxGaFBWWG9pVGY1VzloOVNaWGRKN2I5Nnp0ZGZJNXJJNkpjemc5?= =?utf-8?B?b0txQkIrbzlva1JHR3Z6ajB4RnNQSVk5V3kzK2pCclFORis4Z2V3YWlkZk0w?= =?utf-8?B?YUxmWUJGZ1UyakgzcTZ5OHZiN0ZKQU9Yb2ZXYnV2VUpvRlZyV3dIWTRQMkdW?= =?utf-8?B?eitMMHNXckV3SHdPQU15UTJuM1FSVmwvRTl5L0RNMDU4Z1d0QUpCNEtqRXh0?= =?utf-8?B?V1dvQmFaM0J1eC9ZNUlPanZtQlk3Ky9jNVdKOGRHL1A3dlYrVmQ2NTlVQXpC?= =?utf-8?B?QStiSkRMUmtQM2JHR1hGTEM5VjJqem1mc28remlQNEVMMnFtc3ZwV0pwcWE0?= =?utf-8?B?SUxWcWJWbzFJVXpUK2UxY0Z0VzdXZ0o2eUk4STZiOXE4WmhzblBaZ1NFQ1Jm?= =?utf-8?B?V0FCY0RsYzgyTG9wSGN2OEYvdWJVNTJrRkVtVGgxYk9UQ1JFdHdMRDRqbU1B?= =?utf-8?B?clNBMmdpWE5sMk9jMUpmMGM3SEw5Z3FVdGdjeSt4WTZMUmE5T28wQmREMmVZ?= =?utf-8?B?RkhsSkg3MmpDNHZlWGJBTm1QWTdoSEVBMGFJNHJaTGhnWmhjendYalIwcEcy?= =?utf-8?B?c1VqZG5GWUw2d2xDdng0aVl4cW5HVnpUaG1nNElNOHNra2tUSTdBMXpKYVUv?= =?utf-8?B?ZWJrZHNTSFRJWWVTcGI1K082SFFVV3oyR1BOZ24rVVczbWhkU2RvQmNJd2w5?= =?utf-8?B?QloySCtUTU9OQlo2UmsrMEFHK29Yak9sY0drY3VPQytNK1BqYXhuelpPS1Fx?= =?utf-8?B?U0ZLUlBmMnRUTXplMjhleTJCVWR6ZXlUcmVNWGR0ZEhLWFMzRTQwczJVVDNv?= =?utf-8?B?VzA1dWc1NC9FQ25MT2ZlRFFsV2U3SVJpaC9Nb3cxT0I1d1hRVHRZSjN2Z1ZM?= =?utf-8?B?RUFlTlY4QmhTdi93dkFYSUdmNU8vUW1rb2JKL2p2alFDd0NXaTVxc3BnWmFT?= =?utf-8?B?dVNJWnprWS90Q1FhOVhxWFdFS1laQkZESnZWRHlMQVBrU2pScUdwbkNrUkxi?= =?utf-8?B?cmV2SDNxQXFEY0t6cElLNy9pWnQ4SUI5VWpsODJDaldzak0rZmFxRmdBank4?= =?utf-8?B?TnVOUXdOVnFHanY0aDNWbFZ1elNvOVZOa1ZqR1lRMHQ0dURwWVIvamt1REN6?= =?utf-8?B?ZW0veUJ5eFlsd1F0YWoxQzRGUDljQW9DZksvNzl2MUlRVnlXUHZVWDRHYyto?= =?utf-8?B?V1BrWG5hUXJPbHBHN0pyK2FkcTZBZ0hWdG54NmlVSTNmWlJYVVRtZnkxeXE1?= =?utf-8?B?RHk2L2d5UlhxbXJuTVkrelhTNE9BdUlKeHVyS2RyOVdjc2ZIcGMxRU9LTHhY?= =?utf-8?B?andqNVU1T1lhMlVNM1NDakQzSHljb3hDVDFxTndTL2V3ZmNzUFcrVzl5UTBZ?= =?utf-8?B?UmU3Tjd1YnhyZ2Z6S1dFZXl0aTk4d2M5b2pOY1krZ1UwUG9UelMzdHpjTHN6?= =?utf-8?Q?fLDbqsCgjYoqRRLp7XHpTFZ/NQgtKTZi5Lxek4i?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 42cffa84-5a05-46f2-8153-08d993cb12a7 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2021 13:11:05.4926 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2zq2MK7wCDeeTJfYuzlI5NAqup3axTVblsVedFZGonnnZlOuNTU/+4Hl+WqFmNyuWuJ5ybQ8a2LjwVvvxNuuIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8920 Subject: Re: [dpdk-dev] [PATCH v2] test/crypto-perf: support lookaside IPsec X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: hemant.agrawal@nxp.com Errors-To: dev-bounces@dpdk.org Sender: "dev" Acked-by:  Hemant Agrawal On 10/9/2021 1:45 AM, Akhil Goyal wrote: > Added support for lookaside IPsec protocol offload. > Supported cases: > -AEAD > -Cipher+auth > > Command used for testing: > ./dpdk-test-crypto-perf -c 0xf -- --devtype crypto_octeontx2 --ptest > throughput --optype ipsec --cipher-algo aes-cbc --pool-sz 16384 > --cipher-op encrypt --cipher-key-sz 16 --cipher-iv-sz 16 --auth-algo > sha1-hmac --auth-op generate --digest-sz 16 --total-ops 10000000 > --burst-sz 32 --buffer-sz 64,128,256,512,1024,1280,2048 > > ./dpdk-test-crypto-perf -c 0xf -- --devtype crypto_octeontx2 --ptest > throughput --optype ipsec --aead-algo aes-gcm --pool-sz 16384 > --aead-op encrypt --aead-key-sz 32 --aead-iv-sz 12 --aead-aad-sz 16 > --digest-sz 16 --total-ops 10000000 --burst-sz 32 > --buffer-sz 64,128,256,512,1024,1280,2048 > > Signed-off-by: Akhil Goyal > --- > v2: added release notes. > > app/test-crypto-perf/cperf_ops.c | 179 ++++++++++++++++--- > app/test-crypto-perf/cperf_options.h | 1 + > app/test-crypto-perf/cperf_options_parsing.c | 4 + > app/test-crypto-perf/cperf_test_throughput.c | 3 +- > app/test-crypto-perf/cperf_test_vectors.c | 6 +- > app/test-crypto-perf/main.c | 3 +- > doc/guides/rel_notes/release_21_11.rst | 1 + > 7 files changed, 166 insertions(+), 31 deletions(-) > > diff --git a/app/test-crypto-perf/cperf_ops.c b/app/test-crypto-perf/cperf_ops.c > index 4b7d66edb2..b2073f0738 100644 > --- a/app/test-crypto-perf/cperf_ops.c > +++ b/app/test-crypto-perf/cperf_ops.c > @@ -62,7 +62,13 @@ cperf_set_ops_security(struct rte_crypto_op **ops, > sym_op->m_src = (struct rte_mbuf *)((uint8_t *)ops[i] + > src_buf_offset); > > - if (options->op_type == CPERF_PDCP) { > + if (options->op_type == CPERF_PDCP || > + options->op_type == CPERF_IPSEC) { > + /* In case of IPsec, headroom is consumed by PMD, > + * hence resetting it. > + */ > + sym_op->m_src->data_off = options->headroom_sz; > + > sym_op->m_src->buf_len = options->segment_sz; > sym_op->m_src->data_len = options->test_buffer_size; > sym_op->m_src->pkt_len = sym_op->m_src->data_len; > @@ -565,6 +571,123 @@ cperf_set_ops_aead(struct rte_crypto_op **ops, > return 0; > } > > +static struct rte_cryptodev_sym_session * > +create_ipsec_session(struct rte_mempool *sess_mp, > + struct rte_mempool *priv_mp, > + uint8_t dev_id, > + const struct cperf_options *options, > + const struct cperf_test_vector *test_vector, > + uint16_t iv_offset) > +{ > + struct rte_crypto_sym_xform xform = {0}; > + struct rte_crypto_sym_xform auth_xform = {0}; > + > + if (options->aead_algo != 0) { > + /* Setup AEAD Parameters */ > + xform.type = RTE_CRYPTO_SYM_XFORM_AEAD; > + xform.next = NULL; > + xform.aead.algo = options->aead_algo; > + xform.aead.op = options->aead_op; > + xform.aead.iv.offset = iv_offset; > + xform.aead.key.data = test_vector->aead_key.data; > + xform.aead.key.length = test_vector->aead_key.length; > + xform.aead.iv.length = test_vector->aead_iv.length; > + xform.aead.digest_length = options->digest_sz; > + xform.aead.aad_length = options->aead_aad_sz; > + } else if (options->cipher_algo != 0 && options->auth_algo != 0) { > + /* Setup Cipher Parameters */ > + xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER; > + xform.next = NULL; > + xform.cipher.algo = options->cipher_algo; > + xform.cipher.op = options->cipher_op; > + xform.cipher.iv.offset = iv_offset; > + xform.cipher.iv.length = test_vector->cipher_iv.length; > + /* cipher different than null */ > + if (options->cipher_algo != RTE_CRYPTO_CIPHER_NULL) { > + xform.cipher.key.data = test_vector->cipher_key.data; > + xform.cipher.key.length = > + test_vector->cipher_key.length; > + } else { > + xform.cipher.key.data = NULL; > + xform.cipher.key.length = 0; > + } > + > + /* Setup Auth Parameters */ > + auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH; > + auth_xform.next = NULL; > + auth_xform.auth.algo = options->auth_algo; > + auth_xform.auth.op = options->auth_op; > + auth_xform.auth.iv.offset = iv_offset + > + xform.cipher.iv.length; > + /* auth different than null */ > + if (options->auth_algo != RTE_CRYPTO_AUTH_NULL) { > + auth_xform.auth.digest_length = options->digest_sz; > + auth_xform.auth.key.length = > + test_vector->auth_key.length; > + auth_xform.auth.key.data = test_vector->auth_key.data; > + auth_xform.auth.iv.length = test_vector->auth_iv.length; > + } else { > + auth_xform.auth.digest_length = 0; > + auth_xform.auth.key.length = 0; > + auth_xform.auth.key.data = NULL; > + auth_xform.auth.iv.length = 0; > + } > + > + xform.next = &auth_xform; > + } else { > + return NULL; > + } > + > +#define CPERF_IPSEC_SRC_IP 0x01010101 > +#define CPERF_IPSEC_DST_IP 0x02020202 > +#define CPERF_IPSEC_SALT 0x0 > +#define CPERF_IPSEC_DEFTTL 64 > + struct rte_security_ipsec_tunnel_param tunnel = { > + .type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, > + {.ipv4 = { > + .src_ip = { .s_addr = CPERF_IPSEC_SRC_IP}, > + .dst_ip = { .s_addr = CPERF_IPSEC_DST_IP}, > + .dscp = 0, > + .df = 0, > + .ttl = CPERF_IPSEC_DEFTTL, > + } }, > + }; > + struct rte_security_session_conf sess_conf = { > + .action_type = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL, > + .protocol = RTE_SECURITY_PROTOCOL_IPSEC, > + {.ipsec = { > + .spi = rte_lcore_id(), > + /**< For testing sake, lcore_id is taken as SPI so that > + * for every core a different session is created. > + */ > + .salt = CPERF_IPSEC_SALT, > + .options = { 0 }, > + .replay_win_sz = 0, > + .direction = > + ((options->cipher_op == > + RTE_CRYPTO_CIPHER_OP_ENCRYPT) && > + (options->auth_op == > + RTE_CRYPTO_AUTH_OP_GENERATE)) || > + (options->aead_op == > + RTE_CRYPTO_AEAD_OP_ENCRYPT) ? > + RTE_SECURITY_IPSEC_SA_DIR_EGRESS : > + RTE_SECURITY_IPSEC_SA_DIR_INGRESS, > + .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, > + .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, > + .tunnel = tunnel, > + } }, > + .userdata = NULL, > + .crypto_xform = &xform > + }; > + > + struct rte_security_ctx *ctx = (struct rte_security_ctx *) > + rte_cryptodev_get_sec_ctx(dev_id); > + > + /* Create security session */ > + return (void *)rte_security_session_create(ctx, > + &sess_conf, sess_mp, priv_mp); > +} > + > static struct rte_cryptodev_sym_session * > cperf_create_session(struct rte_mempool *sess_mp, > struct rte_mempool *priv_mp, > @@ -675,6 +798,12 @@ cperf_create_session(struct rte_mempool *sess_mp, > return (void *)rte_security_session_create(ctx, > &sess_conf, sess_mp, priv_mp); > } > + > + if (options->op_type == CPERF_IPSEC) { > + return create_ipsec_session(sess_mp, priv_mp, dev_id, > + options, test_vector, iv_offset); > + } > + > if (options->op_type == CPERF_DOCSIS) { > enum rte_security_docsis_direction direction; > > @@ -872,44 +1001,40 @@ cperf_get_op_functions(const struct cperf_options *options, > > op_fns->sess_create = cperf_create_session; > > - if (options->op_type == CPERF_ASYM_MODEX) { > - op_fns->populate_ops = cperf_set_ops_asym; > - return 0; > - } > - > - if (options->op_type == CPERF_AEAD) { > + switch (options->op_type) { > + case CPERF_AEAD: > op_fns->populate_ops = cperf_set_ops_aead; > - return 0; > - } > + break; > > - if (options->op_type == CPERF_AUTH_THEN_CIPHER > - || options->op_type == CPERF_CIPHER_THEN_AUTH) { > + case CPERF_AUTH_THEN_CIPHER: > + case CPERF_CIPHER_THEN_AUTH: > op_fns->populate_ops = cperf_set_ops_cipher_auth; > - return 0; > - } > - if (options->op_type == CPERF_AUTH_ONLY) { > + break; > + case CPERF_AUTH_ONLY: > if (options->auth_algo == RTE_CRYPTO_AUTH_NULL) > op_fns->populate_ops = cperf_set_ops_null_auth; > else > op_fns->populate_ops = cperf_set_ops_auth; > - return 0; > - } > - if (options->op_type == CPERF_CIPHER_ONLY) { > + break; > + case CPERF_CIPHER_ONLY: > if (options->cipher_algo == RTE_CRYPTO_CIPHER_NULL) > op_fns->populate_ops = cperf_set_ops_null_cipher; > else > op_fns->populate_ops = cperf_set_ops_cipher; > - return 0; > - } > + break; > + case CPERF_ASYM_MODEX: > + op_fns->populate_ops = cperf_set_ops_asym; > + break; > #ifdef RTE_LIB_SECURITY > - if (options->op_type == CPERF_PDCP) { > + case CPERF_PDCP: > + case CPERF_IPSEC: > + case CPERF_DOCSIS: > op_fns->populate_ops = cperf_set_ops_security; > - return 0; > - } > - if (options->op_type == CPERF_DOCSIS) { > - op_fns->populate_ops = cperf_set_ops_security; > - return 0; > - } > + break; > #endif > - return -1; > + default: > + return -1; > + } > + > + return 0; > } > diff --git a/app/test-crypto-perf/cperf_options.h b/app/test-crypto-perf/cperf_options.h > index f5ea2b90a5..031b238b20 100644 > --- a/app/test-crypto-perf/cperf_options.h > +++ b/app/test-crypto-perf/cperf_options.h > @@ -80,6 +80,7 @@ enum cperf_op_type { > CPERF_AEAD, > CPERF_PDCP, > CPERF_DOCSIS, > + CPERF_IPSEC, > CPERF_ASYM_MODEX > }; > > diff --git a/app/test-crypto-perf/cperf_options_parsing.c b/app/test-crypto-perf/cperf_options_parsing.c > index 2a7acb0111..c244f81bbf 100644 > --- a/app/test-crypto-perf/cperf_options_parsing.c > +++ b/app/test-crypto-perf/cperf_options_parsing.c > @@ -458,6 +458,10 @@ parse_op_type(struct cperf_options *opts, const char *arg) > cperf_op_type_strs[CPERF_DOCSIS], > CPERF_DOCSIS > }, > + { > + cperf_op_type_strs[CPERF_IPSEC], > + CPERF_IPSEC > + }, > { > cperf_op_type_strs[CPERF_ASYM_MODEX], > CPERF_ASYM_MODEX > diff --git a/app/test-crypto-perf/cperf_test_throughput.c b/app/test-crypto-perf/cperf_test_throughput.c > index 76fcda47ff..ca65c3c883 100644 > --- a/app/test-crypto-perf/cperf_test_throughput.c > +++ b/app/test-crypto-perf/cperf_test_throughput.c > @@ -42,7 +42,8 @@ cperf_throughput_test_free(struct cperf_throughput_ctx *ctx) > } > #ifdef RTE_LIB_SECURITY > else if (ctx->options->op_type == CPERF_PDCP || > - ctx->options->op_type == CPERF_DOCSIS) { > + ctx->options->op_type == CPERF_DOCSIS || > + ctx->options->op_type == CPERF_IPSEC) { > struct rte_security_ctx *sec_ctx = > (struct rte_security_ctx *) > rte_cryptodev_get_sec_ctx(ctx->dev_id); > diff --git a/app/test-crypto-perf/cperf_test_vectors.c b/app/test-crypto-perf/cperf_test_vectors.c > index 4bba405961..e944583089 100644 > --- a/app/test-crypto-perf/cperf_test_vectors.c > +++ b/app/test-crypto-perf/cperf_test_vectors.c > @@ -448,7 +448,8 @@ cperf_test_vector_get_dummy(struct cperf_options *options) > t_vec->modex.elen = sizeof(perf_mod_e); > } > > - if (options->op_type == CPERF_PDCP) { > + if (options->op_type == CPERF_PDCP || > + options->op_type == CPERF_IPSEC) { > if (options->cipher_algo == RTE_CRYPTO_CIPHER_NULL) { > t_vec->cipher_key.length = 0; > t_vec->ciphertext.data = plaintext; > @@ -579,7 +580,8 @@ cperf_test_vector_get_dummy(struct cperf_options *options) > t_vec->auth_iv.length = options->auth_iv_sz; > } > > - if (options->op_type == CPERF_AEAD) { > + if (options->op_type == CPERF_AEAD || > + options->op_type == CPERF_IPSEC) { > t_vec->aead_key.length = options->aead_key_sz; > t_vec->aead_key.data = aead_key; > > diff --git a/app/test-crypto-perf/main.c b/app/test-crypto-perf/main.c > index 390380898e..6fdb92fb7c 100644 > --- a/app/test-crypto-perf/main.c > +++ b/app/test-crypto-perf/main.c > @@ -41,6 +41,7 @@ const char *cperf_op_type_strs[] = { > [CPERF_AEAD] = "aead", > [CPERF_PDCP] = "pdcp", > [CPERF_DOCSIS] = "docsis", > + [CPERF_IPSEC] = "ipsec", > [CPERF_ASYM_MODEX] = "modex" > }; > > @@ -278,9 +279,9 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs) > /* Fall through */ > case CPERF_PDCP: > case CPERF_DOCSIS: > + case CPERF_IPSEC: > /* Fall through */ > default: > - > conf.ff_disable |= RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO; > } > > diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst > index dfaf7bdf38..84266aba7c 100644 > --- a/doc/guides/rel_notes/release_21_11.rst > +++ b/doc/guides/rel_notes/release_21_11.rst > @@ -134,6 +134,7 @@ New Features > > * Added support for asymmetric crypto throughput performance measurement. > Only modex is supported for now. > + * Added support for lookaside IPsec protocol offload throughput measurement. > > * **Added lookaside protocol (IPsec) tests in dpdk-test.** >