• 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 num_sge;
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 rkey;
66       __u32 reserved;
67     } rdma;
68     struct {
69       __aligned_u64 remote_addr;
70       __aligned_u64 compare_add;
71       __aligned_u64 swap;
72       __u32 rkey;
73       __u32 reserved;
74     } atomic;
75     struct {
76       __u32 remote_qpn;
77       __u32 remote_qkey;
78       __u16 pkey_index;
79       __u16 reserved;
80       __u32 ah_num;
81       __u32 pad[4];
82       struct rxe_av av;
83     } ud;
84     struct {
85       __aligned_u64 addr;
86       __aligned_u64 length;
87       __u32 mr_lkey;
88       __u32 mw_rkey;
89       __u32 rkey;
90       __u32 access;
91     } mw;
92   } wr;
93 };
94 struct rxe_sge {
95   __aligned_u64 addr;
96   __u32 length;
97   __u32 lkey;
98 };
99 struct mminfo {
100   __aligned_u64 offset;
101   __u32 size;
102   __u32 pad;
103 };
104 struct rxe_dma_info {
105   __u32 length;
106   __u32 resid;
107   __u32 cur_sge;
108   __u32 num_sge;
109   __u32 sge_offset;
110   __u32 reserved;
111   union {
112     __DECLARE_FLEX_ARRAY(__u8, inline_data);
113     __DECLARE_FLEX_ARRAY(struct rxe_sge, sge);
114   };
115 };
116 struct rxe_send_wqe {
117   struct rxe_send_wr wr;
118   __u32 status;
119   __u32 state;
120   __aligned_u64 iova;
121   __u32 mask;
122   __u32 first_psn;
123   __u32 last_psn;
124   __u32 ack_length;
125   __u32 ssn;
126   __u32 has_rd_atomic;
127   struct rxe_dma_info dma;
128 };
129 struct rxe_recv_wqe {
130   __aligned_u64 wr_id;
131   __u32 num_sge;
132   __u32 padding;
133   struct rxe_dma_info dma;
134 };
135 struct rxe_create_ah_resp {
136   __u32 ah_num;
137   __u32 reserved;
138 };
139 struct rxe_create_cq_resp {
140   struct mminfo mi;
141 };
142 struct rxe_resize_cq_resp {
143   struct mminfo mi;
144 };
145 struct rxe_create_qp_resp {
146   struct mminfo rq_mi;
147   struct mminfo sq_mi;
148 };
149 struct rxe_create_srq_resp {
150   struct mminfo mi;
151   __u32 srq_num;
152   __u32 reserved;
153 };
154 struct rxe_modify_srq_cmd {
155   __aligned_u64 mmap_info_addr;
156 };
157 struct rxe_queue_buf {
158   __u32 log2_elem_size;
159   __u32 index_mask;
160   __u32 pad_1[30];
161   __u32 producer_index;
162   __u32 pad_2[31];
163   __u32 consumer_index;
164   __u32 pad_3[31];
165   __u8 data[];
166 };
167 #endif
168