1*9e39c5baSBill Taylor /*
2*9e39c5baSBill Taylor  * CDDL HEADER START
3*9e39c5baSBill Taylor  *
4*9e39c5baSBill Taylor  * The contents of this file are subject to the terms of the
5*9e39c5baSBill Taylor  * Common Development and Distribution License (the "License").
6*9e39c5baSBill Taylor  * You may not use this file except in compliance with the License.
7*9e39c5baSBill Taylor  *
8*9e39c5baSBill Taylor  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*9e39c5baSBill Taylor  * or http://www.opensolaris.org/os/licensing.
10*9e39c5baSBill Taylor  * See the License for the specific language governing permissions
11*9e39c5baSBill Taylor  * and limitations under the License.
12*9e39c5baSBill Taylor  *
13*9e39c5baSBill Taylor  * When distributing Covered Code, include this CDDL HEADER in each
14*9e39c5baSBill Taylor  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*9e39c5baSBill Taylor  * If applicable, add the following below this CDDL HEADER, with the
16*9e39c5baSBill Taylor  * fields enclosed by brackets "[]" replaced with your own identifying
17*9e39c5baSBill Taylor  * information: Portions Copyright [yyyy] [name of copyright owner]
18*9e39c5baSBill Taylor  *
19*9e39c5baSBill Taylor  * CDDL HEADER END
20*9e39c5baSBill Taylor  */
21*9e39c5baSBill Taylor 
22*9e39c5baSBill Taylor /*
23*9e39c5baSBill Taylor  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24*9e39c5baSBill Taylor  * Use is subject to license terms.
25*9e39c5baSBill Taylor  */
26*9e39c5baSBill Taylor 
27*9e39c5baSBill Taylor /*
28*9e39c5baSBill Taylor  *
29*9e39c5baSBill Taylor  * MODULE: dapl_lmr_sync_rdma.c
30*9e39c5baSBill Taylor  *
31*9e39c5baSBill Taylor  * PURPOSE: Non-coherent Memory Support
32*9e39c5baSBill Taylor  * Description: Interfaces in this file are completely described in
33*9e39c5baSBill Taylor  *		the DAPL 1.2 API, Chapter 6, section 7
34*9e39c5baSBill Taylor  *
35*9e39c5baSBill Taylor  */
36*9e39c5baSBill Taylor 
37*9e39c5baSBill Taylor #include "dapl.h"
38*9e39c5baSBill Taylor #include "dapl_adapter_util.h"
39*9e39c5baSBill Taylor 
40*9e39c5baSBill Taylor /*
41*9e39c5baSBill Taylor  * dapl_lmr_sync_rdma_read
42*9e39c5baSBill Taylor  *
43*9e39c5baSBill Taylor  * uDAPL: User Direct Access Program Library Version 1.2, 6.7.4.1
44*9e39c5baSBill Taylor  *
45*9e39c5baSBill Taylor  * make memory changes visible to an incoming RDMA Read operation.
46*9e39c5baSBill Taylor  * This operation guarantees consistency by locally flushing the non-coherent
47*9e39c5baSBill Taylor  * cache prior to it being retrieved by remote peer RDMA read operation(s)
48*9e39c5baSBill Taylor  *
49*9e39c5baSBill Taylor  * Input:
50*9e39c5baSBill Taylor  * 	ia_handle
51*9e39c5baSBill Taylor  * 	local_segments
52*9e39c5baSBill Taylor  * 	num_segments
53*9e39c5baSBill Taylor  *
54*9e39c5baSBill Taylor  * Output:
55*9e39c5baSBill Taylor  * 	none
56*9e39c5baSBill Taylor  *
57*9e39c5baSBill Taylor  * Returns:
58*9e39c5baSBill Taylor  * 	DAT_SUCCESS
59*9e39c5baSBill Taylor  * 	DAT_INVALID_HANDLE
60*9e39c5baSBill Taylor  * 	DAT_INVALID_PARAMETER
61*9e39c5baSBill Taylor  */
62*9e39c5baSBill Taylor 
63*9e39c5baSBill Taylor DAT_RETURN
dapl_lmr_sync_rdma_read(IN DAT_IA_HANDLE ia_handle,IN const DAT_LMR_TRIPLET * local_segments,IN DAT_VLEN num_segments)64*9e39c5baSBill Taylor dapl_lmr_sync_rdma_read(
65*9e39c5baSBill Taylor 	IN	DAT_IA_HANDLE ia_handle,
66*9e39c5baSBill Taylor 	IN 	const DAT_LMR_TRIPLET *local_segments,
67*9e39c5baSBill Taylor 	IN	DAT_VLEN num_segments)
68*9e39c5baSBill Taylor {
69*9e39c5baSBill Taylor 	return (dapls_ib_lmr_sync_rdma_common(ia_handle, local_segments,
70*9e39c5baSBill Taylor 	    num_segments, DAPL_MR_SYNC_RDMA_RD));
71*9e39c5baSBill Taylor }
72*9e39c5baSBill Taylor 
73*9e39c5baSBill Taylor /*
74*9e39c5baSBill Taylor  * dapl_lmr_sync_rdma_write
75*9e39c5baSBill Taylor  *
76*9e39c5baSBill Taylor  * uDAPL: User Direct Access Program Library Version 1.2, 6.7.4.1
77*9e39c5baSBill Taylor  *
78*9e39c5baSBill Taylor  * make effects of an incoming RDMA Write operation visible to Consumer.
79*9e39c5baSBill Taylor  * This operation guarantees consistency by locally invalidating the
80*9e39c5baSBill Taylor  * non-coherent cache whose buffer has been populated by remote peer
81*9e39c5baSBill Taylor  * RDMA write operation(s).
82*9e39c5baSBill Taylor  *
83*9e39c5baSBill Taylor  * Input:
84*9e39c5baSBill Taylor  * 	ia_handle
85*9e39c5baSBill Taylor  * 	local_segments
86*9e39c5baSBill Taylor  * 	num_segments
87*9e39c5baSBill Taylor  *
88*9e39c5baSBill Taylor  * Output:
89*9e39c5baSBill Taylor  * 	none
90*9e39c5baSBill Taylor  *
91*9e39c5baSBill Taylor  * Returns:
92*9e39c5baSBill Taylor  * 	DAT_SUCCESS
93*9e39c5baSBill Taylor  * 	DAT_INVALID_HANDLE
94*9e39c5baSBill Taylor  * 	DAT_INVALID_PARAMETER
95*9e39c5baSBill Taylor  */
96*9e39c5baSBill Taylor 
97*9e39c5baSBill Taylor DAT_RETURN
dapl_lmr_sync_rdma_write(IN DAT_IA_HANDLE ia_handle,IN const DAT_LMR_TRIPLET * local_segments,IN DAT_VLEN num_segments)98*9e39c5baSBill Taylor dapl_lmr_sync_rdma_write(
99*9e39c5baSBill Taylor 	IN	DAT_IA_HANDLE ia_handle,
100*9e39c5baSBill Taylor 	IN 	const DAT_LMR_TRIPLET *local_segments,
101*9e39c5baSBill Taylor 	IN	DAT_VLEN num_segments)
102*9e39c5baSBill Taylor {
103*9e39c5baSBill Taylor 	return (dapls_ib_lmr_sync_rdma_common(ia_handle, local_segments,
104*9e39c5baSBill Taylor 	    num_segments, DAPL_MR_SYNC_RDMA_WR));
105*9e39c5baSBill Taylor }
106