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 DB9D9A00C4; Sun, 1 May 2022 15:00:46 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B8FF74069D; Sun, 1 May 2022 15:00:46 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 786A24003F for ; Sun, 1 May 2022 15:00:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651410044; x=1682946044; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=hunG731qsPkaSIeMRi4nbwQpsirqI8bh4/xpXAEV4b0=; b=NWzaFNFVXMx7D9MPt1l54T4TCdfauKqzwfw3WecRgQBJxA8i2IGY2fDg G2u9WrpXrLRuyKp6JPsd6hwexKE7bp+YCwiWyIrw2m7Qtziqvrgu9kGoE EVOx4O6GF4w61aY2WxGy8y9gBB0HMCkMlYLcU9EGONOeWVjVzy44rDyXm 2JZX+ckMj1Os4YtC2OO/+lILp+a+C6Z3QBnutDUWME/4pTBpwbkQ/RClp XnSJAopzHzVhtcEfsBC/Cfu7NmCSeOuDA5WvmNIkbnMci+CCrBZMcsQYU Z8q+BiwQVOFAZpWFhg9HQeOoOB7hTgdzRMSG+a5H9hZOQnTkRuoUOV/BT Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10333"; a="265857330" X-IronPort-AV: E=Sophos;i="5.91,190,1647327600"; d="scan'208";a="265857330" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 May 2022 06:00:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,190,1647327600"; d="scan'208";a="535403999" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga006.jf.intel.com with ESMTP; 01 May 2022 06:00:28 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Sun, 1 May 2022 06:00:28 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Sun, 1 May 2022 06:00:28 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.171) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Sun, 1 May 2022 06:00:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mkbeCjPJNS8P0CVgyVpIpWRIi3kQxMrXSifBf5aywHTjuVHtu2W0ifcxVJI3jVdlPMBbArzvlcHbhMvhfPZsHmihDrcPPmyq5lbPWgLqiWXAP/mNBPG2wXVoJClCE/s7lmScW/hrdrr4RFLX5X8HwbCUbCu8YzWBmUAk3EAn/WMJl//6tKiJf0kC+UYid8VFjddp9TpUWj/E3LCM5gwBlrolxWzHwUgiCmfBuqCCqbh6lCLwTxxQSkHMS634SPDDsx3aTAmpKisTaLL9l+Vpm8sS25ldKdPdO27aloCVE7+lNLt8Km2SO5RMO9WChEyqjqe1MdLhtl9kV3FBSTMImw== 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=bVmYGtusBHifs7kwoJeaKGj/zA//GVL3pGEhA6lYUgQ=; b=NYUy9p6ONvyGLAo21LuO5KHNJRwq+7ykQzhU2sFHvIwTngOZwx7hA82x3mX8yA4VozrdnNN4pDKqiodgJaMlbK/m70j9A0ZD92uL+ECeW2P6VmzoB48Cce6Vt2Mw3w5uevSsJhkNebKekazwzNTXA2ATR/Z5v2/vxpaEdLQSMoVMHnolpbkoXIGugsP19nGbgYDgTdMTNU3XXuporg6/1B4lm3glwWWPhJOGO1e7RlxeQTsxglFkBqf8u4ga3hjC3PPiffBus3Q0nDARo6Ve5J9jPNIJzo3Zpl4wZUirwqXN40oUTMamQkylBAhOlIqYlYGr0F7cdOdFyuwucFG00w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH0PR11MB5832.namprd11.prod.outlook.com (2603:10b6:510:141::7) by BL3PR11MB5716.namprd11.prod.outlook.com (2603:10b6:208:353::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Sun, 1 May 2022 13:00:25 +0000 Received: from PH0PR11MB5832.namprd11.prod.outlook.com ([fe80::ad86:86fe:a02b:174f]) by PH0PR11MB5832.namprd11.prod.outlook.com ([fe80::ad86:86fe:a02b:174f%5]) with mapi id 15.20.5186.028; Sun, 1 May 2022 13:00:25 +0000 From: "Gujjar, Abhinandan S" To: Akhil Goyal , "dev@dpdk.org" CC: "anoobj@marvell.com" , "jerinj@marvell.com" , "Jayatheerthan, Jay" , "Vangati, Narender" , "vfialko@marvell.com" Subject: RE: [PATCH v3 7/7] test-eventdev: support asym ops for crypto adapter Thread-Topic: [PATCH v3 7/7] test-eventdev: support asym ops for crypto adapter Thread-Index: AQHYVY1qQq8kn8asUkqolC7SQtNVSq0KC6DQ Date: Sun, 1 May 2022 13:00:25 +0000 Message-ID: References: <20220418193325.368313-1-gakhil@marvell.com> <20220421143720.1583062-1-gakhil@marvell.com> <20220421143720.1583062-8-gakhil@marvell.com> In-Reply-To: <20220421143720.1583062-8-gakhil@marvell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.15 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e04aaffa-dde8-4e2e-b5b2-08da2b728f4c x-ms-traffictypediagnostic: BL3PR11MB5716:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: wcGs6o/euQKEAzs77J03bFWTRN1LE2GHEPYz+HvICM4YIDyBSXd0sRXW9UdGCMJ3tt5auSwGoyM2/yXJLsWoSvTvYSfpnZANB/vckFYG/w7dQYBX8YZDP5+x6iNK+1HQiYocWLBJ+smbsnKsXxTT21Epm+pcJWp8UASNpfZUK0QEY0qfyMkkXqVZdIoQwVtZKky9C5sEbX2XvMV+Obh/rD8awDmXmTcc16Zut5KI6ieiSLL8/w2DnwQ59DKv9rO31xMPlLTe1gF4JFfYPM1nggqlD4K3WnlFZvFt9iZEN2ilT52NSjlWCcFlouS9hZwO/B4d7nfM33aLPeqRNTmLu4Na6mqaPhqyO1UYVUzwOMeerB9Ymq6Bw+YAzS3dzrM2TcpKDbm9ncguBSAFWBDhrMgKnc+1pyJpmk4cmIdfKj2PLavGOfnjBJG+ZUIhVJ4JyWEO5np/M4nnXQrvoVX3Pri50PudOuIT6natyVsO59c0yZKLwHQWW8RnSd95bhfqGCuXhU3dtZxMtZMVzBBGr0bTWN5keRp268vfPvdVrqAIt3e1kmUvdLKLpo/T0GOruIb08iQ2bJFBZdawsnF4LTYvgGixjqAQKkWiyowBJA3Hs9WGOKnaEnSan1FVQd55DUkPupVL23pdYeUsbVxRZOhual5VmT5SEvJgxSE12G4IT27r+mtNYYt6kWR9nk0BNGVjmCXAYFrratJdn3nf4w== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB5832.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(55016003)(26005)(7696005)(55236004)(6506007)(186003)(30864003)(86362001)(122000001)(8936002)(52536014)(53546011)(508600001)(5660300002)(38100700002)(82960400001)(38070700005)(76116006)(33656002)(66946007)(54906003)(316002)(83380400001)(110136005)(9686003)(71200400001)(66446008)(8676002)(66556008)(64756008)(4326008)(66476007)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?qstCyojKDAtFMg1oKCHTdC4qluPsVZR0ZcPIjpUtgrcCSVDhPBbv6FLe7++1?= =?us-ascii?Q?dqM1//f4/QG3R0Ys1zVlM0mK185Tp6srDINfB4M08bkURte5y5nq4aV4OeZ6?= =?us-ascii?Q?UzcJFQcCnwQJY28Q+wEtNwicQ65T+ZpbAVvEvv05jIa8I9t/TT7NPsXP5vLo?= =?us-ascii?Q?DITCVVsPsaSfj2R8ZxWJ7BAFK86KJDegh1toIwRkBXufq5q4Rb9fQS9n5Axl?= =?us-ascii?Q?M5O5F7ZMSSy/GEssSB3s9Lcs298F3QzJ8a2uNPS/rnADqY5xBO9NNa2x1VQ3?= =?us-ascii?Q?PHfpJ/v8QRcmY6KYVKCczUd6TdotMns2Zo8fYmJ2DlnVOdtnnzHVw2Jbf37s?= =?us-ascii?Q?KAPPbhqIWNvMe+8B79udJOYq++/2ZblgFWuGUWvm3AgvK3EO/a4g0jGux9gG?= =?us-ascii?Q?X3B+1e5LCdSRIFvrqVTD1fzn0A67qZnjegE94nSGmcAlbnlcOfcAB2gOQWRf?= =?us-ascii?Q?5UeTao/usT+XwLWro3kQR4ode5RDdLCzMiEcVAvKh5aJ2MzOel5XRfVuLAkq?= =?us-ascii?Q?9L7WIL3bt+9rAR5hcG0ZFT8Ysf/2OPzTiqHgumaSZr+22nAIzQ9eJgR5owr2?= =?us-ascii?Q?jtEzi+suL44/2/vsxNPDX47ndXV2B58DaAZtpFHUfvkGYQbAytSIIWghtO5b?= =?us-ascii?Q?tjRE9h3xkWvW/FMtN05dpB5jea9EKpFddbWGBMAlHDIBwf1x5xuYL62yOvNr?= =?us-ascii?Q?+3aYKXdRknXciMg4tZoenoNQYZjTJrAqNYrImzcS/uEkjuKr05LHzIoV6p+z?= =?us-ascii?Q?B6NFKOdu9Wrqr0mIiX798ofdW2s5QogVVB0821ML7ed8QoeCVMkfMcf/r8iQ?= =?us-ascii?Q?Xd06PeOxx/tMwpMOxt4V+ibIPdQYxEoPHGhsrQSBrybJXFV5SJRz/hWCac27?= =?us-ascii?Q?LxJ20p/qiEODEYOedYRfcbLabYJ/eMb/RGbwC5Vwl3RHdOwPRhkJJ6tBN5pV?= =?us-ascii?Q?Rc33gcRY0tGn8dc3/dgnZHFu0U92GUJVpQ+LvNLXatlyW6aThJwaZ1OAMKig?= =?us-ascii?Q?7fddXBKx8jDba2uppBd/kFpGkmx7XnjXbxFXIFkkMEPGiXJzpXAYBbcDaeoH?= =?us-ascii?Q?34SBy4q0nFy4eIMf/5UG5DhBVqiR5YwF2SsF58Ryk65Todh/9WvKlL0wRajI?= =?us-ascii?Q?muxZWYNS6/lNu7owT4kz027ycuFUB38iMSYxwZoiwmcqqADXWQKFST0brbLq?= =?us-ascii?Q?wdP1Ok/aB40MDej/hoDDk9KmovOpi9q4P5K/hN33Zunyk1BB8WZivVpkDW+y?= =?us-ascii?Q?czYBGRvTAE05j8WX0jZMASWr283OFpWOHloX/t+urSPrKo0xjw3HjDgommep?= =?us-ascii?Q?/dn6zoG6fjv+T7uCbYmf/c3fJAD7O2464K1hZfITYSrLOhqw5HdFi0dTHbbP?= =?us-ascii?Q?Y37Vl0WuHeaVxttrBfDAexDRXaBUjXfbjn43qeDePwkB2gUk4H/j3fk41J7F?= =?us-ascii?Q?13HPwBTCtHs95I+76PLS/d4IEEsmZk9Wfx9+qBygeHBX4YU961fPuc6nUHVN?= =?us-ascii?Q?j9QDy9V9XMeR0hCCZXs6mVqCjB96KJrkdB1Xb0ujt4xOVAA7rETL1THbBHvq?= =?us-ascii?Q?FNAyv/7xetlQq0hG5JjXVsFngM4KC4LvP6kXYwz157B/W9RU3BfC9/jDDuQD?= =?us-ascii?Q?qBnm6VQ7Sja7CpwOm7g2eMla9hpl/gu555i1qTzq4kg3FbtZacPAHDTzr5/K?= =?us-ascii?Q?bOxO5NzrGuL/IrAkz/HE2dNtIbVg1Aj4X+d5U+Vbk7iZiYLKqlZryCBYsBQn?= =?us-ascii?Q?+o9tQGT1X96av6OU0tLZtg/mWlCxQHo=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5832.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e04aaffa-dde8-4e2e-b5b2-08da2b728f4c X-MS-Exchange-CrossTenant-originalarrivaltime: 01 May 2022 13:00:25.6313 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FBlfCN4Mgj/0gRA8VxcW6Fy7pviE+9lZk6hCEoYoVmj9L4Ej4KOm5Th6QVNF4jqp3eLU+yb2sr+UvVBq8Fy2p/Xjd7jUbQUyPm+da7treEo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR11MB5716 X-OriginatorOrg: intel.com 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: , Errors-To: dev-bounces@dpdk.org Acked-by: Abhinandan Gujjar > -----Original Message----- > From: Akhil Goyal > Sent: Thursday, April 21, 2022 8:07 PM > To: dev@dpdk.org > Cc: anoobj@marvell.com; jerinj@marvell.com; Gujjar, Abhinandan S > ; Jayatheerthan, Jay > ; Vangati, Narender > ; vfialko@marvell.com; Akhil Goyal > > Subject: [PATCH v3 7/7] test-eventdev: support asym ops for crypto adapte= r >=20 > Test eventdev app is updated to add new option for asymmetric crypto ops = for > event crypto adapter. >=20 > Signed-off-by: Akhil Goyal > --- > app/test-eventdev/evt_common.h | 2 + > app/test-eventdev/evt_options.c | 17 ++ > app/test-eventdev/evt_options.h | 4 + > app/test-eventdev/test_perf_atq.c | 12 +- > app/test-eventdev/test_perf_common.c | 250 +++++++++++++++++++++++---- > app/test-eventdev/test_perf_common.h | 45 +++-- app/test- > eventdev/test_perf_queue.c | 12 +- > doc/guides/tools/testeventdev.rst | 5 + > 8 files changed, 284 insertions(+), 63 deletions(-) >=20 > diff --git a/app/test-eventdev/evt_common.h b/app/test- > eventdev/evt_common.h index 2f301a7e79..196eca8bd0 100644 > --- a/app/test-eventdev/evt_common.h > +++ b/app/test-eventdev/evt_common.h > @@ -6,6 +6,7 @@ > #define _EVT_COMMON_ >=20 > #include > +#include > #include > #include > #include > @@ -80,6 +81,7 @@ struct evt_options { > uint64_t optm_timer_tick_nsec; > enum evt_prod_type prod_type; > enum rte_event_crypto_adapter_mode crypto_adptr_mode; > + enum rte_crypto_op_type crypto_op_type; > }; >=20 > static inline bool > diff --git a/app/test-eventdev/evt_options.c b/app/test-eventdev/evt_opti= ons.c > index d3c704d2b3..8326734b64 100644 > --- a/app/test-eventdev/evt_options.c > +++ b/app/test-eventdev/evt_options.c > @@ -38,6 +38,7 @@ evt_options_default(struct evt_options *opt) > opt->eth_queues =3D 1; > opt->vector_size =3D 64; > opt->vector_tmo_nsec =3D 100E3; > + opt->crypto_op_type =3D RTE_CRYPTO_OP_TYPE_SYMMETRIC; > } >=20 > typedef int (*option_parser_t)(struct evt_options *opt, @@ -142,6 +143,1= 8 > @@ evt_parse_crypto_adptr_mode(struct evt_options *opt, const char *arg) > return ret; > } >=20 > +static int > +evt_parse_crypto_op_type(struct evt_options *opt, const char *arg) { > + uint8_t op_type; > + int ret; > + > + ret =3D parser_read_uint8(&op_type, arg); > + opt->crypto_op_type =3D op_type ? > RTE_CRYPTO_OP_TYPE_ASYMMETRIC : > + RTE_CRYPTO_OP_TYPE_SYMMETRIC; > + return ret; > +} > + > static int > evt_parse_test_name(struct evt_options *opt, const char *arg) { @@ -368= ,6 > +381,8 @@ usage(char *program) > "\t--expiry_nsec : event timer expiry ns.\n" > "\t--crypto_adptr_mode : 0 for OP_NEW mode (default) > and\n" > "\t 1 for OP_FORWARD mode.\n" > + "\t--crypto_op_type : 0 for SYM ops (default) and\n" > + "\t 1 for ASYM ops.\n" > "\t--mbuf_sz : packet mbuf size.\n" > "\t--max_pkt_sz : max packet size.\n" > "\t--prod_enq_burst_sz : producer enqueue burst size.\n" > @@ -442,6 +457,7 @@ static struct option lgopts[] =3D { > { EVT_PROD_TIMERDEV, 0, 0, 0 }, > { EVT_PROD_TIMERDEV_BURST, 0, 0, 0 }, > { EVT_CRYPTO_ADPTR_MODE, 1, 0, 0 }, > + { EVT_CRYPTO_OP_TYPE, 1, 0, 0 }, > { EVT_NB_TIMERS, 1, 0, 0 }, > { EVT_NB_TIMER_ADPTRS, 1, 0, 0 }, > { EVT_TIMER_TICK_NSEC, 1, 0, 0 }, > @@ -484,6 +500,7 @@ evt_opts_parse_long(int opt_idx, struct evt_options > *opt) > { EVT_PROD_TIMERDEV, evt_parse_timer_prod_type}, > { EVT_PROD_TIMERDEV_BURST, > evt_parse_timer_prod_type_burst}, > { EVT_CRYPTO_ADPTR_MODE, evt_parse_crypto_adptr_mode}, > + { EVT_CRYPTO_OP_TYPE, evt_parse_crypto_op_type}, > { EVT_NB_TIMERS, evt_parse_nb_timers}, > { EVT_NB_TIMER_ADPTRS, evt_parse_nb_timer_adptrs}, > { EVT_TIMER_TICK_NSEC, evt_parse_timer_tick_nsec}, diff --git > a/app/test-eventdev/evt_options.h b/app/test-eventdev/evt_options.h index > 2231c58801..f23fb8a511 100644 > --- a/app/test-eventdev/evt_options.h > +++ b/app/test-eventdev/evt_options.h > @@ -38,6 +38,7 @@ > #define EVT_PROD_TIMERDEV ("prod_type_timerdev") > #define EVT_PROD_TIMERDEV_BURST ("prod_type_timerdev_burst") > #define EVT_CRYPTO_ADPTR_MODE ("crypto_adptr_mode") > +#define EVT_CRYPTO_OP_TYPE ("crypto_op_type") > #define EVT_NB_TIMERS ("nb_timers") > #define EVT_NB_TIMER_ADPTRS ("nb_timer_adptrs") > #define EVT_TIMER_TICK_NSEC ("timer_tick_nsec") > @@ -298,6 +299,9 @@ evt_dump_producer_type(struct evt_options *opt) > "Event crypto adapter producers"); > evt_dump("crypto adapter mode", "%s", > opt->crypto_adptr_mode ? "OP_FORWARD" : > "OP_NEW"); > + evt_dump("crypto op type", "%s", > + (opt->crypto_op_type =3D=3D > RTE_CRYPTO_OP_TYPE_SYMMETRIC) ? > + "SYMMETRIC" : "ASYMMETRIC"); > evt_dump("nb_cryptodev", "%u", rte_cryptodev_count()); > break; > } > diff --git a/app/test-eventdev/test_perf_atq.c b/app/test- > eventdev/test_perf_atq.c > index 67ff681666..6a2aa86fd2 100644 > --- a/app/test-eventdev/test_perf_atq.c > +++ b/app/test-eventdev/test_perf_atq.c > @@ -53,11 +53,13 @@ perf_atq_worker(void *arg, const int > enable_fwd_latency) > struct rte_crypto_op *op =3D ev.event_ptr; >=20 > if (op->status =3D=3D RTE_CRYPTO_OP_STATUS_SUCCESS) { > - if (op->sym->m_dst =3D=3D NULL) > - ev.event_ptr =3D op->sym->m_src; > - else > - ev.event_ptr =3D op->sym->m_dst; > - rte_crypto_op_free(op); > + if (op->type =3D=3D > RTE_CRYPTO_OP_TYPE_SYMMETRIC) { > + if (op->sym->m_dst =3D=3D NULL) > + ev.event_ptr =3D op->sym- > >m_src; > + else > + ev.event_ptr =3D op->sym- > >m_dst; > + rte_crypto_op_free(op); > + } > } else { > rte_crypto_op_free(op); > continue; > diff --git a/app/test-eventdev/test_perf_common.c b/app/test- > eventdev/test_perf_common.c > index 0378607cda..f2da6fd74c 100644 > --- a/app/test-eventdev/test_perf_common.c > +++ b/app/test-eventdev/test_perf_common.c > @@ -7,6 +7,89 @@ > #include "test_perf_common.h" >=20 > #define NB_CRYPTODEV_DESCRIPTORS 128 > +#define DATA_SIZE 512 > +struct modex_test_data { > + enum rte_crypto_asym_xform_type xform_type; > + struct { > + uint8_t data[DATA_SIZE]; > + uint16_t len; > + } base; > + struct { > + uint8_t data[DATA_SIZE]; > + uint16_t len; > + } exponent; > + struct { > + uint8_t data[DATA_SIZE]; > + uint16_t len; > + } modulus; > + struct { > + uint8_t data[DATA_SIZE]; > + uint16_t len; > + } reminder; > + uint16_t result_len; > +}; > + > +static struct > +modex_test_data modex_test_case =3D { > + .xform_type =3D RTE_CRYPTO_ASYM_XFORM_MODEX, > + .base =3D { > + .data =3D { > + 0xF8, 0xBA, 0x1A, 0x55, 0xD0, 0x2F, 0x85, > + 0xAE, 0x96, 0x7B, 0xB6, 0x2F, 0xB6, 0xCD, > + 0xA8, 0xEB, 0x7E, 0x78, 0xA0, 0x50 > + }, > + .len =3D 20, > + }, > + .exponent =3D { > + .data =3D { > + 0x01, 0x00, 0x01 > + }, > + .len =3D 3, > + }, > + .reminder =3D { > + .data =3D { > + 0x2C, 0x60, 0x75, 0x45, 0x98, 0x9D, 0xE0, 0x72, > + 0xA0, 0x9D, 0x3A, 0x9E, 0x03, 0x38, 0x73, 0x3C, > + 0x31, 0x83, 0x04, 0xFE, 0x75, 0x43, 0xE6, 0x17, > + 0x5C, 0x01, 0x29, 0x51, 0x69, 0x33, 0x62, 0x2D, > + 0x78, 0xBE, 0xAE, 0xC4, 0xBC, 0xDE, 0x7E, 0x2C, > + 0x77, 0x84, 0xF2, 0xC5, 0x14, 0xB5, 0x2F, 0xF7, > + 0xC5, 0x94, 0xEF, 0x86, 0x75, 0x75, 0xB5, 0x11, > + 0xE5, 0x0E, 0x0A, 0x29, 0x76, 0xE2, 0xEA, 0x32, > + 0x0E, 0x43, 0x77, 0x7E, 0x2C, 0x27, 0xAC, 0x3B, > + 0x86, 0xA5, 0xDB, 0xC9, 0x48, 0x40, 0xE8, 0x99, > + 0x9A, 0x0A, 0x3D, 0xD6, 0x74, 0xFA, 0x2E, 0x2E, > + 0x5B, 0xAF, 0x8C, 0x99, 0x44, 0x2A, 0x67, 0x38, > + 0x27, 0x41, 0x59, 0x9D, 0xB8, 0x51, 0xC9, 0xF7, > + 0x43, 0x61, 0x31, 0x6E, 0xF1, 0x25, 0x38, 0x7F, > + 0xAE, 0xC6, 0xD0, 0xBB, 0x29, 0x76, 0x3F, 0x46, > + 0x2E, 0x1B, 0xE4, 0x67, 0x71, 0xE3, 0x87, 0x5A > + }, > + .len =3D 128, > + }, > + .modulus =3D { > + .data =3D { > + 0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00, 0x0a, > + 0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5, 0xce, > + 0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a, 0xa2, > + 0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde, 0x0a, > + 0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a, 0x3d, > + 0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63, 0x6a, > + 0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27, 0x6e, > + 0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa, 0x72, > + 0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53, 0x87, > + 0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a, 0x62, > + 0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63, 0x18, > + 0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33, 0x4e, > + 0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3, 0x03, > + 0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e, 0xee, > + 0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb, 0xa6, > + 0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde, 0x55 > + }, > + .len =3D 128, > + }, > + .result_len =3D 128, > +}; >=20 > int > perf_test_result(struct evt_test *test, struct evt_options *opt) @@ -277= ,12 > +360,10 @@ perf_event_timer_producer_burst(void *arg) static inline void > crypto_adapter_enq_op_new(struct prod_data *p) { > - struct rte_cryptodev_sym_session **crypto_sess =3D p->ca.crypto_sess; > struct test_perf *t =3D p->t; > const uint32_t nb_flows =3D t->nb_flows; > const uint64_t nb_pkts =3D t->nb_pkts; > struct rte_mempool *pool =3D t->pool; > - struct rte_crypto_sym_op *sym_op; > struct evt_options *opt =3D t->opt; > uint16_t qp_id =3D p->ca.cdev_qp_id; > uint8_t cdev_id =3D p->ca.cdev_id; > @@ -300,22 +381,39 @@ crypto_adapter_enq_op_new(struct prod_data *p) > len =3D opt->mbuf_sz ? opt->mbuf_sz : RTE_ETHER_MIN_LEN; >=20 > while (count < nb_pkts && t->done =3D=3D false) { > - m =3D rte_pktmbuf_alloc(pool); > - if (m =3D=3D NULL) > - continue; > + if (opt->crypto_op_type =3D=3D > RTE_CRYPTO_OP_TYPE_SYMMETRIC) { > + struct rte_crypto_sym_op *sym_op; >=20 > - rte_pktmbuf_append(m, len); > - op =3D rte_crypto_op_alloc(t->ca_op_pool, > + op =3D rte_crypto_op_alloc(t->ca_op_pool, > RTE_CRYPTO_OP_TYPE_SYMMETRIC); > - sym_op =3D op->sym; > - sym_op->m_src =3D m; > - sym_op->cipher.data.offset =3D 0; > - sym_op->cipher.data.length =3D len; > - rte_crypto_op_attach_sym_session( > - op, crypto_sess[flow_counter++ % nb_flows]); > + m =3D rte_pktmbuf_alloc(pool); > + if (m =3D=3D NULL) > + continue; >=20 > + rte_pktmbuf_append(m, len); > + sym_op =3D op->sym; > + sym_op->m_src =3D m; > + sym_op->cipher.data.offset =3D 0; > + sym_op->cipher.data.length =3D len; > + rte_crypto_op_attach_sym_session( > + op, p->ca.crypto_sess[flow_counter++ % > nb_flows]); > + } else { > + struct rte_crypto_asym_op *asym_op; > + uint8_t *result =3D rte_zmalloc(NULL, > + modex_test_case.result_len, 0); > + > + op =3D rte_crypto_op_alloc(t->ca_op_pool, > + > RTE_CRYPTO_OP_TYPE_ASYMMETRIC); > + asym_op =3D op->asym; > + asym_op->modex.base.data =3D > modex_test_case.base.data; > + asym_op->modex.base.length =3D > modex_test_case.base.len; > + asym_op->modex.result.data =3D result; > + asym_op->modex.result.length =3D > modex_test_case.result_len; > + rte_crypto_op_attach_asym_session( > + op, p->ca.crypto_sess[flow_counter++ % > nb_flows]); > + } > while (rte_cryptodev_enqueue_burst(cdev_id, qp_id, &op, 1) !=3D > 1 && > - t->done =3D=3D false) > + t->done =3D=3D false) > rte_pause(); >=20 > count++; > @@ -325,7 +423,6 @@ crypto_adapter_enq_op_new(struct prod_data *p) > static inline void crypto_adapter_enq_op_fwd(struct prod_data *p) { > - struct rte_cryptodev_sym_session **crypto_sess =3D p->ca.crypto_sess; > const uint8_t dev_id =3D p->dev_id; > const uint8_t port =3D p->port_id; > struct test_perf *t =3D p->t; > @@ -333,7 +430,6 @@ crypto_adapter_enq_op_fwd(struct prod_data *p) > const uint64_t nb_pkts =3D t->nb_pkts; > struct rte_mempool *pool =3D t->pool; > struct evt_options *opt =3D t->opt; > - struct rte_crypto_sym_op *sym_op; > uint32_t flow_counter =3D 0; > struct rte_crypto_op *op; > struct rte_event ev; > @@ -354,19 +450,37 @@ crypto_adapter_enq_op_fwd(struct prod_data *p) > len =3D opt->mbuf_sz ? opt->mbuf_sz : RTE_ETHER_MIN_LEN; >=20 > while (count < nb_pkts && t->done =3D=3D false) { > - m =3D rte_pktmbuf_alloc(pool); > - if (m =3D=3D NULL) > - continue; > + if (opt->crypto_op_type =3D=3D > RTE_CRYPTO_OP_TYPE_SYMMETRIC) { > + struct rte_crypto_sym_op *sym_op; >=20 > - rte_pktmbuf_append(m, len); > - op =3D rte_crypto_op_alloc(t->ca_op_pool, > + op =3D rte_crypto_op_alloc(t->ca_op_pool, > RTE_CRYPTO_OP_TYPE_SYMMETRIC); > - sym_op =3D op->sym; > - sym_op->m_src =3D m; > - sym_op->cipher.data.offset =3D 0; > - sym_op->cipher.data.length =3D len; > - rte_crypto_op_attach_sym_session( > - op, crypto_sess[flow_counter++ % nb_flows]); > + m =3D rte_pktmbuf_alloc(pool); > + if (m =3D=3D NULL) > + continue; > + > + rte_pktmbuf_append(m, len); > + sym_op =3D op->sym; > + sym_op->m_src =3D m; > + sym_op->cipher.data.offset =3D 0; > + sym_op->cipher.data.length =3D len; > + rte_crypto_op_attach_sym_session( > + op, p->ca.crypto_sess[flow_counter++ % > nb_flows]); > + } else { > + struct rte_crypto_asym_op *asym_op; > + uint8_t *result =3D rte_zmalloc(NULL, > + modex_test_case.result_len, 0); > + > + op =3D rte_crypto_op_alloc(t->ca_op_pool, > + > RTE_CRYPTO_OP_TYPE_ASYMMETRIC); > + asym_op =3D op->asym; > + asym_op->modex.base.data =3D > modex_test_case.base.data; > + asym_op->modex.base.length =3D > modex_test_case.base.len; > + asym_op->modex.result.data =3D result; > + asym_op->modex.result.length =3D > modex_test_case.result_len; > + rte_crypto_op_attach_asym_session( > + op, p->ca.crypto_sess[flow_counter++ % > nb_flows]); > + } > ev.event_ptr =3D op; >=20 > while (rte_event_crypto_adapter_enqueue(dev_id, port, &ev, > 1) !=3D 1 && @@ -729,6 +843,37 @@ cryptodev_sym_sess_create(struct > prod_data *p, struct test_perf *t) > return sess; > } >=20 > +static void * > +cryptodev_asym_sess_create(struct prod_data *p, struct test_perf *t) { > + const struct rte_cryptodev_asymmetric_xform_capability *capability; > + struct rte_cryptodev_asym_capability_idx cap_idx; > + struct rte_crypto_asym_xform xform; > + void *sess; > + > + xform.next =3D NULL; > + xform.xform_type =3D RTE_CRYPTO_ASYM_XFORM_MODEX; > + cap_idx.type =3D xform.xform_type; > + capability =3D rte_cryptodev_asym_capability_get(p->ca.cdev_id, > &cap_idx); > + if (capability =3D=3D NULL) { > + evt_err("Device doesn't support MODEX. Test Skipped\n"); > + return NULL; > + } > + > + xform.modex.modulus.data =3D modex_test_case.modulus.data; > + xform.modex.modulus.length =3D modex_test_case.modulus.len; > + xform.modex.exponent.data =3D modex_test_case.exponent.data; > + xform.modex.exponent.length =3D modex_test_case.exponent.len; > + > + if (rte_cryptodev_asym_session_create(p->ca.cdev_id, &xform, > + t->ca_asym_sess_pool, &sess)) { > + evt_err("Failed to create asym session"); > + return NULL; > + } > + > + return sess; > +} > + > int > perf_event_dev_port_setup(struct evt_test *test, struct evt_options *opt= , > uint8_t stride, uint8_t nb_queues, > @@ -804,7 +949,6 @@ perf_event_dev_port_setup(struct evt_test *test, > struct evt_options *opt, >=20 > prod =3D 0; > for (; port < perf_nb_event_ports(opt); port++) { > - struct rte_cryptodev_sym_session *crypto_sess; > union rte_event_crypto_metadata m_data; > struct prod_data *p =3D &t->prod[port]; > uint32_t flow_id; > @@ -820,7 +964,7 @@ perf_event_dev_port_setup(struct evt_test *test, > struct evt_options *opt, > p->ca.cdev_id =3D cdev_id; > p->ca.cdev_qp_id =3D qp_id; > p->ca.crypto_sess =3D rte_zmalloc_socket( > - NULL, sizeof(crypto_sess) * t->nb_flows, > + NULL, sizeof(void *) * t->nb_flows, > RTE_CACHE_LINE_SIZE, opt->socket_id); > p->t =3D t; >=20 > @@ -830,18 +974,36 @@ perf_event_dev_port_setup(struct evt_test *test, > struct evt_options *opt, > m_data.response_info.queue_id =3D p->queue_id; >=20 > for (flow_id =3D 0; flow_id < t->nb_flows; flow_id++) { > - crypto_sess =3D cryptodev_sym_sess_create(p, t); > - if (crypto_sess =3D=3D NULL) > - return -ENOMEM; > - > m_data.response_info.flow_id =3D flow_id; > - > rte_cryptodev_session_event_mdata_set(cdev_id, > - crypto_sess, > + if (opt->crypto_op_type =3D=3D > + > RTE_CRYPTO_OP_TYPE_SYMMETRIC) { > + struct rte_cryptodev_sym_session > *sess; > + > + sess =3D cryptodev_sym_sess_create(p, > t); > + if (sess =3D=3D NULL) > + return -ENOMEM; > + > + > rte_cryptodev_session_event_mdata_set( > + cdev_id, > + sess, >=20 > RTE_CRYPTO_OP_TYPE_SYMMETRIC, >=20 > RTE_CRYPTO_OP_WITH_SESSION, > &m_data, sizeof(m_data)); > + p->ca.crypto_sess[flow_id] =3D sess; > + } else { > + void *sess; >=20 > - p->ca.crypto_sess[flow_id] =3D crypto_sess; > + sess =3D cryptodev_asym_sess_create(p, > t); > + if (sess =3D=3D NULL) > + return -ENOMEM; > + > rte_cryptodev_session_event_mdata_set( > + cdev_id, > + sess, > + > RTE_CRYPTO_OP_TYPE_ASYMMETRIC, > + > RTE_CRYPTO_OP_WITH_SESSION, > + &m_data, sizeof(m_data)); > + p->ca.crypto_sess[flow_id] =3D sess; > + } > } >=20 > conf.event_port_cfg |=3D > @@ -1123,14 +1285,24 @@ perf_cryptodev_setup(struct evt_test *test, struc= t > evt_options *opt) > } >=20 > t->ca_op_pool =3D rte_crypto_op_pool_create( > - "crypto_op_pool", RTE_CRYPTO_OP_TYPE_SYMMETRIC, opt- > >pool_sz, > - 128, 0, rte_socket_id()); > + "crypto_op_pool", opt->crypto_op_type, opt->pool_sz, > + 128, sizeof(union rte_event_crypto_metadata), > + rte_socket_id()); > if (t->ca_op_pool =3D=3D NULL) { > evt_err("Failed to create crypto op pool"); > return -ENOMEM; > } >=20 > nb_sessions =3D evt_nr_active_lcores(opt->plcores) * t->nb_flows; > + t->ca_asym_sess_pool =3D rte_cryptodev_asym_session_pool_create( > + "ca_asym_sess_pool", nb_sessions, 0, > + sizeof(union rte_event_crypto_metadata), SOCKET_ID_ANY); > + if (t->ca_asym_sess_pool =3D=3D NULL) { > + evt_err("Failed to create sym session pool"); > + ret =3D -ENOMEM; > + goto err; > + } > + > t->ca_sess_pool =3D rte_cryptodev_sym_session_pool_create( > "ca_sess_pool", nb_sessions, 0, 0, > sizeof(union rte_event_crypto_metadata), SOCKET_ID_ANY); > @@ -1217,6 +1389,7 @@ perf_cryptodev_setup(struct evt_test *test, struct > evt_options *opt) > rte_mempool_free(t->ca_op_pool); > rte_mempool_free(t->ca_sess_pool); > rte_mempool_free(t->ca_sess_priv_pool); > + rte_mempool_free(t->ca_asym_sess_pool); >=20 > return ret; > } > @@ -1258,6 +1431,7 @@ perf_cryptodev_destroy(struct evt_test *test, struc= t > evt_options *opt) > rte_mempool_free(t->ca_op_pool); > rte_mempool_free(t->ca_sess_pool); > rte_mempool_free(t->ca_sess_priv_pool); > + rte_mempool_free(t->ca_asym_sess_pool); > } >=20 > int > diff --git a/app/test-eventdev/test_perf_common.h b/app/test- > eventdev/test_perf_common.h > index ea0907d61a..5651832cc9 100644 > --- a/app/test-eventdev/test_perf_common.h > +++ b/app/test-eventdev/test_perf_common.h > @@ -40,7 +40,7 @@ struct worker_data { > struct crypto_adptr_data { > uint8_t cdev_id; > uint16_t cdev_qp_id; > - struct rte_cryptodev_sym_session **crypto_sess; > + void **crypto_sess; > }; > struct prod_data { > uint8_t dev_id; > @@ -70,6 +70,7 @@ struct test_perf { > struct rte_mempool *ca_op_pool; > struct rte_mempool *ca_sess_pool; > struct rte_mempool *ca_sess_priv_pool; > + struct rte_mempool *ca_asym_sess_pool; > } __rte_cache_aligned; >=20 > struct perf_elt { > @@ -111,8 +112,6 @@ perf_process_last_stage(struct rte_mempool *const > pool, > struct rte_event *const ev, struct worker_data *const w, > void *bufs[], int const buf_sz, uint8_t count) { > - bufs[count++] =3D ev->event_ptr; > - > /* release fence here ensures event_prt is > * stored before updating the number of > * processed packets for worker lcores @@ -120,9 +119,19 @@ > perf_process_last_stage(struct rte_mempool *const pool, > rte_atomic_thread_fence(__ATOMIC_RELEASE); > w->processed_pkts++; >=20 > - if (unlikely(count =3D=3D buf_sz)) { > - count =3D 0; > - rte_mempool_put_bulk(pool, bufs, buf_sz); > + if (ev->event_type =3D=3D RTE_EVENT_TYPE_CRYPTODEV && > + ((struct rte_crypto_op *)ev->event_ptr)->type =3D=3D > + RTE_CRYPTO_OP_TYPE_ASYMMETRIC) { > + struct rte_crypto_op *op =3D ev->event_ptr; > + > + rte_free(op->asym->modex.result.data); > + rte_crypto_op_free(op); > + } else { > + bufs[count++] =3D ev->event_ptr; > + if (unlikely(count =3D=3D buf_sz)) { > + count =3D 0; > + rte_mempool_put_bulk(pool, bufs, buf_sz); > + } > } > return count; > } > @@ -135,8 +144,6 @@ perf_process_last_stage_latency(struct rte_mempool > *const pool, > uint64_t latency; > struct perf_elt *const m =3D ev->event_ptr; >=20 > - bufs[count++] =3D ev->event_ptr; > - > /* release fence here ensures event_prt is > * stored before updating the number of > * processed packets for worker lcores @@ -144,15 +151,23 @@ > perf_process_last_stage_latency(struct rte_mempool *const pool, > rte_atomic_thread_fence(__ATOMIC_RELEASE); > w->processed_pkts++; >=20 > - if (unlikely(count =3D=3D buf_sz)) { > - count =3D 0; > - latency =3D rte_get_timer_cycles() - m->timestamp; > - rte_mempool_put_bulk(pool, bufs, buf_sz); > + if (ev->event_type =3D=3D RTE_EVENT_TYPE_CRYPTODEV && > + ((struct rte_crypto_op *)m)->type =3D=3D > + RTE_CRYPTO_OP_TYPE_ASYMMETRIC) { > + rte_free(((struct rte_crypto_op *)m)->asym- > >modex.result.data); > + rte_crypto_op_free((struct rte_crypto_op *)m); > } else { > - latency =3D rte_get_timer_cycles() - m->timestamp; > + bufs[count++] =3D ev->event_ptr; > + if (unlikely(count =3D=3D buf_sz)) { > + count =3D 0; > + latency =3D rte_get_timer_cycles() - m->timestamp; > + rte_mempool_put_bulk(pool, bufs, buf_sz); > + } else { > + latency =3D rte_get_timer_cycles() - m->timestamp; > + } > + > + w->latency +=3D latency; > } > - > - w->latency +=3D latency; > return count; > } >=20 > diff --git a/app/test-eventdev/test_perf_queue.c b/app/test- > eventdev/test_perf_queue.c > index dcf6d82947..631a39f727 100644 > --- a/app/test-eventdev/test_perf_queue.c > +++ b/app/test-eventdev/test_perf_queue.c > @@ -55,11 +55,13 @@ perf_queue_worker(void *arg, const int > enable_fwd_latency) > struct rte_crypto_op *op =3D ev.event_ptr; >=20 > if (op->status =3D=3D RTE_CRYPTO_OP_STATUS_SUCCESS) { > - if (op->sym->m_dst =3D=3D NULL) > - ev.event_ptr =3D op->sym->m_src; > - else > - ev.event_ptr =3D op->sym->m_dst; > - rte_crypto_op_free(op); > + if (op->type =3D=3D > RTE_CRYPTO_OP_TYPE_SYMMETRIC) { > + if (op->sym->m_dst =3D=3D NULL) > + ev.event_ptr =3D op->sym- > >m_src; > + else > + ev.event_ptr =3D op->sym- > >m_dst; > + rte_crypto_op_free(op); > + } > } else { > rte_crypto_op_free(op); > continue; > diff --git a/doc/guides/tools/testeventdev.rst > b/doc/guides/tools/testeventdev.rst > index f7d813226d..a8e02d57a4 100644 > --- a/doc/guides/tools/testeventdev.rst > +++ b/doc/guides/tools/testeventdev.rst > @@ -157,6 +157,11 @@ The following are the application command-line > options: > Set crypto adapter mode. Use 0 for OP_NEW (default) and 1 for > OP_FORWARD mode. >=20 > +* ``--crypto_op_type`` > + > + Set crypto operation type. Use 0 for symmetric crypto ops (defau= lt) > + and 1 for asymmetric crypto ops. > + > * ``--mbuf_sz`` >=20 > Set packet mbuf size. Can be used to configure Jumbo Frames. Only > -- > 2.25.1