blob: a57ed1ab26ae81133006a928ca874cf9917fd712 [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 Ferris49f525c2016-12-12 14:55:36 -080025union rxe_gid {
Christopher Ferris49f525c2016-12-12 14:55:36 -080026 __u8 raw[16];
27 struct {
28 __be64 subnet_prefix;
29 __be64 interface_id;
Christopher Ferris49f525c2016-12-12 14:55:36 -080030 } global;
31};
32struct rxe_global_route {
33 union rxe_gid dgid;
Christopher Ferris49f525c2016-12-12 14:55:36 -080034 __u32 flow_label;
35 __u8 sgid_index;
36 __u8 hop_limit;
37 __u8 traffic_class;
Christopher Ferris49f525c2016-12-12 14:55:36 -080038};
39struct rxe_av {
40 __u8 port_num;
41 __u8 network_type;
Christopher Ferris76a1d452018-06-27 14:12:29 -070042 __u16 reserved1;
43 __u32 reserved2;
Christopher Ferris49f525c2016-12-12 14:55:36 -080044 struct rxe_global_route grh;
45 union {
Christopher Ferris49f525c2016-12-12 14:55:36 -080046 struct sockaddr_in _sockaddr_in;
Christopher Ferris49f525c2016-12-12 14:55:36 -080047 struct sockaddr_in6 _sockaddr_in6;
48 } sgid_addr, dgid_addr;
49};
50struct rxe_send_wr {
Christopher Ferris76a1d452018-06-27 14:12:29 -070051 __aligned_u64 wr_id;
Christopher Ferris49f525c2016-12-12 14:55:36 -080052 __u32 num_sge;
53 __u32 opcode;
54 __u32 send_flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -080055 union {
56 __be32 imm_data;
57 __u32 invalidate_rkey;
58 } ex;
Christopher Ferris49f525c2016-12-12 14:55:36 -080059 union {
60 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -070061 __aligned_u64 remote_addr;
Christopher Ferris49f525c2016-12-12 14:55:36 -080062 __u32 rkey;
Christopher Ferris76a1d452018-06-27 14:12:29 -070063 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -080064 } rdma;
65 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -070066 __aligned_u64 remote_addr;
67 __aligned_u64 compare_add;
68 __aligned_u64 swap;
Christopher Ferris49f525c2016-12-12 14:55:36 -080069 __u32 rkey;
Christopher Ferris76a1d452018-06-27 14:12:29 -070070 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -080071 } atomic;
72 struct {
Christopher Ferris49f525c2016-12-12 14:55:36 -080073 __u32 remote_qpn;
74 __u32 remote_qkey;
75 __u16 pkey_index;
76 } ud;
Christopher Ferris49f525c2016-12-12 14:55:36 -080077 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -070078 union {
79 struct ib_mr * mr;
80 __aligned_u64 reserved;
81 };
Christopher Ferris49f525c2016-12-12 14:55:36 -080082 __u32 key;
Christopher Ferris76a1d452018-06-27 14:12:29 -070083 __u32 access;
Christopher Ferris49f525c2016-12-12 14:55:36 -080084 } reg;
85 } wr;
86};
87struct rxe_sge {
Christopher Ferris76a1d452018-06-27 14:12:29 -070088 __aligned_u64 addr;
Christopher Ferris49f525c2016-12-12 14:55:36 -080089 __u32 length;
90 __u32 lkey;
91};
Christopher Ferris49f525c2016-12-12 14:55:36 -080092struct mminfo {
Christopher Ferris76a1d452018-06-27 14:12:29 -070093 __aligned_u64 offset;
Christopher Ferris49f525c2016-12-12 14:55:36 -080094 __u32 size;
95 __u32 pad;
Christopher Ferris49f525c2016-12-12 14:55:36 -080096};
97struct rxe_dma_info {
98 __u32 length;
99 __u32 resid;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800100 __u32 cur_sge;
101 __u32 num_sge;
102 __u32 sge_offset;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700103 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800104 union {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800105 __u8 inline_data[0];
106 struct rxe_sge sge[0];
107 };
108};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800109struct rxe_send_wqe {
110 struct rxe_send_wr wr;
111 struct rxe_av av;
112 __u32 status;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800113 __u32 state;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700114 __aligned_u64 iova;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800115 __u32 mask;
116 __u32 first_psn;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800117 __u32 last_psn;
118 __u32 ack_length;
119 __u32 ssn;
120 __u32 has_rd_atomic;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800121 struct rxe_dma_info dma;
122};
123struct rxe_recv_wqe {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700124 __aligned_u64 wr_id;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800125 __u32 num_sge;
126 __u32 padding;
127 struct rxe_dma_info dma;
128};
Christopher Ferris76a1d452018-06-27 14:12:29 -0700129struct rxe_create_cq_resp {
130 struct mminfo mi;
131};
132struct rxe_resize_cq_resp {
133 struct mminfo mi;
134};
135struct rxe_create_qp_resp {
136 struct mminfo rq_mi;
137 struct mminfo sq_mi;
138};
139struct rxe_create_srq_resp {
140 struct mminfo mi;
141 __u32 srq_num;
142 __u32 reserved;
143};
144struct rxe_modify_srq_cmd {
145 __aligned_u64 mmap_info_addr;
146};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800147#endif