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