diff options
author | Sean Hefty <sean.hefty@intel.com> | 2006-11-30 19:53:41 -0500 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-12-12 14:50:22 -0500 |
commit | 75216638572f53612304c05a374f0246fe1d16da (patch) | |
tree | 25697e2e380f4eda1eccc308ba1bbf4b428714c7 /include | |
parent | 628e5f6d39d5a6be96c1272a6709f2dd3ec8b7ce (diff) |
RDMA/cma: Export rdma cm interface to userspace
Export the rdma cm interfaces to userspace via a misc device.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/rdma/ib_marshall.h | 5 | ||||
-rw-r--r-- | include/rdma/rdma_user_cm.h | 206 |
2 files changed, 210 insertions, 1 deletions
diff --git a/include/rdma/ib_marshall.h b/include/rdma/ib_marshall.h index 66bf4d7d0df..db037205c9e 100644 --- a/include/rdma/ib_marshall.h +++ b/include/rdma/ib_marshall.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2005 Intel Corporation. All rights reserved. | 2 | * Copyright (c) 2005-2006 Intel Corporation. All rights reserved. |
3 | * | 3 | * |
4 | * This software is available to you under a choice of one of two | 4 | * This software is available to you under a choice of one of two |
5 | * licenses. You may choose to be licensed under the terms of the GNU | 5 | * licenses. You may choose to be licensed under the terms of the GNU |
@@ -41,6 +41,9 @@ | |||
41 | void ib_copy_qp_attr_to_user(struct ib_uverbs_qp_attr *dst, | 41 | void ib_copy_qp_attr_to_user(struct ib_uverbs_qp_attr *dst, |
42 | struct ib_qp_attr *src); | 42 | struct ib_qp_attr *src); |
43 | 43 | ||
44 | void ib_copy_ah_attr_to_user(struct ib_uverbs_ah_attr *dst, | ||
45 | struct ib_ah_attr *src); | ||
46 | |||
44 | void ib_copy_path_rec_to_user(struct ib_user_path_rec *dst, | 47 | void ib_copy_path_rec_to_user(struct ib_user_path_rec *dst, |
45 | struct ib_sa_path_rec *src); | 48 | struct ib_sa_path_rec *src); |
46 | 49 | ||
diff --git a/include/rdma/rdma_user_cm.h b/include/rdma/rdma_user_cm.h new file mode 100644 index 00000000000..9572ab8eeac --- /dev/null +++ b/include/rdma/rdma_user_cm.h | |||
@@ -0,0 +1,206 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2005-2006 Intel Corporation. All rights reserved. | ||
3 | * | ||
4 | * This software is available to you under a choice of one of two | ||
5 | * licenses. You may choose to be licensed under the terms of the GNU | ||
6 | * General Public License (GPL) Version 2, available from the file | ||
7 | * COPYING in the main directory of this source tree, or the | ||
8 | * OpenIB.org BSD license below: | ||
9 | * | ||
10 | * Redistribution and use in source and binary forms, with or | ||
11 | * without modification, are permitted provided that the following | ||
12 | * conditions are met: | ||
13 | * | ||
14 | * - Redistributions of source code must retain the above | ||
15 | * copyright notice, this list of conditions and the following | ||
16 | * disclaimer. | ||
17 | * | ||
18 | * - Redistributions in binary form must reproduce the above | ||
19 | * copyright notice, this list of conditions and the following | ||
20 | * disclaimer in the documentation and/or other materials | ||
21 | * provided with the distribution. | ||
22 | * | ||
23 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
24 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
25 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
26 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
27 | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
28 | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
29 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
30 | * SOFTWARE. | ||
31 | */ | ||
32 | |||
33 | #ifndef RDMA_USER_CM_H | ||
34 | #define RDMA_USER_CM_H | ||
35 | |||
36 | #include <linux/types.h> | ||
37 | #include <linux/in6.h> | ||
38 | #include <rdma/ib_user_verbs.h> | ||
39 | #include <rdma/ib_user_sa.h> | ||
40 | |||
41 | #define RDMA_USER_CM_ABI_VERSION 3 | ||
42 | |||
43 | #define RDMA_MAX_PRIVATE_DATA 256 | ||
44 | |||
45 | enum { | ||
46 | RDMA_USER_CM_CMD_CREATE_ID, | ||
47 | RDMA_USER_CM_CMD_DESTROY_ID, | ||
48 | RDMA_USER_CM_CMD_BIND_ADDR, | ||
49 | RDMA_USER_CM_CMD_RESOLVE_ADDR, | ||
50 | RDMA_USER_CM_CMD_RESOLVE_ROUTE, | ||
51 | RDMA_USER_CM_CMD_QUERY_ROUTE, | ||
52 | RDMA_USER_CM_CMD_CONNECT, | ||
53 | RDMA_USER_CM_CMD_LISTEN, | ||
54 | RDMA_USER_CM_CMD_ACCEPT, | ||
55 | RDMA_USER_CM_CMD_REJECT, | ||
56 | RDMA_USER_CM_CMD_DISCONNECT, | ||
57 | RDMA_USER_CM_CMD_INIT_QP_ATTR, | ||
58 | RDMA_USER_CM_CMD_GET_EVENT, | ||
59 | RDMA_USER_CM_CMD_GET_OPTION, | ||
60 | RDMA_USER_CM_CMD_SET_OPTION, | ||
61 | RDMA_USER_CM_CMD_NOTIFY | ||
62 | }; | ||
63 | |||
64 | /* | ||
65 | * command ABI structures. | ||
66 | */ | ||
67 | struct rdma_ucm_cmd_hdr { | ||
68 | __u32 cmd; | ||
69 | __u16 in; | ||
70 | __u16 out; | ||
71 | }; | ||
72 | |||
73 | struct rdma_ucm_create_id { | ||
74 | __u64 uid; | ||
75 | __u64 response; | ||
76 | __u16 ps; | ||
77 | __u8 reserved[6]; | ||
78 | }; | ||
79 | |||
80 | struct rdma_ucm_create_id_resp { | ||
81 | __u32 id; | ||
82 | }; | ||
83 | |||
84 | struct rdma_ucm_destroy_id { | ||
85 | __u64 response; | ||
86 | __u32 id; | ||
87 | __u32 reserved; | ||
88 | }; | ||
89 | |||
90 | struct rdma_ucm_destroy_id_resp { | ||
91 | __u32 events_reported; | ||
92 | }; | ||
93 | |||
94 | struct rdma_ucm_bind_addr { | ||
95 | __u64 response; | ||
96 | struct sockaddr_in6 addr; | ||
97 | __u32 id; | ||
98 | }; | ||
99 | |||
100 | struct rdma_ucm_resolve_addr { | ||
101 | struct sockaddr_in6 src_addr; | ||
102 | struct sockaddr_in6 dst_addr; | ||
103 | __u32 id; | ||
104 | __u32 timeout_ms; | ||
105 | }; | ||
106 | |||
107 | struct rdma_ucm_resolve_route { | ||
108 | __u32 id; | ||
109 | __u32 timeout_ms; | ||
110 | }; | ||
111 | |||
112 | struct rdma_ucm_query_route { | ||
113 | __u64 response; | ||
114 | __u32 id; | ||
115 | __u32 reserved; | ||
116 | }; | ||
117 | |||
118 | struct rdma_ucm_query_route_resp { | ||
119 | __u64 node_guid; | ||
120 | struct ib_user_path_rec ib_route[2]; | ||
121 | struct sockaddr_in6 src_addr; | ||
122 | struct sockaddr_in6 dst_addr; | ||
123 | __u32 num_paths; | ||
124 | __u8 port_num; | ||
125 | __u8 reserved[3]; | ||
126 | }; | ||
127 | |||
128 | struct rdma_ucm_conn_param { | ||
129 | __u32 qp_num; | ||
130 | __u32 reserved; | ||
131 | __u8 private_data[RDMA_MAX_PRIVATE_DATA]; | ||
132 | __u8 private_data_len; | ||
133 | __u8 srq; | ||
134 | __u8 responder_resources; | ||
135 | __u8 initiator_depth; | ||
136 | __u8 flow_control; | ||
137 | __u8 retry_count; | ||
138 | __u8 rnr_retry_count; | ||
139 | __u8 valid; | ||
140 | }; | ||
141 | |||
142 | struct rdma_ucm_ud_param { | ||
143 | __u32 qp_num; | ||
144 | __u32 qkey; | ||
145 | struct ib_uverbs_ah_attr ah_attr; | ||
146 | __u8 private_data[RDMA_MAX_PRIVATE_DATA]; | ||
147 | __u8 private_data_len; | ||
148 | __u8 reserved[7]; | ||
149 | }; | ||
150 | |||
151 | struct rdma_ucm_connect { | ||
152 | struct rdma_ucm_conn_param conn_param; | ||
153 | __u32 id; | ||
154 | __u32 reserved; | ||
155 | }; | ||
156 | |||
157 | struct rdma_ucm_listen { | ||
158 | __u32 id; | ||
159 | __u32 backlog; | ||
160 | }; | ||
161 | |||
162 | struct rdma_ucm_accept { | ||
163 | __u64 uid; | ||
164 | struct rdma_ucm_conn_param conn_param; | ||
165 | __u32 id; | ||
166 | __u32 reserved; | ||
167 | }; | ||
168 | |||
169 | struct rdma_ucm_reject { | ||
170 | __u32 id; | ||
171 | __u8 private_data_len; | ||
172 | __u8 reserved[3]; | ||
173 | __u8 private_data[RDMA_MAX_PRIVATE_DATA]; | ||
174 | }; | ||
175 | |||
176 | struct rdma_ucm_disconnect { | ||
177 | __u32 id; | ||
178 | }; | ||
179 | |||
180 | struct rdma_ucm_init_qp_attr { | ||
181 | __u64 response; | ||
182 | __u32 id; | ||
183 | __u32 qp_state; | ||
184 | }; | ||
185 | |||
186 | struct rdma_ucm_notify { | ||
187 | __u32 id; | ||
188 | __u32 event; | ||
189 | }; | ||
190 | |||
191 | struct rdma_ucm_get_event { | ||
192 | __u64 response; | ||
193 | }; | ||
194 | |||
195 | struct rdma_ucm_event_resp { | ||
196 | __u64 uid; | ||
197 | __u32 id; | ||
198 | __u32 event; | ||
199 | __u32 status; | ||
200 | union { | ||
201 | struct rdma_ucm_conn_param conn; | ||
202 | struct rdma_ucm_ud_param ud; | ||
203 | } param; | ||
204 | }; | ||
205 | |||
206 | #endif /* RDMA_USER_CM_H */ | ||