From 4d52a201d2fb14f4d5c4c7d35dc9e30ebdf6e088 Mon Sep 17 00:00:00 2001 From: Zhu Yanjun Date: Thu, 30 Nov 2017 21:13:20 -0500 Subject: [PATCH] net/mlx4_core: allow QPs with enable_smi_admin enabled In the commit 64453f042519 ("net/mlx4_core: Disallow creation of RAW QPs on a VF"), it disallows some QPs. But when enable_smi_admin is enabled, it should be allowed to pass. Orabug: 27452072 Signed-off-by: Zhu Yanjun Reviewed-by: Yuval Shaia (cherry picked from commit a3fe544e915d367100f9f149109d7a7599b032ca) Signed-off-by: Zhu Yanjun --- drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c index b376e6dea8d5..e130a50977fc 100644 --- a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +++ b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c @@ -2746,8 +2746,12 @@ int mlx4_RST2INIT_QP_wrapper(struct mlx4_dev *dev, int slave, int local_qpn = be32_to_cpu(qpc->local_qpn) & 0xffffff; int st = qp_get_st(qpc); - if ((slave != mlx4_master_func_num(dev)) && (st == MLX4_QP_ST_MLX)) - return -EPERM; + if ((slave != mlx4_master_func_num(dev)) && (st == MLX4_QP_ST_MLX)) { + int port = (qpc->pri_path.sched_queue >> 6 & 1) + 1; + + if (!mlx4_vf_smi_enabled(dev, slave, port)) + return -EPERM; + } err = qp_res_start_move_to(dev, slave, qpn, RES_QP_HW, &qp, 0); if (err) -- 2.50.1