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