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 E7838A034F; Mon, 7 Feb 2022 09:41:47 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7DDD240DDA; Mon, 7 Feb 2022 09:41:47 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id B6FB14069D for ; Mon, 7 Feb 2022 09:41:45 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 216LGVD5012920; Mon, 7 Feb 2022 00:41:41 -0800 Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2049.outbound.protection.outlook.com [104.47.73.49]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3e2p3m9k5p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 07 Feb 2022 00:41:41 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FmXU6S0brd/1i0/qBtls5wB8UrfZ1sQ9kt1xlrLHtizXz/sMgVp4GCW5JGBmkVVJN3Thb0EBiecuO0z6qm8jbFrK4Is8QnkCBRVPIjkVVy11J5nNhr9UBo7aRm7ix9ZvFZe/PpvyY7CrsCo+twupe+bFQ0//Y1BuHCTROn/eRZW4h9n8Pk1Gq6eRZjhIuefm8i6zoQssu43Bs04fhUS2R2+4/NhAn7BIZGNKOz2kag7hXp9l5OIJgOiBTkbxCPAntVPWKttPLTI5h+JfdHE5QK5Omy34Lq+XXhBDOyJJbD0cicQNjCk1tzf0pAYS4cbAIXO80c/MnbzD0tIQu3GJ0w== 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=LYQwPFQLh4UtFJ8ZtvhGRXC+jym9OEhS1SElOputiw0=; b=AyaS1hh/7FUZasdxWkyk6OOqApogs+50P9KsCces+Q6CZZ4GtoV012Ez7WyxUIBGlvht6KUtuY+Zxr7EdR//f9FpHFTFZ5qEEZQW1MjRIVBxkAcyy0ONVGkgCiVb4d6thnmLEZQ+SDM8U91UGmQq82S/mAq8oyJ1tlYuqxtteazlB8iFcpVwMmWWNHUX9nZdrd7oHCuZzvvx9CTwRlX94Wr6U6cQOipbiU5rTWgHn9+DdeIrHSmLfAqzWTP6NIYxDG2if/slNnv8UjS+LzDRQUPQcDrWCaJqW55fucCQ22csxJEncDvVJ/60IwLIHDbHLGCir7mBaeZBetqLcDoB9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LYQwPFQLh4UtFJ8ZtvhGRXC+jym9OEhS1SElOputiw0=; b=c5nIMiyr8DTCCHzFfEmThFJm0B9ft1KlS3Ig4MYWsmbaGSq/3Y1AzJYTP7jYi67xmJ5fGYoIffYSzVHS9m/Oqq70Bdhyns/GQXRZ0E5Nv2xH8KktFxsvQVfUt5FaxLACiktiz37k7nSXTlNvEK6/Tnq2kO1rn3EN6RnnWdtlzZs= Received: from CO6PR18MB4484.namprd18.prod.outlook.com (2603:10b6:5:359::9) by MWHPR1801MB1885.namprd18.prod.outlook.com (2603:10b6:301:66::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.18; Mon, 7 Feb 2022 08:41:39 +0000 Received: from CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::9985:c3ca:2f91:7fc]) by CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::9985:c3ca:2f91:7fc%5]) with mapi id 15.20.4951.019; Mon, 7 Feb 2022 08:41:39 +0000 From: Akhil Goyal To: Ciara Power , "dev@dpdk.org" CC: "roy.fan.zhang@intel.com" , Anoob Joseph , "mdr@ashroe.eu" , Declan Doherty Subject: RE: [EXT] [PATCH v3 3/4] crypto: add asym session user data API Thread-Topic: [EXT] [PATCH v3 3/4] crypto: add asym session user data API Thread-Index: AQHYGRfl7dahtQM/BUCPC6vWOtirMayHxqYQ Date: Mon, 7 Feb 2022 08:41:39 +0000 Message-ID: References: <20220203160449.1638311-1-ciara.power@intel.com> <20220203160449.1638311-4-ciara.power@intel.com> In-Reply-To: <20220203160449.1638311-4-ciara.power@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1e69d490-d0fd-47bb-9f65-08d9ea15a896 x-ms-traffictypediagnostic: MWHPR1801MB1885:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5516; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: EbswxihPJyXb6/UfU83/mdTCs7P79oCzMPRyJ+rby1X9rzL5jPO4M2LPGgflubAzD+g8+BLpomw8KqHu9oWoKhfh3zizyPpRPckSDufXG6RWVm2414vL8+SyooEaemYaSebYR1hnz5FOmdAKX5Ps1KE6fPDk3H9SM6o+WUMGw8I/MaQ+VWVr2H+UqW5qo2wV+JeA6sqMnXrZrMehaOrerGM53yHs5InZHldu6xfhrwT5gcNwzPUGVSD6r1UORC9lI1BGwy4FhdvLcBvwQGBdIrK3LrX3AeufvexMf4XqkVMDGJVP+uAUrmABnBJXzghj43uOMy2uKFb6EBNpWLmq/D9EgRsAXrPlttB/Ka/7yTbUzjRoqP2lyURq2IPdDwVSBK7foZE2y44HYlsWnc64t083GSjztIvYHu6myjXFtoeuMMAUW7kdMnc/iHxbvrw1Mbs92F1GMfnUyOoppUbSjwCCTbdAWrZQxRUpj98u4LT8d2HsWG7cC2+fFOQVIFLl8aXdkWxDxgboLrWlk+pCsf8hqP1ABJ4FKXtgmgmlmBcHp2vk8UBVGI5tl5gShGhCxzidHW9GB4omX/JOGJrqOnORI3xA900OaywRFhDOXidv7y3amxGNCS3S8C2VMOi2FVCr0zkAiCDc0FL0ma54F+jYNgIQy1IZ1Tqp87YD7NVzYXrv8/KaPDeOx0ij1+r6x1i0un8rLIPqyt1XuQCx/8X6qewuHLiNKPkzmBzZeno= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO6PR18MB4484.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(66476007)(66556008)(66946007)(64756008)(76116006)(54906003)(38070700005)(71200400001)(6506007)(38100700002)(66446008)(53546011)(508600001)(86362001)(8936002)(8676002)(4326008)(316002)(7696005)(110136005)(52536014)(55236004)(9686003)(5660300002)(30864003)(55016003)(122000001)(33656002)(26005)(186003)(2906002)(83380400001)(21314003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?XdKrO/YxFZv8uWHSLCBUe3eg7uwIk1Mpl6LPJWDpMf1MKsVj45mQEeHbRk1x?= =?us-ascii?Q?K3/wbKGY2aSMNtIiQ8JVODhXMVWJzBQe9LPoucUpD8C0xjfnHUoxiohHbzHW?= =?us-ascii?Q?bKTmEV5q0pFUyBTlNsrAaNxXL7iEH2wVAUvIZlCZy423wr6kxL1W7O0ooxZq?= =?us-ascii?Q?usdIjf7fsuV9cwG7Qr8NK9uqff8gIlw/b3Q3cpdxLhNMIAmknLiQgBytx8/y?= =?us-ascii?Q?1onCOyy+TMqWazCWdQp38jRDCBy3jqGOVVfO0WLwLLMUfcvNqnlkhJG6EZPv?= =?us-ascii?Q?mnNI4BFdBowR5jogO8ZFZIAcyGerMCM5ip5yAaYQbYZhyDWWYEXpHnz7yApO?= =?us-ascii?Q?YZmVMBrPa9fyaC5v+gWtBlYxlrt2gFHuKtuaQyezsijXWO0CTcy25WHqgMiV?= =?us-ascii?Q?/Nj0pV0jGDD5DrsRF5nUh4vSEjzscrRb9o4oVHtfyUIbeP60/m9drYLc1hOO?= =?us-ascii?Q?MNH0SyxrbHOWqR6VEKNNeA7U5zes8oOxppJZxYsGPNFhJarM9n+CfnUB8jNW?= =?us-ascii?Q?nq1llQEhJeOeLaHU9YQ33+EVIK3udzfgxogcfN/vJari/0mwSJKzqJ97J33B?= =?us-ascii?Q?dXT6etmpDj4JvzGU34Sl62Qd1AmVvt901qNdPD+gNtiGYXgqmElbalbPhw2A?= =?us-ascii?Q?aML/RdgREU+pGpbrvOr9GJMXfpXBtLf0Ru22He8A+jF04SCO6jUUAPl8rLqC?= =?us-ascii?Q?URP+x0Ad4H1hD5zgJDC5fvTP4Y8EjrM7LJuGwIWhZNZLJHxpAbFxNhlcWXRS?= =?us-ascii?Q?W6jF9VFCjye2t++vmqgZtqwXjhiapV8osXhLLNv4h9IsAFYPqpNUPMNtZ3ks?= =?us-ascii?Q?5Ul4CxNn1EiVnI7smI+AcXLJeXnZLCdeeswUR9npTaDylkyKOJoLFSJ4V0w9?= =?us-ascii?Q?AnNYJjk++vVJn/j/zkICdY6KF8VPNWAThcLz8BwhZ3G5mHPUhlQKRBw7dznd?= =?us-ascii?Q?Y+1ARKKn9po+8fS34447CzFEJreKTDpyCvw0WkPfpHoBuf5mHNx0x6gBRNGG?= =?us-ascii?Q?ZVBQ53DdFaXYrcGgVPxOKfv6qoQvF9IuLlAbgrmytvF3HOeM3ygJ7gM4x6zE?= =?us-ascii?Q?1Ojx5varItqeJK6FQ6MbeI503/U3yyEoZlaMaZV3CF3wmbJEipTn/wAMT1du?= =?us-ascii?Q?TllZdUw9QF0KpOhu19TGnOf2IKrllWYidaGDxAfO2PO0cWYWv0kYPYlU1nli?= =?us-ascii?Q?U+dAeOYcmPDimQ/6LB6mKig0jYoUH7jZ2k7irHUQDob0sLLr+mqAXI7fAtXv?= =?us-ascii?Q?2MAoXdFsDBR0fLWXY5QAykS5BvXUGj2ObkJK8ATwv9TiIwld38O4IC5bTt1O?= =?us-ascii?Q?d2Mj6AVx+0N22uWd+SYHmN6UAzQbF0hioWldbS/ONWdSFyR/TAE467RMYw5L?= =?us-ascii?Q?iMzkWfaR2thGrT0YXLsbCkn7sYpwZyOEyLA2b1jci8jBMzTucoBpOByQtDrT?= =?us-ascii?Q?w1htez72qAkmZVsRqtKJJh8wohV4/LslsV+GYg0DnRQPbiva9qlkotqV1k/d?= =?us-ascii?Q?LrfecIIvJcuwD1ImQl2gKlX85EBpeuRYNtctVQ5vUgZvSHz+TXihQhJy7YXl?= =?us-ascii?Q?cC4zOujzShA9IQ/dkCihk/2BydJjY96At853rbUGXaH2gHdQL2PkeyGpV1dy?= =?us-ascii?Q?KaDZtovuSUjmgfZ9Xg9ythc=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO6PR18MB4484.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1e69d490-d0fd-47bb-9f65-08d9ea15a896 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Feb 2022 08:41:39.2355 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: PppjThKgfzNSarRdN+j9RAei2x4KoaYP2S2DQ5p7VyhUzwKh5N8W7oqFqHj+UeLwJwdJGjWUrDCWBDkkNnMDBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1801MB1885 X-Proofpoint-ORIG-GUID: DnuIy8iFPBvtkwHk9yD86LUpr3s8QHKc X-Proofpoint-GUID: DnuIy8iFPBvtkwHk9yD86LUpr3s8QHKc X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-02-07_03,2022-02-03_01,2021-12-02_01 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 > -----Original Message----- > From: Ciara Power > Sent: Thursday, February 3, 2022 9:35 PM > To: dev@dpdk.org > Cc: roy.fan.zhang@intel.com; Akhil Goyal ; Anoob Jose= ph > ; mdr@ashroe.eu; Ciara Power > ; Declan Doherty > Subject: [EXT] [PATCH v3 3/4] crypto: add asym session user data API >=20 > External Email >=20 > ---------------------------------------------------------------------- > A user data field is added to the asymmetric session structure. > Relevant API added to get/set the field. >=20 > Signed-off-by: Ciara Power > Acked-by: Fan Zhang > Acked-by: Anoob Joseph >=20 > --- > v2: Corrected order of version map entries. > v3: > - Corrected formatting of struct comments. > - Added setting user data size in pool creation. > - Added documentation. > --- > app/test/test_cryptodev_asym.c | 2 +- > doc/guides/prog_guide/cryptodev_lib.rst | 21 ++++++++++++- > doc/guides/rel_notes/release_22_03.rst | 6 +++- > lib/cryptodev/cryptodev_pmd.h | 4 ++- > lib/cryptodev/rte_cryptodev.c | 40 ++++++++++++++++++++++--- > lib/cryptodev/rte_cryptodev.h | 34 ++++++++++++++++++++- > lib/cryptodev/rte_cryptodev_trace.h | 3 +- > lib/cryptodev/version.map | 2 ++ > 8 files changed, 102 insertions(+), 10 deletions(-) >=20 > diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asy= m.c > index f93f39af42..a81d6292f6 100644 > --- a/app/test/test_cryptodev_asym.c > +++ b/app/test/test_cryptodev_asym.c > @@ -897,7 +897,7 @@ testsuite_setup(void) > } >=20 > ts_params->session_mpool =3D > rte_cryptodev_asym_session_pool_create( > - "test_asym_sess_mp", TEST_NUM_SESSIONS * 2, 0, > + "test_asym_sess_mp", TEST_NUM_SESSIONS * 2, 0, 0, > SOCKET_ID_ANY); >=20 > TEST_ASSERT_NOT_NULL(ts_params->session_mpool, > diff --git a/doc/guides/prog_guide/cryptodev_lib.rst > b/doc/guides/prog_guide/cryptodev_lib.rst > index 56b19da3ae..62bd3577f5 100644 > --- a/doc/guides/prog_guide/cryptodev_lib.rst > +++ b/doc/guides/prog_guide/cryptodev_lib.rst > @@ -1110,6 +1110,25 @@ They operate on data buffer of type > ``rte_crypto_param``. >=20 > See *DPDK API Reference* for details on each rte_crypto_xxx_op_param str= uct >=20 > +Private user data > +~~~~~~~~~~~~~~~~~ > + > +Similar to symmetric above, asymmetric also has a set and get API that > provides a > +mechanism for an application to store and retrieve the private user data > information > +stored along with the crypto session. > + > +.. code-block:: c > + > + int rte_cryptodev_asym_session_set_user_data(void *sess, > + void *data, uint16_t size); > + > + void * rte_cryptodev_asym_session_get_user_data(void *sess); > + > +Please note the ``size`` passed to set API cannot be bigger than the pre= defined > +``user_data_sz`` when creating the session mempool, otherwise the functi= on > will > +return an error. Also when ``user_data_sz`` was defined as ``0`` when > +creating the session mempool, the get API will always return ``NULL``. > + > Asymmetric crypto Sample code > ----------------------------- >=20 > @@ -1166,7 +1185,7 @@ crypto operations is similar except change to > respective op and xform setup). > */ > asym_session_pool =3D rte_cryptodev_asym_session_pool_create( > "asym_session_pool", MAX_ASYM_SESSIONS, 0, 0, > - socket_id); > + 0, socket_id); >=20 > /* Configure the crypto device. */ > struct rte_cryptodev_config conf =3D { > diff --git a/doc/guides/rel_notes/release_22_03.rst > b/doc/guides/rel_notes/release_22_03.rst > index c4a25f54cd..1022f77828 100644 > --- a/doc/guides/rel_notes/release_22_03.rst > +++ b/doc/guides/rel_notes/release_22_03.rst > @@ -65,6 +65,10 @@ New Features > * Added AES-XCBC support in lookaside protocol (IPsec) for CN9K & CN10= K. > * Added AES-CMAC support in CN9K & CN10K. >=20 > +* **Added an API for private user data in asymmetric session.** > + > + An API was added for getting and setting an asymmetric session's user = data. > + Asymmetric crypto session > * **Added an API to retrieve event port id of ethdev Rx adapter.** >=20 > The new API ``rte_event_eth_rx_adapter_event_port_get()`` was added. > @@ -104,7 +108,7 @@ API Changes > and moved to ``cryptodev_pmd.h``, hiding it from applications. > A ``rte_cryptodev_asym_session_pool_create`` function was added to > create a mempool with element size to hold the generic asym session he= ader, > - along with the max size for a device private session data. > + along with the max size for a device private session data, and user da= ta size. > ``rte_cryptodev_asym_session_init`` was removed as this initialisation= is > now done by ``rte_cryptodev_asym_session_create``. >=20 > diff --git a/lib/cryptodev/cryptodev_pmd.h b/lib/cryptodev/cryptodev_pmd.= h > index d21db89837..a866440b0b 100644 > --- a/lib/cryptodev/cryptodev_pmd.h > +++ b/lib/cryptodev/cryptodev_pmd.h > @@ -636,7 +636,9 @@ __extension__ struct rte_cryptodev_asym_session { > /**< Session driver ID. */ > uint16_t max_priv_session_sz; > /**< Size of private session data used when creating mempool */ > - uint8_t padding[5]; > + uint16_t user_data_sz; > + /**< Session user data will be placed after sess_data */ > + uint8_t padding[3]; > uint8_t sess_private_data[0]; > }; >=20 > diff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptodev.= c > index a839abe34d..0d816ed4a9 100644 > --- a/lib/cryptodev/rte_cryptodev.c > +++ b/lib/cryptodev/rte_cryptodev.c > @@ -210,6 +210,8 @@ struct rte_cryptodev_sym_session_pool_private_data { > struct rte_cryptodev_asym_session_pool_private_data { > uint16_t max_priv_session_sz; > /**< Size of private session data used when creating mempool */ > + uint16_t user_data_sz; > + /**< Session user data will be placed after sess_private_data */ > }; >=20 > int > @@ -1803,7 +1805,7 @@ rte_cryptodev_sym_session_pool_create(const char > *name, uint32_t nb_elts, >=20 > struct rte_mempool * > rte_cryptodev_asym_session_pool_create(const char *name, uint32_t nb_elt= s, > - uint32_t cache_size, int socket_id) > + uint32_t cache_size, uint16_t user_data_size, int socket_id) > { > struct rte_mempool *mp; > struct rte_cryptodev_asym_session_pool_private_data *pool_priv; > @@ -1821,7 +1823,8 @@ rte_cryptodev_asym_session_pool_create(const char > *name, uint32_t nb_elts, > return NULL; > } >=20 > - obj_sz =3D rte_cryptodev_asym_get_header_session_size() + max_priv_sz; > + obj_sz =3D rte_cryptodev_asym_get_header_session_size() + max_priv_sz > + > + user_data_size; > obj_sz_aligned =3D RTE_ALIGN_CEIL(obj_sz, RTE_CACHE_LINE_SIZE); >=20 > mp =3D rte_mempool_create(name, nb_elts, obj_sz_aligned, cache_size, > @@ -1842,9 +1845,10 @@ rte_cryptodev_asym_session_pool_create(const > char *name, uint32_t nb_elts, > return NULL; > } > pool_priv->max_priv_session_sz =3D max_priv_sz; > + pool_priv->user_data_sz =3D user_data_size; >=20 > rte_cryptodev_trace_asym_session_pool_create(name, nb_elts, > - cache_size, mp); > + user_data_size, cache_size, mp); > return mp; > } >=20 > @@ -1958,12 +1962,13 @@ rte_cryptodev_asym_session_create(struct > rte_mempool *mp, uint8_t dev_id, > } >=20 > sess->driver_id =3D dev->driver_id; > + sess->user_data_sz =3D pool_priv->user_data_sz; > sess->max_priv_session_sz =3D pool_priv->max_priv_session_sz; >=20 > /* Clear device session pointer. > * Include the flag indicating presence of private data > */ > - memset(sess->sess_private_data, 0, session_priv_data_sz); > + memset(sess->sess_private_data, 0, session_priv_data_sz + sess- > >user_data_sz); >=20 > RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops- > >asym_session_configure, NULL); >=20 > @@ -2173,6 +2178,33 @@ rte_cryptodev_sym_session_get_user_data( > return (void *)(sess->sess_data + sess->nb_drivers); > } >=20 > +int > +rte_cryptodev_asym_session_set_user_data(void *session, void *data, > uint16_t size) > +{ > + struct rte_cryptodev_asym_session *sess =3D session; > + if (sess =3D=3D NULL) > + return -EINVAL; > + > + if (sess->user_data_sz < size) > + return -ENOMEM; > + > + rte_memcpy(sess->sess_private_data + > + sess->max_priv_session_sz, > + data, size); > + return 0; > +} > + > +void * > +rte_cryptodev_asym_session_get_user_data(void *session) > +{ > + struct rte_cryptodev_asym_session *sess =3D session; > + if (sess =3D=3D NULL || sess->user_data_sz =3D=3D 0) > + return NULL; > + > + return (void *)(sess->sess_private_data + > + sess->max_priv_session_sz); > +} > + > static inline void > sym_crypto_fill_status(struct rte_crypto_sym_vec *vec, int32_t errnum) > { > diff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.= h > index af328de896..6a4d6d9934 100644 > --- a/lib/cryptodev/rte_cryptodev.h > +++ b/lib/cryptodev/rte_cryptodev.h > @@ -959,6 +959,8 @@ rte_cryptodev_sym_session_pool_create(const char > *name, uint32_t nb_elts, > * The number of elements in the mempool. > * @param cache_size > * The number of per-lcore cache elements > + * @param user_data_size > + * The size of user data to be placed after session private data. > * @param socket_id > * The *socket_id* argument is the socket identifier in the case of > * NUMA. The value can be *SOCKET_ID_ANY* if there is no NUMA > @@ -971,7 +973,7 @@ rte_cryptodev_sym_session_pool_create(const char > *name, uint32_t nb_elts, > __rte_experimental > struct rte_mempool * > rte_cryptodev_asym_session_pool_create(const char *name, uint32_t nb_elt= s, > - uint32_t cache_size, int socket_id); > + uint32_t cache_size, uint16_t user_data_size, int socket_id); >=20 > /** > * Create symmetric crypto session header (generic with no private data) > @@ -1213,6 +1215,36 @@ void * > rte_cryptodev_sym_session_get_user_data( > struct rte_cryptodev_sym_session > *sess); >=20 > +/** > + * Store user data in an asymmetric session. > + * > + * @param sess Session pointer allocated by > + * *rte_cryptodev_asym_session_create*. > + * @param data Pointer to the user data. > + * @param size Size of the user data. > + * > + * @return > + * - On success, zero. > + * - On failure, a negative value. Can we specify expected error numbers here. > + */ > +__rte_experimental > +int > +rte_cryptodev_asym_session_set_user_data(void *sess, void *data, uint16_= t > size); > + > +/** > + * Get user data stored in an asymmetric session. > + * > + * @param sess Session pointer allocated by > + * *rte_cryptodev_asym_session_create*. > + * > + * @return > + * - On success return pointer to user data. > + * - On failure returns NULL. > + */ > +__rte_experimental > +void * > +rte_cryptodev_asym_session_get_user_data(void *sess); > + > /** > * Perform actual crypto processing (encrypt/digest or auth/decrypt) > * on user provided data. > diff --git a/lib/cryptodev/rte_cryptodev_trace.h > b/lib/cryptodev/rte_cryptodev_trace.h > index 82ef876c72..0980c7d7af 100644 > --- a/lib/cryptodev/rte_cryptodev_trace.h > +++ b/lib/cryptodev/rte_cryptodev_trace.h > @@ -86,9 +86,10 @@ RTE_TRACE_POINT( > RTE_TRACE_POINT( > rte_cryptodev_trace_asym_session_pool_create, > RTE_TRACE_POINT_ARGS(const char *name, uint32_t nb_elts, > - uint32_t cache_size, void *mempool), > + uint16_t user_data_size, uint32_t cache_size, void *mempool), > rte_trace_point_emit_string(name); > rte_trace_point_emit_u32(nb_elts); > + rte_trace_point_emit_u16(user_data_size); > rte_trace_point_emit_u32(cache_size); > rte_trace_point_emit_ptr(mempool); > ) > diff --git a/lib/cryptodev/version.map b/lib/cryptodev/version.map > index eaea976f21..3528aa44b1 100644 > --- a/lib/cryptodev/version.map > +++ b/lib/cryptodev/version.map > @@ -103,7 +103,9 @@ EXPERIMENTAL { > rte_cryptodev_remove_enq_callback; >=20 > # added 22.03 > + rte_cryptodev_asym_session_get_user_data; > rte_cryptodev_asym_session_pool_create; > + rte_cryptodev_asym_session_set_user_data; > __rte_cryptodev_trace_asym_session_pool_create; > }; >=20 > -- > 2.25.1