mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 23:25:07 +00:00
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:
parent
2e2ba09e48
commit
cfdeb8934b
1 changed files with 11 additions and 9 deletions
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue