mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
net/mlx5e: Fix missing switch_id for representors
Cited commit in fixes tag missed to set the switch id of the PF and VF
ports. Due to this flow cannot be offloaded, a simple command like below
fails to offload with below error.
tc filter add dev ens2f0np0 parent ffff: prio 1 flower \
dst_mac 00:00:00:00:00:00/00:00:00:00:00:00 skip_sw \
action mirred egress redirect dev ens2f0np0pf0vf0
Error: mlx5_core: devices are not on same switch HW, can't offload forwarding.
Hence, fix it by setting switch id for each PF and VF representors port
as before the cited commit.
Fixes: 71ad8d55f8
("devlink: Replace devlink_port_attrs_set parameters with a struct")
Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
This commit is contained in:
parent
89e35f66d5
commit
1315971fea
@ -1196,18 +1196,22 @@ static int register_devlink_port(struct mlx5_core_dev *dev,
|
||||
mlx5e_rep_get_port_parent_id(rpriv->netdev, &ppid);
|
||||
dl_port_index = mlx5_esw_vport_to_devlink_port_index(dev, rep->vport);
|
||||
pfnum = PCI_FUNC(dev->pdev->devfn);
|
||||
attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
|
||||
attrs.phys.port_number = pfnum;
|
||||
memcpy(attrs.switch_id.id, &ppid.id[0], ppid.id_len);
|
||||
attrs.switch_id.id_len = ppid.id_len;
|
||||
if (rep->vport == MLX5_VPORT_UPLINK)
|
||||
if (rep->vport == MLX5_VPORT_UPLINK) {
|
||||
attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
|
||||
attrs.phys.port_number = pfnum;
|
||||
memcpy(attrs.switch_id.id, &ppid.id[0], ppid.id_len);
|
||||
attrs.switch_id.id_len = ppid.id_len;
|
||||
devlink_port_attrs_set(&rpriv->dl_port, &attrs);
|
||||
else if (rep->vport == MLX5_VPORT_PF)
|
||||
} else if (rep->vport == MLX5_VPORT_PF) {
|
||||
memcpy(rpriv->dl_port.attrs.switch_id.id, &ppid.id[0], ppid.id_len);
|
||||
rpriv->dl_port.attrs.switch_id.id_len = ppid.id_len;
|
||||
devlink_port_attrs_pci_pf_set(&rpriv->dl_port, pfnum);
|
||||
else if (mlx5_eswitch_is_vf_vport(dev->priv.eswitch, rpriv->rep->vport))
|
||||
} else if (mlx5_eswitch_is_vf_vport(dev->priv.eswitch, rpriv->rep->vport)) {
|
||||
memcpy(rpriv->dl_port.attrs.switch_id.id, &ppid.id[0], ppid.id_len);
|
||||
rpriv->dl_port.attrs.switch_id.id_len = ppid.id_len;
|
||||
devlink_port_attrs_pci_vf_set(&rpriv->dl_port,
|
||||
pfnum, rep->vport - 1);
|
||||
|
||||
}
|
||||
return devlink_port_register(devlink, &rpriv->dl_port, dl_port_index);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user