OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [sunrpc/] [rpc_rdma.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * Copyright (c) 2003-2007 Network Appliance, Inc. All rights reserved.
3
 *
4
 * This software is available to you under a choice of one of two
5
 * licenses.  You may choose to be licensed under the terms of the GNU
6
 * General Public License (GPL) Version 2, available from the file
7
 * COPYING in the main directory of this source tree, or the BSD-type
8
 * license below:
9
 *
10
 * Redistribution and use in source and binary forms, with or without
11
 * modification, are permitted provided that the following conditions
12
 * are met:
13
 *
14
 *      Redistributions of source code must retain the above copyright
15
 *      notice, this list of conditions and the following disclaimer.
16
 *
17
 *      Redistributions in binary form must reproduce the above
18
 *      copyright notice, this list of conditions and the following
19
 *      disclaimer in the documentation and/or other materials provided
20
 *      with the distribution.
21
 *
22
 *      Neither the name of the Network Appliance, Inc. nor the names of
23
 *      its contributors may be used to endorse or promote products
24
 *      derived from this software without specific prior written
25
 *      permission.
26
 *
27
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
30
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
31
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
32
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
33
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
34
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
35
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
36
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
 */
39
 
40
#ifndef _LINUX_SUNRPC_RPC_RDMA_H
41
#define _LINUX_SUNRPC_RPC_RDMA_H
42
 
43
struct rpcrdma_segment {
44
        __be32 rs_handle;       /* Registered memory handle */
45
        __be32 rs_length;       /* Length of the chunk in bytes */
46
        __be64 rs_offset;       /* Chunk virtual address or offset */
47
};
48
 
49
/*
50
 * read chunk(s), encoded as a linked list.
51
 */
52
struct rpcrdma_read_chunk {
53
        __be32 rc_discrim;      /* 1 indicates presence */
54
        __be32 rc_position;     /* Position in XDR stream */
55
        struct rpcrdma_segment rc_target;
56
};
57
 
58
/*
59
 * write chunk, and reply chunk.
60
 */
61
struct rpcrdma_write_chunk {
62
        struct rpcrdma_segment wc_target;
63
};
64
 
65
/*
66
 * write chunk(s), encoded as a counted array.
67
 */
68
struct rpcrdma_write_array {
69
        __be32 wc_discrim;      /* 1 indicates presence */
70
        __be32 wc_nchunks;      /* Array count */
71
        struct rpcrdma_write_chunk wc_array[0];
72
};
73
 
74
struct rpcrdma_msg {
75
        __be32 rm_xid;  /* Mirrors the RPC header xid */
76
        __be32 rm_vers; /* Version of this protocol */
77
        __be32 rm_credit;       /* Buffers requested/granted */
78
        __be32 rm_type; /* Type of message (enum rpcrdma_proc) */
79
        union {
80
 
81
                struct {                        /* no chunks */
82
                        __be32 rm_empty[3];     /* 3 empty chunk lists */
83
                } rm_nochunks;
84
 
85
                struct {                        /* no chunks and padded */
86
                        __be32 rm_align;        /* Padding alignment */
87
                        __be32 rm_thresh;       /* Padding threshold */
88
                        __be32 rm_pempty[3];    /* 3 empty chunk lists */
89
                } rm_padded;
90
 
91
                __be32 rm_chunks[0];     /* read, write and reply chunks */
92
 
93
        } rm_body;
94
};
95
 
96
#define RPCRDMA_HDRLEN_MIN      28
97
 
98
enum rpcrdma_errcode {
99
        ERR_VERS = 1,
100
        ERR_CHUNK = 2
101
};
102
 
103
struct rpcrdma_err_vers {
104
        uint32_t rdma_vers_low; /* Version range supported by peer */
105
        uint32_t rdma_vers_high;
106
};
107
 
108
enum rpcrdma_proc {
109
        RDMA_MSG = 0,            /* An RPC call or reply msg */
110
        RDMA_NOMSG = 1,         /* An RPC call or reply msg - separate body */
111
        RDMA_MSGP = 2,          /* An RPC call or reply msg with padding */
112
        RDMA_DONE = 3,          /* Client signals reply completion */
113
        RDMA_ERROR = 4          /* An RPC RDMA encoding error */
114
};
115
 
116
#endif                          /* _LINUX_SUNRPC_RPC_RDMA_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.