IB/mlx5: Avoid SMP MADs from VFs
authorMaor Gottlieb <maorg@mellanox.com>
Wed, 18 Jan 2017 12:10:34 +0000 (14:10 +0200)
committerDoug Ledford <dledford@redhat.com>
Tue, 14 Feb 2017 15:14:25 +0000 (10:14 -0500)
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>
drivers/infiniband/hw/mlx5/qp.c

index 90210745366a87ef0b731a416997496a80cc2f72..9af9b953ce30a1f1d35141dfcaf646e66977b74e 100644 (file)
@@ -3979,6 +3979,12 @@ int mlx5_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
                        break;
 
                case IB_QPT_SMI:
+                       if (unlikely(!mdev->port_caps[qp->port - 1].has_smi)) {
+                               mlx5_ib_warn(dev, "Send SMP MADs is not allowed\n");
+                               err = -EPERM;
+                               *bad_wr = wr;
+                               goto out;
+                       }
                case MLX5_IB_QPT_HW_GSI:
                        set_datagram_seg(seg, wr);
                        seg += sizeof(struct mlx5_wqe_datagram_seg);