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 3AFEAA00BE; Thu, 17 Feb 2022 07:56:08 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 10A2F40150; Thu, 17 Feb 2022 07:56:08 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 5053440042 for ; Thu, 17 Feb 2022 07:56:07 +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 21GMZc7U024000 for ; Wed, 16 Feb 2022 22:56:06 -0800 Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2177.outbound.protection.outlook.com [104.47.55.177]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3e9a6khpvs-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 16 Feb 2022 22:56:06 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ctGhI119WSZh8fg4d7e26Z0TlGmHXjCHqH9/YuaXHmApspvCIXIc/S0osE7gSKCPG/Uf57tKpQbOtr+oyAEmYWqnd2tV1MZ/rFw7n0EjrJFfOcy9XN/PnCpo9MU72y9z4b+C9e4E7lmo4SmkXVKAfAAiA14ypqLZJKSmEBN+PMP2V+n/bnFgYZwSHaBdQeve8GgqNDnOw7dbAmQmM+hVnB2FqSHrrM5vAcRujIPqbSklpr9JvtCWkn0RphCMEqYFHxCotwAf8rVm2VHz8DGuaJ4tOx0pZIsFi81+A2JvySHz97ixwGPIGc9yILQFUTWChRXvoMScIcqlT5p6afq0OA== 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=3s/coxK9zPkA84iphQyWNtP7+bqZ5IvzguwzTDXWuow=; b=QjB0eGwE16NOmaFNT7LNBIUAj0AsasEETnT9pQuPhQADQLXzyH3E48o/6d1TC39NGz7Xyr3Ukfz8IatxMN13ZKZELB7pqm8+R2+DOPNV7amTSWd5gOKvybnPrqvF2wbLhwuQUry4FQaKNc7gNwne0WqR/aX1IDbZPDMfviEBNlTTi1wfSF4ItcSOlaHyznNoaz2GC4h1eV8b4Fyuc45QQzltjmuM0BovojmGu48vE1Z5Qx06dJ/ZAWDVfSr0lKQsEQaYchBLrvzIvyGB0f8ZWFA93iUZEl3TVEBIZM+b2EcQbjeinaxpl84kGo4eg/Xrkz9aObh/wM97nfsDBVv/KA== 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=3s/coxK9zPkA84iphQyWNtP7+bqZ5IvzguwzTDXWuow=; b=T1dPyEUrRKWLqtydA01rsBsTgcYONT2c822wW8WN0Y2Ev0YB3Z7XAKHVv3Y86U2iSGnt18daR2CLe74iEqv0L2xkyd9b0EDISzk9FifNFiknjAx8giJoWYDhAM8n5CTNdKB8jSSDPRk9XpSL2JdKydiaOvF3PttzW7bRK2Dgldw= Received: from CO6PR18MB4484.namprd18.prod.outlook.com (2603:10b6:5:359::9) by PH0PR18MB4717.namprd18.prod.outlook.com (2603:10b6:510:c8::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.19; Thu, 17 Feb 2022 06:56:00 +0000 Received: from CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::1c79:10d9:2997:cd79]) by CO6PR18MB4484.namprd18.prod.outlook.com ([fe80::1c79:10d9:2997:cd79%7]) with mapi id 15.20.4975.019; Thu, 17 Feb 2022 06:56:00 +0000 From: Akhil Goyal To: Shijith Thotton , "dev@dpdk.org" , Jerin Jacob Kollanukkaran CC: Shijith Thotton , "abhinandan.gujjar@intel.com" Subject: RE: [EXT] [PATCH v5] app/eventdev: add crypto producer mode Thread-Topic: [EXT] [PATCH v5] app/eventdev: add crypto producer mode Thread-Index: AQHYIo0gXmkBYKImlEyVpK4/xuyXyayXTqzQ Date: Thu, 17 Feb 2022 06:56:00 +0000 Message-ID: References: <74c3a3fcfb79b7f64588c62ca7c92502739365d0.1644337305.git.sthotton@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: 8a18c2d4-81ed-4c9d-2b41-08d9f1e28eb4 x-ms-traffictypediagnostic: PH0PR18MB4717:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bAUNkxtJYBLYXaV0hcuvjbOp+v64wYnViv7owu+Ibg2BuCx6smZYzBqFl2thr8Uq8fEb7AS/ZTRDZISkTXouUUHN4zHOhoVFU5FY7UP3u/ikZMcXQkoHwc08bFYr3NrrGpejMArWxCKCz4VIOLcyQfCQDW5LzcHVZzjv7+cfR5jxo8Fu7NegY3kc5SYJbX8u3HfcVixN89rlmdZwJPVOq8TuuTIWD6uDhflm6kabFrDWVIPMTqhhOIEpnrO6GvAkBwpEvlPPbmSodjnR+TQIjrDm2MT6aVSUpRS2JRtQc5tYiGS+kuwtggtb22gmlkvFP+P+0hw+AEg/2R6zfHGU4QnamlsGC+cg9KqqplIdRIpBSDPR8uPglAITLuc+y8dF1NEYPRqTvQRO7Rhr6ifNXSBIUAdfjxaNgexK/ryPkM/cqKRicRbu8NXEuQJ6097BM18Y260a2vhj7PtpfnZKnrB92TniU7EbBgH1GbBCwLPv6UuXedfJ2yfJcPOyjUXzJidVVHxmQhePOsLbHS5cWKgFA3MmGGhU6cfEdlTQuomAosFgB6QU+Dth6OnLdvUBdnigMwFY8qMzrIS79qO0avTW8Pl8mGcvrTymXotCz2cZj5iq+aV4WGYcFe3ABaafZm+x+p9sQ3jrYPXpr6pgftA2obR8yMJCJ0UmuJLbwDRiItc5qCtXodgx0Oq2IBnELUuc39ky6ZTaSH61ro+Iuw== 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)(6636002)(54906003)(66946007)(8676002)(55236004)(4326008)(55016003)(33656002)(6506007)(66446008)(38100700002)(110136005)(86362001)(76116006)(7696005)(71200400001)(66556008)(66476007)(64756008)(508600001)(9686003)(316002)(38070700005)(122000001)(83380400001)(5660300002)(52536014)(186003)(2906002)(26005)(8936002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?gk7QtKFFuMD4SbUOWlcGWo3LAQvsNXDyTQVm/x4Tgu7mNH/vEYtKTxGxIDb2?= =?us-ascii?Q?lXby+YHwLuAlQ82DO8LmYGYEtowstPdupulYtapjI80/itzWo8MXGLpOCCbu?= =?us-ascii?Q?m1vjtlf+vm2asGB/xWFLCu7Lpvr/7LQY2njievi6P/8fAVWGR0wPYs7iXkKa?= =?us-ascii?Q?Eax1RwqmPcEdhocKgD+f0ri/P0ztuRxXwkYlOv6Dpi2LjB08n3pfMQRTVQap?= =?us-ascii?Q?0Pc4ccD7OlRpghBmTJKZGjYEixHjDqv6RsnbyspUS//VwDoU6WPDAmIoz5dh?= =?us-ascii?Q?rgWoyOF2JI5mY1Kz3t4erf+5mRm5Y0Fa6wAVf5m3tpeqd6xGvrW0Dk1c6jPi?= =?us-ascii?Q?xPB2JnMG7U3OH0q3z/8yhpHg/tclxxFWor/cancJG/P/BGDpBfY5nKGyL1hN?= =?us-ascii?Q?kHH2JhpnJE9w0MCde6/XFHE5K2tQ5tgYMfd2EXyxtetdhOI3K5Kqf0TOHynm?= =?us-ascii?Q?EReFGhUoDj0sCjnKYLCk4Vrs207xVSTWKX56Wqqwk/GRS23jaTG+lBxhLnzb?= =?us-ascii?Q?Br42I5PVvlOqztPpF/8nAG8KCZukyitYiyJkglpVS6alyqgKBVw9AB7EoMPx?= =?us-ascii?Q?euxG8r2q0iAMtKtYGqe5FUSXbs/kWCSOOEJSScswps4XItg340qV1WjTDxcf?= =?us-ascii?Q?ShM7zrFsPOOHv6LpsfWdYtn2DQPx9IQ3dXosblyNY/1TJYJm3pRbgsGHTjEe?= =?us-ascii?Q?QQtZrXcL00FAwq5Dij/7BlAPsXyPzgMaUXZTEzki20AKEObfysmHkz4zW7c1?= =?us-ascii?Q?Mv63Z+5/CL4JtJ+IC9xttweLxXcBvKQ/dZ1UEqH1QdtExDnJaeoUGG4VSe33?= =?us-ascii?Q?apl44n/eGFM4WzSmtsrQFPhF8JSN5DfKUdqCt5dfdY7LWsQ5bwa/MZLxlKuf?= =?us-ascii?Q?h6E+rwtXoBPsQXpvT/XbyxUBFfFtmyae9fcLjP7nO13yvyGofKY+JT/HJXGm?= =?us-ascii?Q?irfp4rLW0hZr/l89VgE1/STqSqjgRGNA6Zej4CRUOR1yAg468jTty2Db3Nym?= =?us-ascii?Q?xPQsKrqkB7hMm44OrZKmrnGnGz0JBzL9riULQZXSuHCZagbX016sjYS2CVI9?= =?us-ascii?Q?EnPU6eAuR+qjFkDpK+hi+af5nUCTEP3SmSqw9VOiz5VjT7DTXdglCOdr6iGl?= =?us-ascii?Q?1gD9rDGnAqW5ga5wmx6JCcw9s8HHc9bgmsU/cEsKLr8FMGTXjJlLkLCd3gnU?= =?us-ascii?Q?K3w+Bw5H28+g9e2yt7TyB5BTxHqfBIVkDFDzvgjANDQ0JKRENZapMNfB+TWS?= =?us-ascii?Q?cPnIigooQ1tTypvdz6pAnyjghjkIuokaBRH8Z16Wu4QmQaJCWpGGiwD3WChI?= =?us-ascii?Q?+v1SEqRhWRtg1jWuXW5FqywAZ9X1zi7wrbeMuOFaPrcz8ZCgUC7BaFCfk/df?= =?us-ascii?Q?JGFsS+pQblXjH93EV8omYqVhK1hQGSQWpbuhfYmaGH0Cg5f7AHXMgACg4KZd?= =?us-ascii?Q?Gmq9n9hOR0IwpqN5EfPWtkp7hcjnI30hioR51AQ4owAvXfO1PLovgbcB8WnK?= =?us-ascii?Q?QefG7wdleYvPDuBLlg6c+rJeXZp8hCkW/1b4xU8LDwd7I7mYpG5jFovgKnIf?= =?us-ascii?Q?36U3j0ozkKJWYtL8yw81t2oUl7WBjkEBNMGry9kwCmdH9kr8X66BoL6TlgGE?= =?us-ascii?Q?CpogcA3QoNLyQmlZNwQEKLE=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: 8a18c2d4-81ed-4c9d-2b41-08d9f1e28eb4 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2022 06:56:00.7305 (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: KWaR+mfsvSWL6D+cIMoWba32kZ/b/phA+ag3pwoEwzojgyv03sX6XOBidaIe/C0MrEci+i1DIwfAZanjo7RRBQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB4717 X-Proofpoint-ORIG-GUID: jRYmJaq2XUm4DuWHdrF1wsaFRb25UxOF X-Proofpoint-GUID: jRYmJaq2XUm4DuWHdrF1wsaFRb25UxOF 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-17_02,2022-02-16_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 Hi Shijith, Few comments inline. With those fixed. Acked-by: Akhil Goyal > +static int > +perf_event_crypto_adapter_setup(struct test_perf *t, struct prod_data *p= ) > +{ > + struct evt_options *opt =3D t->opt; > + uint32_t cap; > + int ret; > + > + ret =3D rte_event_crypto_adapter_caps_get(p->dev_id, p->ca.cdev_id, > &cap); > + if (ret) { > + evt_err("Failed to get crypto adapter capabilities"); > + return ret; > + } > + > + if (((opt->crypto_adptr_mode =3D=3D > RTE_EVENT_CRYPTO_ADAPTER_OP_NEW) && > + !(cap & > RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_NEW)) || > + ((opt->crypto_adptr_mode =3D=3D > RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD) && > + !(cap & > RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD))) { > + evt_err("crypto adapter %s mode unsupported\n", > + opt->crypto_adptr_mode ? "OP_FORWARD" : > "OP_NEW"); > + return -EINVAL; > + } else if (!(cap & > RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA)) { > + evt_err("Storing crypto session not supported"); > + return -EINVAL; > + } The above errors should be -ENOTSUP. If the PMD is not capable, test should= be skipped. > + > + if (cap & > RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND) { > + struct rte_event response_info; > + > + response_info.event =3D 0; > + response_info.op =3D > + opt->crypto_adptr_mode =3D=3D > + > RTE_EVENT_CRYPTO_ADAPTER_OP_NEW ? > + RTE_EVENT_OP_NEW : > + RTE_EVENT_OP_FORWARD; > + response_info.sched_type =3D RTE_SCHED_TYPE_ATOMIC; > + response_info.event_type =3D RTE_EVENT_TYPE_CRYPTODEV; > + response_info.queue_id =3D p->queue_id; > + ret =3D rte_event_crypto_adapter_queue_pair_add( > + TEST_PERF_CA_ID, p->ca.cdev_id, p->ca.cdev_qp_id, > + &response_info); > + } else { > + ret =3D rte_event_crypto_adapter_queue_pair_add( > + TEST_PERF_CA_ID, p->ca.cdev_id, p->ca.cdev_qp_id, > NULL); > + } > + > + return ret; > +} > + > +static struct rte_cryptodev_sym_session * > +cryptodev_sym_sess_create(struct prod_data *p, struct test_perf *t) > +{ > + struct rte_crypto_sym_xform cipher_xform; > + struct rte_cryptodev_sym_session *sess; > + > + cipher_xform.type =3D RTE_CRYPTO_SYM_XFORM_CIPHER; > + cipher_xform.cipher.algo =3D RTE_CRYPTO_CIPHER_NULL; > + cipher_xform.cipher.op =3D RTE_CRYPTO_CIPHER_OP_ENCRYPT; > + cipher_xform.next =3D NULL; > + > + sess =3D rte_cryptodev_sym_session_create(t->ca_sess_pool); > + if (sess =3D=3D NULL) { > + evt_err("Failed to create sym session"); > + return NULL; > + } > + > + if (rte_cryptodev_sym_session_init(p->ca.cdev_id, sess, &cipher_xform, > + t->ca_sess_priv_pool)) { > + evt_err("Failed to init 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, > @@ -598,6 +796,80 @@ perf_event_dev_port_setup(struct evt_test *test, > struct evt_options *opt, > ret =3D perf_event_timer_adapter_setup(t); > if (ret) > return ret; > + } else if (opt->prod_type =3D=3D EVT_PROD_TYPE_EVENT_CRYPTO_ADPTR) { > + struct rte_event_port_conf conf =3D *port_conf; > + uint8_t cdev_id =3D 0; > + uint16_t qp_id =3D 0; > + > + ret =3D rte_event_crypto_adapter_create(TEST_PERF_CA_ID, > + opt->dev_id, &conf, 0); > + if (ret) { > + evt_err("Failed to create crypto adapter"); > + return ret; > + } > + > + 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; > + > + if (qp_id =3D=3D rte_cryptodev_queue_pair_count(cdev_id)) > { > + cdev_id++; > + qp_id =3D 0; > + } > + > + p->dev_id =3D opt->dev_id; > + p->port_id =3D port; > + p->queue_id =3D prod * stride; > + 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, > + RTE_CACHE_LINE_SIZE, opt->socket_id); > + p->t =3D t; > + > + m_data.request_info.cdev_id =3D p->ca.cdev_id; > + m_data.request_info.queue_pair_id =3D p- > >ca.cdev_qp_id; > + m_data.response_info.op =3D > + opt->crypto_adptr_mode =3D=3D > + > RTE_EVENT_CRYPTO_ADAPTER_OP_NEW ? > + RTE_EVENT_OP_NEW : > + RTE_EVENT_OP_FORWARD; > + m_data.response_info.sched_type =3D > RTE_SCHED_TYPE_ATOMIC; > + m_data.response_info.event_type =3D > + RTE_EVENT_TYPE_CRYPTODEV; > + m_data.response_info.queue_id =3D p->queue_id; > + > + 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_sym_session_set_user_data( > + crypto_sess, &m_data, > sizeof(m_data)); > + p->ca.crypto_sess[flow_id] =3D crypto_sess; > + } > + > + conf.event_port_cfg |=3D > + RTE_EVENT_PORT_CFG_HINT_PRODUCER | > + RTE_EVENT_PORT_CFG_HINT_CONSUMER; > + > + ret =3D rte_event_port_setup(opt->dev_id, port, &conf); > + if (ret) { > + evt_err("failed to setup port %d", port); > + return ret; > + } > + > + ret =3D perf_event_crypto_adapter_setup(t, p); > + if (ret) > + return ret; > + > + qp_id++; > + prod++; Memory leak for p->ca.crypto_sess in failure cases. Also check if it is getting freed when sessions are destroyed. > + } > } else { > prod =3D 0; > for ( ; port < perf_nb_event_ports(opt); port++) { > @@ -659,7 +931,8 @@ perf_opt_check(struct evt_options *opt, uint64_t > nb_queues) > } >=20 > if (opt->prod_type =3D=3D EVT_PROD_TYPE_SYNT || > - opt->prod_type =3D=3D > EVT_PROD_TYPE_EVENT_TIMER_ADPTR) { > + opt->prod_type =3D=3D EVT_PROD_TYPE_EVENT_TIMER_ADPTR || > + opt->prod_type =3D=3D EVT_PROD_TYPE_EVENT_CRYPTO_ADPTR) { > /* Validate producer lcores */ > if (evt_lcores_has_overlap(opt->plcores, > rte_get_main_lcore())) { > @@ -767,8 +1040,7 @@ perf_ethdev_setup(struct evt_test *test, struct > evt_options *opt) > }, > }; >=20 > - if (opt->prod_type =3D=3D EVT_PROD_TYPE_SYNT || > - opt->prod_type =3D=3D > EVT_PROD_TYPE_EVENT_TIMER_ADPTR) > + if (opt->prod_type !=3D EVT_PROD_TYPE_ETH_RX_ADPTR) > return 0; >=20 > if (!rte_eth_dev_count_avail()) { > @@ -841,6 +1113,147 @@ void perf_ethdev_destroy(struct evt_test *test, > struct evt_options *opt) > } > } >=20 > +int > +perf_cryptodev_setup(struct evt_test *test, struct evt_options *opt) > +{ > + uint8_t cdev_count, cdev_id, nb_plcores, nb_qps; > + struct test_perf *t =3D evt_test_priv(test); > + unsigned int max_session_size; > + uint32_t nb_sessions; > + int ret; > + > + if (opt->prod_type !=3D EVT_PROD_TYPE_EVENT_CRYPTO_ADPTR) > + return 0; > + > + cdev_count =3D rte_cryptodev_count(); > + if (cdev_count =3D=3D 0) { > + evt_err("No crypto devices available\n"); > + return -ENODEV; > + } > + > + 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()); > + if (t->ca_op_pool =3D=3D NULL) { > + evt_err("Failed to create crypto op pool"); > + return -ENOMEM; > + } > + > + nb_sessions =3D evt_nr_active_lcores(opt->plcores) * t->nb_flows; > + 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); > + if (t->ca_sess_pool =3D=3D NULL) { > + evt_err("Failed to create sym session pool"); > + ret =3D -ENOMEM; > + goto err; > + } > + > + max_session_size =3D 0; > + for (cdev_id =3D 0; cdev_id < cdev_count; cdev_id++) { > + unsigned int session_size; > + > + session_size =3D > + rte_cryptodev_sym_get_private_session_size(cdev_id); > + if (session_size > max_session_size) > + max_session_size =3D session_size; > + } > + > + max_session_size +=3D sizeof(union rte_event_crypto_metadata); > + t->ca_sess_priv_pool =3D rte_mempool_create( > + "ca_sess_priv_pool", nb_sessions, max_session_size, 0, 0, > NULL, > + NULL, NULL, NULL, SOCKET_ID_ANY, 0); > + if (t->ca_sess_priv_pool =3D=3D NULL) { > + evt_err("failed to create sym session private pool"); > + ret =3D -ENOMEM; > + goto err; > + } > + > + /* > + * Calculate number of needed queue pairs, based on the amount of > + * available number of logical cores and crypto devices. For instance, > + * if there are 4 cores and 2 crypto devices, 2 queue pairs will be set > + * up per device. > + */ > + nb_plcores =3D evt_nr_active_lcores(opt->plcores); > + nb_qps =3D (nb_plcores % cdev_count) ? (nb_plcores / cdev_count) + 1 : > + nb_plcores / cdev_count; > + for (cdev_id =3D 0; cdev_id < cdev_count; cdev_id++) { > + struct rte_cryptodev_qp_conf qp_conf; > + struct rte_cryptodev_config conf; > + struct rte_cryptodev_info info; > + int qp_id; > + > + rte_cryptodev_info_get(cdev_id, &info); > + if (nb_qps > info.max_nb_queue_pairs) { > + evt_err("Not enough queue pairs per cryptodev (%u)", > + nb_qps); > + ret =3D -EINVAL; > + goto err; > + } > + > + conf.nb_queue_pairs =3D nb_qps; > + conf.socket_id =3D SOCKET_ID_ANY; > + conf.ff_disable =3D RTE_CRYPTODEV_FF_SECURITY; > + > + ret =3D rte_cryptodev_configure(cdev_id, &conf); > + if (ret) { > + evt_err("Failed to configure cryptodev (%u)", cdev_id); > + goto err; > + } > + > + qp_conf.nb_descriptors =3D NB_CRYPTODEV_DESCRIPTORS; > + qp_conf.mp_session =3D t->ca_sess_pool; > + qp_conf.mp_session_private =3D t->ca_sess_priv_pool; > + > + for (qp_id =3D 0; qp_id < conf.nb_queue_pairs; qp_id++) { > + ret =3D rte_cryptodev_queue_pair_setup( > + cdev_id, qp_id, &qp_conf, > + rte_cryptodev_socket_id(cdev_id)); > + if (ret) { > + evt_err("Failed to setup queue pairs on > cryptodev %u\n", > + cdev_id); > + goto err; Cryptodev need to be cleared also on this error. > + } > + } > + } > + > + return 0; > +err: > + rte_mempool_free(t->ca_op_pool); > + rte_mempool_free(t->ca_sess_pool); > + rte_mempool_free(t->ca_sess_priv_pool); > + > + return ret; > +} > +