On 3/25/25 21:07, Stephen Hemminger wrote:
On Tue, 25 Mar 2025 20:32:53 +0700
Lukáš Šišmiš <sis...@cesnet.cz> 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.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to