[1/4] net/mlx5: fix invalid multi-process ID
Checks
Commit Message
The device port_id is used for inter-process communication and must
be the same both for primary and secondary process
This IPC port_id was configured with the invalid temporary value in
port spawn routine. This temporary value was used by the function
rte_eth_dev_get_port_by_name() to check whether the port exists.
This commit corrects the mp port_id with rte_eth_dev port_id.
Fixes: 2eb4d0107acc ("net/mlx5: refactor PCI probing on Linux")
Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Comments
Hi,
> -----Original Message-----
> From: Suanming Mou <suanmingm@nvidia.com>
> Sent: Sunday, January 24, 2021 1:02 PM
> To: Slava Ovsiienko <viacheslavo@nvidia.com>; Matan Azrad
> <matan@nvidia.com>
> Cc: Raslan Darawsheh <rasland@nvidia.com>; dev@dpdk.org
> Subject: [PATCH 1/4] net/mlx5: fix invalid multi-process ID
>
> The device port_id is used for inter-process communication and must
> be the same both for primary and secondary process
>
> This IPC port_id was configured with the invalid temporary value in
> port spawn routine. This temporary value was used by the function
> rte_eth_dev_get_port_by_name() to check whether the port exists.
>
> This commit corrects the mp port_id with rte_eth_dev port_id.
>
> Fixes: 2eb4d0107acc ("net/mlx5: refactor PCI probing on Linux")
>
Missing Cc: stable@dpdk.org
Will add during integration.
> Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
> ---
Kindest regards,
Raslan Darawsheh
@@ -930,8 +930,6 @@
priv->dev_port = spawn->phys_port;
priv->pci_dev = spawn->pci_dev;
priv->mtu = RTE_ETHER_MTU;
- priv->mp_id.port_id = port_id;
- strlcpy(priv->mp_id.name, MLX5_MP_NAME, RTE_MP_MAX_NAME_LEN);
/* Some internal functions rely on Netlink sockets, open them now. */
priv->nl_socket_rdma = mlx5_nl_init(NETLINK_RDMA);
priv->nl_socket_route = mlx5_nl_init(NETLINK_ROUTE);
@@ -1347,6 +1345,8 @@
eth_dev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR;
eth_dev->data->representor_id = priv->representor_id;
}
+ priv->mp_id.port_id = eth_dev->data->port_id;
+ strlcpy(priv->mp_id.name, MLX5_MP_NAME, RTE_MP_MAX_NAME_LEN);
/*
* Store associated network device interface index. This index
* is permanent throughout the lifetime of device. So, we may store