RDMA/mlx5: Refactor transport domain checks

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>
This commit is contained in:
Leon Romanovsky 2018-06-19 10:39:06 +03:00 committed by Jason Gunthorpe
parent 2e2ba09e48
commit cfdeb8934b

View file

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