• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 _LINUX_RDS_H
8  #define _LINUX_RDS_H
9  #include <linux/types.h>
10  #include <linux/socket.h>
11  #include <linux/in6.h>
12  #define RDS_IB_ABI_VERSION 0x301
13  #define SOL_RDS 276
14  #define RDS_CANCEL_SENT_TO 1
15  #define RDS_GET_MR 2
16  #define RDS_FREE_MR 3
17  #define RDS_RECVERR 5
18  #define RDS_CONG_MONITOR 6
19  #define RDS_GET_MR_FOR_DEST 7
20  #define SO_RDS_TRANSPORT 8
21  #define SO_RDS_MSG_RXPATH_LATENCY 10
22  #define RDS_TRANS_IB 0
23  #define RDS_TRANS_GAP 1
24  #define RDS_TRANS_TCP 2
25  #define RDS_TRANS_COUNT 3
26  #define RDS_TRANS_NONE (~0)
27  #define RDS_TRANS_IWARP RDS_TRANS_GAP
28  #define SIOCRDSSETTOS (SIOCPROTOPRIVATE)
29  #define SIOCRDSGETTOS (SIOCPROTOPRIVATE + 1)
30  typedef __u8 rds_tos_t;
31  #define RDS_CMSG_RDMA_ARGS 1
32  #define RDS_CMSG_RDMA_DEST 2
33  #define RDS_CMSG_RDMA_MAP 3
34  #define RDS_CMSG_RDMA_STATUS 4
35  #define RDS_CMSG_CONG_UPDATE 5
36  #define RDS_CMSG_ATOMIC_FADD 6
37  #define RDS_CMSG_ATOMIC_CSWP 7
38  #define RDS_CMSG_MASKED_ATOMIC_FADD 8
39  #define RDS_CMSG_MASKED_ATOMIC_CSWP 9
40  #define RDS_CMSG_RXPATH_LATENCY 11
41  #define RDS_CMSG_ZCOPY_COOKIE 12
42  #define RDS_CMSG_ZCOPY_COMPLETION 13
43  #define RDS_INFO_FIRST 10000
44  #define RDS_INFO_COUNTERS 10000
45  #define RDS_INFO_CONNECTIONS 10001
46  #define RDS_INFO_SEND_MESSAGES 10003
47  #define RDS_INFO_RETRANS_MESSAGES 10004
48  #define RDS_INFO_RECV_MESSAGES 10005
49  #define RDS_INFO_SOCKETS 10006
50  #define RDS_INFO_TCP_SOCKETS 10007
51  #define RDS_INFO_IB_CONNECTIONS 10008
52  #define RDS_INFO_CONNECTION_STATS 10009
53  #define RDS_INFO_IWARP_CONNECTIONS 10010
54  #define RDS6_INFO_CONNECTIONS 10011
55  #define RDS6_INFO_SEND_MESSAGES 10012
56  #define RDS6_INFO_RETRANS_MESSAGES 10013
57  #define RDS6_INFO_RECV_MESSAGES 10014
58  #define RDS6_INFO_SOCKETS 10015
59  #define RDS6_INFO_TCP_SOCKETS 10016
60  #define RDS6_INFO_IB_CONNECTIONS 10017
61  #define RDS_INFO_LAST 10017
62  struct rds_info_counter {
63    __u8 name[32];
64    __u64 value;
65  } __attribute__((packed));
66  #define RDS_INFO_CONNECTION_FLAG_SENDING 0x01
67  #define RDS_INFO_CONNECTION_FLAG_CONNECTING 0x02
68  #define RDS_INFO_CONNECTION_FLAG_CONNECTED 0x04
69  #define TRANSNAMSIZ 16
70  struct rds_info_connection {
71    __u64 next_tx_seq;
72    __u64 next_rx_seq;
73    __be32 laddr;
74    __be32 faddr;
75    __u8 transport[TRANSNAMSIZ];
76    __u8 flags;
77    __u8 tos;
78  } __attribute__((packed));
79  struct rds6_info_connection {
80    __u64 next_tx_seq;
81    __u64 next_rx_seq;
82    struct in6_addr laddr;
83    struct in6_addr faddr;
84    __u8 transport[TRANSNAMSIZ];
85    __u8 flags;
86  } __attribute__((packed));
87  #define RDS_INFO_MESSAGE_FLAG_ACK 0x01
88  #define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
89  struct rds_info_message {
90    __u64 seq;
91    __u32 len;
92    __be32 laddr;
93    __be32 faddr;
94    __be16 lport;
95    __be16 fport;
96    __u8 flags;
97    __u8 tos;
98  } __attribute__((packed));
99  struct rds6_info_message {
100    __u64 seq;
101    __u32 len;
102    struct in6_addr laddr;
103    struct in6_addr faddr;
104    __be16 lport;
105    __be16 fport;
106    __u8 flags;
107    __u8 tos;
108  } __attribute__((packed));
109  struct rds_info_socket {
110    __u32 sndbuf;
111    __be32 bound_addr;
112    __be32 connected_addr;
113    __be16 bound_port;
114    __be16 connected_port;
115    __u32 rcvbuf;
116    __u64 inum;
117  } __attribute__((packed));
118  struct rds6_info_socket {
119    __u32 sndbuf;
120    struct in6_addr bound_addr;
121    struct in6_addr connected_addr;
122    __be16 bound_port;
123    __be16 connected_port;
124    __u32 rcvbuf;
125    __u64 inum;
126  } __attribute__((packed));
127  struct rds_info_tcp_socket {
128    __be32 local_addr;
129    __be16 local_port;
130    __be32 peer_addr;
131    __be16 peer_port;
132    __u64 hdr_rem;
133    __u64 data_rem;
134    __u32 last_sent_nxt;
135    __u32 last_expected_una;
136    __u32 last_seen_una;
137    __u8 tos;
138  } __attribute__((packed));
139  struct rds6_info_tcp_socket {
140    struct in6_addr local_addr;
141    __be16 local_port;
142    struct in6_addr peer_addr;
143    __be16 peer_port;
144    __u64 hdr_rem;
145    __u64 data_rem;
146    __u32 last_sent_nxt;
147    __u32 last_expected_una;
148    __u32 last_seen_una;
149  } __attribute__((packed));
150  #define RDS_IB_GID_LEN 16
151  struct rds_info_rdma_connection {
152    __be32 src_addr;
153    __be32 dst_addr;
154    __u8 src_gid[RDS_IB_GID_LEN];
155    __u8 dst_gid[RDS_IB_GID_LEN];
156    __u32 max_send_wr;
157    __u32 max_recv_wr;
158    __u32 max_send_sge;
159    __u32 rdma_mr_max;
160    __u32 rdma_mr_size;
161    __u8 tos;
162    __u8 sl;
163    __u32 cache_allocs;
164  };
165  struct rds6_info_rdma_connection {
166    struct in6_addr src_addr;
167    struct in6_addr dst_addr;
168    __u8 src_gid[RDS_IB_GID_LEN];
169    __u8 dst_gid[RDS_IB_GID_LEN];
170    __u32 max_send_wr;
171    __u32 max_recv_wr;
172    __u32 max_send_sge;
173    __u32 rdma_mr_max;
174    __u32 rdma_mr_size;
175    __u8 tos;
176    __u8 sl;
177    __u32 cache_allocs;
178  };
179  enum rds_message_rxpath_latency {
180    RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
181    RDS_MSG_RX_DGRAM_REASSEMBLE,
182    RDS_MSG_RX_DGRAM_DELIVERED,
183    RDS_MSG_RX_DGRAM_TRACE_MAX
184  };
185  struct rds_rx_trace_so {
186    __u8 rx_traces;
187    __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
188  };
189  struct rds_cmsg_rx_trace {
190    __u8 rx_traces;
191    __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
192    __u64 rx_trace[RDS_MSG_RX_DGRAM_TRACE_MAX];
193  };
194  #define RDS_CONG_MONITOR_SIZE 64
195  #define RDS_CONG_MONITOR_BIT(port) (((unsigned int) port) % RDS_CONG_MONITOR_SIZE)
196  #define RDS_CONG_MONITOR_MASK(port) (1ULL << RDS_CONG_MONITOR_BIT(port))
197  typedef __u64 rds_rdma_cookie_t;
198  struct rds_iovec {
199    __u64 addr;
200    __u64 bytes;
201  };
202  struct rds_get_mr_args {
203    struct rds_iovec vec;
204    __u64 cookie_addr;
205    __u64 flags;
206  };
207  struct rds_get_mr_for_dest_args {
208    struct sockaddr_storage dest_addr;
209    struct rds_iovec vec;
210    __u64 cookie_addr;
211    __u64 flags;
212  };
213  struct rds_free_mr_args {
214    rds_rdma_cookie_t cookie;
215    __u64 flags;
216  };
217  struct rds_rdma_args {
218    rds_rdma_cookie_t cookie;
219    struct rds_iovec remote_vec;
220    __u64 local_vec_addr;
221    __u64 nr_local;
222    __u64 flags;
223    __u64 user_token;
224  };
225  struct rds_atomic_args {
226    rds_rdma_cookie_t cookie;
227    __u64 local_addr;
228    __u64 remote_addr;
229    union {
230      struct {
231        __u64 compare;
232        __u64 swap;
233      } cswp;
234      struct {
235        __u64 add;
236      } fadd;
237      struct {
238        __u64 compare;
239        __u64 swap;
240        __u64 compare_mask;
241        __u64 swap_mask;
242      } m_cswp;
243      struct {
244        __u64 add;
245        __u64 nocarry_mask;
246      } m_fadd;
247    };
248    __u64 flags;
249    __u64 user_token;
250  };
251  struct rds_rdma_notify {
252    __u64 user_token;
253    __s32 status;
254  };
255  #define RDS_RDMA_SUCCESS 0
256  #define RDS_RDMA_REMOTE_ERROR 1
257  #define RDS_RDMA_CANCELED 2
258  #define RDS_RDMA_DROPPED 3
259  #define RDS_RDMA_OTHER_ERROR 4
260  #define RDS_MAX_ZCOOKIES 8
261  struct rds_zcopy_cookies {
262    __u32 num;
263    __u32 cookies[RDS_MAX_ZCOOKIES];
264  };
265  #define RDS_RDMA_READWRITE 0x0001
266  #define RDS_RDMA_FENCE 0x0002
267  #define RDS_RDMA_INVALIDATE 0x0004
268  #define RDS_RDMA_USE_ONCE 0x0008
269  #define RDS_RDMA_DONTWAIT 0x0010
270  #define RDS_RDMA_NOTIFY_ME 0x0020
271  #define RDS_RDMA_SILENT 0x0040
272  #endif
273