| /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ | |
| /* | |
| * Copyright (c) 2019-2020, Mellanox Technologies inc. All rights reserved. | |
| */ | |
| #ifndef _MLX5_IB_DEVX_H | |
| #define _MLX5_IB_DEVX_H | |
| #include "mlx5_ib.h" | |
| #define MLX5_MAX_DESTROY_INBOX_SIZE_DW MLX5_ST_SZ_DW(delete_fte_in) | |
| struct devx_obj { | |
| struct mlx5_ib_dev *ib_dev; | |
| u64 obj_id; | |
| u32 dinlen; /* destroy inbox length */ | |
| u32 dinbox[MLX5_MAX_DESTROY_INBOX_SIZE_DW]; | |
| u32 flags; | |
| union { | |
| struct mlx5_ib_devx_mr devx_mr; | |
| struct mlx5_core_dct core_dct; | |
| struct mlx5_core_cq core_cq; | |
| u32 flow_counter_bulk_size; | |
| }; | |
| struct list_head event_sub; /* holds devx_event_subscription entries */ | |
| }; | |
| #if IS_ENABLED(CONFIG_INFINIBAND_USER_ACCESS) | |
| int mlx5_ib_devx_create(struct mlx5_ib_dev *dev, bool is_user); | |
| void mlx5_ib_devx_destroy(struct mlx5_ib_dev *dev, u16 uid); | |
| int mlx5_ib_devx_init(struct mlx5_ib_dev *dev); | |
| void mlx5_ib_devx_cleanup(struct mlx5_ib_dev *dev); | |
| #else | |
| static inline int mlx5_ib_devx_create(struct mlx5_ib_dev *dev, bool is_user) | |
| { | |
| return -EOPNOTSUPP; | |
| } | |
| static inline void mlx5_ib_devx_destroy(struct mlx5_ib_dev *dev, u16 uid) {} | |
| static inline int mlx5_ib_devx_init(struct mlx5_ib_dev *dev) | |
| { | |
| return 0; | |
| } | |
| static inline void mlx5_ib_devx_cleanup(struct mlx5_ib_dev *dev) | |
| { | |
| } | |
| #endif | |
| #endif /* _MLX5_IB_DEVX_H */ |