1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37#ifndef __SELFTEST_RPC_H__
38#define __SELFTEST_RPC_H__
39
40#include "../../include/linux/lnet/lnetst.h"
41
42
43
44
45
46
47typedef enum {
48 SRPC_MSG_MKSN_REQST = 0,
49 SRPC_MSG_MKSN_REPLY = 1,
50 SRPC_MSG_RMSN_REQST = 2,
51 SRPC_MSG_RMSN_REPLY = 3,
52 SRPC_MSG_BATCH_REQST = 4,
53 SRPC_MSG_BATCH_REPLY = 5,
54 SRPC_MSG_STAT_REQST = 6,
55 SRPC_MSG_STAT_REPLY = 7,
56 SRPC_MSG_TEST_REQST = 8,
57 SRPC_MSG_TEST_REPLY = 9,
58 SRPC_MSG_DEBUG_REQST = 10,
59 SRPC_MSG_DEBUG_REPLY = 11,
60 SRPC_MSG_BRW_REQST = 12,
61 SRPC_MSG_BRW_REPLY = 13,
62 SRPC_MSG_PING_REQST = 14,
63 SRPC_MSG_PING_REPLY = 15,
64 SRPC_MSG_JOIN_REQST = 16,
65 SRPC_MSG_JOIN_REPLY = 17,
66} srpc_msg_type_t;
67
68
69
70
71
72
73
74
75typedef struct {
76 __u64 rpyid;
77 __u64 bulkid;
78} WIRE_ATTR srpc_generic_reqst_t;
79
80typedef struct {
81 __u32 status;
82 lst_sid_t sid;
83} WIRE_ATTR srpc_generic_reply_t;
84
85
86typedef struct {
87 __u64 mksn_rpyid;
88 lst_sid_t mksn_sid;
89 __u32 mksn_force;
90 char mksn_name[LST_NAME_SIZE];
91} WIRE_ATTR srpc_mksn_reqst_t;
92
93typedef struct {
94 __u32 mksn_status;
95 lst_sid_t mksn_sid;
96 __u32 mksn_timeout;
97 char mksn_name[LST_NAME_SIZE];
98} WIRE_ATTR srpc_mksn_reply_t;
99
100typedef struct {
101 __u64 rmsn_rpyid;
102 lst_sid_t rmsn_sid;
103} WIRE_ATTR srpc_rmsn_reqst_t;
104
105typedef struct {
106 __u32 rmsn_status;
107 lst_sid_t rmsn_sid;
108} WIRE_ATTR srpc_rmsn_reply_t;
109
110typedef struct {
111 __u64 join_rpyid;
112 lst_sid_t join_sid;
113 char join_group[LST_NAME_SIZE];
114} WIRE_ATTR srpc_join_reqst_t;
115
116typedef struct {
117 __u32 join_status;
118 lst_sid_t join_sid;
119 __u32 join_timeout;
120
121 char join_session[LST_NAME_SIZE];
122} WIRE_ATTR srpc_join_reply_t;
123
124typedef struct {
125 __u64 dbg_rpyid;
126 lst_sid_t dbg_sid;
127 __u32 dbg_flags;
128} WIRE_ATTR srpc_debug_reqst_t;
129
130typedef struct {
131 __u32 dbg_status;
132 lst_sid_t dbg_sid;
133 __u32 dbg_timeout;
134 __u32 dbg_nbatch;
135 char dbg_name[LST_NAME_SIZE];
136} WIRE_ATTR srpc_debug_reply_t;
137
138#define SRPC_BATCH_OPC_RUN 1
139#define SRPC_BATCH_OPC_STOP 2
140#define SRPC_BATCH_OPC_QUERY 3
141
142typedef struct {
143 __u64 bar_rpyid;
144 lst_sid_t bar_sid;
145 lst_bid_t bar_bid;
146 __u32 bar_opc;
147 __u32 bar_testidx;
148 __u32 bar_arg;
149} WIRE_ATTR srpc_batch_reqst_t;
150
151typedef struct {
152 __u32 bar_status;
153 lst_sid_t bar_sid;
154 __u32 bar_active;
155 __u32 bar_time;
156} WIRE_ATTR srpc_batch_reply_t;
157
158typedef struct {
159 __u64 str_rpyid;
160 lst_sid_t str_sid;
161 __u32 str_type;
162} WIRE_ATTR srpc_stat_reqst_t;
163
164typedef struct {
165 __u32 str_status;
166 lst_sid_t str_sid;
167 sfw_counters_t str_fw;
168 srpc_counters_t str_rpc;
169 lnet_counters_t str_lnet;
170} WIRE_ATTR srpc_stat_reply_t;
171
172typedef struct {
173 __u32 blk_opc;
174 __u32 blk_npg;
175 __u32 blk_flags;
176} WIRE_ATTR test_bulk_req_t;
177
178typedef struct {
179 __u16 blk_opc;
180 __u16 blk_flags;
181 __u32 blk_len;
182 __u32 blk_offset;
183} WIRE_ATTR test_bulk_req_v1_t;
184
185typedef struct {
186 __u32 png_size;
187 __u32 png_flags;
188} WIRE_ATTR test_ping_req_t;
189
190typedef struct {
191 __u64 tsr_rpyid;
192 __u64 tsr_bulkid;
193 lst_sid_t tsr_sid;
194 lst_bid_t tsr_bid;
195 __u32 tsr_service;
196 __u32 tsr_loop;
197
198 __u32 tsr_concur;
199 __u8 tsr_is_client;
200 __u8 tsr_stop_onerr;
201 __u32 tsr_ndest;
202
203 union {
204 test_ping_req_t ping;
205 test_bulk_req_t bulk_v0;
206 test_bulk_req_v1_t bulk_v1;
207 } tsr_u;
208} WIRE_ATTR srpc_test_reqst_t;
209
210typedef struct {
211 __u32 tsr_status;
212 lst_sid_t tsr_sid;
213} WIRE_ATTR srpc_test_reply_t;
214
215
216typedef struct {
217 __u64 pnr_rpyid;
218 __u32 pnr_magic;
219 __u32 pnr_seq;
220 __u64 pnr_time_sec;
221 __u64 pnr_time_usec;
222} WIRE_ATTR srpc_ping_reqst_t;
223
224typedef struct {
225 __u32 pnr_status;
226 __u32 pnr_magic;
227 __u32 pnr_seq;
228} WIRE_ATTR srpc_ping_reply_t;
229
230typedef struct {
231 __u64 brw_rpyid;
232 __u64 brw_bulkid;
233 __u32 brw_rw;
234 __u32 brw_len;
235 __u32 brw_flags;
236} WIRE_ATTR srpc_brw_reqst_t;
237
238typedef struct {
239 __u32 brw_status;
240} WIRE_ATTR srpc_brw_reply_t;
241
242#define SRPC_MSG_MAGIC 0xeeb0f00d
243#define SRPC_MSG_VERSION 1
244
245typedef struct srpc_msg {
246 __u32 msg_magic;
247 __u32 msg_version;
248 __u32 msg_type;
249 __u32 msg_reserved0;
250 __u32 msg_reserved1;
251 __u32 msg_ses_feats;
252 union {
253 srpc_generic_reqst_t reqst;
254 srpc_generic_reply_t reply;
255
256 srpc_mksn_reqst_t mksn_reqst;
257 srpc_mksn_reply_t mksn_reply;
258 srpc_rmsn_reqst_t rmsn_reqst;
259 srpc_rmsn_reply_t rmsn_reply;
260 srpc_debug_reqst_t dbg_reqst;
261 srpc_debug_reply_t dbg_reply;
262 srpc_batch_reqst_t bat_reqst;
263 srpc_batch_reply_t bat_reply;
264 srpc_stat_reqst_t stat_reqst;
265 srpc_stat_reply_t stat_reply;
266 srpc_test_reqst_t tes_reqst;
267 srpc_test_reply_t tes_reply;
268 srpc_join_reqst_t join_reqst;
269 srpc_join_reply_t join_reply;
270
271 srpc_ping_reqst_t ping_reqst;
272 srpc_ping_reply_t ping_reply;
273 srpc_brw_reqst_t brw_reqst;
274 srpc_brw_reply_t brw_reply;
275 } msg_body;
276} WIRE_ATTR srpc_msg_t;
277
278static inline void
279srpc_unpack_msg_hdr(srpc_msg_t *msg)
280{
281 if (msg->msg_magic == SRPC_MSG_MAGIC)
282 return;
283
284
285
286
287
288
289 __swab32s(&msg->msg_type);
290 __swab32s(&msg->msg_version);
291 __swab32s(&msg->msg_ses_feats);
292 __swab32s(&msg->msg_reserved0);
293 __swab32s(&msg->msg_reserved1);
294}
295
296#endif
297