xref: /onnv-gate/usr/src/lib/udapl/libdat/common/dat_api.c (revision 0:68f95e015346)
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