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 AC0D2A00C4; Sun, 1 May 2022 15:18:07 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4E4E74069D; Sun, 1 May 2022 15:18:07 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 605E54003F for ; Sun, 1 May 2022 15:18:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651411085; x=1682947085; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Bt6u0PrYJfKK0SKfXjc7vxsvGZQBgpHnbxkrRx59DJo=; b=hJ56678HHm3oRYBmKPzXB4e8jrQ5m0KcyPEEHw8MzkIkDosiPZqIQixA KOdAx2oZmV3r9Y0qdmVSVc/+7K6582L3jkRI7DxKGdR4UO87fC/pzXZyd klTyN1ubE3ZQO9ba6dcZL0VIM8bkVUr6vi3Q1cUqiUiJQnNpromOhi197 0P1d//CvQqOiJ7FJaARYxUvc3VWF+PXv9e2JW+AGuWRbT1cy8C5CWFd+y R2vijtYofK29PeJRV87YLFlXfCp4BKXt/73Br4v1idcH3+2OksaFl5d16 XmmmlDVHzfWNA5ttDWEOiUtZ/x/6fm7nSrYPCv46lnm8i+KcE4TohW5sd g==; X-IronPort-AV: E=McAfee;i="6400,9594,10333"; a="265860699" X-IronPort-AV: E=Sophos;i="5.91,190,1647327600"; d="scan'208";a="265860699" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 May 2022 06:18:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,190,1647327600"; d="scan'208";a="515636399" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga003.jf.intel.com with ESMTP; 01 May 2022 06:18:03 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) 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:18:03 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by ORSMSX611.amr.corp.intel.com (10.22.229.24) 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:18:02 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx606.amr.corp.intel.com (10.22.229.19) 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:18:02 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.49) by edgegateway.intel.com (134.134.137.103) 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:18:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XQZPVkislojcPjtq5gl3yTm0RiUT3XtNSws3hq0M1X3mvrNga/Qcquv4gpNcUh7UnO6X1axaQ106Oitk58YJYuyNTCk+rel8UPOIv4AMLho4H10hNHEzjWrUiK0Icz7VVIjtv1EoKEpOA1UaACpTRZRz1erfHcKlcTJbVJ77SKH2pRP1T7/zt+pJ7OndxcnILpomwXOrdEgQdQ9VDFYGRRhEsyJ5m47G1dM1cKWV6uSCrm+swZCtdFZWq1dIlJYqXd66v4DuGymiWk2wlGawYyB+qQhm1Th3Tv9AfBkon6yhHKTLDWcwCwis9PcvNODCR2WqEAABLqxI0gPmbR3ZoQ== 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=BWxDqjmFFxJd0mxqFcSSH1iTVfdb8oAQllLtM8a1sUQ=; b=gy4FfsRe4DRGwuOfT0+y5HOw4v6L3E4P299kUJk1d3FWJ954RuJLLaaxOAM50CcKSC4ATZLZkxg9Z8cn7SSD6y3LgcfZ5aUO2sOPdDud8djpqtD1bOeTYHx2kCpyjBDkPnGkxCZdft/wMYr9mvCdAAN2IfkfbNUscEcr+P2MrVugLyx6FeGnpoc1s+6H/BtO5ARmgqLoq2o9GoSYQPNkMojqeiPoBdU4ahAwLrpzsXqO3pdj/WJNbq2iqEZMH24bjxy3+KPGAIfzZSg/by7jsGvoxWsnn60v+71LtPIwahJ1ybPW89NOi9JQ5Yv6UU+FTmGZjB5d6JUfNdMs5hGQew== 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 CH0PR11MB5330.namprd11.prod.outlook.com (2603:10b6:610:bd::7) 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:17:55 +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:17:55 +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 2/7] crypto/cnxk: add event metadata set operation Thread-Topic: [PATCH v3 2/7] crypto/cnxk: add event metadata set operation Thread-Index: AQHYVY1iQFr9Bf0Zikun3k5SFHCrH60KDVCg Date: Sun, 1 May 2022 13:17:55 +0000 Message-ID: References: <20220418193325.368313-1-gakhil@marvell.com> <20220421143720.1583062-1-gakhil@marvell.com> <20220421143720.1583062-3-gakhil@marvell.com> In-Reply-To: <20220421143720.1583062-3-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: fb24bb9a-bfed-4123-e3c3-08da2b750114 x-ms-traffictypediagnostic: CH0PR11MB5330: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: RGS2GzkdzNbzdf5y1+2ovHfuDzzTaJzlrOIWMJst8OzR0hxVPIVa+CMCOGbr81HzBJvI/IwLa3/RXL3bn9QkXMEfQnC/IEKGP14xB7TPwnnse1+wkoiJ7ktoGbV/3ROFIhc374orXvT1Iy3vf0v3vWGEeKnmcdcGutLfBuYhM+vu5nxo6efoOzS4zUK63aI3OyPT7i8k23wqbWnHmK8D16TVrdTl17jkx6vmgxO6xzLqWdM/6tT3mr0ufKNe/XpnCqVptykQ25aXXRNwwRbv5pvdBACm9sN43/SfQca26XafqZ7iI/QVXq2bq/Qbiw3XRYHixcryaCUj93FYmGD+Za4KPBAIg/GtJuRNsEUbVSWRcT7fDBg4h4CZlmEYeKSpikUY9Qmjs7jKXvpfx+8BXS0LBn92Sv4zC9219Zjf//PMc4k563xPvOYKYhCRzuhBHpifaAC+yLmERNtrtQ1Y2pvUrom3IzLmdcLF2c1W7IeXwJ0cP+whxePtb8jbG8bnz6vR1+mbycB3tLSuAZHILN4O0aA9ztZix1NSA2xroNpibWlleQ1Qu6NRTRPG2ApPB/sJ6fFgfC0UuOUeoxt77q4dUHlrfHqf6LrkRjCm/Pp1JbEWXQYcTB/BTzukYviZNtEb0VoZw4EErKDkJcLnFTMP43b8Yo9dOa6vrjS48jCk76EnmwIVG3jy86ET67kLeFThzu/FsYoL6H93YvhtdQ== 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)(186003)(9686003)(316002)(55016003)(33656002)(55236004)(38100700002)(508600001)(86362001)(8936002)(52536014)(54906003)(110136005)(7696005)(38070700005)(82960400001)(71200400001)(83380400001)(30864003)(66476007)(66556008)(66446008)(64756008)(122000001)(5660300002)(76116006)(6506007)(2906002)(26005)(66946007)(53546011)(8676002)(4326008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?W2ynxLFcPMiU1nz4AQRGw+n5jwuyvNRJDrvr2BTFPRicBQ+1KkPFMj8x6BMv?= =?us-ascii?Q?R34LXP2q7aVQIvDu7T/On85nidOyARZXAHgTa1MdX7/uog1L+SGOMubX4RLW?= =?us-ascii?Q?r7f68+gNjkVgjkFbFb8HTNmXq65JS7GhOPcIDarYiHkq1c1slShdIfgw6D3J?= =?us-ascii?Q?+VbuPihDBCvtWt1SOoamh7zuT8kAMZKABeQ2BGfuZGWzMMXX2fjhOFpGqV4G?= =?us-ascii?Q?sCGVT0Rc9GQyy7fjI0G9YLaLOQkf9lzLsUCVOJPHPg4VT1HZz0H89UIlFgyn?= =?us-ascii?Q?+Syk06F71QJ3Xni4PW+bd2WhcPG0RFuTB6iT92cCDg4CW9a5FwS9Z9I+or4S?= =?us-ascii?Q?wxia4Beet1aMJPPXnuWsmmfvmwZlbPvgQiOoSJlsUgVGzgx9msIiSTnvoo3V?= =?us-ascii?Q?bs63txJDI+nYNiVclzKg5KHxHCfh/7AgvBBz/7Iu8n5kyl/9j3XXf0HBl510?= =?us-ascii?Q?q6XXF8aOIP0505YWd8/ec7EUP6KC++evTLNIf3DLIAyaKuoxK3qOp/8wyhHO?= =?us-ascii?Q?b73AwnFYKdfpRnPo4PZ/JDBMSzwCME6kKdPwg1yTadPPdr8OWOL0Sh3/+K3a?= =?us-ascii?Q?q89y3uHGoV+5Oa8o0JUkQJkJMYAgNHGThM5sl8rG4/anLknWGGvdH8tdYHgs?= =?us-ascii?Q?09HFXcrS97g8v92gg548sCb8hczkjnjpwLV6wtHxzfF0K+7LEyMtlbNOChGs?= =?us-ascii?Q?hjLpzaX1S2sWO8TZMWDlR10mvHpES/pDNOv2jmNWmuRJm5Gp37fK9uasg6V/?= =?us-ascii?Q?WM7vzqpjh5jdjY/UgIzMyp6qph0bFDf0oCwkqMWN8G4QdjWupJKhAXJjPxSx?= =?us-ascii?Q?5CPDus913vtmh6i9my5FYuSAXHJ9u4JV+TQVPc/Zg4xvyXC4leflwRx9X79M?= =?us-ascii?Q?sR7wE9ZR2o+tLEh2G7FZaNEsiETIK2EjH8YS7RtE5cAAmOz3qnIKxPM64U7Q?= =?us-ascii?Q?IeBb7uJgBdEdZVsNvT+cojwbapuZMRb6E9U6SSpbwBv+RM2ndPX0QpQuFaUC?= =?us-ascii?Q?8xepnuSouHIZ5kXzNv2Wk0IrCiOEycn+UoUzNbLwl+IP9gLhXZHSrcH3Z/ha?= =?us-ascii?Q?7U7FtllP2BNW2uUh06Auceybt7I+4XucCQRzr5siNvEzTf/dRVONGR9mm0ao?= =?us-ascii?Q?Ai5J5UUte2foEyZ1KrMmfNXRYTUbzfdTOsdLY6sEr/p9HBrO9OMiSqa0Gkn2?= =?us-ascii?Q?xfrSZcfFbfR8ItrNogHDV4xEacxW/bnD9uMLApiyUAM+gDvLR7amDAFWF2Cm?= =?us-ascii?Q?3iexU4wsrBfarBKr4jXq6/fE+4LfV8EOntTi89M+Z/V3KRWgTJNaCeRud0YA?= =?us-ascii?Q?LpYlWJ/6ep+w7J52nB/Sz5Ho2h6sn4kn1qVJO3EuYhISaJ2nUZLXD5XCfiEL?= =?us-ascii?Q?zhzx6LLxug9mpp+gHft8g8aUeeUDUhdr0X4AjluxNnV3wfp/IPvFTOQQIWb8?= =?us-ascii?Q?rIPwJKGQyvi3/JlkVDvH9XWhmRixbrD3gvd78iK8OnWr44dAYiKSHeS6EzQb?= =?us-ascii?Q?TaGmfm8k+dj9gB6X36OATuhEpFsOjH+Pxp1iDbgh7cz7ASsFHItzaMshHSf1?= =?us-ascii?Q?1gMJyD/KmkrXkTYOundarMaHbEElVBOjcKVvV/0XScmqv5A08k0kD2nT08HR?= =?us-ascii?Q?ibPMqr9i9F9ZlGzgcXo+oDtzuQNoe/W4sO7dpajdinqZune4P2ucT1o9UrCU?= =?us-ascii?Q?St3Xvx1AisDjEU9W8yMWsXjn2N6UJsgpLBaqY8C7xxYL2f6OMlVncmM1J/qk?= =?us-ascii?Q?9QP+7CBAA9BkweiPJ4b3u/eRfKKZJr8=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: fb24bb9a-bfed-4123-e3c3-08da2b750114 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 May 2022 13:17:55.5192 (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: jx11StK1xlZNliglnw0gk8GTTbitya5usVxA3lCh/iFx4kY1xgiH/mV2jsi60sXD1Zo2nUzyeiW5SVLcXXrHlLP6KVddVzkEAFAQdxmwkLA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB5330 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 Minor comment below > -----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 2/7] crypto/cnxk: add event metadata set operation >=20 > From: Volodymyr Fialko >=20 > Added cryptodev operation for setting event crypto metadata for all suppo= rted > sessions - sym/asym/security. >=20 > Signed-off-by: Volodymyr Fialko > Signed-off-by: Akhil Goyal > --- > drivers/crypto/cnxk/cn10k_cryptodev_ops.c | 144 +++++++++++++++++++--- > drivers/crypto/cnxk/cn10k_ipsec.h | 2 + > drivers/crypto/cnxk/cn9k_cryptodev_ops.c | 138 ++++++++++++++++++--- > drivers/crypto/cnxk/cn9k_ipsec.h | 2 + > drivers/crypto/cnxk/cnxk_ae.h | 2 + > drivers/crypto/cnxk/cnxk_cryptodev_ops.h | 18 --- > drivers/crypto/cnxk/cnxk_se.h | 2 + > 7 files changed, 255 insertions(+), 53 deletions(-) >=20 > diff --git a/drivers/crypto/cnxk/cn10k_cryptodev_ops.c > b/drivers/crypto/cnxk/cn10k_cryptodev_ops.c > index c4d5d039ec..01aa0d6870 100644 > --- a/drivers/crypto/cnxk/cn10k_cryptodev_ops.c > +++ b/drivers/crypto/cnxk/cn10k_cryptodev_ops.c > @@ -264,30 +264,136 @@ cn10k_cpt_enqueue_burst(void *qptr, struct > rte_crypto_op **ops, uint16_t nb_ops) > return count + i; > } >=20 > -uint16_t > -cn10k_cpt_crypto_adapter_enqueue(uintptr_t tag_op, struct rte_crypto_op > *op) > +static int > +cn10k_cpt_crypto_adapter_ev_mdata_set(struct rte_cryptodev *dev > __rte_unused, > + void *sess, > + enum rte_crypto_op_type op_type, > + enum rte_crypto_op_sess_type sess_type, > + void *mdata) > { > - union rte_event_crypto_metadata *ec_mdata; > - struct cpt_inflight_req *infl_req; > + union rte_event_crypto_metadata *ec_mdata =3D mdata; > struct rte_event *rsp_info; > - uint64_t lmt_base, lmt_arg; > - struct cpt_inst_s *inst; > struct cnxk_cpt_qp *qp; > uint8_t cdev_id; > - uint16_t lmt_id; > - uint16_t qp_id; > - int ret; > - > - ec_mdata =3D cnxk_event_crypto_mdata_get(op); > - if (!ec_mdata) { > - rte_errno =3D EINVAL; > - return 0; > - } > + int16_t qp_id; > + uint64_t w2; >=20 > + /* Get queue pair */ > cdev_id =3D ec_mdata->request_info.cdev_id; > qp_id =3D ec_mdata->request_info.queue_pair_id; > qp =3D rte_cryptodevs[cdev_id].data->queue_pairs[qp_id]; > + > + /* Prepare w2 */ > rsp_info =3D &ec_mdata->response_info; > + w2 =3D CNXK_CPT_INST_W2( > + (RTE_EVENT_TYPE_CRYPTODEV << 28) | rsp_info->flow_id, > + rsp_info->sched_type, rsp_info->queue_id, 0); > + > + /* Set meta according to session type */ > + if (op_type =3D=3D RTE_CRYPTO_OP_TYPE_SYMMETRIC) { > + if (sess_type =3D=3D RTE_CRYPTO_OP_SECURITY_SESSION) { > + struct cn10k_sec_session *priv; > + struct cn10k_ipsec_sa *sa; > + > + priv =3D get_sec_session_private_data(sess); > + sa =3D &priv->sa; > + sa->qp =3D qp; > + sa->inst.w2 =3D w2; > + } else if (sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) { > + struct cnxk_se_sess *priv; > + > + priv =3D get_sym_session_private_data( > + sess, cn10k_cryptodev_driver_id); > + priv->qp =3D qp; > + priv->cpt_inst_w2 =3D w2; > + } else cnXX_ca_meta_info_extract() supports SESSIONLESS case. But no support here. Is this expected? > + return -EINVAL; > + } else if (op_type =3D=3D RTE_CRYPTO_OP_TYPE_ASYMMETRIC) { > + if (sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) { > + struct rte_cryptodev_asym_session *asym_sess =3D sess; > + struct cnxk_ae_sess *priv; > + > + priv =3D (struct cnxk_ae_sess *)asym_sess- > >sess_private_data; > + priv->qp =3D qp; > + priv->cpt_inst_w2 =3D w2; > + } else > + return -EINVAL; > + } else > + return -EINVAL; > + > + return 0; > +} > + > +static inline int > +cn10k_ca_meta_info_extract(struct rte_crypto_op *op, > + struct cnxk_cpt_qp **qp, uint64_t *w2) { > + if (op->type =3D=3D RTE_CRYPTO_OP_TYPE_SYMMETRIC) { > + if (op->sess_type =3D=3D RTE_CRYPTO_OP_SECURITY_SESSION) { > + struct cn10k_sec_session *priv; > + struct cn10k_ipsec_sa *sa; > + > + priv =3D get_sec_session_private_data(op->sym- > >sec_session); > + sa =3D &priv->sa; > + *qp =3D sa->qp; > + *w2 =3D sa->inst.w2; > + } else if (op->sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) { > + struct cnxk_se_sess *priv; > + > + priv =3D get_sym_session_private_data( > + op->sym->session, > cn10k_cryptodev_driver_id); > + *qp =3D priv->qp; > + *w2 =3D priv->cpt_inst_w2; > + } else { > + union rte_event_crypto_metadata *ec_mdata; > + struct rte_event *rsp_info; > + uint8_t cdev_id; > + uint16_t qp_id; > + > + ec_mdata =3D (union rte_event_crypto_metadata *) > + ((uint8_t *)op + op->private_data_offset); > + if (!ec_mdata) > + return -EINVAL; > + rsp_info =3D &ec_mdata->response_info; > + cdev_id =3D ec_mdata->request_info.cdev_id; > + qp_id =3D ec_mdata->request_info.queue_pair_id; > + *qp =3D rte_cryptodevs[cdev_id].data- > >queue_pairs[qp_id]; > + *w2 =3D CNXK_CPT_INST_W2( > + (RTE_EVENT_TYPE_CRYPTODEV << 28) | > rsp_info->flow_id, > + rsp_info->sched_type, rsp_info->queue_id, 0); > + } > + } else if (op->type =3D=3D RTE_CRYPTO_OP_TYPE_ASYMMETRIC) { > + if (op->sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) { > + struct rte_cryptodev_asym_session *asym_sess; > + struct cnxk_ae_sess *priv; > + > + asym_sess =3D op->asym->session; > + priv =3D (struct cnxk_ae_sess *)asym_sess- > >sess_private_data; > + *qp =3D priv->qp; > + *w2 =3D priv->cpt_inst_w2; > + } else > + return -EINVAL; > + } else > + return -EINVAL; > + > + return 0; > +} > + > +uint16_t > +cn10k_cpt_crypto_adapter_enqueue(uintptr_t tag_op, struct rte_crypto_op > +*op) { > + struct cpt_inflight_req *infl_req; > + uint64_t lmt_base, lmt_arg, w2; > + struct cpt_inst_s *inst; > + struct cnxk_cpt_qp *qp; > + uint16_t lmt_id; > + int ret; > + > + ret =3D cn10k_ca_meta_info_extract(op, &qp, &w2); > + if (unlikely(ret)) { > + rte_errno =3D EINVAL; > + return 0; > + } >=20 > if (unlikely(!qp->ca.enabled)) { > rte_errno =3D EINVAL; > @@ -316,9 +422,7 @@ cn10k_cpt_crypto_adapter_enqueue(uintptr_t tag_op, > struct rte_crypto_op *op) > infl_req->qp =3D qp; > inst->w0.u64 =3D 0; > inst->res_addr =3D (uint64_t)&infl_req->res; > - inst->w2.u64 =3D CNXK_CPT_INST_W2( > - (RTE_EVENT_TYPE_CRYPTODEV << 28) | rsp_info->flow_id, > - rsp_info->sched_type, rsp_info->queue_id, 0); > + inst->w2.u64 =3D w2; > inst->w3.u64 =3D CNXK_CPT_INST_W3(1, infl_req); >=20 > if (roc_cpt_is_iq_full(&qp->lf)) { > @@ -327,7 +431,7 @@ cn10k_cpt_crypto_adapter_enqueue(uintptr_t tag_op, > struct rte_crypto_op *op) > return 0; > } >=20 > - if (!rsp_info->sched_type) > + if (inst->w2.s.tt =3D=3D RTE_SCHED_TYPE_ORDERED) > roc_sso_hws_head_wait(tag_op); >=20 > lmt_arg =3D ROC_CN10K_CPT_LMT_ARG | (uint64_t)lmt_id; @@ -592,4 > +696,6 @@ struct rte_cryptodev_ops cn10k_cpt_ops =3D { > .asym_session_configure =3D cnxk_ae_session_cfg, > .asym_session_clear =3D cnxk_ae_session_clear, >=20 > + /* Event crypto ops */ > + .session_ev_mdata_set =3D cn10k_cpt_crypto_adapter_ev_mdata_set, > }; > diff --git a/drivers/crypto/cnxk/cn10k_ipsec.h > b/drivers/crypto/cnxk/cn10k_ipsec.h > index 647a71cdd5..1c1d904799 100644 > --- a/drivers/crypto/cnxk/cn10k_ipsec.h > +++ b/drivers/crypto/cnxk/cn10k_ipsec.h > @@ -20,6 +20,8 @@ struct cn10k_ipsec_sa { > uint16_t iv_offset; > uint8_t iv_length; > bool is_outbound; > + /** Queue pair */ > + struct cnxk_cpt_qp *qp; >=20 > /** > * End of SW mutable area > diff --git a/drivers/crypto/cnxk/cn9k_cryptodev_ops.c > b/drivers/crypto/cnxk/cn9k_cryptodev_ops.c > index d3d441cb24..98fa97ef01 100644 > --- a/drivers/crypto/cnxk/cn9k_cryptodev_ops.c > +++ b/drivers/crypto/cnxk/cn9k_cryptodev_ops.c > @@ -316,28 +316,134 @@ cn9k_cpt_enqueue_burst(void *qptr, struct > rte_crypto_op **ops, uint16_t nb_ops) > return count; > } >=20 > -uint16_t > -cn9k_cpt_crypto_adapter_enqueue(uintptr_t tag_op, struct rte_crypto_op > *op) > +static int > +cn9k_cpt_crypto_adapter_ev_mdata_set(struct rte_cryptodev *dev > __rte_unused, > + void *sess, > + enum rte_crypto_op_type op_type, > + enum rte_crypto_op_sess_type sess_type, > + void *mdata) > { > - union rte_event_crypto_metadata *ec_mdata; > - struct cpt_inflight_req *infl_req; > + union rte_event_crypto_metadata *ec_mdata =3D mdata; > struct rte_event *rsp_info; > struct cnxk_cpt_qp *qp; > - struct cpt_inst_s inst; > uint8_t cdev_id; > uint16_t qp_id; > - int ret; > - > - ec_mdata =3D cnxk_event_crypto_mdata_get(op); > - if (!ec_mdata) { > - rte_errno =3D EINVAL; > - return 0; > - } > + uint64_t w2; >=20 > + /* Get queue pair */ > cdev_id =3D ec_mdata->request_info.cdev_id; > qp_id =3D ec_mdata->request_info.queue_pair_id; > qp =3D rte_cryptodevs[cdev_id].data->queue_pairs[qp_id]; > + > + /* Prepare w2 */ > rsp_info =3D &ec_mdata->response_info; > + w2 =3D CNXK_CPT_INST_W2( > + (RTE_EVENT_TYPE_CRYPTODEV << 28) | rsp_info->flow_id, > + rsp_info->sched_type, rsp_info->queue_id, 0); > + > + /* Set meta according to session type */ > + if (op_type =3D=3D RTE_CRYPTO_OP_TYPE_SYMMETRIC) { > + if (sess_type =3D=3D RTE_CRYPTO_OP_SECURITY_SESSION) { > + struct cn9k_sec_session *priv; > + struct cn9k_ipsec_sa *sa; > + > + priv =3D get_sec_session_private_data(sess); > + sa =3D &priv->sa; > + sa->qp =3D qp; > + sa->inst.w2 =3D w2; > + } else if (sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) { > + struct cnxk_se_sess *priv; > + > + priv =3D get_sym_session_private_data( > + sess, cn9k_cryptodev_driver_id); > + priv->qp =3D qp; > + priv->cpt_inst_w2 =3D w2; > + } else > + return -EINVAL; > + } else if (op_type =3D=3D RTE_CRYPTO_OP_TYPE_ASYMMETRIC) { > + if (sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) { > + struct rte_cryptodev_asym_session *asym_sess =3D sess; > + struct cnxk_ae_sess *priv; > + > + priv =3D (struct cnxk_ae_sess *)asym_sess- > >sess_private_data; > + priv->qp =3D qp; > + priv->cpt_inst_w2 =3D w2; > + } else > + return -EINVAL; > + } else > + return -EINVAL; > + > + return 0; > +} > + > +static inline int > +cn9k_ca_meta_info_extract(struct rte_crypto_op *op, > + struct cnxk_cpt_qp **qp, struct cpt_inst_s *inst) { > + if (op->type =3D=3D RTE_CRYPTO_OP_TYPE_SYMMETRIC) { > + if (op->sess_type =3D=3D RTE_CRYPTO_OP_SECURITY_SESSION) { > + struct cn9k_sec_session *priv; > + struct cn9k_ipsec_sa *sa; > + > + priv =3D get_sec_session_private_data(op->sym- > >sec_session); > + sa =3D &priv->sa; > + *qp =3D sa->qp; > + inst->w2.u64 =3D sa->inst.w2; > + } else if (op->sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) { > + struct cnxk_se_sess *priv; > + > + priv =3D get_sym_session_private_data( > + op->sym->session, cn9k_cryptodev_driver_id); > + *qp =3D priv->qp; > + inst->w2.u64 =3D priv->cpt_inst_w2; > + } else { > + union rte_event_crypto_metadata *ec_mdata; > + struct rte_event *rsp_info; > + uint8_t cdev_id; > + uint16_t qp_id; > + > + ec_mdata =3D (union rte_event_crypto_metadata *) > + ((uint8_t *)op + op->private_data_offset); > + if (!ec_mdata) > + return -EINVAL; > + rsp_info =3D &ec_mdata->response_info; > + cdev_id =3D ec_mdata->request_info.cdev_id; > + qp_id =3D ec_mdata->request_info.queue_pair_id; > + *qp =3D rte_cryptodevs[cdev_id].data- > >queue_pairs[qp_id]; > + inst->w2.u64 =3D CNXK_CPT_INST_W2( > + (RTE_EVENT_TYPE_CRYPTODEV << 28) | > rsp_info->flow_id, > + rsp_info->sched_type, rsp_info->queue_id, 0); > + } > + } else if (op->type =3D=3D RTE_CRYPTO_OP_TYPE_ASYMMETRIC) { > + if (op->sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) { > + struct rte_cryptodev_asym_session *asym_sess; > + struct cnxk_ae_sess *priv; > + > + asym_sess =3D op->asym->session; > + priv =3D (struct cnxk_ae_sess *)asym_sess- > >sess_private_data; > + *qp =3D priv->qp; > + inst->w2.u64 =3D priv->cpt_inst_w2; > + } else > + return -EINVAL; > + } else > + return -EINVAL; > + > + return 0; > +} > + > +uint16_t > +cn9k_cpt_crypto_adapter_enqueue(uintptr_t tag_op, struct rte_crypto_op > +*op) { > + struct cpt_inflight_req *infl_req; > + struct cnxk_cpt_qp *qp; > + struct cpt_inst_s inst; > + int ret; > + > + ret =3D cn9k_ca_meta_info_extract(op, &qp, &inst); > + if (unlikely(ret)) { > + rte_errno =3D EINVAL; > + return 0; > + } >=20 > if (unlikely(!qp->ca.enabled)) { > rte_errno =3D EINVAL; > @@ -362,9 +468,6 @@ cn9k_cpt_crypto_adapter_enqueue(uintptr_t tag_op, > struct rte_crypto_op *op) > infl_req->qp =3D qp; > inst.w0.u64 =3D 0; > inst.res_addr =3D (uint64_t)&infl_req->res; > - inst.w2.u64 =3D CNXK_CPT_INST_W2( > - (RTE_EVENT_TYPE_CRYPTODEV << 28) | rsp_info->flow_id, > - rsp_info->sched_type, rsp_info->queue_id, 0); > inst.w3.u64 =3D CNXK_CPT_INST_W3(1, infl_req); >=20 > if (roc_cpt_is_iq_full(&qp->lf)) { > @@ -373,7 +476,7 @@ cn9k_cpt_crypto_adapter_enqueue(uintptr_t tag_op, > struct rte_crypto_op *op) > return 0; > } >=20 > - if (!rsp_info->sched_type) > + if (inst.w2.s.tt =3D=3D RTE_SCHED_TYPE_ORDERED) > roc_sso_hws_head_wait(tag_op); >=20 > cn9k_cpt_inst_submit(&inst, qp->lmtline.lmt_base, qp- > >lmtline.io_addr); @@ -613,4 +716,7 @@ struct rte_cryptodev_ops > cn9k_cpt_ops =3D { > .asym_session_configure =3D cnxk_ae_session_cfg, > .asym_session_clear =3D cnxk_ae_session_clear, >=20 > + /* Event crypto ops */ > + .session_ev_mdata_set =3D cn9k_cpt_crypto_adapter_ev_mdata_set, > + > }; > diff --git a/drivers/crypto/cnxk/cn9k_ipsec.h > b/drivers/crypto/cnxk/cn9k_ipsec.h > index f3acad561b..499dbc2782 100644 > --- a/drivers/crypto/cnxk/cn9k_ipsec.h > +++ b/drivers/crypto/cnxk/cn9k_ipsec.h > @@ -42,6 +42,8 @@ struct cn9k_ipsec_sa { > struct cnxk_on_ipsec_ar ar; > /** Anti replay window size */ > uint32_t replay_win_sz; > + /** Queue pair */ > + struct cnxk_cpt_qp *qp; > }; >=20 > struct cn9k_sec_session { > diff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.= h > index 01ccfcd334..10854c79c8 100644 > --- a/drivers/crypto/cnxk/cnxk_ae.h > +++ b/drivers/crypto/cnxk/cnxk_ae.h > @@ -22,6 +22,8 @@ struct cnxk_ae_sess { > uint64_t *cnxk_fpm_iova; > struct roc_ae_ec_group **ec_grp; > uint64_t cpt_inst_w7; > + uint64_t cpt_inst_w2; > + struct cnxk_cpt_qp *qp; > }; >=20 > static __rte_always_inline void > diff --git a/drivers/crypto/cnxk/cnxk_cryptodev_ops.h > b/drivers/crypto/cnxk/cnxk_cryptodev_ops.h > index ab0f00ee7c..7ece0214dc 100644 > --- a/drivers/crypto/cnxk/cnxk_cryptodev_ops.h > +++ b/drivers/crypto/cnxk/cnxk_cryptodev_ops.h > @@ -125,24 +125,6 @@ int cnxk_ae_session_cfg(struct rte_cryptodev *dev, > struct rte_cryptodev_asym_session *sess); void > cnxk_cpt_dump_on_err(struct cnxk_cpt_qp *qp); >=20 > -static inline union rte_event_crypto_metadata * - > cnxk_event_crypto_mdata_get(struct rte_crypto_op *op) -{ > - union rte_event_crypto_metadata *ec_mdata; > - > - if (op->sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) > - ec_mdata =3D rte_cryptodev_sym_session_get_user_data( > - op->sym->session); > - else if (op->sess_type =3D=3D RTE_CRYPTO_OP_SESSIONLESS && > - op->private_data_offset) > - ec_mdata =3D (union rte_event_crypto_metadata > - *)((uint8_t *)op + op->private_data_offset); > - else > - return NULL; > - > - return ec_mdata; > -} > - > static __rte_always_inline void > pending_queue_advance(uint64_t *index, const uint64_t mask) { diff --gi= t > a/drivers/crypto/cnxk/cnxk_se.h b/drivers/crypto/cnxk/cnxk_se.h index > e988d57b94..b11c2bb3a2 100644 > --- a/drivers/crypto/cnxk/cnxk_se.h > +++ b/drivers/crypto/cnxk/cnxk_se.h > @@ -33,6 +33,8 @@ struct cnxk_se_sess { > uint16_t auth_iv_offset; > uint32_t salt; > uint64_t cpt_inst_w7; > + uint64_t cpt_inst_w2; > + struct cnxk_cpt_qp *qp; > struct roc_se_ctx roc_se_ctx; > } __rte_cache_aligned; >=20 > -- > 2.25.1