In current kernel implementation, the physical port name for representors is a 
numeric string (i.e. '0', '1', etc.).



Kernel patch [1] implements an updated scheme for naming of representors ports.

The new scheme gives a unique name for each port using the PF ID and the VF ID.

Uplink representors are named 'p0', 'p1', etc.

VF representors are named 'pf0vf0', 'pf0vf1', 'pf1vf0', 'pf1vf1', etc.



This RFC describes the suggested changes to MLX5 PMD, in order to support the 
new naming scheme, while maintaining support of the existing naming scheme.



During PCI probing, MLX5 PMD uses Netlink to query the kernel for switch 
information.

The response is processed by mlx5_nl_switch_info_cb().

If this query fails, MLX5 PMD attempts to use sysfs to query for switch 
information.

This query is implemented in mlx5_sysfs_switch_info();



The following section describes the suggested changes by pseudocode:

mlx5_nl_switch_info_cb()

{

                Parse the netlink response message.

                If found type IFLA_PHYS_PORT_NAME {

                                Convert payload string to number, store as 
port-name.

                                /* START NEW CODE */

                                If convert failed {

                                                If found substring "vf" in 
payload string {

                                                                Convert the 
remainder of payload string to number

                                                                Store as 
port-name.

                                                }

                                }

                                /* END OF NEW CODE */

                }

}



mlx5_sysfs_switch_info()

{

                Convert ifindex to ifname.

                Open file /sys/class/net/<ifname>/phys_port_name

                Try to convert file contents to number, if succeeded store as 
port-name.

                /* START NEW CODE */

                If convert failed {

                                Try to convert file contents to 
'pf'/number/'vf'/number.

                                If succeeded, store last number as port-name.

                }

                /* END OF NEW CODE */

}



[1] 
https://github.com/torvalds/linux/commit/c12ecc2305648822970002871230979359edb2c0



---

v2: Use public link to kernel patch.

---



Signed-off-by: Dekel Peled <dek...@mellanox.com<mailto:dek...@mellanox.com>>


Reply via email to