1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate * CDDL HEADER START
3*0Sstevel@tonic-gate *
4*0Sstevel@tonic-gate * The contents of this file are subject to the terms of the
5*0Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only
6*0Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance
7*0Sstevel@tonic-gate * with the License.
8*0Sstevel@tonic-gate *
9*0Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*0Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
11*0Sstevel@tonic-gate * See the License for the specific language governing permissions
12*0Sstevel@tonic-gate * and limitations under the License.
13*0Sstevel@tonic-gate *
14*0Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
15*0Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*0Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
17*0Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
18*0Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
19*0Sstevel@tonic-gate *
20*0Sstevel@tonic-gate * CDDL HEADER END
21*0Sstevel@tonic-gate */
22*0Sstevel@tonic-gate /*
23*0Sstevel@tonic-gate * Copyright (c) 2002-2003, Network Appliance, Inc. All rights reserved.
24*0Sstevel@tonic-gate */
25*0Sstevel@tonic-gate
26*0Sstevel@tonic-gate /*
27*0Sstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
28*0Sstevel@tonic-gate * Use is subject to license terms.
29*0Sstevel@tonic-gate */
30*0Sstevel@tonic-gate
31*0Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI"
32*0Sstevel@tonic-gate
33*0Sstevel@tonic-gate /*
34*0Sstevel@tonic-gate *
35*0Sstevel@tonic-gate * MODULE: dat_api.c
36*0Sstevel@tonic-gate *
37*0Sstevel@tonic-gate * PURPOSE: DAT Provider and Consumer registry functions.
38*0Sstevel@tonic-gate *
39*0Sstevel@tonic-gate */
40*0Sstevel@tonic-gate
41*0Sstevel@tonic-gate #include "dat_osd.h"
42*0Sstevel@tonic-gate #include <dat/dat_registry.h>
43*0Sstevel@tonic-gate
44*0Sstevel@tonic-gate
dat_set_consumer_context(IN DAT_HANDLE dat_handle,IN DAT_CONTEXT context)45*0Sstevel@tonic-gate DAT_RETURN dat_set_consumer_context(
46*0Sstevel@tonic-gate IN DAT_HANDLE dat_handle,
47*0Sstevel@tonic-gate IN DAT_CONTEXT context)
48*0Sstevel@tonic-gate {
49*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(dat_handle)) {
50*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
51*0Sstevel@tonic-gate }
52*0Sstevel@tonic-gate return DAT_SET_CONSUMER_CONTEXT(dat_handle,
53*0Sstevel@tonic-gate context);
54*0Sstevel@tonic-gate }
55*0Sstevel@tonic-gate
56*0Sstevel@tonic-gate
dat_get_consumer_context(IN DAT_HANDLE dat_handle,OUT DAT_CONTEXT * context)57*0Sstevel@tonic-gate DAT_RETURN dat_get_consumer_context(
58*0Sstevel@tonic-gate IN DAT_HANDLE dat_handle,
59*0Sstevel@tonic-gate OUT DAT_CONTEXT *context)
60*0Sstevel@tonic-gate {
61*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(dat_handle)) {
62*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
63*0Sstevel@tonic-gate }
64*0Sstevel@tonic-gate return DAT_GET_CONSUMER_CONTEXT(dat_handle,
65*0Sstevel@tonic-gate context);
66*0Sstevel@tonic-gate
67*0Sstevel@tonic-gate }
68*0Sstevel@tonic-gate
69*0Sstevel@tonic-gate
dat_get_handle_type(IN DAT_HANDLE dat_handle,OUT DAT_HANDLE_TYPE * type)70*0Sstevel@tonic-gate DAT_RETURN dat_get_handle_type(
71*0Sstevel@tonic-gate IN DAT_HANDLE dat_handle,
72*0Sstevel@tonic-gate OUT DAT_HANDLE_TYPE *type)
73*0Sstevel@tonic-gate {
74*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(dat_handle)) {
75*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
76*0Sstevel@tonic-gate }
77*0Sstevel@tonic-gate return DAT_GET_HANDLE_TYPE(dat_handle,
78*0Sstevel@tonic-gate type);
79*0Sstevel@tonic-gate }
80*0Sstevel@tonic-gate
81*0Sstevel@tonic-gate
dat_cr_query(IN DAT_CR_HANDLE cr_handle,IN DAT_CR_PARAM_MASK cr_param_mask,OUT DAT_CR_PARAM * cr_param)82*0Sstevel@tonic-gate DAT_RETURN dat_cr_query(
83*0Sstevel@tonic-gate IN DAT_CR_HANDLE cr_handle,
84*0Sstevel@tonic-gate IN DAT_CR_PARAM_MASK cr_param_mask,
85*0Sstevel@tonic-gate OUT DAT_CR_PARAM *cr_param)
86*0Sstevel@tonic-gate {
87*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(cr_handle)) {
88*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_CR));
89*0Sstevel@tonic-gate }
90*0Sstevel@tonic-gate return DAT_CR_QUERY(cr_handle,
91*0Sstevel@tonic-gate cr_param_mask,
92*0Sstevel@tonic-gate cr_param);
93*0Sstevel@tonic-gate }
94*0Sstevel@tonic-gate
95*0Sstevel@tonic-gate
dat_cr_accept(IN DAT_CR_HANDLE cr_handle,IN DAT_EP_HANDLE ep_handle,IN DAT_COUNT private_data_size,IN const DAT_PVOID private_data)96*0Sstevel@tonic-gate DAT_RETURN dat_cr_accept(
97*0Sstevel@tonic-gate IN DAT_CR_HANDLE cr_handle,
98*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
99*0Sstevel@tonic-gate IN DAT_COUNT private_data_size,
100*0Sstevel@tonic-gate IN const DAT_PVOID private_data)
101*0Sstevel@tonic-gate {
102*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(cr_handle)) {
103*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_CR));
104*0Sstevel@tonic-gate }
105*0Sstevel@tonic-gate return DAT_CR_ACCEPT(cr_handle,
106*0Sstevel@tonic-gate ep_handle,
107*0Sstevel@tonic-gate private_data_size,
108*0Sstevel@tonic-gate private_data);
109*0Sstevel@tonic-gate }
110*0Sstevel@tonic-gate
111*0Sstevel@tonic-gate
dat_cr_reject(IN DAT_CR_HANDLE cr_handle)112*0Sstevel@tonic-gate DAT_RETURN dat_cr_reject(
113*0Sstevel@tonic-gate IN DAT_CR_HANDLE cr_handle)
114*0Sstevel@tonic-gate {
115*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(cr_handle)) {
116*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_CR));
117*0Sstevel@tonic-gate }
118*0Sstevel@tonic-gate return (DAT_CR_REJECT(cr_handle));
119*0Sstevel@tonic-gate }
120*0Sstevel@tonic-gate
121*0Sstevel@tonic-gate
dat_evd_resize(IN DAT_EVD_HANDLE evd_handle,IN DAT_COUNT evd_min_qlen)122*0Sstevel@tonic-gate DAT_RETURN dat_evd_resize(
123*0Sstevel@tonic-gate IN DAT_EVD_HANDLE evd_handle,
124*0Sstevel@tonic-gate IN DAT_COUNT evd_min_qlen)
125*0Sstevel@tonic-gate {
126*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(evd_handle)) {
127*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
128*0Sstevel@tonic-gate }
129*0Sstevel@tonic-gate return DAT_EVD_RESIZE(evd_handle,
130*0Sstevel@tonic-gate evd_min_qlen);
131*0Sstevel@tonic-gate }
132*0Sstevel@tonic-gate
133*0Sstevel@tonic-gate
dat_evd_post_se(IN DAT_EVD_HANDLE evd_handle,IN const DAT_EVENT * event)134*0Sstevel@tonic-gate DAT_RETURN dat_evd_post_se(
135*0Sstevel@tonic-gate IN DAT_EVD_HANDLE evd_handle,
136*0Sstevel@tonic-gate IN const DAT_EVENT *event)
137*0Sstevel@tonic-gate {
138*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(evd_handle)) {
139*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
140*0Sstevel@tonic-gate }
141*0Sstevel@tonic-gate return DAT_EVD_POST_SE(evd_handle,
142*0Sstevel@tonic-gate event);
143*0Sstevel@tonic-gate }
144*0Sstevel@tonic-gate
145*0Sstevel@tonic-gate
dat_evd_dequeue(IN DAT_EVD_HANDLE evd_handle,OUT DAT_EVENT * event)146*0Sstevel@tonic-gate DAT_RETURN dat_evd_dequeue(
147*0Sstevel@tonic-gate IN DAT_EVD_HANDLE evd_handle,
148*0Sstevel@tonic-gate OUT DAT_EVENT *event)
149*0Sstevel@tonic-gate {
150*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(evd_handle)) {
151*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
152*0Sstevel@tonic-gate }
153*0Sstevel@tonic-gate return DAT_EVD_DEQUEUE(evd_handle,
154*0Sstevel@tonic-gate event);
155*0Sstevel@tonic-gate }
156*0Sstevel@tonic-gate
157*0Sstevel@tonic-gate
dat_evd_free(IN DAT_EVD_HANDLE evd_handle)158*0Sstevel@tonic-gate DAT_RETURN dat_evd_free(
159*0Sstevel@tonic-gate IN DAT_EVD_HANDLE evd_handle)
160*0Sstevel@tonic-gate {
161*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(evd_handle)) {
162*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
163*0Sstevel@tonic-gate }
164*0Sstevel@tonic-gate return (DAT_EVD_FREE(evd_handle));
165*0Sstevel@tonic-gate }
166*0Sstevel@tonic-gate
167*0Sstevel@tonic-gate
dat_ep_create(IN DAT_IA_HANDLE ia_handle,IN DAT_PZ_HANDLE pz_handle,IN DAT_EVD_HANDLE recv_completion_evd_handle,IN DAT_EVD_HANDLE request_completion_evd_handle,IN DAT_EVD_HANDLE connect_evd_handle,IN const DAT_EP_ATTR * ep_attributes,OUT DAT_EP_HANDLE * ep_handle)168*0Sstevel@tonic-gate DAT_RETURN dat_ep_create(
169*0Sstevel@tonic-gate IN DAT_IA_HANDLE ia_handle,
170*0Sstevel@tonic-gate IN DAT_PZ_HANDLE pz_handle,
171*0Sstevel@tonic-gate IN DAT_EVD_HANDLE recv_completion_evd_handle,
172*0Sstevel@tonic-gate IN DAT_EVD_HANDLE request_completion_evd_handle,
173*0Sstevel@tonic-gate IN DAT_EVD_HANDLE connect_evd_handle,
174*0Sstevel@tonic-gate IN const DAT_EP_ATTR *ep_attributes,
175*0Sstevel@tonic-gate OUT DAT_EP_HANDLE *ep_handle)
176*0Sstevel@tonic-gate {
177*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ia_handle)) {
178*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
179*0Sstevel@tonic-gate }
180*0Sstevel@tonic-gate return DAT_EP_CREATE(ia_handle,
181*0Sstevel@tonic-gate pz_handle,
182*0Sstevel@tonic-gate recv_completion_evd_handle,
183*0Sstevel@tonic-gate request_completion_evd_handle,
184*0Sstevel@tonic-gate connect_evd_handle,
185*0Sstevel@tonic-gate ep_attributes,
186*0Sstevel@tonic-gate ep_handle);
187*0Sstevel@tonic-gate }
188*0Sstevel@tonic-gate
189*0Sstevel@tonic-gate
dat_ep_query(IN DAT_EP_HANDLE ep_handle,IN DAT_EP_PARAM_MASK ep_param_mask,OUT DAT_EP_PARAM * ep_param)190*0Sstevel@tonic-gate DAT_RETURN dat_ep_query(
191*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
192*0Sstevel@tonic-gate IN DAT_EP_PARAM_MASK ep_param_mask,
193*0Sstevel@tonic-gate OUT DAT_EP_PARAM *ep_param)
194*0Sstevel@tonic-gate {
195*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
196*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
197*0Sstevel@tonic-gate }
198*0Sstevel@tonic-gate return DAT_EP_QUERY(ep_handle,
199*0Sstevel@tonic-gate ep_param_mask,
200*0Sstevel@tonic-gate ep_param);
201*0Sstevel@tonic-gate }
202*0Sstevel@tonic-gate
203*0Sstevel@tonic-gate
dat_ep_modify(IN DAT_EP_HANDLE ep_handle,IN DAT_EP_PARAM_MASK ep_param_mask,IN const DAT_EP_PARAM * ep_param)204*0Sstevel@tonic-gate DAT_RETURN dat_ep_modify(
205*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
206*0Sstevel@tonic-gate IN DAT_EP_PARAM_MASK ep_param_mask,
207*0Sstevel@tonic-gate IN const DAT_EP_PARAM *ep_param)
208*0Sstevel@tonic-gate {
209*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
210*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
211*0Sstevel@tonic-gate }
212*0Sstevel@tonic-gate return DAT_EP_MODIFY(ep_handle,
213*0Sstevel@tonic-gate ep_param_mask,
214*0Sstevel@tonic-gate ep_param);
215*0Sstevel@tonic-gate }
216*0Sstevel@tonic-gate
217*0Sstevel@tonic-gate
dat_ep_connect(IN DAT_EP_HANDLE ep_handle,IN DAT_IA_ADDRESS_PTR remote_ia_address,IN DAT_CONN_QUAL remote_conn_qual,IN DAT_TIMEOUT timeout,IN DAT_COUNT private_data_size,IN const DAT_PVOID private_data,IN DAT_QOS quality_of_service,IN DAT_CONNECT_FLAGS connect_flags)218*0Sstevel@tonic-gate DAT_RETURN dat_ep_connect(
219*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
220*0Sstevel@tonic-gate IN DAT_IA_ADDRESS_PTR remote_ia_address,
221*0Sstevel@tonic-gate IN DAT_CONN_QUAL remote_conn_qual,
222*0Sstevel@tonic-gate IN DAT_TIMEOUT timeout,
223*0Sstevel@tonic-gate IN DAT_COUNT private_data_size,
224*0Sstevel@tonic-gate IN const DAT_PVOID private_data,
225*0Sstevel@tonic-gate IN DAT_QOS quality_of_service,
226*0Sstevel@tonic-gate IN DAT_CONNECT_FLAGS connect_flags)
227*0Sstevel@tonic-gate {
228*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
229*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
230*0Sstevel@tonic-gate }
231*0Sstevel@tonic-gate return DAT_EP_CONNECT(ep_handle,
232*0Sstevel@tonic-gate remote_ia_address,
233*0Sstevel@tonic-gate remote_conn_qual,
234*0Sstevel@tonic-gate timeout,
235*0Sstevel@tonic-gate private_data_size,
236*0Sstevel@tonic-gate private_data,
237*0Sstevel@tonic-gate quality_of_service,
238*0Sstevel@tonic-gate connect_flags);
239*0Sstevel@tonic-gate }
240*0Sstevel@tonic-gate
241*0Sstevel@tonic-gate
dat_ep_dup_connect(IN DAT_EP_HANDLE ep_handle,IN DAT_EP_HANDLE ep_dup_handle,IN DAT_TIMEOUT timeout,IN DAT_COUNT private_data_size,IN const DAT_PVOID private_data,IN DAT_QOS quality_of_service)242*0Sstevel@tonic-gate DAT_RETURN dat_ep_dup_connect(
243*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
244*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_dup_handle,
245*0Sstevel@tonic-gate IN DAT_TIMEOUT timeout,
246*0Sstevel@tonic-gate IN DAT_COUNT private_data_size,
247*0Sstevel@tonic-gate IN const DAT_PVOID private_data,
248*0Sstevel@tonic-gate IN DAT_QOS quality_of_service)
249*0Sstevel@tonic-gate {
250*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
251*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
252*0Sstevel@tonic-gate }
253*0Sstevel@tonic-gate return DAT_EP_DUP_CONNECT(ep_handle,
254*0Sstevel@tonic-gate ep_dup_handle,
255*0Sstevel@tonic-gate timeout,
256*0Sstevel@tonic-gate private_data_size,
257*0Sstevel@tonic-gate private_data,
258*0Sstevel@tonic-gate quality_of_service);
259*0Sstevel@tonic-gate }
260*0Sstevel@tonic-gate
261*0Sstevel@tonic-gate
dat_ep_disconnect(IN DAT_EP_HANDLE ep_handle,IN DAT_CLOSE_FLAGS close_flags)262*0Sstevel@tonic-gate DAT_RETURN dat_ep_disconnect(
263*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
264*0Sstevel@tonic-gate IN DAT_CLOSE_FLAGS close_flags)
265*0Sstevel@tonic-gate {
266*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
267*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
268*0Sstevel@tonic-gate }
269*0Sstevel@tonic-gate return DAT_EP_DISCONNECT(ep_handle,
270*0Sstevel@tonic-gate close_flags);
271*0Sstevel@tonic-gate }
272*0Sstevel@tonic-gate
273*0Sstevel@tonic-gate
dat_ep_post_send(IN DAT_EP_HANDLE ep_handle,IN DAT_COUNT num_segments,IN DAT_LMR_TRIPLET * local_iov,IN DAT_DTO_COOKIE user_cookie,IN DAT_COMPLETION_FLAGS completion_flags)274*0Sstevel@tonic-gate DAT_RETURN dat_ep_post_send(
275*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
276*0Sstevel@tonic-gate IN DAT_COUNT num_segments,
277*0Sstevel@tonic-gate IN DAT_LMR_TRIPLET *local_iov,
278*0Sstevel@tonic-gate IN DAT_DTO_COOKIE user_cookie,
279*0Sstevel@tonic-gate IN DAT_COMPLETION_FLAGS completion_flags)
280*0Sstevel@tonic-gate {
281*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
282*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
283*0Sstevel@tonic-gate }
284*0Sstevel@tonic-gate return DAT_EP_POST_SEND(ep_handle,
285*0Sstevel@tonic-gate num_segments,
286*0Sstevel@tonic-gate local_iov,
287*0Sstevel@tonic-gate user_cookie,
288*0Sstevel@tonic-gate completion_flags);
289*0Sstevel@tonic-gate }
290*0Sstevel@tonic-gate
291*0Sstevel@tonic-gate
dat_ep_post_recv(IN DAT_EP_HANDLE ep_handle,IN DAT_COUNT num_segments,IN DAT_LMR_TRIPLET * local_iov,IN DAT_DTO_COOKIE user_cookie,IN DAT_COMPLETION_FLAGS completion_flags)292*0Sstevel@tonic-gate DAT_RETURN dat_ep_post_recv(
293*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
294*0Sstevel@tonic-gate IN DAT_COUNT num_segments,
295*0Sstevel@tonic-gate IN DAT_LMR_TRIPLET *local_iov,
296*0Sstevel@tonic-gate IN DAT_DTO_COOKIE user_cookie,
297*0Sstevel@tonic-gate IN DAT_COMPLETION_FLAGS completion_flags)
298*0Sstevel@tonic-gate {
299*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
300*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
301*0Sstevel@tonic-gate }
302*0Sstevel@tonic-gate return DAT_EP_POST_RECV(ep_handle,
303*0Sstevel@tonic-gate num_segments,
304*0Sstevel@tonic-gate local_iov,
305*0Sstevel@tonic-gate user_cookie,
306*0Sstevel@tonic-gate completion_flags);
307*0Sstevel@tonic-gate }
308*0Sstevel@tonic-gate
309*0Sstevel@tonic-gate
dat_ep_post_rdma_read(IN DAT_EP_HANDLE ep_handle,IN DAT_COUNT num_segments,IN DAT_LMR_TRIPLET * local_iov,IN DAT_DTO_COOKIE user_cookie,IN const DAT_RMR_TRIPLET * remote_iov,IN DAT_COMPLETION_FLAGS completion_flags)310*0Sstevel@tonic-gate DAT_RETURN dat_ep_post_rdma_read(
311*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
312*0Sstevel@tonic-gate IN DAT_COUNT num_segments,
313*0Sstevel@tonic-gate IN DAT_LMR_TRIPLET *local_iov,
314*0Sstevel@tonic-gate IN DAT_DTO_COOKIE user_cookie,
315*0Sstevel@tonic-gate IN const DAT_RMR_TRIPLET *remote_iov,
316*0Sstevel@tonic-gate IN DAT_COMPLETION_FLAGS completion_flags)
317*0Sstevel@tonic-gate {
318*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
319*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
320*0Sstevel@tonic-gate }
321*0Sstevel@tonic-gate return DAT_EP_POST_RDMA_READ(ep_handle,
322*0Sstevel@tonic-gate num_segments,
323*0Sstevel@tonic-gate local_iov,
324*0Sstevel@tonic-gate user_cookie,
325*0Sstevel@tonic-gate remote_iov,
326*0Sstevel@tonic-gate completion_flags);
327*0Sstevel@tonic-gate }
328*0Sstevel@tonic-gate
329*0Sstevel@tonic-gate
dat_ep_post_rdma_write(IN DAT_EP_HANDLE ep_handle,IN DAT_COUNT num_segments,IN DAT_LMR_TRIPLET * local_iov,IN DAT_DTO_COOKIE user_cookie,IN const DAT_RMR_TRIPLET * remote_iov,IN DAT_COMPLETION_FLAGS completion_flags)330*0Sstevel@tonic-gate DAT_RETURN dat_ep_post_rdma_write(
331*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
332*0Sstevel@tonic-gate IN DAT_COUNT num_segments,
333*0Sstevel@tonic-gate IN DAT_LMR_TRIPLET *local_iov,
334*0Sstevel@tonic-gate IN DAT_DTO_COOKIE user_cookie,
335*0Sstevel@tonic-gate IN const DAT_RMR_TRIPLET *remote_iov,
336*0Sstevel@tonic-gate IN DAT_COMPLETION_FLAGS completion_flags)
337*0Sstevel@tonic-gate {
338*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
339*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
340*0Sstevel@tonic-gate }
341*0Sstevel@tonic-gate return DAT_EP_POST_RDMA_WRITE(ep_handle,
342*0Sstevel@tonic-gate num_segments,
343*0Sstevel@tonic-gate local_iov,
344*0Sstevel@tonic-gate user_cookie,
345*0Sstevel@tonic-gate remote_iov,
346*0Sstevel@tonic-gate completion_flags);
347*0Sstevel@tonic-gate }
348*0Sstevel@tonic-gate
349*0Sstevel@tonic-gate
dat_ep_get_status(IN DAT_EP_HANDLE ep_handle,OUT DAT_EP_STATE * ep_state,OUT DAT_BOOLEAN * recv_idle,OUT DAT_BOOLEAN * request_idle)350*0Sstevel@tonic-gate DAT_RETURN dat_ep_get_status(
351*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
352*0Sstevel@tonic-gate OUT DAT_EP_STATE *ep_state,
353*0Sstevel@tonic-gate OUT DAT_BOOLEAN *recv_idle,
354*0Sstevel@tonic-gate OUT DAT_BOOLEAN *request_idle)
355*0Sstevel@tonic-gate {
356*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
357*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
358*0Sstevel@tonic-gate }
359*0Sstevel@tonic-gate return DAT_EP_GET_STATUS(ep_handle,
360*0Sstevel@tonic-gate ep_state,
361*0Sstevel@tonic-gate recv_idle,
362*0Sstevel@tonic-gate request_idle);
363*0Sstevel@tonic-gate }
364*0Sstevel@tonic-gate
365*0Sstevel@tonic-gate
dat_ep_free(IN DAT_EP_HANDLE ep_handle)366*0Sstevel@tonic-gate DAT_RETURN dat_ep_free(
367*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle)
368*0Sstevel@tonic-gate {
369*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
370*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
371*0Sstevel@tonic-gate }
372*0Sstevel@tonic-gate return (DAT_EP_FREE(ep_handle));
373*0Sstevel@tonic-gate }
374*0Sstevel@tonic-gate
375*0Sstevel@tonic-gate
dat_ep_reset(IN DAT_EP_HANDLE ep_handle)376*0Sstevel@tonic-gate DAT_RETURN dat_ep_reset(
377*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle)
378*0Sstevel@tonic-gate {
379*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
380*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
381*0Sstevel@tonic-gate }
382*0Sstevel@tonic-gate return (DAT_EP_RESET(ep_handle));
383*0Sstevel@tonic-gate }
384*0Sstevel@tonic-gate
385*0Sstevel@tonic-gate
dat_lmr_free(IN DAT_LMR_HANDLE lmr_handle)386*0Sstevel@tonic-gate DAT_RETURN dat_lmr_free(
387*0Sstevel@tonic-gate IN DAT_LMR_HANDLE lmr_handle)
388*0Sstevel@tonic-gate {
389*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(lmr_handle)) {
390*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_LMR));
391*0Sstevel@tonic-gate }
392*0Sstevel@tonic-gate return (DAT_LMR_FREE(lmr_handle));
393*0Sstevel@tonic-gate }
394*0Sstevel@tonic-gate
395*0Sstevel@tonic-gate
dat_rmr_create(IN DAT_PZ_HANDLE pz_handle,OUT DAT_RMR_HANDLE * rmr_handle)396*0Sstevel@tonic-gate DAT_RETURN dat_rmr_create(
397*0Sstevel@tonic-gate IN DAT_PZ_HANDLE pz_handle,
398*0Sstevel@tonic-gate OUT DAT_RMR_HANDLE *rmr_handle)
399*0Sstevel@tonic-gate {
400*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(pz_handle)) {
401*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_PZ));
402*0Sstevel@tonic-gate }
403*0Sstevel@tonic-gate return DAT_RMR_CREATE(pz_handle,
404*0Sstevel@tonic-gate rmr_handle);
405*0Sstevel@tonic-gate }
406*0Sstevel@tonic-gate
407*0Sstevel@tonic-gate
dat_rmr_query(IN DAT_RMR_HANDLE rmr_handle,IN DAT_RMR_PARAM_MASK rmr_param_mask,OUT DAT_RMR_PARAM * rmr_param)408*0Sstevel@tonic-gate DAT_RETURN dat_rmr_query(
409*0Sstevel@tonic-gate IN DAT_RMR_HANDLE rmr_handle,
410*0Sstevel@tonic-gate IN DAT_RMR_PARAM_MASK rmr_param_mask,
411*0Sstevel@tonic-gate OUT DAT_RMR_PARAM *rmr_param)
412*0Sstevel@tonic-gate {
413*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(rmr_handle)) {
414*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_RMR));
415*0Sstevel@tonic-gate }
416*0Sstevel@tonic-gate return DAT_RMR_QUERY(rmr_handle,
417*0Sstevel@tonic-gate rmr_param_mask,
418*0Sstevel@tonic-gate rmr_param);
419*0Sstevel@tonic-gate }
420*0Sstevel@tonic-gate
421*0Sstevel@tonic-gate
dat_rmr_bind(IN DAT_RMR_HANDLE rmr_handle,IN const DAT_LMR_TRIPLET * lmr_triplet,IN DAT_MEM_PRIV_FLAGS mem_priv,IN DAT_EP_HANDLE ep_handle,IN DAT_RMR_COOKIE user_cookie,IN DAT_COMPLETION_FLAGS completion_flags,OUT DAT_RMR_CONTEXT * context)422*0Sstevel@tonic-gate DAT_RETURN dat_rmr_bind(
423*0Sstevel@tonic-gate IN DAT_RMR_HANDLE rmr_handle,
424*0Sstevel@tonic-gate IN const DAT_LMR_TRIPLET *lmr_triplet,
425*0Sstevel@tonic-gate IN DAT_MEM_PRIV_FLAGS mem_priv,
426*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
427*0Sstevel@tonic-gate IN DAT_RMR_COOKIE user_cookie,
428*0Sstevel@tonic-gate IN DAT_COMPLETION_FLAGS completion_flags,
429*0Sstevel@tonic-gate OUT DAT_RMR_CONTEXT *context)
430*0Sstevel@tonic-gate {
431*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(rmr_handle)) {
432*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_RMR));
433*0Sstevel@tonic-gate }
434*0Sstevel@tonic-gate return DAT_RMR_BIND(rmr_handle,
435*0Sstevel@tonic-gate lmr_triplet,
436*0Sstevel@tonic-gate mem_priv,
437*0Sstevel@tonic-gate ep_handle,
438*0Sstevel@tonic-gate user_cookie,
439*0Sstevel@tonic-gate completion_flags,
440*0Sstevel@tonic-gate context);
441*0Sstevel@tonic-gate }
442*0Sstevel@tonic-gate
443*0Sstevel@tonic-gate
dat_rmr_free(IN DAT_RMR_HANDLE rmr_handle)444*0Sstevel@tonic-gate DAT_RETURN dat_rmr_free(
445*0Sstevel@tonic-gate IN DAT_RMR_HANDLE rmr_handle)
446*0Sstevel@tonic-gate {
447*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(rmr_handle)) {
448*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_RMR));
449*0Sstevel@tonic-gate }
450*0Sstevel@tonic-gate return (DAT_RMR_FREE(rmr_handle));
451*0Sstevel@tonic-gate }
452*0Sstevel@tonic-gate
453*0Sstevel@tonic-gate
dat_psp_create(IN DAT_IA_HANDLE ia_handle,IN DAT_CONN_QUAL conn_qual,IN DAT_EVD_HANDLE evd_handle,IN DAT_PSP_FLAGS psp_flags,OUT DAT_PSP_HANDLE * psp_handle)454*0Sstevel@tonic-gate DAT_RETURN dat_psp_create(
455*0Sstevel@tonic-gate IN DAT_IA_HANDLE ia_handle,
456*0Sstevel@tonic-gate IN DAT_CONN_QUAL conn_qual,
457*0Sstevel@tonic-gate IN DAT_EVD_HANDLE evd_handle,
458*0Sstevel@tonic-gate IN DAT_PSP_FLAGS psp_flags,
459*0Sstevel@tonic-gate OUT DAT_PSP_HANDLE *psp_handle)
460*0Sstevel@tonic-gate {
461*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ia_handle)) {
462*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
463*0Sstevel@tonic-gate }
464*0Sstevel@tonic-gate return DAT_PSP_CREATE(ia_handle,
465*0Sstevel@tonic-gate conn_qual,
466*0Sstevel@tonic-gate evd_handle,
467*0Sstevel@tonic-gate psp_flags,
468*0Sstevel@tonic-gate psp_handle);
469*0Sstevel@tonic-gate }
470*0Sstevel@tonic-gate
471*0Sstevel@tonic-gate
dat_psp_query(IN DAT_PSP_HANDLE psp_handle,IN DAT_PSP_PARAM_MASK psp_param_mask,OUT DAT_PSP_PARAM * psp_param)472*0Sstevel@tonic-gate DAT_RETURN dat_psp_query(
473*0Sstevel@tonic-gate IN DAT_PSP_HANDLE psp_handle,
474*0Sstevel@tonic-gate IN DAT_PSP_PARAM_MASK psp_param_mask,
475*0Sstevel@tonic-gate OUT DAT_PSP_PARAM *psp_param)
476*0Sstevel@tonic-gate {
477*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(psp_handle)) {
478*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_PSP));
479*0Sstevel@tonic-gate }
480*0Sstevel@tonic-gate return DAT_PSP_QUERY(psp_handle,
481*0Sstevel@tonic-gate psp_param_mask,
482*0Sstevel@tonic-gate psp_param);
483*0Sstevel@tonic-gate }
484*0Sstevel@tonic-gate
485*0Sstevel@tonic-gate
dat_psp_free(IN DAT_PSP_HANDLE psp_handle)486*0Sstevel@tonic-gate DAT_RETURN dat_psp_free(
487*0Sstevel@tonic-gate IN DAT_PSP_HANDLE psp_handle)
488*0Sstevel@tonic-gate {
489*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(psp_handle)) {
490*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_PSP));
491*0Sstevel@tonic-gate }
492*0Sstevel@tonic-gate return (DAT_PSP_FREE(psp_handle));
493*0Sstevel@tonic-gate }
494*0Sstevel@tonic-gate
495*0Sstevel@tonic-gate
dat_rsp_create(IN DAT_IA_HANDLE ia_handle,IN DAT_CONN_QUAL conn_qual,IN DAT_EP_HANDLE ep_handle,IN DAT_EVD_HANDLE evd_handle,OUT DAT_RSP_HANDLE * rsp_handle)496*0Sstevel@tonic-gate DAT_RETURN dat_rsp_create(
497*0Sstevel@tonic-gate IN DAT_IA_HANDLE ia_handle,
498*0Sstevel@tonic-gate IN DAT_CONN_QUAL conn_qual,
499*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
500*0Sstevel@tonic-gate IN DAT_EVD_HANDLE evd_handle,
501*0Sstevel@tonic-gate OUT DAT_RSP_HANDLE *rsp_handle)
502*0Sstevel@tonic-gate {
503*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ia_handle)) {
504*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
505*0Sstevel@tonic-gate }
506*0Sstevel@tonic-gate return DAT_RSP_CREATE(ia_handle,
507*0Sstevel@tonic-gate conn_qual,
508*0Sstevel@tonic-gate ep_handle,
509*0Sstevel@tonic-gate evd_handle,
510*0Sstevel@tonic-gate rsp_handle);
511*0Sstevel@tonic-gate }
512*0Sstevel@tonic-gate
513*0Sstevel@tonic-gate
dat_rsp_query(IN DAT_RSP_HANDLE rsp_handle,IN DAT_RSP_PARAM_MASK rsp_param_mask,OUT DAT_RSP_PARAM * rsp_param)514*0Sstevel@tonic-gate DAT_RETURN dat_rsp_query(
515*0Sstevel@tonic-gate IN DAT_RSP_HANDLE rsp_handle,
516*0Sstevel@tonic-gate IN DAT_RSP_PARAM_MASK rsp_param_mask,
517*0Sstevel@tonic-gate OUT DAT_RSP_PARAM *rsp_param)
518*0Sstevel@tonic-gate {
519*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(rsp_handle)) {
520*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_RSP));
521*0Sstevel@tonic-gate }
522*0Sstevel@tonic-gate return DAT_RSP_QUERY(rsp_handle,
523*0Sstevel@tonic-gate rsp_param_mask,
524*0Sstevel@tonic-gate rsp_param);
525*0Sstevel@tonic-gate }
526*0Sstevel@tonic-gate
527*0Sstevel@tonic-gate
dat_rsp_free(IN DAT_RSP_HANDLE rsp_handle)528*0Sstevel@tonic-gate DAT_RETURN dat_rsp_free(
529*0Sstevel@tonic-gate IN DAT_RSP_HANDLE rsp_handle)
530*0Sstevel@tonic-gate {
531*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(rsp_handle)) {
532*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_RSP));
533*0Sstevel@tonic-gate }
534*0Sstevel@tonic-gate return (DAT_RSP_FREE(rsp_handle));
535*0Sstevel@tonic-gate }
536*0Sstevel@tonic-gate
537*0Sstevel@tonic-gate
dat_pz_create(IN DAT_IA_HANDLE ia_handle,OUT DAT_PZ_HANDLE * pz_handle)538*0Sstevel@tonic-gate DAT_RETURN dat_pz_create(
539*0Sstevel@tonic-gate IN DAT_IA_HANDLE ia_handle,
540*0Sstevel@tonic-gate OUT DAT_PZ_HANDLE *pz_handle)
541*0Sstevel@tonic-gate {
542*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ia_handle)) {
543*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
544*0Sstevel@tonic-gate }
545*0Sstevel@tonic-gate return DAT_PZ_CREATE(ia_handle,
546*0Sstevel@tonic-gate pz_handle);
547*0Sstevel@tonic-gate }
548*0Sstevel@tonic-gate
549*0Sstevel@tonic-gate
dat_pz_query(IN DAT_PZ_HANDLE pz_handle,IN DAT_PZ_PARAM_MASK pz_param_mask,OUT DAT_PZ_PARAM * pz_param)550*0Sstevel@tonic-gate DAT_RETURN dat_pz_query(
551*0Sstevel@tonic-gate IN DAT_PZ_HANDLE pz_handle,
552*0Sstevel@tonic-gate IN DAT_PZ_PARAM_MASK pz_param_mask,
553*0Sstevel@tonic-gate OUT DAT_PZ_PARAM *pz_param)
554*0Sstevel@tonic-gate {
555*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(pz_handle)) {
556*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_PZ));
557*0Sstevel@tonic-gate }
558*0Sstevel@tonic-gate return DAT_PZ_QUERY(pz_handle,
559*0Sstevel@tonic-gate pz_param_mask,
560*0Sstevel@tonic-gate pz_param);
561*0Sstevel@tonic-gate }
562*0Sstevel@tonic-gate
563*0Sstevel@tonic-gate
dat_pz_free(IN DAT_PZ_HANDLE pz_handle)564*0Sstevel@tonic-gate DAT_RETURN dat_pz_free(
565*0Sstevel@tonic-gate IN DAT_PZ_HANDLE pz_handle)
566*0Sstevel@tonic-gate {
567*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(pz_handle)) {
568*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_PZ));
569*0Sstevel@tonic-gate }
570*0Sstevel@tonic-gate return (DAT_PZ_FREE(pz_handle));
571*0Sstevel@tonic-gate }
572*0Sstevel@tonic-gate
573*0Sstevel@tonic-gate /* ARGSUSED */
dat_lmr_sync_rdma_read(IN DAT_IA_HANDLE ia_handle,IN const DAT_LMR_TRIPLET * local_segments,IN DAT_VLEN num_segments)574*0Sstevel@tonic-gate DAT_RETURN dat_lmr_sync_rdma_read(
575*0Sstevel@tonic-gate IN DAT_IA_HANDLE ia_handle,
576*0Sstevel@tonic-gate IN const DAT_LMR_TRIPLET *local_segments,
577*0Sstevel@tonic-gate IN DAT_VLEN num_segments)
578*0Sstevel@tonic-gate {
579*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ia_handle)) {
580*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
581*0Sstevel@tonic-gate }
582*0Sstevel@tonic-gate
583*0Sstevel@tonic-gate #if defined(__x86)
584*0Sstevel@tonic-gate return (DAT_SUCCESS);
585*0Sstevel@tonic-gate #elif defined(__sparc)
586*0Sstevel@tonic-gate return (DAT_LMR_SYNC_RDMA_READ(ia_handle, local_segments,
587*0Sstevel@tonic-gate num_segments));
588*0Sstevel@tonic-gate #else
589*0Sstevel@tonic-gate #error "ISA not supported"
590*0Sstevel@tonic-gate #endif
591*0Sstevel@tonic-gate }
592*0Sstevel@tonic-gate
593*0Sstevel@tonic-gate /* ARGSUSED */
dat_lmr_sync_rdma_write(IN DAT_IA_HANDLE ia_handle,IN const DAT_LMR_TRIPLET * local_segments,IN DAT_VLEN num_segments)594*0Sstevel@tonic-gate DAT_RETURN dat_lmr_sync_rdma_write(
595*0Sstevel@tonic-gate IN DAT_IA_HANDLE ia_handle,
596*0Sstevel@tonic-gate IN const DAT_LMR_TRIPLET *local_segments,
597*0Sstevel@tonic-gate IN DAT_VLEN num_segments)
598*0Sstevel@tonic-gate {
599*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ia_handle)) {
600*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
601*0Sstevel@tonic-gate }
602*0Sstevel@tonic-gate
603*0Sstevel@tonic-gate #if defined(__x86)
604*0Sstevel@tonic-gate return (DAT_SUCCESS);
605*0Sstevel@tonic-gate #elif defined(__sparc)
606*0Sstevel@tonic-gate return (DAT_LMR_SYNC_RDMA_WRITE(ia_handle, local_segments,
607*0Sstevel@tonic-gate num_segments));
608*0Sstevel@tonic-gate #else
609*0Sstevel@tonic-gate #error "ISA not supported"
610*0Sstevel@tonic-gate #endif
611*0Sstevel@tonic-gate }
612*0Sstevel@tonic-gate
dat_ep_create_with_srq(IN DAT_IA_HANDLE ia_handle,IN DAT_PZ_HANDLE pz_handle,IN DAT_EVD_HANDLE recv_evd_handle,IN DAT_EVD_HANDLE request_evd_handle,IN DAT_EVD_HANDLE connect_evd_handle,IN DAT_SRQ_HANDLE srq_handle,IN const DAT_EP_ATTR * ep_attributes,OUT DAT_EP_HANDLE * ep_handle)613*0Sstevel@tonic-gate DAT_RETURN dat_ep_create_with_srq(
614*0Sstevel@tonic-gate IN DAT_IA_HANDLE ia_handle,
615*0Sstevel@tonic-gate IN DAT_PZ_HANDLE pz_handle,
616*0Sstevel@tonic-gate IN DAT_EVD_HANDLE recv_evd_handle,
617*0Sstevel@tonic-gate IN DAT_EVD_HANDLE request_evd_handle,
618*0Sstevel@tonic-gate IN DAT_EVD_HANDLE connect_evd_handle,
619*0Sstevel@tonic-gate IN DAT_SRQ_HANDLE srq_handle,
620*0Sstevel@tonic-gate IN const DAT_EP_ATTR *ep_attributes,
621*0Sstevel@tonic-gate OUT DAT_EP_HANDLE *ep_handle)
622*0Sstevel@tonic-gate {
623*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ia_handle)) {
624*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
625*0Sstevel@tonic-gate }
626*0Sstevel@tonic-gate return DAT_EP_CREATE_WITH_SRQ(ia_handle,
627*0Sstevel@tonic-gate pz_handle,
628*0Sstevel@tonic-gate recv_evd_handle,
629*0Sstevel@tonic-gate request_evd_handle,
630*0Sstevel@tonic-gate connect_evd_handle,
631*0Sstevel@tonic-gate srq_handle,
632*0Sstevel@tonic-gate ep_attributes,
633*0Sstevel@tonic-gate ep_handle);
634*0Sstevel@tonic-gate }
635*0Sstevel@tonic-gate
dat_ep_recv_query(IN DAT_EP_HANDLE ep_handle,OUT DAT_COUNT * nbufs_allocated,OUT DAT_COUNT * bufs_alloc_span)636*0Sstevel@tonic-gate DAT_RETURN dat_ep_recv_query(
637*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
638*0Sstevel@tonic-gate OUT DAT_COUNT *nbufs_allocated,
639*0Sstevel@tonic-gate OUT DAT_COUNT *bufs_alloc_span)
640*0Sstevel@tonic-gate {
641*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
642*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
643*0Sstevel@tonic-gate }
644*0Sstevel@tonic-gate return DAT_EP_RECV_QUERY(ep_handle,
645*0Sstevel@tonic-gate nbufs_allocated,
646*0Sstevel@tonic-gate bufs_alloc_span);
647*0Sstevel@tonic-gate }
648*0Sstevel@tonic-gate
dat_ep_set_watermark(IN DAT_EP_HANDLE ep_handle,IN DAT_COUNT soft_high_watermark,IN DAT_COUNT hard_high_watermark)649*0Sstevel@tonic-gate DAT_RETURN dat_ep_set_watermark(
650*0Sstevel@tonic-gate IN DAT_EP_HANDLE ep_handle,
651*0Sstevel@tonic-gate IN DAT_COUNT soft_high_watermark,
652*0Sstevel@tonic-gate IN DAT_COUNT hard_high_watermark)
653*0Sstevel@tonic-gate {
654*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ep_handle)) {
655*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_EP));
656*0Sstevel@tonic-gate }
657*0Sstevel@tonic-gate return DAT_EP_SET_WATERMARK(ep_handle,
658*0Sstevel@tonic-gate soft_high_watermark,
659*0Sstevel@tonic-gate hard_high_watermark);
660*0Sstevel@tonic-gate }
661*0Sstevel@tonic-gate
dat_srq_create(IN DAT_IA_HANDLE ia_handle,IN DAT_PZ_HANDLE pz_handle,IN DAT_SRQ_ATTR * srq_attr,OUT DAT_SRQ_HANDLE * srq_handle)662*0Sstevel@tonic-gate DAT_RETURN dat_srq_create(
663*0Sstevel@tonic-gate IN DAT_IA_HANDLE ia_handle,
664*0Sstevel@tonic-gate IN DAT_PZ_HANDLE pz_handle,
665*0Sstevel@tonic-gate IN DAT_SRQ_ATTR *srq_attr,
666*0Sstevel@tonic-gate OUT DAT_SRQ_HANDLE *srq_handle)
667*0Sstevel@tonic-gate {
668*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(ia_handle)) {
669*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
670*0Sstevel@tonic-gate }
671*0Sstevel@tonic-gate return DAT_SRQ_CREATE(ia_handle,
672*0Sstevel@tonic-gate pz_handle,
673*0Sstevel@tonic-gate srq_attr,
674*0Sstevel@tonic-gate srq_handle);
675*0Sstevel@tonic-gate }
676*0Sstevel@tonic-gate
dat_srq_free(IN DAT_SRQ_HANDLE srq_handle)677*0Sstevel@tonic-gate DAT_RETURN dat_srq_free(
678*0Sstevel@tonic-gate IN DAT_SRQ_HANDLE srq_handle)
679*0Sstevel@tonic-gate {
680*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(srq_handle)) {
681*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_SRQ));
682*0Sstevel@tonic-gate }
683*0Sstevel@tonic-gate return (DAT_SRQ_FREE(srq_handle));
684*0Sstevel@tonic-gate }
685*0Sstevel@tonic-gate
dat_srq_post_recv(IN DAT_SRQ_HANDLE srq_handle,IN DAT_COUNT num_segments,IN DAT_LMR_TRIPLET * local_iov,IN DAT_DTO_COOKIE user_cookie)686*0Sstevel@tonic-gate DAT_RETURN dat_srq_post_recv(
687*0Sstevel@tonic-gate IN DAT_SRQ_HANDLE srq_handle,
688*0Sstevel@tonic-gate IN DAT_COUNT num_segments,
689*0Sstevel@tonic-gate IN DAT_LMR_TRIPLET *local_iov,
690*0Sstevel@tonic-gate IN DAT_DTO_COOKIE user_cookie)
691*0Sstevel@tonic-gate {
692*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(srq_handle)) {
693*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_SRQ));
694*0Sstevel@tonic-gate }
695*0Sstevel@tonic-gate return DAT_SRQ_POST_RECV(srq_handle,
696*0Sstevel@tonic-gate num_segments,
697*0Sstevel@tonic-gate local_iov,
698*0Sstevel@tonic-gate user_cookie);
699*0Sstevel@tonic-gate }
700*0Sstevel@tonic-gate
dat_srq_query(IN DAT_SRQ_HANDLE srq_handle,IN DAT_SRQ_PARAM_MASK srq_param_mask,OUT DAT_SRQ_PARAM * srq_param)701*0Sstevel@tonic-gate DAT_RETURN dat_srq_query(
702*0Sstevel@tonic-gate IN DAT_SRQ_HANDLE srq_handle,
703*0Sstevel@tonic-gate IN DAT_SRQ_PARAM_MASK srq_param_mask,
704*0Sstevel@tonic-gate OUT DAT_SRQ_PARAM *srq_param)
705*0Sstevel@tonic-gate {
706*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(srq_handle)) {
707*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_SRQ));
708*0Sstevel@tonic-gate }
709*0Sstevel@tonic-gate return DAT_SRQ_QUERY(srq_handle,
710*0Sstevel@tonic-gate srq_param_mask,
711*0Sstevel@tonic-gate srq_param);
712*0Sstevel@tonic-gate }
713*0Sstevel@tonic-gate
dat_srq_resize(IN DAT_SRQ_HANDLE srq_handle,IN DAT_COUNT srq_max_recv_dto)714*0Sstevel@tonic-gate DAT_RETURN dat_srq_resize(
715*0Sstevel@tonic-gate IN DAT_SRQ_HANDLE srq_handle,
716*0Sstevel@tonic-gate IN DAT_COUNT srq_max_recv_dto)
717*0Sstevel@tonic-gate {
718*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(srq_handle)) {
719*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_SRQ));
720*0Sstevel@tonic-gate }
721*0Sstevel@tonic-gate return DAT_SRQ_RESIZE(srq_handle,
722*0Sstevel@tonic-gate srq_max_recv_dto);
723*0Sstevel@tonic-gate }
724*0Sstevel@tonic-gate
dat_srq_set_lw(IN DAT_SRQ_HANDLE srq_handle,IN DAT_COUNT low_watermark)725*0Sstevel@tonic-gate DAT_RETURN dat_srq_set_lw(
726*0Sstevel@tonic-gate IN DAT_SRQ_HANDLE srq_handle,
727*0Sstevel@tonic-gate IN DAT_COUNT low_watermark)
728*0Sstevel@tonic-gate {
729*0Sstevel@tonic-gate if (DAT_BAD_HANDLE(srq_handle)) {
730*0Sstevel@tonic-gate return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_SRQ));
731*0Sstevel@tonic-gate }
732*0Sstevel@tonic-gate return DAT_SRQ_SET_LW(srq_handle,
733*0Sstevel@tonic-gate low_watermark);
734*0Sstevel@tonic-gate }
735