xref: /linux/include/rdma/ib_ucaps.h (revision 4f9786035f9e519db41375818e1d0b5f20da2f10)
1*61e51682SChiara Meiohas /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2*61e51682SChiara Meiohas /*
3*61e51682SChiara Meiohas  * Copyright (c) 2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved
4*61e51682SChiara Meiohas  */
5*61e51682SChiara Meiohas 
6*61e51682SChiara Meiohas #ifndef _IB_UCAPS_H_
7*61e51682SChiara Meiohas #define _IB_UCAPS_H_
8*61e51682SChiara Meiohas 
9*61e51682SChiara Meiohas #define UCAP_ENABLED(ucaps, type) (!!((ucaps) & (1U << (type))))
10*61e51682SChiara Meiohas 
11*61e51682SChiara Meiohas enum rdma_user_cap {
12*61e51682SChiara Meiohas 	RDMA_UCAP_MLX5_CTRL_LOCAL,
13*61e51682SChiara Meiohas 	RDMA_UCAP_MLX5_CTRL_OTHER_VHCA,
14*61e51682SChiara Meiohas 	RDMA_UCAP_MAX
15*61e51682SChiara Meiohas };
16*61e51682SChiara Meiohas 
17*61e51682SChiara Meiohas void ib_cleanup_ucaps(void);
18*61e51682SChiara Meiohas int ib_get_ucaps(int *fds, int fd_count, uint64_t *idx_mask);
19*61e51682SChiara Meiohas #if IS_ENABLED(CONFIG_INFINIBAND_USER_ACCESS)
20*61e51682SChiara Meiohas int ib_create_ucap(enum rdma_user_cap type);
21*61e51682SChiara Meiohas void ib_remove_ucap(enum rdma_user_cap type);
22*61e51682SChiara Meiohas #else
23*61e51682SChiara Meiohas static inline int ib_create_ucap(enum rdma_user_cap type)
24*61e51682SChiara Meiohas {
25*61e51682SChiara Meiohas 	return -EOPNOTSUPP;
26*61e51682SChiara Meiohas }
27*61e51682SChiara Meiohas static inline void ib_remove_ucap(enum rdma_user_cap type) {}
28*61e51682SChiara Meiohas #endif /* CONFIG_INFINIBAND_USER_ACCESS */
29*61e51682SChiara Meiohas 
30*61e51682SChiara Meiohas #endif /* _IB_UCAPS_H_ */
31