RDMA/mlx5: Refactor transport domain checks
authorLeon Romanovsky <leonro@mellanox.com>
Tue, 19 Jun 2018 07:39:06 +0000 (10:39 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 19 Jun 2018 19:32:17 +0000 (13:32 -0600)
Put all relevant checks for transport domain in the
mlx5_ib_alloc/dealloc_transport_domain functions.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/mlx5/main.c

index c29c7c8..dcb780b 100644 (file)
@@ -1584,6 +1584,9 @@ static int mlx5_ib_alloc_transport_domain(struct mlx5_ib_dev *dev, u32 *tdn)
 {
        int err;
 
+       if (!MLX5_CAP_GEN(dev->mdev, log_max_transport_domain))
+               return 0;
+
        err = mlx5_core_alloc_transport_domain(dev->mdev, tdn);
        if (err)
                return err;
@@ -1605,6 +1608,9 @@ static int mlx5_ib_alloc_transport_domain(struct mlx5_ib_dev *dev, u32 *tdn)
 
 static void mlx5_ib_dealloc_transport_domain(struct mlx5_ib_dev *dev, u32 tdn)
 {
+       if (!MLX5_CAP_GEN(dev->mdev, log_max_transport_domain))
+               return;
+
        mlx5_core_dealloc_transport_domain(dev->mdev, tdn);
 
        if ((MLX5_CAP_GEN(dev->mdev, port_type) != MLX5_CAP_PORT_TYPE_ETH) ||
@@ -1729,11 +1735,9 @@ static struct ib_ucontext *mlx5_ib_alloc_ucontext(struct ib_device *ibdev,
        context->ibucontext.invalidate_range = &mlx5_ib_invalidate_range;
 #endif
 
-       if (MLX5_CAP_GEN(dev->mdev, log_max_transport_domain)) {
-               err = mlx5_ib_alloc_transport_domain(dev, &context->tdn);
-               if (err)
-                       goto out_uars;
-       }
+       err = mlx5_ib_alloc_transport_domain(dev, &context->tdn);
+       if (err)
+               goto out_uars;
 
        if (req.flags & MLX5_IB_ALLOC_UCTX_DEVX) {
                /* Block DEVX on Infiniband as of SELinux */
@@ -1821,8 +1825,7 @@ out_mdev:
        if (req.flags & MLX5_IB_ALLOC_UCTX_DEVX)
                mlx5_ib_devx_destroy(dev, context);
 out_td:
-       if (MLX5_CAP_GEN(dev->mdev, log_max_transport_domain))
-               mlx5_ib_dealloc_transport_domain(dev, context->tdn);
+       mlx5_ib_dealloc_transport_domain(dev, context->tdn);
 
 out_uars:
        deallocate_uars(dev, context);
@@ -1849,8 +1852,7 @@ static int mlx5_ib_dealloc_ucontext(struct ib_ucontext *ibcontext)
                mlx5_ib_devx_destroy(dev, context);
 
        bfregi = &context->bfregi;
-       if (MLX5_CAP_GEN(dev->mdev, log_max_transport_domain))
-               mlx5_ib_dealloc_transport_domain(dev, context->tdn);
+       mlx5_ib_dealloc_transport_domain(dev, context->tdn);
 
        deallocate_uars(dev, context);
        kfree(bfregi->sys_pages);