blob: 9fd21d7eb16ac0cec4f1f9a97cea44ece35b1439 [file] [log] [blame]
Christopher Ferris49f525c2016-12-12 14:55:36 -08001/****************************************************************************
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>
Christopher Ferris76a1d452018-06-27 14:12:29 -070022#include <linux/socket.h>
23#include <linux/in.h>
24#include <linux/in6.h>
Christopher Ferris32ff3f82020-12-14 13:10:04 -080025enum {
26 RXE_NETWORK_TYPE_IPV4 = 1,
27 RXE_NETWORK_TYPE_IPV6 = 2,
28};
Christopher Ferris49f525c2016-12-12 14:55:36 -080029union rxe_gid {
Christopher Ferris49f525c2016-12-12 14:55:36 -080030 __u8 raw[16];
31 struct {
32 __be64 subnet_prefix;
33 __be64 interface_id;
Christopher Ferris49f525c2016-12-12 14:55:36 -080034 } global;
35};
36struct rxe_global_route {
37 union rxe_gid dgid;
Christopher Ferris49f525c2016-12-12 14:55:36 -080038 __u32 flow_label;
39 __u8 sgid_index;
40 __u8 hop_limit;
41 __u8 traffic_class;
Christopher Ferris49f525c2016-12-12 14:55:36 -080042};
43struct rxe_av {
44 __u8 port_num;
45 __u8 network_type;
Christopher Ferris24f97eb2019-05-20 12:58:13 -070046 __u8 dmac[6];
Christopher Ferris49f525c2016-12-12 14:55:36 -080047 struct rxe_global_route grh;
48 union {
Christopher Ferris49f525c2016-12-12 14:55:36 -080049 struct sockaddr_in _sockaddr_in;
Christopher Ferris49f525c2016-12-12 14:55:36 -080050 struct sockaddr_in6 _sockaddr_in6;
51 } sgid_addr, dgid_addr;
52};
53struct rxe_send_wr {
Christopher Ferris76a1d452018-06-27 14:12:29 -070054 __aligned_u64 wr_id;
Christopher Ferris49f525c2016-12-12 14:55:36 -080055 __u32 num_sge;
56 __u32 opcode;
57 __u32 send_flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -080058 union {
59 __be32 imm_data;
60 __u32 invalidate_rkey;
61 } ex;
Christopher Ferris49f525c2016-12-12 14:55:36 -080062 union {
63 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -070064 __aligned_u64 remote_addr;
Christopher Ferris49f525c2016-12-12 14:55:36 -080065 __u32 rkey;
Christopher Ferris76a1d452018-06-27 14:12:29 -070066 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -080067 } rdma;
68 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -070069 __aligned_u64 remote_addr;
70 __aligned_u64 compare_add;
71 __aligned_u64 swap;
Christopher Ferris49f525c2016-12-12 14:55:36 -080072 __u32 rkey;
Christopher Ferris76a1d452018-06-27 14:12:29 -070073 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -080074 } atomic;
75 struct {
Christopher Ferris49f525c2016-12-12 14:55:36 -080076 __u32 remote_qpn;
77 __u32 remote_qkey;
78 __u16 pkey_index;
79 } ud;
Christopher Ferris49f525c2016-12-12 14:55:36 -080080 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -070081 union {
82 struct ib_mr * mr;
83 __aligned_u64 reserved;
84 };
Christopher Ferris49f525c2016-12-12 14:55:36 -080085 __u32 key;
Christopher Ferris76a1d452018-06-27 14:12:29 -070086 __u32 access;
Christopher Ferris49f525c2016-12-12 14:55:36 -080087 } reg;
88 } wr;
89};
90struct rxe_sge {
Christopher Ferris76a1d452018-06-27 14:12:29 -070091 __aligned_u64 addr;
Christopher Ferris49f525c2016-12-12 14:55:36 -080092 __u32 length;
93 __u32 lkey;
94};
Christopher Ferris49f525c2016-12-12 14:55:36 -080095struct mminfo {
Christopher Ferris76a1d452018-06-27 14:12:29 -070096 __aligned_u64 offset;
Christopher Ferris49f525c2016-12-12 14:55:36 -080097 __u32 size;
98 __u32 pad;
Christopher Ferris49f525c2016-12-12 14:55:36 -080099};
100struct rxe_dma_info {
101 __u32 length;
102 __u32 resid;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800103 __u32 cur_sge;
104 __u32 num_sge;
105 __u32 sge_offset;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700106 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800107 union {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800108 __u8 inline_data[0];
109 struct rxe_sge sge[0];
110 };
111};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800112struct rxe_send_wqe {
113 struct rxe_send_wr wr;
114 struct rxe_av av;
115 __u32 status;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800116 __u32 state;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700117 __aligned_u64 iova;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800118 __u32 mask;
119 __u32 first_psn;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800120 __u32 last_psn;
121 __u32 ack_length;
122 __u32 ssn;
123 __u32 has_rd_atomic;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800124 struct rxe_dma_info dma;
125};
126struct rxe_recv_wqe {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700127 __aligned_u64 wr_id;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800128 __u32 num_sge;
129 __u32 padding;
130 struct rxe_dma_info dma;
131};
Christopher Ferris76a1d452018-06-27 14:12:29 -0700132struct rxe_create_cq_resp {
133 struct mminfo mi;
134};
135struct rxe_resize_cq_resp {
136 struct mminfo mi;
137};
138struct rxe_create_qp_resp {
139 struct mminfo rq_mi;
140 struct mminfo sq_mi;
141};
142struct rxe_create_srq_resp {
143 struct mminfo mi;
144 __u32 srq_num;
145 __u32 reserved;
146};
147struct rxe_modify_srq_cmd {
148 __aligned_u64 mmap_info_addr;
149};
Christopher Ferris05667cd2021-02-16 16:01:34 -0800150struct rxe_queue_buf {
151 __u32 log2_elem_size;
152 __u32 index_mask;
153 __u32 pad_1[30];
154 __u32 producer_index;
155 __u32 pad_2[31];
156 __u32 consumer_index;
157 __u32 pad_3[31];
158 __u8 data[];
159};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800160#endif