1 /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
3 * Copyright 2018-2024 Amazon.com, Inc. or its affiliates. All rights reserved.
9 #include <linux/types.h>
10 #include <rdma/ib_user_ioctl_cmds.h>
13 * Increment this value if any changes that break userspace ABI
14 * compatibility are made.
16 #define EFA_UVERBS_ABI_VERSION 1
19 * Keep structs aligned to 8 bytes.
20 * Keep reserved fields as arrays of __u8 named reserved_XXX where XXX is the
21 * hex bit offset of the field.
25 EFA_ALLOC_UCONTEXT_CMD_COMP_TX_BATCH
= 1 << 0,
26 EFA_ALLOC_UCONTEXT_CMD_COMP_MIN_SQ_WR
= 1 << 1,
29 struct efa_ibv_alloc_ucontext_cmd
{
34 enum efa_ibv_user_cmds_supp_udata
{
35 EFA_USER_CMDS_SUPP_UDATA_QUERY_DEVICE
= 1 << 0,
36 EFA_USER_CMDS_SUPP_UDATA_CREATE_AH
= 1 << 1,
39 struct efa_ibv_alloc_ucontext_resp
{
41 __u32 cmds_supp_udata_mask
;
43 __u16 inline_buf_size
;
44 __u32 max_llq_size
; /* bytes */
45 __u16 max_tx_batch
; /* units of 64 bytes */
50 struct efa_ibv_alloc_pd_resp
{
57 EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL
= 1 << 0,
58 EFA_CREATE_CQ_WITH_SGID
= 1 << 1,
61 struct efa_ibv_create_cq
{
70 EFA_CREATE_CQ_RESP_DB_OFF
= 1 << 0,
73 struct efa_ibv_create_cq_resp
{
76 __aligned_u64 q_mmap_key
;
77 __aligned_u64 q_mmap_size
;
81 __aligned_u64 db_mmap_key
;
85 EFA_QP_DRIVER_TYPE_SRD
= 0,
89 EFA_CREATE_QP_WITH_UNSOLICITED_WRITE_RECV
= 1 << 0,
92 struct efa_ibv_create_qp
{
94 __u32 rq_ring_size
; /* bytes */
95 __u32 sq_ring_size
; /* bytes */
102 struct efa_ibv_create_qp_resp
{
104 /* the offset inside the page of the rq db */
106 /* the offset inside the page of the sq db */
108 /* the offset inside the page of descriptors buffer */
109 __u32 llq_desc_offset
;
110 __aligned_u64 rq_mmap_key
;
111 __aligned_u64 rq_mmap_size
;
112 __aligned_u64 rq_db_mmap_key
;
113 __aligned_u64 sq_db_mmap_key
;
114 __aligned_u64 llq_desc_mmap_key
;
115 __u16 send_sub_cq_idx
;
116 __u16 recv_sub_cq_idx
;
117 __u8 reserved_1e0
[4];
120 struct efa_ibv_create_ah_resp
{
122 __u16 efa_address_handle
;
127 EFA_QUERY_DEVICE_CAPS_RDMA_READ
= 1 << 0,
128 EFA_QUERY_DEVICE_CAPS_RNR_RETRY
= 1 << 1,
129 EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS
= 1 << 2,
130 EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID
= 1 << 3,
131 EFA_QUERY_DEVICE_CAPS_DATA_POLLING_128
= 1 << 4,
132 EFA_QUERY_DEVICE_CAPS_RDMA_WRITE
= 1 << 5,
133 EFA_QUERY_DEVICE_CAPS_UNSOLICITED_WRITE_RECV
= 1 << 6,
136 struct efa_ibv_ex_query_device_resp
{
147 EFA_QUERY_MR_VALIDITY_RECV_IC_ID
= 1 << 0,
148 EFA_QUERY_MR_VALIDITY_RDMA_READ_IC_ID
= 1 << 1,
149 EFA_QUERY_MR_VALIDITY_RDMA_RECV_IC_ID
= 1 << 2,
152 enum efa_query_mr_attrs
{
153 EFA_IB_ATTR_QUERY_MR_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
154 EFA_IB_ATTR_QUERY_MR_RESP_IC_ID_VALIDITY
,
155 EFA_IB_ATTR_QUERY_MR_RESP_RECV_IC_ID
,
156 EFA_IB_ATTR_QUERY_MR_RESP_RDMA_READ_IC_ID
,
157 EFA_IB_ATTR_QUERY_MR_RESP_RDMA_RECV_IC_ID
,
160 enum efa_mr_methods
{
161 EFA_IB_METHOD_MR_QUERY
= (1U << UVERBS_ID_NS_SHIFT
),
164 #endif /* EFA_ABI_USER_H */