RDMA/hns: Use delay instead of usleep
[linux-block.git] / drivers / infiniband / hw / hns / hns_roce_hw_v2.h
CommitLineData
a04ff739
WHX
1/*
2 * Copyright (c) 2016-2017 Hisilicon Limited.
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 *
18 * - Redistributions in binary form must reproduce the above
19 * copyright notice, this list of conditions and the following
20 * disclaimer in the documentation and/or other materials
21 * provided with the distribution.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30 * SOFTWARE.
31 */
32
33#ifndef _HNS_ROCE_HW_V2_H
34#define _HNS_ROCE_HW_V2_H
35
cfc85f3e
WHX
36#include <linux/bitops.h>
37
38#define HNS_ROCE_VF_QPC_BT_NUM 256
39#define HNS_ROCE_VF_SRQC_BT_NUM 64
40#define HNS_ROCE_VF_CQC_BT_NUM 64
41#define HNS_ROCE_VF_MPT_BT_NUM 64
42#define HNS_ROCE_VF_EQC_NUM 64
43#define HNS_ROCE_VF_SMAC_NUM 32
44#define HNS_ROCE_VF_SGID_NUM 32
45#define HNS_ROCE_VF_SL_NUM 8
46
47#define HNS_ROCE_V2_MAX_QP_NUM 0x2000
48#define HNS_ROCE_V2_MAX_WQE_NUM 0x8000
49#define HNS_ROCE_V2_MAX_CQ_NUM 0x8000
3180236c 50#define HNS_ROCE_V2_MAX_CQE_NUM 0x10000
cfc85f3e
WHX
51#define HNS_ROCE_V2_MAX_RQ_SGE_NUM 0x100
52#define HNS_ROCE_V2_MAX_SQ_SGE_NUM 0xff
53#define HNS_ROCE_V2_MAX_SQ_INLINE 0x20
54#define HNS_ROCE_V2_UAR_NUM 256
55#define HNS_ROCE_V2_PHY_UAR_NUM 1
a5073d60
YL
56#define HNS_ROCE_V2_MAX_IRQ_NUM 65
57#define HNS_ROCE_V2_COMP_VEC_NUM 63
58#define HNS_ROCE_V2_AEQE_VEC_NUM 1
59#define HNS_ROCE_V2_ABNORMAL_VEC_NUM 1
cfc85f3e 60#define HNS_ROCE_V2_MAX_MTPT_NUM 0x8000
3180236c
WHX
61#define HNS_ROCE_V2_MAX_MTT_SEGS 0x1000000
62#define HNS_ROCE_V2_MAX_CQE_SEGS 0x1000000
63#define HNS_ROCE_V2_MAX_PD_NUM 0x1000000
cfc85f3e
WHX
64#define HNS_ROCE_V2_MAX_QP_INIT_RDMA 128
65#define HNS_ROCE_V2_MAX_QP_DEST_RDMA 128
66#define HNS_ROCE_V2_MAX_SQ_DESC_SZ 64
67#define HNS_ROCE_V2_MAX_RQ_DESC_SZ 16
68#define HNS_ROCE_V2_MAX_SRQ_DESC_SZ 64
69#define HNS_ROCE_V2_QPC_ENTRY_SZ 256
70#define HNS_ROCE_V2_IRRL_ENTRY_SZ 64
e92f2c18 71#define HNS_ROCE_V2_TRRL_ENTRY_SZ 48
cfc85f3e
WHX
72#define HNS_ROCE_V2_CQC_ENTRY_SZ 64
73#define HNS_ROCE_V2_MTPT_ENTRY_SZ 64
74#define HNS_ROCE_V2_MTT_ENTRY_SZ 64
75#define HNS_ROCE_V2_CQE_ENTRY_SIZE 32
76#define HNS_ROCE_V2_PAGE_SIZE_SUPPORTED 0xFFFFF000
77#define HNS_ROCE_V2_MAX_INNER_MTPT_NUM 2
2d407888 78#define HNS_ROCE_INVALID_LKEY 0x100
d59fcacc 79#define HNS_ROCE_CMQ_TX_TIMEOUT 30000
0b25c9cc 80#define HNS_ROCE_V2_UC_RC_SGE_NUM_IN_WQE 2
a04ff739 81
a25d13cb
SX
82#define HNS_ROCE_CONTEXT_HOP_NUM 1
83#define HNS_ROCE_MTT_HOP_NUM 1
6a93c77a 84#define HNS_ROCE_CQE_HOP_NUM 1
ff795f71 85#define HNS_ROCE_PBL_HOP_NUM 2
a5073d60
YL
86#define HNS_ROCE_EQE_HOP_NUM 2
87
b5ff0f61 88#define HNS_ROCE_V2_GID_INDEX_NUM 256
a25d13cb 89
29a1fe5d
WHX
90#define HNS_ROCE_V2_TABLE_CHUNK_SIZE (1 << 18)
91
a04ff739
WHX
92#define HNS_ROCE_CMD_FLAG_IN_VALID_SHIFT 0
93#define HNS_ROCE_CMD_FLAG_OUT_VALID_SHIFT 1
94#define HNS_ROCE_CMD_FLAG_NEXT_SHIFT 2
95#define HNS_ROCE_CMD_FLAG_WR_OR_RD_SHIFT 3
96#define HNS_ROCE_CMD_FLAG_NO_INTR_SHIFT 4
97#define HNS_ROCE_CMD_FLAG_ERR_INTR_SHIFT 5
98
99#define HNS_ROCE_CMD_FLAG_IN BIT(HNS_ROCE_CMD_FLAG_IN_VALID_SHIFT)
100#define HNS_ROCE_CMD_FLAG_OUT BIT(HNS_ROCE_CMD_FLAG_OUT_VALID_SHIFT)
101#define HNS_ROCE_CMD_FLAG_NEXT BIT(HNS_ROCE_CMD_FLAG_NEXT_SHIFT)
102#define HNS_ROCE_CMD_FLAG_WR BIT(HNS_ROCE_CMD_FLAG_WR_OR_RD_SHIFT)
103#define HNS_ROCE_CMD_FLAG_NO_INTR BIT(HNS_ROCE_CMD_FLAG_NO_INTR_SHIFT)
104#define HNS_ROCE_CMD_FLAG_ERR_INTR BIT(HNS_ROCE_CMD_FLAG_ERR_INTR_SHIFT)
105
106#define HNS_ROCE_CMQ_DESC_NUM_S 3
107#define HNS_ROCE_CMQ_EN_B 16
108#define HNS_ROCE_CMQ_ENABLE BIT(HNS_ROCE_CMQ_EN_B)
109
a81fba28
WHX
110#define check_whether_last_step(hop_num, step_idx) \
111 ((step_idx == 0 && hop_num == HNS_ROCE_HOP_NUM_0) || \
112 (step_idx == 1 && hop_num == 1) || \
113 (step_idx == 2 && hop_num == 2))
114
a5073d60
YL
115enum {
116 NO_ARMED = 0x0,
117 REG_NXT_CEQE = 0x2,
118 REG_NXT_SE_CEQE = 0x3
119};
120
93aa2187
WHX
121#define V2_CQ_DB_REQ_NOT_SOL 0
122#define V2_CQ_DB_REQ_NOT 1
123
124#define V2_CQ_STATE_VALID 1
926a01dc
WHX
125#define V2_QKEY_VAL 0x80010000
126
127#define GID_LEN_V2 16
93aa2187
WHX
128
129#define HNS_ROCE_V2_CQE_QPN_MASK 0x3ffff
130
2d407888
WHX
131enum {
132 HNS_ROCE_V2_WQE_OP_SEND = 0x0,
133 HNS_ROCE_V2_WQE_OP_SEND_WITH_INV = 0x1,
134 HNS_ROCE_V2_WQE_OP_SEND_WITH_IMM = 0x2,
135 HNS_ROCE_V2_WQE_OP_RDMA_WRITE = 0x3,
136 HNS_ROCE_V2_WQE_OP_RDMA_WRITE_WITH_IMM = 0x4,
137 HNS_ROCE_V2_WQE_OP_RDMA_READ = 0x5,
138 HNS_ROCE_V2_WQE_OP_ATOM_CMP_AND_SWAP = 0x6,
139 HNS_ROCE_V2_WQE_OP_ATOM_FETCH_AND_ADD = 0x7,
140 HNS_ROCE_V2_WQE_OP_ATOM_MSK_CMP_AND_SWAP = 0x8,
141 HNS_ROCE_V2_WQE_OP_ATOM_MSK_FETCH_AND_ADD = 0x9,
142 HNS_ROCE_V2_WQE_OP_FAST_REG_PMR = 0xa,
143 HNS_ROCE_V2_WQE_OP_LOCAL_INV = 0xb,
144 HNS_ROCE_V2_WQE_OP_BIND_MW_TYPE = 0xc,
145 HNS_ROCE_V2_WQE_OP_MASK = 0x1f,
146};
147
93aa2187
WHX
148enum {
149 HNS_ROCE_SQ_OPCODE_SEND = 0x0,
150 HNS_ROCE_SQ_OPCODE_SEND_WITH_INV = 0x1,
151 HNS_ROCE_SQ_OPCODE_SEND_WITH_IMM = 0x2,
152 HNS_ROCE_SQ_OPCODE_RDMA_WRITE = 0x3,
153 HNS_ROCE_SQ_OPCODE_RDMA_WRITE_WITH_IMM = 0x4,
154 HNS_ROCE_SQ_OPCODE_RDMA_READ = 0x5,
155 HNS_ROCE_SQ_OPCODE_ATOMIC_COMP_AND_SWAP = 0x6,
156 HNS_ROCE_SQ_OPCODE_ATOMIC_FETCH_AND_ADD = 0x7,
157 HNS_ROCE_SQ_OPCODE_ATOMIC_MASK_COMP_AND_SWAP = 0x8,
158 HNS_ROCE_SQ_OPCODE_ATOMIC_MASK_FETCH_AND_ADD = 0x9,
159 HNS_ROCE_SQ_OPCODE_FAST_REG_WR = 0xa,
160 HNS_ROCE_SQ_OPCODE_LOCAL_INV = 0xb,
161 HNS_ROCE_SQ_OPCODE_BIND_MW = 0xc,
162};
163
164enum {
165 /* rq operations */
166 HNS_ROCE_V2_OPCODE_RDMA_WRITE_IMM = 0x0,
167 HNS_ROCE_V2_OPCODE_SEND = 0x1,
168 HNS_ROCE_V2_OPCODE_SEND_WITH_IMM = 0x2,
169 HNS_ROCE_V2_OPCODE_SEND_WITH_INV = 0x3,
170};
171
172enum {
2d407888
WHX
173 HNS_ROCE_V2_SQ_DB = 0x0,
174 HNS_ROCE_V2_RQ_DB = 0x1,
175 HNS_ROCE_V2_SRQ_DB = 0x2,
93aa2187
WHX
176 HNS_ROCE_V2_CQ_DB_PTR = 0x3,
177 HNS_ROCE_V2_CQ_DB_NTR = 0x4,
178};
179
180enum {
181 HNS_ROCE_CQE_V2_SUCCESS = 0x00,
182 HNS_ROCE_CQE_V2_LOCAL_LENGTH_ERR = 0x01,
183 HNS_ROCE_CQE_V2_LOCAL_QP_OP_ERR = 0x02,
184 HNS_ROCE_CQE_V2_LOCAL_PROT_ERR = 0x04,
185 HNS_ROCE_CQE_V2_WR_FLUSH_ERR = 0x05,
186 HNS_ROCE_CQE_V2_MW_BIND_ERR = 0x06,
187 HNS_ROCE_CQE_V2_BAD_RESP_ERR = 0x10,
188 HNS_ROCE_CQE_V2_LOCAL_ACCESS_ERR = 0x11,
189 HNS_ROCE_CQE_V2_REMOTE_INVAL_REQ_ERR = 0x12,
190 HNS_ROCE_CQE_V2_REMOTE_ACCESS_ERR = 0x13,
191 HNS_ROCE_CQE_V2_REMOTE_OP_ERR = 0x14,
192 HNS_ROCE_CQE_V2_TRANSPORT_RETRY_EXC_ERR = 0x15,
193 HNS_ROCE_CQE_V2_RNR_RETRY_EXC_ERR = 0x16,
194 HNS_ROCE_CQE_V2_REMOTE_ABORT_ERR = 0x22,
195
196 HNS_ROCE_V2_CQE_STATUS_MASK = 0xff,
197};
198
a04ff739
WHX
199/* CMQ command */
200enum hns_roce_opcode_type {
201 HNS_ROCE_OPC_QUERY_HW_VER = 0x8000,
202 HNS_ROCE_OPC_CFG_GLOBAL_PARAM = 0x8001,
203 HNS_ROCE_OPC_ALLOC_PF_RES = 0x8004,
204 HNS_ROCE_OPC_QUERY_PF_RES = 0x8400,
205 HNS_ROCE_OPC_ALLOC_VF_RES = 0x8401,
6b63597d 206 HNS_ROCE_OPC_CFG_EXT_LLM = 0x8403,
ded58ff9 207 HNS_ROCE_OPC_CFG_TMOUT_LLM = 0x8404,
4db134a3 208 HNS_ROCE_OPC_CFG_SGID_TB = 0x8500,
e8e8b652 209 HNS_ROCE_OPC_CFG_SMAC_TB = 0x8501,
a04ff739
WHX
210 HNS_ROCE_OPC_CFG_BT_ATTR = 0x8506,
211};
212
213enum {
214 TYPE_CRQ,
215 TYPE_CSQ,
216};
217
218enum hns_roce_cmd_return_status {
219 CMD_EXEC_SUCCESS = 0,
220 CMD_NO_AUTH = 1,
221 CMD_NOT_EXEC = 2,
222 CMD_QUEUE_FULL = 3,
223};
224
b5ff0f61
WHX
225enum hns_roce_sgid_type {
226 GID_TYPE_FLAG_ROCE_V1 = 0,
227 GID_TYPE_FLAG_ROCE_V2_IPV4,
228 GID_TYPE_FLAG_ROCE_V2_IPV6,
229};
230
93aa2187 231struct hns_roce_v2_cq_context {
8b9b8d14 232 __le32 byte_4_pg_ceqn;
233 __le32 byte_8_cqn;
234 __le32 cqe_cur_blk_addr;
235 __le32 byte_16_hop_addr;
236 __le32 cqe_nxt_blk_addr;
237 __le32 byte_24_pgsz_addr;
238 __le32 byte_28_cq_pi;
239 __le32 byte_32_cq_ci;
240 __le32 cqe_ba;
241 __le32 byte_40_cqe_ba;
242 __le32 byte_44_db_record;
243 __le32 db_record_addr;
244 __le32 byte_52_cqe_cnt;
245 __le32 byte_56_cqe_period_maxcnt;
246 __le32 cqe_report_timer;
247 __le32 byte_64_se_cqe_idx;
93aa2187 248};
a5073d60
YL
249#define HNS_ROCE_V2_CQ_DEFAULT_BURST_NUM 0x0
250#define HNS_ROCE_V2_CQ_DEFAULT_INTERVAL 0x0
251
93aa2187
WHX
252#define V2_CQC_BYTE_4_CQ_ST_S 0
253#define V2_CQC_BYTE_4_CQ_ST_M GENMASK(1, 0)
254
255#define V2_CQC_BYTE_4_POLL_S 2
256
257#define V2_CQC_BYTE_4_SE_S 3
258
259#define V2_CQC_BYTE_4_OVER_IGNORE_S 4
260
261#define V2_CQC_BYTE_4_COALESCE_S 5
262
263#define V2_CQC_BYTE_4_ARM_ST_S 6
264#define V2_CQC_BYTE_4_ARM_ST_M GENMASK(7, 6)
265
266#define V2_CQC_BYTE_4_SHIFT_S 8
267#define V2_CQC_BYTE_4_SHIFT_M GENMASK(12, 8)
268
269#define V2_CQC_BYTE_4_CMD_SN_S 13
270#define V2_CQC_BYTE_4_CMD_SN_M GENMASK(14, 13)
271
272#define V2_CQC_BYTE_4_CEQN_S 15
273#define V2_CQC_BYTE_4_CEQN_M GENMASK(23, 15)
274
275#define V2_CQC_BYTE_4_PAGE_OFFSET_S 24
276#define V2_CQC_BYTE_4_PAGE_OFFSET_M GENMASK(31, 24)
277
278#define V2_CQC_BYTE_8_CQN_S 0
279#define V2_CQC_BYTE_8_CQN_M GENMASK(23, 0)
280
281#define V2_CQC_BYTE_16_CQE_CUR_BLK_ADDR_S 0
282#define V2_CQC_BYTE_16_CQE_CUR_BLK_ADDR_M GENMASK(19, 0)
283
284#define V2_CQC_BYTE_16_CQE_HOP_NUM_S 30
285#define V2_CQC_BYTE_16_CQE_HOP_NUM_M GENMASK(31, 30)
286
287#define V2_CQC_BYTE_24_CQE_NXT_BLK_ADDR_S 0
288#define V2_CQC_BYTE_24_CQE_NXT_BLK_ADDR_M GENMASK(19, 0)
289
290#define V2_CQC_BYTE_24_CQE_BA_PG_SZ_S 24
291#define V2_CQC_BYTE_24_CQE_BA_PG_SZ_M GENMASK(27, 24)
292
293#define V2_CQC_BYTE_24_CQE_BUF_PG_SZ_S 28
294#define V2_CQC_BYTE_24_CQE_BUF_PG_SZ_M GENMASK(31, 28)
295
296#define V2_CQC_BYTE_28_CQ_PRODUCER_IDX_S 0
297#define V2_CQC_BYTE_28_CQ_PRODUCER_IDX_M GENMASK(23, 0)
298
299#define V2_CQC_BYTE_32_CQ_CONSUMER_IDX_S 0
300#define V2_CQC_BYTE_32_CQ_CONSUMER_IDX_M GENMASK(23, 0)
301
302#define V2_CQC_BYTE_40_CQE_BA_S 0
303#define V2_CQC_BYTE_40_CQE_BA_M GENMASK(28, 0)
304
305#define V2_CQC_BYTE_44_DB_RECORD_EN_S 0
306
9b44703d
YL
307#define V2_CQC_BYTE_44_DB_RECORD_ADDR_S 1
308#define V2_CQC_BYTE_44_DB_RECORD_ADDR_M GENMASK(31, 1)
309
93aa2187
WHX
310#define V2_CQC_BYTE_52_CQE_CNT_S 0
311#define V2_CQC_BYTE_52_CQE_CNT_M GENMASK(23, 0)
312
313#define V2_CQC_BYTE_56_CQ_MAX_CNT_S 0
314#define V2_CQC_BYTE_56_CQ_MAX_CNT_M GENMASK(15, 0)
315
316#define V2_CQC_BYTE_56_CQ_PERIOD_S 16
317#define V2_CQC_BYTE_56_CQ_PERIOD_M GENMASK(31, 16)
318
319#define V2_CQC_BYTE_64_SE_CQE_IDX_S 0
320#define V2_CQC_BYTE_64_SE_CQE_IDX_M GENMASK(23, 0)
321
926a01dc
WHX
322enum{
323 V2_MPT_ST_VALID = 0x1,
324};
325
326enum hns_roce_v2_qp_state {
327 HNS_ROCE_QP_ST_RST,
328 HNS_ROCE_QP_ST_INIT,
329 HNS_ROCE_QP_ST_RTR,
330 HNS_ROCE_QP_ST_RTS,
331 HNS_ROCE_QP_ST_SQER,
332 HNS_ROCE_QP_ST_SQD,
333 HNS_ROCE_QP_ST_ERR,
334 HNS_ROCE_QP_ST_SQ_DRAINING,
335 HNS_ROCE_QP_NUM_ST
336};
337
338struct hns_roce_v2_qp_context {
8b9b8d14 339 __le32 byte_4_sqpn_tst;
340 __le32 wqe_sge_ba;
341 __le32 byte_12_sq_hop;
342 __le32 byte_16_buf_ba_pg_sz;
343 __le32 byte_20_smac_sgid_idx;
344 __le32 byte_24_mtu_tc;
345 __le32 byte_28_at_fl;
926a01dc 346 u8 dgid[GID_LEN_V2];
8b9b8d14 347 __le32 dmac;
348 __le32 byte_52_udpspn_dmac;
349 __le32 byte_56_dqpn_err;
350 __le32 byte_60_qpst_mapid;
351 __le32 qkey_xrcd;
352 __le32 byte_68_rq_db;
353 __le32 rq_db_record_addr;
354 __le32 byte_76_srqn_op_en;
355 __le32 byte_80_rnr_rx_cqn;
356 __le32 byte_84_rq_ci_pi;
357 __le32 rq_cur_blk_addr;
358 __le32 byte_92_srq_info;
359 __le32 byte_96_rx_reqmsn;
360 __le32 rq_nxt_blk_addr;
361 __le32 byte_104_rq_sge;
362 __le32 byte_108_rx_reqepsn;
363 __le32 rq_rnr_timer;
364 __le32 rx_msg_len;
365 __le32 rx_rkey_pkt_info;
366 __le64 rx_va;
367 __le32 byte_132_trrl;
368 __le32 trrl_ba;
369 __le32 byte_140_raq;
370 __le32 byte_144_raq;
371 __le32 byte_148_raq;
372 __le32 byte_152_raq;
373 __le32 byte_156_raq;
374 __le32 byte_160_sq_ci_pi;
375 __le32 sq_cur_blk_addr;
376 __le32 byte_168_irrl_idx;
377 __le32 byte_172_sq_psn;
378 __le32 byte_176_msg_pktn;
379 __le32 sq_cur_sge_blk_addr;
380 __le32 byte_184_irrl_idx;
381 __le32 cur_sge_offset;
382 __le32 byte_192_ext_sge;
383 __le32 byte_196_sq_psn;
384 __le32 byte_200_sq_max;
385 __le32 irrl_ba;
386 __le32 byte_208_irrl;
387 __le32 byte_212_lsn;
388 __le32 sq_timer;
389 __le32 byte_220_retry_psn_msn;
390 __le32 byte_224_retry_msg;
391 __le32 rx_sq_cur_blk_addr;
392 __le32 byte_232_irrl_sge;
393 __le32 irrl_cur_sge_offset;
394 __le32 byte_240_irrl_tail;
395 __le32 byte_244_rnr_rxack;
396 __le32 byte_248_ack_psn;
397 __le32 byte_252_err_txcqn;
398 __le32 byte_256_sqflush_rqcqe;
926a01dc
WHX
399};
400
401#define V2_QPC_BYTE_4_TST_S 0
402#define V2_QPC_BYTE_4_TST_M GENMASK(2, 0)
403
404#define V2_QPC_BYTE_4_SGE_SHIFT_S 3
405#define V2_QPC_BYTE_4_SGE_SHIFT_M GENMASK(7, 3)
406
407#define V2_QPC_BYTE_4_SQPN_S 8
408#define V2_QPC_BYTE_4_SQPN_M GENMASK(31, 8)
409
410#define V2_QPC_BYTE_12_WQE_SGE_BA_S 0
411#define V2_QPC_BYTE_12_WQE_SGE_BA_M GENMASK(28, 0)
412
413#define V2_QPC_BYTE_12_SQ_HOP_NUM_S 29
414#define V2_QPC_BYTE_12_SQ_HOP_NUM_M GENMASK(30, 29)
415
416#define V2_QPC_BYTE_12_RSVD_LKEY_EN_S 31
417
418#define V2_QPC_BYTE_16_WQE_SGE_BA_PG_SZ_S 0
419#define V2_QPC_BYTE_16_WQE_SGE_BA_PG_SZ_M GENMASK(3, 0)
420
421#define V2_QPC_BYTE_16_WQE_SGE_BUF_PG_SZ_S 4
422#define V2_QPC_BYTE_16_WQE_SGE_BUF_PG_SZ_M GENMASK(7, 4)
423
424#define V2_QPC_BYTE_16_PD_S 8
425#define V2_QPC_BYTE_16_PD_M GENMASK(31, 8)
426
427#define V2_QPC_BYTE_20_RQ_HOP_NUM_S 0
428#define V2_QPC_BYTE_20_RQ_HOP_NUM_M GENMASK(1, 0)
429
430#define V2_QPC_BYTE_20_SGE_HOP_NUM_S 2
431#define V2_QPC_BYTE_20_SGE_HOP_NUM_M GENMASK(3, 2)
432
433#define V2_QPC_BYTE_20_RQWS_S 4
434#define V2_QPC_BYTE_20_RQWS_M GENMASK(7, 4)
435
436#define V2_QPC_BYTE_20_SQ_SHIFT_S 8
437#define V2_QPC_BYTE_20_SQ_SHIFT_M GENMASK(11, 8)
438
439#define V2_QPC_BYTE_20_RQ_SHIFT_S 12
440#define V2_QPC_BYTE_20_RQ_SHIFT_M GENMASK(15, 12)
441
442#define V2_QPC_BYTE_20_SGID_IDX_S 16
443#define V2_QPC_BYTE_20_SGID_IDX_M GENMASK(23, 16)
444
445#define V2_QPC_BYTE_20_SMAC_IDX_S 24
446#define V2_QPC_BYTE_20_SMAC_IDX_M GENMASK(31, 24)
447
448#define V2_QPC_BYTE_24_HOP_LIMIT_S 0
449#define V2_QPC_BYTE_24_HOP_LIMIT_M GENMASK(7, 0)
450
451#define V2_QPC_BYTE_24_TC_S 8
452#define V2_QPC_BYTE_24_TC_M GENMASK(15, 8)
453
454#define V2_QPC_BYTE_24_VLAN_IDX_S 16
455#define V2_QPC_BYTE_24_VLAN_IDX_M GENMASK(27, 16)
456
457#define V2_QPC_BYTE_24_MTU_S 28
458#define V2_QPC_BYTE_24_MTU_M GENMASK(31, 28)
459
460#define V2_QPC_BYTE_28_FL_S 0
461#define V2_QPC_BYTE_28_FL_M GENMASK(19, 0)
462
463#define V2_QPC_BYTE_28_SL_S 20
464#define V2_QPC_BYTE_28_SL_M GENMASK(23, 20)
465
466#define V2_QPC_BYTE_28_CNP_TX_FLAG_S 24
467
468#define V2_QPC_BYTE_28_CE_FLAG_S 25
469
470#define V2_QPC_BYTE_28_LBI_S 26
471
472#define V2_QPC_BYTE_28_AT_S 27
473#define V2_QPC_BYTE_28_AT_M GENMASK(31, 27)
474
475#define V2_QPC_BYTE_52_DMAC_S 0
476#define V2_QPC_BYTE_52_DMAC_M GENMASK(15, 0)
477
478#define V2_QPC_BYTE_52_UDPSPN_S 16
479#define V2_QPC_BYTE_52_UDPSPN_M GENMASK(31, 16)
480
481#define V2_QPC_BYTE_56_DQPN_S 0
482#define V2_QPC_BYTE_56_DQPN_M GENMASK(23, 0)
483
484#define V2_QPC_BYTE_56_SQ_TX_ERR_S 24
485#define V2_QPC_BYTE_56_SQ_RX_ERR_S 25
486#define V2_QPC_BYTE_56_RQ_TX_ERR_S 26
487#define V2_QPC_BYTE_56_RQ_RX_ERR_S 27
488
489#define V2_QPC_BYTE_56_LP_PKTN_INI_S 28
490#define V2_QPC_BYTE_56_LP_PKTN_INI_M GENMASK(31, 28)
491
492#define V2_QPC_BYTE_60_MAPID_S 0
493#define V2_QPC_BYTE_60_MAPID_M GENMASK(12, 0)
494
495#define V2_QPC_BYTE_60_INNER_MAP_IND_S 13
496
497#define V2_QPC_BYTE_60_SQ_MAP_IND_S 14
498
499#define V2_QPC_BYTE_60_RQ_MAP_IND_S 15
500
501#define V2_QPC_BYTE_60_TEMPID_S 16
502#define V2_QPC_BYTE_60_TEMPID_M GENMASK(22, 16)
503
504#define V2_QPC_BYTE_60_EXT_MAP_IND_S 23
505
506#define V2_QPC_BYTE_60_RTY_NUM_INI_BAK_S 24
507#define V2_QPC_BYTE_60_RTY_NUM_INI_BAK_M GENMASK(26, 24)
508
509#define V2_QPC_BYTE_60_SQ_RLS_IND_S 27
510
511#define V2_QPC_BYTE_60_SQ_EXT_IND_S 28
512
513#define V2_QPC_BYTE_60_QP_ST_S 29
514#define V2_QPC_BYTE_60_QP_ST_M GENMASK(31, 29)
515
516#define V2_QPC_BYTE_68_RQ_RECORD_EN_S 0
517
518#define V2_QPC_BYTE_68_RQ_DB_RECORD_ADDR_S 1
519#define V2_QPC_BYTE_68_RQ_DB_RECORD_ADDR_M GENMASK(31, 1)
520
521#define V2_QPC_BYTE_76_SRQN_S 0
522#define V2_QPC_BYTE_76_SRQN_M GENMASK(23, 0)
523
524#define V2_QPC_BYTE_76_SRQ_EN_S 24
525
526#define V2_QPC_BYTE_76_RRE_S 25
527
528#define V2_QPC_BYTE_76_RWE_S 26
529
530#define V2_QPC_BYTE_76_ATE_S 27
531
532#define V2_QPC_BYTE_76_RQIE_S 28
533
534#define V2_QPC_BYTE_80_RX_CQN_S 0
535#define V2_QPC_BYTE_80_RX_CQN_M GENMASK(23, 0)
536
537#define V2_QPC_BYTE_80_MIN_RNR_TIME_S 27
538#define V2_QPC_BYTE_80_MIN_RNR_TIME_M GENMASK(31, 27)
539
540#define V2_QPC_BYTE_84_RQ_PRODUCER_IDX_S 0
541#define V2_QPC_BYTE_84_RQ_PRODUCER_IDX_M GENMASK(15, 0)
542
543#define V2_QPC_BYTE_84_RQ_CONSUMER_IDX_S 16
544#define V2_QPC_BYTE_84_RQ_CONSUMER_IDX_M GENMASK(31, 16)
545
546#define V2_QPC_BYTE_92_RQ_CUR_BLK_ADDR_S 0
547#define V2_QPC_BYTE_92_RQ_CUR_BLK_ADDR_M GENMASK(19, 0)
548
549#define V2_QPC_BYTE_92_SRQ_INFO_S 20
550#define V2_QPC_BYTE_92_SRQ_INFO_M GENMASK(31, 20)
551
552#define V2_QPC_BYTE_96_RX_REQ_MSN_S 0
553#define V2_QPC_BYTE_96_RX_REQ_MSN_M GENMASK(23, 0)
554
555#define V2_QPC_BYTE_104_RQ_NXT_BLK_ADDR_S 0
556#define V2_QPC_BYTE_104_RQ_NXT_BLK_ADDR_M GENMASK(19, 0)
557
558#define V2_QPC_BYTE_104_RQ_CUR_WQE_SGE_NUM_S 24
559#define V2_QPC_BYTE_104_RQ_CUR_WQE_SGE_NUM_M GENMASK(31, 24)
560
561#define V2_QPC_BYTE_108_INV_CREDIT_S 0
562
563#define V2_QPC_BYTE_108_RX_REQ_PSN_ERR_S 3
564
565#define V2_QPC_BYTE_108_RX_REQ_LAST_OPTYPE_S 4
566#define V2_QPC_BYTE_108_RX_REQ_LAST_OPTYPE_M GENMASK(6, 4)
567
568#define V2_QPC_BYTE_108_RX_REQ_RNR_S 7
569
570#define V2_QPC_BYTE_108_RX_REQ_EPSN_S 8
571#define V2_QPC_BYTE_108_RX_REQ_EPSN_M GENMASK(31, 8)
572
573#define V2_QPC_BYTE_132_TRRL_HEAD_MAX_S 0
574#define V2_QPC_BYTE_132_TRRL_HEAD_MAX_M GENMASK(7, 0)
575
576#define V2_QPC_BYTE_132_TRRL_TAIL_MAX_S 8
577#define V2_QPC_BYTE_132_TRRL_TAIL_MAX_M GENMASK(15, 8)
578
579#define V2_QPC_BYTE_132_TRRL_BA_S 16
580#define V2_QPC_BYTE_132_TRRL_BA_M GENMASK(31, 16)
581
582#define V2_QPC_BYTE_140_TRRL_BA_S 0
583#define V2_QPC_BYTE_140_TRRL_BA_M GENMASK(11, 0)
584
585#define V2_QPC_BYTE_140_RR_MAX_S 12
586#define V2_QPC_BYTE_140_RR_MAX_M GENMASK(14, 12)
587
588#define V2_QPC_BYTE_140_RSVD_RAQ_MAP_S 15
589
590#define V2_QPC_BYTE_140_RAQ_TRRL_HEAD_S 16
591#define V2_QPC_BYTE_140_RAQ_TRRL_HEAD_M GENMASK(23, 16)
592
593#define V2_QPC_BYTE_140_RAQ_TRRL_TAIL_S 24
594#define V2_QPC_BYTE_140_RAQ_TRRL_TAIL_M GENMASK(31, 24)
595
596#define V2_QPC_BYTE_144_RAQ_RTY_INI_PSN_S 0
597#define V2_QPC_BYTE_144_RAQ_RTY_INI_PSN_M GENMASK(23, 0)
598
599#define V2_QPC_BYTE_144_RAQ_RTY_INI_IND_S 24
600
601#define V2_QPC_BYTE_144_RAQ_CREDIT_S 25
602#define V2_QPC_BYTE_144_RAQ_CREDIT_M GENMASK(29, 25)
603
604#define V2_QPC_BYTE_144_RESP_RTY_FLG_S 31
605
606#define V2_QPC_BYTE_148_RQ_MSN_S 0
607#define V2_QPC_BYTE_148_RQ_MSN_M GENMASK(23, 0)
608
609#define V2_QPC_BYTE_148_RAQ_SYNDROME_S 24
610#define V2_QPC_BYTE_148_RAQ_SYNDROME_M GENMASK(31, 24)
611
612#define V2_QPC_BYTE_152_RAQ_PSN_S 8
613#define V2_QPC_BYTE_152_RAQ_PSN_M GENMASK(31, 8)
614
615#define V2_QPC_BYTE_152_RAQ_TRRL_RTY_HEAD_S 24
616#define V2_QPC_BYTE_152_RAQ_TRRL_RTY_HEAD_M GENMASK(31, 24)
617
618#define V2_QPC_BYTE_156_RAQ_USE_PKTN_S 0
619#define V2_QPC_BYTE_156_RAQ_USE_PKTN_M GENMASK(23, 0)
620
621#define V2_QPC_BYTE_160_SQ_PRODUCER_IDX_S 0
622#define V2_QPC_BYTE_160_SQ_PRODUCER_IDX_M GENMASK(15, 0)
623
624#define V2_QPC_BYTE_160_SQ_CONSUMER_IDX_S 16
625#define V2_QPC_BYTE_160_SQ_CONSUMER_IDX_M GENMASK(31, 16)
626
627#define V2_QPC_BYTE_168_SQ_CUR_BLK_ADDR_S 0
628#define V2_QPC_BYTE_168_SQ_CUR_BLK_ADDR_M GENMASK(19, 0)
629
630#define V2_QPC_BYTE_168_MSG_RTY_LP_FLG_S 20
631
b5fddb7c 632#define V2_QPC_BYTE_168_SQ_INVLD_FLG_S 21
633
634#define V2_QPC_BYTE_168_LP_SGEN_INI_S 22
635#define V2_QPC_BYTE_168_LP_SGEN_INI_M GENMASK(23, 22)
926a01dc
WHX
636
637#define V2_QPC_BYTE_168_SQ_SHIFT_BAK_S 24
638#define V2_QPC_BYTE_168_SQ_SHIFT_BAK_M GENMASK(27, 24)
639
640#define V2_QPC_BYTE_168_IRRL_IDX_LSB_S 28
641#define V2_QPC_BYTE_168_IRRL_IDX_LSB_M GENMASK(31, 28)
642
643#define V2_QPC_BYTE_172_ACK_REQ_FREQ_S 0
644#define V2_QPC_BYTE_172_ACK_REQ_FREQ_M GENMASK(5, 0)
645
646#define V2_QPC_BYTE_172_MSG_RNR_FLG_S 6
647
648#define V2_QPC_BYTE_172_FRE_S 7
649
650#define V2_QPC_BYTE_172_SQ_CUR_PSN_S 8
651#define V2_QPC_BYTE_172_SQ_CUR_PSN_M GENMASK(31, 8)
652
653#define V2_QPC_BYTE_176_MSG_USE_PKTN_S 0
654#define V2_QPC_BYTE_176_MSG_USE_PKTN_M GENMASK(23, 0)
655
656#define V2_QPC_BYTE_176_IRRL_HEAD_PRE_S 24
657#define V2_QPC_BYTE_176_IRRL_HEAD_PRE_M GENMASK(31, 24)
658
659#define V2_QPC_BYTE_184_SQ_CUR_SGE_BLK_ADDR_S 0
660#define V2_QPC_BYTE_184_SQ_CUR_SGE_BLK_ADDR_M GENMASK(19, 0)
661
662#define V2_QPC_BYTE_184_IRRL_IDX_MSB_S 20
663#define V2_QPC_BYTE_184_IRRL_IDX_MSB_M GENMASK(31, 20)
664
665#define V2_QPC_BYTE_192_CUR_SGE_IDX_S 0
666#define V2_QPC_BYTE_192_CUR_SGE_IDX_M GENMASK(23, 0)
667
668#define V2_QPC_BYTE_192_EXT_SGE_NUM_LEFT_S 24
669#define V2_QPC_BYTE_192_EXT_SGE_NUM_LEFT_M GENMASK(31, 24)
670
671#define V2_QPC_BYTE_196_IRRL_HEAD_S 0
672#define V2_QPC_BYTE_196_IRRL_HEAD_M GENMASK(7, 0)
673
674#define V2_QPC_BYTE_196_SQ_MAX_PSN_S 8
675#define V2_QPC_BYTE_196_SQ_MAX_PSN_M GENMASK(31, 8)
676
677#define V2_QPC_BYTE_200_SQ_MAX_IDX_S 0
678#define V2_QPC_BYTE_200_SQ_MAX_IDX_M GENMASK(15, 0)
679
680#define V2_QPC_BYTE_200_LCL_OPERATED_CNT_S 16
681#define V2_QPC_BYTE_200_LCL_OPERATED_CNT_M GENMASK(31, 16)
682
683#define V2_QPC_BYTE_208_IRRL_BA_S 0
684#define V2_QPC_BYTE_208_IRRL_BA_M GENMASK(25, 0)
685
686#define V2_QPC_BYTE_208_PKT_RNR_FLG_S 26
687
688#define V2_QPC_BYTE_208_PKT_RTY_FLG_S 27
689
690#define V2_QPC_BYTE_208_RMT_E2E_S 28
691
692#define V2_QPC_BYTE_208_SR_MAX_S 29
693#define V2_QPC_BYTE_208_SR_MAX_M GENMASK(31, 29)
694
695#define V2_QPC_BYTE_212_LSN_S 0
696#define V2_QPC_BYTE_212_LSN_M GENMASK(23, 0)
697
698#define V2_QPC_BYTE_212_RETRY_NUM_INIT_S 24
699#define V2_QPC_BYTE_212_RETRY_NUM_INIT_M GENMASK(26, 24)
700
701#define V2_QPC_BYTE_212_CHECK_FLG_S 27
702#define V2_QPC_BYTE_212_CHECK_FLG_M GENMASK(28, 27)
703
704#define V2_QPC_BYTE_212_RETRY_CNT_S 29
705#define V2_QPC_BYTE_212_RETRY_CNT_M GENMASK(31, 29)
706
707#define V2_QPC_BYTE_220_RETRY_MSG_MSN_S 0
708#define V2_QPC_BYTE_220_RETRY_MSG_MSN_M GENMASK(15, 0)
709
710#define V2_QPC_BYTE_220_RETRY_MSG_PSN_S 16
711#define V2_QPC_BYTE_220_RETRY_MSG_PSN_M GENMASK(31, 16)
712
713#define V2_QPC_BYTE_224_RETRY_MSG_PSN_S 0
714#define V2_QPC_BYTE_224_RETRY_MSG_PSN_M GENMASK(7, 0)
715
716#define V2_QPC_BYTE_224_RETRY_MSG_FPKT_PSN_S 8
717#define V2_QPC_BYTE_224_RETRY_MSG_FPKT_PSN_M GENMASK(31, 8)
718
719#define V2_QPC_BYTE_232_RX_SQ_CUR_BLK_ADDR_S 0
720#define V2_QPC_BYTE_232_RX_SQ_CUR_BLK_ADDR_M GENMASK(19, 0)
721
722#define V2_QPC_BYTE_232_IRRL_SGE_IDX_S 20
723#define V2_QPC_BYTE_232_IRRL_SGE_IDX_M GENMASK(28, 20)
724
725#define V2_QPC_BYTE_240_IRRL_TAIL_REAL_S 0
726#define V2_QPC_BYTE_240_IRRL_TAIL_REAL_M GENMASK(7, 0)
727
728#define V2_QPC_BYTE_240_IRRL_TAIL_RD_S 8
729#define V2_QPC_BYTE_240_IRRL_TAIL_RD_M GENMASK(15, 8)
730
731#define V2_QPC_BYTE_240_RX_ACK_MSN_S 16
732#define V2_QPC_BYTE_240_RX_ACK_MSN_M GENMASK(31, 16)
733
734#define V2_QPC_BYTE_244_RX_ACK_EPSN_S 0
735#define V2_QPC_BYTE_244_RX_ACK_EPSN_M GENMASK(23, 0)
736
737#define V2_QPC_BYTE_244_RNR_NUM_INIT_S 24
738#define V2_QPC_BYTE_244_RNR_NUM_INIT_M GENMASK(26, 24)
739
740#define V2_QPC_BYTE_244_RNR_CNT_S 27
741#define V2_QPC_BYTE_244_RNR_CNT_M GENMASK(29, 27)
742
743#define V2_QPC_BYTE_248_IRRL_PSN_S 0
744#define V2_QPC_BYTE_248_IRRL_PSN_M GENMASK(23, 0)
745
746#define V2_QPC_BYTE_248_ACK_PSN_ERR_S 24
747
748#define V2_QPC_BYTE_248_ACK_LAST_OPTYPE_S 25
749#define V2_QPC_BYTE_248_ACK_LAST_OPTYPE_M GENMASK(26, 25)
750
751#define V2_QPC_BYTE_248_IRRL_PSN_VLD_S 27
752
753#define V2_QPC_BYTE_248_RNR_RETRY_FLAG_S 28
754
755#define V2_QPC_BYTE_248_CQ_ERR_IND_S 31
756
757#define V2_QPC_BYTE_252_TX_CQN_S 0
758#define V2_QPC_BYTE_252_TX_CQN_M GENMASK(23, 0)
759
760#define V2_QPC_BYTE_252_SIG_TYPE_S 24
761
762#define V2_QPC_BYTE_252_ERR_TYPE_S 25
763#define V2_QPC_BYTE_252_ERR_TYPE_M GENMASK(31, 25)
764
765#define V2_QPC_BYTE_256_RQ_CQE_IDX_S 0
766#define V2_QPC_BYTE_256_RQ_CQE_IDX_M GENMASK(15, 0)
767
768#define V2_QPC_BYTE_256_SQ_FLUSH_IDX_S 16
769#define V2_QPC_BYTE_256_SQ_FLUSH_IDX_M GENMASK(31, 16)
770
93aa2187 771struct hns_roce_v2_cqe {
8b9b8d14 772 __le32 byte_4;
ccb8a29e
JG
773 union {
774 __le32 rkey;
775 __be32 immtdata;
776 };
8b9b8d14 777 __le32 byte_12;
778 __le32 byte_16;
779 __le32 byte_cnt;
2eade675 780 u8 smac[4];
8b9b8d14 781 __le32 byte_28;
782 __le32 byte_32;
93aa2187
WHX
783};
784
785#define V2_CQE_BYTE_4_OPCODE_S 0
786#define V2_CQE_BYTE_4_OPCODE_M GENMASK(4, 0)
787
788#define V2_CQE_BYTE_4_RQ_INLINE_S 5
789
790#define V2_CQE_BYTE_4_S_R_S 6
791
792#define V2_CQE_BYTE_4_OWNER_S 7
793
794#define V2_CQE_BYTE_4_STATUS_S 8
795#define V2_CQE_BYTE_4_STATUS_M GENMASK(15, 8)
796
797#define V2_CQE_BYTE_4_WQE_INDX_S 16
798#define V2_CQE_BYTE_4_WQE_INDX_M GENMASK(31, 16)
799
800#define V2_CQE_BYTE_12_XRC_SRQN_S 0
801#define V2_CQE_BYTE_12_XRC_SRQN_M GENMASK(23, 0)
802
803#define V2_CQE_BYTE_16_LCL_QPN_S 0
804#define V2_CQE_BYTE_16_LCL_QPN_M GENMASK(23, 0)
805
806#define V2_CQE_BYTE_16_SUB_STATUS_S 24
807#define V2_CQE_BYTE_16_SUB_STATUS_M GENMASK(31, 24)
808
809#define V2_CQE_BYTE_28_SMAC_4_S 0
810#define V2_CQE_BYTE_28_SMAC_4_M GENMASK(7, 0)
811
812#define V2_CQE_BYTE_28_SMAC_5_S 8
813#define V2_CQE_BYTE_28_SMAC_5_M GENMASK(15, 8)
814
815#define V2_CQE_BYTE_28_PORT_TYPE_S 16
816#define V2_CQE_BYTE_28_PORT_TYPE_M GENMASK(17, 16)
817
818#define V2_CQE_BYTE_32_RMT_QPN_S 0
819#define V2_CQE_BYTE_32_RMT_QPN_M GENMASK(23, 0)
820
821#define V2_CQE_BYTE_32_SL_S 24
822#define V2_CQE_BYTE_32_SL_M GENMASK(26, 24)
823
824#define V2_CQE_BYTE_32_PORTN_S 27
825#define V2_CQE_BYTE_32_PORTN_M GENMASK(29, 27)
826
827#define V2_CQE_BYTE_32_GRH_S 30
828
829#define V2_CQE_BYTE_32_LPK_S 31
830
3958cc56
WHX
831struct hns_roce_v2_mpt_entry {
832 __le32 byte_4_pd_hop_st;
833 __le32 byte_8_mw_cnt_en;
834 __le32 byte_12_mw_pa;
835 __le32 bound_lkey;
836 __le32 len_l;
837 __le32 len_h;
838 __le32 lkey;
839 __le32 va_l;
840 __le32 va_h;
841 __le32 pbl_size;
842 __le32 pbl_ba_l;
843 __le32 byte_48_mode_ba;
844 __le32 pa0_l;
845 __le32 byte_56_pa0_h;
846 __le32 pa1_l;
847 __le32 byte_64_buf_pa1;
848};
849
850#define V2_MPT_BYTE_4_MPT_ST_S 0
851#define V2_MPT_BYTE_4_MPT_ST_M GENMASK(1, 0)
852
853#define V2_MPT_BYTE_4_PBL_HOP_NUM_S 2
854#define V2_MPT_BYTE_4_PBL_HOP_NUM_M GENMASK(3, 2)
855
856#define V2_MPT_BYTE_4_PBL_BA_PG_SZ_S 4
857#define V2_MPT_BYTE_4_PBL_BA_PG_SZ_M GENMASK(7, 4)
858
859#define V2_MPT_BYTE_4_PD_S 8
860#define V2_MPT_BYTE_4_PD_M GENMASK(31, 8)
861
862#define V2_MPT_BYTE_8_RA_EN_S 0
863
864#define V2_MPT_BYTE_8_R_INV_EN_S 1
865
866#define V2_MPT_BYTE_8_L_INV_EN_S 2
867
868#define V2_MPT_BYTE_8_BIND_EN_S 3
869
870#define V2_MPT_BYTE_8_ATOMIC_EN_S 4
871
872#define V2_MPT_BYTE_8_RR_EN_S 5
873
874#define V2_MPT_BYTE_8_RW_EN_S 6
875
876#define V2_MPT_BYTE_8_LW_EN_S 7
877
878#define V2_MPT_BYTE_12_PA_S 1
879
880#define V2_MPT_BYTE_12_INNER_PA_VLD_S 7
881
882#define V2_MPT_BYTE_12_MW_BIND_QPN_S 8
883#define V2_MPT_BYTE_12_MW_BIND_QPN_M GENMASK(31, 8)
884
885#define V2_MPT_BYTE_48_PBL_BA_H_S 0
886#define V2_MPT_BYTE_48_PBL_BA_H_M GENMASK(28, 0)
887
888#define V2_MPT_BYTE_48_BLK_MODE_S 29
889
890#define V2_MPT_BYTE_56_PA0_H_S 0
891#define V2_MPT_BYTE_56_PA0_H_M GENMASK(25, 0)
892
893#define V2_MPT_BYTE_64_PA1_H_S 0
894#define V2_MPT_BYTE_64_PA1_H_M GENMASK(25, 0)
895
896#define V2_MPT_BYTE_64_PBL_BUF_PG_SZ_S 28
897#define V2_MPT_BYTE_64_PBL_BUF_PG_SZ_M GENMASK(31, 28)
898
93aa2187
WHX
899#define V2_DB_BYTE_4_TAG_S 0
900#define V2_DB_BYTE_4_TAG_M GENMASK(23, 0)
901
902#define V2_DB_BYTE_4_CMD_S 24
903#define V2_DB_BYTE_4_CMD_M GENMASK(27, 24)
904
cc3391cb 905#define V2_DB_PARAMETER_IDX_S 0
906#define V2_DB_PARAMETER_IDX_M GENMASK(15, 0)
2d407888
WHX
907
908#define V2_DB_PARAMETER_SL_S 16
909#define V2_DB_PARAMETER_SL_M GENMASK(18, 16)
910
93aa2187 911struct hns_roce_v2_cq_db {
8b9b8d14 912 __le32 byte_4;
913 __le32 parameter;
93aa2187
WHX
914};
915
916#define V2_CQ_DB_BYTE_4_TAG_S 0
917#define V2_CQ_DB_BYTE_4_TAG_M GENMASK(23, 0)
918
919#define V2_CQ_DB_BYTE_4_CMD_S 24
920#define V2_CQ_DB_BYTE_4_CMD_M GENMASK(27, 24)
921
922#define V2_CQ_DB_PARAMETER_CONS_IDX_S 0
923#define V2_CQ_DB_PARAMETER_CONS_IDX_M GENMASK(23, 0)
924
925#define V2_CQ_DB_PARAMETER_CMD_SN_S 25
926#define V2_CQ_DB_PARAMETER_CMD_SN_M GENMASK(26, 25)
927
928#define V2_CQ_DB_PARAMETER_NOTIFY_S 24
929
7bdee415 930struct hns_roce_v2_ud_send_wqe {
8b9b8d14 931 __le32 byte_4;
932 __le32 msg_len;
933 __be32 immtdata;
934 __le32 byte_16;
935 __le32 byte_20;
936 __le32 byte_24;
937 __le32 qkey;
938 __le32 byte_32;
939 __le32 byte_36;
940 __le32 byte_40;
941 __le32 dmac;
942 __le32 byte_48;
7bdee415 943 u8 dgid[GID_LEN_V2];
944
945};
946#define V2_UD_SEND_WQE_BYTE_4_OPCODE_S 0
947#define V2_UD_SEND_WQE_BYTE_4_OPCODE_M GENMASK(4, 0)
948
949#define V2_UD_SEND_WQE_BYTE_4_OWNER_S 7
950
951#define V2_UD_SEND_WQE_BYTE_4_CQE_S 8
952
953#define V2_UD_SEND_WQE_BYTE_4_SE_S 11
954
955#define V2_UD_SEND_WQE_BYTE_16_PD_S 0
956#define V2_UD_SEND_WQE_BYTE_16_PD_M GENMASK(23, 0)
957
958#define V2_UD_SEND_WQE_BYTE_16_SGE_NUM_S 24
959#define V2_UD_SEND_WQE_BYTE_16_SGE_NUM_M GENMASK(31, 24)
960
961#define V2_UD_SEND_WQE_BYTE_20_MSG_START_SGE_IDX_S 0
962#define V2_UD_SEND_WQE_BYTE_20_MSG_START_SGE_IDX_M GENMASK(23, 0)
963
964#define V2_UD_SEND_WQE_BYTE_24_UDPSPN_S 16
965#define V2_UD_SEND_WQE_BYTE_24_UDPSPN_M GENMASK(31, 16)
966
967#define V2_UD_SEND_WQE_BYTE_32_DQPN_S 0
968#define V2_UD_SEND_WQE_BYTE_32_DQPN_M GENMASK(23, 0)
969
970#define V2_UD_SEND_WQE_BYTE_36_VLAN_S 0
971#define V2_UD_SEND_WQE_BYTE_36_VLAN_M GENMASK(15, 0)
972
973#define V2_UD_SEND_WQE_BYTE_36_HOPLIMIT_S 16
974#define V2_UD_SEND_WQE_BYTE_36_HOPLIMIT_M GENMASK(23, 16)
975
976#define V2_UD_SEND_WQE_BYTE_36_TCLASS_S 24
977#define V2_UD_SEND_WQE_BYTE_36_TCLASS_M GENMASK(31, 24)
978
979#define V2_UD_SEND_WQE_BYTE_40_FLOW_LABEL_S 0
980#define V2_UD_SEND_WQE_BYTE_40_FLOW_LABEL_M GENMASK(19, 0)
981
982#define V2_UD_SEND_WQE_BYTE_40_SL_S 20
983#define V2_UD_SEND_WQE_BYTE_40_SL_M GENMASK(23, 20)
984
985#define V2_UD_SEND_WQE_BYTE_40_PORTN_S 24
986#define V2_UD_SEND_WQE_BYTE_40_PORTN_M GENMASK(26, 24)
987
988#define V2_UD_SEND_WQE_BYTE_40_LBI_S 31
989
990#define V2_UD_SEND_WQE_DMAC_0_S 0
991#define V2_UD_SEND_WQE_DMAC_0_M GENMASK(7, 0)
992
993#define V2_UD_SEND_WQE_DMAC_1_S 8
994#define V2_UD_SEND_WQE_DMAC_1_M GENMASK(15, 8)
995
996#define V2_UD_SEND_WQE_DMAC_2_S 16
997#define V2_UD_SEND_WQE_DMAC_2_M GENMASK(23, 16)
998
999#define V2_UD_SEND_WQE_DMAC_3_S 24
1000#define V2_UD_SEND_WQE_DMAC_3_M GENMASK(31, 24)
1001
1002#define V2_UD_SEND_WQE_BYTE_48_DMAC_4_S 0
1003#define V2_UD_SEND_WQE_BYTE_48_DMAC_4_M GENMASK(7, 0)
1004
1005#define V2_UD_SEND_WQE_BYTE_48_DMAC_5_S 8
1006#define V2_UD_SEND_WQE_BYTE_48_DMAC_5_M GENMASK(15, 8)
1007
1008#define V2_UD_SEND_WQE_BYTE_48_SGID_INDX_S 16
1009#define V2_UD_SEND_WQE_BYTE_48_SGID_INDX_M GENMASK(23, 16)
1010
1011#define V2_UD_SEND_WQE_BYTE_48_SMAC_INDX_S 24
1012#define V2_UD_SEND_WQE_BYTE_48_SMAC_INDX_M GENMASK(31, 24)
1013
2d407888 1014struct hns_roce_v2_rc_send_wqe {
8b9b8d14 1015 __le32 byte_4;
1016 __le32 msg_len;
1017 union {
1018 __le32 inv_key;
1019 __be32 immtdata;
1020 };
1021 __le32 byte_16;
1022 __le32 byte_20;
1023 __le32 rkey;
1024 __le64 va;
2d407888
WHX
1025};
1026
1027#define V2_RC_SEND_WQE_BYTE_4_OPCODE_S 0
1028#define V2_RC_SEND_WQE_BYTE_4_OPCODE_M GENMASK(4, 0)
1029
1030#define V2_RC_SEND_WQE_BYTE_4_OWNER_S 7
1031
1032#define V2_RC_SEND_WQE_BYTE_4_CQE_S 8
1033
1034#define V2_RC_SEND_WQE_BYTE_4_FENCE_S 9
1035
1036#define V2_RC_SEND_WQE_BYTE_4_SO_S 10
1037
1038#define V2_RC_SEND_WQE_BYTE_4_SE_S 11
1039
1040#define V2_RC_SEND_WQE_BYTE_4_INLINE_S 12
1041
1042#define V2_RC_SEND_WQE_BYTE_16_XRC_SRQN_S 0
1043#define V2_RC_SEND_WQE_BYTE_16_XRC_SRQN_M GENMASK(23, 0)
1044
1045#define V2_RC_SEND_WQE_BYTE_16_SGE_NUM_S 24
1046#define V2_RC_SEND_WQE_BYTE_16_SGE_NUM_M GENMASK(31, 24)
1047
1048#define V2_RC_SEND_WQE_BYTE_20_MSG_START_SGE_IDX_S 0
1049#define V2_RC_SEND_WQE_BYTE_20_MSG_START_SGE_IDX_M GENMASK(23, 0)
1050
1051struct hns_roce_v2_wqe_data_seg {
8b9b8d14 1052 __le32 len;
1053 __le32 lkey;
1054 __le64 addr;
2d407888
WHX
1055};
1056
1057struct hns_roce_v2_db {
8b9b8d14 1058 __le32 byte_4;
1059 __le32 parameter;
2d407888
WHX
1060};
1061
cfc85f3e
WHX
1062struct hns_roce_query_version {
1063 __le16 rocee_vendor_id;
1064 __le16 rocee_hw_version;
1065 __le32 rsv[5];
1066};
1067
6b63597d 1068struct hns_roce_cfg_llm_a {
1069 __le32 base_addr_l;
1070 __le32 base_addr_h;
1071 __le32 depth_pgsz_init_en;
1072 __le32 head_ba_l;
1073 __le32 head_ba_h_nxtptr;
1074 __le32 head_ptr;
1075};
1076
1077#define CFG_LLM_QUE_DEPTH_S 0
1078#define CFG_LLM_QUE_DEPTH_M GENMASK(12, 0)
1079
1080#define CFG_LLM_QUE_PGSZ_S 16
1081#define CFG_LLM_QUE_PGSZ_M GENMASK(19, 16)
1082
1083#define CFG_LLM_INIT_EN_S 20
1084#define CFG_LLM_INIT_EN_M GENMASK(20, 20)
1085
1086#define CFG_LLM_HEAD_PTR_S 0
1087#define CFG_LLM_HEAD_PTR_M GENMASK(11, 0)
1088
1089struct hns_roce_cfg_llm_b {
1090 __le32 tail_ba_l;
1091 __le32 tail_ba_h;
1092 __le32 tail_ptr;
1093 __le32 rsv[3];
1094};
1095
1096#define CFG_LLM_TAIL_BA_H_S 0
1097#define CFG_LLM_TAIL_BA_H_M GENMASK(19, 0)
1098
1099#define CFG_LLM_TAIL_PTR_S 0
1100#define CFG_LLM_TAIL_PTR_M GENMASK(11, 0)
1101
cfc85f3e
WHX
1102struct hns_roce_cfg_global_param {
1103 __le32 time_cfg_udp_port;
1104 __le32 rsv[5];
1105};
1106
1107#define CFG_GLOBAL_PARAM_DATA_0_ROCEE_TIME_1US_CFG_S 0
1108#define CFG_GLOBAL_PARAM_DATA_0_ROCEE_TIME_1US_CFG_M GENMASK(9, 0)
1109
1110#define CFG_GLOBAL_PARAM_DATA_0_ROCEE_UDP_PORT_S 16
1111#define CFG_GLOBAL_PARAM_DATA_0_ROCEE_UDP_PORT_M GENMASK(31, 16)
1112
6b63597d 1113struct hns_roce_pf_res_a {
cfc85f3e
WHX
1114 __le32 rsv;
1115 __le32 qpc_bt_idx_num;
1116 __le32 srqc_bt_idx_num;
1117 __le32 cqc_bt_idx_num;
1118 __le32 mpt_bt_idx_num;
1119 __le32 eqc_bt_idx_num;
1120};
1121
1122#define PF_RES_DATA_1_PF_QPC_BT_IDX_S 0
1123#define PF_RES_DATA_1_PF_QPC_BT_IDX_M GENMASK(10, 0)
1124
1125#define PF_RES_DATA_1_PF_QPC_BT_NUM_S 16
1126#define PF_RES_DATA_1_PF_QPC_BT_NUM_M GENMASK(27, 16)
1127
1128#define PF_RES_DATA_2_PF_SRQC_BT_IDX_S 0
1129#define PF_RES_DATA_2_PF_SRQC_BT_IDX_M GENMASK(8, 0)
1130
1131#define PF_RES_DATA_2_PF_SRQC_BT_NUM_S 16
1132#define PF_RES_DATA_2_PF_SRQC_BT_NUM_M GENMASK(25, 16)
1133
1134#define PF_RES_DATA_3_PF_CQC_BT_IDX_S 0
1135#define PF_RES_DATA_3_PF_CQC_BT_IDX_M GENMASK(8, 0)
1136
1137#define PF_RES_DATA_3_PF_CQC_BT_NUM_S 16
1138#define PF_RES_DATA_3_PF_CQC_BT_NUM_M GENMASK(25, 16)
1139
1140#define PF_RES_DATA_4_PF_MPT_BT_IDX_S 0
1141#define PF_RES_DATA_4_PF_MPT_BT_IDX_M GENMASK(8, 0)
1142
1143#define PF_RES_DATA_4_PF_MPT_BT_NUM_S 16
1144#define PF_RES_DATA_4_PF_MPT_BT_NUM_M GENMASK(25, 16)
1145
1146#define PF_RES_DATA_5_PF_EQC_BT_IDX_S 0
1147#define PF_RES_DATA_5_PF_EQC_BT_IDX_M GENMASK(8, 0)
1148
1149#define PF_RES_DATA_5_PF_EQC_BT_NUM_S 16
1150#define PF_RES_DATA_5_PF_EQC_BT_NUM_M GENMASK(25, 16)
1151
6b63597d 1152struct hns_roce_pf_res_b {
1153 __le32 rsv0;
1154 __le32 smac_idx_num;
1155 __le32 sgid_idx_num;
1156 __le32 qid_idx_sl_num;
1157 __le32 rsv[2];
1158};
1159
1160#define PF_RES_DATA_1_PF_SMAC_IDX_S 0
1161#define PF_RES_DATA_1_PF_SMAC_IDX_M GENMASK(7, 0)
1162
1163#define PF_RES_DATA_1_PF_SMAC_NUM_S 8
1164#define PF_RES_DATA_1_PF_SMAC_NUM_M GENMASK(16, 8)
1165
1166#define PF_RES_DATA_2_PF_SGID_IDX_S 0
1167#define PF_RES_DATA_2_PF_SGID_IDX_M GENMASK(7, 0)
1168
1169#define PF_RES_DATA_2_PF_SGID_NUM_S 8
1170#define PF_RES_DATA_2_PF_SGID_NUM_M GENMASK(16, 8)
1171
1172#define PF_RES_DATA_3_PF_QID_IDX_S 0
1173#define PF_RES_DATA_3_PF_QID_IDX_M GENMASK(9, 0)
1174
1175#define PF_RES_DATA_3_PF_SL_NUM_S 16
1176#define PF_RES_DATA_3_PF_SL_NUM_M GENMASK(26, 16)
1177
cfc85f3e 1178struct hns_roce_vf_res_a {
8b9b8d14 1179 __le32 vf_id;
1180 __le32 vf_qpc_bt_idx_num;
1181 __le32 vf_srqc_bt_idx_num;
1182 __le32 vf_cqc_bt_idx_num;
1183 __le32 vf_mpt_bt_idx_num;
1184 __le32 vf_eqc_bt_idx_num;
cfc85f3e
WHX
1185};
1186
1187#define VF_RES_A_DATA_1_VF_QPC_BT_IDX_S 0
1188#define VF_RES_A_DATA_1_VF_QPC_BT_IDX_M GENMASK(10, 0)
1189
1190#define VF_RES_A_DATA_1_VF_QPC_BT_NUM_S 16
1191#define VF_RES_A_DATA_1_VF_QPC_BT_NUM_M GENMASK(27, 16)
1192
1193#define VF_RES_A_DATA_2_VF_SRQC_BT_IDX_S 0
1194#define VF_RES_A_DATA_2_VF_SRQC_BT_IDX_M GENMASK(8, 0)
1195
1196#define VF_RES_A_DATA_2_VF_SRQC_BT_NUM_S 16
1197#define VF_RES_A_DATA_2_VF_SRQC_BT_NUM_M GENMASK(25, 16)
1198
1199#define VF_RES_A_DATA_3_VF_CQC_BT_IDX_S 0
1200#define VF_RES_A_DATA_3_VF_CQC_BT_IDX_M GENMASK(8, 0)
1201
1202#define VF_RES_A_DATA_3_VF_CQC_BT_NUM_S 16
1203#define VF_RES_A_DATA_3_VF_CQC_BT_NUM_M GENMASK(25, 16)
1204
1205#define VF_RES_A_DATA_4_VF_MPT_BT_IDX_S 0
1206#define VF_RES_A_DATA_4_VF_MPT_BT_IDX_M GENMASK(8, 0)
1207
1208#define VF_RES_A_DATA_4_VF_MPT_BT_NUM_S 16
1209#define VF_RES_A_DATA_4_VF_MPT_BT_NUM_M GENMASK(25, 16)
1210
1211#define VF_RES_A_DATA_5_VF_EQC_IDX_S 0
1212#define VF_RES_A_DATA_5_VF_EQC_IDX_M GENMASK(8, 0)
1213
1214#define VF_RES_A_DATA_5_VF_EQC_NUM_S 16
1215#define VF_RES_A_DATA_5_VF_EQC_NUM_M GENMASK(25, 16)
1216
1217struct hns_roce_vf_res_b {
8b9b8d14 1218 __le32 rsv0;
1219 __le32 vf_smac_idx_num;
1220 __le32 vf_sgid_idx_num;
1221 __le32 vf_qid_idx_sl_num;
1222 __le32 rsv[2];
cfc85f3e
WHX
1223};
1224
1225#define VF_RES_B_DATA_0_VF_ID_S 0
1226#define VF_RES_B_DATA_0_VF_ID_M GENMASK(7, 0)
1227
1228#define VF_RES_B_DATA_1_VF_SMAC_IDX_S 0
1229#define VF_RES_B_DATA_1_VF_SMAC_IDX_M GENMASK(7, 0)
1230
1231#define VF_RES_B_DATA_1_VF_SMAC_NUM_S 8
1232#define VF_RES_B_DATA_1_VF_SMAC_NUM_M GENMASK(16, 8)
1233
1234#define VF_RES_B_DATA_2_VF_SGID_IDX_S 0
1235#define VF_RES_B_DATA_2_VF_SGID_IDX_M GENMASK(7, 0)
1236
1237#define VF_RES_B_DATA_2_VF_SGID_NUM_S 8
1238#define VF_RES_B_DATA_2_VF_SGID_NUM_M GENMASK(16, 8)
1239
1240#define VF_RES_B_DATA_3_VF_QID_IDX_S 0
1241#define VF_RES_B_DATA_3_VF_QID_IDX_M GENMASK(9, 0)
1242
1243#define VF_RES_B_DATA_3_VF_SL_NUM_S 16
1244#define VF_RES_B_DATA_3_VF_SL_NUM_M GENMASK(19, 16)
1245
a81fba28 1246struct hns_roce_cfg_bt_attr {
8b9b8d14 1247 __le32 vf_qpc_cfg;
1248 __le32 vf_srqc_cfg;
1249 __le32 vf_cqc_cfg;
1250 __le32 vf_mpt_cfg;
1251 __le32 rsv[2];
a81fba28
WHX
1252};
1253
1254#define CFG_BT_ATTR_DATA_0_VF_QPC_BA_PGSZ_S 0
1255#define CFG_BT_ATTR_DATA_0_VF_QPC_BA_PGSZ_M GENMASK(3, 0)
1256
1257#define CFG_BT_ATTR_DATA_0_VF_QPC_BUF_PGSZ_S 4
1258#define CFG_BT_ATTR_DATA_0_VF_QPC_BUF_PGSZ_M GENMASK(7, 4)
1259
1260#define CFG_BT_ATTR_DATA_0_VF_QPC_HOPNUM_S 8
1261#define CFG_BT_ATTR_DATA_0_VF_QPC_HOPNUM_M GENMASK(9, 8)
1262
1263#define CFG_BT_ATTR_DATA_1_VF_SRQC_BA_PGSZ_S 0
1264#define CFG_BT_ATTR_DATA_1_VF_SRQC_BA_PGSZ_M GENMASK(3, 0)
1265
1266#define CFG_BT_ATTR_DATA_1_VF_SRQC_BUF_PGSZ_S 4
1267#define CFG_BT_ATTR_DATA_1_VF_SRQC_BUF_PGSZ_M GENMASK(7, 4)
1268
1269#define CFG_BT_ATTR_DATA_1_VF_SRQC_HOPNUM_S 8
1270#define CFG_BT_ATTR_DATA_1_VF_SRQC_HOPNUM_M GENMASK(9, 8)
1271
1272#define CFG_BT_ATTR_DATA_2_VF_CQC_BA_PGSZ_S 0
1273#define CFG_BT_ATTR_DATA_2_VF_CQC_BA_PGSZ_M GENMASK(3, 0)
1274
1275#define CFG_BT_ATTR_DATA_2_VF_CQC_BUF_PGSZ_S 4
1276#define CFG_BT_ATTR_DATA_2_VF_CQC_BUF_PGSZ_M GENMASK(7, 4)
1277
1278#define CFG_BT_ATTR_DATA_2_VF_CQC_HOPNUM_S 8
1279#define CFG_BT_ATTR_DATA_2_VF_CQC_HOPNUM_M GENMASK(9, 8)
1280
1281#define CFG_BT_ATTR_DATA_3_VF_MPT_BA_PGSZ_S 0
1282#define CFG_BT_ATTR_DATA_3_VF_MPT_BA_PGSZ_M GENMASK(3, 0)
1283
1284#define CFG_BT_ATTR_DATA_3_VF_MPT_BUF_PGSZ_S 4
1285#define CFG_BT_ATTR_DATA_3_VF_MPT_BUF_PGSZ_M GENMASK(7, 4)
1286
1287#define CFG_BT_ATTR_DATA_3_VF_MPT_HOPNUM_S 8
1288#define CFG_BT_ATTR_DATA_3_VF_MPT_HOPNUM_M GENMASK(9, 8)
1289
4db134a3 1290struct hns_roce_cfg_sgid_tb {
1291 __le32 table_idx_rsv;
1292 __le32 vf_sgid_l;
1293 __le32 vf_sgid_ml;
1294 __le32 vf_sgid_mh;
1295 __le32 vf_sgid_h;
1296 __le32 vf_sgid_type_rsv;
1297};
1298#define CFG_SGID_TB_TABLE_IDX_S 0
1299#define CFG_SGID_TB_TABLE_IDX_M GENMASK(7, 0)
1300
1301#define CFG_SGID_TB_VF_SGID_TYPE_S 0
1302#define CFG_SGID_TB_VF_SGID_TYPE_M GENMASK(1, 0)
1303
e8e8b652 1304struct hns_roce_cfg_smac_tb {
1305 __le32 tb_idx_rsv;
1306 __le32 vf_smac_l;
1307 __le32 vf_smac_h_rsv;
1308 __le32 rsv[3];
1309};
1310#define CFG_SMAC_TB_IDX_S 0
1311#define CFG_SMAC_TB_IDX_M GENMASK(7, 0)
1312
1313#define CFG_SMAC_TB_VF_SMAC_H_S 0
1314#define CFG_SMAC_TB_VF_SMAC_H_M GENMASK(15, 0)
1315
a04ff739 1316struct hns_roce_cmq_desc {
8b9b8d14 1317 __le16 opcode;
1318 __le16 flag;
1319 __le16 retval;
1320 __le16 rsv;
1321 __le32 data[6];
a04ff739
WHX
1322};
1323
a680f2f3
WHX
1324#define HNS_ROCE_V2_GO_BIT_TIMEOUT_MSECS 10000
1325
1326#define HNS_ROCE_HW_RUN_BIT_SHIFT 31
1327#define HNS_ROCE_HW_MB_STATUS_MASK 0xFF
1328
1329#define HNS_ROCE_VF_MB4_TAG_MASK 0xFFFFFF00
1330#define HNS_ROCE_VF_MB4_TAG_SHIFT 8
1331
1332#define HNS_ROCE_VF_MB4_CMD_MASK 0xFF
1333#define HNS_ROCE_VF_MB4_CMD_SHIFT 0
1334
1335#define HNS_ROCE_VF_MB5_EVENT_MASK 0x10000
1336#define HNS_ROCE_VF_MB5_EVENT_SHIFT 16
1337
1338#define HNS_ROCE_VF_MB5_TOKEN_MASK 0xFFFF
1339#define HNS_ROCE_VF_MB5_TOKEN_SHIFT 0
1340
a04ff739
WHX
1341struct hns_roce_v2_cmq_ring {
1342 dma_addr_t desc_dma_addr;
1343 struct hns_roce_cmq_desc *desc;
1344 u32 head;
1345 u32 tail;
1346
1347 u16 buf_size;
1348 u16 desc_num;
1349 int next_to_use;
1350 int next_to_clean;
1351 u8 flag;
1352 spinlock_t lock; /* command queue lock */
1353};
1354
1355struct hns_roce_v2_cmq {
1356 struct hns_roce_v2_cmq_ring csq;
1357 struct hns_roce_v2_cmq_ring crq;
1358 u16 tx_timeout;
1359 u16 last_status;
1360};
1361
6b63597d 1362enum hns_roce_link_table_type {
1363 TSQ_LINK_TABLE,
ded58ff9 1364 TPQ_LINK_TABLE,
6b63597d 1365};
1366
1367struct hns_roce_link_table {
1368 struct hns_roce_buf_list table;
1369 struct hns_roce_buf_list *pg_list;
1370 u32 npages;
1371 u32 pg_sz;
1372};
1373
1374struct hns_roce_link_table_entry {
1375 u32 blk_ba0;
1376 u32 blk_ba1_nxt_ptr;
1377};
1378#define HNS_ROCE_LINK_TABLE_BA1_S 0
1379#define HNS_ROCE_LINK_TABLE_BA1_M GENMASK(19, 0)
1380
1381#define HNS_ROCE_LINK_TABLE_NXT_PTR_S 20
1382#define HNS_ROCE_LINK_TABLE_NXT_PTR_M GENMASK(31, 20)
1383
a04ff739
WHX
1384struct hns_roce_v2_priv {
1385 struct hns_roce_v2_cmq cmq;
6b63597d 1386 struct hns_roce_link_table tsq;
ded58ff9 1387 struct hns_roce_link_table tpq;
a04ff739
WHX
1388};
1389
a5073d60 1390struct hns_roce_eq_context {
8b9b8d14 1391 __le32 byte_4;
1392 __le32 byte_8;
1393 __le32 byte_12;
1394 __le32 eqe_report_timer;
1395 __le32 eqe_ba0;
1396 __le32 eqe_ba1;
1397 __le32 byte_28;
1398 __le32 byte_32;
1399 __le32 byte_36;
1400 __le32 nxt_eqe_ba0;
1401 __le32 nxt_eqe_ba1;
1402 __le32 rsv[5];
a5073d60
YL
1403};
1404
1405#define HNS_ROCE_AEQ_DEFAULT_BURST_NUM 0x0
1406#define HNS_ROCE_AEQ_DEFAULT_INTERVAL 0x0
1407#define HNS_ROCE_CEQ_DEFAULT_BURST_NUM 0x0
1408#define HNS_ROCE_CEQ_DEFAULT_INTERVAL 0x0
1409
1410#define HNS_ROCE_V2_EQ_STATE_INVALID 0
1411#define HNS_ROCE_V2_EQ_STATE_VALID 1
1412#define HNS_ROCE_V2_EQ_STATE_OVERFLOW 2
1413#define HNS_ROCE_V2_EQ_STATE_FAILURE 3
1414
1415#define HNS_ROCE_V2_EQ_OVER_IGNORE_0 0
1416#define HNS_ROCE_V2_EQ_OVER_IGNORE_1 1
1417
1418#define HNS_ROCE_V2_EQ_COALESCE_0 0
1419#define HNS_ROCE_V2_EQ_COALESCE_1 1
1420
1421#define HNS_ROCE_V2_EQ_FIRED 0
1422#define HNS_ROCE_V2_EQ_ARMED 1
1423#define HNS_ROCE_V2_EQ_ALWAYS_ARMED 3
1424
1425#define HNS_ROCE_EQ_INIT_EQE_CNT 0
1426#define HNS_ROCE_EQ_INIT_PROD_IDX 0
1427#define HNS_ROCE_EQ_INIT_REPORT_TIMER 0
1428#define HNS_ROCE_EQ_INIT_MSI_IDX 0
1429#define HNS_ROCE_EQ_INIT_CONS_IDX 0
1430#define HNS_ROCE_EQ_INIT_NXT_EQE_BA 0
1431
1432#define HNS_ROCE_V2_CEQ_CEQE_OWNER_S 31
1433#define HNS_ROCE_V2_AEQ_AEQE_OWNER_S 31
1434
1435#define HNS_ROCE_V2_COMP_EQE_NUM 0x1000
1436#define HNS_ROCE_V2_ASYNC_EQE_NUM 0x1000
1437
1438#define HNS_ROCE_V2_VF_INT_ST_AEQ_OVERFLOW_S 0
1439#define HNS_ROCE_V2_VF_INT_ST_BUS_ERR_S 1
1440#define HNS_ROCE_V2_VF_INT_ST_OTHER_ERR_S 2
1441
1442#define HNS_ROCE_EQ_DB_CMD_AEQ 0x0
1443#define HNS_ROCE_EQ_DB_CMD_AEQ_ARMED 0x1
1444#define HNS_ROCE_EQ_DB_CMD_CEQ 0x2
1445#define HNS_ROCE_EQ_DB_CMD_CEQ_ARMED 0x3
1446
1447#define EQ_ENABLE 1
1448#define EQ_DISABLE 0
1449
1450#define EQ_REG_OFFSET 0x4
1451
1452#define HNS_ROCE_INT_NAME_LEN 32
1453#define HNS_ROCE_V2_EQN_M GENMASK(23, 0)
1454
1455#define HNS_ROCE_V2_CONS_IDX_M GENMASK(23, 0)
1456
1457#define HNS_ROCE_V2_VF_ABN_INT_EN_S 0
1458#define HNS_ROCE_V2_VF_ABN_INT_EN_M GENMASK(0, 0)
1459#define HNS_ROCE_V2_VF_ABN_INT_ST_M GENMASK(2, 0)
1460#define HNS_ROCE_V2_VF_ABN_INT_CFG_M GENMASK(2, 0)
1461#define HNS_ROCE_V2_VF_EVENT_INT_EN_M GENMASK(0, 0)
1462
1463/* WORD0 */
1464#define HNS_ROCE_EQC_EQ_ST_S 0
1465#define HNS_ROCE_EQC_EQ_ST_M GENMASK(1, 0)
1466
1467#define HNS_ROCE_EQC_HOP_NUM_S 2
1468#define HNS_ROCE_EQC_HOP_NUM_M GENMASK(3, 2)
1469
1470#define HNS_ROCE_EQC_OVER_IGNORE_S 4
1471#define HNS_ROCE_EQC_OVER_IGNORE_M GENMASK(4, 4)
1472
1473#define HNS_ROCE_EQC_COALESCE_S 5
1474#define HNS_ROCE_EQC_COALESCE_M GENMASK(5, 5)
1475
1476#define HNS_ROCE_EQC_ARM_ST_S 6
1477#define HNS_ROCE_EQC_ARM_ST_M GENMASK(7, 6)
1478
1479#define HNS_ROCE_EQC_EQN_S 8
1480#define HNS_ROCE_EQC_EQN_M GENMASK(15, 8)
1481
1482#define HNS_ROCE_EQC_EQE_CNT_S 16
1483#define HNS_ROCE_EQC_EQE_CNT_M GENMASK(31, 16)
1484
1485/* WORD1 */
1486#define HNS_ROCE_EQC_BA_PG_SZ_S 0
1487#define HNS_ROCE_EQC_BA_PG_SZ_M GENMASK(3, 0)
1488
1489#define HNS_ROCE_EQC_BUF_PG_SZ_S 4
1490#define HNS_ROCE_EQC_BUF_PG_SZ_M GENMASK(7, 4)
1491
1492#define HNS_ROCE_EQC_PROD_INDX_S 8
1493#define HNS_ROCE_EQC_PROD_INDX_M GENMASK(31, 8)
1494
1495/* WORD2 */
1496#define HNS_ROCE_EQC_MAX_CNT_S 0
1497#define HNS_ROCE_EQC_MAX_CNT_M GENMASK(15, 0)
1498
1499#define HNS_ROCE_EQC_PERIOD_S 16
1500#define HNS_ROCE_EQC_PERIOD_M GENMASK(31, 16)
1501
1502/* WORD3 */
1503#define HNS_ROCE_EQC_REPORT_TIMER_S 0
1504#define HNS_ROCE_EQC_REPORT_TIMER_M GENMASK(31, 0)
1505
1506/* WORD4 */
1507#define HNS_ROCE_EQC_EQE_BA_L_S 0
1508#define HNS_ROCE_EQC_EQE_BA_L_M GENMASK(31, 0)
1509
1510/* WORD5 */
1511#define HNS_ROCE_EQC_EQE_BA_H_S 0
1512#define HNS_ROCE_EQC_EQE_BA_H_M GENMASK(28, 0)
1513
1514/* WORD6 */
1515#define HNS_ROCE_EQC_SHIFT_S 0
1516#define HNS_ROCE_EQC_SHIFT_M GENMASK(7, 0)
1517
1518#define HNS_ROCE_EQC_MSI_INDX_S 8
1519#define HNS_ROCE_EQC_MSI_INDX_M GENMASK(15, 8)
1520
1521#define HNS_ROCE_EQC_CUR_EQE_BA_L_S 16
1522#define HNS_ROCE_EQC_CUR_EQE_BA_L_M GENMASK(31, 16)
1523
1524/* WORD7 */
1525#define HNS_ROCE_EQC_CUR_EQE_BA_M_S 0
1526#define HNS_ROCE_EQC_CUR_EQE_BA_M_M GENMASK(31, 0)
1527
1528/* WORD8 */
1529#define HNS_ROCE_EQC_CUR_EQE_BA_H_S 0
1530#define HNS_ROCE_EQC_CUR_EQE_BA_H_M GENMASK(3, 0)
1531
1532#define HNS_ROCE_EQC_CONS_INDX_S 8
1533#define HNS_ROCE_EQC_CONS_INDX_M GENMASK(31, 8)
1534
1535/* WORD9 */
1536#define HNS_ROCE_EQC_NXT_EQE_BA_L_S 0
1537#define HNS_ROCE_EQC_NXT_EQE_BA_L_M GENMASK(31, 0)
1538
1539/* WORD10 */
1540#define HNS_ROCE_EQC_NXT_EQE_BA_H_S 0
1541#define HNS_ROCE_EQC_NXT_EQE_BA_H_M GENMASK(19, 0)
1542
1543#define HNS_ROCE_V2_CEQE_COMP_CQN_S 0
1544#define HNS_ROCE_V2_CEQE_COMP_CQN_M GENMASK(23, 0)
1545
1546#define HNS_ROCE_V2_AEQE_EVENT_TYPE_S 0
1547#define HNS_ROCE_V2_AEQE_EVENT_TYPE_M GENMASK(7, 0)
1548
1549#define HNS_ROCE_V2_AEQE_SUB_TYPE_S 8
1550#define HNS_ROCE_V2_AEQE_SUB_TYPE_M GENMASK(15, 8)
1551
1552#define HNS_ROCE_V2_EQ_DB_CMD_S 16
1553#define HNS_ROCE_V2_EQ_DB_CMD_M GENMASK(17, 16)
1554
1555#define HNS_ROCE_V2_EQ_DB_TAG_S 0
1556#define HNS_ROCE_V2_EQ_DB_TAG_M GENMASK(7, 0)
1557
1558#define HNS_ROCE_V2_EQ_DB_PARA_S 0
1559#define HNS_ROCE_V2_EQ_DB_PARA_M GENMASK(23, 0)
1560
1561#define HNS_ROCE_V2_AEQE_EVENT_QUEUE_NUM_S 0
1562#define HNS_ROCE_V2_AEQE_EVENT_QUEUE_NUM_M GENMASK(23, 0)
1563
a04ff739 1564#endif