forked from luck/tmp_suning_uos_patched
net/mlx4_core: Adjust port number in qp_attach wrapper when detaching
When using single ported VFs and the VF is using port 2, we need
to adjust the port accordingly (change it from 1 to 2).
Fixes: 449fc48
('net/mlx4: Adapt code for N-Port VF')
Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Jack Morgenstein <jackm@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9becd70784
commit
531d9014d5
@ -3733,6 +3733,25 @@ static int qp_detach(struct mlx4_dev *dev, struct mlx4_qp *qp,
|
||||
}
|
||||
}
|
||||
|
||||
static int mlx4_adjust_port(struct mlx4_dev *dev, int slave,
|
||||
u8 *gid, enum mlx4_protocol prot)
|
||||
{
|
||||
int real_port;
|
||||
|
||||
if (prot != MLX4_PROT_ETH)
|
||||
return 0;
|
||||
|
||||
if (dev->caps.steering_mode == MLX4_STEERING_MODE_B0 ||
|
||||
dev->caps.steering_mode == MLX4_STEERING_MODE_DEVICE_MANAGED) {
|
||||
real_port = mlx4_slave_convert_port(dev, slave, gid[5]);
|
||||
if (real_port < 0)
|
||||
return -EINVAL;
|
||||
gid[5] = real_port;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mlx4_QP_ATTACH_wrapper(struct mlx4_dev *dev, int slave,
|
||||
struct mlx4_vhcr *vhcr,
|
||||
struct mlx4_cmd_mailbox *inbox,
|
||||
@ -3768,6 +3787,10 @@ int mlx4_QP_ATTACH_wrapper(struct mlx4_dev *dev, int slave,
|
||||
if (err)
|
||||
goto ex_detach;
|
||||
} else {
|
||||
err = mlx4_adjust_port(dev, slave, gid, prot);
|
||||
if (err)
|
||||
goto ex_put;
|
||||
|
||||
err = rem_mcg_res(dev, slave, rqp, gid, prot, type, ®_id);
|
||||
if (err)
|
||||
goto ex_put;
|
||||
|
Loading…
Reference in New Issue
Block a user