blob: cdb00c7b9492dce9ff51a2126920faaeee532366 [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;
Christopher Ferrisa4792612022-01-10 13:51:15 -080079 __u16 reserved;
80 __u32 ah_num;
81 __u32 pad[4];
82 struct rxe_av av;
Christopher Ferris49f525c2016-12-12 14:55:36 -080083 } ud;
Christopher Ferris49f525c2016-12-12 14:55:36 -080084 struct {
Christopher Ferris3a39c0b2021-09-02 00:03:38 +000085 __aligned_u64 addr;
86 __aligned_u64 length;
87 __u32 mr_lkey;
88 __u32 mw_rkey;
89 __u32 rkey;
Christopher Ferris76a1d452018-06-27 14:12:29 -070090 __u32 access;
Christopher Ferris3a39c0b2021-09-02 00:03:38 +000091 } mw;
Christopher Ferris49f525c2016-12-12 14:55:36 -080092 } wr;
93};
94struct rxe_sge {
Christopher Ferris76a1d452018-06-27 14:12:29 -070095 __aligned_u64 addr;
Christopher Ferris49f525c2016-12-12 14:55:36 -080096 __u32 length;
97 __u32 lkey;
98};
Christopher Ferris49f525c2016-12-12 14:55:36 -080099struct mminfo {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700100 __aligned_u64 offset;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800101 __u32 size;
102 __u32 pad;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800103};
104struct rxe_dma_info {
105 __u32 length;
106 __u32 resid;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800107 __u32 cur_sge;
108 __u32 num_sge;
109 __u32 sge_offset;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700110 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800111 union {
Christopher Ferrisa4792612022-01-10 13:51:15 -0800112 __DECLARE_FLEX_ARRAY(__u8, inline_data);
113 __DECLARE_FLEX_ARRAY(struct rxe_sge, sge);
Christopher Ferris49f525c2016-12-12 14:55:36 -0800114 };
115};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800116struct rxe_send_wqe {
117 struct rxe_send_wr wr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800118 __u32 status;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800119 __u32 state;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700120 __aligned_u64 iova;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800121 __u32 mask;
122 __u32 first_psn;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800123 __u32 last_psn;
124 __u32 ack_length;
125 __u32 ssn;
126 __u32 has_rd_atomic;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800127 struct rxe_dma_info dma;
128};
129struct rxe_recv_wqe {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700130 __aligned_u64 wr_id;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800131 __u32 num_sge;
132 __u32 padding;
133 struct rxe_dma_info dma;
134};
Christopher Ferrisa4792612022-01-10 13:51:15 -0800135struct rxe_create_ah_resp {
136 __u32 ah_num;
137 __u32 reserved;
138};
Christopher Ferris76a1d452018-06-27 14:12:29 -0700139struct rxe_create_cq_resp {
140 struct mminfo mi;
141};
142struct rxe_resize_cq_resp {
143 struct mminfo mi;
144};
145struct rxe_create_qp_resp {
146 struct mminfo rq_mi;
147 struct mminfo sq_mi;
148};
149struct rxe_create_srq_resp {
150 struct mminfo mi;
151 __u32 srq_num;
152 __u32 reserved;
153};
154struct rxe_modify_srq_cmd {
155 __aligned_u64 mmap_info_addr;
156};
Christopher Ferris05667cd2021-02-16 16:01:34 -0800157struct 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};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800167#endif