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 54E5DA04FF; Fri, 29 Apr 2022 14:16:45 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EB330415D7; Fri, 29 Apr 2022 14:16:44 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 602F6410E3 for ; Fri, 29 Apr 2022 14:16:43 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 23TB9B4q005169; Fri, 29 Apr 2022 05:16:42 -0700 Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2175.outbound.protection.outlook.com [104.47.55.175]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3fqpvy5sf1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 29 Apr 2022 05:16:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N/woHjizwc+DRnLpSHoS1m9ait3Ugxw5lOfpxsnI4Lamma95Y3Urm9WEvUpVHAGTUwkkccePwNNRw1To4oZcWxurbeQRYkUUC8ubqNi/efaA3cohqJn6Jan2PJzUeLh/OA98uszV+oJytfeuephpZjjfkAk2PrP8xWw/EMyYZ28hjwOvghcsaEC1/DAoRIc9FObSAykWVXjHjFmuV3LO3lTNdVHn1a4qH23XBCTlW0uH2h09VpGafUdrO9jtKw4sFR9fpI2NoZRu+NM7sj1eUNgvI4yzX/9hEFconPtybJDvwVgRwrhaOJI02hizT4PIdztO1f3Ri5zN+yvCBmoe8A== 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=NmL0IZRaEwpmic5NpR7LTq1ZCPGqm3bJ6fjBvfBQx2I=; b=FHtcYhfOFhWkYv+Ae0/sR3wxzg32uEH+xeB/jyKAcCBLmuB+On4E6DKQl1YZ1ugnlZNRAaf3HfLkw5ddtN/L7hNjXBPXn3L4cU+7bnsW5SHYZDatjCWtPY3jpDP1shpw7wtJ37K+KIDTBaL7q5evaT1P1IZqEXHMJjbn/pHdtwwy9jl/Bcu4by86g5P7HzmDmBKFF0h989TjXe1qMhp//KekdWyZvTL4+YeObOTmGh5jwoZ2nSIsNRH135s3cVW1qWP3S6hP9rvOgVbCNnNoBClUIfPA+fshx4G9uYURgRudQVpy3aLQx3pt4WnC+YbNfseLSYa/7+Rmu5wXFUwjjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; 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=NmL0IZRaEwpmic5NpR7LTq1ZCPGqm3bJ6fjBvfBQx2I=; b=pBAlO8ckxUyvYmDvDuSvhKLktB99IG5tBDvGZk2uCnyHWcBcMf3We8zEDc0d429eg2BDtLcGyDv9zdB0t//yfWBI8c693WEskQnffytrPV/FOhYnUzq9EnpmxFTsvFlEz+POhWNIiqidhzSPoZ+FKBFA8A1mLVdaH+BeXGoUC28= Received: from CO6PR18MB4484.namprd18.prod.outlook.com (2603:10b6:5:359::9) by MWHPR18MB1040.namprd18.prod.outlook.com (2603:10b6:300:98::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Fri, 29 Apr 2022 12:16:40 +0000 Received: from CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::a0df:8676:6ad2:4338]) by CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::a0df:8676:6ad2:4338%7]) with mapi id 15.20.5206.014; Fri, 29 Apr 2022 12:16:39 +0000 From: Akhil Goyal To: "Gujjar, Abhinandan S" , "dev@dpdk.org" CC: Anoob Joseph , Jerin Jacob Kollanukkaran , "Jayatheerthan, Jay" , "Vangati, Narender" , Volodymyr Fialko Subject: RE: [PATCH v3 1/7] cryptodev: add APIs to get/set event metadata Thread-Topic: [PATCH v3 1/7] cryptodev: add APIs to get/set event metadata Thread-Index: AQHYVY1YXGz9MMsdFEiI9o4USo01Ya0FcVmAgAFnNAA= Date: Fri, 29 Apr 2022 12:16:39 +0000 Message-ID: References: <20220418193325.368313-1-gakhil@marvell.com> <20220421143720.1583062-1-gakhil@marvell.com> <20220421143720.1583062-2-gakhil@marvell.com> In-Reply-To: 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: a9ea5762-89b6-46d3-eb47-08da29da1d10 x-ms-traffictypediagnostic: MWHPR18MB1040: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: RW89t53cUJHEwxSGYYwe9XCtwGU4XmixWD73NERQqjEy67vmlf/tHGZWLD3rIPdOmPAtEiPE8VouAgQt0AP1HvIHxrWNhJBn1oEv0gkx8aGZtA9c+wgmhRfTfI0ifEloIwJ+WWu00LCdQzPHVTfAx/EB9ueQYEe76KpbpRG/b1B1pR8+W/CfATCLVXyEfw2fvNZ8Nns+uoUrgGQvlfNBByNSc0PESM7bHipbtmi+XEpahjxoYjgLTEm2gFHjZqb4CbN13mwlQRnDqWd7wVRCWykqgNiuUl/PlvApeN4z7x1GMOzZsMb5rHRAOaznDUFsogC3nxQtNzOn2vtOfTzttoNuYsT3ZyU5rhW2U6fdAIKN1qVvgXAso1JARvS2am/s9XY5h/Y4faRDK5Sb1DH+0261ajbfjWdjz39+E+vkXBmi0fw26HORsDUreRMkXrLlpVMiOIp3znFd/4WPYoYKf85qFY87k9IN0H8vjXLt7D8L748gS659kWOrFexO/7J06aHgiMPqcsTX0d1XQvF6J6564It2zWxkOxavOzMBzx3NGQAxEfRYnoVsj4AUcftYinHHk5IBIysk+CfYcpMLr9EfhkAH8Q8IE+O87v8QORrTWICrAYsK+5h8+wkOxpcRCxVVz3x/putdsewgfpaHCKViHe0qJ6IG6e/pTIT7MMcDKdc8uEIa879QuKO5d9sKNJ6f4O90EfexZioMClaZ4A== 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)(8676002)(4326008)(7696005)(66946007)(2906002)(26005)(508600001)(5660300002)(8936002)(9686003)(33656002)(66556008)(66476007)(66446008)(64756008)(55236004)(71200400001)(6506007)(86362001)(76116006)(38100700002)(122000001)(38070700005)(316002)(55016003)(110136005)(54906003)(107886003)(186003)(83380400001)(52536014); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?LLuJ+5Rzu0WxPBFQhfIYv2ro0ZTI5uoR8nyZHy2vLOv2jNSBv+n7tJjNskXX?= =?us-ascii?Q?430D/DkIVPp+zlQWBnQmdLgJNIdTZYxD+f7lImTUCL22og0fe7VtjPVyulCz?= =?us-ascii?Q?KVm68SmlZYEbqal5m5vHz0xg+gwrT7SqSBXWQ93w5KeqdkfX0A6qoStZIuCy?= =?us-ascii?Q?3KA3MwYLy2ukSvq1GFo2Rs27zaB0Fcd5A3NeLPq2OI0U0NbWICNnLXAcs4aI?= =?us-ascii?Q?OwiR7bJxRyT62RkYXRAWkIzs9PE8q2fisnaRckKYxuwtv000uYqREKgdpmwe?= =?us-ascii?Q?W+zuCPJrscM6BP4NSIqTGfxV9HOmbuR/El3I/XswZzlqdjtp4v3sERa4ro9L?= =?us-ascii?Q?2a4o9+ySSvDr+Sq9v8ojD1eCUWm+vWR9pEoCPmWBHfNm4C9ueNlfJpIWyuzG?= =?us-ascii?Q?8X/go3tMGAnEOqmI5+kfk55+V0Vw5oOuykCIGusHMUfjPUw/YspP/ZL7ZBIn?= =?us-ascii?Q?g426pCPnk31YCcSzCVMb9DzyWy3XNuj18lQwh0ILTUdTaEbxU/7UL7xFdCN0?= =?us-ascii?Q?7U3QRwPNOOTeZKPf0H6W3tKasAbmgV5+E2wQ63f1z7TpJe+LO0X6VZu0yYWL?= =?us-ascii?Q?MQ6lB75t6tQ47ZnPnapcG6/VfW3bwSqc0W/RiX0YnN3qtwvy0qvcrkjxPZlu?= =?us-ascii?Q?TMhutj3ZC/GEyfFvPQCt/p527vqCeAfU0OKklQgFLEc2OY2J1Cfx+ZJTEx35?= =?us-ascii?Q?30LIDtNL+EWiDmglouN3VHQ8HbldN2Au5yB66XyPRewzWNJL/ZVsTDjS4mxo?= =?us-ascii?Q?1PAABOeubsAa992qdrs8MhTMnNeUH+2tYYhmP3hmchOJdRWQ4X28GJMOreKE?= =?us-ascii?Q?YhF36KChEJ5Az9rWvMQbuYuSEvJMssDif3gWp+WIpneKU82wsXb9DzhvSAtC?= =?us-ascii?Q?qsrCwRLJpi3mTh7ruzzGuYF1+vqtDkrHq7beD9+mfKzAja2FPntbTNM1rGyZ?= =?us-ascii?Q?96+mXGWmEg3uH9iZ/faLmc8XMSF142ZaeFQFzgV2X+6hX3pXT6te/0E5kzS9?= =?us-ascii?Q?QuNPGERprso5YVK3FITWrw51W2e5vh9kqDN7/qQXCF8fX2HhE0QjWABVxjZP?= =?us-ascii?Q?Rb+6fiKSPW3eNqIk3xjWrRPhjlFoDj0F0VltJH21pRVqT26E/M5SDL8F7y25?= =?us-ascii?Q?K9AM3nzRWDzU2OSj1SowBmbsxMxisAStwbuHKBHXvySw4Ug/+BQp480TvxIr?= =?us-ascii?Q?P6GS9cF0jElLA3RFqF5VdbR0Dp49pyGxRxDi+VGRH0lPyZxyakJdayMCckmk?= =?us-ascii?Q?cI0wn7gmywNY2N6Hq/3Ey9Pg+EHCScxkiBzSMqehwzY4/AEr3gcGdU4vVCik?= =?us-ascii?Q?QBjzmd4zCqCJ9iBz/AaTBdw/jG6qIm2kU/JFeSEOjGCfp2+WibOMbFl8GaMJ?= =?us-ascii?Q?6mLy47X5M4w50HKlGU3DECqQn00zynBYn87ysHjvTaeuxk3J43e+FsWSa+sU?= =?us-ascii?Q?5ybJloPXYa/ij+Tsakp0Gf38WKobCoB0wRpNwx7u1BvPH7bTW3XM9ddBDd9s?= =?us-ascii?Q?7lVVQTnLFrTnoNsZVGueHUk1Ebs7t5y+PjKSUen3gBnCUEKUFfpXJKMtbxsf?= =?us-ascii?Q?o1XOEaJXK3EFHdlzVSuMlex8KlM26pPhh8UOMhEmzc5NvGHpTw+JcVqEqMxF?= =?us-ascii?Q?+YsY41W4c2tncbCQej04px8t4Pz5Mb7DqAute1TCyK7dfEMEoxlv/GMrMED+?= =?us-ascii?Q?n3Tlk+1VitP+Wv0LZo7/JvA2eAyHk9zj5p7KVWeEV+m9UvieLmTiRPSCspO3?= =?us-ascii?Q?yi1anIf7bQ=3D=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: a9ea5762-89b6-46d3-eb47-08da29da1d10 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2022 12:16:39.3447 (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: so3FnRvg5EpbAfsnjpNiDh3oIUz4jRrnhHtYQQoSz1KCp6oc5rgdoiIBbzBUJauYs/72yGXBO5h57OJln3UBJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR18MB1040 X-Proofpoint-GUID: Ty5kkCWotP94cpUSgxzPMPub0891UMrR X-Proofpoint-ORIG-GUID: Ty5kkCWotP94cpUSgxzPMPub0891UMrR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-04-29_06,2022-04-28_01,2022-02-23_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 Hi Abhinandan, Please see inline. > > + > > +void * > > +rte_cryptodev_session_event_mdata_get(struct rte_crypto_op *op) { > Null check for op? Null check can be added, but this a datapath dpdk internal API. We do not normally add checks in datapath. If you insist, I can add, but before calling this API, PMD/lib would have a= lready checked for null op. > > + if (op->type =3D=3D RTE_CRYPTO_OP_TYPE_SYMMETRIC && > > + op->sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) > > + return rte_cryptodev_sym_session_get_user_data(op->sym- > > >session); > > + else if (op->type =3D=3D RTE_CRYPTO_OP_TYPE_ASYMMETRIC && > > + op->sess_type =3D=3D RTE_CRYPTO_OP_WITH_SESSION) > > + return op->asym->session->event_mdata; > > + else if (op->sess_type =3D=3D RTE_CRYPTO_OP_SESSIONLESS && > > + op->private_data_offset) > > + return ((uint8_t *)op + op->private_data_offset); > > + else > > + return NULL; > > +} > > diff --git a/lib/cryptodev/cryptodev_pmd.h b/lib/cryptodev/cryptodev_pm= d.h > > index 2b1ce2da2d..7969944b66 100644 > > --- a/lib/cryptodev/cryptodev_pmd.h > > +++ b/lib/cryptodev/cryptodev_pmd.h > > @@ -398,6 +398,25 @@ typedef int > > (*cryptodev_sym_configure_raw_dp_ctx_t)( > > enum rte_crypto_op_sess_type sess_type, > > union rte_cryptodev_session_ctx session_ctx, uint8_t is_update); > > > > +/** > > + * Typedef that the driver provided to set event crypto meta data. > > + * > > + * @param dev Crypto device pointer. > > + * @param sess Crypto or security session. > > + * @param op_type Operation type. > > + * @param sess_type Session type. > > + * @param ev_mdata Pointer to the event crypto meta data > > + * (aka *union rte_event_crypto_metadata*) > > + * @return > > + * - On success return 0. > > + * - On failure return negative integer. > > + */ > > +typedef int (*cryptodev_session_event_mdata_set_t)( > > + struct rte_cryptodev *dev, void *sess, > > + enum rte_crypto_op_type op_type, > > + enum rte_crypto_op_sess_type sess_type, > > + void *ev_mdata); > > + > > /** Crypto device operations function pointer table */ struct > > rte_cryptodev_ops { > > cryptodev_configure_t dev_configure; /**< Configure device. */ > > @@ -442,6 +461,8 @@ struct rte_cryptodev_ops { > > /**< Initialize raw data path context data. */ > > }; > > }; > > + cryptodev_session_event_mdata_set_t session_ev_mdata_set; > > + /**< Set a Crypto or Security session even meta data. */ > > }; > > > > > > @@ -603,6 +624,19 @@ void > > cryptodev_fp_ops_set(struct rte_crypto_fp_ops *fp_ops, > > const struct rte_cryptodev *dev); > > > > +/** > > + * Get session event meta data (aka *union rte_event_crypto_metadata*) > > + * > > + * @param op pointer to *rte_crypto_op* structure. > > + * > > + * @return > > + * - On success, pointer to event crypto metadata > > + * - On failure, a negative value. > > + */ > > +__rte_internal > > +void * > > +rte_cryptodev_session_event_mdata_get(struct rte_crypto_op *op); > > + > > static inline void * > > get_sym_session_private_data(const struct rte_cryptodev_sym_session > *sess, > > uint8_t driver_id) { > > @@ -636,6 +670,8 @@ RTE_STD_C11 struct rte_cryptodev_asym_session { > > /**< Size of private data used when creating mempool */ > > uint16_t user_data_sz; > > /**< Session user data will be placed after sess_data */ > > + void *event_mdata; > > + /**< Event crypto adapter metadata */ > Add reference to rte_event_crypto_metadata for clarity? Ok will add the comment. > > uint8_t padding[3]; > > uint8_t sess_private_data[0]; > > }; > > diff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptode= v.c > index > > 3500a2d470..a070cb2a00 100644 > > --- a/lib/cryptodev/rte_cryptodev.c > > +++ b/lib/cryptodev/rte_cryptodev.c > > @@ -2051,6 +2051,9 @@ rte_cryptodev_asym_session_free(uint8_t dev_id, > > void *sess) > > > > dev->dev_ops->asym_session_clear(dev, sess); > > > > + if (((struct rte_cryptodev_asym_session *)sess)->event_mdata) > > + rte_free(((struct rte_cryptodev_asym_session *)sess)- > > >event_mdata); > > + > Who allocates memory for event_mdata? If this done by application before > calling > rte_cryptodev_session_event_mdata_set(), please document it. It is same as was done before this patch. The rte_cryptodev_session_event_mdata_set is allocating and making the copy as it was copied in userdata before. Hence, no update is required. > > /* Return session to mempool */ > > sess_mp =3D rte_mempool_from_obj(sess); > > rte_mempool_put(sess_mp, sess); > > @@ -2259,6 +2262,44 @@ rte_cryptodev_configure_raw_dp_ctx(uint8_t > > dev_id, uint16_t qp_id, > > sess_type, session_ctx, is_update); > > } > > > > +int > > +rte_cryptodev_session_event_mdata_set(uint8_t dev_id, void *sess, > > + enum rte_crypto_op_type op_type, > > + enum rte_crypto_op_sess_type sess_type, > > + void *ev_mdata, > > + uint16_t size) > > +{ > > + struct rte_cryptodev *dev; > > + > > + if (!rte_cryptodev_is_valid_dev(dev_id)) > > + goto skip_pmd_op; > > + > > + dev =3D rte_cryptodev_pmd_get_dev(dev_id); > > + if (dev->dev_ops->session_ev_mdata_set =3D=3D NULL) > > + goto skip_pmd_op; > > + > > + return (*dev->dev_ops->session_ev_mdata_set)(dev, sess, op_type, > > + sess_type, ev_mdata); > > + > > +skip_pmd_op: > > + if (op_type =3D=3D RTE_CRYPTO_OP_TYPE_SYMMETRIC) > > + return rte_cryptodev_sym_session_set_user_data(sess, > > ev_mdata, > > + size); > > + else if (op_type =3D=3D RTE_CRYPTO_OP_TYPE_ASYMMETRIC) { > > + struct rte_cryptodev_asym_session *s =3D sess; > Null check for sess? Again, it is a datapath, avoided extra checks. > > + > > + if (s->event_mdata =3D=3D NULL) { > > + s->event_mdata =3D rte_malloc(NULL, size, 0); > > + if (s->event_mdata =3D=3D NULL) > > + return -ENOMEM; > > + } > > + rte_memcpy(s->event_mdata, ev_mdata, size); > > + > > + return 0; > > + } else > > + return -ENOTSUP; > > +}