blob: e2a7a38f02b37cc4ddc215a98db2d4d9bd6b3d86 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
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 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef _LINUX_RDS_H
8#define _LINUX_RDS_H
9#include <linux/types.h>
Christopher Ferris525ce912017-07-26 13:12:53 -070010#include <linux/socket.h>
Christopher Ferris9ce28842018-10-25 12:11:39 -070011#include <linux/in6.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070012#define RDS_IB_ABI_VERSION 0x301
Christopher Ferris05d08e92016-02-04 13:16:38 -080013#define SOL_RDS 276
Ben Cheng655a7c02013-10-16 16:09:24 -070014#define RDS_CANCEL_SENT_TO 1
15#define RDS_GET_MR 2
16#define RDS_FREE_MR 3
Christopher Ferris05d08e92016-02-04 13:16:38 -080017#define RDS_RECVERR 5
Ben Cheng655a7c02013-10-16 16:09:24 -070018#define RDS_CONG_MONITOR 6
19#define RDS_GET_MR_FOR_DEST 7
Christopher Ferris05d08e92016-02-04 13:16:38 -080020#define SO_RDS_TRANSPORT 8
Christopher Ferris525ce912017-07-26 13:12:53 -070021#define SO_RDS_MSG_RXPATH_LATENCY 10
Christopher Ferris05d08e92016-02-04 13:16:38 -080022#define RDS_TRANS_IB 0
Christopher Ferris8177cdf2020-08-03 11:53:55 -070023#define RDS_TRANS_GAP 1
Christopher Ferris05d08e92016-02-04 13:16:38 -080024#define RDS_TRANS_TCP 2
25#define RDS_TRANS_COUNT 3
Christopher Ferris05d08e92016-02-04 13:16:38 -080026#define RDS_TRANS_NONE (~0)
Christopher Ferris8177cdf2020-08-03 11:53:55 -070027#define RDS_TRANS_IWARP RDS_TRANS_GAP
Christopher Ferris24f97eb2019-05-20 12:58:13 -070028#define SIOCRDSSETTOS (SIOCPROTOPRIVATE)
29#define SIOCRDSGETTOS (SIOCPROTOPRIVATE + 1)
30typedef __u8 rds_tos_t;
Ben Cheng655a7c02013-10-16 16:09:24 -070031#define RDS_CMSG_RDMA_ARGS 1
32#define RDS_CMSG_RDMA_DEST 2
Ben Cheng655a7c02013-10-16 16:09:24 -070033#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
Ben Cheng655a7c02013-10-16 16:09:24 -070037#define RDS_CMSG_ATOMIC_CSWP 7
38#define RDS_CMSG_MASKED_ATOMIC_FADD 8
39#define RDS_CMSG_MASKED_ATOMIC_CSWP 9
Christopher Ferris525ce912017-07-26 13:12:53 -070040#define RDS_CMSG_RXPATH_LATENCY 11
Christopher Ferris76a1d452018-06-27 14:12:29 -070041#define RDS_CMSG_ZCOPY_COOKIE 12
42#define RDS_CMSG_ZCOPY_COMPLETION 13
Ben Cheng655a7c02013-10-16 16:09:24 -070043#define RDS_INFO_FIRST 10000
Ben Cheng655a7c02013-10-16 16:09:24 -070044#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
Ben Cheng655a7c02013-10-16 16:09:24 -070048#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
Ben Cheng655a7c02013-10-16 16:09:24 -070052#define RDS_INFO_CONNECTION_STATS 10009
53#define RDS_INFO_IWARP_CONNECTIONS 10010
Christopher Ferris9ce28842018-10-25 12:11:39 -070054#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
Ben Cheng655a7c02013-10-16 16:09:24 -070062struct rds_info_counter {
Christopher Ferris525ce912017-07-26 13:12:53 -070063 __u8 name[32];
64 __u64 value;
Ben Cheng655a7c02013-10-16 16:09:24 -070065} __attribute__((packed));
66#define RDS_INFO_CONNECTION_FLAG_SENDING 0x01
Ben Cheng655a7c02013-10-16 16:09:24 -070067#define RDS_INFO_CONNECTION_FLAG_CONNECTING 0x02
68#define RDS_INFO_CONNECTION_FLAG_CONNECTED 0x04
69#define TRANSNAMSIZ 16
70struct rds_info_connection {
Christopher Ferris525ce912017-07-26 13:12:53 -070071 __u64 next_tx_seq;
72 __u64 next_rx_seq;
Tao Baod7db5942015-01-28 10:07:51 -080073 __be32 laddr;
74 __be32 faddr;
Christopher Ferris525ce912017-07-26 13:12:53 -070075 __u8 transport[TRANSNAMSIZ];
76 __u8 flags;
Christopher Ferris24f97eb2019-05-20 12:58:13 -070077 __u8 tos;
Ben Cheng655a7c02013-10-16 16:09:24 -070078} __attribute__((packed));
Christopher Ferris9ce28842018-10-25 12:11:39 -070079struct 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));
Ben Cheng655a7c02013-10-16 16:09:24 -070087#define RDS_INFO_MESSAGE_FLAG_ACK 0x01
Ben Cheng655a7c02013-10-16 16:09:24 -070088#define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
89struct rds_info_message {
Christopher Ferris525ce912017-07-26 13:12:53 -070090 __u64 seq;
91 __u32 len;
Tao Baod7db5942015-01-28 10:07:51 -080092 __be32 laddr;
93 __be32 faddr;
94 __be16 lport;
95 __be16 fport;
Christopher Ferris525ce912017-07-26 13:12:53 -070096 __u8 flags;
Christopher Ferris24f97eb2019-05-20 12:58:13 -070097 __u8 tos;
Ben Cheng655a7c02013-10-16 16:09:24 -070098} __attribute__((packed));
Christopher Ferris9ce28842018-10-25 12:11:39 -070099struct 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));
Ben Cheng655a7c02013-10-16 16:09:24 -0700109struct rds_info_socket {
Christopher Ferris525ce912017-07-26 13:12:53 -0700110 __u32 sndbuf;
Tao Baod7db5942015-01-28 10:07:51 -0800111 __be32 bound_addr;
112 __be32 connected_addr;
113 __be16 bound_port;
114 __be16 connected_port;
Christopher Ferris525ce912017-07-26 13:12:53 -0700115 __u32 rcvbuf;
116 __u64 inum;
Ben Cheng655a7c02013-10-16 16:09:24 -0700117} __attribute__((packed));
Christopher Ferris9ce28842018-10-25 12:11:39 -0700118struct 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));
Ben Cheng655a7c02013-10-16 16:09:24 -0700127struct rds_info_tcp_socket {
Tao Baod7db5942015-01-28 10:07:51 -0800128 __be32 local_addr;
129 __be16 local_port;
130 __be32 peer_addr;
131 __be16 peer_port;
Christopher Ferris525ce912017-07-26 13:12:53 -0700132 __u64 hdr_rem;
133 __u64 data_rem;
134 __u32 last_sent_nxt;
135 __u32 last_expected_una;
136 __u32 last_seen_una;
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700137 __u8 tos;
Ben Cheng655a7c02013-10-16 16:09:24 -0700138} __attribute__((packed));
Christopher Ferris9ce28842018-10-25 12:11:39 -0700139struct 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));
Ben Cheng655a7c02013-10-16 16:09:24 -0700150#define RDS_IB_GID_LEN 16
151struct rds_info_rdma_connection {
Tao Baod7db5942015-01-28 10:07:51 -0800152 __be32 src_addr;
153 __be32 dst_addr;
Christopher Ferris525ce912017-07-26 13:12:53 -0700154 __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;
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700161 __u8 tos;
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700162 __u8 sl;
163 __u32 cache_allocs;
Christopher Ferris525ce912017-07-26 13:12:53 -0700164};
Christopher Ferris9ce28842018-10-25 12:11:39 -0700165struct 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;
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700175 __u8 tos;
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700176 __u8 sl;
177 __u32 cache_allocs;
Christopher Ferris9ce28842018-10-25 12:11:39 -0700178};
Christopher Ferris525ce912017-07-26 13:12:53 -0700179enum 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};
185struct rds_rx_trace_so {
186 __u8 rx_traces;
187 __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
188};
189struct 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];
Ben Cheng655a7c02013-10-16 16:09:24 -0700193};
194#define RDS_CONG_MONITOR_SIZE 64
195#define RDS_CONG_MONITOR_BIT(port) (((unsigned int) port) % RDS_CONG_MONITOR_SIZE)
Ben Cheng655a7c02013-10-16 16:09:24 -0700196#define RDS_CONG_MONITOR_MASK(port) (1ULL << RDS_CONG_MONITOR_BIT(port))
Christopher Ferris525ce912017-07-26 13:12:53 -0700197typedef __u64 rds_rdma_cookie_t;
Ben Cheng655a7c02013-10-16 16:09:24 -0700198struct rds_iovec {
Christopher Ferris525ce912017-07-26 13:12:53 -0700199 __u64 addr;
200 __u64 bytes;
Ben Cheng655a7c02013-10-16 16:09:24 -0700201};
202struct rds_get_mr_args {
Tao Baod7db5942015-01-28 10:07:51 -0800203 struct rds_iovec vec;
Christopher Ferris525ce912017-07-26 13:12:53 -0700204 __u64 cookie_addr;
205 __u64 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700206};
207struct rds_get_mr_for_dest_args {
Elliott Hughes5850f6f2023-11-29 11:18:49 -0800208 struct sockaddr_storage dest_addr;
Tao Baod7db5942015-01-28 10:07:51 -0800209 struct rds_iovec vec;
Christopher Ferris525ce912017-07-26 13:12:53 -0700210 __u64 cookie_addr;
211 __u64 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700212};
213struct rds_free_mr_args {
Tao Baod7db5942015-01-28 10:07:51 -0800214 rds_rdma_cookie_t cookie;
Christopher Ferris525ce912017-07-26 13:12:53 -0700215 __u64 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700216};
217struct rds_rdma_args {
Tao Baod7db5942015-01-28 10:07:51 -0800218 rds_rdma_cookie_t cookie;
219 struct rds_iovec remote_vec;
Christopher Ferris525ce912017-07-26 13:12:53 -0700220 __u64 local_vec_addr;
221 __u64 nr_local;
222 __u64 flags;
223 __u64 user_token;
Ben Cheng655a7c02013-10-16 16:09:24 -0700224};
225struct rds_atomic_args {
Tao Baod7db5942015-01-28 10:07:51 -0800226 rds_rdma_cookie_t cookie;
Christopher Ferris525ce912017-07-26 13:12:53 -0700227 __u64 local_addr;
228 __u64 remote_addr;
Tao Baod7db5942015-01-28 10:07:51 -0800229 union {
230 struct {
Christopher Ferris525ce912017-07-26 13:12:53 -0700231 __u64 compare;
232 __u64 swap;
Tao Baod7db5942015-01-28 10:07:51 -0800233 } cswp;
234 struct {
Christopher Ferris525ce912017-07-26 13:12:53 -0700235 __u64 add;
Tao Baod7db5942015-01-28 10:07:51 -0800236 } fadd;
237 struct {
Christopher Ferris525ce912017-07-26 13:12:53 -0700238 __u64 compare;
239 __u64 swap;
240 __u64 compare_mask;
241 __u64 swap_mask;
Tao Baod7db5942015-01-28 10:07:51 -0800242 } m_cswp;
243 struct {
Christopher Ferris525ce912017-07-26 13:12:53 -0700244 __u64 add;
245 __u64 nocarry_mask;
Tao Baod7db5942015-01-28 10:07:51 -0800246 } m_fadd;
247 };
Christopher Ferris525ce912017-07-26 13:12:53 -0700248 __u64 flags;
249 __u64 user_token;
Ben Cheng655a7c02013-10-16 16:09:24 -0700250};
251struct rds_rdma_notify {
Christopher Ferris525ce912017-07-26 13:12:53 -0700252 __u64 user_token;
253 __s32 status;
Ben Cheng655a7c02013-10-16 16:09:24 -0700254};
255#define RDS_RDMA_SUCCESS 0
Ben Cheng655a7c02013-10-16 16:09:24 -0700256#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
Christopher Ferris76a1d452018-06-27 14:12:29 -0700260#define RDS_MAX_ZCOOKIES 8
261struct rds_zcopy_cookies {
262 __u32 num;
263 __u32 cookies[RDS_MAX_ZCOOKIES];
264};
Ben Cheng655a7c02013-10-16 16:09:24 -0700265#define RDS_RDMA_READWRITE 0x0001
266#define RDS_RDMA_FENCE 0x0002
267#define RDS_RDMA_INVALIDATE 0x0004
268#define RDS_RDMA_USE_ONCE 0x0008
Ben Cheng655a7c02013-10-16 16:09:24 -0700269#define RDS_RDMA_DONTWAIT 0x0010
270#define RDS_RDMA_NOTIFY_ME 0x0020
271#define RDS_RDMA_SILENT 0x0040
272#endif