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>
22union rxe_gid {
23  __u8 raw[16];
24  struct {
25    __be64 subnet_prefix;
26    __be64 interface_id;
27  } global;
28};
29struct rxe_global_route {
30  union rxe_gid dgid;
31  __u32 flow_label;
32  __u8 sgid_index;
33  __u8 hop_limit;
34  __u8 traffic_class;
35};
36struct rxe_av {
37  __u8 port_num;
38  __u8 network_type;
39  struct rxe_global_route grh;
40  union {
41    struct sockaddr _sockaddr;
42    struct sockaddr_in _sockaddr_in;
43    struct sockaddr_in6 _sockaddr_in6;
44  } sgid_addr, dgid_addr;
45};
46struct rxe_send_wr {
47  __u64 wr_id;
48  __u32 num_sge;
49  __u32 opcode;
50  __u32 send_flags;
51  union {
52    __be32 imm_data;
53    __u32 invalidate_rkey;
54  } ex;
55  union {
56    struct {
57      __u64 remote_addr;
58      __u32 rkey;
59    } rdma;
60    struct {
61      __u64 remote_addr;
62      __u64 compare_add;
63      __u64 swap;
64      __u32 rkey;
65    } atomic;
66    struct {
67      __u32 remote_qpn;
68      __u32 remote_qkey;
69      __u16 pkey_index;
70    } ud;
71    struct {
72      struct ib_mr * mr;
73      __u32 key;
74      int access;
75    } reg;
76  } wr;
77};
78struct rxe_sge {
79  __u64 addr;
80  __u32 length;
81  __u32 lkey;
82};
83struct mminfo {
84  __u64 offset;
85  __u32 size;
86  __u32 pad;
87};
88struct rxe_dma_info {
89  __u32 length;
90  __u32 resid;
91  __u32 cur_sge;
92  __u32 num_sge;
93  __u32 sge_offset;
94  union {
95    __u8 inline_data[0];
96    struct rxe_sge sge[0];
97  };
98};
99struct rxe_send_wqe {
100  struct rxe_send_wr wr;
101  struct rxe_av av;
102  __u32 status;
103  __u32 state;
104  __u64 iova;
105  __u32 mask;
106  __u32 first_psn;
107  __u32 last_psn;
108  __u32 ack_length;
109  __u32 ssn;
110  __u32 has_rd_atomic;
111  struct rxe_dma_info dma;
112};
113struct rxe_recv_wqe {
114  __u64 wr_id;
115  __u32 num_sge;
116  __u32 padding;
117  struct rxe_dma_info dma;
118};
119#endif
120