Commit 7482d9cb authored by Parav Pandit's avatar Parav Pandit Committed by Saeed Mahameed

net/mlx5e: Fix pfnum in devlink port attribute

Cited patch missed to extract PCI pf number accurately for PF and VF
port flavour. It considered PCI device + function number.
Due to this, device having non zero device number shown large pfnum.

Hence, use only PCI function number; to avoid similar errors, derive
pfnum one time for all port flavours.

Fixes: f60f315d ("net/mlx5e: Register devlink ports for physical link, PCI PF, VFs")
Reviewed-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarParav Pandit <parav@mellanox.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
parent d5a3c2b6
...@@ -2050,29 +2050,30 @@ static int register_devlink_port(struct mlx5_core_dev *dev, ...@@ -2050,29 +2050,30 @@ static int register_devlink_port(struct mlx5_core_dev *dev,
struct mlx5_eswitch_rep *rep = rpriv->rep; struct mlx5_eswitch_rep *rep = rpriv->rep;
struct netdev_phys_item_id ppid = {}; struct netdev_phys_item_id ppid = {};
unsigned int dl_port_index = 0; unsigned int dl_port_index = 0;
u16 pfnum;
if (!is_devlink_port_supported(dev, rpriv)) if (!is_devlink_port_supported(dev, rpriv))
return 0; return 0;
mlx5e_rep_get_port_parent_id(rpriv->netdev, &ppid); mlx5e_rep_get_port_parent_id(rpriv->netdev, &ppid);
pfnum = PCI_FUNC(dev->pdev->devfn);
if (rep->vport == MLX5_VPORT_UPLINK) { if (rep->vport == MLX5_VPORT_UPLINK) {
devlink_port_attrs_set(&rpriv->dl_port, devlink_port_attrs_set(&rpriv->dl_port,
DEVLINK_PORT_FLAVOUR_PHYSICAL, DEVLINK_PORT_FLAVOUR_PHYSICAL,
PCI_FUNC(dev->pdev->devfn), false, 0, pfnum, false, 0,
&ppid.id[0], ppid.id_len); &ppid.id[0], ppid.id_len);
dl_port_index = vport_to_devlink_port_index(dev, rep->vport); dl_port_index = vport_to_devlink_port_index(dev, rep->vport);
} else if (rep->vport == MLX5_VPORT_PF) { } else if (rep->vport == MLX5_VPORT_PF) {
devlink_port_attrs_pci_pf_set(&rpriv->dl_port, devlink_port_attrs_pci_pf_set(&rpriv->dl_port,
&ppid.id[0], ppid.id_len, &ppid.id[0], ppid.id_len,
dev->pdev->devfn); pfnum);
dl_port_index = rep->vport; dl_port_index = rep->vport;
} else if (mlx5_eswitch_is_vf_vport(dev->priv.eswitch, } else if (mlx5_eswitch_is_vf_vport(dev->priv.eswitch,
rpriv->rep->vport)) { rpriv->rep->vport)) {
devlink_port_attrs_pci_vf_set(&rpriv->dl_port, devlink_port_attrs_pci_vf_set(&rpriv->dl_port,
&ppid.id[0], ppid.id_len, &ppid.id[0], ppid.id_len,
dev->pdev->devfn, pfnum, rep->vport - 1);
rep->vport - 1);
dl_port_index = vport_to_devlink_port_index(dev, rep->vport); dl_port_index = vport_to_devlink_port_index(dev, rep->vport);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment