1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2 /*
3  * Copyright (c) 2003-2007 Network Appliance, Inc. All rights reserved.
4  *
5  * This software is available to you under a choice of one of two
6  * licenses.  You may choose to be licensed under the terms of the GNU
7  * General Public License (GPL) Version 2, available from the file
8  * COPYING in the main directory of this source tree, or the BSD-type
9  * license below:
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  *
15  *      Redistributions of source code must retain the above copyright
16  *      notice, this list of conditions and the following disclaimer.
17  *
18  *      Redistributions in binary form must reproduce the above
19  *      copyright notice, this list of conditions and the following
20  *      disclaimer in the documentation and/or other materials provided
21  *      with the distribution.
22  *
23  *      Neither the name of the Network Appliance, Inc. nor the names of
24  *      its contributors may be used to endorse or promote products
25  *      derived from this software without specific prior written
26  *      permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  */
40 
41 #ifndef _LINUX_SUNRPC_XPRTRDMA_H
42 #define _LINUX_SUNRPC_XPRTRDMA_H
43 
44 /*
45  * Constants. Max RPC/NFS header is big enough to account for
46  * additional marshaling buffers passed down by Linux client.
47  *
48  * RDMA header is currently fixed max size, and is big enough for a
49  * fully-chunked NFS message (read chunks are the largest). Note only
50  * a single chunk type per message is supported currently.
51  */
52 #define RPCRDMA_MIN_SLOT_TABLE	(4U)
53 #define RPCRDMA_DEF_SLOT_TABLE	(128U)
54 #define RPCRDMA_MAX_SLOT_TABLE	(16384U)
55 
56 #define RPCRDMA_MIN_INLINE  (1024)	/* min inline thresh */
57 #define RPCRDMA_DEF_INLINE  (4096)	/* default inline thresh */
58 #define RPCRDMA_MAX_INLINE  (65536)	/* max inline thresh */
59 
60 /* Memory registration strategies, by number.
61  * This is part of a kernel / user space API. Do not remove. */
62 enum rpcrdma_memreg {
63 	RPCRDMA_BOUNCEBUFFERS = 0,
64 	RPCRDMA_REGISTER,
65 	RPCRDMA_MEMWINDOWS,
66 	RPCRDMA_MEMWINDOWS_ASYNC,
67 	RPCRDMA_MTHCAFMR,
68 	RPCRDMA_FRWR,
69 	RPCRDMA_ALLPHYSICAL,
70 	RPCRDMA_LAST
71 };
72 
73 #endif /* _LINUX_SUNRPC_XPRTRDMA_H */
74