Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/drivers/infiniband/hw/cxgb4/t4fw_ri_api.h
15112 views
1
/*
2
* Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
3
*
4
* This software is available to you under a choice of one of two
5
* licenses. You may choose to be licensed under the terms of the GNU
6
* General Public License (GPL) Version 2, available from the file
7
* COPYING in the main directory of this source tree, or the
8
* OpenIB.org BSD license below:
9
*
10
* Redistribution and use in source and binary forms, with or
11
* without modification, are permitted provided that the following
12
* conditions are met:
13
*
14
* - Redistributions of source code must retain the above
15
* copyright notice, this list of conditions and the following
16
* disclaimer.
17
* - Redistributions in binary form must reproduce the above
18
* copyright notice, this list of conditions and the following
19
* disclaimer in the documentation and/or other materials
20
* provided with the distribution.
21
*
22
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
26
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
27
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
28
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
* SOFTWARE.
30
*/
31
#ifndef _T4FW_RI_API_H_
32
#define _T4FW_RI_API_H_
33
34
#include "t4fw_api.h"
35
36
enum fw_ri_wr_opcode {
37
FW_RI_RDMA_WRITE = 0x0, /* IETF RDMAP v1.0 ... */
38
FW_RI_READ_REQ = 0x1,
39
FW_RI_READ_RESP = 0x2,
40
FW_RI_SEND = 0x3,
41
FW_RI_SEND_WITH_INV = 0x4,
42
FW_RI_SEND_WITH_SE = 0x5,
43
FW_RI_SEND_WITH_SE_INV = 0x6,
44
FW_RI_TERMINATE = 0x7,
45
FW_RI_RDMA_INIT = 0x8, /* CHELSIO RI specific ... */
46
FW_RI_BIND_MW = 0x9,
47
FW_RI_FAST_REGISTER = 0xa,
48
FW_RI_LOCAL_INV = 0xb,
49
FW_RI_QP_MODIFY = 0xc,
50
FW_RI_BYPASS = 0xd,
51
FW_RI_RECEIVE = 0xe,
52
53
FW_RI_SGE_EC_CR_RETURN = 0xf
54
};
55
56
enum fw_ri_wr_flags {
57
FW_RI_COMPLETION_FLAG = 0x01,
58
FW_RI_NOTIFICATION_FLAG = 0x02,
59
FW_RI_SOLICITED_EVENT_FLAG = 0x04,
60
FW_RI_READ_FENCE_FLAG = 0x08,
61
FW_RI_LOCAL_FENCE_FLAG = 0x10,
62
FW_RI_RDMA_READ_INVALIDATE = 0x20
63
};
64
65
enum fw_ri_mpa_attrs {
66
FW_RI_MPA_RX_MARKER_ENABLE = 0x01,
67
FW_RI_MPA_TX_MARKER_ENABLE = 0x02,
68
FW_RI_MPA_CRC_ENABLE = 0x04,
69
FW_RI_MPA_IETF_ENABLE = 0x08
70
};
71
72
enum fw_ri_qp_caps {
73
FW_RI_QP_RDMA_READ_ENABLE = 0x01,
74
FW_RI_QP_RDMA_WRITE_ENABLE = 0x02,
75
FW_RI_QP_BIND_ENABLE = 0x04,
76
FW_RI_QP_FAST_REGISTER_ENABLE = 0x08,
77
FW_RI_QP_STAG0_ENABLE = 0x10
78
};
79
80
enum fw_ri_addr_type {
81
FW_RI_ZERO_BASED_TO = 0x00,
82
FW_RI_VA_BASED_TO = 0x01
83
};
84
85
enum fw_ri_mem_perms {
86
FW_RI_MEM_ACCESS_REM_WRITE = 0x01,
87
FW_RI_MEM_ACCESS_REM_READ = 0x02,
88
FW_RI_MEM_ACCESS_REM = 0x03,
89
FW_RI_MEM_ACCESS_LOCAL_WRITE = 0x04,
90
FW_RI_MEM_ACCESS_LOCAL_READ = 0x08,
91
FW_RI_MEM_ACCESS_LOCAL = 0x0C
92
};
93
94
enum fw_ri_stag_type {
95
FW_RI_STAG_NSMR = 0x00,
96
FW_RI_STAG_SMR = 0x01,
97
FW_RI_STAG_MW = 0x02,
98
FW_RI_STAG_MW_RELAXED = 0x03
99
};
100
101
enum fw_ri_data_op {
102
FW_RI_DATA_IMMD = 0x81,
103
FW_RI_DATA_DSGL = 0x82,
104
FW_RI_DATA_ISGL = 0x83
105
};
106
107
enum fw_ri_sgl_depth {
108
FW_RI_SGL_DEPTH_MAX_SQ = 16,
109
FW_RI_SGL_DEPTH_MAX_RQ = 4
110
};
111
112
struct fw_ri_dsge_pair {
113
__be32 len[2];
114
__be64 addr[2];
115
};
116
117
struct fw_ri_dsgl {
118
__u8 op;
119
__u8 r1;
120
__be16 nsge;
121
__be32 len0;
122
__be64 addr0;
123
#ifndef C99_NOT_SUPPORTED
124
struct fw_ri_dsge_pair sge[0];
125
#endif
126
};
127
128
struct fw_ri_sge {
129
__be32 stag;
130
__be32 len;
131
__be64 to;
132
};
133
134
struct fw_ri_isgl {
135
__u8 op;
136
__u8 r1;
137
__be16 nsge;
138
__be32 r2;
139
#ifndef C99_NOT_SUPPORTED
140
struct fw_ri_sge sge[0];
141
#endif
142
};
143
144
struct fw_ri_immd {
145
__u8 op;
146
__u8 r1;
147
__be16 r2;
148
__be32 immdlen;
149
#ifndef C99_NOT_SUPPORTED
150
__u8 data[0];
151
#endif
152
};
153
154
struct fw_ri_tpte {
155
__be32 valid_to_pdid;
156
__be32 locread_to_qpid;
157
__be32 nosnoop_pbladdr;
158
__be32 len_lo;
159
__be32 va_hi;
160
__be32 va_lo_fbo;
161
__be32 dca_mwbcnt_pstag;
162
__be32 len_hi;
163
};
164
165
#define S_FW_RI_TPTE_VALID 31
166
#define M_FW_RI_TPTE_VALID 0x1
167
#define V_FW_RI_TPTE_VALID(x) ((x) << S_FW_RI_TPTE_VALID)
168
#define G_FW_RI_TPTE_VALID(x) \
169
(((x) >> S_FW_RI_TPTE_VALID) & M_FW_RI_TPTE_VALID)
170
#define F_FW_RI_TPTE_VALID V_FW_RI_TPTE_VALID(1U)
171
172
#define S_FW_RI_TPTE_STAGKEY 23
173
#define M_FW_RI_TPTE_STAGKEY 0xff
174
#define V_FW_RI_TPTE_STAGKEY(x) ((x) << S_FW_RI_TPTE_STAGKEY)
175
#define G_FW_RI_TPTE_STAGKEY(x) \
176
(((x) >> S_FW_RI_TPTE_STAGKEY) & M_FW_RI_TPTE_STAGKEY)
177
178
#define S_FW_RI_TPTE_STAGSTATE 22
179
#define M_FW_RI_TPTE_STAGSTATE 0x1
180
#define V_FW_RI_TPTE_STAGSTATE(x) ((x) << S_FW_RI_TPTE_STAGSTATE)
181
#define G_FW_RI_TPTE_STAGSTATE(x) \
182
(((x) >> S_FW_RI_TPTE_STAGSTATE) & M_FW_RI_TPTE_STAGSTATE)
183
#define F_FW_RI_TPTE_STAGSTATE V_FW_RI_TPTE_STAGSTATE(1U)
184
185
#define S_FW_RI_TPTE_STAGTYPE 20
186
#define M_FW_RI_TPTE_STAGTYPE 0x3
187
#define V_FW_RI_TPTE_STAGTYPE(x) ((x) << S_FW_RI_TPTE_STAGTYPE)
188
#define G_FW_RI_TPTE_STAGTYPE(x) \
189
(((x) >> S_FW_RI_TPTE_STAGTYPE) & M_FW_RI_TPTE_STAGTYPE)
190
191
#define S_FW_RI_TPTE_PDID 0
192
#define M_FW_RI_TPTE_PDID 0xfffff
193
#define V_FW_RI_TPTE_PDID(x) ((x) << S_FW_RI_TPTE_PDID)
194
#define G_FW_RI_TPTE_PDID(x) \
195
(((x) >> S_FW_RI_TPTE_PDID) & M_FW_RI_TPTE_PDID)
196
197
#define S_FW_RI_TPTE_PERM 28
198
#define M_FW_RI_TPTE_PERM 0xf
199
#define V_FW_RI_TPTE_PERM(x) ((x) << S_FW_RI_TPTE_PERM)
200
#define G_FW_RI_TPTE_PERM(x) \
201
(((x) >> S_FW_RI_TPTE_PERM) & M_FW_RI_TPTE_PERM)
202
203
#define S_FW_RI_TPTE_REMINVDIS 27
204
#define M_FW_RI_TPTE_REMINVDIS 0x1
205
#define V_FW_RI_TPTE_REMINVDIS(x) ((x) << S_FW_RI_TPTE_REMINVDIS)
206
#define G_FW_RI_TPTE_REMINVDIS(x) \
207
(((x) >> S_FW_RI_TPTE_REMINVDIS) & M_FW_RI_TPTE_REMINVDIS)
208
#define F_FW_RI_TPTE_REMINVDIS V_FW_RI_TPTE_REMINVDIS(1U)
209
210
#define S_FW_RI_TPTE_ADDRTYPE 26
211
#define M_FW_RI_TPTE_ADDRTYPE 1
212
#define V_FW_RI_TPTE_ADDRTYPE(x) ((x) << S_FW_RI_TPTE_ADDRTYPE)
213
#define G_FW_RI_TPTE_ADDRTYPE(x) \
214
(((x) >> S_FW_RI_TPTE_ADDRTYPE) & M_FW_RI_TPTE_ADDRTYPE)
215
#define F_FW_RI_TPTE_ADDRTYPE V_FW_RI_TPTE_ADDRTYPE(1U)
216
217
#define S_FW_RI_TPTE_MWBINDEN 25
218
#define M_FW_RI_TPTE_MWBINDEN 0x1
219
#define V_FW_RI_TPTE_MWBINDEN(x) ((x) << S_FW_RI_TPTE_MWBINDEN)
220
#define G_FW_RI_TPTE_MWBINDEN(x) \
221
(((x) >> S_FW_RI_TPTE_MWBINDEN) & M_FW_RI_TPTE_MWBINDEN)
222
#define F_FW_RI_TPTE_MWBINDEN V_FW_RI_TPTE_MWBINDEN(1U)
223
224
#define S_FW_RI_TPTE_PS 20
225
#define M_FW_RI_TPTE_PS 0x1f
226
#define V_FW_RI_TPTE_PS(x) ((x) << S_FW_RI_TPTE_PS)
227
#define G_FW_RI_TPTE_PS(x) \
228
(((x) >> S_FW_RI_TPTE_PS) & M_FW_RI_TPTE_PS)
229
230
#define S_FW_RI_TPTE_QPID 0
231
#define M_FW_RI_TPTE_QPID 0xfffff
232
#define V_FW_RI_TPTE_QPID(x) ((x) << S_FW_RI_TPTE_QPID)
233
#define G_FW_RI_TPTE_QPID(x) \
234
(((x) >> S_FW_RI_TPTE_QPID) & M_FW_RI_TPTE_QPID)
235
236
#define S_FW_RI_TPTE_NOSNOOP 30
237
#define M_FW_RI_TPTE_NOSNOOP 0x1
238
#define V_FW_RI_TPTE_NOSNOOP(x) ((x) << S_FW_RI_TPTE_NOSNOOP)
239
#define G_FW_RI_TPTE_NOSNOOP(x) \
240
(((x) >> S_FW_RI_TPTE_NOSNOOP) & M_FW_RI_TPTE_NOSNOOP)
241
#define F_FW_RI_TPTE_NOSNOOP V_FW_RI_TPTE_NOSNOOP(1U)
242
243
#define S_FW_RI_TPTE_PBLADDR 0
244
#define M_FW_RI_TPTE_PBLADDR 0x1fffffff
245
#define V_FW_RI_TPTE_PBLADDR(x) ((x) << S_FW_RI_TPTE_PBLADDR)
246
#define G_FW_RI_TPTE_PBLADDR(x) \
247
(((x) >> S_FW_RI_TPTE_PBLADDR) & M_FW_RI_TPTE_PBLADDR)
248
249
#define S_FW_RI_TPTE_DCA 24
250
#define M_FW_RI_TPTE_DCA 0x1f
251
#define V_FW_RI_TPTE_DCA(x) ((x) << S_FW_RI_TPTE_DCA)
252
#define G_FW_RI_TPTE_DCA(x) \
253
(((x) >> S_FW_RI_TPTE_DCA) & M_FW_RI_TPTE_DCA)
254
255
#define S_FW_RI_TPTE_MWBCNT_PSTAG 0
256
#define M_FW_RI_TPTE_MWBCNT_PSTAG 0xffffff
257
#define V_FW_RI_TPTE_MWBCNT_PSTAT(x) \
258
((x) << S_FW_RI_TPTE_MWBCNT_PSTAG)
259
#define G_FW_RI_TPTE_MWBCNT_PSTAG(x) \
260
(((x) >> S_FW_RI_TPTE_MWBCNT_PSTAG) & M_FW_RI_TPTE_MWBCNT_PSTAG)
261
262
enum fw_ri_res_type {
263
FW_RI_RES_TYPE_SQ,
264
FW_RI_RES_TYPE_RQ,
265
FW_RI_RES_TYPE_CQ,
266
};
267
268
enum fw_ri_res_op {
269
FW_RI_RES_OP_WRITE,
270
FW_RI_RES_OP_RESET,
271
};
272
273
struct fw_ri_res {
274
union fw_ri_restype {
275
struct fw_ri_res_sqrq {
276
__u8 restype;
277
__u8 op;
278
__be16 r3;
279
__be32 eqid;
280
__be32 r4[2];
281
__be32 fetchszm_to_iqid;
282
__be32 dcaen_to_eqsize;
283
__be64 eqaddr;
284
} sqrq;
285
struct fw_ri_res_cq {
286
__u8 restype;
287
__u8 op;
288
__be16 r3;
289
__be32 iqid;
290
__be32 r4[2];
291
__be32 iqandst_to_iqandstindex;
292
__be16 iqdroprss_to_iqesize;
293
__be16 iqsize;
294
__be64 iqaddr;
295
__be32 iqns_iqro;
296
__be32 r6_lo;
297
__be64 r7;
298
} cq;
299
} u;
300
};
301
302
struct fw_ri_res_wr {
303
__be32 op_nres;
304
__be32 len16_pkd;
305
__u64 cookie;
306
#ifndef C99_NOT_SUPPORTED
307
struct fw_ri_res res[0];
308
#endif
309
};
310
311
#define S_FW_RI_RES_WR_NRES 0
312
#define M_FW_RI_RES_WR_NRES 0xff
313
#define V_FW_RI_RES_WR_NRES(x) ((x) << S_FW_RI_RES_WR_NRES)
314
#define G_FW_RI_RES_WR_NRES(x) \
315
(((x) >> S_FW_RI_RES_WR_NRES) & M_FW_RI_RES_WR_NRES)
316
317
#define S_FW_RI_RES_WR_FETCHSZM 26
318
#define M_FW_RI_RES_WR_FETCHSZM 0x1
319
#define V_FW_RI_RES_WR_FETCHSZM(x) ((x) << S_FW_RI_RES_WR_FETCHSZM)
320
#define G_FW_RI_RES_WR_FETCHSZM(x) \
321
(((x) >> S_FW_RI_RES_WR_FETCHSZM) & M_FW_RI_RES_WR_FETCHSZM)
322
#define F_FW_RI_RES_WR_FETCHSZM V_FW_RI_RES_WR_FETCHSZM(1U)
323
324
#define S_FW_RI_RES_WR_STATUSPGNS 25
325
#define M_FW_RI_RES_WR_STATUSPGNS 0x1
326
#define V_FW_RI_RES_WR_STATUSPGNS(x) ((x) << S_FW_RI_RES_WR_STATUSPGNS)
327
#define G_FW_RI_RES_WR_STATUSPGNS(x) \
328
(((x) >> S_FW_RI_RES_WR_STATUSPGNS) & M_FW_RI_RES_WR_STATUSPGNS)
329
#define F_FW_RI_RES_WR_STATUSPGNS V_FW_RI_RES_WR_STATUSPGNS(1U)
330
331
#define S_FW_RI_RES_WR_STATUSPGRO 24
332
#define M_FW_RI_RES_WR_STATUSPGRO 0x1
333
#define V_FW_RI_RES_WR_STATUSPGRO(x) ((x) << S_FW_RI_RES_WR_STATUSPGRO)
334
#define G_FW_RI_RES_WR_STATUSPGRO(x) \
335
(((x) >> S_FW_RI_RES_WR_STATUSPGRO) & M_FW_RI_RES_WR_STATUSPGRO)
336
#define F_FW_RI_RES_WR_STATUSPGRO V_FW_RI_RES_WR_STATUSPGRO(1U)
337
338
#define S_FW_RI_RES_WR_FETCHNS 23
339
#define M_FW_RI_RES_WR_FETCHNS 0x1
340
#define V_FW_RI_RES_WR_FETCHNS(x) ((x) << S_FW_RI_RES_WR_FETCHNS)
341
#define G_FW_RI_RES_WR_FETCHNS(x) \
342
(((x) >> S_FW_RI_RES_WR_FETCHNS) & M_FW_RI_RES_WR_FETCHNS)
343
#define F_FW_RI_RES_WR_FETCHNS V_FW_RI_RES_WR_FETCHNS(1U)
344
345
#define S_FW_RI_RES_WR_FETCHRO 22
346
#define M_FW_RI_RES_WR_FETCHRO 0x1
347
#define V_FW_RI_RES_WR_FETCHRO(x) ((x) << S_FW_RI_RES_WR_FETCHRO)
348
#define G_FW_RI_RES_WR_FETCHRO(x) \
349
(((x) >> S_FW_RI_RES_WR_FETCHRO) & M_FW_RI_RES_WR_FETCHRO)
350
#define F_FW_RI_RES_WR_FETCHRO V_FW_RI_RES_WR_FETCHRO(1U)
351
352
#define S_FW_RI_RES_WR_HOSTFCMODE 20
353
#define M_FW_RI_RES_WR_HOSTFCMODE 0x3
354
#define V_FW_RI_RES_WR_HOSTFCMODE(x) ((x) << S_FW_RI_RES_WR_HOSTFCMODE)
355
#define G_FW_RI_RES_WR_HOSTFCMODE(x) \
356
(((x) >> S_FW_RI_RES_WR_HOSTFCMODE) & M_FW_RI_RES_WR_HOSTFCMODE)
357
358
#define S_FW_RI_RES_WR_CPRIO 19
359
#define M_FW_RI_RES_WR_CPRIO 0x1
360
#define V_FW_RI_RES_WR_CPRIO(x) ((x) << S_FW_RI_RES_WR_CPRIO)
361
#define G_FW_RI_RES_WR_CPRIO(x) \
362
(((x) >> S_FW_RI_RES_WR_CPRIO) & M_FW_RI_RES_WR_CPRIO)
363
#define F_FW_RI_RES_WR_CPRIO V_FW_RI_RES_WR_CPRIO(1U)
364
365
#define S_FW_RI_RES_WR_ONCHIP 18
366
#define M_FW_RI_RES_WR_ONCHIP 0x1
367
#define V_FW_RI_RES_WR_ONCHIP(x) ((x) << S_FW_RI_RES_WR_ONCHIP)
368
#define G_FW_RI_RES_WR_ONCHIP(x) \
369
(((x) >> S_FW_RI_RES_WR_ONCHIP) & M_FW_RI_RES_WR_ONCHIP)
370
#define F_FW_RI_RES_WR_ONCHIP V_FW_RI_RES_WR_ONCHIP(1U)
371
372
#define S_FW_RI_RES_WR_PCIECHN 16
373
#define M_FW_RI_RES_WR_PCIECHN 0x3
374
#define V_FW_RI_RES_WR_PCIECHN(x) ((x) << S_FW_RI_RES_WR_PCIECHN)
375
#define G_FW_RI_RES_WR_PCIECHN(x) \
376
(((x) >> S_FW_RI_RES_WR_PCIECHN) & M_FW_RI_RES_WR_PCIECHN)
377
378
#define S_FW_RI_RES_WR_IQID 0
379
#define M_FW_RI_RES_WR_IQID 0xffff
380
#define V_FW_RI_RES_WR_IQID(x) ((x) << S_FW_RI_RES_WR_IQID)
381
#define G_FW_RI_RES_WR_IQID(x) \
382
(((x) >> S_FW_RI_RES_WR_IQID) & M_FW_RI_RES_WR_IQID)
383
384
#define S_FW_RI_RES_WR_DCAEN 31
385
#define M_FW_RI_RES_WR_DCAEN 0x1
386
#define V_FW_RI_RES_WR_DCAEN(x) ((x) << S_FW_RI_RES_WR_DCAEN)
387
#define G_FW_RI_RES_WR_DCAEN(x) \
388
(((x) >> S_FW_RI_RES_WR_DCAEN) & M_FW_RI_RES_WR_DCAEN)
389
#define F_FW_RI_RES_WR_DCAEN V_FW_RI_RES_WR_DCAEN(1U)
390
391
#define S_FW_RI_RES_WR_DCACPU 26
392
#define M_FW_RI_RES_WR_DCACPU 0x1f
393
#define V_FW_RI_RES_WR_DCACPU(x) ((x) << S_FW_RI_RES_WR_DCACPU)
394
#define G_FW_RI_RES_WR_DCACPU(x) \
395
(((x) >> S_FW_RI_RES_WR_DCACPU) & M_FW_RI_RES_WR_DCACPU)
396
397
#define S_FW_RI_RES_WR_FBMIN 23
398
#define M_FW_RI_RES_WR_FBMIN 0x7
399
#define V_FW_RI_RES_WR_FBMIN(x) ((x) << S_FW_RI_RES_WR_FBMIN)
400
#define G_FW_RI_RES_WR_FBMIN(x) \
401
(((x) >> S_FW_RI_RES_WR_FBMIN) & M_FW_RI_RES_WR_FBMIN)
402
403
#define S_FW_RI_RES_WR_FBMAX 20
404
#define M_FW_RI_RES_WR_FBMAX 0x7
405
#define V_FW_RI_RES_WR_FBMAX(x) ((x) << S_FW_RI_RES_WR_FBMAX)
406
#define G_FW_RI_RES_WR_FBMAX(x) \
407
(((x) >> S_FW_RI_RES_WR_FBMAX) & M_FW_RI_RES_WR_FBMAX)
408
409
#define S_FW_RI_RES_WR_CIDXFTHRESHO 19
410
#define M_FW_RI_RES_WR_CIDXFTHRESHO 0x1
411
#define V_FW_RI_RES_WR_CIDXFTHRESHO(x) ((x) << S_FW_RI_RES_WR_CIDXFTHRESHO)
412
#define G_FW_RI_RES_WR_CIDXFTHRESHO(x) \
413
(((x) >> S_FW_RI_RES_WR_CIDXFTHRESHO) & M_FW_RI_RES_WR_CIDXFTHRESHO)
414
#define F_FW_RI_RES_WR_CIDXFTHRESHO V_FW_RI_RES_WR_CIDXFTHRESHO(1U)
415
416
#define S_FW_RI_RES_WR_CIDXFTHRESH 16
417
#define M_FW_RI_RES_WR_CIDXFTHRESH 0x7
418
#define V_FW_RI_RES_WR_CIDXFTHRESH(x) ((x) << S_FW_RI_RES_WR_CIDXFTHRESH)
419
#define G_FW_RI_RES_WR_CIDXFTHRESH(x) \
420
(((x) >> S_FW_RI_RES_WR_CIDXFTHRESH) & M_FW_RI_RES_WR_CIDXFTHRESH)
421
422
#define S_FW_RI_RES_WR_EQSIZE 0
423
#define M_FW_RI_RES_WR_EQSIZE 0xffff
424
#define V_FW_RI_RES_WR_EQSIZE(x) ((x) << S_FW_RI_RES_WR_EQSIZE)
425
#define G_FW_RI_RES_WR_EQSIZE(x) \
426
(((x) >> S_FW_RI_RES_WR_EQSIZE) & M_FW_RI_RES_WR_EQSIZE)
427
428
#define S_FW_RI_RES_WR_IQANDST 15
429
#define M_FW_RI_RES_WR_IQANDST 0x1
430
#define V_FW_RI_RES_WR_IQANDST(x) ((x) << S_FW_RI_RES_WR_IQANDST)
431
#define G_FW_RI_RES_WR_IQANDST(x) \
432
(((x) >> S_FW_RI_RES_WR_IQANDST) & M_FW_RI_RES_WR_IQANDST)
433
#define F_FW_RI_RES_WR_IQANDST V_FW_RI_RES_WR_IQANDST(1U)
434
435
#define S_FW_RI_RES_WR_IQANUS 14
436
#define M_FW_RI_RES_WR_IQANUS 0x1
437
#define V_FW_RI_RES_WR_IQANUS(x) ((x) << S_FW_RI_RES_WR_IQANUS)
438
#define G_FW_RI_RES_WR_IQANUS(x) \
439
(((x) >> S_FW_RI_RES_WR_IQANUS) & M_FW_RI_RES_WR_IQANUS)
440
#define F_FW_RI_RES_WR_IQANUS V_FW_RI_RES_WR_IQANUS(1U)
441
442
#define S_FW_RI_RES_WR_IQANUD 12
443
#define M_FW_RI_RES_WR_IQANUD 0x3
444
#define V_FW_RI_RES_WR_IQANUD(x) ((x) << S_FW_RI_RES_WR_IQANUD)
445
#define G_FW_RI_RES_WR_IQANUD(x) \
446
(((x) >> S_FW_RI_RES_WR_IQANUD) & M_FW_RI_RES_WR_IQANUD)
447
448
#define S_FW_RI_RES_WR_IQANDSTINDEX 0
449
#define M_FW_RI_RES_WR_IQANDSTINDEX 0xfff
450
#define V_FW_RI_RES_WR_IQANDSTINDEX(x) ((x) << S_FW_RI_RES_WR_IQANDSTINDEX)
451
#define G_FW_RI_RES_WR_IQANDSTINDEX(x) \
452
(((x) >> S_FW_RI_RES_WR_IQANDSTINDEX) & M_FW_RI_RES_WR_IQANDSTINDEX)
453
454
#define S_FW_RI_RES_WR_IQDROPRSS 15
455
#define M_FW_RI_RES_WR_IQDROPRSS 0x1
456
#define V_FW_RI_RES_WR_IQDROPRSS(x) ((x) << S_FW_RI_RES_WR_IQDROPRSS)
457
#define G_FW_RI_RES_WR_IQDROPRSS(x) \
458
(((x) >> S_FW_RI_RES_WR_IQDROPRSS) & M_FW_RI_RES_WR_IQDROPRSS)
459
#define F_FW_RI_RES_WR_IQDROPRSS V_FW_RI_RES_WR_IQDROPRSS(1U)
460
461
#define S_FW_RI_RES_WR_IQGTSMODE 14
462
#define M_FW_RI_RES_WR_IQGTSMODE 0x1
463
#define V_FW_RI_RES_WR_IQGTSMODE(x) ((x) << S_FW_RI_RES_WR_IQGTSMODE)
464
#define G_FW_RI_RES_WR_IQGTSMODE(x) \
465
(((x) >> S_FW_RI_RES_WR_IQGTSMODE) & M_FW_RI_RES_WR_IQGTSMODE)
466
#define F_FW_RI_RES_WR_IQGTSMODE V_FW_RI_RES_WR_IQGTSMODE(1U)
467
468
#define S_FW_RI_RES_WR_IQPCIECH 12
469
#define M_FW_RI_RES_WR_IQPCIECH 0x3
470
#define V_FW_RI_RES_WR_IQPCIECH(x) ((x) << S_FW_RI_RES_WR_IQPCIECH)
471
#define G_FW_RI_RES_WR_IQPCIECH(x) \
472
(((x) >> S_FW_RI_RES_WR_IQPCIECH) & M_FW_RI_RES_WR_IQPCIECH)
473
474
#define S_FW_RI_RES_WR_IQDCAEN 11
475
#define M_FW_RI_RES_WR_IQDCAEN 0x1
476
#define V_FW_RI_RES_WR_IQDCAEN(x) ((x) << S_FW_RI_RES_WR_IQDCAEN)
477
#define G_FW_RI_RES_WR_IQDCAEN(x) \
478
(((x) >> S_FW_RI_RES_WR_IQDCAEN) & M_FW_RI_RES_WR_IQDCAEN)
479
#define F_FW_RI_RES_WR_IQDCAEN V_FW_RI_RES_WR_IQDCAEN(1U)
480
481
#define S_FW_RI_RES_WR_IQDCACPU 6
482
#define M_FW_RI_RES_WR_IQDCACPU 0x1f
483
#define V_FW_RI_RES_WR_IQDCACPU(x) ((x) << S_FW_RI_RES_WR_IQDCACPU)
484
#define G_FW_RI_RES_WR_IQDCACPU(x) \
485
(((x) >> S_FW_RI_RES_WR_IQDCACPU) & M_FW_RI_RES_WR_IQDCACPU)
486
487
#define S_FW_RI_RES_WR_IQINTCNTTHRESH 4
488
#define M_FW_RI_RES_WR_IQINTCNTTHRESH 0x3
489
#define V_FW_RI_RES_WR_IQINTCNTTHRESH(x) \
490
((x) << S_FW_RI_RES_WR_IQINTCNTTHRESH)
491
#define G_FW_RI_RES_WR_IQINTCNTTHRESH(x) \
492
(((x) >> S_FW_RI_RES_WR_IQINTCNTTHRESH) & M_FW_RI_RES_WR_IQINTCNTTHRESH)
493
494
#define S_FW_RI_RES_WR_IQO 3
495
#define M_FW_RI_RES_WR_IQO 0x1
496
#define V_FW_RI_RES_WR_IQO(x) ((x) << S_FW_RI_RES_WR_IQO)
497
#define G_FW_RI_RES_WR_IQO(x) \
498
(((x) >> S_FW_RI_RES_WR_IQO) & M_FW_RI_RES_WR_IQO)
499
#define F_FW_RI_RES_WR_IQO V_FW_RI_RES_WR_IQO(1U)
500
501
#define S_FW_RI_RES_WR_IQCPRIO 2
502
#define M_FW_RI_RES_WR_IQCPRIO 0x1
503
#define V_FW_RI_RES_WR_IQCPRIO(x) ((x) << S_FW_RI_RES_WR_IQCPRIO)
504
#define G_FW_RI_RES_WR_IQCPRIO(x) \
505
(((x) >> S_FW_RI_RES_WR_IQCPRIO) & M_FW_RI_RES_WR_IQCPRIO)
506
#define F_FW_RI_RES_WR_IQCPRIO V_FW_RI_RES_WR_IQCPRIO(1U)
507
508
#define S_FW_RI_RES_WR_IQESIZE 0
509
#define M_FW_RI_RES_WR_IQESIZE 0x3
510
#define V_FW_RI_RES_WR_IQESIZE(x) ((x) << S_FW_RI_RES_WR_IQESIZE)
511
#define G_FW_RI_RES_WR_IQESIZE(x) \
512
(((x) >> S_FW_RI_RES_WR_IQESIZE) & M_FW_RI_RES_WR_IQESIZE)
513
514
#define S_FW_RI_RES_WR_IQNS 31
515
#define M_FW_RI_RES_WR_IQNS 0x1
516
#define V_FW_RI_RES_WR_IQNS(x) ((x) << S_FW_RI_RES_WR_IQNS)
517
#define G_FW_RI_RES_WR_IQNS(x) \
518
(((x) >> S_FW_RI_RES_WR_IQNS) & M_FW_RI_RES_WR_IQNS)
519
#define F_FW_RI_RES_WR_IQNS V_FW_RI_RES_WR_IQNS(1U)
520
521
#define S_FW_RI_RES_WR_IQRO 30
522
#define M_FW_RI_RES_WR_IQRO 0x1
523
#define V_FW_RI_RES_WR_IQRO(x) ((x) << S_FW_RI_RES_WR_IQRO)
524
#define G_FW_RI_RES_WR_IQRO(x) \
525
(((x) >> S_FW_RI_RES_WR_IQRO) & M_FW_RI_RES_WR_IQRO)
526
#define F_FW_RI_RES_WR_IQRO V_FW_RI_RES_WR_IQRO(1U)
527
528
struct fw_ri_rdma_write_wr {
529
__u8 opcode;
530
__u8 flags;
531
__u16 wrid;
532
__u8 r1[3];
533
__u8 len16;
534
__be64 r2;
535
__be32 plen;
536
__be32 stag_sink;
537
__be64 to_sink;
538
#ifndef C99_NOT_SUPPORTED
539
union {
540
struct fw_ri_immd immd_src[0];
541
struct fw_ri_isgl isgl_src[0];
542
} u;
543
#endif
544
};
545
546
struct fw_ri_send_wr {
547
__u8 opcode;
548
__u8 flags;
549
__u16 wrid;
550
__u8 r1[3];
551
__u8 len16;
552
__be32 sendop_pkd;
553
__be32 stag_inv;
554
__be32 plen;
555
__be32 r3;
556
__be64 r4;
557
#ifndef C99_NOT_SUPPORTED
558
union {
559
struct fw_ri_immd immd_src[0];
560
struct fw_ri_isgl isgl_src[0];
561
} u;
562
#endif
563
};
564
565
#define S_FW_RI_SEND_WR_SENDOP 0
566
#define M_FW_RI_SEND_WR_SENDOP 0xf
567
#define V_FW_RI_SEND_WR_SENDOP(x) ((x) << S_FW_RI_SEND_WR_SENDOP)
568
#define G_FW_RI_SEND_WR_SENDOP(x) \
569
(((x) >> S_FW_RI_SEND_WR_SENDOP) & M_FW_RI_SEND_WR_SENDOP)
570
571
struct fw_ri_rdma_read_wr {
572
__u8 opcode;
573
__u8 flags;
574
__u16 wrid;
575
__u8 r1[3];
576
__u8 len16;
577
__be64 r2;
578
__be32 stag_sink;
579
__be32 to_sink_hi;
580
__be32 to_sink_lo;
581
__be32 plen;
582
__be32 stag_src;
583
__be32 to_src_hi;
584
__be32 to_src_lo;
585
__be32 r5;
586
};
587
588
struct fw_ri_recv_wr {
589
__u8 opcode;
590
__u8 r1;
591
__u16 wrid;
592
__u8 r2[3];
593
__u8 len16;
594
struct fw_ri_isgl isgl;
595
};
596
597
struct fw_ri_bind_mw_wr {
598
__u8 opcode;
599
__u8 flags;
600
__u16 wrid;
601
__u8 r1[3];
602
__u8 len16;
603
__u8 qpbinde_to_dcacpu;
604
__u8 pgsz_shift;
605
__u8 addr_type;
606
__u8 mem_perms;
607
__be32 stag_mr;
608
__be32 stag_mw;
609
__be32 r3;
610
__be64 len_mw;
611
__be64 va_fbo;
612
__be64 r4;
613
};
614
615
#define S_FW_RI_BIND_MW_WR_QPBINDE 6
616
#define M_FW_RI_BIND_MW_WR_QPBINDE 0x1
617
#define V_FW_RI_BIND_MW_WR_QPBINDE(x) ((x) << S_FW_RI_BIND_MW_WR_QPBINDE)
618
#define G_FW_RI_BIND_MW_WR_QPBINDE(x) \
619
(((x) >> S_FW_RI_BIND_MW_WR_QPBINDE) & M_FW_RI_BIND_MW_WR_QPBINDE)
620
#define F_FW_RI_BIND_MW_WR_QPBINDE V_FW_RI_BIND_MW_WR_QPBINDE(1U)
621
622
#define S_FW_RI_BIND_MW_WR_NS 5
623
#define M_FW_RI_BIND_MW_WR_NS 0x1
624
#define V_FW_RI_BIND_MW_WR_NS(x) ((x) << S_FW_RI_BIND_MW_WR_NS)
625
#define G_FW_RI_BIND_MW_WR_NS(x) \
626
(((x) >> S_FW_RI_BIND_MW_WR_NS) & M_FW_RI_BIND_MW_WR_NS)
627
#define F_FW_RI_BIND_MW_WR_NS V_FW_RI_BIND_MW_WR_NS(1U)
628
629
#define S_FW_RI_BIND_MW_WR_DCACPU 0
630
#define M_FW_RI_BIND_MW_WR_DCACPU 0x1f
631
#define V_FW_RI_BIND_MW_WR_DCACPU(x) ((x) << S_FW_RI_BIND_MW_WR_DCACPU)
632
#define G_FW_RI_BIND_MW_WR_DCACPU(x) \
633
(((x) >> S_FW_RI_BIND_MW_WR_DCACPU) & M_FW_RI_BIND_MW_WR_DCACPU)
634
635
struct fw_ri_fr_nsmr_wr {
636
__u8 opcode;
637
__u8 flags;
638
__u16 wrid;
639
__u8 r1[3];
640
__u8 len16;
641
__u8 qpbinde_to_dcacpu;
642
__u8 pgsz_shift;
643
__u8 addr_type;
644
__u8 mem_perms;
645
__be32 stag;
646
__be32 len_hi;
647
__be32 len_lo;
648
__be32 va_hi;
649
__be32 va_lo_fbo;
650
};
651
652
#define S_FW_RI_FR_NSMR_WR_QPBINDE 6
653
#define M_FW_RI_FR_NSMR_WR_QPBINDE 0x1
654
#define V_FW_RI_FR_NSMR_WR_QPBINDE(x) ((x) << S_FW_RI_FR_NSMR_WR_QPBINDE)
655
#define G_FW_RI_FR_NSMR_WR_QPBINDE(x) \
656
(((x) >> S_FW_RI_FR_NSMR_WR_QPBINDE) & M_FW_RI_FR_NSMR_WR_QPBINDE)
657
#define F_FW_RI_FR_NSMR_WR_QPBINDE V_FW_RI_FR_NSMR_WR_QPBINDE(1U)
658
659
#define S_FW_RI_FR_NSMR_WR_NS 5
660
#define M_FW_RI_FR_NSMR_WR_NS 0x1
661
#define V_FW_RI_FR_NSMR_WR_NS(x) ((x) << S_FW_RI_FR_NSMR_WR_NS)
662
#define G_FW_RI_FR_NSMR_WR_NS(x) \
663
(((x) >> S_FW_RI_FR_NSMR_WR_NS) & M_FW_RI_FR_NSMR_WR_NS)
664
#define F_FW_RI_FR_NSMR_WR_NS V_FW_RI_FR_NSMR_WR_NS(1U)
665
666
#define S_FW_RI_FR_NSMR_WR_DCACPU 0
667
#define M_FW_RI_FR_NSMR_WR_DCACPU 0x1f
668
#define V_FW_RI_FR_NSMR_WR_DCACPU(x) ((x) << S_FW_RI_FR_NSMR_WR_DCACPU)
669
#define G_FW_RI_FR_NSMR_WR_DCACPU(x) \
670
(((x) >> S_FW_RI_FR_NSMR_WR_DCACPU) & M_FW_RI_FR_NSMR_WR_DCACPU)
671
672
struct fw_ri_inv_lstag_wr {
673
__u8 opcode;
674
__u8 flags;
675
__u16 wrid;
676
__u8 r1[3];
677
__u8 len16;
678
__be32 r2;
679
__be32 stag_inv;
680
};
681
682
enum fw_ri_type {
683
FW_RI_TYPE_INIT,
684
FW_RI_TYPE_FINI,
685
FW_RI_TYPE_TERMINATE
686
};
687
688
enum fw_ri_init_p2ptype {
689
FW_RI_INIT_P2PTYPE_RDMA_WRITE = FW_RI_RDMA_WRITE,
690
FW_RI_INIT_P2PTYPE_READ_REQ = FW_RI_READ_REQ,
691
FW_RI_INIT_P2PTYPE_SEND = FW_RI_SEND,
692
FW_RI_INIT_P2PTYPE_SEND_WITH_INV = FW_RI_SEND_WITH_INV,
693
FW_RI_INIT_P2PTYPE_SEND_WITH_SE = FW_RI_SEND_WITH_SE,
694
FW_RI_INIT_P2PTYPE_SEND_WITH_SE_INV = FW_RI_SEND_WITH_SE_INV,
695
FW_RI_INIT_P2PTYPE_DISABLED = 0xf,
696
};
697
698
struct fw_ri_wr {
699
__be32 op_compl;
700
__be32 flowid_len16;
701
__u64 cookie;
702
union fw_ri {
703
struct fw_ri_init {
704
__u8 type;
705
__u8 mpareqbit_p2ptype;
706
__u8 r4[2];
707
__u8 mpa_attrs;
708
__u8 qp_caps;
709
__be16 nrqe;
710
__be32 pdid;
711
__be32 qpid;
712
__be32 sq_eqid;
713
__be32 rq_eqid;
714
__be32 scqid;
715
__be32 rcqid;
716
__be32 ord_max;
717
__be32 ird_max;
718
__be32 iss;
719
__be32 irs;
720
__be32 hwrqsize;
721
__be32 hwrqaddr;
722
__be64 r5;
723
union fw_ri_init_p2p {
724
struct fw_ri_rdma_write_wr write;
725
struct fw_ri_rdma_read_wr read;
726
struct fw_ri_send_wr send;
727
} u;
728
} init;
729
struct fw_ri_fini {
730
__u8 type;
731
__u8 r3[7];
732
__be64 r4;
733
} fini;
734
struct fw_ri_terminate {
735
__u8 type;
736
__u8 r3[3];
737
__be32 immdlen;
738
__u8 termmsg[40];
739
} terminate;
740
} u;
741
};
742
743
#define S_FW_RI_WR_MPAREQBIT 7
744
#define M_FW_RI_WR_MPAREQBIT 0x1
745
#define V_FW_RI_WR_MPAREQBIT(x) ((x) << S_FW_RI_WR_MPAREQBIT)
746
#define G_FW_RI_WR_MPAREQBIT(x) \
747
(((x) >> S_FW_RI_WR_MPAREQBIT) & M_FW_RI_WR_MPAREQBIT)
748
#define F_FW_RI_WR_MPAREQBIT V_FW_RI_WR_MPAREQBIT(1U)
749
750
#define S_FW_RI_WR_P2PTYPE 0
751
#define M_FW_RI_WR_P2PTYPE 0xf
752
#define V_FW_RI_WR_P2PTYPE(x) ((x) << S_FW_RI_WR_P2PTYPE)
753
#define G_FW_RI_WR_P2PTYPE(x) \
754
(((x) >> S_FW_RI_WR_P2PTYPE) & M_FW_RI_WR_P2PTYPE)
755
756
struct tcp_options {
757
__be16 mss;
758
__u8 wsf;
759
#if defined(__LITTLE_ENDIAN_BITFIELD)
760
__u8:4;
761
__u8 unknown:1;
762
__u8:1;
763
__u8 sack:1;
764
__u8 tstamp:1;
765
#else
766
__u8 tstamp:1;
767
__u8 sack:1;
768
__u8:1;
769
__u8 unknown:1;
770
__u8:4;
771
#endif
772
};
773
774
struct cpl_pass_accept_req {
775
union opcode_tid ot;
776
__be16 rsvd;
777
__be16 len;
778
__be32 hdr_len;
779
__be16 vlan;
780
__be16 l2info;
781
__be32 tos_stid;
782
struct tcp_options tcpopt;
783
};
784
785
/* cpl_pass_accept_req.hdr_len fields */
786
#define S_SYN_RX_CHAN 0
787
#define M_SYN_RX_CHAN 0xF
788
#define V_SYN_RX_CHAN(x) ((x) << S_SYN_RX_CHAN)
789
#define G_SYN_RX_CHAN(x) (((x) >> S_SYN_RX_CHAN) & M_SYN_RX_CHAN)
790
791
#define S_TCP_HDR_LEN 10
792
#define M_TCP_HDR_LEN 0x3F
793
#define V_TCP_HDR_LEN(x) ((x) << S_TCP_HDR_LEN)
794
#define G_TCP_HDR_LEN(x) (((x) >> S_TCP_HDR_LEN) & M_TCP_HDR_LEN)
795
796
#define S_IP_HDR_LEN 16
797
#define M_IP_HDR_LEN 0x3FF
798
#define V_IP_HDR_LEN(x) ((x) << S_IP_HDR_LEN)
799
#define G_IP_HDR_LEN(x) (((x) >> S_IP_HDR_LEN) & M_IP_HDR_LEN)
800
801
#define S_ETH_HDR_LEN 26
802
#define M_ETH_HDR_LEN 0x1F
803
#define V_ETH_HDR_LEN(x) ((x) << S_ETH_HDR_LEN)
804
#define G_ETH_HDR_LEN(x) (((x) >> S_ETH_HDR_LEN) & M_ETH_HDR_LEN)
805
806
/* cpl_pass_accept_req.l2info fields */
807
#define S_SYN_MAC_IDX 0
808
#define M_SYN_MAC_IDX 0x1FF
809
#define V_SYN_MAC_IDX(x) ((x) << S_SYN_MAC_IDX)
810
#define G_SYN_MAC_IDX(x) (((x) >> S_SYN_MAC_IDX) & M_SYN_MAC_IDX)
811
812
#define S_SYN_XACT_MATCH 9
813
#define V_SYN_XACT_MATCH(x) ((x) << S_SYN_XACT_MATCH)
814
#define F_SYN_XACT_MATCH V_SYN_XACT_MATCH(1U)
815
816
#define S_SYN_INTF 12
817
#define M_SYN_INTF 0xF
818
#define V_SYN_INTF(x) ((x) << S_SYN_INTF)
819
#define G_SYN_INTF(x) (((x) >> S_SYN_INTF) & M_SYN_INTF)
820
821
struct ulptx_idata {
822
__be32 cmd_more;
823
__be32 len;
824
};
825
826
#define S_ULPTX_NSGE 0
827
#define M_ULPTX_NSGE 0xFFFF
828
#define V_ULPTX_NSGE(x) ((x) << S_ULPTX_NSGE)
829
830
#define S_RX_DACK_MODE 29
831
#define M_RX_DACK_MODE 0x3
832
#define V_RX_DACK_MODE(x) ((x) << S_RX_DACK_MODE)
833
#define G_RX_DACK_MODE(x) (((x) >> S_RX_DACK_MODE) & M_RX_DACK_MODE)
834
835
#define S_RX_DACK_CHANGE 31
836
#define V_RX_DACK_CHANGE(x) ((x) << S_RX_DACK_CHANGE)
837
#define F_RX_DACK_CHANGE V_RX_DACK_CHANGE(1U)
838
839
#endif /* _T4FW_RI_API_H_ */
840
841