From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A4EEC433EF for ; Tue, 7 Sep 2021 06:26:09 +0000 (UTC) Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by mail.kernel.org (Postfix) with ESMTP id 9DF9260F92 for ; Tue, 7 Sep 2021 06:26:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 9DF9260F92 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dpdk.org Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8CA23410EB; Tue, 7 Sep 2021 08:26:07 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 6C52440DF8 for ; Tue, 7 Sep 2021 08:26:06 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10099"; a="219801406" X-IronPort-AV: E=Sophos;i="5.85,274,1624345200"; d="scan'208";a="219801406" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Sep 2021 23:26:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,274,1624345200"; d="scan'208";a="694860782" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga005.fm.intel.com with ESMTP; 06 Sep 2021 23:26:05 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 6 Sep 2021 23:26:05 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 6 Sep 2021 23:26:04 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Mon, 6 Sep 2021 23:26:04 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.107) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Mon, 6 Sep 2021 23:26:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SneuE76ovLleCeePpe+lqmZSjAhww73gNNbcZEjTW8+18cNXOqEonPXs8fmp8A+DW7SJFSda0Zl87re4M8aNRdGjTQmhAPQP/WeaQ6hcJWP5VzUmD8tAyRmZFTckSHkJYXH9YfX3Zoxjk0S0gapD786lL0E20XA4PfjIRDkqcT8i3AhZv2FV/5QFwigE2HO7r0oWxKkwmroP/X/Nz58nwWSTDCG8TB/FJ16/ggMjEscDdvGu1C0kcZdoqhqvvcu8Fcbf4hj+9t3K5Ii7oxwD7ffPg9ZW7sXVJ2LOTdOsvznYqDrs5YXDpaT1Jy5gRxCydwKvA9xndnZE46XFFGHzNg== 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; bh=JcavVMzka4sd2jq8o7wyyVxz5qgZF1k8TXzQgQ8YnKA=; b=DlAubD3m1yI0VXNgNjIbzUciWxMYQEFAxq0zGSeljZMaO6f2vfNu3qpaNZlySEEH0CfZk64KmNnej5+yG2aCU03UMpJ1g0FWAVFYVFl0vcmUUu2R8H4MCUQmBw2TFwyYCVtj2RBsE0r4/D0MKbvBsAn+J3igIrsgyHnwsOF/P6cM8WfsrAuwZqawSZWxu4RMn0yQVQ+gXoX5pOYkdOxCJbphGXOJtyNDsH5cDJBN2LgJHj1a2RZGLkXEXf7QUBBc4oteqMQZEh41VMbxgIdNHn1fDi6QHDQNepwEnbHt+eBlUd/65Rh6aggHPgpHQIhA/GRNDu2Uj3V6m075D19vlg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JcavVMzka4sd2jq8o7wyyVxz5qgZF1k8TXzQgQ8YnKA=; b=wr/uDDOiJDsdDiSmbS2G4xwYG/xkcj3B4Vh1WmU8+HaQOVRFVtb3CTw2OTaET/n+8WFaPO+9uRV9ZmcD+xvJCgxl1zOcxRxiZ++0pnVfWVFcfvC9PqAk+kPiGzf5Y4QJuImBIzTeOWmxpCTzVtWX/7f/tcRX3CLgSSwpHfsXKOY= Received: from SN6PR11MB3117.namprd11.prod.outlook.com (2603:10b6:805:d7::32) by SA2PR11MB5148.namprd11.prod.outlook.com (2603:10b6:806:11e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.21; Tue, 7 Sep 2021 06:25:57 +0000 Received: from SN6PR11MB3117.namprd11.prod.outlook.com ([fe80::a140:8726:8fcb:6809]) by SN6PR11MB3117.namprd11.prod.outlook.com ([fe80::a140:8726:8fcb:6809%7]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 06:25:57 +0000 From: "Jayatheerthan, Jay" To: "Kundapura, Ganapati" , "jerinjacobk@gmail.com" CC: "dev@dpdk.org" Thread-Topic: [PATCH] eventdev: add rx queue info get api Thread-Index: AQHXo6pcm/2hkKsCBkmf1pWfla3q96uYGSgg Date: Tue, 7 Sep 2021 06:25:57 +0000 Message-ID: References: <20210907053642.4093569-1-ganapati.kundapura@intel.com> In-Reply-To: <20210907053642.4093569-1-ganapati.kundapura@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6fd6b7f4-efe9-4de1-5f51-08d971c85a71 x-ms-traffictypediagnostic: SA2PR11MB5148: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:561; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qVkM2xejUL63jU8g1Qa6ilVSssqqoXb6dPMe5Dj47QvXQvk6LSTX/q7/KY8IFM9WSBdVNZv0vwD31gaI0wvAeSymEz6QNedUpjfveTPhN8tp/0n/8IWykcZNSq2WTrDbPRO2N9m/aN675iWQh+ctcb0zQvkqUxoOYVeqJtVEY+SIe8Y73yERmm9QwRDSsLwUqrukgJs1iPrnN7IaTfoCDPyPfLYAgzvvKxZr5k1dQ2GJnlRa1f84Eyfmjws2h/QnIP0B/Zz2lBL6PCXp4D5h7Jrync6Godz728FdycQi9ciU10zf+FYLg1cyD8wxPPd6xPqQYOj2M4/Z6Kq2pxwpN3u0JD3UvMQchc/+VxPqyVDK1U+SwDGZg5pwbv9OHGz8Xwm/JHC7KoAljWvsg5Jy2anO/nKjb9yr+dfBXUec+JCeoECm3I3ItFwBkoMfBU+ETg3TRuRcUUZ4C5f8fhpMIhzbUa3oYzHdLyPk+xgO9Ag8ibFR8f3ERiuzWaGE2RQVj1iw5nPtItjXNUAFmgCklLJHiFq2bwufZUej2NyVD+/bJM9ILOdsGYxwgi0SnnPbNJFx6fT8wirNgrqeFN3ajyDdYBDPHZvZomGWlK7qo4aHIUZbrMduXdFoypUb14VcdpTLTSqFgSGLTFvssSzfWMpbZpAE09tAB+PO69fWndC9+i0dfWxBW26+MVo46F+uAxW9ipoJiUFrh1ZJILPLJA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB3117.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(7696005)(52536014)(66556008)(38070700005)(66476007)(66446008)(8936002)(9686003)(508600001)(110136005)(33656002)(71200400001)(316002)(5660300002)(2906002)(83380400001)(38100700002)(86362001)(4326008)(186003)(53546011)(8676002)(30864003)(122000001)(55236004)(55016002)(26005)(66946007)(64756008)(6506007)(76116006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?KVPqMtlYqizT4JDvIFLQ42Qcw69ob1XRu+WiASqFSLYIMJsprlhDvuZJpMiu?= =?us-ascii?Q?X9BUU5POfcrgCgBIq62p8mVzMJiOIQh+Z2BAwOOmJdsbU0B6U658CYYvSWzH?= =?us-ascii?Q?7lYgUgxaLPHgxCT9QqiMqA26HgQuAHS4fMGhEm0NrTmiI71XbzryG5H4EyXu?= =?us-ascii?Q?NeZs8n+c91NgsWPtI7xfQC5YEuhyDKTXRuEOPzYDx0QajMaeQggHgWiTvr12?= =?us-ascii?Q?zjjQHpHa4viPiD1ug4CbBdIMHRRRxxG9bfL4Jy/rgPYlqrnNGWPsjuzxVdtZ?= =?us-ascii?Q?lZSMOMMSKVHgyHOuAeVVvC8NPj5fD8TcdLboMT6lEd0nDhEEpV+1ZAnofSPg?= =?us-ascii?Q?+szYTQQBxxD8ebpnqSAQ/JDzkcqIJDIYPHWRYc3LhqRp4G/FB3o4Iq7SYv8U?= =?us-ascii?Q?D/gXplXNHtQRbmzXaq9+jAg/eX6H7R/6Cj56A9vdUOLH8r5+2cOC2xmF1LLe?= =?us-ascii?Q?W0Zxe3YIyFc34S+bE31drxMsLUuH/I8h+oucRe8aaRqROqcVeKnnd4lbqUSB?= =?us-ascii?Q?yNYbCIbHA3boxKrahOTdADy77V1dpX8nbvzF8m5benpF/i44DluqVzTNY53A?= =?us-ascii?Q?samvlCJFzom+fg6hY4lK5FUmRC7CkCT+8GjUX2qxB/BjDkaglWxl8JireE6k?= =?us-ascii?Q?afr7FcsYIT0AiV5eMy8cVxTFoOqPyvGZ7cRFUhQlmidMII7RZuyVByiY6UmE?= =?us-ascii?Q?HJrtZA25nZUB5xygaAiV3KaHBmDwf68O/qMs7JwBRDqN8R6+gPtQcguvRDfO?= =?us-ascii?Q?oyaLTDqvT7DFHigfkjVuEFnFlrDYjI3kY+U8EYVbceeFtHEkDoWE3uy8KXgx?= =?us-ascii?Q?DkzHXgB4ckl6zteMvAKYQqQpK6bK12BwonQawvH5GNtWJdC9thaQDqFlMqcj?= =?us-ascii?Q?0rff2i0bLB8PcSGnE2w8HZBDtQo0WTMUagz4FGN9+az56XYUCMV0DZJOenDG?= =?us-ascii?Q?FBdwrVDYpNHq1TYPcsoulugdkSt9iUwqSE4N2WE3sNOsakYXWGyEiRLJkP4T?= =?us-ascii?Q?hLR6gFNhOSDwXuIRVeQRJrOmCCupb9N9TILOnBLUXgD/PxS7RYPC9aHT7rFk?= =?us-ascii?Q?QQBv8C4mSLAgHuv8sLAPlfNxNhb2X8y558iaTMGMiXZdu4KqDsdDnAVPjryo?= =?us-ascii?Q?mi3E4pi9CnGgWq2qXgxnTdYX/8eKbylywJsE42zRswvdZm03mPIbYf0HqxhA?= =?us-ascii?Q?5LaoKENXnySiaAz0senGwwqOyBV+bVz83zt6zw/P7flW+wV0CG+SUiPYegwy?= =?us-ascii?Q?+irO/KdFU7Qz8Zd7YdAgmBqOrnuJkyoA0uDV6Mh9/qXSYE7juHwaDiw+jOxT?= =?us-ascii?Q?zm/C3GjOKFUv9bGcMZKPkHAX?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB3117.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6fd6b7f4-efe9-4de1-5f51-08d971c85a71 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Sep 2021 06:25:57.3383 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fjoQ5bbPMZ8Z2kW9nmpii1nWFOlywrN/SjF9u3lnUEb1kokbrzlrkNlX511kPFHyT+dgsrGncCXUPjT4TQFT3uKrdYwQeBlUglBSHs+PDRk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5148 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH] eventdev: add rx queue info get api 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" Hi Ganapati, Could you split these patches to logical units to make it easy to review ? = In addition, add patch version in subject field. -Jay > -----Original Message----- > From: Kundapura, Ganapati > Sent: Tuesday, September 7, 2021 11:07 AM > To: Jayatheerthan, Jay ; jerinjacobk@gmail.c= om > Cc: dev@dpdk.org > Subject: [PATCH] eventdev: add rx queue info get api >=20 > Added rte_event_eth_rx_adapter_queue_info_get() API to get rx queue > information - event queue identifier, flags for handling received packets= , > schedular type, event priority, polling frequency of the receive queue > and flow identifier in rte_event_eth_rx_adapter_queue_info structure >=20 > Signed-off-by: Ganapati Kundapura >=20 > --- > v2: > * build failed due to missing entry in version.map > * added entry in version.map > --- > app/test/test_event_eth_rx_adapter.c | 22 +++++++ > .../prog_guide/event_ethernet_rx_adapter.rst | 8 +++ > lib/eventdev/eventdev_pmd.h | 31 +++++++++ > lib/eventdev/rte_event_eth_rx_adapter.c | 76 ++++++++++++++++= ++++++ > lib/eventdev/rte_event_eth_rx_adapter.h | 71 ++++++++++++++++= ++++ > lib/eventdev/version.map | 1 + > 6 files changed, 209 insertions(+) >=20 > diff --git a/app/test/test_event_eth_rx_adapter.c b/app/test/test_event_e= th_rx_adapter.c > index 9198767..c642e1b 100644 > --- a/app/test/test_event_eth_rx_adapter.c > +++ b/app/test/test_event_eth_rx_adapter.c > @@ -750,6 +750,27 @@ adapter_stats(void) > return TEST_SUCCESS; > } >=20 > +static int > +adapter_queue_info(void) > +{ > + int err; > + struct rte_event_eth_rx_adapter_queue_info queue_info; > + > + err =3D rte_event_eth_rx_adapter_queue_info_get(TEST_INST_ID, TEST_DEV_= ID, > + 0, &queue_info); > + TEST_ASSERT(err =3D=3D 0, "Expected 0 got %d", err); > + > + err =3D rte_event_eth_rx_adapter_queue_info_get(TEST_INST_ID, TEST_DEV_= ID, > + -1, &queue_info); > + TEST_ASSERT(err =3D=3D -EINVAL, "Expected -EINVAL got %d", err); > + > + err =3D rte_event_eth_rx_adapter_queue_info_get(TEST_INST_ID, TEST_DEV_= ID, > + 0, NULL); > + TEST_ASSERT(err =3D=3D -EINVAL, "Expected -EINVAL got %d", err); > + > + return TEST_SUCCESS; > +} > + > static struct unit_test_suite event_eth_rx_tests =3D { > .suite_name =3D "rx event eth adapter test suite", > .setup =3D testsuite_setup, > @@ -762,6 +783,7 @@ static struct unit_test_suite event_eth_rx_tests =3D = { > adapter_multi_eth_add_del), > TEST_CASE_ST(adapter_create, adapter_free, adapter_start_stop), > TEST_CASE_ST(adapter_create, adapter_free, adapter_stats), > + TEST_CASE_ST(adapter_create, adapter_free, adapter_queue_info), > TEST_CASES_END() /**< NULL terminate unit test array */ > } > }; > diff --git a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst b/doc/gu= ides/prog_guide/event_ethernet_rx_adapter.rst > index c01e5a9..9897985 100644 > --- a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst > +++ b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst > @@ -146,6 +146,14 @@ if the callback is supported, and the counts maintai= ned by the service function, > if one exists. The service function also maintains a count of cycles for= which > it was not able to enqueue to the event device. >=20 > +Getting Adapter queue info > +~~~~~~~~~~~~~~~~~~~~~~~~~~ > + > +The ``rte_event_eth_rx_adapter_queue_info_get()`` function reports > +flags for handling received packets, event queue identifier, scheduar ty= pe, > +event priority, polling frequency of the receive queue and flow identifi= er > +in struct ``rte_event_eth_rx_adapter_queue_info``. > + > Interrupt Based Rx Queues > ~~~~~~~~~~~~~~~~~~~~~~~~~~ >=20 > diff --git a/lib/eventdev/eventdev_pmd.h b/lib/eventdev/eventdev_pmd.h > index 0f724ac..20cc0a7 100644 > --- a/lib/eventdev/eventdev_pmd.h > +++ b/lib/eventdev/eventdev_pmd.h > @@ -561,6 +561,35 @@ typedef int (*eventdev_eth_rx_adapter_queue_del_t) > const struct rte_eth_dev *eth_dev, > int32_t rx_queue_id); >=20 > +struct rte_event_eth_rx_adapter_queue_info; > + > +/** > + * Retrieve information about Rx queue. This callback is invoked if > + * the caps returned from the eventdev_eth_rx_adapter_caps_get(, eth_por= t_id) > + * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set. > + * > + * @param dev > + * Event device pointer > + * > + * @param eth_dev > + * Ethernet device pointer > + * > + * @param rx_queue_id > + * Ethernet device receive queue index. > + * > + * @param[out] info > + * Pointer to rte_event_eth_rx_adapter_queue_info structure > + * > + * @return > + * - 0: Success > + * - <0: Error code on failure. > + */ > +typedef int (*eventdev_eth_rx_adapter_queue_info_get_t) > + (const struct rte_eventdev *dev, > + const struct rte_eth_dev *eth_dev, > + uint16_t rx_queue_id, > + struct rte_event_eth_rx_adapter_queue_info *info); > + > /** > * Start ethernet Rx adapter. This callback is invoked if > * the caps returned from eventdev_eth_rx_adapter_caps_get(.., eth_port_= id) > @@ -1107,6 +1136,8 @@ struct rte_eventdev_ops { > /**< Add Rx queues to ethernet Rx adapter */ > eventdev_eth_rx_adapter_queue_del_t eth_rx_adapter_queue_del; > /**< Delete Rx queues from ethernet Rx adapter */ > + eventdev_eth_rx_adapter_queue_info_get_t eth_rx_adapter_queue_info_get; > + /**< Get Rx adapter queue info */ > eventdev_eth_rx_adapter_start_t eth_rx_adapter_start; > /**< Start ethernet Rx adapter */ > eventdev_eth_rx_adapter_stop_t eth_rx_adapter_stop; > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_e= vent_eth_rx_adapter.c > index 7c94c73..98184fb 100644 > --- a/lib/eventdev/rte_event_eth_rx_adapter.c > +++ b/lib/eventdev/rte_event_eth_rx_adapter.c > @@ -2811,3 +2811,79 @@ rte_event_eth_rx_adapter_cb_register(uint8_t id, >=20 > return 0; > } > + > +int > +rte_event_eth_rx_adapter_queue_info_get(uint8_t id, uint16_t eth_dev_id, > + uint16_t rx_queue_id, > + struct rte_event_eth_rx_adapter_queue_info *info) > +{ > + struct rte_eventdev *dev; > + struct eth_device_info *dev_info; > + struct rte_event_eth_rx_adapter *rx_adapter; > + struct eth_rx_queue_info *queue_info; > + struct rte_event *qi_ev; > + int ret; > + uint32_t cap; > + > + RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); > + RTE_ETH_VALID_PORTID_OR_ERR_RET(eth_dev_id, -EINVAL); > + > + if (rx_queue_id >=3D rte_eth_devices[eth_dev_id].data->nb_rx_queues) { > + RTE_EDEV_LOG_ERR("Invalid rx queue_id %u", rx_queue_id); > + return -EINVAL; > + } > + > + if (info =3D=3D NULL) { > + RTE_EDEV_LOG_ERR("Rx queue info cannot be NULL"); > + return -EINVAL; > + } > + > + rx_adapter =3D rxa_id_to_adapter(id); > + if (rx_adapter =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_INTERNAL_PORT) { > + RTE_FUNC_PTR_OR_ERR_RET( > + *dev->dev_ops->eth_rx_adapter_queue_info_get, > + -ENOTSUP); > + ret =3D (*dev->dev_ops->eth_rx_adapter_queue_info_get)(dev, > + &rte_eth_devices[eth_dev_id], > + rx_queue_id, > + info); > + return ret; > + } > + > + dev_info =3D &rx_adapter->eth_devices[eth_dev_id]; > + > + queue_info =3D &dev_info->rx_queue[rx_queue_id]; > + if (!queue_info->queue_enabled) { > + RTE_EDEV_LOG_ERR("Rx queue %u not added", rx_queue_id); > + return -EINVAL; > + } > + > + qi_ev =3D (struct rte_event *)&queue_info->event; > + > + memset(info, 0, sizeof(*info)); > + info->servicing_weight =3D queue_info->wt; > + info->event_queue_id =3D qi_ev->queue_id; > + info->sched_type =3D qi_ev->sched_type; > + info->priority =3D qi_ev->priority; > + info->rx_queue_flags =3D 0; > + if (queue_info->flow_id_mask !=3D 0) { > + info->rx_queue_flags |=3D > + RTE_EVENT_ETH_RX_ADAPTER_QUEUE_FLOW_ID_VALID; > + info->flow_id =3D qi_ev->flow_id; > + } > + > + return 0; > +} > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h b/lib/eventdev/rte_e= vent_eth_rx_adapter.h > index 182dd2e..75c0010 100644 > --- a/lib/eventdev/rte_event_eth_rx_adapter.h > +++ b/lib/eventdev/rte_event_eth_rx_adapter.h > @@ -33,6 +33,7 @@ > * - rte_event_eth_rx_adapter_stop() > * - rte_event_eth_rx_adapter_stats_get() > * - rte_event_eth_rx_adapter_stats_reset() > + * - rte_event_eth_rx_adapter_queue_info_get() > * > * The application creates an ethernet to event adapter using > * rte_event_eth_rx_adapter_create_ext() or rte_event_eth_rx_adapter_cre= ate() > @@ -140,6 +141,56 @@ typedef int (*rte_event_eth_rx_adapter_conf_cb) (uin= t8_t id, uint8_t dev_id, > void *arg); >=20 > /** > + * Rx queue info > + */ > +struct rte_event_eth_rx_adapter_queue_info { > + uint32_t rx_queue_flags; > + /**< Flags for handling received packets > + * @see RTE_EVENT_ETH_RX_ADAPTER_QUEUE_FLOW_ID_VALID > + */ > + uint16_t servicing_weight; > + /**< Relative polling frequency of ethernet receive queue when the > + * adapter uses a service core function for ethernet to event device > + * transfers. If it is set to zero, the Rx queue is interrupt driven > + * (unless rx queue interrupts are not enabled for the ethernet > + * device). > + */ > + > + uint8_t event_queue_id; > + /**< Targeted event queue identifier for the enqueue or > + * dequeue operation. > + * The value must be in the range of > + * [0, nb_event_queues - 1] which previously supplied to > + * rte_event_dev_configure(). > + */ > + > + uint8_t sched_type; > + /**< Scheduler synchronization type (RTE_SCHED_TYPE_*) > + * associated with flow id on a given event queue > + * for the enqueue and dequeue operation. > + */ > + > + uint8_t priority; > + /**< Event priority relative to other events in the > + * event queue. The requested priority should in the > + * range of [RTE_EVENT_DEV_PRIORITY_HIGHEST, > + * RTE_EVENT_DEV_PRIORITY_LOWEST]. > + * The implementation shall normalize the requested > + * priority to supported priority value. > + * Valid when the device has > + * RTE_EVENT_DEV_CAP_EVENT_QOS capability. > + */ > + > + uint32_t flow_id; > + /**< Targeted flow identifier for the enqueue and > + * dequeue operation. > + * The value must be in the range of > + * [0, nb_event_queue_flows - 1] which > + * previously supplied to rte_event_dev_configure(). > + */ > +}; > + > +/** > * Rx queue configuration structure > */ > struct rte_event_eth_rx_adapter_queue_conf { > @@ -575,6 +626,26 @@ int rte_event_eth_rx_adapter_queue_event_vector_conf= ig( > uint8_t id, uint16_t eth_dev_id, int32_t rx_queue_id, > struct rte_event_eth_rx_adapter_event_vector_config *config); >=20 > +/** > + * Retrieve information about Rx queue. > + * > + * @param id > + * Adapter identifier. > + * @param eth_dev_id > + * Port identifier of Ethernet device. > + * @param rx_queue_id > + * Ethernet device receive queue index. > + * @param info > + * Pointer to struct rte_event_eth_rx_adapter_queue_info > + * @return > + * - 0: Success, Receive queue added correctly. > + * - <0: Error code on failure. > + */ > +int rte_event_eth_rx_adapter_queue_info_get(uint8_t id, > + uint16_t eth_dev_id, > + uint16_t rx_queue_id, > + struct rte_event_eth_rx_adapter_queue_info *info); > + > #ifdef __cplusplus > } > #endif > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map > index 8862562..258affd 100644 > --- a/lib/eventdev/version.map > +++ b/lib/eventdev/version.map > @@ -143,6 +143,7 @@ EXPERIMENTAL { > rte_event_vector_pool_create; > rte_event_eth_rx_adapter_vector_limits_get; > rte_event_eth_rx_adapter_queue_event_vector_config; > + rte_event_eth_rx_adapter_queue_info_get; > __rte_eventdev_trace_crypto_adapter_enqueue; > }; >=20 > -- > 2.6.4