[PATCH v2 2/2] ethdev: add telemetry endpoint for list names

fengchengwen fengchengwen at huawei.com
Thu May 21 14:24:35 CEST 2026


Thanks for the feedback.

I intend to keep the current dict format. This concise ID-name mapping is quite
helpful and easy to read especially when there are massive ports, which is exactly
the main purpose why I submitted this patch.

In my opinion, adopting OData-style query would require architecture-level
refactoring of telemetry framework, which is way too heavy for this simple requirement.
For complex query demands, we can implement them by extending the upper-layer Python
telemetry script instead.

So I suggest we keep this simple form here.

Thanks.

On 5/20/2026 10:58 PM, Bruce Richardson wrote:
> On Wed, May 20, 2026 at 03:29:36PM +0200, Morten Brørup wrote:
>>> From: Chengwen Feng [mailto:fengchengwen at huawei.com]
>>> Sent: Wednesday, 20 May 2026 11.38
>>>
>>> Add /ethdev/list_names telemetry endpoint which returns a dictionary
>>> keyed by port ID with device name as the value, so users can
>>> identify ports by name directly from the telemetry output.
>>>
>>> Original /ethdev/list output:
>>>   {"/ethdev/list": [0, 1]}
>>>
>>> New /ethdev/list_names output:
>>>   {"/ethdev/list_names": {"0": "0000:7d:00.0",
>>>   "1": "0000:7d:00.1"}}
>>>
>>
>> <rant>
>>
>> Unfortunately, the telemetry protocol in DPDK is not using a common design, but takes parameters specific to each path.
>> It should have used OData or something similar, to standardize listing, filtering, etc.
>> Then we could have queried this like:
>> /ethdev/info?$select=port_id,name
> 
> If you are up for implementing something like that, it should be possible
> to have syntax like the above work alongside our existing syntax too.
> The current telemetry scheme was set up with the overarching objective
> being simplicity.
> 
>> And return something like:
>> [
>> 	{
>> 		"port_id": 0,
>> 		"name": "0000:7d:00.0"
>> 	},
>> 	{
>> 		"port_id": 1,
>> 		"name": "0000:7d:00.1"
>> 	}
>> ]
>> or:
>> [
>> 	{
>> 		0,
>> 		"0000:7d:00.0"
>> 	},
>> 	{
>> 		1,
>> 		"0000:7d:00.1"
>> 	}
>> ]
>>
>> But now we are stuck with what we have.
>>
>> </rant>
>>
>> So /etdev/list_names is OK.
>>
>> I'm not really familiar with the DPDK telemetry, so I wonder if indexed arrays are normally returned as an object, like in this patch?
>>
>> I would have expected a list function (such as list_names) to return an array.
>> Either a simple list:
>> {
>> 	"/ethdev/list_names":
>> 	[
>> 		"0000:7d:00.0",
>> 		"0000:7d:00.1"
>> 	]
>> }
>>
> 
> I think it would prefer this, but it does get a bit harder to read with a
> long list.
> 
>> Or a list of objects:
>> {
>> 	"/ethdev/list_names":
>> 	[
>> 		{
>> 			"port_id": 0,
>> 			"name": "0000:7d:00.0"
>> 		},
>> 		{
>> 			"port_id": 1,
>> 			"name": "0000:7d:00.1"
>> 		}
>> 	]
>> }
>>
> 
> Agree that this also would be slightly better.
> 
> However, a *completely* different approach would be to instead solve this
> issue by adding additional functionality to the interactive telemetry
> script itself. After all, the data for the list of names of ethdevs is
> already available from the telemetry endpoints already present in DPDK. All
> we need to do is to extend the python script to have "virtual endpoints" if
> you will, which do the necessary queries in the background and then present
> the data to the user. I think that would be a cleaner approach to things
> like this, rather than always adding more C code.
> 
> /Bruce
> 



More information about the dev mailing list