1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*
23*7c478bd9Sstevel@tonic-gate  * Copyright (c) 2002-2004, Network Appliance, Inc. All rights reserved.
24*7c478bd9Sstevel@tonic-gate  */
25*7c478bd9Sstevel@tonic-gate 
26*7c478bd9Sstevel@tonic-gate /*
27*7c478bd9Sstevel@tonic-gate  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
28*7c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
29*7c478bd9Sstevel@tonic-gate  */
30*7c478bd9Sstevel@tonic-gate 
31*7c478bd9Sstevel@tonic-gate 
32*7c478bd9Sstevel@tonic-gate #ifndef _UDAT_REDIRECTION_H_
33*7c478bd9Sstevel@tonic-gate #define	_UDAT_REDIRECTION_H_
34*7c478bd9Sstevel@tonic-gate 
35*7c478bd9Sstevel@tonic-gate /*
36*7c478bd9Sstevel@tonic-gate  *
37*7c478bd9Sstevel@tonic-gate  * HEADER: udat_redirection.h
38*7c478bd9Sstevel@tonic-gate  *
39*7c478bd9Sstevel@tonic-gate  * PURPOSE: User DAT macro definitions
40*7c478bd9Sstevel@tonic-gate  *
41*7c478bd9Sstevel@tonic-gate  * Description: Macros to invoke DAPL functions from the dat_registry
42*7c478bd9Sstevel@tonic-gate  *
43*7c478bd9Sstevel@tonic-gate  * Mapping rules:
44*7c478bd9Sstevel@tonic-gate  *      All global symbols are prepended with "DAT_" or "dat_"
45*7c478bd9Sstevel@tonic-gate  *      All DAT objects have an 'api' tag which, such as 'ep' or 'lmr'
46*7c478bd9Sstevel@tonic-gate  *      The method table is in the provider definition structure.
47*7c478bd9Sstevel@tonic-gate  *
48*7c478bd9Sstevel@tonic-gate  *
49*7c478bd9Sstevel@tonic-gate  *
50*7c478bd9Sstevel@tonic-gate  */
51*7c478bd9Sstevel@tonic-gate 
52*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus
53*7c478bd9Sstevel@tonic-gate extern "C" {
54*7c478bd9Sstevel@tonic-gate #endif
55*7c478bd9Sstevel@tonic-gate 
56*7c478bd9Sstevel@tonic-gate #define	DAT_LMR_CREATE(ia, mem_type, reg_desc, len, pz, priv,\
57*7c478bd9Sstevel@tonic-gate 			lmr, lmr_context, rmr_context, reg_len, reg_addr) \
58*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(ia)->lmr_create_func)(\
59*7c478bd9Sstevel@tonic-gate 		(ia),\
60*7c478bd9Sstevel@tonic-gate 		(mem_type),\
61*7c478bd9Sstevel@tonic-gate 		(reg_desc),\
62*7c478bd9Sstevel@tonic-gate 		(len),\
63*7c478bd9Sstevel@tonic-gate 		(pz),\
64*7c478bd9Sstevel@tonic-gate 		(priv),\
65*7c478bd9Sstevel@tonic-gate 		(lmr),\
66*7c478bd9Sstevel@tonic-gate 		(lmr_context),\
67*7c478bd9Sstevel@tonic-gate 		(rmr_context),\
68*7c478bd9Sstevel@tonic-gate 		(reg_len),\
69*7c478bd9Sstevel@tonic-gate 		(reg_addr))
70*7c478bd9Sstevel@tonic-gate 
71*7c478bd9Sstevel@tonic-gate #define	DAT_EVD_CREATE(ia, qlen, cno, flags, handle) \
72*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(ia)->evd_create_func)(\
73*7c478bd9Sstevel@tonic-gate 		(ia),\
74*7c478bd9Sstevel@tonic-gate 		(qlen),\
75*7c478bd9Sstevel@tonic-gate 		(cno),\
76*7c478bd9Sstevel@tonic-gate 		(flags),\
77*7c478bd9Sstevel@tonic-gate 		(handle))
78*7c478bd9Sstevel@tonic-gate 
79*7c478bd9Sstevel@tonic-gate #define	DAT_EVD_ENABLE(evd) \
80*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(evd)->evd_enable_func)(\
81*7c478bd9Sstevel@tonic-gate 		(evd))
82*7c478bd9Sstevel@tonic-gate 
83*7c478bd9Sstevel@tonic-gate #define	DAT_EVD_WAIT(evd, timeout, threshold, event, nmore) \
84*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(evd)->evd_wait_func)(\
85*7c478bd9Sstevel@tonic-gate 		(evd),\
86*7c478bd9Sstevel@tonic-gate 		(timeout),\
87*7c478bd9Sstevel@tonic-gate 		(threshold),\
88*7c478bd9Sstevel@tonic-gate 		(event),\
89*7c478bd9Sstevel@tonic-gate 		(nmore))
90*7c478bd9Sstevel@tonic-gate 
91*7c478bd9Sstevel@tonic-gate #define	DAT_EVD_DISABLE(evd) \
92*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(evd)->evd_disable_func)(\
93*7c478bd9Sstevel@tonic-gate 		(evd))
94*7c478bd9Sstevel@tonic-gate 
95*7c478bd9Sstevel@tonic-gate #define	DAT_EVD_SET_UNWAITABLE(evd) \
96*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(evd)->evd_set_unwaitable_func)(\
97*7c478bd9Sstevel@tonic-gate 		(evd))
98*7c478bd9Sstevel@tonic-gate 
99*7c478bd9Sstevel@tonic-gate #define	DAT_EVD_CLEAR_UNWAITABLE(evd) \
100*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(evd)->evd_clear_unwaitable_func)(\
101*7c478bd9Sstevel@tonic-gate 		(evd))
102*7c478bd9Sstevel@tonic-gate 
103*7c478bd9Sstevel@tonic-gate #define	DAT_EVD_MODIFY_CNO(evd, cno) \
104*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(evd)->evd_modify_cno_func)(\
105*7c478bd9Sstevel@tonic-gate 		(evd),\
106*7c478bd9Sstevel@tonic-gate 		(cno))
107*7c478bd9Sstevel@tonic-gate 
108*7c478bd9Sstevel@tonic-gate #define	DAT_CNO_CREATE(ia, proxy, cno) \
109*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(ia)->cno_create_func)(\
110*7c478bd9Sstevel@tonic-gate 		(ia),\
111*7c478bd9Sstevel@tonic-gate 		(proxy),\
112*7c478bd9Sstevel@tonic-gate 		(cno))
113*7c478bd9Sstevel@tonic-gate 
114*7c478bd9Sstevel@tonic-gate #define	DAT_CNO_MODIFY_AGENT(cno, proxy) \
115*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(cno)->cno_modify_agent_func)(\
116*7c478bd9Sstevel@tonic-gate 		(cno),\
117*7c478bd9Sstevel@tonic-gate 		(proxy))
118*7c478bd9Sstevel@tonic-gate 
119*7c478bd9Sstevel@tonic-gate #define	DAT_CNO_QUERY(cno, mask, param) \
120*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(cno)->cno_query_func)(\
121*7c478bd9Sstevel@tonic-gate 		(cno),\
122*7c478bd9Sstevel@tonic-gate 		(mask),\
123*7c478bd9Sstevel@tonic-gate 		(param))
124*7c478bd9Sstevel@tonic-gate 
125*7c478bd9Sstevel@tonic-gate #define	DAT_CNO_FREE(cno) \
126*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(cno)->cno_free_func)(\
127*7c478bd9Sstevel@tonic-gate 		(cno))
128*7c478bd9Sstevel@tonic-gate 
129*7c478bd9Sstevel@tonic-gate #define	DAT_CNO_WAIT(cno, timeout, evd) \
130*7c478bd9Sstevel@tonic-gate 	(*DAT_HANDLE_TO_PROVIDER(cno)->cno_wait_func)(\
131*7c478bd9Sstevel@tonic-gate 		(cno),\
132*7c478bd9Sstevel@tonic-gate 		(timeout),\
133*7c478bd9Sstevel@tonic-gate 		(evd))
134*7c478bd9Sstevel@tonic-gate /*
135*7c478bd9Sstevel@tonic-gate  * FUNCTION PROTOTYPES
136*7c478bd9Sstevel@tonic-gate  *
137*7c478bd9Sstevel@tonic-gate  * User DAT function call definitions
138*7c478bd9Sstevel@tonic-gate  *
139*7c478bd9Sstevel@tonic-gate  */
140*7c478bd9Sstevel@tonic-gate 
141*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_LMR_CREATE_FUNC)(
142*7c478bd9Sstevel@tonic-gate 	IN	DAT_IA_HANDLE,		/* ia_handle		*/
143*7c478bd9Sstevel@tonic-gate 	IN	DAT_MEM_TYPE,		/* mem_type		*/
144*7c478bd9Sstevel@tonic-gate 	IN	DAT_REGION_DESCRIPTION,	/* region_description   */
145*7c478bd9Sstevel@tonic-gate 	IN	DAT_VLEN,		/* length		*/
146*7c478bd9Sstevel@tonic-gate 	IN	DAT_PZ_HANDLE,		/* pz_handle		*/
147*7c478bd9Sstevel@tonic-gate 	IN	DAT_MEM_PRIV_FLAGS,	/* privileges		*/
148*7c478bd9Sstevel@tonic-gate 	OUT	DAT_LMR_HANDLE *,	/* lmr_handle		*/
149*7c478bd9Sstevel@tonic-gate 	OUT	DAT_LMR_CONTEXT *,	/* lmr_context		*/
150*7c478bd9Sstevel@tonic-gate 	OUT	DAT_RMR_CONTEXT *,	/* rmr_context		*/
151*7c478bd9Sstevel@tonic-gate 	OUT	DAT_VLEN *,		/* registered_length	*/
152*7c478bd9Sstevel@tonic-gate 	OUT	DAT_VADDR *);		/* registered_address   */
153*7c478bd9Sstevel@tonic-gate 
154*7c478bd9Sstevel@tonic-gate /* Event Functions */
155*7c478bd9Sstevel@tonic-gate 
156*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_EVD_CREATE_FUNC)(
157*7c478bd9Sstevel@tonic-gate 	IN	DAT_IA_HANDLE,		/* ia_handle		*/
158*7c478bd9Sstevel@tonic-gate 	IN	DAT_COUNT,		/* evd_min_qlen		*/
159*7c478bd9Sstevel@tonic-gate 	IN	DAT_CNO_HANDLE,		/* cno_handle		*/
160*7c478bd9Sstevel@tonic-gate 	IN	DAT_EVD_FLAGS,		/* evd_flags		*/
161*7c478bd9Sstevel@tonic-gate 	OUT	DAT_EVD_HANDLE *);	/* evd_handle		*/
162*7c478bd9Sstevel@tonic-gate 
163*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_EVD_MODIFY_CNO_FUNC)(
164*7c478bd9Sstevel@tonic-gate 	IN	DAT_EVD_HANDLE,		/* evd_handle		*/
165*7c478bd9Sstevel@tonic-gate 	IN	DAT_CNO_HANDLE);	/* cno_handle		*/
166*7c478bd9Sstevel@tonic-gate 
167*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_CNO_CREATE_FUNC)(
168*7c478bd9Sstevel@tonic-gate 	IN	DAT_IA_HANDLE,		/* ia_handle		*/
169*7c478bd9Sstevel@tonic-gate 	IN	DAT_OS_WAIT_PROXY_AGENT,	/* agent		*/
170*7c478bd9Sstevel@tonic-gate 	OUT	DAT_CNO_HANDLE *);	/* cno_handle		*/
171*7c478bd9Sstevel@tonic-gate 
172*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_CNO_MODIFY_AGENT_FUNC)(
173*7c478bd9Sstevel@tonic-gate 	IN	DAT_CNO_HANDLE,			/* cno_handle		*/
174*7c478bd9Sstevel@tonic-gate 	IN	DAT_OS_WAIT_PROXY_AGENT);	/* agent		*/
175*7c478bd9Sstevel@tonic-gate 
176*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_CNO_QUERY_FUNC)(
177*7c478bd9Sstevel@tonic-gate 	IN	DAT_CNO_HANDLE,		/* cno_handle		*/
178*7c478bd9Sstevel@tonic-gate 	IN	DAT_CNO_PARAM_MASK,	/* cno_param_mask	*/
179*7c478bd9Sstevel@tonic-gate 	OUT	DAT_CNO_PARAM *);	/* cno_param		*/
180*7c478bd9Sstevel@tonic-gate 
181*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_CNO_FREE_FUNC)(
182*7c478bd9Sstevel@tonic-gate 	IN DAT_CNO_HANDLE);		/* cno_handle		*/
183*7c478bd9Sstevel@tonic-gate 
184*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN(*DAT_CNO_WAIT_FUNC)(
185*7c478bd9Sstevel@tonic-gate 	IN	DAT_CNO_HANDLE,		/* cno_handle		*/
186*7c478bd9Sstevel@tonic-gate 	IN	DAT_TIMEOUT,		/* timeout		*/
187*7c478bd9Sstevel@tonic-gate 	OUT	DAT_EVD_HANDLE *);	/* evd_handle		*/
188*7c478bd9Sstevel@tonic-gate 
189*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_EVD_ENABLE_FUNC)(
190*7c478bd9Sstevel@tonic-gate 	IN	DAT_EVD_HANDLE);	/* evd_handle		*/
191*7c478bd9Sstevel@tonic-gate 
192*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_EVD_WAIT_FUNC)(
193*7c478bd9Sstevel@tonic-gate 	IN	DAT_EVD_HANDLE,		/* evd_handle		*/
194*7c478bd9Sstevel@tonic-gate 	IN	DAT_TIMEOUT,		/* Timeout		*/
195*7c478bd9Sstevel@tonic-gate 	IN	DAT_COUNT,		/* Threshold		*/
196*7c478bd9Sstevel@tonic-gate 	OUT	DAT_EVENT *,		/* event		*/
197*7c478bd9Sstevel@tonic-gate 	OUT	DAT_COUNT *);		/* N more events	*/
198*7c478bd9Sstevel@tonic-gate 
199*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_EVD_DISABLE_FUNC)(
200*7c478bd9Sstevel@tonic-gate 	IN	DAT_EVD_HANDLE);	/* evd_handle		*/
201*7c478bd9Sstevel@tonic-gate 
202*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_EVD_SET_UNWAITABLE_FUNC)(
203*7c478bd9Sstevel@tonic-gate 	IN DAT_EVD_HANDLE);		/* evd_handle */
204*7c478bd9Sstevel@tonic-gate 
205*7c478bd9Sstevel@tonic-gate typedef DAT_RETURN (*DAT_EVD_CLEAR_UNWAITABLE_FUNC)(
206*7c478bd9Sstevel@tonic-gate 	IN DAT_EVD_HANDLE); /* evd_handle */
207*7c478bd9Sstevel@tonic-gate 
208*7c478bd9Sstevel@tonic-gate 
209*7c478bd9Sstevel@tonic-gate #include <dat/dat_redirection.h>
210*7c478bd9Sstevel@tonic-gate 
211*7c478bd9Sstevel@tonic-gate struct dat_provider
212*7c478bd9Sstevel@tonic-gate {
213*7c478bd9Sstevel@tonic-gate 	const char			*device_name;
214*7c478bd9Sstevel@tonic-gate 	DAT_PVOID			extension;
215*7c478bd9Sstevel@tonic-gate 
216*7c478bd9Sstevel@tonic-gate 	DAT_IA_OPEN_FUNC		ia_open_func;
217*7c478bd9Sstevel@tonic-gate 	DAT_IA_QUERY_FUNC		ia_query_func;
218*7c478bd9Sstevel@tonic-gate 	DAT_IA_CLOSE_FUNC		ia_close_func;
219*7c478bd9Sstevel@tonic-gate 
220*7c478bd9Sstevel@tonic-gate 	DAT_SET_CONSUMER_CONTEXT_FUNC	set_consumer_context_func;
221*7c478bd9Sstevel@tonic-gate 	DAT_GET_CONSUMER_CONTEXT_FUNC	get_consumer_context_func;
222*7c478bd9Sstevel@tonic-gate 	DAT_GET_HANDLE_TYPE_FUNC	get_handle_type_func;
223*7c478bd9Sstevel@tonic-gate 
224*7c478bd9Sstevel@tonic-gate 	DAT_CNO_CREATE_FUNC		cno_create_func;	/* udat only */
225*7c478bd9Sstevel@tonic-gate 	DAT_CNO_MODIFY_AGENT_FUNC	cno_modify_agent_func;	/* udat only */
226*7c478bd9Sstevel@tonic-gate 	DAT_CNO_QUERY_FUNC		cno_query_func;		/* udat only */
227*7c478bd9Sstevel@tonic-gate 	DAT_CNO_FREE_FUNC		cno_free_func;		/* udat only */
228*7c478bd9Sstevel@tonic-gate 	DAT_CNO_WAIT_FUNC		cno_wait_func;		/* udat only */
229*7c478bd9Sstevel@tonic-gate 
230*7c478bd9Sstevel@tonic-gate 	DAT_CR_QUERY_FUNC		cr_query_func;
231*7c478bd9Sstevel@tonic-gate 	DAT_CR_ACCEPT_FUNC		cr_accept_func;
232*7c478bd9Sstevel@tonic-gate 	DAT_CR_REJECT_FUNC		cr_reject_func;
233*7c478bd9Sstevel@tonic-gate 	DAT_CR_HANDOFF_FUNC		cr_handoff_func;
234*7c478bd9Sstevel@tonic-gate 
235*7c478bd9Sstevel@tonic-gate 	DAT_EVD_CREATE_FUNC		evd_create_func;
236*7c478bd9Sstevel@tonic-gate 	DAT_EVD_QUERY_FUNC		evd_query_func;
237*7c478bd9Sstevel@tonic-gate 
238*7c478bd9Sstevel@tonic-gate 	DAT_EVD_MODIFY_CNO_FUNC		evd_modify_cno_func;    /* udat only */
239*7c478bd9Sstevel@tonic-gate 	DAT_EVD_ENABLE_FUNC		evd_enable_func;	/* udat only */
240*7c478bd9Sstevel@tonic-gate 	DAT_EVD_DISABLE_FUNC		evd_disable_func;	/* udat only */
241*7c478bd9Sstevel@tonic-gate 	DAT_EVD_WAIT_FUNC		evd_wait_func;		/* udat only */
242*7c478bd9Sstevel@tonic-gate 
243*7c478bd9Sstevel@tonic-gate 	DAT_EVD_RESIZE_FUNC		evd_resize_func;
244*7c478bd9Sstevel@tonic-gate 	DAT_EVD_POST_SE_FUNC		evd_post_se_func;
245*7c478bd9Sstevel@tonic-gate 	DAT_EVD_DEQUEUE_FUNC		evd_dequeue_func;
246*7c478bd9Sstevel@tonic-gate 	DAT_EVD_FREE_FUNC		evd_free_func;
247*7c478bd9Sstevel@tonic-gate 
248*7c478bd9Sstevel@tonic-gate 	DAT_EP_CREATE_FUNC		ep_create_func;
249*7c478bd9Sstevel@tonic-gate 	DAT_EP_QUERY_FUNC		ep_query_func;
250*7c478bd9Sstevel@tonic-gate 	DAT_EP_MODIFY_FUNC		ep_modify_func;
251*7c478bd9Sstevel@tonic-gate 	DAT_EP_CONNECT_FUNC		ep_connect_func;
252*7c478bd9Sstevel@tonic-gate 	DAT_EP_DUP_CONNECT_FUNC		ep_dup_connect_func;
253*7c478bd9Sstevel@tonic-gate 	DAT_EP_DISCONNECT_FUNC		ep_disconnect_func;
254*7c478bd9Sstevel@tonic-gate 	DAT_EP_POST_SEND_FUNC		ep_post_send_func;
255*7c478bd9Sstevel@tonic-gate 	DAT_EP_POST_RECV_FUNC		ep_post_recv_func;
256*7c478bd9Sstevel@tonic-gate 	DAT_EP_POST_RDMA_READ_FUNC	ep_post_rdma_read_func;
257*7c478bd9Sstevel@tonic-gate 	DAT_EP_POST_RDMA_WRITE_FUNC	ep_post_rdma_write_func;
258*7c478bd9Sstevel@tonic-gate 	DAT_EP_GET_STATUS_FUNC		ep_get_status_func;
259*7c478bd9Sstevel@tonic-gate 	DAT_EP_FREE_FUNC		ep_free_func;
260*7c478bd9Sstevel@tonic-gate 
261*7c478bd9Sstevel@tonic-gate 	DAT_LMR_CREATE_FUNC		lmr_create_func;
262*7c478bd9Sstevel@tonic-gate 	DAT_LMR_QUERY_FUNC		lmr_query_func;
263*7c478bd9Sstevel@tonic-gate 
264*7c478bd9Sstevel@tonic-gate 	DAT_LMR_FREE_FUNC		lmr_free_func;
265*7c478bd9Sstevel@tonic-gate 
266*7c478bd9Sstevel@tonic-gate 	DAT_RMR_CREATE_FUNC		rmr_create_func;
267*7c478bd9Sstevel@tonic-gate 	DAT_RMR_QUERY_FUNC		rmr_query_func;
268*7c478bd9Sstevel@tonic-gate 	DAT_RMR_BIND_FUNC		rmr_bind_func;
269*7c478bd9Sstevel@tonic-gate 	DAT_RMR_FREE_FUNC		rmr_free_func;
270*7c478bd9Sstevel@tonic-gate 
271*7c478bd9Sstevel@tonic-gate 	DAT_PSP_CREATE_FUNC		psp_create_func;
272*7c478bd9Sstevel@tonic-gate 	DAT_PSP_QUERY_FUNC		psp_query_func;
273*7c478bd9Sstevel@tonic-gate 	DAT_PSP_FREE_FUNC		psp_free_func;
274*7c478bd9Sstevel@tonic-gate 
275*7c478bd9Sstevel@tonic-gate 	DAT_RSP_CREATE_FUNC		rsp_create_func;
276*7c478bd9Sstevel@tonic-gate 	DAT_RSP_QUERY_FUNC		rsp_query_func;
277*7c478bd9Sstevel@tonic-gate 	DAT_RSP_FREE_FUNC		rsp_free_func;
278*7c478bd9Sstevel@tonic-gate 
279*7c478bd9Sstevel@tonic-gate 	DAT_PZ_CREATE_FUNC		pz_create_func;
280*7c478bd9Sstevel@tonic-gate 	DAT_PZ_QUERY_FUNC		pz_query_func;
281*7c478bd9Sstevel@tonic-gate 	DAT_PZ_FREE_FUNC		pz_free_func;
282*7c478bd9Sstevel@tonic-gate 
283*7c478bd9Sstevel@tonic-gate 	/* dat-1.1 */
284*7c478bd9Sstevel@tonic-gate 	DAT_PSP_CREATE_ANY_FUNC		psp_create_any_func;
285*7c478bd9Sstevel@tonic-gate 	DAT_EP_RESET_FUNC		ep_reset_func;
286*7c478bd9Sstevel@tonic-gate 
287*7c478bd9Sstevel@tonic-gate 	/* udat-1.1 */
288*7c478bd9Sstevel@tonic-gate 	DAT_EVD_SET_UNWAITABLE_FUNC	evd_set_unwaitable_func;
289*7c478bd9Sstevel@tonic-gate 	DAT_EVD_CLEAR_UNWAITABLE_FUNC	evd_clear_unwaitable_func;
290*7c478bd9Sstevel@tonic-gate 
291*7c478bd9Sstevel@tonic-gate 	/* dat-1.2 */
292*7c478bd9Sstevel@tonic-gate 	DAT_LMR_SYNC_RDMA_READ_FUNC	lmr_sync_rdma_read_func;
293*7c478bd9Sstevel@tonic-gate 	DAT_LMR_SYNC_RDMA_WRITE_FUNC	lmr_sync_rdma_write_func;
294*7c478bd9Sstevel@tonic-gate 
295*7c478bd9Sstevel@tonic-gate 	DAT_EP_CREATE_WITH_SRQ_FUNC	ep_create_with_srq_func;
296*7c478bd9Sstevel@tonic-gate 	DAT_EP_RECV_QUERY_FUNC		ep_recv_query_func;
297*7c478bd9Sstevel@tonic-gate 	DAT_EP_SET_WATERMARK_FUNC	ep_set_watermark_func;
298*7c478bd9Sstevel@tonic-gate 	DAT_SRQ_CREATE_FUNC		srq_create_func;
299*7c478bd9Sstevel@tonic-gate 	DAT_SRQ_FREE_FUNC		srq_free_func;
300*7c478bd9Sstevel@tonic-gate 	DAT_SRQ_POST_RECV_FUNC		srq_post_recv_func;
301*7c478bd9Sstevel@tonic-gate 	DAT_SRQ_QUERY_FUNC		srq_query_func;
302*7c478bd9Sstevel@tonic-gate 	DAT_SRQ_RESIZE_FUNC		srq_resize_func;
303*7c478bd9Sstevel@tonic-gate 	DAT_SRQ_SET_LW_FUNC		srq_set_lw_func;
304*7c478bd9Sstevel@tonic-gate };
305*7c478bd9Sstevel@tonic-gate 
306*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus
307*7c478bd9Sstevel@tonic-gate }
308*7c478bd9Sstevel@tonic-gate #endif
309*7c478bd9Sstevel@tonic-gate 
310*7c478bd9Sstevel@tonic-gate #endif /* _UDAT_REDIRECTION_H_ */
311