rdma_user_cm.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033: #ifndef RDMA_USER_CM_H
034: #define RDMA_USER_CM_H
035:
036: #include <linux/types.h>
037: #include <linux/in6.h>
038: #include <rdma/ib_user_verbs.h>
039: #include <rdma/ib_user_sa.h>
040:
041: #define RDMA_USER_CM_ABI_VERSION 4
042:
043: #define RDMA_MAX_PRIVATE_DATA 256
044:
045: enum {
046: RDMA_USER_CM_CMD_CREATE_ID,
047: RDMA_USER_CM_CMD_DESTROY_ID,
048: RDMA_USER_CM_CMD_BIND_ADDR,
049: RDMA_USER_CM_CMD_RESOLVE_ADDR,
050: RDMA_USER_CM_CMD_RESOLVE_ROUTE,
051: RDMA_USER_CM_CMD_QUERY_ROUTE,
052: RDMA_USER_CM_CMD_CONNECT,
053: RDMA_USER_CM_CMD_LISTEN,
054: RDMA_USER_CM_CMD_ACCEPT,
055: RDMA_USER_CM_CMD_REJECT,
056: RDMA_USER_CM_CMD_DISCONNECT,
057: RDMA_USER_CM_CMD_INIT_QP_ATTR,
058: RDMA_USER_CM_CMD_GET_EVENT,
059: RDMA_USER_CM_CMD_GET_OPTION,
060: RDMA_USER_CM_CMD_SET_OPTION,
061: RDMA_USER_CM_CMD_NOTIFY,
062: RDMA_USER_CM_CMD_JOIN_MCAST,
063: RDMA_USER_CM_CMD_LEAVE_MCAST,
064: RDMA_USER_CM_CMD_MIGRATE_ID
065: };
066:
067:
068:
069:
070: struct rdma_ucm_cmd_hdr {
071: __u32 cmd;
072: __u16 in;
073: __u16 out;
074: };
075:
076: struct rdma_ucm_create_id {
077: __u64 uid;
078: __u64 response;
079: __u16 ps;
080: __u8 qp_type;
081: __u8 reserved[5];
082: };
083:
084: struct rdma_ucm_create_id_resp {
085: __u32 id;
086: };
087:
088: struct rdma_ucm_destroy_id {
089: __u64 response;
090: __u32 id;
091: __u32 reserved;
092: };
093:
094: struct rdma_ucm_destroy_id_resp {
095: __u32 events_reported;
096: };
097:
098: struct rdma_ucm_bind_addr {
099: __u64 response;
100: struct sockaddr_in6 addr;
101: __u32 id;
102: };
103:
104: struct rdma_ucm_resolve_addr {
105: struct sockaddr_in6 src_addr;
106: struct sockaddr_in6 dst_addr;
107: __u32 id;
108: __u32 timeout_ms;
109: };
110:
111: struct rdma_ucm_resolve_route {
112: __u32 id;
113: __u32 timeout_ms;
114: };
115:
116: struct rdma_ucm_query_route {
117: __u64 response;
118: __u32 id;
119: __u32 reserved;
120: };
121:
122: struct rdma_ucm_query_route_resp {
123: __u64 node_guid;
124: struct ib_user_path_rec ib_route[2];
125: struct sockaddr_in6 src_addr;
126: struct sockaddr_in6 dst_addr;
127: __u32 num_paths;
128: __u8 port_num;
129: __u8 reserved[3];
130: };
131:
132: struct rdma_ucm_conn_param {
133: __u32 qp_num;
134: __u32 reserved;
135: __u8 private_data[RDMA_MAX_PRIVATE_DATA];
136: __u8 private_data_len;
137: __u8 srq;
138: __u8 responder_resources;
139: __u8 initiator_depth;
140: __u8 flow_control;
141: __u8 retry_count;
142: __u8 rnr_retry_count;
143: __u8 valid;
144: };
145:
146: struct rdma_ucm_ud_param {
147: __u32 qp_num;
148: __u32 qkey;
149: struct ib_uverbs_ah_attr ah_attr;
150: __u8 private_data[RDMA_MAX_PRIVATE_DATA];
151: __u8 private_data_len;
152: __u8 reserved[7];
153: };
154:
155: struct rdma_ucm_connect {
156: struct rdma_ucm_conn_param conn_param;
157: __u32 id;
158: __u32 reserved;
159: };
160:
161: struct rdma_ucm_listen {
162: __u32 id;
163: __u32 backlog;
164: };
165:
166: struct rdma_ucm_accept {
167: __u64 uid;
168: struct rdma_ucm_conn_param conn_param;
169: __u32 id;
170: __u32 reserved;
171: };
172:
173: struct rdma_ucm_reject {
174: __u32 id;
175: __u8 private_data_len;
176: __u8 reserved[3];
177: __u8 private_data[RDMA_MAX_PRIVATE_DATA];
178: };
179:
180: struct rdma_ucm_disconnect {
181: __u32 id;
182: };
183:
184: struct rdma_ucm_init_qp_attr {
185: __u64 response;
186: __u32 id;
187: __u32 qp_state;
188: };
189:
190: struct rdma_ucm_notify {
191: __u32 id;
192: __u32 event;
193: };
194:
195: struct rdma_ucm_join_mcast {
196: __u64 response;
197: __u64 uid;
198: struct sockaddr_in6 addr;
199: __u32 id;
200: };
201:
202: struct rdma_ucm_get_event {
203: __u64 response;
204: };
205:
206: struct rdma_ucm_event_resp {
207: __u64 uid;
208: __u32 id;
209: __u32 event;
210: __u32 status;
211: union {
212: struct rdma_ucm_conn_param conn;
213: struct rdma_ucm_ud_param ud;
214: } param;
215: };
216:
217:
218: enum {
219: RDMA_OPTION_ID = 0,
220: RDMA_OPTION_IB = 1
221: };
222:
223:
224: enum {
225: RDMA_OPTION_ID_TOS = 0,
226: RDMA_OPTION_ID_REUSEADDR = 1,
227: RDMA_OPTION_IB_PATH = 1
228: };
229:
230: struct rdma_ucm_set_option {
231: __u64 optval;
232: __u32 id;
233: __u32 level;
234: __u32 optname;
235: __u32 optlen;
236: };
237:
238: struct rdma_ucm_migrate_id {
239: __u64 response;
240: __u32 id;
241: __u32 fd;
242: };
243:
244: struct rdma_ucm_migrate_resp {
245: __u32 events_reported;
246: };
247:
248: #endif
249:
© Andrew Scott 2006 -
2025,
All Rights Reserved