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 1C44AA0032; Fri, 18 Feb 2022 13:01:05 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A309F40150; Fri, 18 Feb 2022 13:01:04 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id A9D5040141 for ; Fri, 18 Feb 2022 13:01:02 +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 21IBs924026362; Fri, 18 Feb 2022 04:01:01 -0800 Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2109.outbound.protection.outlook.com [104.47.55.109]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3eaayv00qv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 18 Feb 2022 04:01:00 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cO4+YVgz8CyprVa1Vv5FndiBA1VlwA3dhze349ZfuHwAcFFV0797UtlE8xgzhK/LaZYiWrjFw+jH505wF+pHb40dO9B2SsnAJCpKXfjuN5dc/O27YUlIPIC4GGhUcNW6Au3tjAh/3klLCbzkn+s4l9jw81tlMUkIo9BLGVInw6rfh1QW9kNS0g8NbWpgvepGCrXha/kQnA06wyKTtnhatiEIoO+4W2hFfTkVaG53D+Rgbok6BBOIOkrJ6HPxfn/ACP89bqKJqNZKd/t7LgmbnWEI88OP777PiEQyjDUu36rXu9aWz1Buz5X9pxW7ne8ESULfUUg2XCoLYNgB2R1u6A== 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=SQGcRJfca/lndkqQJlmDflyBJ30hMdwvGIWTfpJMQsE=; b=DBuJ/s7f3+fPyWnAdOyVaSzND8+zPa9fv8mD4kR+GPeTNU1FVHwU+tmGqZfuKINgSmJ3M9nJfisYzxcCGbbFx3l2W7bjxE72Qz958EdYNyZm8Mz0YSJtTCn2cOWvvpyfSwKIrFM9h8AAVe8a/AvdYwVEkT/ftglVqkUfO9E6RnM2z1UqMhKALExjXITEWyU3dNmeVO3o0/RpeSB1LdCwGCADllxYRDbWhsTznL6qZuoNl/kFPDetZjZW+qa1n/CvcnK5oynDfoKqYb6Fz71M895x/DT3Am9oObpo5ivpIXnB0NEeb7Oywpo581vP5CmKoHyH3hm8bi3TLhUWYHZAIQ== 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=SQGcRJfca/lndkqQJlmDflyBJ30hMdwvGIWTfpJMQsE=; b=oADoj3uaQAGhE2341owREMS4tTrnAdG/r9bqtPH3HRkST+pBqxlXuIhQcg7JXRs7IcoCQK8S3nUaTWqVOhVhdioJAMjcY+zgY5NIefHcCqFZZ9rEp8egTLCgFV1CqAgDJ60oHLACkrWbbGUMT6BRwC75a1ITd6XnWs2/BadYRLw= Received: from SJ0PR18MB4429.namprd18.prod.outlook.com (2603:10b6:a03:37e::12) by PH0PR18MB4508.namprd18.prod.outlook.com (2603:10b6:510:e6::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.17; Fri, 18 Feb 2022 12:00:58 +0000 Received: from SJ0PR18MB4429.namprd18.prod.outlook.com ([fe80::98d9:86fe:7334:1919]) by SJ0PR18MB4429.namprd18.prod.outlook.com ([fe80::98d9:86fe:7334:1919%2]) with mapi id 15.20.4995.017; Fri, 18 Feb 2022 12:00:57 +0000 From: Shijith Thotton To: Akhil Goyal , "dev@dpdk.org" , Jerin Jacob Kollanukkaran CC: "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: AQHYIo0cbr2kZAlktE6+7tGayAkFZKyXUb0AgAHnIqA= Date: Fri, 18 Feb 2022 12:00:57 +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: 06800a38-8f57-4311-8b20-08d9f2d652e5 x-ms-traffictypediagnostic: PH0PR18MB4508:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Q0L9ojZpeaSp004LX5RdoM0F9YYP0ygXuZYThRh8b8IBJGb9rfJU99vz1rU+RSV9qSjH9gq2ktxF/q8LVddF2XsWg3j6WyCCl+KnhA0PLvdjr9U2H4MfOG2j53jMu88WbksA8A7EU5l7Mslf9Bi4zk442kSomhoXyfbT7eRudsur0Wo89aD9WZmNdNZzoknf0baYl3k1Z4/Ug2equ2Dfq+FTmDM75cLAkrZW7SDVHpagynM3ebw3UQwxz3D4+AKRO+uCUZ7VVFHwVAP+OEbKm8rmoJj/foSy3X+KUMWcjmaV5SS536Hp7z0o9Qy4zOWDyIO4PwlN5jZGMvzbFNpBlgJtxaUKbwU9wocSZ7QMv6wON23O8H4j02HER2j5HtBSHvQFMJvdwEYc0DXqit7+Ap8u9uuReMlZYSQa9m2SKmyyjf3weL3IUnx3BVrFWSR/YD2MzKO5KwwNfvwi3mDuOzhx6JcvY5p4CvCT5OaWUgtolxiJAdD37kKPxetNemYTg+fhG05SNQJlISIdtrmEValKFkac/n0v5+iNYoioNc2QtbS5uYfKJyzLmnFcRS06zNPh+puVjr6qNr9u3rFx7JiSD23U1Bs+JAXADAgU0GntEtctemCJ0DOPCc/RVjMFRj5iPMPQCFtbA5chE4al+PNkd+oA19DPCvAG5tzcioxuuRf16QMaWMez2KITuRqC/gnnzFgPN86Tu0sj9nW89A== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR18MB4429.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(8676002)(122000001)(38100700002)(38070700005)(8936002)(52536014)(5660300002)(508600001)(64756008)(66446008)(66476007)(66556008)(76116006)(4326008)(110136005)(6636002)(316002)(66946007)(26005)(83380400001)(186003)(86362001)(7696005)(6506007)(55236004)(9686003)(55016003)(33656002)(71200400001)(2906002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?zSuYDoGK71LWC8+pfYltCUjp26GMRDFe7mkbs0g3qT53AeCB06eunooSWVJ6?= =?us-ascii?Q?vz+6YVAM5kt27xluQdZhjCzfNrxx78rcY3XDbJ04LmldKFhx6c8twI/D8nkk?= =?us-ascii?Q?hXFOaYOGvCV6UKsKrP/3c7OujXqx3oa7wTxbvdtSiFGstgAmXzwfSrMj7nle?= =?us-ascii?Q?XBqrNBNXgN/LkuZbwioEpLzt9T5JBIOILnz0p9CG8ryLxx0GmUnO6+UVGmYv?= =?us-ascii?Q?MoTczUjOjimtkn80vGknOcoxZB5N9wwjw1cPP4bU8skHNvDtc/R+JVyI7lzE?= =?us-ascii?Q?R6ay2nd08ptNRs5G2k+sHgSpw0ysyMREbdLlRLUJvU3oL1vjb4vGLbEl0YNc?= =?us-ascii?Q?gx3Xov+eYuBFJiGAIaVab5bTdODyHj8amjGpJ45m43aA/QkoSB20Yz4dXHoO?= =?us-ascii?Q?7ms4zYyyYKKgmLxJwlwq9YTmbROOFUqxn1kN1CYnam4hlIGpPzTGksHPo/9V?= =?us-ascii?Q?ZIQtI76+6AdvzajR8+m+k5ST6nT+w8FDlA8oJxcR97tqk7FNo7MzUjhmfljh?= =?us-ascii?Q?ZmD91IEtcv7Akl6WS+j4mrMJYf3Nr6zNFqmzw/iWSDuIkPeXU4EtAEQaKas5?= =?us-ascii?Q?JE2kR63FcvcI359NT8U978U4sWKND7QVtpVX/8nUmZm5LE20uCBNVn05xpRY?= =?us-ascii?Q?4tgWM5rSxsJzt8q0UYUgbUWwenYdabfrAgZX8VYJC0ZAyoNO/SZTmuaF8SXd?= =?us-ascii?Q?0qiSec+ymCZMcxy3qptnZj7r0atiwzhEnBPFHZnEjbYQGrxwBlNzXMFvV4oZ?= =?us-ascii?Q?5oFivnV40qw/c9PYem+gEWzOM/FAHGeWvqeUvRtqC6ZkzzUih+/oIE7bPt9O?= =?us-ascii?Q?cjrkJqi3iizYH7tmstDGjPS6UGixbgcUhnRw4oIygQWwD1UMqAXFDN55SArh?= =?us-ascii?Q?CpuXKHY/GeFvTBn0GoFGsdt3wnhnB9c7cEQic3QZBBvbzCUp1KfhkRokQ1u5?= =?us-ascii?Q?0x0epmwtVNUxyjhTGyfqX9LZC1nKPrhpm5pXd10wQ0LIs6WA9rDj6xLvBrAT?= =?us-ascii?Q?JG95TbkD0Rric8E3Gzj3H4UTnjTOntPWIhv8b4pYJs4+7UrhTQHtlaC8UekU?= =?us-ascii?Q?fmInqS04tmE//rOMgXut8VHJuySis8Jio5kII5Dixz6LVgHDGDR+bWhV6uhz?= =?us-ascii?Q?s9DQ6NjIZUon3PovUIE5ld92gJlxYK7J422SOUjQSmQKRqofUYdiqKAaYn11?= =?us-ascii?Q?Vgl0aSU4tQBRHEr22dgf0gXo5gfBKW5fOySEXo6HON/BDnF/mRdNuiyGlZnm?= =?us-ascii?Q?yeiIm+LP9j4lEcc+ap4IuUkhgaMdamwPdGf0bilNkBkxs6kf+QPS0ZTvCrQA?= =?us-ascii?Q?XAGALbNRGD67JN4b2lkwuiBTcU5K0rFgTmdAxH4mfj4Zp+lCTA1wARXtlmDT?= =?us-ascii?Q?EOaljbyb5KJX1hyAeq0Y1LrEqWrQ6WhneVbHGwYbBY+Kszuf/mKYflr9V90U?= =?us-ascii?Q?O7hqvHQgX4F5qsZumw+lN/JmLEXP2zxmROnnN4MO8HDp5SmWiI8MXu0Jk4xB?= =?us-ascii?Q?qomCaoC/26WpZIkK68sMUuP1K9jfqB4ZoKMR3UxyM3JNaoBSKD9W9/Ad/tp3?= =?us-ascii?Q?MaIGEOoCsv9q1ehXv4oXHRQYrK0+qy3+wJhM/4FL63zkgzSmj0ghgoPqj/zU?= =?us-ascii?Q?mEYaC8vQBp7o+mAHCda75rI=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: SJ0PR18MB4429.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06800a38-8f57-4311-8b20-08d9f2d652e5 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Feb 2022 12:00:57.6709 (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: lXZwIQFdhEL+8fsO7xFjbN0p1n8kM9NyGHatqABEOCWKpeit8NxOcwFFzjca+8KrKtYy2rSJqKNtXNtQHgdaLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB4508 X-Proofpoint-GUID: PbHFnJXU40Hv9cfw_qt_Gh6CpP9vp_Lq X-Proofpoint-ORIG-GUID: PbHFnJXU40Hv9cfw_qt_Gh6CpP9vp_Lq 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-18_04,2022-02-18_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 Akhil, >Few comments inline. >With those fixed. >Acked-by: Akhil Goyal > =20 Thanks. >> +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 shoul= d be >skipped. > Okay, will add in v6. >> + >> + 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 *op= t, >> 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. > Okay, will add as part of cleanup. >> + } >> } 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) >> } >> >> 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) >> }, >> }; >> >> - 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; >> >> if (!rte_eth_dev_count_avail()) { >> @@ -841,6 +1113,147 @@ void perf_ethdev_destroy(struct evt_test *test, >> struct evt_options *opt) >> } >> } >> >> +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 se= t >> + * 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. =20 Okay, will add in v6. > >> + } >> + } >> + } >> + >> + 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; >> +} >> +