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 E1E3F438A2; Fri, 12 Jan 2024 12:34:33 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 781054028C; Fri, 12 Jan 2024 12:34:33 +0100 (CET) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2049.outbound.protection.outlook.com [40.107.220.49]) by mails.dpdk.org (Postfix) with ESMTP id A959B4026E for ; Fri, 12 Jan 2024 12:34:31 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FZZC+jw2qRRPEm6gwvF+p6AGodYYqIXUEeVOpLZWdMewt9LBF9gydXNHhPZP4kpslEI5mCxGIVK4fpLl8zjLWlQimLAtN/STy/tbAfPXBLhrVbjXA0GcXu42Ad5qrIk6sn/6iuxx2ZRu6spKoXryFMzPrWj7CPDfZS0FwuqlYKJfL0/1CMJFrfvgBLFrqaq1K/ohkqZ/kbvkWME/6rwLjGUQz3JHrNEn0Nt95OmXEWZeFbndQfCdFG8txNyBVJ0ad4pzf9PcT/H6ulweXuh+InTiGcK4EuuGc9Gf6is8+lFKqgr5/altGLJeYcVo+cQNcbDKiBHB7WrAzgpxB7q4Uw== 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=1Zvr7nnU24JU62sxElopzZG6IAaVYMGzOJLdoxSEO9Y=; b=JE9hTIQHKCUpoDcuUJfNWOuDmHL4eS4x5ib9JprAMY4O8p5NcGdOgzAr5nBHIRkSYxpTPaEse6Jxp48bru0xxVg10e3QkqEjU/liPXz60seY8KBZp/U8HBZClg+w8k0hYusjeXUckyDRXhJ/Lp14gCX16Po63CCr0wkdGLbDsyk+qA0nOs4qXlnJ2MoTpH+qJhh2tvnzPdiOr1KY+cRuqOPScHxPqEhMDPpOLTGC/UnXvTG8DVWie+u5D8Is3UmDrfWYgAvFPkW+zmGaSjQbC3UnIUt3Vz+jpHlH1lDVbf2sLHZ5g2MlIqNLZRjXtaoFnMkOzxjEvUb61JCXqAj0sw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1Zvr7nnU24JU62sxElopzZG6IAaVYMGzOJLdoxSEO9Y=; b=qJ6sB3O50HT1dRx2dttqvkpDdvo7iZqPopT5ZdjDjC8D72v8GRHButi3ssXuq4LZKSF6Ht2j7XmjVvyWl22kuOfSerK1a00DnwVo4dBoWtwHzQhCEeXRkE0RZjo88tjN+UuUYgPqr99G1KfiyTfX/4gdH7/aVAODAl+lRck3vZs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by DS0PR12MB6392.namprd12.prod.outlook.com (2603:10b6:8:cc::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17; Fri, 12 Jan 2024 11:34:27 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::815a:45e6:cf5e:479f]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::815a:45e6:cf5e:479f%4]) with mapi id 15.20.7181.018; Fri, 12 Jan 2024 11:34:27 +0000 Message-ID: <5251f00a-a039-460d-805b-0325cfced32b@amd.com> Date: Fri, 12 Jan 2024 11:34:11 +0000 User-Agent: Mozilla Thunderbird Subject: Re: [dpdk-dev] [v1] ethdev: support Tx queue used count Content-Language: en-US To: jerinj@marvell.com, dev@dpdk.org, Thomas Monjalon , Andrew Rybchenko Cc: ferruh.yigit@xilinx.com, ajit.khaparde@broadcom.com, aboyer@pensando.io, beilei.xing@intel.com, bruce.richardson@intel.com, chas3@att.com, chenbo.xia@intel.com, ciara.loftus@intel.com, dsinghrawat@marvell.com, ed.czeck@atomicrules.com, evgenys@amazon.com, grive@u256.net, g.singh@nxp.com, zhouguoyang@huawei.com, haiyue.wang@intel.com, hkalra@marvell.com, heinrich.kuhn@corigine.com, hemant.agrawal@nxp.com, hyonkim@cisco.com, igorch@amazon.com, irusskikh@marvell.com, jgrajcia@cisco.com, jasvinder.singh@intel.com, jianwang@trustnetic.com, jiawenwu@trustnetic.com, jingjing.wu@intel.com, johndale@cisco.com, john.miller@atomicrules.com, linville@tuxdriver.com, keith.wiles@intel.com, kirankumark@marvell.com, oulijun@huawei.com, lironh@marvell.com, longli@microsoft.com, mw@semihalf.com, spinler@cesnet.cz, matan@nvidia.com, matt.peters@windriver.com, maxime.coquelin@redhat.com, mk@semihalf.com, humin29@huawei.com, pnalla@marvell.com, ndabilpuram@marvell.com, qiming.yang@intel.com, qi.z.zhang@intel.com, radhac@marvell.com, rahul.lakkireddy@chelsio.com, rmody@marvell.com, rosen.xu@intel.com, sachin.saxena@oss.nxp.com, skoteshwar@marvell.com, shshaikh@marvell.com, shaibran@amazon.com, shepard.siegel@atomicrules.com, asomalap@amd.com, somnath.kotur@broadcom.com, sthemmin@microsoft.com, steven.webster@windriver.com, skori@marvell.com, mtetsuyah@gmail.com, vburru@marvell.com, viacheslavo@nvidia.com, xiao.w.wang@intel.com, cloud.wangxiaoyun@huawei.com, yisen.zhuang@huawei.com, yongwang@vmware.com, xuanziyang2@huawei.com, cristian.dumitrescu@intel.com References: <20231219172948.3909749-1-jerinj@marvell.com> <20240111151745.3800170-1-jerinj@marvell.com> From: Ferruh Yigit Autocrypt: addr=ferruh.yigit@amd.com; keydata= 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 8Zk= In-Reply-To: <20240111151745.3800170-1-jerinj@marvell.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR4P281CA0432.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:d1::18) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|DS0PR12MB6392:EE_ X-MS-Office365-Filtering-Correlation-Id: bbe9e228-3309-4194-369f-08dc13626ed2 X-LD-Processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1fQAvild4KCy2A+yk6oyp4bJgN2uu3eL85xJ5U9gdGsNSf6oMJTWqnTh/nbCKbSfmlLWZHx+IHLISx2h4YjF9+xf/ERF84oZItil+xpHO8ujUDt+763Kdga10t9hdiwOydHgx6vAz8bWmf8eL5KJ+vKgZ24LLqYIT0mloX60GM+dzlUSUU2ZFBfuMOd6pzh23OCwLF+kZkmIfBicV37j3Hs+VD/cJx4pN+aaT1t2AbNlzLuDASrKLxe6JQuHcT/F/Tn52jtLZcPZignKFa+G5IiNguyrLvkExN2IF8vkJC3dOAfMsoXvUDztVzjUsBJub26WvFKMcKul6DPdqDOoY58rOiINluqEJy4mQVlmHo2kH2d+2DPp3azE0WvOgCdkJNv21uzNSlo9lt0kWSVaY3zEN/Aj4lFhlZg074ccm9tG1Tgf9FqzOc5MzZVp3eYeVgb6hs/be+z7BIZdzPqVh01YMG8b/sSgt0GSWibFG9/cQEATKNI7itzpdvJwoAuJdJceKDVZykqGLcky7bORIh2r+H1+BEBr20Ffa8l1BJFzyODNlh7ictoS45wPiD44Q4rhBEjwUlIDCKroYTtgu5o0tliExv5JzVC7lw0m6Si9E66w+TFMfm6qFQSpl4ARjIpuAiprSxfV2qJXC4nP33LpKIMkB9V9MPxCYWf2UM41fVZknNp1PWutqc4//M3a X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4294.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(396003)(376002)(366004)(346002)(39860400002)(230922051799003)(230173577357003)(230273577357003)(451199024)(64100799003)(186009)(1800799012)(66946007)(36756003)(110136005)(66556008)(316002)(66476007)(6666004)(6512007)(6506007)(44832011)(53546011)(478600001)(6486002)(41300700001)(8676002)(8936002)(4326008)(2906002)(7416002)(7406005)(7366002)(5660300002)(38100700002)(83380400001)(31686004)(31696002)(26005)(2616005)(86362001)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ejhUdm9Rd1JhWTVOa3ROSkRvSEdIWG5FQlNPMHljaXZqL3RMeERhbXlRRENr?= =?utf-8?B?Q05hZkM3R0xwMENWK2hHZEpDaVdLalJiMW5Fc2swMTFRNXhSRVRwd3FjVzNo?= =?utf-8?B?bnJISFBGT0toVVVXNGt0enBwYnhXUFlINkhkK0U0amlQdFhlTk5Qc0dJcFAw?= =?utf-8?B?a29PTXJWYkpsL1lCUlN2WDlNUVJlWkF0enExdjhCNlUvODU5R1JES0VZT0w3?= =?utf-8?B?TGhsb1d4SnVCemJLWUxkc04yd2NSOE9VZHBIcnRQaGhrZ2pzbVd6VnNOVzZu?= =?utf-8?B?ZUNmZnYrejNneGQ4dTNGc0NXS0NxYlcrVWYzTWo4TjZacG1uZ05pa2FvQTVV?= =?utf-8?B?TzJJejY0SkRoMlFoQVoyV0tQM3N1Z2crUlVvOFNGMGxCWUJObzByaVBwTU1Z?= =?utf-8?B?Nk1xMUE0ekwwYUJhM3BYOG4yK1dRZysxRlpQSnhsbTkveHNyVTUrYytyT0ls?= =?utf-8?B?SE1YejNCZmdtekgxQ3llbUhyb3Q2VEIwem50TmlzNVBGY3ZBT1JXNFIwUWlk?= =?utf-8?B?ZWlGbExyOTJVL2NRYTRxcVBJWnFLeVE3TTY4V0N6TzdHVlhrY2s1aUZQeHJP?= =?utf-8?B?cXYxTWVDTmtFU0diRTdYNFRmdjhZVm5NQXRLeXNGcUJFaVhGZFVmcUdKUG5t?= =?utf-8?B?Z1NMZExvcEw5ZVFOSWtzdHcwT3Y4V0U1R3JHOGJOSHI0VXNYZ0hEeFV6aXhW?= =?utf-8?B?TEZxMVZBRDVGaWV1VTdMMUdQOXBudXdmMnFweUVqYXV1Sy9nb3ZDN2cwTmQr?= =?utf-8?B?SUZxQVlrWGVJZWp6dVpXUzNRdzNLN1lrYzI2RWZGZ1RzU1N0TDNlZnpuNXVS?= =?utf-8?B?blZxR3ZvUEhXWk55RWhROHZPTGlEc2RnM1VPYjF1TjN6eW0xTVpzMGJjSmJN?= =?utf-8?B?K0FKN2czY3dMTUtPRW42dTBoSnl5Ymt1ZFRUTnRrbndHcW5KelB1T1grdDFX?= =?utf-8?B?R2x1Z2xmQ1g1SU9KNVZoRHNGbFZtcXpEWjFqTk9QeERHMDNobktBRitMcVdx?= =?utf-8?B?U3J0RHM4VGlIRHVKcGZnTk5LYkJnb1FRNjN0emI0eUhxVUtjTWE4RktrM0hn?= =?utf-8?B?bDczQThmV0l1VzFRS3hJelUrdlVkZUFnWkZrOHdRMExac3k2L1BFM1p1Z0NZ?= =?utf-8?B?R3liRmw3NS9POU1BeWM2WUdKaU1BY3lqUkU4M1VFVW5kMlY2MHFvRjhDM1N6?= =?utf-8?B?cjJsRVMwK2lKb0s1cnBVUWttdUFFSTZaVjZnekNhaGpGSVVtN2N4REQ0MTdi?= =?utf-8?B?REYvYW1KdU9yYUdDWjdRUnRsT0lsSUdUeVpEZm4yWVpiWTV2MlNJUDZOaDVJ?= =?utf-8?B?dU15blJ5ZkJ3RXV0bityUVNKZVlrOUJZdXdaRUJLL0pUMW1sV3FmRWhheThn?= =?utf-8?B?Z0dRc3ZSam9uRkxudzZhcSt3NHAydE9WTkhYRTcwNUpTcWdCNHFtT3hnYjQ3?= =?utf-8?B?SEZ4cWhxQ25mRCtkU1VKN2Z2bXArenRlRG51cVNqOVAxSGxmbGhlbndBYWJq?= =?utf-8?B?VTJOUERsMW02ZGpGWG5VVE8zYkhLR05xOTNTb292WjNUdk5kUkY3UHJoSmk0?= =?utf-8?B?WklkYTVMRlQxZllHcVcwRjdsN2EwdVNVYm1YTFNvZVFPblBwYVFvSUdUa2ZL?= =?utf-8?B?SFN6aEJYdlpucTNyeG1rQURiM21QZEwrNXhUVmRES21BSzlNcUxCbXJTYTU2?= =?utf-8?B?SWphYmk1SUE3UjdiZkVOUndzbHhhdEoyYkdsbXVIY000enNXWjdBVUY1OTY4?= =?utf-8?B?R1d6bUZHWmszUzFnYzB1RWQ1L1dUVUhuYTFtZGs5WFJrak5UUDBERHRudmtB?= =?utf-8?B?MElaUlZMaDdrd1lBVnpGQmpkUWNzck56VW9QUzZrR3g1TXBtL2VWR2YvdXJ3?= =?utf-8?B?Y2lTM0J4OG5xVFBRWGZuZHg2MmtPL1FKVEJuUnRzQ3FJc3hwRnBYK3F2Skxl?= =?utf-8?B?VGhYTndEU3BHWnRrWndZK0xFK1VIT09aYXhmQytrR2RqL1puSC9Rb0FpRExD?= =?utf-8?B?b1lTN1hDTmVpV1ptak1wem5QdzEra0o2QXJ6VEVUdHEyaGQ2N0tpMHN1TjRh?= =?utf-8?B?OFVGQkRvVGVGWE9rOHdmWDJya0hoZ3JQTkI3bFNnVWVQYkYwb0N1NWh0cEo3?= =?utf-8?Q?1vjM=3D?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: bbe9e228-3309-4194-369f-08dc13626ed2 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 11:34:27.2296 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EVWVQoZnaY4KIwYXu26ix0fXcvim4ms1ywIbO+cI3zWGJB5dh47rdkt0HdLJgk4T X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6392 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 On 1/11/2024 3:17 PM, jerinj@marvell.com wrote: > From: Jerin Jacob > > Introduce a new API to retrieve the number of used descriptors > in a Tx queue. Applications can leverage this API in the fast path to > inspect the Tx queue occupancy and take appropriate actions based on the > available free descriptors. > > A notable use case could be implementing Random Early Discard (RED) > in software based on Tx queue occupancy. > > Signed-off-by: Jerin Jacob > --- > doc/guides/nics/features.rst | 10 ++++ > doc/guides/nics/features/default.ini | 1 + > lib/ethdev/ethdev_driver.h | 2 + > lib/ethdev/ethdev_private.c | 1 + > lib/ethdev/ethdev_trace_points.c | 3 ++ > lib/ethdev/rte_ethdev.h | 74 ++++++++++++++++++++++++++++ > lib/ethdev/rte_ethdev_core.h | 7 ++- > lib/ethdev/rte_ethdev_trace_fp.h | 8 +++ > lib/ethdev/version.map | 3 ++ > 9 files changed, 108 insertions(+), 1 deletion(-) > As we are adding a new API and dev_ops, is a driver implementation and testpmd/example implementation planned for this release? > rfc..v1: > - Updated API similar to rte_eth_rx_queue_count() where it returns > "used" count instead of "free" count > > diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst > index f7d9980849..0d5a8733fc 100644 > --- a/doc/guides/nics/features.rst > +++ b/doc/guides/nics/features.rst > @@ -962,6 +962,16 @@ management (see :doc:`../prog_guide/power_man` for more details). > > * **[implements] eth_dev_ops**: ``get_monitor_addr`` > > +.. _nic_features_tx_queue_used_count: > + > +Tx queue count > +-------------- > + > +Supports to get the number of used descriptors of a Tx queue. > + > +* **[implements] eth_dev_ops**: ``tx_queue_count``. > +* **[related] API**: ``rte_eth_tx_queue_count()``. > + > Can you please keep the order same with 'default.ini' file, I recognized there is already some mismatch in order but we can fix them later. > .. _nic_features_other: > > Other dev ops not represented by a Feature > diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini > index 806cb033ff..3ef6d45c0e 100644 > --- a/doc/guides/nics/features/default.ini > +++ b/doc/guides/nics/features/default.ini > @@ -59,6 +59,7 @@ Packet type parsing = > Timesync = > Rx descriptor status = > Tx descriptor status = > +Tx queue count = > Existing Rx queue count is not documented, if we are documenting this, can you please add "Rx queue count" in a separate patch? > Basic stats = > Extended stats = > Stats per queue = > diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h > index b482cd12bb..f05f68a67c 100644 > --- a/lib/ethdev/ethdev_driver.h > +++ b/lib/ethdev/ethdev_driver.h > @@ -58,6 +58,8 @@ struct rte_eth_dev { > eth_rx_queue_count_t rx_queue_count; > /** Check the status of a Rx descriptor */ > eth_rx_descriptor_status_t rx_descriptor_status; > + /** Get the number of used Tx descriptors */ > + eth_tx_queue_count_t tx_queue_count; > /** Check the status of a Tx descriptor */ > eth_tx_descriptor_status_t tx_descriptor_status; > /** Pointer to PMD transmit mbufs reuse function */ > diff --git a/lib/ethdev/ethdev_private.c b/lib/ethdev/ethdev_private.c > index a656df293c..626524558a 100644 > --- a/lib/ethdev/ethdev_private.c > +++ b/lib/ethdev/ethdev_private.c > @@ -273,6 +273,7 @@ eth_dev_fp_ops_setup(struct rte_eth_fp_ops *fpo, > fpo->tx_pkt_prepare = dev->tx_pkt_prepare; > fpo->rx_queue_count = dev->rx_queue_count; > fpo->rx_descriptor_status = dev->rx_descriptor_status; > + fpo->tx_queue_count = dev->tx_queue_count; > fpo->tx_descriptor_status = dev->tx_descriptor_status; > fpo->recycle_tx_mbufs_reuse = dev->recycle_tx_mbufs_reuse; > fpo->recycle_rx_descriptors_refill = dev->recycle_rx_descriptors_refill; > diff --git a/lib/ethdev/ethdev_trace_points.c b/lib/ethdev/ethdev_trace_points.c > index 91f71d868b..e618414392 100644 > --- a/lib/ethdev/ethdev_trace_points.c > +++ b/lib/ethdev/ethdev_trace_points.c > @@ -481,6 +481,9 @@ RTE_TRACE_POINT_REGISTER(rte_eth_trace_count_aggr_ports, > RTE_TRACE_POINT_REGISTER(rte_eth_trace_map_aggr_tx_affinity, > lib.ethdev.map_aggr_tx_affinity) > > +RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_queue_count, > + lib.ethdev.tx_queue_count) > + Can you please group this with 'tx_burst' & 'call_tx_callbacks' above? > RTE_TRACE_POINT_REGISTER(rte_flow_trace_copy, > lib.ethdev.flow.copy) > > diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h > index 21e3a21903..af59da9652 100644 > --- a/lib/ethdev/rte_ethdev.h > +++ b/lib/ethdev/rte_ethdev.h > @@ -6803,6 +6803,80 @@ rte_eth_recycle_mbufs(uint16_t rx_port_id, uint16_t rx_queue_id, > __rte_experimental > int rte_eth_buffer_split_get_supported_hdr_ptypes(uint16_t port_id, uint32_t *ptypes, int num); > > +/** > + * @warning > + * @b EXPERIMENTAL: this API may change, or be removed, without prior notice > + * > + * Get the number of used descriptors of a Tx queue > + * > + * This function retrieves the number of used descriptors of a transmit queue. > + * Applications can use this API in the fast path to inspect Tx queue occupancy and take > + * appropriate actions based on the available free descriptors. > + * An example action could be implementing the Random Early Discard (RED). > Above is good, but do you think does it help to mention that intended usacase is QoS, to address the risk Bruce mentioned? > + * > + * Since it's a fast-path function, no check is performed on port_id and > + * tx_queue_id. The caller must therefore ensure that the port is enabled > + * and the queue is configured and running. > + * > + * @param port_id > + * The port identifier of the device. > + * @param tx_queue_id > + * The index of the transmit queue. > + * The value must be in the range [0, nb_tx_queue - 1] previously supplied > + * to rte_eth_dev_configure(). > + * @return > + * The number of used descriptors in the specific queue, or: > + * - (-ENODEV) if *port_id* is invalid. Enabled only when RTE_ETHDEV_DEBUG_TX is enabled > + * - (-EINVAL) if *queue_id* is invalid. Enabled only when RTE_ETHDEV_DEBUG_TX is enabled > + * - (-ENOTSUP) if the device does not support this function. > + * > + * @note This function is designed for fast-path use. > + */ > +__rte_experimental > +static inline int > +rte_eth_tx_queue_count(uint16_t port_id, uint16_t tx_queue_id) > +{ > + struct rte_eth_fp_ops *fops; > + void *qd; > + int rc; > + > +#ifdef RTE_ETHDEV_DEBUG_TX > + if (port_id >= RTE_MAX_ETHPORTS || !rte_eth_dev_is_valid_port(port_id)) { > + RTE_ETHDEV_LOG_LINE(ERR, "Invalid port_id=%u", port_id); > + rc = -ENODEV; > + rte_eth_trace_tx_queue_count(port_id, tx_queue_id, rc); > + return rc; > + } > + > + rc = -EINVAL; > + if (tx_queue_id >= RTE_MAX_QUEUES_PER_PORT) { > + RTE_ETHDEV_LOG_LINE(ERR, "Invalid Tx queue_id=%u for port_id=%u", > + tx_queue_id, port_id); > + rte_eth_trace_tx_queue_count(port_id, tx_queue_id, rc); > + return rc; > + } > +#endif > + > + /* Fetch pointer to Tx queue data */ > + fops = &rte_eth_fp_ops[port_id]; > + qd = fops->txq.data[tx_queue_id]; > + > +#ifdef RTE_ETHDEV_DEBUG_TX > + if (qd == NULL) { > + RTE_ETHDEV_LOG_LINE(ERR, "Invalid Tx queue_id=%u for port_id=%u", > + tx_queue_id, port_id); > + rte_eth_trace_tx_queue_count(port_id, tx_queue_id, rc); > + return rc; > + } > +#endif > + if (fops->tx_queue_count == NULL) > + return -ENOTSUP; > + > + rc = fops->tx_queue_count(qd); > Can you please put an empty line here to have a separate block for trace code? > + rte_eth_trace_tx_queue_count(port_id, tx_queue_id, rc); > + > + return rc; > +} > #ifdef __cplusplus > } > #endif > diff --git a/lib/ethdev/rte_ethdev_core.h b/lib/ethdev/rte_ethdev_core.h > index 4bfaf79c6c..d3f09f390d 100644 > --- a/lib/ethdev/rte_ethdev_core.h > +++ b/lib/ethdev/rte_ethdev_core.h > @@ -60,6 +60,9 @@ typedef uint16_t (*eth_recycle_tx_mbufs_reuse_t)(void *txq, > /** @internal Refill Rx descriptors with the recycling mbufs */ > typedef void (*eth_recycle_rx_descriptors_refill_t)(void *rxq, uint16_t nb); > > +/** @internal Get number of used descriptors on a transmit queue. */ > +typedef int (*eth_tx_queue_count_t)(void *txq); > + Can you please move it above 'tx_descriptor_status', to keep same order kept in many other locations: rx_queue_count rx_descriptor_status tx_queue_count tx_descriptor_status > /** > * @internal > * Structure used to hold opaque pointers to internal ethdev Rx/Tx > @@ -116,7 +119,9 @@ struct rte_eth_fp_ops { > eth_tx_descriptor_status_t tx_descriptor_status; > /** Copy used mbufs from Tx mbuf ring into Rx. */ > eth_recycle_tx_mbufs_reuse_t recycle_tx_mbufs_reuse; > - uintptr_t reserved2[2]; > + /** Get the number of used Tx descriptors. */ > + eth_tx_queue_count_t tx_queue_count; > Similarly, can you please move it above 'tx_descriptor_status'? > + uintptr_t reserved2[1]; > /**@}*/ > > } __rte_cache_aligned; > diff --git a/lib/ethdev/rte_ethdev_trace_fp.h b/lib/ethdev/rte_ethdev_trace_fp.h > index 186271c9ff..c98c488433 100644 > --- a/lib/ethdev/rte_ethdev_trace_fp.h > +++ b/lib/ethdev/rte_ethdev_trace_fp.h > @@ -73,6 +73,14 @@ RTE_TRACE_POINT_FP( > rte_trace_point_emit_u64(count); > ) > > +RTE_TRACE_POINT_FP( > + rte_eth_trace_tx_queue_count, > + RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id, int rc), > + rte_trace_point_emit_u16(port_id); > + rte_trace_point_emit_u16(tx_queue_id); > + rte_trace_point_emit_int(rc); > +) > + Existing 'rx_queue_count' is missing tracepoints, for consistency, can you please add that too in a separate patch? > #ifdef __cplusplus > } > #endif > diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map > index 5c4917c020..e03830902a 100644 > --- a/lib/ethdev/version.map > +++ b/lib/ethdev/version.map > @@ -316,6 +316,9 @@ EXPERIMENTAL { > rte_eth_recycle_rx_queue_info_get; > rte_flow_group_set_miss_actions; > rte_flow_calc_table_hash; > + > + # added in 24.03 > + rte_eth_tx_queue_count; > }; > > INTERNAL {