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 1A604A0A02; Thu, 25 Mar 2021 14:55:24 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9308B4067B; Thu, 25 Mar 2021 14:55:23 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 3024B40147 for ; Thu, 25 Mar 2021 14:55:22 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 12PDnsi6012809; Thu, 25 Mar 2021 06:55:18 -0700 Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2172.outbound.protection.outlook.com [104.47.57.172]) by mx0b-0016f401.pphosted.com with ESMTP id 37dgjp970c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 Mar 2021 06:55:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b+DFOUZZfwfbM+QQdsmDhl/f/r2Bi1o5yH1d9YaZplfe0B0FLRwI4c3d+mWAOPjpnS/LNC2rFuj5uqQ49xbYWBQ1oCAJ7rxVDIxoU8iXaR1HIUqGrogpmfQLfuN6pwEL/9Qk2rrU3qfOo1DR78aHXPomg866YjoPT9mznKoT0IZC/oMJPnnKUDwp4YXyDQsdo+YjTnYqJ+iRsDu3ypupkICxUHGbs1eHUQmnrQAvslKGLRWi+pDDeXUCdrpa1KY6Szy1Ve9L81u7OuI2ek2dzwune1F+2B89YABDCXDI4JaeaGSvK+r+0EhChEHyuaUSx8JCyFLJDygwOz1DLr3xTg== 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-SenderADCheck; bh=ovt4DzQorkGJ2/bE/zgQoG4bnIozHie/MZPEQRbST5U=; b=LqJ9kK1MvrBugYS5L37Av8madnQ0jlayl8jxpIXLGLoZP63rTRdTEtLdsg2950kIBO3367P/R1C+aSr7p137AG122MjXSsEDCyLxaEfaodlWMvbtrT/ZdN4zPaMRjIFnVdh7lo2uqRRAKM05zRhFrEPF7s8SyyEtmqixENKtUs639h91dvxfP7j5xhgWcJm6ds3liMKsV2MOpr5OmJPG4XKkSb6fEeG+BRFof1zmU8QFUud50rtwv0u/nMVy9C2ypBZ0BiRNb52MR9/UycETRIlliTlkUvUJWKapNekjYv88WSLUI2XhQirdM4oKYg7uG68vaxBUoW9awTAb6MHAkA== 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=ovt4DzQorkGJ2/bE/zgQoG4bnIozHie/MZPEQRbST5U=; b=cJlxlZbj+lX3GX2SniwaFbDsa6nexU/oUFZId/yG537ENqZjeOfTNnx9r44O88PzBWAbNaTOL2dDeAb2lHGvDcJgpjDeJkXGzz6rZExZ1WV6DkjjdJak3lrrA6h7Aa/po4Zo37rRUiQgMeYPDSNBiKp/fGVopN9jdhIWtz+qhoQ= Received: from PH0PR18MB4086.namprd18.prod.outlook.com (2603:10b6:510:3::9) by PH0PR18MB3878.namprd18.prod.outlook.com (2603:10b6:510:28::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.25; Thu, 25 Mar 2021 13:55:16 +0000 Received: from PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::51dd:b5d6:af81:172d]) by PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::51dd:b5d6:af81:172d%4]) with mapi id 15.20.3955.024; Thu, 25 Mar 2021 13:55:16 +0000 From: Pavan Nikhilesh Bhagavatula To: "Jayatheerthan, Jay" , Jerin Jacob Kollanukkaran , "Carrillo, Erik G" , "Gujjar, Abhinandan S" , "McDaniel, Timothy" , "hemant.agrawal@nxp.com" , "Van Haaren, Harry" , mattias.ronnblom , "Ma, Liang J" , Ray Kinsella , Neil Horman CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev v21.11] [PATCH v5 8/8] eventdev: simplify Rx adapter event vector config Thread-Index: AQHXIGtznwbAkMA42Eu70xnzmNsyUqqUo5yAgAANxUA= Date: Thu, 25 Mar 2021 13:55:16 +0000 Message-ID: References: <20210319205718.1436-1-pbhagavatula@marvell.com> <20210324050525.4489-1-pbhagavatula@marvell.com> <20210324050525.4489-9-pbhagavatula@marvell.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=marvell.com; x-originating-ip: [49.37.166.152] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 75f21c9e-526b-4400-d06e-08d8ef959ece x-ms-traffictypediagnostic: PH0PR18MB3878: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2733; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yW6Yj1tZcXfwpyoZG7V0maj4pOFekC6YMPLpS0ti4YW72/pY6d/ser9M30mg6Ate1d6HaHMgtFyEZ/dXZO0XRyxCyJAdtZD96Q9/vvtude0kn0D8KNoNw8TPFhAMddEA4ggXVc4jINMB9VJewpvMtaSUPofJA6Q0uOPYFi6bA2YqpmSeC2gyJx7ol7WGL5FxSIjYl1JwTh0m5TGOh7MrNzgToYPiadytC3lvDFZSxu3yqY0is+xwRC3kyodcHhAX7GoA2q5k5z4xKOKCHeGC9FiBFqbIbiaACwQ1BhkxoyMNbOsLExroYJc0Cndsu3xp/FgTnOIu4mR98m7XydN4gcn+mqFvMBlRrx2VfH+qFlEuO2jpQjbc62f4Mndu7M17dHMu6IQOY+dm6X1EF6W4gIwiAEpJsHtt+OjOAtGwhldron6zuvlGIuZh6SR6dalQ76l6E7QACIBfxPEvOTxBQo+dVwE+uBriXn5QSMwgI8DWheRPuqs8OqqF3YjMpYw9jM/8gDDcjODFD9FxG6jO8laOpujOE2XEG9bMsJnihCc3b506EyzMsGdtx2UBvZgq+QYN92z1l8N+ZdtLaB4MGTllS3utJHVb9CKc+C9cIA3I8dnnkyJvyHF1leKR4mUq9q5kzU1H/N1WHFdKM/Juyph1SvdqQ6hHu7xOFxbc5lB84iahRj20N7nXZjVP+Fc3 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4086.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(39860400002)(136003)(366004)(376002)(396003)(38100700001)(4326008)(8676002)(8936002)(6506007)(53546011)(921005)(76116006)(66476007)(478600001)(86362001)(186003)(66446008)(71200400001)(5660300002)(7696005)(7416002)(83380400001)(64756008)(66556008)(316002)(9686003)(33656002)(2906002)(26005)(52536014)(55016002)(66946007)(110136005)(30864003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?E22OCL+BN6DwAg6QeX+TSnlN+xY6wDBj+y1ADQvhnpF1FVI2G85otYYA1JLQ?= =?us-ascii?Q?MaADExfIQtIgVIz3GLx1LeWraEGZE9/BX8qfGU3SUk2+DDkqEMHvQiCLC3Ss?= =?us-ascii?Q?6ZSZb+g3zQLhEMCrrd66aFicdDOPrymyM3aoNXrTXg31VvlUYz5AoaHAGe94?= =?us-ascii?Q?IclXE+J4Hb1LTHzUiu2GzHWHi6MK/hz+lYGJbT3d1J0NNn7OPlM50gAEry0J?= =?us-ascii?Q?nofLDjVTiiHzFxtAqE4abQyxoXw7GZYQSCopSVpRU10BeLcFnLbJJqndOB+j?= =?us-ascii?Q?NZGzz6YCGOmXosqJrvDqMF5KjbxqyQ2KDv4rs//EnKeKhKcyIigXAdWYDjWP?= =?us-ascii?Q?PXuB6dxnE23AL+1cGSU95TjvaNNANESG9SaFRTlTYLYWxMRLHEROOkfDcuzd?= =?us-ascii?Q?rRDBwON/aVmwNSUepC0KYBNnKDmowXoONSIOHrmKioio6qTVGbIqQRg83myr?= =?us-ascii?Q?MiGQ9Pbea4M77M6dnbc7JamOwCpuZyg//FUybGiGQ5J2SYZ2sN92K5KJLcgx?= =?us-ascii?Q?bmOsNlqIn12hjUxh7+Ux3vUdXtRa1WhtJttf6VNso6PgWEhyUJAl+a1E3kRH?= =?us-ascii?Q?H78sVvOe5nXifgGOktUSJNgpozxWPoTtzDVjlMnjA3dlKhRNf8FKQISU8Va9?= =?us-ascii?Q?9rnA+KRciF22tedV0ys/Vxu+diHhuaCQ4p86gJ/3WPEfdf3dkYbLxbhN1EK3?= =?us-ascii?Q?loESVsFtHCaBVpudlZ1mg+iDNbKuDbM8d2YX/JHYuUsWXNPxqeEW+kx9Mkj1?= =?us-ascii?Q?jXOFiNpUIJ1GqPR+X0+lF9CGbJFeDGy1eY3lNgI0IrpgQmYY8ZcfIli6Mhlv?= =?us-ascii?Q?DpVrPCbSsanA3V06+ATLr1aSKkLRRp1zsfF4rhPD2Er9wHa0RCIrrdnf4eOP?= =?us-ascii?Q?C2KsNfHqCJ1wjXvP0KpZ0d2jW0peJftPkiO714q/83JQ2U+N+VtjIhWkTEhJ?= =?us-ascii?Q?UFsyrxLl4TvZ06DLaVMLC0Dz2UjeM8UjJ+UJff3DWyfcMAcFKBRD9deyvfW2?= =?us-ascii?Q?XzeF27oDmauD/LHMF+nwstScUXGqx28MXq2g85n30FeyCQshSizLjhafeC3y?= =?us-ascii?Q?Bt5XvYM3DPmkEQoVNss28ykmCTv0YPEG19TVacZVKb/DZZZqcrabw5dbOY3b?= =?us-ascii?Q?CrENWaYZBzVQ9Kv+tm+MaX7b9s/ve3JVnYgecA9iIcLiX8x9t2Ue7s8cqxND?= =?us-ascii?Q?npFq02g5Ea200gmozqgRyExS82qgZnrf7xzYlrz2G8Xw51UdYtEowER5Iuhl?= =?us-ascii?Q?lB6vPWJb5BXwVwytYWJAr+edUsShCCm3wbL++98wLTlZ8VwELnRCRuhVQNrs?= =?us-ascii?Q?b1wLCkxW7dJbXd6cOtYnyjGl?= 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: PH0PR18MB4086.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75f21c9e-526b-4400-d06e-08d8ef959ece X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Mar 2021 13:55:16.4722 (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: 3Ep/7w91MWB8pVyHIjGADwp3evWpVwPdW5+gQSZgU5YwQW/m1pqIWYGiQCnFK5uFxrWtjxJ0vNeG/E/s7LUnsO7Wykkl6q7WZCnLTPFYR3o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB3878 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-03-25_03:2021-03-24, 2021-03-25 signatures=0 Subject: Re: [dpdk-dev] [dpdk-dev v21.11] [PATCH v5 8/8] eventdev: simplify Rx adapter event vector config 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 Sender: "dev" >> From: pbhagavatula@marvell.com >> Sent: Wednesday, March 24, 2021 10:35 AM >> To: jerinj@marvell.com; Jayatheerthan, Jay >; Carrillo, Erik G >; Gujjar, >> Abhinandan S ; McDaniel, Timothy >; hemant.agrawal@nxp.com; Van >> Haaren, Harry ; mattias.ronnblom >; Ma, Liang J >> ; Ray Kinsella ; Neil Horman > >> Cc: dev@dpdk.org; Pavan Nikhilesh >> Subject: [dpdk-dev v21.11] [PATCH v5 8/8] eventdev: simplify Rx >adapter event vector config >> >> From: Pavan Nikhilesh >> >> Include vector configuration into the structure >> ``rte_event_eth_rx_adapter_queue_conf`` used when configuring rest >> of the Rx adapter ethernet device Rx queue parameters. >> This simplifies event vector configuration as it avoids splitting >> configuration per Rx queue. >> >> Signed-off-by: Pavan Nikhilesh >> --- >> app/test-eventdev/test_pipeline_common.c | 16 +- >> lib/librte_eventdev/eventdev_pmd.h | 29 --- >> .../rte_event_eth_rx_adapter.c | 168 ++++++------------ >> .../rte_event_eth_rx_adapter.h | 27 --- >> lib/librte_eventdev/version.map | 1 - >> 5 files changed, 57 insertions(+), 184 deletions(-) >> >> diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test- >eventdev/test_pipeline_common.c >> index d5ef90500..76aee254b 100644 >> --- a/app/test-eventdev/test_pipeline_common.c >> +++ b/app/test-eventdev/test_pipeline_common.c >> @@ -331,7 +331,6 @@ pipeline_event_rx_adapter_setup(struct >evt_options *opt, uint8_t stride, >> uint16_t prod; >> struct rte_mempool *vector_pool =3D NULL; >> struct rte_event_eth_rx_adapter_queue_conf queue_conf; >> - struct rte_event_eth_rx_adapter_event_vector_config >vec_conf; >> >> memset(&queue_conf, 0, >> sizeof(struct >rte_event_eth_rx_adapter_queue_conf)); >> @@ -397,8 +396,12 @@ pipeline_event_rx_adapter_setup(struct >evt_options *opt, uint8_t stride, >> } >> >> if (cap & >RTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR) { >> + queue_conf.vector_sz =3D opt- >>vector_size; >> + queue_conf.vector_timeout_ns =3D >> + opt->vector_tmo_nsec; >> queue_conf.rx_queue_flags |=3D >> > RTE_EVENT_ETH_RX_ADAPTER_QUEUE_EVENT_VECTOR; >> + queue_conf.vector_mp =3D vector_pool; >> } else { >> evt_err("Rx adapter doesn't support >event vector"); >> return -EINVAL; >> @@ -418,17 +421,6 @@ pipeline_event_rx_adapter_setup(struct >evt_options *opt, uint8_t stride, >> return ret; >> } >> >> - if (opt->ena_vector) { >> - vec_conf.vector_sz =3D opt->vector_size; >> - vec_conf.vector_timeout_ns =3D opt- >>vector_tmo_nsec; >> - vec_conf.vector_mp =3D vector_pool; >> - if >(rte_event_eth_rx_adapter_queue_event_vector_config( >> - prod, prod, -1, &vec_conf) < 0) { >> - evt_err("Failed to configure event >vectorization for Rx adapter"); >> - return -EINVAL; >> - } >> - } >> - >> if (!(cap & >RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT)) { >> uint32_t service_id =3D -1U; >> >> diff --git a/lib/librte_eventdev/eventdev_pmd.h >b/lib/librte_eventdev/eventdev_pmd.h >> index 0f724ac85..63b3bc4b5 100644 >> --- a/lib/librte_eventdev/eventdev_pmd.h >> +++ b/lib/librte_eventdev/eventdev_pmd.h >> @@ -667,32 +667,6 @@ typedef int >(*eventdev_eth_rx_adapter_vector_limits_get_t)( >> const struct rte_eventdev *dev, const struct rte_eth_dev >*eth_dev, >> struct rte_event_eth_rx_adapter_vector_limits *limits); >> >> -struct rte_event_eth_rx_adapter_event_vector_config; >> -/** >> - * Enable event vector on an given Rx queue of a ethernet devices >belonging to >> - * the Rx adapter. >> - * >> - * @param dev >> - * Event device pointer >> - * >> - * @param eth_dev >> - * Ethernet device pointer >> - * >> - * @param rx_queue_id >> - * The Rx queue identifier >> - * >> - * @param config >> - * Pointer to the event vector configuration structure. >> - * >> - * @return >> - * - 0: Success. >> - * - <0: Error code returned by the driver function. >> - */ >> -typedef int (*eventdev_eth_rx_adapter_event_vector_config_t)( >> - const struct rte_eventdev *dev, const struct rte_eth_dev >*eth_dev, >> - int32_t rx_queue_id, >> - const struct rte_event_eth_rx_adapter_event_vector_config >*config); >> - >> typedef uint32_t rte_event_pmd_selftest_seqn_t; >> extern int rte_event_pmd_selftest_seqn_dynfield_offset; >> >> @@ -1118,9 +1092,6 @@ struct rte_eventdev_ops { >> eventdev_eth_rx_adapter_vector_limits_get_t >> eth_rx_adapter_vector_limits_get; >> /**< Get event vector limits for the Rx adapter */ >> - eventdev_eth_rx_adapter_event_vector_config_t >> - eth_rx_adapter_event_vector_config; >> - /**< Configure Rx adapter with event vector */ >> >> eventdev_timer_adapter_caps_get_t timer_adapter_caps_get; >> /**< Get timer adapter capabilities */ >> diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c >b/lib/librte_eventdev/rte_event_eth_rx_adapter.c >> index c71990078..a1990637f 100644 >> --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c >> +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c >> @@ -1882,6 +1882,25 @@ rxa_add_queue(struct >rte_event_eth_rx_adapter *rx_adapter, >> } else >> qi_ev->flow_id =3D 0; >> >> + if (conf->rx_queue_flags & >> + RTE_EVENT_ETH_RX_ADAPTER_QUEUE_EVENT_VECTOR) { >> + queue_info->ena_vector =3D 1; >> + qi_ev->event_type =3D >RTE_EVENT_TYPE_ETH_RX_ADAPTER_VECTOR; >> + rxa_set_vector_data(queue_info, conf->vector_sz, >> + conf->vector_timeout_ns, conf- >>vector_mp, >> + rx_queue_id, dev_info->dev->data- >>port_id); >> + rx_adapter->ena_vector =3D 1; >> + rx_adapter->vector_tmo_ticks =3D >> + rx_adapter->vector_tmo_ticks >> + ? RTE_MIN(queue_info->vector_data >> + .vector_timeout_ticks, >> + rx_adapter- >>vector_tmo_ticks) >> + : queue_info- >>vector_data.vector_timeout_ticks; >> + rx_adapter->vector_tmo_ticks <<=3D 1; > >Any reason why we left shift here ? Applicable in patch 4/8 as well. Just so that we have half the precision of the lowest timeout, helps to=20 Maintain accuracy. > >> + TAILQ_INIT(&rx_adapter->vector_list); > >Can doing TAILQ_INIT every time a queue is added cause existing >elements to be wiped out ? Applicable in patch 4/8 as well. I don't think queues can be added when adapter is already started rxa_sw_add Isn't thready safe. > >> + rx_adapter->prev_expiry_ts =3D 0; > >Can setting this every time a queue is added affect existing queues >created with vector support and passing traffic ? Applicable in patch 4/8 >as well. Same as above. > >> + } >> + >> rxa_update_queue(rx_adapter, dev_info, rx_queue_id, 1); >> if (rxa_polled_queue(dev_info, rx_queue_id)) { >> rx_adapter->num_rx_polled +=3D !pollq; >> @@ -1907,44 +1926,6 @@ rxa_add_queue(struct >rte_event_eth_rx_adapter *rx_adapter, >> } >> } >> >> -static void >> -rxa_sw_event_vector_configure( >> - struct rte_event_eth_rx_adapter *rx_adapter, uint16_t >eth_dev_id, >> - int rx_queue_id, >> - const struct rte_event_eth_rx_adapter_event_vector_config >*config) >> -{ >> - struct eth_device_info *dev_info =3D &rx_adapter- >>eth_devices[eth_dev_id]; >> - struct eth_rx_queue_info *queue_info; >> - struct rte_event *qi_ev; >> - >> - if (rx_queue_id =3D=3D -1) { >> - uint16_t nb_rx_queues; >> - uint16_t i; >> - >> - nb_rx_queues =3D dev_info->dev->data->nb_rx_queues; >> - for (i =3D 0; i < nb_rx_queues; i++) >> - rxa_sw_event_vector_configure(rx_adapter, >eth_dev_id, i, >> - config); >> - return; >> - } >> - >> - queue_info =3D &dev_info->rx_queue[rx_queue_id]; >> - qi_ev =3D (struct rte_event *)&queue_info->event; >> - queue_info->ena_vector =3D 1; >> - qi_ev->event_type =3D >RTE_EVENT_TYPE_ETH_RX_ADAPTER_VECTOR; >> - rxa_set_vector_data(queue_info, config->vector_sz, >> - config->vector_timeout_ns, config- >>vector_mp, >> - rx_queue_id, dev_info->dev->data->port_id); >> - rx_adapter->ena_vector =3D 1; >> - rx_adapter->vector_tmo_ticks =3D >> - rx_adapter->vector_tmo_ticks ? >> - RTE_MIN(config->vector_timeout_ns << 1, >> - rx_adapter->vector_tmo_ticks) : >> - config->vector_timeout_ns << 1; >> - rx_adapter->prev_expiry_ts =3D 0; >> - TAILQ_INIT(&rx_adapter->vector_list); >> -} >> - >> static int rxa_sw_add(struct rte_event_eth_rx_adapter *rx_adapter, >> uint16_t eth_dev_id, >> int rx_queue_id, >> @@ -2258,6 +2239,7 @@ >rte_event_eth_rx_adapter_queue_add(uint8_t id, >> struct rte_event_eth_rx_adapter *rx_adapter; >> struct rte_eventdev *dev; >> struct eth_device_info *dev_info; >> + struct rte_event_eth_rx_adapter_vector_limits limits; >> >> RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, - >EINVAL); >> RTE_ETH_VALID_PORTID_OR_ERR_RET(eth_dev_id, -EINVAL); >> @@ -2294,6 +2276,39 @@ >rte_event_eth_rx_adapter_queue_add(uint8_t id, >> return -EINVAL; >> } >> >> + if (queue_conf->rx_queue_flags & >> + RTE_EVENT_ETH_RX_ADAPTER_QUEUE_EVENT_VECTOR) { > >Perhaps, you could move the previous if condition here and just check >for (cap & RTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR) No, the above check is not a capability check, it is to check if applicatio= n requested to enable vectorization for this queue or not. > >> + ret =3D rte_event_eth_rx_adapter_vector_limits_get( >> + rx_adapter->eventdev_id, eth_dev_id, &limits); >> + if (ret < 0) { >> + RTE_EDEV_LOG_ERR("Failed to get event >device vector limits," >> + " eth port: %" PRIu16 >> + " adapter id: %" PRIu8, >> + eth_dev_id, id); >> + return -EINVAL; >> + } >> + if (queue_conf->vector_sz < limits.min_sz || >> + queue_conf->vector_sz > limits.max_sz || >> + queue_conf->vector_timeout_ns < >limits.min_timeout_ns || >> + queue_conf->vector_timeout_ns > >limits.max_timeout_ns || >> + queue_conf->vector_mp =3D=3D NULL) { >> + RTE_EDEV_LOG_ERR("Invalid event vector >configuration," >> + " eth port: %" PRIu16 >> + " adapter id: %" PRIu8, >> + eth_dev_id, id); >> + return -EINVAL; >> + } >> + if (queue_conf->vector_mp->elt_size < >> + (sizeof(struct rte_event_vector) + >> + (sizeof(uintptr_t) * queue_conf->vector_sz))) { >> + RTE_EDEV_LOG_ERR("Invalid event vector >configuration," >> + " eth port: %" PRIu16 >> + " adapter id: %" PRIu8, >> + eth_dev_id, id); >> + return -EINVAL; >> + } >> + } >> + >> if ((cap & >RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ) =3D=3D 0 && >> (rx_queue_id !=3D -1)) { >> RTE_EDEV_LOG_ERR("Rx queues can only be connected >to single " >> @@ -2487,83 +2502,6 @@ >rte_event_eth_rx_adapter_queue_del(uint8_t id, uint16_t eth_dev_id, >> return ret; >> } >> >> -int >> -rte_event_eth_rx_adapter_queue_event_vector_config( >> - uint8_t id, uint16_t eth_dev_id, int32_t rx_queue_id, >> - struct rte_event_eth_rx_adapter_event_vector_config *config) >> -{ >> - struct rte_event_eth_rx_adapter_vector_limits limits; >> - struct rte_event_eth_rx_adapter *rx_adapter; >> - struct rte_eventdev *dev; >> - uint32_t cap; >> - int ret; >> - >> - RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, - >EINVAL); >> - RTE_ETH_VALID_PORTID_OR_ERR_RET(eth_dev_id, -EINVAL); >> - >> - rx_adapter =3D rxa_id_to_adapter(id); >> - if ((rx_adapter =3D=3D NULL) || (config =3D=3D NULL)) >> - return -EINVAL; >> - >> - dev =3D &rte_eventdevs[rx_adapter->eventdev_id]; >> - ret =3D rte_event_eth_rx_adapter_caps_get(rx_adapter- >>eventdev_id, >> - eth_dev_id, &cap); >> - if (ret) { >> - RTE_EDEV_LOG_ERR("Failed to get adapter caps edev >%" PRIu8 >> - "eth port %" PRIu16, >> - id, eth_dev_id); >> - return ret; >> - } >> - >> - if (!(cap & >RTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR)) { >> - RTE_EDEV_LOG_ERR("Event vectorization is not >supported," >> - " eth port: %" PRIu16 " adapter id: %" >PRIu8, >> - eth_dev_id, id); >> - return -EINVAL; >> - } >> - >> - ret =3D rte_event_eth_rx_adapter_vector_limits_get( >> - rx_adapter->eventdev_id, eth_dev_id, &limits); >> - if (ret) { >> - RTE_EDEV_LOG_ERR("Failed to get vector limits edev >%" PRIu8 >> - "eth port %" PRIu16, >> - rx_adapter->eventdev_id, eth_dev_id); >> - return ret; >> - } >> - >> - if (config->vector_sz < limits.min_sz || >> - config->vector_sz > limits.max_sz || >> - config->vector_timeout_ns < limits.min_timeout_ns || >> - config->vector_timeout_ns > limits.max_timeout_ns || >> - config->vector_mp =3D=3D NULL) { >> - RTE_EDEV_LOG_ERR("Invalid event vector >configuration," >> - " eth port: %" PRIu16 " adapter id: %" >PRIu8, >> - eth_dev_id, id); >> - return -EINVAL; >> - } >> - if (config->vector_mp->elt_size < >> - (sizeof(struct rte_event_vector) + >> - (sizeof(uintptr_t) * config->vector_sz))) { >> - RTE_EDEV_LOG_ERR("Invalid event vector >configuration," >> - " eth port: %" PRIu16 " adapter id: %" >PRIu8, >> - eth_dev_id, id); >> - return -EINVAL; >> - } >> - >> - if (cap & >RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT) { >> - RTE_FUNC_PTR_OR_ERR_RET( >> - *dev->dev_ops- >>eth_rx_adapter_event_vector_config, >> - -ENOTSUP); >> - ret =3D dev->dev_ops- >>eth_rx_adapter_event_vector_config( >> - dev, &rte_eth_devices[eth_dev_id], >rx_queue_id, config); >> - } else { >> - rxa_sw_event_vector_configure(rx_adapter, >eth_dev_id, >> - rx_queue_id, config); >> - } >> - >> - return ret; >> -} >> - >> int >> rte_event_eth_rx_adapter_vector_limits_get( >> uint8_t dev_id, uint16_t eth_port_id, >> diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.h >b/lib/librte_eventdev/rte_event_eth_rx_adapter.h >> index 7407cde00..3f8b36229 100644 >> --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.h >> +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.h >> @@ -171,9 +171,6 @@ struct rte_event_eth_rx_adapter_queue_conf >{ >> * The event adapter sets ev.event_type to >RTE_EVENT_TYPE_ETHDEV in the >> * enqueued event. >> */ >> -}; >> - >> -struct rte_event_eth_rx_adapter_event_vector_config { >> uint16_t vector_sz; >> /**< >> * Indicates the maximum number for mbufs to combine and >form a vector. >> @@ -548,30 +545,6 @@ int >rte_event_eth_rx_adapter_vector_limits_get( >> uint8_t dev_id, uint16_t eth_port_id, >> struct rte_event_eth_rx_adapter_vector_limits *limits); >> >> -/** >> - * Configure event vectorization for a given ethernet device queue, >that has >> - * been added to a event eth Rx adapter. >> - * >> - * @param id >> - * The identifier of the ethernet Rx event adapter. >> - * >> - * @param eth_dev_id >> - * The identifier of the ethernet device. >> - * >> - * @param rx_queue_id >> - * Ethernet device receive queue index. >> - * If rx_queue_id is -1, then all Rx queues configured for the etherne= t >device >> - * are configured with event vectorization. >> - * >> - * @return >> - * - 0: Success, Receive queue configured correctly. >> - * - <0: Error code on failure. >> - */ >> -__rte_experimental >> -int rte_event_eth_rx_adapter_queue_event_vector_config( >> - uint8_t id, uint16_t eth_dev_id, int32_t rx_queue_id, >> - struct rte_event_eth_rx_adapter_event_vector_config >*config); >> - >> #ifdef __cplusplus >> } >> #endif >> diff --git a/lib/librte_eventdev/version.map >b/lib/librte_eventdev/version.map >> index 902df0ae3..34c1c830e 100644 >> --- a/lib/librte_eventdev/version.map >> +++ b/lib/librte_eventdev/version.map >> @@ -142,7 +142,6 @@ EXPERIMENTAL { >> #added in 21.05 >> rte_event_vector_pool_create; >> rte_event_eth_rx_adapter_vector_limits_get; >> - rte_event_eth_rx_adapter_queue_event_vector_config; >> }; >> >> INTERNAL { >> -- >> 2.17.1