Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cfdeb893 authored by Leon Romanovsky's avatar Leon Romanovsky Committed by Jason Gunthorpe
Browse files

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: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 2e2ba09e
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -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;
	}

	if (req.flags & MLX5_IB_ALLOC_UCTX_DEVX) {
		/* Block DEVX on Infiniband as of SELinux */
@@ -1821,7 +1825,6 @@ static struct ib_ucontext *mlx5_ib_alloc_ucontext(struct ib_device *ibdev,
	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);

out_uars:
@@ -1849,7 +1852,6 @@ 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);

	deallocate_uars(dev, context);