On 3/25/25 21:07, Stephen Hemminger wrote: > On Tue, 25 Mar 2025 20:32:53 +0700 > Lukáš Šišmiš wrote: > >> Hello all, >> >> I am trying to determine what is the vendor and model of the port ID >> that I am interacting with but all references lead me to an obsolete API. >> >> The goal is to execute specific code only when I am dealing with >> Mellanox ConnectX-4-family cards. Longer explanation below. >> >> I would like to access "struct rte_pci_id" but it always seems hidden >> only on the driver level. >> >> Is there any way how to approach this? >> >> >> Longer explanation of the problem: >> >> In https://github.com/OISF/suricata/pull/12654 I am using dev_info to >> get the maximum number of allowed TX descriptors for the port that is >> advertised by the PMD. But when I set the actual number of TX >> descriptors then the driver complains "minimal data inline requirements >> (18) are not satisfied (12) on port 0, try the smaller Tx queue size >> (32768)". However, this problem occurs only on ConnectX-4 family and not >> on CX5/6/7 (that's why I cannot limit this to just mlx5 PMD). >> >> Alternatively, can this be fixed/addressed directly in the MLX5 PMD? >> MLX5 PMD needs to advertise 16384 TX descriptors as the maximum only for >> ConnectX-4 family. >> (Putting Darius, Viacheslav in the loop, please reassign if needed) >> >> Thank you. >> >> Best, >> >> Lukas >> > The device name contains the PCI id. > Use rte_eth_dev_get_name_by_port(uint16_t port_id, char *name); Not really, it also confused me but PCI ID is not the same as PCI address. PCI address changes as the system desires whereas PCI ID should be device-specific information that is the same across all instances of the same model. lspci -nn is a good example, look at the trailing numbers, the first one is the vendor ID and the second one is model number.