• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef RDMA_USER_RXE_H
20 #define RDMA_USER_RXE_H
21 #include <linux/types.h>
22 #include <linux/socket.h>
23 #include <linux/in.h>
24 #include <linux/in6.h>
25 enum {
26   RXE_NETWORK_TYPE_IPV4 = 1,
27   RXE_NETWORK_TYPE_IPV6 = 2,
28 };
29 union rxe_gid {
30   __u8 raw[16];
31   struct {
32     __be64 subnet_prefix;
33     __be64 interface_id;
34   } global;
35 };
36 struct rxe_global_route {
37   union rxe_gid dgid;
38   __u32 flow_label;
39   __u8 sgid_index;
40   __u8 hop_limit;
41   __u8 traffic_class;
42 };
43 struct rxe_av {
44   __u8 port_num;
45   __u8 network_type;
46   __u8 dmac[6];
47   struct rxe_global_route grh;
48   union {
49     struct sockaddr_in _sockaddr_in;
50     struct sockaddr_in6 _sockaddr_in6;
51   } sgid_addr, dgid_addr;
52 };
53 struct rxe_send_wr {
54   __aligned_u64 wr_id;
55   __u32 reserved;
56   __u32 opcode;
57   __u32 send_flags;
58   union {
59     __be32 imm_data;
60     __u32 invalidate_rkey;
61   } ex;
62   union {
63     struct {
64       __aligned_u64 remote_addr;
65       __u32 length;
66       __u32 rkey;
67       __u8 type;
68       __u8 level;
69     } flush;
70     struct {
71       __aligned_u64 remote_addr;
72       __u32 rkey;
73       __u32 reserved;
74     } rdma;
75     struct {
76       __aligned_u64 remote_addr;
77       __aligned_u64 compare_add;
78       __aligned_u64 swap;
79       __u32 rkey;
80       __u32 reserved;
81     } atomic;
82     struct {
83       __u32 remote_qpn;
84       __u32 remote_qkey;
85       __u16 pkey_index;
86       __u16 reserved;
87       __u32 ah_num;
88       __u32 pad[4];
89       struct rxe_av av;
90     } ud;
91     struct {
92       __aligned_u64 addr;
93       __aligned_u64 length;
94       __u32 mr_lkey;
95       __u32 mw_rkey;
96       __u32 rkey;
97       __u32 access;
98     } mw;
99   } wr;
100 };
101 struct rxe_sge {
102   __aligned_u64 addr;
103   __u32 length;
104   __u32 lkey;
105 };
106 struct mminfo {
107   __aligned_u64 offset;
108   __u32 size;
109   __u32 pad;
110 };
111 struct rxe_dma_info {
112   __u32 length;
113   __u32 resid;
114   __u32 cur_sge;
115   __u32 num_sge;
116   __u32 sge_offset;
117   __u32 reserved;
118   union {
119     __DECLARE_FLEX_ARRAY(__u8, inline_data);
120     __DECLARE_FLEX_ARRAY(__u8, atomic_wr);
121     __DECLARE_FLEX_ARRAY(struct rxe_sge, sge);
122   };
123 };
124 struct rxe_send_wqe {
125   struct rxe_send_wr wr;
126   __u32 status;
127   __u32 state;
128   __aligned_u64 iova;
129   __u32 mask;
130   __u32 first_psn;
131   __u32 last_psn;
132   __u32 ack_length;
133   __u32 ssn;
134   __u32 has_rd_atomic;
135   struct rxe_dma_info dma;
136 };
137 struct rxe_recv_wqe {
138   __aligned_u64 wr_id;
139   __u32 reserved;
140   __u32 padding;
141   struct rxe_dma_info dma;
142 };
143 struct rxe_create_ah_resp {
144   __u32 ah_num;
145   __u32 reserved;
146 };
147 struct rxe_create_cq_resp {
148   struct mminfo mi;
149 };
150 struct rxe_resize_cq_resp {
151   struct mminfo mi;
152 };
153 struct rxe_create_qp_resp {
154   struct mminfo rq_mi;
155   struct mminfo sq_mi;
156 };
157 struct rxe_create_srq_resp {
158   struct mminfo mi;
159   __u32 srq_num;
160   __u32 reserved;
161 };
162 struct rxe_modify_srq_cmd {
163   __aligned_u64 mmap_info_addr;
164 };
165 struct rxe_queue_buf {
166   __u32 log2_elem_size;
167   __u32 index_mask;
168   __u32 pad_1[30];
169   __u32 producer_index;
170   __u32 pad_2[31];
171   __u32 consumer_index;
172   __u32 pad_3[31];
173   __u8 data[];
174 };
175 #endif
176