1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef RDMA_USER_CM_H 20 #define RDMA_USER_CM_H 21 #include <linux/types.h> 22 #include <linux/socket.h> 23 #include <linux/in6.h> 24 #include <rdma/ib_user_verbs.h> 25 #include <rdma/ib_user_sa.h> 26 #define RDMA_USER_CM_ABI_VERSION 4 27 #define RDMA_MAX_PRIVATE_DATA 256 28 enum { 29 RDMA_USER_CM_CMD_CREATE_ID, 30 RDMA_USER_CM_CMD_DESTROY_ID, 31 RDMA_USER_CM_CMD_BIND_IP, 32 RDMA_USER_CM_CMD_RESOLVE_IP, 33 RDMA_USER_CM_CMD_RESOLVE_ROUTE, 34 RDMA_USER_CM_CMD_QUERY_ROUTE, 35 RDMA_USER_CM_CMD_CONNECT, 36 RDMA_USER_CM_CMD_LISTEN, 37 RDMA_USER_CM_CMD_ACCEPT, 38 RDMA_USER_CM_CMD_REJECT, 39 RDMA_USER_CM_CMD_DISCONNECT, 40 RDMA_USER_CM_CMD_INIT_QP_ATTR, 41 RDMA_USER_CM_CMD_GET_EVENT, 42 RDMA_USER_CM_CMD_GET_OPTION, 43 RDMA_USER_CM_CMD_SET_OPTION, 44 RDMA_USER_CM_CMD_NOTIFY, 45 RDMA_USER_CM_CMD_JOIN_IP_MCAST, 46 RDMA_USER_CM_CMD_LEAVE_MCAST, 47 RDMA_USER_CM_CMD_MIGRATE_ID, 48 RDMA_USER_CM_CMD_QUERY, 49 RDMA_USER_CM_CMD_BIND, 50 RDMA_USER_CM_CMD_RESOLVE_ADDR, 51 RDMA_USER_CM_CMD_JOIN_MCAST 52 }; 53 struct rdma_ucm_cmd_hdr { 54 __u32 cmd; 55 __u16 in; 56 __u16 out; 57 }; 58 struct rdma_ucm_create_id { 59 __u64 uid; 60 __u64 response; 61 __u16 ps; 62 __u8 qp_type; 63 __u8 reserved[5]; 64 }; 65 struct rdma_ucm_create_id_resp { 66 __u32 id; 67 }; 68 struct rdma_ucm_destroy_id { 69 __u64 response; 70 __u32 id; 71 __u32 reserved; 72 }; 73 struct rdma_ucm_destroy_id_resp { 74 __u32 events_reported; 75 }; 76 struct rdma_ucm_bind_ip { 77 __u64 response; 78 struct sockaddr_in6 addr; 79 __u32 id; 80 }; 81 struct rdma_ucm_bind { 82 __u32 id; 83 __u16 addr_size; 84 __u16 reserved; 85 struct __kernel_sockaddr_storage addr; 86 }; 87 struct rdma_ucm_resolve_ip { 88 struct sockaddr_in6 src_addr; 89 struct sockaddr_in6 dst_addr; 90 __u32 id; 91 __u32 timeout_ms; 92 }; 93 struct rdma_ucm_resolve_addr { 94 __u32 id; 95 __u32 timeout_ms; 96 __u16 src_size; 97 __u16 dst_size; 98 __u32 reserved; 99 struct __kernel_sockaddr_storage src_addr; 100 struct __kernel_sockaddr_storage dst_addr; 101 }; 102 struct rdma_ucm_resolve_route { 103 __u32 id; 104 __u32 timeout_ms; 105 }; 106 enum { 107 RDMA_USER_CM_QUERY_ADDR, 108 RDMA_USER_CM_QUERY_PATH, 109 RDMA_USER_CM_QUERY_GID 110 }; 111 struct rdma_ucm_query { 112 __u64 response; 113 __u32 id; 114 __u32 option; 115 }; 116 struct rdma_ucm_query_route_resp { 117 __u64 node_guid; 118 struct ib_user_path_rec ib_route[2]; 119 struct sockaddr_in6 src_addr; 120 struct sockaddr_in6 dst_addr; 121 __u32 num_paths; 122 __u8 port_num; 123 __u8 reserved[3]; 124 }; 125 struct rdma_ucm_query_addr_resp { 126 __u64 node_guid; 127 __u8 port_num; 128 __u8 reserved; 129 __u16 pkey; 130 __u16 src_size; 131 __u16 dst_size; 132 struct __kernel_sockaddr_storage src_addr; 133 struct __kernel_sockaddr_storage dst_addr; 134 }; 135 struct rdma_ucm_query_path_resp { 136 __u32 num_paths; 137 __u32 reserved; 138 struct ib_path_rec_data path_data[0]; 139 }; 140 struct rdma_ucm_conn_param { 141 __u32 qp_num; 142 __u32 qkey; 143 __u8 private_data[RDMA_MAX_PRIVATE_DATA]; 144 __u8 private_data_len; 145 __u8 srq; 146 __u8 responder_resources; 147 __u8 initiator_depth; 148 __u8 flow_control; 149 __u8 retry_count; 150 __u8 rnr_retry_count; 151 __u8 valid; 152 }; 153 struct rdma_ucm_ud_param { 154 __u32 qp_num; 155 __u32 qkey; 156 struct ib_uverbs_ah_attr ah_attr; 157 __u8 private_data[RDMA_MAX_PRIVATE_DATA]; 158 __u8 private_data_len; 159 __u8 reserved[7]; 160 }; 161 struct rdma_ucm_connect { 162 struct rdma_ucm_conn_param conn_param; 163 __u32 id; 164 __u32 reserved; 165 }; 166 struct rdma_ucm_listen { 167 __u32 id; 168 __u32 backlog; 169 }; 170 struct rdma_ucm_accept { 171 __u64 uid; 172 struct rdma_ucm_conn_param conn_param; 173 __u32 id; 174 __u32 reserved; 175 }; 176 struct rdma_ucm_reject { 177 __u32 id; 178 __u8 private_data_len; 179 __u8 reserved[3]; 180 __u8 private_data[RDMA_MAX_PRIVATE_DATA]; 181 }; 182 struct rdma_ucm_disconnect { 183 __u32 id; 184 }; 185 struct rdma_ucm_init_qp_attr { 186 __u64 response; 187 __u32 id; 188 __u32 qp_state; 189 }; 190 struct rdma_ucm_notify { 191 __u32 id; 192 __u32 event; 193 }; 194 struct rdma_ucm_join_ip_mcast { 195 __u64 response; 196 __u64 uid; 197 struct sockaddr_in6 addr; 198 __u32 id; 199 }; 200 enum { 201 RDMA_MC_JOIN_FLAG_FULLMEMBER, 202 RDMA_MC_JOIN_FLAG_SENDONLY_FULLMEMBER, 203 RDMA_MC_JOIN_FLAG_RESERVED, 204 }; 205 struct rdma_ucm_join_mcast { 206 __u64 response; 207 __u64 uid; 208 __u32 id; 209 __u16 addr_size; 210 __u16 join_flags; 211 struct __kernel_sockaddr_storage addr; 212 }; 213 struct rdma_ucm_get_event { 214 __u64 response; 215 }; 216 struct rdma_ucm_event_resp { 217 __u64 uid; 218 __u32 id; 219 __u32 event; 220 __u32 status; 221 union { 222 struct rdma_ucm_conn_param conn; 223 struct rdma_ucm_ud_param ud; 224 } param; 225 }; 226 enum { 227 RDMA_OPTION_ID = 0, 228 RDMA_OPTION_IB = 1 229 }; 230 enum { 231 RDMA_OPTION_ID_TOS = 0, 232 RDMA_OPTION_ID_REUSEADDR = 1, 233 RDMA_OPTION_ID_AFONLY = 2, 234 RDMA_OPTION_IB_PATH = 1 235 }; 236 struct rdma_ucm_set_option { 237 __u64 optval; 238 __u32 id; 239 __u32 level; 240 __u32 optname; 241 __u32 optlen; 242 }; 243 struct rdma_ucm_migrate_id { 244 __u64 response; 245 __u32 id; 246 __u32 fd; 247 }; 248 struct rdma_ucm_migrate_resp { 249 __u32 events_reported; 250 }; 251 #endif 252