xref: /aosp_15_r20/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1 /*
2  * This file is auto-generated. Modifications will be lost.
3  *
4  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5  * for more information.
6  */
7 #ifndef RDMA_USER_RXE_H
8 #define RDMA_USER_RXE_H
9 #include <linux/types.h>
10 #include <linux/socket.h>
11 #include <linux/in.h>
12 #include <linux/in6.h>
13 enum {
14   RXE_NETWORK_TYPE_IPV4 = 1,
15   RXE_NETWORK_TYPE_IPV6 = 2,
16 };
17 union rxe_gid {
18   __u8 raw[16];
19   struct {
20     __be64 subnet_prefix;
21     __be64 interface_id;
22   } global;
23 };
24 struct rxe_global_route {
25   union rxe_gid dgid;
26   __u32 flow_label;
27   __u8 sgid_index;
28   __u8 hop_limit;
29   __u8 traffic_class;
30 };
31 struct rxe_av {
32   __u8 port_num;
33   __u8 network_type;
34   __u8 dmac[6];
35   struct rxe_global_route grh;
36   union {
37     struct sockaddr_in _sockaddr_in;
38     struct sockaddr_in6 _sockaddr_in6;
39   } sgid_addr, dgid_addr;
40 };
41 struct rxe_send_wr {
42   __aligned_u64 wr_id;
43   __u32 reserved;
44   __u32 opcode;
45   __u32 send_flags;
46   union {
47     __be32 imm_data;
48     __u32 invalidate_rkey;
49   } ex;
50   union {
51     struct {
52       __aligned_u64 remote_addr;
53       __u32 length;
54       __u32 rkey;
55       __u8 type;
56       __u8 level;
57     } flush;
58     struct {
59       __aligned_u64 remote_addr;
60       __u32 rkey;
61       __u32 reserved;
62     } rdma;
63     struct {
64       __aligned_u64 remote_addr;
65       __aligned_u64 compare_add;
66       __aligned_u64 swap;
67       __u32 rkey;
68       __u32 reserved;
69     } atomic;
70     struct {
71       __u32 remote_qpn;
72       __u32 remote_qkey;
73       __u16 pkey_index;
74       __u16 reserved;
75       __u32 ah_num;
76       __u32 pad[4];
77       struct rxe_av av;
78     } ud;
79     struct {
80       __aligned_u64 addr;
81       __aligned_u64 length;
82       __u32 mr_lkey;
83       __u32 mw_rkey;
84       __u32 rkey;
85       __u32 access;
86     } mw;
87   } wr;
88 };
89 struct rxe_sge {
90   __aligned_u64 addr;
91   __u32 length;
92   __u32 lkey;
93 };
94 struct mminfo {
95   __aligned_u64 offset;
96   __u32 size;
97   __u32 pad;
98 };
99 struct rxe_dma_info {
100   __u32 length;
101   __u32 resid;
102   __u32 cur_sge;
103   __u32 num_sge;
104   __u32 sge_offset;
105   __u32 reserved;
106   union {
107     __DECLARE_FLEX_ARRAY(__u8, inline_data);
108     __DECLARE_FLEX_ARRAY(__u8, atomic_wr);
109     __DECLARE_FLEX_ARRAY(struct rxe_sge, sge);
110   };
111 };
112 struct rxe_send_wqe {
113   struct rxe_send_wr wr;
114   __u32 status;
115   __u32 state;
116   __aligned_u64 iova;
117   __u32 mask;
118   __u32 first_psn;
119   __u32 last_psn;
120   __u32 ack_length;
121   __u32 ssn;
122   __u32 has_rd_atomic;
123   struct rxe_dma_info dma;
124 };
125 struct rxe_recv_wqe {
126   __aligned_u64 wr_id;
127   __u32 reserved;
128   __u32 padding;
129   struct rxe_dma_info dma;
130 };
131 struct rxe_create_ah_resp {
132   __u32 ah_num;
133   __u32 reserved;
134 };
135 struct rxe_create_cq_resp {
136   struct mminfo mi;
137 };
138 struct rxe_resize_cq_resp {
139   struct mminfo mi;
140 };
141 struct rxe_create_qp_resp {
142   struct mminfo rq_mi;
143   struct mminfo sq_mi;
144 };
145 struct rxe_create_srq_resp {
146   struct mminfo mi;
147   __u32 srq_num;
148   __u32 reserved;
149 };
150 struct rxe_modify_srq_cmd {
151   __aligned_u64 mmap_info_addr;
152 };
153 struct rxe_queue_buf {
154   __u32 log2_elem_size;
155   __u32 index_mask;
156   __u32 pad_1[30];
157   __u32 producer_index;
158   __u32 pad_2[31];
159   __u32 consumer_index;
160   __u32 pad_3[31];
161   __u8 data[];
162 };
163 #endif
164