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 DD145A0093; Mon, 2 May 2022 13:07:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CC7D6410FC; Mon, 2 May 2022 13:07:25 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 7032F40E28 for ; Mon, 2 May 2022 13:07:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651489643; x=1683025643; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=qYUXK7vPYCpdlbms6+27c250FQgiHXxtmjLukUBPIzs=; b=cM3PS9zozlk9M42VfoBfzfQBdAkl98NacQL+2Ym7vVFE3119/jDdBlVu 2DO0N9vT44/zS/En8gNyqvSytdVO0bNv+d/tXJHHULmrxDA5jAlMCxgFI q41iigsB0bmnT0f0lTa/ghcPQxz6SoIn+VQkS9wT/jQkaTUF76FqzoTu0 9bsknH8d7ccNUsU5dT5FwcyygV3BGgvDpwmwPr0ZE5RF7Kr22u/JnkaVS eC+1aCEnGJwtlrqC0QMjUKdJ7tSbVR6vLaCHzruDcgdBEXvvqXBwiTer9 4A0LN/1ymW3lwzf2CGV1pi6vun2ITfQJXjFPFUtmWbO4cl56gWnHpUgPD Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10334"; a="292360604" X-IronPort-AV: E=Sophos;i="5.91,190,1647327600"; d="scan'208";a="292360604" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 04:07:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,190,1647327600"; d="scan'208";a="535799780" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by orsmga006.jf.intel.com with ESMTP; 02 May 2022 04:07:22 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 2 May 2022 04:07:21 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 2 May 2022 04:07:21 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Mon, 2 May 2022 04:07:21 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.175) 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; Mon, 2 May 2022 04:07:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d8fLUjPMEJfRJQeNzkabp+Gs00J4gyNzLPvw+Y+824CjKgAHI9iPIiKtXNZRykNgXaLnMu5ac0YHSumtLijiqkpJE7YhgwXaGrvIBCEA/DfAMHeE4Fg/V6u4mSCqcR3GoUatdWi7dsp9Qfz55N6t8DsMq70CVQFWfTS9D9mL83zW+W/T3QfaUhSdIcQeKxmerVYglO8sLwtnqewh82GWby86CpCuoWfBM9iNzdRtyu+CRSpjsPJy5Op+VVjxk63AT4QWdT2z/t/7ymtrrclvjCH6+zZbHiasKXn0WCsfA/yE/0pY3xzkf3jSdw6RbhfYRhBubA+M0Ct7Jv5CtpESAg== 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=saxaQwCO1AC/5muIyAV9eSDcYfRMPnATe8dCGdYHR7s=; b=mDd10dPunlWjbR9ValLXJXUR2LSZOv27qe9NkTBSz417OL0fLWVMhB0cr94eqAQ7WFZBvbju1qb/LWJnzRh9Ea4n1KDI8LY3VpR5ogWTZNegbBDencA4vw8/9mCMQeWkSUmRZx+mNQmOpUD8KRTkLpG+OXPKh/SMk6geecetk5sN162HsIP6YlPIePOFXTr1FNgkpJkoAXkNtCsAQ9mJCFzCbua1aFDC82b2mF9mb8qBpuhd5d0TYgMkSnoBTJQJMjcU4GNogLSfPqxkCIKfAhDfhH0MQQboSx+CZvSDu99/6uP+XVS7SgXlxTfvVShqzjpv4uFLIg9MANSpd2kmGg== 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 DM6PR11MB2617.namprd11.prod.outlook.com (2603:10b6:5:ce::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Mon, 2 May 2022 11:07:12 +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; Mon, 2 May 2022 11:07:11 +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" , "Zhang, Roy Fan" Subject: RE: [PATCH v4 2/7] crypto/cnxk: add event metadata set operation Thread-Topic: [PATCH v4 2/7] crypto/cnxk: add event metadata set operation Thread-Index: AQHYXZE3U5KC7g6PpEOmb7KptNEc/a0LbmTA Date: Mon, 2 May 2022 11:07:11 +0000 Message-ID: References: <20220421143720.1583062-1-gakhil@marvell.com> <20220501192457.3670278-1-gakhil@marvell.com> <20220501192457.3670278-3-gakhil@marvell.com> In-Reply-To: <20220501192457.3670278-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: 442bb23f-df91-4c47-4da9-08da2c2be84c x-ms-traffictypediagnostic: DM6PR11MB2617: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: W81crr3u3rULoowG4D2Hezn/5HsWgSA5IRYaL+ekAKkU+7jv0KPid6qB1FWWAgdsfAXDA8DGmTWZdXZd30E+iiAlFv8XnzOQ89Yv+GXKVpr9RxeOuRtOxpkco9gcQDLe85j3+pU913HbgmxaPHFkKqrPnwRBQaIesNJttPaZ0oKJOhp6xZ6Kxzyvaxu+T9lS0BUD9Zlkidq9OKxsNfenlYa1kbwJf7jbDtZK3W3aHb4GDzuYls/M4s9dUmipEdynpmDdWEwKF5nY/JLucsOKFYxlxBkW7344os0H+02Ml4ywm7OI43l8QbznRZqoWC6JGfD0AROxFCAvAgW/q1uwQ5Ld7m2UJD7UQLNL8HdmAVdOuw54MlRgG32pm8wJoLEn1Lup2+NryG6mqquBSc9EE5DwOENBUD9FIInKSMQgnmRrrY4bjjF4GHUtVzuVUSOiDvPDSyWUDd8cudomEilCMufqhW64xXA5hBaJj0TcTjzKZLjgFF66VXwx5rh9+TSIWqU7HuQTD4iDzd4aknp8ZgJxnxrsLli4R06atkeROJi1YivGzBjAtsRbMywSSABfMNdgXQfoRxQwdcrz7j7HK0hP/erlTRPk72VFWpjehPskbMGW5QccRuc5XV08DARlT6MZ/x5vI2p5g+gDsynoVsFP/LWkrqaP3WY2n1NaMfD3nnjKtLP3dCk5bjucbfcgdFMthuz/hMW3Hs9EKvFvvQ== 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)(110136005)(86362001)(33656002)(8676002)(66556008)(4326008)(66476007)(66946007)(76116006)(64756008)(508600001)(66446008)(55016003)(71200400001)(54906003)(316002)(38100700002)(38070700005)(2906002)(83380400001)(186003)(8936002)(107886003)(5660300002)(9686003)(6506007)(7696005)(122000001)(26005)(53546011)(82960400001)(52536014)(30864003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?0eQwkfM4NsytlAqG+Z/amNQK1AHUDCoItA05xoxAaTF1Q4hGGs5CIKzzsb2e?= =?us-ascii?Q?6/wAx3VLL97g71Jd6a/LVtCUOFGYLkl8nnePXki+zndpE03GtAgZUJQk/dYw?= =?us-ascii?Q?jA32626EnrwCYkUV2YI528LUi0tH9Y93MFpeYPk6n2CRbPYeWAqQ7Z1eiOO0?= =?us-ascii?Q?NcFkrXEChEDyyk/2od9szQkhSh9SWkar6XSlCpDJxTJ492QZAvQcta9Tl5Mb?= =?us-ascii?Q?5MdnQJPPoolEFCAQeCr9Yf9pDNx2ec7dIqIWKm3GSZA3hBPxtTyWJ7y2KcQ5?= =?us-ascii?Q?KBQCJutmw39vbtjGjw0kDNceA3vkB06HXm7a1zvvBZxX354ffEjDlbLU4Fb1?= =?us-ascii?Q?579f2zaiPwciPSt3w48vfjSTszs/g3gWIMywU+vPw8EQ0Vx7UWH0RJIqUAvH?= =?us-ascii?Q?8E6wh7RxAJWwWG331FvCIMa9rgx+140K9LTuXttBDtnsExz0dqyuB0jV3y6G?= =?us-ascii?Q?dJwbPKzyQ3rE9VKnHw89hP4u5j/8ScVfbUoCBxy1NjyEj1nHIeelP7Ns7Viy?= =?us-ascii?Q?tqltkl8X/4QWYw3obRHImsieonfbNQzlHA0E/Gkgbbn8zfW5NZeC7Yfds7bW?= =?us-ascii?Q?+otpSqjemKNFz3x96gF8ZcKT6U7/e1zFdKLd9fO5qi/At0PGQl9XqYHd9kTk?= =?us-ascii?Q?vF0dgWN0/T6LZZ8JhOvzTBJ4XTVGaGDqxvplHlvrhTROhV7aIK0hNMFtfadw?= =?us-ascii?Q?KfAxe9kS0lBwWPYLGzQW1vSwB1peoN/PqfnibfnujYvi2e2u/tM/YpnN9qSR?= =?us-ascii?Q?AMCZFOJ0DPdhg71RpdJr2FlTNXTcNRmMmKzLrFahnNd3qMTZGvjjmyfzRUbe?= =?us-ascii?Q?wZPqwf1uv8WGz4m2ncWs9uQHRhXg46gapNwa54DTH25ihHsVxfoYZUnERdDB?= =?us-ascii?Q?UNqIgEZzZsyrVdGW4rUCnjDjhM0YAdu2/PQ7HN0gFUxdZXgfmOnAwPllysDD?= =?us-ascii?Q?j+lTgeK1v4RPNuG1MynFckYSFtPJW4HABX7jAHX8w47t59uiu/GBYzScJv5a?= =?us-ascii?Q?UAjkvxvaN7ok48IPqH2ZEy2TMLraPQdJTa+lhlEaWuoTJlRVuxJMAtGA3+Ny?= =?us-ascii?Q?do+N42UNKklp/AJ2XTPu0KxKUxWWYTjrMM379X9EwrQnlquTSTwkEhIUh1h2?= =?us-ascii?Q?9h9gHiVZtkfYM2VGbH8mCqfdNYBYrxf9GzaIj8DkDFJMd1dDdpcNw9czLify?= =?us-ascii?Q?KOgEIoe8uXg2O9wsp1Y47FJ5kWla0omGQ+NSLYCM9S3fGeadp3ezYoUxHNIp?= =?us-ascii?Q?H5LqvzzNvfoxsCLLU+H5vZaAMeMGHcNdu2Akz2K9eVFGmNO3QSt8lz+ncq4L?= =?us-ascii?Q?AxigcQ5qq/SG9r0pdipTgTm7BxdEYFZHD6Dfx1Jf64hZIYWqgpwu+zYdh+Xy?= =?us-ascii?Q?CMSwvvYrRsCg4PTGV41o62mzrFN6G24SsXswx9CpwinYOA7+PJwtLrLxW0Md?= =?us-ascii?Q?eaRIxGueQLbaxYRcSrZG6CDlh3ZyGnMjsveN/Y6umMQ/tW+3keX1t3MH3mZI?= =?us-ascii?Q?TlZ0OisTAspvJRnmaA8kdRjmSKY42x3TfsZhTvcbyuUjTgOMrq2JyuPSPOhz?= =?us-ascii?Q?3XuKI8361t/pXZVko5Fw8raAwfsXj59eZm07O/RqXJImFJucc/OjYI+rMnjv?= =?us-ascii?Q?izBDpPImUQe6s3kHQew3oRQxc7+sg1tP4ShtLF7TjBSe/tTT1WGYgiJaeUG7?= =?us-ascii?Q?wyVcncLACt59FUSs6L8AS9fE/X1be2UM1LK4j57S4fg0cIfKSLfTScwkQRL1?= =?us-ascii?Q?eH0Ond4Cb2vSQAhSr0yAWVP81goGesI=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: 442bb23f-df91-4c47-4da9-08da2c2be84c X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2022 11:07:11.8564 (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: mYgQ018yn6zNVIF3erOItGL8jPsrGiDW7D9KVkX6mwCqcwRRPK9D71c/Z/hi2YnUCEKMKgn4bYeFiyO3hkGFP4QF7blQNl9YQDINhvKNs8s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB2617 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: Monday, May 2, 2022 12:55 AM > To: dev@dpdk.org > Cc: anoobj@marvell.com; jerinj@marvell.com; Gujjar, Abhinandan S > ; Jayatheerthan, Jay > ; Vangati, Narender > ; vfialko@marvell.com; Akhil Goyal > ; Zhang, Roy Fan ; Gujjar, > Abhinandan S > Subject: [PATCH v4 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 > Acked-by: Fan Zhang > Acked-by: Abhinandan Gujjar > --- > 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 > + 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 > ce7ca2eda9..a339b80a87 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