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 IB_USER_CM_H
20#define IB_USER_CM_H
21#include <linux/types.h>
22#include <rdma/ib_user_sa.h>
23#define IB_USER_CM_ABI_VERSION 5
24enum {
25  IB_USER_CM_CMD_CREATE_ID,
26  IB_USER_CM_CMD_DESTROY_ID,
27  IB_USER_CM_CMD_ATTR_ID,
28  IB_USER_CM_CMD_LISTEN,
29  IB_USER_CM_CMD_NOTIFY,
30  IB_USER_CM_CMD_SEND_REQ,
31  IB_USER_CM_CMD_SEND_REP,
32  IB_USER_CM_CMD_SEND_RTU,
33  IB_USER_CM_CMD_SEND_DREQ,
34  IB_USER_CM_CMD_SEND_DREP,
35  IB_USER_CM_CMD_SEND_REJ,
36  IB_USER_CM_CMD_SEND_MRA,
37  IB_USER_CM_CMD_SEND_LAP,
38  IB_USER_CM_CMD_SEND_APR,
39  IB_USER_CM_CMD_SEND_SIDR_REQ,
40  IB_USER_CM_CMD_SEND_SIDR_REP,
41  IB_USER_CM_CMD_EVENT,
42  IB_USER_CM_CMD_INIT_QP_ATTR,
43};
44struct ib_ucm_cmd_hdr {
45  __u32 cmd;
46  __u16 in;
47  __u16 out;
48};
49struct ib_ucm_create_id {
50  __u64 uid;
51  __u64 response;
52};
53struct ib_ucm_create_id_resp {
54  __u32 id;
55};
56struct ib_ucm_destroy_id {
57  __u64 response;
58  __u32 id;
59  __u32 reserved;
60};
61struct ib_ucm_destroy_id_resp {
62  __u32 events_reported;
63};
64struct ib_ucm_attr_id {
65  __u64 response;
66  __u32 id;
67  __u32 reserved;
68};
69struct ib_ucm_attr_id_resp {
70  __be64 service_id;
71  __be64 service_mask;
72  __be32 local_id;
73  __be32 remote_id;
74};
75struct ib_ucm_init_qp_attr {
76  __u64 response;
77  __u32 id;
78  __u32 qp_state;
79};
80struct ib_ucm_listen {
81  __be64 service_id;
82  __be64 service_mask;
83  __u32 id;
84  __u32 reserved;
85};
86struct ib_ucm_notify {
87  __u32 id;
88  __u32 event;
89};
90struct ib_ucm_private_data {
91  __u64 data;
92  __u32 id;
93  __u8 len;
94  __u8 reserved[3];
95};
96struct ib_ucm_req {
97  __u32 id;
98  __u32 qpn;
99  __u32 qp_type;
100  __u32 psn;
101  __be64 sid;
102  __u64 data;
103  __u64 primary_path;
104  __u64 alternate_path;
105  __u8 len;
106  __u8 peer_to_peer;
107  __u8 responder_resources;
108  __u8 initiator_depth;
109  __u8 remote_cm_response_timeout;
110  __u8 flow_control;
111  __u8 local_cm_response_timeout;
112  __u8 retry_count;
113  __u8 rnr_retry_count;
114  __u8 max_cm_retries;
115  __u8 srq;
116  __u8 reserved[5];
117};
118struct ib_ucm_rep {
119  __u64 uid;
120  __u64 data;
121  __u32 id;
122  __u32 qpn;
123  __u32 psn;
124  __u8 len;
125  __u8 responder_resources;
126  __u8 initiator_depth;
127  __u8 target_ack_delay;
128  __u8 failover_accepted;
129  __u8 flow_control;
130  __u8 rnr_retry_count;
131  __u8 srq;
132  __u8 reserved[4];
133};
134struct ib_ucm_info {
135  __u32 id;
136  __u32 status;
137  __u64 info;
138  __u64 data;
139  __u8 info_len;
140  __u8 data_len;
141  __u8 reserved[6];
142};
143struct ib_ucm_mra {
144  __u64 data;
145  __u32 id;
146  __u8 len;
147  __u8 timeout;
148  __u8 reserved[2];
149};
150struct ib_ucm_lap {
151  __u64 path;
152  __u64 data;
153  __u32 id;
154  __u8 len;
155  __u8 reserved[3];
156};
157struct ib_ucm_sidr_req {
158  __u32 id;
159  __u32 timeout;
160  __be64 sid;
161  __u64 data;
162  __u64 path;
163  __u16 reserved_pkey;
164  __u8 len;
165  __u8 max_cm_retries;
166  __u8 reserved[4];
167};
168struct ib_ucm_sidr_rep {
169  __u32 id;
170  __u32 qpn;
171  __u32 qkey;
172  __u32 status;
173  __u64 info;
174  __u64 data;
175  __u8 info_len;
176  __u8 data_len;
177  __u8 reserved[6];
178};
179struct ib_ucm_event_get {
180  __u64 response;
181  __u64 data;
182  __u64 info;
183  __u8 data_len;
184  __u8 info_len;
185  __u8 reserved[6];
186};
187struct ib_ucm_req_event_resp {
188  struct ib_user_path_rec primary_path;
189  struct ib_user_path_rec alternate_path;
190  __be64 remote_ca_guid;
191  __u32 remote_qkey;
192  __u32 remote_qpn;
193  __u32 qp_type;
194  __u32 starting_psn;
195  __u8 responder_resources;
196  __u8 initiator_depth;
197  __u8 local_cm_response_timeout;
198  __u8 flow_control;
199  __u8 remote_cm_response_timeout;
200  __u8 retry_count;
201  __u8 rnr_retry_count;
202  __u8 srq;
203  __u8 port;
204  __u8 reserved[7];
205};
206struct ib_ucm_rep_event_resp {
207  __be64 remote_ca_guid;
208  __u32 remote_qkey;
209  __u32 remote_qpn;
210  __u32 starting_psn;
211  __u8 responder_resources;
212  __u8 initiator_depth;
213  __u8 target_ack_delay;
214  __u8 failover_accepted;
215  __u8 flow_control;
216  __u8 rnr_retry_count;
217  __u8 srq;
218  __u8 reserved[5];
219};
220struct ib_ucm_rej_event_resp {
221  __u32 reason;
222};
223struct ib_ucm_mra_event_resp {
224  __u8 timeout;
225  __u8 reserved[3];
226};
227struct ib_ucm_lap_event_resp {
228  struct ib_user_path_rec path;
229};
230struct ib_ucm_apr_event_resp {
231  __u32 status;
232};
233struct ib_ucm_sidr_req_event_resp {
234  __u16 pkey;
235  __u8 port;
236  __u8 reserved;
237};
238struct ib_ucm_sidr_rep_event_resp {
239  __u32 status;
240  __u32 qkey;
241  __u32 qpn;
242};
243#define IB_UCM_PRES_DATA 0x01
244#define IB_UCM_PRES_INFO 0x02
245#define IB_UCM_PRES_PRIMARY 0x04
246#define IB_UCM_PRES_ALTERNATE 0x08
247struct ib_ucm_event_resp {
248  __u64 uid;
249  __u32 id;
250  __u32 event;
251  __u32 present;
252  __u32 reserved;
253  union {
254    struct ib_ucm_req_event_resp req_resp;
255    struct ib_ucm_rep_event_resp rep_resp;
256    struct ib_ucm_rej_event_resp rej_resp;
257    struct ib_ucm_mra_event_resp mra_resp;
258    struct ib_ucm_lap_event_resp lap_resp;
259    struct ib_ucm_apr_event_resp apr_resp;
260    struct ib_ucm_sidr_req_event_resp sidr_req_resp;
261    struct ib_ucm_sidr_rep_event_resp sidr_rep_resp;
262    __u32 send_status;
263  } u;
264};
265#endif
266