1 /* 2 * This file is auto-generated. Modifications will be lost. 3 * 4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5 * for more information. 6 */ 7 #ifndef EFA_ABI_USER_H 8 #define EFA_ABI_USER_H 9 #include <linux/types.h> 10 #include <rdma/ib_user_ioctl_cmds.h> 11 #define EFA_UVERBS_ABI_VERSION 1 12 enum { 13 EFA_ALLOC_UCONTEXT_CMD_COMP_TX_BATCH = 1 << 0, 14 EFA_ALLOC_UCONTEXT_CMD_COMP_MIN_SQ_WR = 1 << 1, 15 }; 16 struct efa_ibv_alloc_ucontext_cmd { 17 __u32 comp_mask; 18 __u8 reserved_20[4]; 19 }; 20 enum efa_ibv_user_cmds_supp_udata { 21 EFA_USER_CMDS_SUPP_UDATA_QUERY_DEVICE = 1 << 0, 22 EFA_USER_CMDS_SUPP_UDATA_CREATE_AH = 1 << 1, 23 }; 24 struct efa_ibv_alloc_ucontext_resp { 25 __u32 comp_mask; 26 __u32 cmds_supp_udata_mask; 27 __u16 sub_cqs_per_cq; 28 __u16 inline_buf_size; 29 __u32 max_llq_size; 30 __u16 max_tx_batch; 31 __u16 min_sq_wr; 32 __u8 reserved_a0[4]; 33 }; 34 struct efa_ibv_alloc_pd_resp { 35 __u32 comp_mask; 36 __u16 pdn; 37 __u8 reserved_30[2]; 38 }; 39 enum { 40 EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0, 41 EFA_CREATE_CQ_WITH_SGID = 1 << 1, 42 }; 43 struct efa_ibv_create_cq { 44 __u32 comp_mask; 45 __u32 cq_entry_size; 46 __u16 num_sub_cqs; 47 __u8 flags; 48 __u8 reserved_58[5]; 49 }; 50 enum { 51 EFA_CREATE_CQ_RESP_DB_OFF = 1 << 0, 52 }; 53 struct efa_ibv_create_cq_resp { 54 __u32 comp_mask; 55 __u8 reserved_20[4]; 56 __aligned_u64 q_mmap_key; 57 __aligned_u64 q_mmap_size; 58 __u16 cq_idx; 59 __u8 reserved_d0[2]; 60 __u32 db_off; 61 __aligned_u64 db_mmap_key; 62 }; 63 enum { 64 EFA_QP_DRIVER_TYPE_SRD = 0, 65 }; 66 enum { 67 EFA_CREATE_QP_WITH_UNSOLICITED_WRITE_RECV = 1 << 0, 68 }; 69 struct efa_ibv_create_qp { 70 __u32 comp_mask; 71 __u32 rq_ring_size; 72 __u32 sq_ring_size; 73 __u32 driver_qp_type; 74 __u16 flags; 75 __u8 reserved_90[6]; 76 }; 77 struct efa_ibv_create_qp_resp { 78 __u32 comp_mask; 79 __u32 rq_db_offset; 80 __u32 sq_db_offset; 81 __u32 llq_desc_offset; 82 __aligned_u64 rq_mmap_key; 83 __aligned_u64 rq_mmap_size; 84 __aligned_u64 rq_db_mmap_key; 85 __aligned_u64 sq_db_mmap_key; 86 __aligned_u64 llq_desc_mmap_key; 87 __u16 send_sub_cq_idx; 88 __u16 recv_sub_cq_idx; 89 __u8 reserved_1e0[4]; 90 }; 91 struct efa_ibv_create_ah_resp { 92 __u32 comp_mask; 93 __u16 efa_address_handle; 94 __u8 reserved_30[2]; 95 }; 96 enum { 97 EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0, 98 EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1, 99 EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2, 100 EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3, 101 EFA_QUERY_DEVICE_CAPS_DATA_POLLING_128 = 1 << 4, 102 EFA_QUERY_DEVICE_CAPS_RDMA_WRITE = 1 << 5, 103 EFA_QUERY_DEVICE_CAPS_UNSOLICITED_WRITE_RECV = 1 << 6, 104 }; 105 struct efa_ibv_ex_query_device_resp { 106 __u32 comp_mask; 107 __u32 max_sq_wr; 108 __u32 max_rq_wr; 109 __u16 max_sq_sge; 110 __u16 max_rq_sge; 111 __u32 max_rdma_size; 112 __u32 device_caps; 113 }; 114 enum { 115 EFA_QUERY_MR_VALIDITY_RECV_IC_ID = 1 << 0, 116 EFA_QUERY_MR_VALIDITY_RDMA_READ_IC_ID = 1 << 1, 117 EFA_QUERY_MR_VALIDITY_RDMA_RECV_IC_ID = 1 << 2, 118 }; 119 enum efa_query_mr_attrs { 120 EFA_IB_ATTR_QUERY_MR_HANDLE = (1U << UVERBS_ID_NS_SHIFT), 121 EFA_IB_ATTR_QUERY_MR_RESP_IC_ID_VALIDITY, 122 EFA_IB_ATTR_QUERY_MR_RESP_RECV_IC_ID, 123 EFA_IB_ATTR_QUERY_MR_RESP_RDMA_READ_IC_ID, 124 EFA_IB_ATTR_QUERY_MR_RESP_RDMA_RECV_IC_ID, 125 }; 126 enum efa_mr_methods { 127 EFA_IB_METHOD_MR_QUERY = (1U << UVERBS_ID_NS_SHIFT), 128 }; 129 #endif 130