]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
net/mlx4_core: allow QPs with enable_smi_admin enabled
authorZhu Yanjun <yanjun.zhu@oracle.com>
Fri, 1 Dec 2017 02:13:20 +0000 (21:13 -0500)
committerJack Vogel <jack.vogel@oracle.com>
Wed, 31 Jan 2018 19:39:11 +0000 (11:39 -0800)
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 <yanjun.zhu@oracle.com>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
(cherry picked from commit a3fe544e915d367100f9f149109d7a7599b032ca)
Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c

index b376e6dea8d520583f03796e249188e8c9537c8d..e130a50977fc65c7e4859e05f5b599cc246e76b5 100644 (file)
@@ -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)