diff options
author | Maor Gottlieb <maorg@mellanox.com> | 2017-01-18 07:10:34 -0500 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2017-02-14 10:14:25 -0500 |
commit | 1e0e50b6177bbc83e8cf673a29b2842c769f90f4 (patch) | |
tree | 0624901272043d807e35e60bad199c5c33e586fa | |
parent | c43f1112c068f3b4b20a0a9d461c341d9caeb376 (diff) |
IB/mlx5: Avoid SMP MADs from VFs
According to the device specification, we need to check that the
has_smi bit is set in vport context before allowing send SMP
MADs from VF.
Fixes: e126ba97dba9 ('mlx5: Add driver for Mellanox Connect-IB adapters')
Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
Reviewed-by: Eli Cohen <eli@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r-- | drivers/infiniband/hw/mlx5/qp.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c index 90210745366a..9af9b953ce30 100644 --- a/drivers/infiniband/hw/mlx5/qp.c +++ b/drivers/infiniband/hw/mlx5/qp.c | |||
@@ -3979,6 +3979,12 @@ int mlx5_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
3979 | break; | 3979 | break; |
3980 | 3980 | ||
3981 | case IB_QPT_SMI: | 3981 | case IB_QPT_SMI: |
3982 | if (unlikely(!mdev->port_caps[qp->port - 1].has_smi)) { | ||
3983 | mlx5_ib_warn(dev, "Send SMP MADs is not allowed\n"); | ||
3984 | err = -EPERM; | ||
3985 | *bad_wr = wr; | ||
3986 | goto out; | ||
3987 | } | ||
3982 | case MLX5_IB_QPT_HW_GSI: | 3988 | case MLX5_IB_QPT_HW_GSI: |
3983 | set_datagram_seg(seg, wr); | 3989 | set_datagram_seg(seg, wr); |
3984 | seg += sizeof(struct mlx5_wqe_datagram_seg); | 3990 | seg += sizeof(struct mlx5_wqe_datagram_seg); |