|  | /**************************************************************************** | 
|  | **************************************************************************** | 
|  | *** | 
|  | ***   This header was automatically generated from a Linux kernel header | 
|  | ***   of the same name, to make information necessary for userspace to | 
|  | ***   call into the kernel available to libc.  It contains only constants, | 
|  | ***   structures, and macros generated from the original header, and thus, | 
|  | ***   contains no copyrightable information. | 
|  | *** | 
|  | ***   To edit the content of this header, modify the corresponding | 
|  | ***   source file (e.g. under external/kernel-headers/original/) then | 
|  | ***   run bionic/libc/kernel/tools/update_all.py | 
|  | *** | 
|  | ***   Any manual change here will be lost the next time this script will | 
|  | ***   be run. You've been warned! | 
|  | *** | 
|  | **************************************************************************** | 
|  | ****************************************************************************/ | 
|  | #ifndef RDMA_USER_CM_H | 
|  | #define RDMA_USER_CM_H | 
|  | #include <linux/types.h> | 
|  | #include <linux/socket.h> | 
|  | #include <linux/in6.h> | 
|  | #include <rdma/ib_user_verbs.h> | 
|  | #include <rdma/ib_user_sa.h> | 
|  | #define RDMA_USER_CM_ABI_VERSION 4 | 
|  | #define RDMA_MAX_PRIVATE_DATA 256 | 
|  | enum { | 
|  | RDMA_USER_CM_CMD_CREATE_ID, | 
|  | RDMA_USER_CM_CMD_DESTROY_ID, | 
|  | RDMA_USER_CM_CMD_BIND_IP, | 
|  | RDMA_USER_CM_CMD_RESOLVE_IP, | 
|  | RDMA_USER_CM_CMD_RESOLVE_ROUTE, | 
|  | RDMA_USER_CM_CMD_QUERY_ROUTE, | 
|  | RDMA_USER_CM_CMD_CONNECT, | 
|  | RDMA_USER_CM_CMD_LISTEN, | 
|  | RDMA_USER_CM_CMD_ACCEPT, | 
|  | RDMA_USER_CM_CMD_REJECT, | 
|  | RDMA_USER_CM_CMD_DISCONNECT, | 
|  | RDMA_USER_CM_CMD_INIT_QP_ATTR, | 
|  | RDMA_USER_CM_CMD_GET_EVENT, | 
|  | RDMA_USER_CM_CMD_GET_OPTION, | 
|  | RDMA_USER_CM_CMD_SET_OPTION, | 
|  | RDMA_USER_CM_CMD_NOTIFY, | 
|  | RDMA_USER_CM_CMD_JOIN_IP_MCAST, | 
|  | RDMA_USER_CM_CMD_LEAVE_MCAST, | 
|  | RDMA_USER_CM_CMD_MIGRATE_ID, | 
|  | RDMA_USER_CM_CMD_QUERY, | 
|  | RDMA_USER_CM_CMD_BIND, | 
|  | RDMA_USER_CM_CMD_RESOLVE_ADDR, | 
|  | RDMA_USER_CM_CMD_JOIN_MCAST | 
|  | }; | 
|  | enum rdma_ucm_port_space { | 
|  | RDMA_PS_IPOIB = 0x0002, | 
|  | RDMA_PS_IB = 0x013F, | 
|  | RDMA_PS_TCP = 0x0106, | 
|  | RDMA_PS_UDP = 0x0111, | 
|  | }; | 
|  | struct rdma_ucm_cmd_hdr { | 
|  | __u32 cmd; | 
|  | __u16 in; | 
|  | __u16 out; | 
|  | }; | 
|  | struct rdma_ucm_create_id { | 
|  | __aligned_u64 uid; | 
|  | __aligned_u64 response; | 
|  | __u16 ps; | 
|  | __u8 qp_type; | 
|  | __u8 reserved[5]; | 
|  | }; | 
|  | struct rdma_ucm_create_id_resp { | 
|  | __u32 id; | 
|  | }; | 
|  | struct rdma_ucm_destroy_id { | 
|  | __aligned_u64 response; | 
|  | __u32 id; | 
|  | __u32 reserved; | 
|  | }; | 
|  | struct rdma_ucm_destroy_id_resp { | 
|  | __u32 events_reported; | 
|  | }; | 
|  | struct rdma_ucm_bind_ip { | 
|  | __aligned_u64 response; | 
|  | struct sockaddr_in6 addr; | 
|  | __u32 id; | 
|  | }; | 
|  | struct rdma_ucm_bind { | 
|  | __u32 id; | 
|  | __u16 addr_size; | 
|  | __u16 reserved; | 
|  | struct sockaddr_storage addr; | 
|  | }; | 
|  | struct rdma_ucm_resolve_ip { | 
|  | struct sockaddr_in6 src_addr; | 
|  | struct sockaddr_in6 dst_addr; | 
|  | __u32 id; | 
|  | __u32 timeout_ms; | 
|  | }; | 
|  | struct rdma_ucm_resolve_addr { | 
|  | __u32 id; | 
|  | __u32 timeout_ms; | 
|  | __u16 src_size; | 
|  | __u16 dst_size; | 
|  | __u32 reserved; | 
|  | struct sockaddr_storage src_addr; | 
|  | struct sockaddr_storage dst_addr; | 
|  | }; | 
|  | struct rdma_ucm_resolve_route { | 
|  | __u32 id; | 
|  | __u32 timeout_ms; | 
|  | }; | 
|  | enum { | 
|  | RDMA_USER_CM_QUERY_ADDR, | 
|  | RDMA_USER_CM_QUERY_PATH, | 
|  | RDMA_USER_CM_QUERY_GID | 
|  | }; | 
|  | struct rdma_ucm_query { | 
|  | __aligned_u64 response; | 
|  | __u32 id; | 
|  | __u32 option; | 
|  | }; | 
|  | struct rdma_ucm_query_route_resp { | 
|  | __aligned_u64 node_guid; | 
|  | struct ib_user_path_rec ib_route[2]; | 
|  | struct sockaddr_in6 src_addr; | 
|  | struct sockaddr_in6 dst_addr; | 
|  | __u32 num_paths; | 
|  | __u8 port_num; | 
|  | __u8 reserved[3]; | 
|  | }; | 
|  | struct rdma_ucm_query_addr_resp { | 
|  | __aligned_u64 node_guid; | 
|  | __u8 port_num; | 
|  | __u8 reserved; | 
|  | __u16 pkey; | 
|  | __u16 src_size; | 
|  | __u16 dst_size; | 
|  | struct sockaddr_storage src_addr; | 
|  | struct sockaddr_storage dst_addr; | 
|  | }; | 
|  | struct rdma_ucm_query_path_resp { | 
|  | __u32 num_paths; | 
|  | __u32 reserved; | 
|  | struct ib_path_rec_data path_data[0]; | 
|  | }; | 
|  | struct rdma_ucm_conn_param { | 
|  | __u32 qp_num; | 
|  | __u32 qkey; | 
|  | __u8 private_data[RDMA_MAX_PRIVATE_DATA]; | 
|  | __u8 private_data_len; | 
|  | __u8 srq; | 
|  | __u8 responder_resources; | 
|  | __u8 initiator_depth; | 
|  | __u8 flow_control; | 
|  | __u8 retry_count; | 
|  | __u8 rnr_retry_count; | 
|  | __u8 valid; | 
|  | }; | 
|  | struct rdma_ucm_ud_param { | 
|  | __u32 qp_num; | 
|  | __u32 qkey; | 
|  | struct ib_uverbs_ah_attr ah_attr; | 
|  | __u8 private_data[RDMA_MAX_PRIVATE_DATA]; | 
|  | __u8 private_data_len; | 
|  | __u8 reserved[7]; | 
|  | }; | 
|  | struct rdma_ucm_connect { | 
|  | struct rdma_ucm_conn_param conn_param; | 
|  | __u32 id; | 
|  | __u32 reserved; | 
|  | }; | 
|  | struct rdma_ucm_listen { | 
|  | __u32 id; | 
|  | __u32 backlog; | 
|  | }; | 
|  | struct rdma_ucm_accept { | 
|  | __aligned_u64 uid; | 
|  | struct rdma_ucm_conn_param conn_param; | 
|  | __u32 id; | 
|  | __u32 reserved; | 
|  | }; | 
|  | struct rdma_ucm_reject { | 
|  | __u32 id; | 
|  | __u8 private_data_len; | 
|  | __u8 reserved[3]; | 
|  | __u8 private_data[RDMA_MAX_PRIVATE_DATA]; | 
|  | }; | 
|  | struct rdma_ucm_disconnect { | 
|  | __u32 id; | 
|  | }; | 
|  | struct rdma_ucm_init_qp_attr { | 
|  | __aligned_u64 response; | 
|  | __u32 id; | 
|  | __u32 qp_state; | 
|  | }; | 
|  | struct rdma_ucm_notify { | 
|  | __u32 id; | 
|  | __u32 event; | 
|  | }; | 
|  | struct rdma_ucm_join_ip_mcast { | 
|  | __aligned_u64 response; | 
|  | __aligned_u64 uid; | 
|  | struct sockaddr_in6 addr; | 
|  | __u32 id; | 
|  | }; | 
|  | enum { | 
|  | RDMA_MC_JOIN_FLAG_FULLMEMBER, | 
|  | RDMA_MC_JOIN_FLAG_SENDONLY_FULLMEMBER, | 
|  | RDMA_MC_JOIN_FLAG_RESERVED, | 
|  | }; | 
|  | struct rdma_ucm_join_mcast { | 
|  | __aligned_u64 response; | 
|  | __aligned_u64 uid; | 
|  | __u32 id; | 
|  | __u16 addr_size; | 
|  | __u16 join_flags; | 
|  | struct sockaddr_storage addr; | 
|  | }; | 
|  | struct rdma_ucm_get_event { | 
|  | __aligned_u64 response; | 
|  | }; | 
|  | struct rdma_ucm_event_resp { | 
|  | __aligned_u64 uid; | 
|  | __u32 id; | 
|  | __u32 event; | 
|  | __u32 status; | 
|  | union { | 
|  | struct rdma_ucm_conn_param conn; | 
|  | struct rdma_ucm_ud_param ud; | 
|  | } param; | 
|  | __u32 reserved; | 
|  | }; | 
|  | enum { | 
|  | RDMA_OPTION_ID = 0, | 
|  | RDMA_OPTION_IB = 1 | 
|  | }; | 
|  | enum { | 
|  | RDMA_OPTION_ID_TOS = 0, | 
|  | RDMA_OPTION_ID_REUSEADDR = 1, | 
|  | RDMA_OPTION_ID_AFONLY = 2, | 
|  | RDMA_OPTION_ID_ACK_TIMEOUT = 3 | 
|  | }; | 
|  | enum { | 
|  | RDMA_OPTION_IB_PATH = 1 | 
|  | }; | 
|  | struct rdma_ucm_set_option { | 
|  | __aligned_u64 optval; | 
|  | __u32 id; | 
|  | __u32 level; | 
|  | __u32 optname; | 
|  | __u32 optlen; | 
|  | }; | 
|  | struct rdma_ucm_migrate_id { | 
|  | __aligned_u64 response; | 
|  | __u32 id; | 
|  | __u32 fd; | 
|  | }; | 
|  | struct rdma_ucm_migrate_resp { | 
|  | __u32 events_reported; | 
|  | }; | 
|  | #endif |