1/*
2 * Broadcom NetXtreme-E RoCE driver.
3 *
4 * Copyright (c) 2016 - 2017, Broadcom. All rights reserved.  The term
5 * Broadcom refers to Broadcom Limited and/or its subsidiaries.
6 *
7 * This software is available to you under a choice of one of two
8 * licenses.  You may choose to be licensed under the terms of the GNU
9 * General Public License (GPL) Version 2, available from the file
10 * COPYING in the main directory of this source tree, or the
11 * BSD license below:
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 *
17 * 1. Redistributions of source code must retain the above copyright
18 *    notice, this list of conditions and the following disclaimer.
19 * 2. Redistributions in binary form must reproduce the above copyright
20 *    notice, this list of conditions and the following disclaimer in
21 *    the documentation and/or other materials provided with the
22 *    distribution.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
26 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
27 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
28 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
31 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
32 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
33 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
34 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 *
36 * Description: RoCE HSI File - Autogenerated
37 */
38
39#ifndef __BNXT_RE_HSI_H__
40#define __BNXT_RE_HSI_H__
41
42/* include bnxt_hsi.h from bnxt_en driver */
43#include "bnxt_hsi.h"
44
45/* tx_doorbell (size:32b/4B) */
46struct tx_doorbell {
47	__le32	key_idx;
48	#define TX_DOORBELL_IDX_MASK 0xffffffUL
49	#define TX_DOORBELL_IDX_SFT 0
50	#define TX_DOORBELL_KEY_MASK 0xf0000000UL
51	#define TX_DOORBELL_KEY_SFT 28
52	#define TX_DOORBELL_KEY_TX    (0x0UL << 28)
53	#define TX_DOORBELL_KEY_LAST TX_DOORBELL_KEY_TX
54};
55
56/* rx_doorbell (size:32b/4B) */
57struct rx_doorbell {
58	__le32	key_idx;
59	#define RX_DOORBELL_IDX_MASK 0xffffffUL
60	#define RX_DOORBELL_IDX_SFT 0
61	#define RX_DOORBELL_KEY_MASK 0xf0000000UL
62	#define RX_DOORBELL_KEY_SFT 28
63	#define RX_DOORBELL_KEY_RX    (0x1UL << 28)
64	#define RX_DOORBELL_KEY_LAST RX_DOORBELL_KEY_RX
65};
66
67/* cmpl_doorbell (size:32b/4B) */
68struct cmpl_doorbell {
69	__le32	key_mask_valid_idx;
70	#define CMPL_DOORBELL_IDX_MASK      0xffffffUL
71	#define CMPL_DOORBELL_IDX_SFT       0
72	#define CMPL_DOORBELL_IDX_VALID     0x4000000UL
73	#define CMPL_DOORBELL_MASK          0x8000000UL
74	#define CMPL_DOORBELL_KEY_MASK      0xf0000000UL
75	#define CMPL_DOORBELL_KEY_SFT       28
76	#define CMPL_DOORBELL_KEY_CMPL        (0x2UL << 28)
77	#define CMPL_DOORBELL_KEY_LAST       CMPL_DOORBELL_KEY_CMPL
78};
79
80/* status_doorbell (size:32b/4B) */
81struct status_doorbell {
82	__le32	key_idx;
83	#define STATUS_DOORBELL_IDX_MASK 0xffffffUL
84	#define STATUS_DOORBELL_IDX_SFT 0
85	#define STATUS_DOORBELL_KEY_MASK 0xf0000000UL
86	#define STATUS_DOORBELL_KEY_SFT 28
87	#define STATUS_DOORBELL_KEY_STAT  (0x3UL << 28)
88	#define STATUS_DOORBELL_KEY_LAST STATUS_DOORBELL_KEY_STAT
89};
90
91/* cmdq_init (size:128b/16B) */
92struct cmdq_init {
93	__le64	cmdq_pbl;
94	__le16	cmdq_size_cmdq_lvl;
95	#define CMDQ_INIT_CMDQ_LVL_MASK 0x3UL
96	#define CMDQ_INIT_CMDQ_LVL_SFT  0
97	#define CMDQ_INIT_CMDQ_SIZE_MASK 0xfffcUL
98	#define CMDQ_INIT_CMDQ_SIZE_SFT 2
99	__le16	creq_ring_id;
100	__le32	prod_idx;
101};
102
103/* cmdq_base (size:128b/16B) */
104struct cmdq_base {
105	u8	opcode;
106	#define CMDQ_BASE_OPCODE_CREATE_QP              0x1UL
107	#define CMDQ_BASE_OPCODE_DESTROY_QP             0x2UL
108	#define CMDQ_BASE_OPCODE_MODIFY_QP              0x3UL
109	#define CMDQ_BASE_OPCODE_QUERY_QP               0x4UL
110	#define CMDQ_BASE_OPCODE_CREATE_SRQ             0x5UL
111	#define CMDQ_BASE_OPCODE_DESTROY_SRQ            0x6UL
112	#define CMDQ_BASE_OPCODE_QUERY_SRQ              0x8UL
113	#define CMDQ_BASE_OPCODE_CREATE_CQ              0x9UL
114	#define CMDQ_BASE_OPCODE_DESTROY_CQ             0xaUL
115	#define CMDQ_BASE_OPCODE_RESIZE_CQ              0xcUL
116	#define CMDQ_BASE_OPCODE_ALLOCATE_MRW           0xdUL
117	#define CMDQ_BASE_OPCODE_DEALLOCATE_KEY         0xeUL
118	#define CMDQ_BASE_OPCODE_REGISTER_MR            0xfUL
119	#define CMDQ_BASE_OPCODE_DEREGISTER_MR          0x10UL
120	#define CMDQ_BASE_OPCODE_ADD_GID                0x11UL
121	#define CMDQ_BASE_OPCODE_DELETE_GID             0x12UL
122	#define CMDQ_BASE_OPCODE_MODIFY_GID             0x17UL
123	#define CMDQ_BASE_OPCODE_QUERY_GID              0x18UL
124	#define CMDQ_BASE_OPCODE_CREATE_QP1             0x13UL
125	#define CMDQ_BASE_OPCODE_DESTROY_QP1            0x14UL
126	#define CMDQ_BASE_OPCODE_CREATE_AH              0x15UL
127	#define CMDQ_BASE_OPCODE_DESTROY_AH             0x16UL
128	#define CMDQ_BASE_OPCODE_INITIALIZE_FW          0x80UL
129	#define CMDQ_BASE_OPCODE_DEINITIALIZE_FW        0x81UL
130	#define CMDQ_BASE_OPCODE_STOP_FUNC              0x82UL
131	#define CMDQ_BASE_OPCODE_QUERY_FUNC             0x83UL
132	#define CMDQ_BASE_OPCODE_SET_FUNC_RESOURCES     0x84UL
133	#define CMDQ_BASE_OPCODE_READ_CONTEXT           0x85UL
134	#define CMDQ_BASE_OPCODE_VF_BACKCHANNEL_REQUEST 0x86UL
135	#define CMDQ_BASE_OPCODE_READ_VF_MEMORY         0x87UL
136	#define CMDQ_BASE_OPCODE_COMPLETE_VF_REQUEST    0x88UL
137	#define CMDQ_BASE_OPCODE_EXTEND_CONTEXT_ARRRAY  0x89UL
138	#define CMDQ_BASE_OPCODE_MAP_TC_TO_COS          0x8aUL
139	#define CMDQ_BASE_OPCODE_QUERY_VERSION          0x8bUL
140	#define CMDQ_BASE_OPCODE_MODIFY_ROCE_CC         0x8cUL
141	#define CMDQ_BASE_OPCODE_QUERY_ROCE_CC          0x8dUL
142	#define CMDQ_BASE_OPCODE_QUERY_ROCE_STATS       0x8eUL
143	#define CMDQ_BASE_OPCODE_SET_LINK_AGGR_MODE     0x8fUL
144	#define CMDQ_BASE_OPCODE_MODIFY_CQ              0x90UL
145	#define CMDQ_BASE_OPCODE_QUERY_QP_EXTEND        0x91UL
146	#define CMDQ_BASE_OPCODE_QUERY_ROCE_STATS_EXT   0x92UL
147	#define CMDQ_BASE_OPCODE_LAST                  CMDQ_BASE_OPCODE_QUERY_ROCE_STATS_EXT
148	u8	cmd_size;
149	__le16	flags;
150	__le16	cookie;
151	u8	resp_size;
152	u8	reserved8;
153	__le64	resp_addr;
154};
155
156/* creq_base (size:128b/16B) */
157struct creq_base {
158	u8	type;
159	#define CREQ_BASE_TYPE_MASK      0x3fUL
160	#define CREQ_BASE_TYPE_SFT       0
161	#define CREQ_BASE_TYPE_QP_EVENT    0x38UL
162	#define CREQ_BASE_TYPE_FUNC_EVENT  0x3aUL
163	#define CREQ_BASE_TYPE_LAST       CREQ_BASE_TYPE_FUNC_EVENT
164	u8	reserved56[7];
165	u8	v;
166	#define CREQ_BASE_V     0x1UL
167	u8	event;
168	u8	reserved48[6];
169};
170
171/* cmdq_query_version (size:128b/16B) */
172struct cmdq_query_version {
173	u8	opcode;
174	#define CMDQ_QUERY_VERSION_OPCODE_QUERY_VERSION 0x8bUL
175	#define CMDQ_QUERY_VERSION_OPCODE_LAST         CMDQ_QUERY_VERSION_OPCODE_QUERY_VERSION
176	u8	cmd_size;
177	__le16	flags;
178	__le16	cookie;
179	u8	resp_size;
180	u8	reserved8;
181	__le64	resp_addr;
182};
183
184/* creq_query_version_resp (size:128b/16B) */
185struct creq_query_version_resp {
186	u8	type;
187	#define CREQ_QUERY_VERSION_RESP_TYPE_MASK    0x3fUL
188	#define CREQ_QUERY_VERSION_RESP_TYPE_SFT     0
189	#define CREQ_QUERY_VERSION_RESP_TYPE_QP_EVENT  0x38UL
190	#define CREQ_QUERY_VERSION_RESP_TYPE_LAST     CREQ_QUERY_VERSION_RESP_TYPE_QP_EVENT
191	u8	status;
192	__le16	cookie;
193	u8	fw_maj;
194	u8	fw_minor;
195	u8	fw_bld;
196	u8	fw_rsvd;
197	u8	v;
198	#define CREQ_QUERY_VERSION_RESP_V     0x1UL
199	u8	event;
200	#define CREQ_QUERY_VERSION_RESP_EVENT_QUERY_VERSION 0x8bUL
201	#define CREQ_QUERY_VERSION_RESP_EVENT_LAST         \
202		CREQ_QUERY_VERSION_RESP_EVENT_QUERY_VERSION
203	__le16	reserved16;
204	u8	intf_maj;
205	u8	intf_minor;
206	u8	intf_bld;
207	u8	intf_rsvd;
208};
209
210/* cmdq_initialize_fw (size:896b/112B) */
211struct cmdq_initialize_fw {
212	u8	opcode;
213	#define CMDQ_INITIALIZE_FW_OPCODE_INITIALIZE_FW 0x80UL
214	#define CMDQ_INITIALIZE_FW_OPCODE_LAST         CMDQ_INITIALIZE_FW_OPCODE_INITIALIZE_FW
215	u8	cmd_size;
216	__le16	flags;
217	#define CMDQ_INITIALIZE_FW_FLAGS_MRAV_RESERVATION_SPLIT          0x1UL
218	#define CMDQ_INITIALIZE_FW_FLAGS_HW_REQUESTER_RETX_SUPPORTED     0x2UL
219	__le16	cookie;
220	u8	resp_size;
221	u8	reserved8;
222	__le64	resp_addr;
223	u8	qpc_pg_size_qpc_lvl;
224	#define CMDQ_INITIALIZE_FW_QPC_LVL_MASK      0xfUL
225	#define CMDQ_INITIALIZE_FW_QPC_LVL_SFT       0
226	#define CMDQ_INITIALIZE_FW_QPC_LVL_LVL_0       0x0UL
227	#define CMDQ_INITIALIZE_FW_QPC_LVL_LVL_1       0x1UL
228	#define CMDQ_INITIALIZE_FW_QPC_LVL_LVL_2       0x2UL
229	#define CMDQ_INITIALIZE_FW_QPC_LVL_LAST       CMDQ_INITIALIZE_FW_QPC_LVL_LVL_2
230	#define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_MASK  0xf0UL
231	#define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_SFT   4
232	#define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_4K   (0x0UL << 4)
233	#define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_8K   (0x1UL << 4)
234	#define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_64K  (0x2UL << 4)
235	#define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_2M   (0x3UL << 4)
236	#define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_8M   (0x4UL << 4)
237	#define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_1G   (0x5UL << 4)
238	#define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_LAST   CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_1G
239	u8	mrw_pg_size_mrw_lvl;
240	#define CMDQ_INITIALIZE_FW_MRW_LVL_MASK      0xfUL
241	#define CMDQ_INITIALIZE_FW_MRW_LVL_SFT       0
242	#define CMDQ_INITIALIZE_FW_MRW_LVL_LVL_0       0x0UL
243	#define CMDQ_INITIALIZE_FW_MRW_LVL_LVL_1       0x1UL
244	#define CMDQ_INITIALIZE_FW_MRW_LVL_LVL_2       0x2UL
245	#define CMDQ_INITIALIZE_FW_MRW_LVL_LAST       CMDQ_INITIALIZE_FW_MRW_LVL_LVL_2
246	#define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_MASK  0xf0UL
247	#define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_SFT   4
248	#define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_4K   (0x0UL << 4)
249	#define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_8K   (0x1UL << 4)
250	#define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_64K  (0x2UL << 4)
251	#define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_2M   (0x3UL << 4)
252	#define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_8M   (0x4UL << 4)
253	#define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_1G   (0x5UL << 4)
254	#define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_LAST   CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_1G
255	u8	srq_pg_size_srq_lvl;
256	#define CMDQ_INITIALIZE_FW_SRQ_LVL_MASK      0xfUL
257	#define CMDQ_INITIALIZE_FW_SRQ_LVL_SFT       0
258	#define CMDQ_INITIALIZE_FW_SRQ_LVL_LVL_0       0x0UL
259	#define CMDQ_INITIALIZE_FW_SRQ_LVL_LVL_1       0x1UL
260	#define CMDQ_INITIALIZE_FW_SRQ_LVL_LVL_2       0x2UL
261	#define CMDQ_INITIALIZE_FW_SRQ_LVL_LAST       CMDQ_INITIALIZE_FW_SRQ_LVL_LVL_2
262	#define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_MASK  0xf0UL
263	#define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_SFT   4
264	#define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_4K   (0x0UL << 4)
265	#define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_8K   (0x1UL << 4)
266	#define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_64K  (0x2UL << 4)
267	#define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_2M   (0x3UL << 4)
268	#define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_8M   (0x4UL << 4)
269	#define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_1G   (0x5UL << 4)
270	#define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_LAST   CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_1G
271	u8	cq_pg_size_cq_lvl;
272	#define CMDQ_INITIALIZE_FW_CQ_LVL_MASK      0xfUL
273	#define CMDQ_INITIALIZE_FW_CQ_LVL_SFT       0
274	#define CMDQ_INITIALIZE_FW_CQ_LVL_LVL_0       0x0UL
275	#define CMDQ_INITIALIZE_FW_CQ_LVL_LVL_1       0x1UL
276	#define CMDQ_INITIALIZE_FW_CQ_LVL_LVL_2       0x2UL
277	#define CMDQ_INITIALIZE_FW_CQ_LVL_LAST       CMDQ_INITIALIZE_FW_CQ_LVL_LVL_2
278	#define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_MASK  0xf0UL
279	#define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_SFT   4
280	#define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_4K   (0x0UL << 4)
281	#define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_8K   (0x1UL << 4)
282	#define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_64K  (0x2UL << 4)
283	#define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_2M   (0x3UL << 4)
284	#define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_8M   (0x4UL << 4)
285	#define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_1G   (0x5UL << 4)
286	#define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_LAST   CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_1G
287	u8	tqm_pg_size_tqm_lvl;
288	#define CMDQ_INITIALIZE_FW_TQM_LVL_MASK      0xfUL
289	#define CMDQ_INITIALIZE_FW_TQM_LVL_SFT       0
290	#define CMDQ_INITIALIZE_FW_TQM_LVL_LVL_0       0x0UL
291	#define CMDQ_INITIALIZE_FW_TQM_LVL_LVL_1       0x1UL
292	#define CMDQ_INITIALIZE_FW_TQM_LVL_LVL_2       0x2UL
293	#define CMDQ_INITIALIZE_FW_TQM_LVL_LAST       CMDQ_INITIALIZE_FW_TQM_LVL_LVL_2
294	#define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_MASK  0xf0UL
295	#define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_SFT   4
296	#define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_4K   (0x0UL << 4)
297	#define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_8K   (0x1UL << 4)
298	#define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_64K  (0x2UL << 4)
299	#define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_2M   (0x3UL << 4)
300	#define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_8M   (0x4UL << 4)
301	#define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_1G   (0x5UL << 4)
302	#define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_LAST   CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_1G
303	u8	tim_pg_size_tim_lvl;
304	#define CMDQ_INITIALIZE_FW_TIM_LVL_MASK      0xfUL
305	#define CMDQ_INITIALIZE_FW_TIM_LVL_SFT       0
306	#define CMDQ_INITIALIZE_FW_TIM_LVL_LVL_0       0x0UL
307	#define CMDQ_INITIALIZE_FW_TIM_LVL_LVL_1       0x1UL
308	#define CMDQ_INITIALIZE_FW_TIM_LVL_LVL_2       0x2UL
309	#define CMDQ_INITIALIZE_FW_TIM_LVL_LAST       CMDQ_INITIALIZE_FW_TIM_LVL_LVL_2
310	#define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_MASK  0xf0UL
311	#define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_SFT   4
312	#define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_4K   (0x0UL << 4)
313	#define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_8K   (0x1UL << 4)
314	#define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_64K  (0x2UL << 4)
315	#define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_2M   (0x3UL << 4)
316	#define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_8M   (0x4UL << 4)
317	#define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_1G   (0x5UL << 4)
318	#define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_LAST   CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_1G
319	__le16	log2_dbr_pg_size;
320	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_MASK   0xfUL
321	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_SFT    0
322	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_4K    0x0UL
323	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_8K    0x1UL
324	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_16K   0x2UL
325	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_32K   0x3UL
326	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_64K   0x4UL
327	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_128K  0x5UL
328	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_256K  0x6UL
329	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_512K  0x7UL
330	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_1M    0x8UL
331	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_2M    0x9UL
332	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_4M    0xaUL
333	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_8M    0xbUL
334	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_16M   0xcUL
335	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_32M   0xdUL
336	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_64M   0xeUL
337	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_128M  0xfUL
338	#define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_LAST    \
339		CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_128M
340	#define CMDQ_INITIALIZE_FW_RSVD_MASK               0xfff0UL
341	#define CMDQ_INITIALIZE_FW_RSVD_SFT                4
342	__le64	qpc_page_dir;
343	__le64	mrw_page_dir;
344	__le64	srq_page_dir;
345	__le64	cq_page_dir;
346	__le64	tqm_page_dir;
347	__le64	tim_page_dir;
348	__le32	number_of_qp;
349	__le32	number_of_mrw;
350	__le32	number_of_srq;
351	__le32	number_of_cq;
352	__le32	max_qp_per_vf;
353	__le32	max_mrw_per_vf;
354	__le32	max_srq_per_vf;
355	__le32	max_cq_per_vf;
356	__le32	max_gid_per_vf;
357	__le32	stat_ctx_id;
358};
359
360/* creq_initialize_fw_resp (size:128b/16B) */
361struct creq_initialize_fw_resp {
362	u8	type;
363	#define CREQ_INITIALIZE_FW_RESP_TYPE_MASK    0x3fUL
364	#define CREQ_INITIALIZE_FW_RESP_TYPE_SFT     0
365	#define CREQ_INITIALIZE_FW_RESP_TYPE_QP_EVENT  0x38UL
366	#define CREQ_INITIALIZE_FW_RESP_TYPE_LAST     CREQ_INITIALIZE_FW_RESP_TYPE_QP_EVENT
367	u8	status;
368	__le16	cookie;
369	__le32	reserved32;
370	u8	v;
371	#define CREQ_INITIALIZE_FW_RESP_V     0x1UL
372	u8	event;
373	#define CREQ_INITIALIZE_FW_RESP_EVENT_INITIALIZE_FW 0x80UL
374	#define CREQ_INITIALIZE_FW_RESP_EVENT_LAST         \
375		CREQ_INITIALIZE_FW_RESP_EVENT_INITIALIZE_FW
376	u8	reserved48[6];
377};
378
379/* cmdq_deinitialize_fw (size:128b/16B) */
380struct cmdq_deinitialize_fw {
381	u8	opcode;
382	#define CMDQ_DEINITIALIZE_FW_OPCODE_DEINITIALIZE_FW 0x81UL
383	#define CMDQ_DEINITIALIZE_FW_OPCODE_LAST           \
384		CMDQ_DEINITIALIZE_FW_OPCODE_DEINITIALIZE_FW
385	u8	cmd_size;
386	__le16	flags;
387	__le16	cookie;
388	u8	resp_size;
389	u8	reserved8;
390	__le64	resp_addr;
391};
392
393/* creq_deinitialize_fw_resp (size:128b/16B) */
394struct creq_deinitialize_fw_resp {
395	u8	type;
396	#define CREQ_DEINITIALIZE_FW_RESP_TYPE_MASK    0x3fUL
397	#define CREQ_DEINITIALIZE_FW_RESP_TYPE_SFT     0
398	#define CREQ_DEINITIALIZE_FW_RESP_TYPE_QP_EVENT  0x38UL
399	#define CREQ_DEINITIALIZE_FW_RESP_TYPE_LAST     CREQ_DEINITIALIZE_FW_RESP_TYPE_QP_EVENT
400	u8	status;
401	__le16	cookie;
402	__le32	reserved32;
403	u8	v;
404	#define CREQ_DEINITIALIZE_FW_RESP_V     0x1UL
405	u8	event;
406	#define CREQ_DEINITIALIZE_FW_RESP_EVENT_DEINITIALIZE_FW 0x81UL
407	#define CREQ_DEINITIALIZE_FW_RESP_EVENT_LAST           \
408		CREQ_DEINITIALIZE_FW_RESP_EVENT_DEINITIALIZE_FW
409	u8	reserved48[6];
410};
411
412/* cmdq_create_qp (size:768b/96B) */
413struct cmdq_create_qp {
414	u8	opcode;
415	#define CMDQ_CREATE_QP_OPCODE_CREATE_QP 0x1UL
416	#define CMDQ_CREATE_QP_OPCODE_LAST     CMDQ_CREATE_QP_OPCODE_CREATE_QP
417	u8	cmd_size;
418	__le16	flags;
419	__le16	cookie;
420	u8	resp_size;
421	u8	reserved8;
422	__le64	resp_addr;
423	__le64	qp_handle;
424	__le32	qp_flags;
425	#define CMDQ_CREATE_QP_QP_FLAGS_SRQ_USED                   0x1UL
426	#define CMDQ_CREATE_QP_QP_FLAGS_FORCE_COMPLETION           0x2UL
427	#define CMDQ_CREATE_QP_QP_FLAGS_RESERVED_LKEY_ENABLE       0x4UL
428	#define CMDQ_CREATE_QP_QP_FLAGS_FR_PMR_ENABLED             0x8UL
429	#define CMDQ_CREATE_QP_QP_FLAGS_VARIABLE_SIZED_WQE_ENABLED 0x10UL
430	#define CMDQ_CREATE_QP_QP_FLAGS_OPTIMIZED_TRANSMIT_ENABLED 0x20UL
431	#define CMDQ_CREATE_QP_QP_FLAGS_RESPONDER_UD_CQE_WITH_CFA  0x40UL
432	#define CMDQ_CREATE_QP_QP_FLAGS_EXT_STATS_ENABLED          0x80UL
433	#define CMDQ_CREATE_QP_QP_FLAGS_LAST                      \
434		CMDQ_CREATE_QP_QP_FLAGS_EXT_STATS_ENABLED
435	u8	type;
436	#define CMDQ_CREATE_QP_TYPE_RC            0x2UL
437	#define CMDQ_CREATE_QP_TYPE_UD            0x4UL
438	#define CMDQ_CREATE_QP_TYPE_RAW_ETHERTYPE 0x6UL
439	#define CMDQ_CREATE_QP_TYPE_GSI           0x7UL
440	#define CMDQ_CREATE_QP_TYPE_LAST         CMDQ_CREATE_QP_TYPE_GSI
441	u8	sq_pg_size_sq_lvl;
442	#define CMDQ_CREATE_QP_SQ_LVL_MASK      0xfUL
443	#define CMDQ_CREATE_QP_SQ_LVL_SFT       0
444	#define CMDQ_CREATE_QP_SQ_LVL_LVL_0       0x0UL
445	#define CMDQ_CREATE_QP_SQ_LVL_LVL_1       0x1UL
446	#define CMDQ_CREATE_QP_SQ_LVL_LVL_2       0x2UL
447	#define CMDQ_CREATE_QP_SQ_LVL_LAST       CMDQ_CREATE_QP_SQ_LVL_LVL_2
448	#define CMDQ_CREATE_QP_SQ_PG_SIZE_MASK  0xf0UL
449	#define CMDQ_CREATE_QP_SQ_PG_SIZE_SFT   4
450	#define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_4K   (0x0UL << 4)
451	#define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_8K   (0x1UL << 4)
452	#define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_64K  (0x2UL << 4)
453	#define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_2M   (0x3UL << 4)
454	#define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_8M   (0x4UL << 4)
455	#define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_1G   (0x5UL << 4)
456	#define CMDQ_CREATE_QP_SQ_PG_SIZE_LAST   CMDQ_CREATE_QP_SQ_PG_SIZE_PG_1G
457	u8	rq_pg_size_rq_lvl;
458	#define CMDQ_CREATE_QP_RQ_LVL_MASK      0xfUL
459	#define CMDQ_CREATE_QP_RQ_LVL_SFT       0
460	#define CMDQ_CREATE_QP_RQ_LVL_LVL_0       0x0UL
461	#define CMDQ_CREATE_QP_RQ_LVL_LVL_1       0x1UL
462	#define CMDQ_CREATE_QP_RQ_LVL_LVL_2       0x2UL
463	#define CMDQ_CREATE_QP_RQ_LVL_LAST       CMDQ_CREATE_QP_RQ_LVL_LVL_2
464	#define CMDQ_CREATE_QP_RQ_PG_SIZE_MASK  0xf0UL
465	#define CMDQ_CREATE_QP_RQ_PG_SIZE_SFT   4
466	#define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_4K   (0x0UL << 4)
467	#define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_8K   (0x1UL << 4)
468	#define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_64K  (0x2UL << 4)
469	#define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_2M   (0x3UL << 4)
470	#define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_8M   (0x4UL << 4)
471	#define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_1G   (0x5UL << 4)
472	#define CMDQ_CREATE_QP_RQ_PG_SIZE_LAST   CMDQ_CREATE_QP_RQ_PG_SIZE_PG_1G
473	u8	unused_0;
474	__le32	dpi;
475	__le32	sq_size;
476	__le32	rq_size;
477	__le16	sq_fwo_sq_sge;
478	#define CMDQ_CREATE_QP_SQ_SGE_MASK 0xfUL
479	#define CMDQ_CREATE_QP_SQ_SGE_SFT 0
480	#define CMDQ_CREATE_QP_SQ_FWO_MASK 0xfff0UL
481	#define CMDQ_CREATE_QP_SQ_FWO_SFT 4
482	__le16	rq_fwo_rq_sge;
483	#define CMDQ_CREATE_QP_RQ_SGE_MASK 0xfUL
484	#define CMDQ_CREATE_QP_RQ_SGE_SFT 0
485	#define CMDQ_CREATE_QP_RQ_FWO_MASK 0xfff0UL
486	#define CMDQ_CREATE_QP_RQ_FWO_SFT 4
487	__le32	scq_cid;
488	__le32	rcq_cid;
489	__le32	srq_cid;
490	__le32	pd_id;
491	__le64	sq_pbl;
492	__le64	rq_pbl;
493	__le64	irrq_addr;
494	__le64	orrq_addr;
495};
496
497/* creq_create_qp_resp (size:128b/16B) */
498struct creq_create_qp_resp {
499	u8	type;
500	#define CREQ_CREATE_QP_RESP_TYPE_MASK    0x3fUL
501	#define CREQ_CREATE_QP_RESP_TYPE_SFT     0
502	#define CREQ_CREATE_QP_RESP_TYPE_QP_EVENT  0x38UL
503	#define CREQ_CREATE_QP_RESP_TYPE_LAST     CREQ_CREATE_QP_RESP_TYPE_QP_EVENT
504	u8	status;
505	__le16	cookie;
506	__le32	xid;
507	u8	v;
508	#define CREQ_CREATE_QP_RESP_V     0x1UL
509	u8	event;
510	#define CREQ_CREATE_QP_RESP_EVENT_CREATE_QP 0x1UL
511	#define CREQ_CREATE_QP_RESP_EVENT_LAST     CREQ_CREATE_QP_RESP_EVENT_CREATE_QP
512	u8	optimized_transmit_enabled;
513	u8	reserved48[5];
514};
515
516/* cmdq_destroy_qp (size:192b/24B) */
517struct cmdq_destroy_qp {
518	u8	opcode;
519	#define CMDQ_DESTROY_QP_OPCODE_DESTROY_QP 0x2UL
520	#define CMDQ_DESTROY_QP_OPCODE_LAST      CMDQ_DESTROY_QP_OPCODE_DESTROY_QP
521	u8	cmd_size;
522	__le16	flags;
523	__le16	cookie;
524	u8	resp_size;
525	u8	reserved8;
526	__le64	resp_addr;
527	__le32	qp_cid;
528	__le32	unused_0;
529};
530
531/* creq_destroy_qp_resp (size:128b/16B) */
532struct creq_destroy_qp_resp {
533	u8	type;
534	#define CREQ_DESTROY_QP_RESP_TYPE_MASK    0x3fUL
535	#define CREQ_DESTROY_QP_RESP_TYPE_SFT     0
536	#define CREQ_DESTROY_QP_RESP_TYPE_QP_EVENT  0x38UL
537	#define CREQ_DESTROY_QP_RESP_TYPE_LAST     CREQ_DESTROY_QP_RESP_TYPE_QP_EVENT
538	u8	status;
539	__le16	cookie;
540	__le32	xid;
541	u8	v;
542	#define CREQ_DESTROY_QP_RESP_V     0x1UL
543	u8	event;
544	#define CREQ_DESTROY_QP_RESP_EVENT_DESTROY_QP 0x2UL
545	#define CREQ_DESTROY_QP_RESP_EVENT_LAST      CREQ_DESTROY_QP_RESP_EVENT_DESTROY_QP
546	u8	reserved48[6];
547};
548
549/* cmdq_modify_qp (size:1024b/128B) */
550struct cmdq_modify_qp {
551	u8	opcode;
552	#define CMDQ_MODIFY_QP_OPCODE_MODIFY_QP 0x3UL
553	#define CMDQ_MODIFY_QP_OPCODE_LAST     CMDQ_MODIFY_QP_OPCODE_MODIFY_QP
554	u8	cmd_size;
555	__le16	flags;
556	__le16	cookie;
557	u8	resp_size;
558	u8	qp_type;
559	#define CMDQ_MODIFY_QP_QP_TYPE_RC            0x2UL
560	#define CMDQ_MODIFY_QP_QP_TYPE_UD            0x4UL
561	#define CMDQ_MODIFY_QP_QP_TYPE_RAW_ETHERTYPE 0x6UL
562	#define CMDQ_MODIFY_QP_QP_TYPE_GSI           0x7UL
563	#define CMDQ_MODIFY_QP_QP_TYPE_LAST         CMDQ_MODIFY_QP_QP_TYPE_GSI
564	__le64	resp_addr;
565	__le32	modify_mask;
566	#define CMDQ_MODIFY_QP_MODIFY_MASK_STATE                   0x1UL
567	#define CMDQ_MODIFY_QP_MODIFY_MASK_EN_SQD_ASYNC_NOTIFY     0x2UL
568	#define CMDQ_MODIFY_QP_MODIFY_MASK_ACCESS                  0x4UL
569	#define CMDQ_MODIFY_QP_MODIFY_MASK_PKEY                    0x8UL
570	#define CMDQ_MODIFY_QP_MODIFY_MASK_QKEY                    0x10UL
571	#define CMDQ_MODIFY_QP_MODIFY_MASK_DGID                    0x20UL
572	#define CMDQ_MODIFY_QP_MODIFY_MASK_FLOW_LABEL              0x40UL
573	#define CMDQ_MODIFY_QP_MODIFY_MASK_SGID_INDEX              0x80UL
574	#define CMDQ_MODIFY_QP_MODIFY_MASK_HOP_LIMIT               0x100UL
575	#define CMDQ_MODIFY_QP_MODIFY_MASK_TRAFFIC_CLASS           0x200UL
576	#define CMDQ_MODIFY_QP_MODIFY_MASK_DEST_MAC                0x400UL
577	#define CMDQ_MODIFY_QP_MODIFY_MASK_PINGPONG_PUSH_MODE      0x800UL
578	#define CMDQ_MODIFY_QP_MODIFY_MASK_PATH_MTU                0x1000UL
579	#define CMDQ_MODIFY_QP_MODIFY_MASK_TIMEOUT                 0x2000UL
580	#define CMDQ_MODIFY_QP_MODIFY_MASK_RETRY_CNT               0x4000UL
581	#define CMDQ_MODIFY_QP_MODIFY_MASK_RNR_RETRY               0x8000UL
582	#define CMDQ_MODIFY_QP_MODIFY_MASK_RQ_PSN                  0x10000UL
583	#define CMDQ_MODIFY_QP_MODIFY_MASK_MAX_RD_ATOMIC           0x20000UL
584	#define CMDQ_MODIFY_QP_MODIFY_MASK_MIN_RNR_TIMER           0x40000UL
585	#define CMDQ_MODIFY_QP_MODIFY_MASK_SQ_PSN                  0x80000UL
586	#define CMDQ_MODIFY_QP_MODIFY_MASK_MAX_DEST_RD_ATOMIC      0x100000UL
587	#define CMDQ_MODIFY_QP_MODIFY_MASK_SQ_SIZE                 0x200000UL
588	#define CMDQ_MODIFY_QP_MODIFY_MASK_RQ_SIZE                 0x400000UL
589	#define CMDQ_MODIFY_QP_MODIFY_MASK_SQ_SGE                  0x800000UL
590	#define CMDQ_MODIFY_QP_MODIFY_MASK_RQ_SGE                  0x1000000UL
591	#define CMDQ_MODIFY_QP_MODIFY_MASK_MAX_INLINE_DATA         0x2000000UL
592	#define CMDQ_MODIFY_QP_MODIFY_MASK_DEST_QP_ID              0x4000000UL
593	#define CMDQ_MODIFY_QP_MODIFY_MASK_SRC_MAC                 0x8000000UL
594	#define CMDQ_MODIFY_QP_MODIFY_MASK_VLAN_ID                 0x10000000UL
595	#define CMDQ_MODIFY_QP_MODIFY_MASK_ENABLE_CC               0x20000000UL
596	#define CMDQ_MODIFY_QP_MODIFY_MASK_TOS_ECN                 0x40000000UL
597	#define CMDQ_MODIFY_QP_MODIFY_MASK_TOS_DSCP                0x80000000UL
598	__le32	qp_cid;
599	u8	network_type_en_sqd_async_notify_new_state;
600	#define CMDQ_MODIFY_QP_NEW_STATE_MASK          0xfUL
601	#define CMDQ_MODIFY_QP_NEW_STATE_SFT           0
602	#define CMDQ_MODIFY_QP_NEW_STATE_RESET           0x0UL
603	#define CMDQ_MODIFY_QP_NEW_STATE_INIT            0x1UL
604	#define CMDQ_MODIFY_QP_NEW_STATE_RTR             0x2UL
605	#define CMDQ_MODIFY_QP_NEW_STATE_RTS             0x3UL
606	#define CMDQ_MODIFY_QP_NEW_STATE_SQD             0x4UL
607	#define CMDQ_MODIFY_QP_NEW_STATE_SQE             0x5UL
608	#define CMDQ_MODIFY_QP_NEW_STATE_ERR             0x6UL
609	#define CMDQ_MODIFY_QP_NEW_STATE_LAST           CMDQ_MODIFY_QP_NEW_STATE_ERR
610	#define CMDQ_MODIFY_QP_EN_SQD_ASYNC_NOTIFY     0x10UL
611	#define CMDQ_MODIFY_QP_UNUSED1                 0x20UL
612	#define CMDQ_MODIFY_QP_NETWORK_TYPE_MASK       0xc0UL
613	#define CMDQ_MODIFY_QP_NETWORK_TYPE_SFT        6
614	#define CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV1       (0x0UL << 6)
615	#define CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV2_IPV4  (0x2UL << 6)
616	#define CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV2_IPV6  (0x3UL << 6)
617	#define CMDQ_MODIFY_QP_NETWORK_TYPE_LAST        CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV2_IPV6
618	u8	access;
619	#define CMDQ_MODIFY_QP_ACCESS_REMOTE_ATOMIC_REMOTE_READ_REMOTE_WRITE_LOCAL_WRITE_MASK 0xffUL
620	#define CMDQ_MODIFY_QP_ACCESS_REMOTE_ATOMIC_REMOTE_READ_REMOTE_WRITE_LOCAL_WRITE_SFT 0
621	#define CMDQ_MODIFY_QP_ACCESS_LOCAL_WRITE   0x1UL
622	#define CMDQ_MODIFY_QP_ACCESS_REMOTE_WRITE  0x2UL
623	#define CMDQ_MODIFY_QP_ACCESS_REMOTE_READ   0x4UL
624	#define CMDQ_MODIFY_QP_ACCESS_REMOTE_ATOMIC 0x8UL
625	__le16	pkey;
626	__le32	qkey;
627	__le32	dgid[4];
628	__le32	flow_label;
629	__le16	sgid_index;
630	u8	hop_limit;
631	u8	traffic_class;
632	__le16	dest_mac[3];
633	u8	tos_dscp_tos_ecn;
634	#define CMDQ_MODIFY_QP_TOS_ECN_MASK 0x3UL
635	#define CMDQ_MODIFY_QP_TOS_ECN_SFT  0
636	#define CMDQ_MODIFY_QP_TOS_DSCP_MASK 0xfcUL
637	#define CMDQ_MODIFY_QP_TOS_DSCP_SFT 2
638	u8	path_mtu_pingpong_push_enable;
639	#define CMDQ_MODIFY_QP_PINGPONG_PUSH_ENABLE     0x1UL
640	#define CMDQ_MODIFY_QP_UNUSED3_MASK             0xeUL
641	#define CMDQ_MODIFY_QP_UNUSED3_SFT              1
642	#define CMDQ_MODIFY_QP_PATH_MTU_MASK            0xf0UL
643	#define CMDQ_MODIFY_QP_PATH_MTU_SFT             4
644	#define CMDQ_MODIFY_QP_PATH_MTU_MTU_256           (0x0UL << 4)
645	#define CMDQ_MODIFY_QP_PATH_MTU_MTU_512           (0x1UL << 4)
646	#define CMDQ_MODIFY_QP_PATH_MTU_MTU_1024          (0x2UL << 4)
647	#define CMDQ_MODIFY_QP_PATH_MTU_MTU_2048          (0x3UL << 4)
648	#define CMDQ_MODIFY_QP_PATH_MTU_MTU_4096          (0x4UL << 4)
649	#define CMDQ_MODIFY_QP_PATH_MTU_MTU_8192          (0x5UL << 4)
650	#define CMDQ_MODIFY_QP_PATH_MTU_LAST             CMDQ_MODIFY_QP_PATH_MTU_MTU_8192
651	u8	timeout;
652	u8	retry_cnt;
653	u8	rnr_retry;
654	u8	min_rnr_timer;
655	__le32	rq_psn;
656	__le32	sq_psn;
657	u8	max_rd_atomic;
658	u8	max_dest_rd_atomic;
659	__le16	enable_cc;
660	#define CMDQ_MODIFY_QP_ENABLE_CC     0x1UL
661	#define CMDQ_MODIFY_QP_UNUSED15_MASK 0xfffeUL
662	#define CMDQ_MODIFY_QP_UNUSED15_SFT  1
663	__le32	sq_size;
664	__le32	rq_size;
665	__le16	sq_sge;
666	__le16	rq_sge;
667	__le32	max_inline_data;
668	__le32	dest_qp_id;
669	__le32	pingpong_push_dpi;
670	__le16	src_mac[3];
671	__le16	vlan_pcp_vlan_dei_vlan_id;
672	#define CMDQ_MODIFY_QP_VLAN_ID_MASK 0xfffUL
673	#define CMDQ_MODIFY_QP_VLAN_ID_SFT  0
674	#define CMDQ_MODIFY_QP_VLAN_DEI     0x1000UL
675	#define CMDQ_MODIFY_QP_VLAN_PCP_MASK 0xe000UL
676	#define CMDQ_MODIFY_QP_VLAN_PCP_SFT 13
677	__le64	irrq_addr;
678	__le64	orrq_addr;
679	__le32	ext_modify_mask;
680	#define CMDQ_MODIFY_QP_EXT_MODIFY_MASK_EXT_STATS_CTX     0x1UL
681	#define CMDQ_MODIFY_QP_EXT_MODIFY_MASK_SCHQ_ID_VALID     0x2UL
682	__le32	ext_stats_ctx_id;
683	__le16	schq_id;
684	__le16	unused_0;
685	__le32	reserved32;
686};
687
688/* creq_modify_qp_resp (size:128b/16B) */
689struct creq_modify_qp_resp {
690	u8	type;
691	#define CREQ_MODIFY_QP_RESP_TYPE_MASK    0x3fUL
692	#define CREQ_MODIFY_QP_RESP_TYPE_SFT     0
693	#define CREQ_MODIFY_QP_RESP_TYPE_QP_EVENT  0x38UL
694	#define CREQ_MODIFY_QP_RESP_TYPE_LAST     CREQ_MODIFY_QP_RESP_TYPE_QP_EVENT
695	u8	status;
696	__le16	cookie;
697	__le32	xid;
698	u8	v;
699	#define CREQ_MODIFY_QP_RESP_V     0x1UL
700	u8	event;
701	#define CREQ_MODIFY_QP_RESP_EVENT_MODIFY_QP 0x3UL
702	#define CREQ_MODIFY_QP_RESP_EVENT_LAST     CREQ_MODIFY_QP_RESP_EVENT_MODIFY_QP
703	u8	pingpong_push_state_index_enabled;
704	#define CREQ_MODIFY_QP_RESP_PINGPONG_PUSH_ENABLED     0x1UL
705	#define CREQ_MODIFY_QP_RESP_PINGPONG_PUSH_INDEX_MASK  0xeUL
706	#define CREQ_MODIFY_QP_RESP_PINGPONG_PUSH_INDEX_SFT   1
707	#define CREQ_MODIFY_QP_RESP_PINGPONG_PUSH_STATE       0x10UL
708	u8	reserved8;
709	__le32	lag_src_mac;
710};
711
712/* cmdq_query_qp (size:192b/24B) */
713struct cmdq_query_qp {
714	u8	opcode;
715	#define CMDQ_QUERY_QP_OPCODE_QUERY_QP 0x4UL
716	#define CMDQ_QUERY_QP_OPCODE_LAST    CMDQ_QUERY_QP_OPCODE_QUERY_QP
717	u8	cmd_size;
718	__le16	flags;
719	__le16	cookie;
720	u8	resp_size;
721	u8	reserved8;
722	__le64	resp_addr;
723	__le32	qp_cid;
724	__le32	unused_0;
725};
726
727/* creq_query_qp_resp (size:128b/16B) */
728struct creq_query_qp_resp {
729	u8	type;
730	#define CREQ_QUERY_QP_RESP_TYPE_MASK    0x3fUL
731	#define CREQ_QUERY_QP_RESP_TYPE_SFT     0
732	#define CREQ_QUERY_QP_RESP_TYPE_QP_EVENT  0x38UL
733	#define CREQ_QUERY_QP_RESP_TYPE_LAST     CREQ_QUERY_QP_RESP_TYPE_QP_EVENT
734	u8	status;
735	__le16	cookie;
736	__le32	size;
737	u8	v;
738	#define CREQ_QUERY_QP_RESP_V     0x1UL
739	u8	event;
740	#define CREQ_QUERY_QP_RESP_EVENT_QUERY_QP 0x4UL
741	#define CREQ_QUERY_QP_RESP_EVENT_LAST    CREQ_QUERY_QP_RESP_EVENT_QUERY_QP
742	u8	reserved48[6];
743};
744
745/* creq_query_qp_resp_sb (size:832b/104B) */
746struct creq_query_qp_resp_sb {
747	u8	opcode;
748	#define CREQ_QUERY_QP_RESP_SB_OPCODE_QUERY_QP 0x4UL
749	#define CREQ_QUERY_QP_RESP_SB_OPCODE_LAST    CREQ_QUERY_QP_RESP_SB_OPCODE_QUERY_QP
750	u8	status;
751	__le16	cookie;
752	__le16	flags;
753	u8	resp_size;
754	u8	reserved8;
755	__le32	xid;
756	u8	en_sqd_async_notify_state;
757	#define CREQ_QUERY_QP_RESP_SB_STATE_MASK              0xfUL
758	#define CREQ_QUERY_QP_RESP_SB_STATE_SFT               0
759	#define CREQ_QUERY_QP_RESP_SB_STATE_RESET               0x0UL
760	#define CREQ_QUERY_QP_RESP_SB_STATE_INIT                0x1UL
761	#define CREQ_QUERY_QP_RESP_SB_STATE_RTR                 0x2UL
762	#define CREQ_QUERY_QP_RESP_SB_STATE_RTS                 0x3UL
763	#define CREQ_QUERY_QP_RESP_SB_STATE_SQD                 0x4UL
764	#define CREQ_QUERY_QP_RESP_SB_STATE_SQE                 0x5UL
765	#define CREQ_QUERY_QP_RESP_SB_STATE_ERR                 0x6UL
766	#define CREQ_QUERY_QP_RESP_SB_STATE_LAST               CREQ_QUERY_QP_RESP_SB_STATE_ERR
767	#define CREQ_QUERY_QP_RESP_SB_EN_SQD_ASYNC_NOTIFY     0x10UL
768	#define CREQ_QUERY_QP_RESP_SB_UNUSED3_MASK            0xe0UL
769	#define CREQ_QUERY_QP_RESP_SB_UNUSED3_SFT             5
770	u8	access;
771	#define \
772	CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_ATOMIC_REMOTE_READ_REMOTE_WRITE_LOCAL_WRITE_MASK\
773		0xffUL
774	#define CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_ATOMIC_REMOTE_READ_REMOTE_WRITE_LOCAL_WRITE_SFT\
775		0
776	#define CREQ_QUERY_QP_RESP_SB_ACCESS_LOCAL_WRITE 0x1UL
777	#define CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_WRITE 0x2UL
778	#define CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_READ 0x4UL
779	#define CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_ATOMIC 0x8UL
780	__le16	pkey;
781	__le32	qkey;
782	__le32	reserved32;
783	__le32	dgid[4];
784	__le32	flow_label;
785	__le16	sgid_index;
786	u8	hop_limit;
787	u8	traffic_class;
788	__le16	dest_mac[3];
789	__le16	path_mtu_dest_vlan_id;
790	#define CREQ_QUERY_QP_RESP_SB_DEST_VLAN_ID_MASK 0xfffUL
791	#define CREQ_QUERY_QP_RESP_SB_DEST_VLAN_ID_SFT 0
792	#define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MASK    0xf000UL
793	#define CREQ_QUERY_QP_RESP_SB_PATH_MTU_SFT     12
794	#define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_256   (0x0UL << 12)
795	#define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_512   (0x1UL << 12)
796	#define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_1024  (0x2UL << 12)
797	#define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_2048  (0x3UL << 12)
798	#define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_4096  (0x4UL << 12)
799	#define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_8192  (0x5UL << 12)
800	#define CREQ_QUERY_QP_RESP_SB_PATH_MTU_LAST     CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_8192
801	u8	timeout;
802	u8	retry_cnt;
803	u8	rnr_retry;
804	u8	min_rnr_timer;
805	__le32	rq_psn;
806	__le32	sq_psn;
807	u8	max_rd_atomic;
808	u8	max_dest_rd_atomic;
809	u8	tos_dscp_tos_ecn;
810	#define CREQ_QUERY_QP_RESP_SB_TOS_ECN_MASK 0x3UL
811	#define CREQ_QUERY_QP_RESP_SB_TOS_ECN_SFT  0
812	#define CREQ_QUERY_QP_RESP_SB_TOS_DSCP_MASK 0xfcUL
813	#define CREQ_QUERY_QP_RESP_SB_TOS_DSCP_SFT 2
814	u8	enable_cc;
815	#define CREQ_QUERY_QP_RESP_SB_ENABLE_CC     0x1UL
816	__le32	sq_size;
817	__le32	rq_size;
818	__le16	sq_sge;
819	__le16	rq_sge;
820	__le32	max_inline_data;
821	__le32	dest_qp_id;
822	__le16	port_id;
823	u8	unused_0;
824	u8	stat_collection_id;
825	__le16	src_mac[3];
826	__le16	vlan_pcp_vlan_dei_vlan_id;
827	#define CREQ_QUERY_QP_RESP_SB_VLAN_ID_MASK 0xfffUL
828	#define CREQ_QUERY_QP_RESP_SB_VLAN_ID_SFT  0
829	#define CREQ_QUERY_QP_RESP_SB_VLAN_DEI     0x1000UL
830	#define CREQ_QUERY_QP_RESP_SB_VLAN_PCP_MASK 0xe000UL
831	#define CREQ_QUERY_QP_RESP_SB_VLAN_PCP_SFT 13
832};
833
834/* cmdq_query_qp_extend (size:192b/24B) */
835struct cmdq_query_qp_extend {
836	u8	opcode;
837	#define CMDQ_QUERY_QP_EXTEND_OPCODE_QUERY_QP_EXTEND 0x91UL
838	#define CMDQ_QUERY_QP_EXTEND_OPCODE_LAST CMDQ_QUERY_QP_EXTEND_OPCODE_QUERY_QP_EXTEND
839	u8	cmd_size;
840	__le16	flags;
841	__le16	cookie;
842	u8	resp_size;
843	u8	num_qps;
844	__le64	resp_addr;
845	__le32	function_id;
846	#define CMDQ_QUERY_QP_EXTEND_PF_NUM_MASK  0xffUL
847	#define CMDQ_QUERY_QP_EXTEND_PF_NUM_SFT   0
848	#define CMDQ_QUERY_QP_EXTEND_VF_NUM_MASK  0xffff00UL
849	#define CMDQ_QUERY_QP_EXTEND_VF_NUM_SFT   8
850	#define CMDQ_QUERY_QP_EXTEND_VF_VALID     0x1000000UL
851	__le32	current_index;
852};
853
854/* creq_query_qp_extend_resp (size:128b/16B) */
855struct creq_query_qp_extend_resp {
856	u8	type;
857	#define CREQ_QUERY_QP_EXTEND_RESP_TYPE_MASK    0x3fUL
858	#define CREQ_QUERY_QP_EXTEND_RESP_TYPE_SFT     0
859	#define CREQ_QUERY_QP_EXTEND_RESP_TYPE_QP_EVENT  0x38UL
860	#define CREQ_QUERY_QP_EXTEND_RESP_TYPE_LAST     CREQ_QUERY_QP_EXTEND_RESP_TYPE_QP_EVENT
861	u8	status;
862	__le16	cookie;
863	__le32	size;
864	u8	v;
865	#define CREQ_QUERY_QP_EXTEND_RESP_V     0x1UL
866	u8	event;
867	#define CREQ_QUERY_QP_EXTEND_RESP_EVENT_QUERY_QP_EXTEND 0x91UL
868	#define CREQ_QUERY_QP_EXTEND_RESP_EVENT_LAST CREQ_QUERY_QP_EXTEND_RESP_EVENT_QUERY_QP_EXTEND
869	__le16	reserved16;
870	__le32	current_index;
871};
872
873/* creq_query_qp_extend_resp_sb (size:384b/48B) */
874struct creq_query_qp_extend_resp_sb {
875	u8	opcode;
876	#define CREQ_QUERY_QP_EXTEND_RESP_SB_OPCODE_QUERY_QP_EXTEND 0x91UL
877	#define CREQ_QUERY_QP_EXTEND_RESP_SB_OPCODE_LAST \
878		CREQ_QUERY_QP_EXTEND_RESP_SB_OPCODE_QUERY_QP_EXTEND
879	u8	status;
880	__le16	cookie;
881	__le16	flags;
882	u8	resp_size;
883	u8	reserved8;
884	__le32	xid;
885	u8	state;
886	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_MASK  0xfUL
887	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_SFT   0
888	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_RESET   0x0UL
889	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_INIT    0x1UL
890	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_RTR     0x2UL
891	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_RTS     0x3UL
892	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_SQD     0x4UL
893	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_SQE     0x5UL
894	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_ERR     0x6UL
895	#define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_LAST   CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_ERR
896	#define CREQ_QUERY_QP_EXTEND_RESP_SB_UNUSED4_MASK 0xf0UL
897	#define CREQ_QUERY_QP_EXTEND_RESP_SB_UNUSED4_SFT 4
898	u8	reserved_8;
899	__le16	port_id;
900	__le32	qkey;
901	__le16	sgid_index;
902	u8	network_type;
903	#define CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_ROCEV1      0x0UL
904	#define CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_ROCEV2_IPV4 0x2UL
905	#define CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_ROCEV2_IPV6 0x3UL
906	#define CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_LAST \
907		CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_ROCEV2_IPV6
908	u8	unused_0;
909	__le32	dgid[4];
910	__le32	dest_qp_id;
911	u8	stat_collection_id;
912	u8	reservred_8;
913	__le16	reserved_16;
914};
915
916/* creq_query_qp_extend_resp_sb_tlv (size:512b/64B) */
917struct creq_query_qp_extend_resp_sb_tlv {
918	__le16	cmd_discr;
919	u8	reserved_8b;
920	u8	tlv_flags;
921	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_MORE         0x1UL
922	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_MORE_LAST      0x0UL
923	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_MORE_NOT_LAST  0x1UL
924	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED     0x2UL
925	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED_NO    (0x0UL << 1)
926	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES   (0x1UL << 1)
927	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED_LAST \
928		CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES
929	__le16	tlv_type;
930	__le16	length;
931	u8	total_size;
932	u8	reserved56[7];
933	u8	opcode;
934	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_OPCODE_QUERY_QP_EXTEND 0x91UL
935	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_OPCODE_LAST \
936		CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_OPCODE_QUERY_QP_EXTEND
937	u8	status;
938	__le16	cookie;
939	__le16	flags;
940	u8	resp_size;
941	u8	reserved8;
942	__le32	xid;
943	u8	state;
944	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_MASK  0xfUL
945	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_SFT   0
946	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_RESET   0x0UL
947	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_INIT    0x1UL
948	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_RTR     0x2UL
949	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_RTS     0x3UL
950	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_SQD     0x4UL
951	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_SQE     0x5UL
952	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_ERR     0x6UL
953	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_LAST \
954		CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_ERR
955	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_UNUSED4_MASK 0xf0UL
956	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_UNUSED4_SFT 4
957	u8	reserved_8;
958	__le16	port_id;
959	__le32	qkey;
960	__le16	sgid_index;
961	u8	network_type;
962	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_ROCEV1      0x0UL
963	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_ROCEV2_IPV4 0x2UL
964	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_ROCEV2_IPV6 0x3UL
965	#define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_LAST \
966		CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_ROCEV2_IPV6
967	u8	unused_0;
968	__le32	dgid[4];
969	__le32	dest_qp_id;
970	u8	stat_collection_id;
971	u8	reservred_8;
972	__le16	reserved_16;
973};
974
975/* cmdq_create_srq (size:384b/48B) */
976struct cmdq_create_srq {
977	u8	opcode;
978	#define CMDQ_CREATE_SRQ_OPCODE_CREATE_SRQ 0x5UL
979	#define CMDQ_CREATE_SRQ_OPCODE_LAST      CMDQ_CREATE_SRQ_OPCODE_CREATE_SRQ
980	u8	cmd_size;
981	__le16	flags;
982	__le16	cookie;
983	u8	resp_size;
984	u8	reserved8;
985	__le64	resp_addr;
986	__le64	srq_handle;
987	__le16	pg_size_lvl;
988	#define CMDQ_CREATE_SRQ_LVL_MASK      0x3UL
989	#define CMDQ_CREATE_SRQ_LVL_SFT       0
990	#define CMDQ_CREATE_SRQ_LVL_LVL_0       0x0UL
991	#define CMDQ_CREATE_SRQ_LVL_LVL_1       0x1UL
992	#define CMDQ_CREATE_SRQ_LVL_LVL_2       0x2UL
993	#define CMDQ_CREATE_SRQ_LVL_LAST       CMDQ_CREATE_SRQ_LVL_LVL_2
994	#define CMDQ_CREATE_SRQ_PG_SIZE_MASK  0x1cUL
995	#define CMDQ_CREATE_SRQ_PG_SIZE_SFT   2
996	#define CMDQ_CREATE_SRQ_PG_SIZE_PG_4K   (0x0UL << 2)
997	#define CMDQ_CREATE_SRQ_PG_SIZE_PG_8K   (0x1UL << 2)
998	#define CMDQ_CREATE_SRQ_PG_SIZE_PG_64K  (0x2UL << 2)
999	#define CMDQ_CREATE_SRQ_PG_SIZE_PG_2M   (0x3UL << 2)
1000	#define CMDQ_CREATE_SRQ_PG_SIZE_PG_8M   (0x4UL << 2)
1001	#define CMDQ_CREATE_SRQ_PG_SIZE_PG_1G   (0x5UL << 2)
1002	#define CMDQ_CREATE_SRQ_PG_SIZE_LAST   CMDQ_CREATE_SRQ_PG_SIZE_PG_1G
1003	#define CMDQ_CREATE_SRQ_UNUSED11_MASK 0xffe0UL
1004	#define CMDQ_CREATE_SRQ_UNUSED11_SFT  5
1005	__le16	eventq_id;
1006	#define CMDQ_CREATE_SRQ_EVENTQ_ID_MASK 0xfffUL
1007	#define CMDQ_CREATE_SRQ_EVENTQ_ID_SFT 0
1008	#define CMDQ_CREATE_SRQ_UNUSED4_MASK  0xf000UL
1009	#define CMDQ_CREATE_SRQ_UNUSED4_SFT   12
1010	__le16	srq_size;
1011	__le16	srq_fwo;
1012	__le32	dpi;
1013	__le32	pd_id;
1014	__le64	pbl;
1015};
1016
1017/* creq_create_srq_resp (size:128b/16B) */
1018struct creq_create_srq_resp {
1019	u8	type;
1020	#define CREQ_CREATE_SRQ_RESP_TYPE_MASK    0x3fUL
1021	#define CREQ_CREATE_SRQ_RESP_TYPE_SFT     0
1022	#define CREQ_CREATE_SRQ_RESP_TYPE_QP_EVENT  0x38UL
1023	#define CREQ_CREATE_SRQ_RESP_TYPE_LAST     CREQ_CREATE_SRQ_RESP_TYPE_QP_EVENT
1024	u8	status;
1025	__le16	cookie;
1026	__le32	xid;
1027	u8	v;
1028	#define CREQ_CREATE_SRQ_RESP_V     0x1UL
1029	u8	event;
1030	#define CREQ_CREATE_SRQ_RESP_EVENT_CREATE_SRQ 0x5UL
1031	#define CREQ_CREATE_SRQ_RESP_EVENT_LAST      CREQ_CREATE_SRQ_RESP_EVENT_CREATE_SRQ
1032	u8	reserved48[6];
1033};
1034
1035/* cmdq_destroy_srq (size:192b/24B) */
1036struct cmdq_destroy_srq {
1037	u8	opcode;
1038	#define CMDQ_DESTROY_SRQ_OPCODE_DESTROY_SRQ 0x6UL
1039	#define CMDQ_DESTROY_SRQ_OPCODE_LAST       CMDQ_DESTROY_SRQ_OPCODE_DESTROY_SRQ
1040	u8	cmd_size;
1041	__le16	flags;
1042	__le16	cookie;
1043	u8	resp_size;
1044	u8	reserved8;
1045	__le64	resp_addr;
1046	__le32	srq_cid;
1047	__le32	unused_0;
1048};
1049
1050/* creq_destroy_srq_resp (size:128b/16B) */
1051struct creq_destroy_srq_resp {
1052	u8	type;
1053	#define CREQ_DESTROY_SRQ_RESP_TYPE_MASK    0x3fUL
1054	#define CREQ_DESTROY_SRQ_RESP_TYPE_SFT     0
1055	#define CREQ_DESTROY_SRQ_RESP_TYPE_QP_EVENT  0x38UL
1056	#define CREQ_DESTROY_SRQ_RESP_TYPE_LAST     CREQ_DESTROY_SRQ_RESP_TYPE_QP_EVENT
1057	u8	status;
1058	__le16	cookie;
1059	__le32	xid;
1060	u8	v;
1061	#define CREQ_DESTROY_SRQ_RESP_V     0x1UL
1062	u8	event;
1063	#define CREQ_DESTROY_SRQ_RESP_EVENT_DESTROY_SRQ 0x6UL
1064	#define CREQ_DESTROY_SRQ_RESP_EVENT_LAST       CREQ_DESTROY_SRQ_RESP_EVENT_DESTROY_SRQ
1065	__le16	enable_for_arm[3];
1066	#define CREQ_DESTROY_SRQ_RESP_UNUSED0_MASK       0xffffUL
1067	#define CREQ_DESTROY_SRQ_RESP_UNUSED0_SFT        0
1068	#define CREQ_DESTROY_SRQ_RESP_ENABLE_FOR_ARM_MASK 0x30000UL
1069	#define CREQ_DESTROY_SRQ_RESP_ENABLE_FOR_ARM_SFT 16
1070};
1071
1072/* cmdq_query_srq (size:192b/24B) */
1073struct cmdq_query_srq {
1074	u8	opcode;
1075	#define CMDQ_QUERY_SRQ_OPCODE_QUERY_SRQ 0x8UL
1076	#define CMDQ_QUERY_SRQ_OPCODE_LAST     CMDQ_QUERY_SRQ_OPCODE_QUERY_SRQ
1077	u8	cmd_size;
1078	__le16	flags;
1079	__le16	cookie;
1080	u8	resp_size;
1081	u8	reserved8;
1082	__le64	resp_addr;
1083	__le32	srq_cid;
1084	__le32	unused_0;
1085};
1086
1087/* creq_query_srq_resp (size:128b/16B) */
1088struct creq_query_srq_resp {
1089	u8	type;
1090	#define CREQ_QUERY_SRQ_RESP_TYPE_MASK    0x3fUL
1091	#define CREQ_QUERY_SRQ_RESP_TYPE_SFT     0
1092	#define CREQ_QUERY_SRQ_RESP_TYPE_QP_EVENT  0x38UL
1093	#define CREQ_QUERY_SRQ_RESP_TYPE_LAST     CREQ_QUERY_SRQ_RESP_TYPE_QP_EVENT
1094	u8	status;
1095	__le16	cookie;
1096	__le32	size;
1097	u8	v;
1098	#define CREQ_QUERY_SRQ_RESP_V     0x1UL
1099	u8	event;
1100	#define CREQ_QUERY_SRQ_RESP_EVENT_QUERY_SRQ 0x8UL
1101	#define CREQ_QUERY_SRQ_RESP_EVENT_LAST     CREQ_QUERY_SRQ_RESP_EVENT_QUERY_SRQ
1102	u8	reserved48[6];
1103};
1104
1105/* creq_query_srq_resp_sb (size:256b/32B) */
1106struct creq_query_srq_resp_sb {
1107	u8	opcode;
1108	#define CREQ_QUERY_SRQ_RESP_SB_OPCODE_QUERY_SRQ 0x8UL
1109	#define CREQ_QUERY_SRQ_RESP_SB_OPCODE_LAST     CREQ_QUERY_SRQ_RESP_SB_OPCODE_QUERY_SRQ
1110	u8	status;
1111	__le16	cookie;
1112	__le16	flags;
1113	u8	resp_size;
1114	u8	reserved8;
1115	__le32	xid;
1116	__le16	srq_limit;
1117	__le16	reserved16;
1118	__le32	data[4];
1119};
1120
1121/* cmdq_create_cq (size:384b/48B) */
1122struct cmdq_create_cq {
1123	u8	opcode;
1124	#define CMDQ_CREATE_CQ_OPCODE_CREATE_CQ 0x9UL
1125	#define CMDQ_CREATE_CQ_OPCODE_LAST     CMDQ_CREATE_CQ_OPCODE_CREATE_CQ
1126	u8	cmd_size;
1127	__le16	flags;
1128	#define CMDQ_CREATE_CQ_FLAGS_DISABLE_CQ_OVERFLOW_DETECTION     0x1UL
1129	__le16	cookie;
1130	u8	resp_size;
1131	u8	reserved8;
1132	__le64	resp_addr;
1133	__le64	cq_handle;
1134	__le32	pg_size_lvl;
1135	#define CMDQ_CREATE_CQ_LVL_MASK      0x3UL
1136	#define CMDQ_CREATE_CQ_LVL_SFT       0
1137	#define CMDQ_CREATE_CQ_LVL_LVL_0       0x0UL
1138	#define CMDQ_CREATE_CQ_LVL_LVL_1       0x1UL
1139	#define CMDQ_CREATE_CQ_LVL_LVL_2       0x2UL
1140	#define CMDQ_CREATE_CQ_LVL_LAST       CMDQ_CREATE_CQ_LVL_LVL_2
1141	#define CMDQ_CREATE_CQ_PG_SIZE_MASK  0x1cUL
1142	#define CMDQ_CREATE_CQ_PG_SIZE_SFT   2
1143	#define CMDQ_CREATE_CQ_PG_SIZE_PG_4K   (0x0UL << 2)
1144	#define CMDQ_CREATE_CQ_PG_SIZE_PG_8K   (0x1UL << 2)
1145	#define CMDQ_CREATE_CQ_PG_SIZE_PG_64K  (0x2UL << 2)
1146	#define CMDQ_CREATE_CQ_PG_SIZE_PG_2M   (0x3UL << 2)
1147	#define CMDQ_CREATE_CQ_PG_SIZE_PG_8M   (0x4UL << 2)
1148	#define CMDQ_CREATE_CQ_PG_SIZE_PG_1G   (0x5UL << 2)
1149	#define CMDQ_CREATE_CQ_PG_SIZE_LAST   CMDQ_CREATE_CQ_PG_SIZE_PG_1G
1150	#define CMDQ_CREATE_CQ_UNUSED27_MASK 0xffffffe0UL
1151	#define CMDQ_CREATE_CQ_UNUSED27_SFT  5
1152	__le32	cq_fco_cnq_id;
1153	#define CMDQ_CREATE_CQ_CNQ_ID_MASK 0xfffUL
1154	#define CMDQ_CREATE_CQ_CNQ_ID_SFT 0
1155	#define CMDQ_CREATE_CQ_CQ_FCO_MASK 0xfffff000UL
1156	#define CMDQ_CREATE_CQ_CQ_FCO_SFT 12
1157	__le32	dpi;
1158	__le32	cq_size;
1159	__le64	pbl;
1160};
1161
1162/* creq_create_cq_resp (size:128b/16B) */
1163struct creq_create_cq_resp {
1164	u8	type;
1165	#define CREQ_CREATE_CQ_RESP_TYPE_MASK    0x3fUL
1166	#define CREQ_CREATE_CQ_RESP_TYPE_SFT     0
1167	#define CREQ_CREATE_CQ_RESP_TYPE_QP_EVENT  0x38UL
1168	#define CREQ_CREATE_CQ_RESP_TYPE_LAST     CREQ_CREATE_CQ_RESP_TYPE_QP_EVENT
1169	u8	status;
1170	__le16	cookie;
1171	__le32	xid;
1172	u8	v;
1173	#define CREQ_CREATE_CQ_RESP_V     0x1UL
1174	u8	event;
1175	#define CREQ_CREATE_CQ_RESP_EVENT_CREATE_CQ 0x9UL
1176	#define CREQ_CREATE_CQ_RESP_EVENT_LAST     CREQ_CREATE_CQ_RESP_EVENT_CREATE_CQ
1177	u8	reserved48[6];
1178};
1179
1180/* cmdq_destroy_cq (size:192b/24B) */
1181struct cmdq_destroy_cq {
1182	u8	opcode;
1183	#define CMDQ_DESTROY_CQ_OPCODE_DESTROY_CQ 0xaUL
1184	#define CMDQ_DESTROY_CQ_OPCODE_LAST      CMDQ_DESTROY_CQ_OPCODE_DESTROY_CQ
1185	u8	cmd_size;
1186	__le16	flags;
1187	__le16	cookie;
1188	u8	resp_size;
1189	u8	reserved8;
1190	__le64	resp_addr;
1191	__le32	cq_cid;
1192	__le32	unused_0;
1193};
1194
1195/* creq_destroy_cq_resp (size:128b/16B) */
1196struct creq_destroy_cq_resp {
1197	u8	type;
1198	#define CREQ_DESTROY_CQ_RESP_TYPE_MASK    0x3fUL
1199	#define CREQ_DESTROY_CQ_RESP_TYPE_SFT     0
1200	#define CREQ_DESTROY_CQ_RESP_TYPE_QP_EVENT  0x38UL
1201	#define CREQ_DESTROY_CQ_RESP_TYPE_LAST     CREQ_DESTROY_CQ_RESP_TYPE_QP_EVENT
1202	u8	status;
1203	__le16	cookie;
1204	__le32	xid;
1205	u8	v;
1206	#define CREQ_DESTROY_CQ_RESP_V     0x1UL
1207	u8	event;
1208	#define CREQ_DESTROY_CQ_RESP_EVENT_DESTROY_CQ 0xaUL
1209	#define CREQ_DESTROY_CQ_RESP_EVENT_LAST      CREQ_DESTROY_CQ_RESP_EVENT_DESTROY_CQ
1210	__le16	cq_arm_lvl;
1211	#define CREQ_DESTROY_CQ_RESP_CQ_ARM_LVL_MASK 0x3UL
1212	#define CREQ_DESTROY_CQ_RESP_CQ_ARM_LVL_SFT 0
1213	__le16	total_cnq_events;
1214	__le16	reserved16;
1215};
1216
1217/* cmdq_resize_cq (size:320b/40B) */
1218struct cmdq_resize_cq {
1219	u8	opcode;
1220	#define CMDQ_RESIZE_CQ_OPCODE_RESIZE_CQ 0xcUL
1221	#define CMDQ_RESIZE_CQ_OPCODE_LAST     CMDQ_RESIZE_CQ_OPCODE_RESIZE_CQ
1222	u8	cmd_size;
1223	__le16	flags;
1224	__le16	cookie;
1225	u8	resp_size;
1226	u8	reserved8;
1227	__le64	resp_addr;
1228	__le32	cq_cid;
1229	__le32	new_cq_size_pg_size_lvl;
1230	#define CMDQ_RESIZE_CQ_LVL_MASK        0x3UL
1231	#define CMDQ_RESIZE_CQ_LVL_SFT         0
1232	#define CMDQ_RESIZE_CQ_LVL_LVL_0         0x0UL
1233	#define CMDQ_RESIZE_CQ_LVL_LVL_1         0x1UL
1234	#define CMDQ_RESIZE_CQ_LVL_LVL_2         0x2UL
1235	#define CMDQ_RESIZE_CQ_LVL_LAST         CMDQ_RESIZE_CQ_LVL_LVL_2
1236	#define CMDQ_RESIZE_CQ_PG_SIZE_MASK    0x1cUL
1237	#define CMDQ_RESIZE_CQ_PG_SIZE_SFT     2
1238	#define CMDQ_RESIZE_CQ_PG_SIZE_PG_4K     (0x0UL << 2)
1239	#define CMDQ_RESIZE_CQ_PG_SIZE_PG_8K     (0x1UL << 2)
1240	#define CMDQ_RESIZE_CQ_PG_SIZE_PG_64K    (0x2UL << 2)
1241	#define CMDQ_RESIZE_CQ_PG_SIZE_PG_2M     (0x3UL << 2)
1242	#define CMDQ_RESIZE_CQ_PG_SIZE_PG_8M     (0x4UL << 2)
1243	#define CMDQ_RESIZE_CQ_PG_SIZE_PG_1G     (0x5UL << 2)
1244	#define CMDQ_RESIZE_CQ_PG_SIZE_LAST     CMDQ_RESIZE_CQ_PG_SIZE_PG_1G
1245	#define CMDQ_RESIZE_CQ_NEW_CQ_SIZE_MASK 0x1fffffe0UL
1246	#define CMDQ_RESIZE_CQ_NEW_CQ_SIZE_SFT 5
1247	__le64	new_pbl;
1248	__le32	new_cq_fco;
1249	__le32	unused_0;
1250};
1251
1252/* creq_resize_cq_resp (size:128b/16B) */
1253struct creq_resize_cq_resp {
1254	u8	type;
1255	#define CREQ_RESIZE_CQ_RESP_TYPE_MASK    0x3fUL
1256	#define CREQ_RESIZE_CQ_RESP_TYPE_SFT     0
1257	#define CREQ_RESIZE_CQ_RESP_TYPE_QP_EVENT  0x38UL
1258	#define CREQ_RESIZE_CQ_RESP_TYPE_LAST     CREQ_RESIZE_CQ_RESP_TYPE_QP_EVENT
1259	u8	status;
1260	__le16	cookie;
1261	__le32	xid;
1262	u8	v;
1263	#define CREQ_RESIZE_CQ_RESP_V     0x1UL
1264	u8	event;
1265	#define CREQ_RESIZE_CQ_RESP_EVENT_RESIZE_CQ 0xcUL
1266	#define CREQ_RESIZE_CQ_RESP_EVENT_LAST     CREQ_RESIZE_CQ_RESP_EVENT_RESIZE_CQ
1267	u8	reserved48[6];
1268};
1269
1270/* cmdq_allocate_mrw (size:256b/32B) */
1271struct cmdq_allocate_mrw {
1272	u8	opcode;
1273	#define CMDQ_ALLOCATE_MRW_OPCODE_ALLOCATE_MRW 0xdUL
1274	#define CMDQ_ALLOCATE_MRW_OPCODE_LAST        CMDQ_ALLOCATE_MRW_OPCODE_ALLOCATE_MRW
1275	u8	cmd_size;
1276	__le16	flags;
1277	__le16	cookie;
1278	u8	resp_size;
1279	u8	reserved8;
1280	__le64	resp_addr;
1281	__le64	mrw_handle;
1282	u8	mrw_flags;
1283	#define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MASK     0xfUL
1284	#define CMDQ_ALLOCATE_MRW_MRW_FLAGS_SFT      0
1285	#define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MR         0x0UL
1286	#define CMDQ_ALLOCATE_MRW_MRW_FLAGS_PMR        0x1UL
1287	#define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MW_TYPE1   0x2UL
1288	#define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MW_TYPE2A  0x3UL
1289	#define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MW_TYPE2B  0x4UL
1290	#define CMDQ_ALLOCATE_MRW_MRW_FLAGS_LAST      CMDQ_ALLOCATE_MRW_MRW_FLAGS_MW_TYPE2B
1291	#define CMDQ_ALLOCATE_MRW_UNUSED4_MASK       0xf0UL
1292	#define CMDQ_ALLOCATE_MRW_UNUSED4_SFT        4
1293	u8	access;
1294	#define CMDQ_ALLOCATE_MRW_ACCESS_CONSUMER_OWNED_KEY     0x20UL
1295	__le16	unused16;
1296	__le32	pd_id;
1297};
1298
1299/* creq_allocate_mrw_resp (size:128b/16B) */
1300struct creq_allocate_mrw_resp {
1301	u8	type;
1302	#define CREQ_ALLOCATE_MRW_RESP_TYPE_MASK    0x3fUL
1303	#define CREQ_ALLOCATE_MRW_RESP_TYPE_SFT     0
1304	#define CREQ_ALLOCATE_MRW_RESP_TYPE_QP_EVENT  0x38UL
1305	#define CREQ_ALLOCATE_MRW_RESP_TYPE_LAST     CREQ_ALLOCATE_MRW_RESP_TYPE_QP_EVENT
1306	u8	status;
1307	__le16	cookie;
1308	__le32	xid;
1309	u8	v;
1310	#define CREQ_ALLOCATE_MRW_RESP_V     0x1UL
1311	u8	event;
1312	#define CREQ_ALLOCATE_MRW_RESP_EVENT_ALLOCATE_MRW 0xdUL
1313	#define CREQ_ALLOCATE_MRW_RESP_EVENT_LAST        CREQ_ALLOCATE_MRW_RESP_EVENT_ALLOCATE_MRW
1314	u8	reserved48[6];
1315};
1316
1317/* cmdq_deallocate_key (size:192b/24B) */
1318struct cmdq_deallocate_key {
1319	u8	opcode;
1320	#define CMDQ_DEALLOCATE_KEY_OPCODE_DEALLOCATE_KEY 0xeUL
1321	#define CMDQ_DEALLOCATE_KEY_OPCODE_LAST          CMDQ_DEALLOCATE_KEY_OPCODE_DEALLOCATE_KEY
1322	u8	cmd_size;
1323	__le16	flags;
1324	__le16	cookie;
1325	u8	resp_size;
1326	u8	reserved8;
1327	__le64	resp_addr;
1328	u8	mrw_flags;
1329	#define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MASK     0xfUL
1330	#define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_SFT      0
1331	#define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MR         0x0UL
1332	#define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_PMR        0x1UL
1333	#define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MW_TYPE1   0x2UL
1334	#define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MW_TYPE2A  0x3UL
1335	#define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MW_TYPE2B  0x4UL
1336	#define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_LAST      CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MW_TYPE2B
1337	#define CMDQ_DEALLOCATE_KEY_UNUSED4_MASK       0xf0UL
1338	#define CMDQ_DEALLOCATE_KEY_UNUSED4_SFT        4
1339	u8	unused24[3];
1340	__le32	key;
1341};
1342
1343/* creq_deallocate_key_resp (size:128b/16B) */
1344struct creq_deallocate_key_resp {
1345	u8	type;
1346	#define CREQ_DEALLOCATE_KEY_RESP_TYPE_MASK    0x3fUL
1347	#define CREQ_DEALLOCATE_KEY_RESP_TYPE_SFT     0
1348	#define CREQ_DEALLOCATE_KEY_RESP_TYPE_QP_EVENT  0x38UL
1349	#define CREQ_DEALLOCATE_KEY_RESP_TYPE_LAST     CREQ_DEALLOCATE_KEY_RESP_TYPE_QP_EVENT
1350	u8	status;
1351	__le16	cookie;
1352	__le32	xid;
1353	u8	v;
1354	#define CREQ_DEALLOCATE_KEY_RESP_V     0x1UL
1355	u8	event;
1356	#define CREQ_DEALLOCATE_KEY_RESP_EVENT_DEALLOCATE_KEY 0xeUL
1357	#define CREQ_DEALLOCATE_KEY_RESP_EVENT_LAST CREQ_DEALLOCATE_KEY_RESP_EVENT_DEALLOCATE_KEY
1358	__le16	reserved16;
1359	__le32	bound_window_info;
1360};
1361
1362/* cmdq_register_mr (size:384b/48B) */
1363struct cmdq_register_mr {
1364	u8	opcode;
1365	#define CMDQ_REGISTER_MR_OPCODE_REGISTER_MR 0xfUL
1366	#define CMDQ_REGISTER_MR_OPCODE_LAST       CMDQ_REGISTER_MR_OPCODE_REGISTER_MR
1367	u8	cmd_size;
1368	__le16	flags;
1369	#define CMDQ_REGISTER_MR_FLAGS_ALLOC_MR     0x1UL
1370	__le16	cookie;
1371	u8	resp_size;
1372	u8	reserved8;
1373	__le64	resp_addr;
1374	u8	log2_pg_size_lvl;
1375	#define CMDQ_REGISTER_MR_LVL_MASK            0x3UL
1376	#define CMDQ_REGISTER_MR_LVL_SFT             0
1377	#define CMDQ_REGISTER_MR_LVL_LVL_0             0x0UL
1378	#define CMDQ_REGISTER_MR_LVL_LVL_1             0x1UL
1379	#define CMDQ_REGISTER_MR_LVL_LVL_2             0x2UL
1380	#define CMDQ_REGISTER_MR_LVL_LAST             CMDQ_REGISTER_MR_LVL_LVL_2
1381	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_MASK   0x7cUL
1382	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_SFT    2
1383	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_4K    (0xcUL << 2)
1384	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_8K    (0xdUL << 2)
1385	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_64K   (0x10UL << 2)
1386	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_256K  (0x12UL << 2)
1387	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_1M    (0x14UL << 2)
1388	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_2M    (0x15UL << 2)
1389	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_4M    (0x16UL << 2)
1390	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_1G    (0x1eUL << 2)
1391	#define CMDQ_REGISTER_MR_LOG2_PG_SIZE_LAST    CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_1G
1392	#define CMDQ_REGISTER_MR_UNUSED1             0x80UL
1393	u8	access;
1394	#define CMDQ_REGISTER_MR_ACCESS_LOCAL_WRITE       0x1UL
1395	#define CMDQ_REGISTER_MR_ACCESS_REMOTE_READ       0x2UL
1396	#define CMDQ_REGISTER_MR_ACCESS_REMOTE_WRITE      0x4UL
1397	#define CMDQ_REGISTER_MR_ACCESS_REMOTE_ATOMIC     0x8UL
1398	#define CMDQ_REGISTER_MR_ACCESS_MW_BIND           0x10UL
1399	#define CMDQ_REGISTER_MR_ACCESS_ZERO_BASED        0x20UL
1400	__le16	log2_pbl_pg_size;
1401	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_MASK   0x1fUL
1402	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_SFT    0
1403	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_4K    0xcUL
1404	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_8K    0xdUL
1405	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_64K   0x10UL
1406	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_256K  0x12UL
1407	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_1M    0x14UL
1408	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_2M    0x15UL
1409	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_4M    0x16UL
1410	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_1G    0x1eUL
1411	#define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_LAST    CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_1G
1412	#define CMDQ_REGISTER_MR_UNUSED11_MASK           0xffe0UL
1413	#define CMDQ_REGISTER_MR_UNUSED11_SFT            5
1414	__le32	key;
1415	__le64	pbl;
1416	__le64	va;
1417	__le64	mr_size;
1418};
1419
1420/* creq_register_mr_resp (size:128b/16B) */
1421struct creq_register_mr_resp {
1422	u8	type;
1423	#define CREQ_REGISTER_MR_RESP_TYPE_MASK    0x3fUL
1424	#define CREQ_REGISTER_MR_RESP_TYPE_SFT     0
1425	#define CREQ_REGISTER_MR_RESP_TYPE_QP_EVENT  0x38UL
1426	#define CREQ_REGISTER_MR_RESP_TYPE_LAST     CREQ_REGISTER_MR_RESP_TYPE_QP_EVENT
1427	u8	status;
1428	__le16	cookie;
1429	__le32	xid;
1430	u8	v;
1431	#define CREQ_REGISTER_MR_RESP_V     0x1UL
1432	u8	event;
1433	#define CREQ_REGISTER_MR_RESP_EVENT_REGISTER_MR 0xfUL
1434	#define CREQ_REGISTER_MR_RESP_EVENT_LAST       CREQ_REGISTER_MR_RESP_EVENT_REGISTER_MR
1435	u8	reserved48[6];
1436};
1437
1438/* cmdq_deregister_mr (size:192b/24B) */
1439struct cmdq_deregister_mr {
1440	u8	opcode;
1441	#define CMDQ_DEREGISTER_MR_OPCODE_DEREGISTER_MR 0x10UL
1442	#define CMDQ_DEREGISTER_MR_OPCODE_LAST         CMDQ_DEREGISTER_MR_OPCODE_DEREGISTER_MR
1443	u8	cmd_size;
1444	__le16	flags;
1445	__le16	cookie;
1446	u8	resp_size;
1447	u8	reserved8;
1448	__le64	resp_addr;
1449	__le32	lkey;
1450	__le32	unused_0;
1451};
1452
1453/* creq_deregister_mr_resp (size:128b/16B) */
1454struct creq_deregister_mr_resp {
1455	u8	type;
1456	#define CREQ_DEREGISTER_MR_RESP_TYPE_MASK    0x3fUL
1457	#define CREQ_DEREGISTER_MR_RESP_TYPE_SFT     0
1458	#define CREQ_DEREGISTER_MR_RESP_TYPE_QP_EVENT  0x38UL
1459	#define CREQ_DEREGISTER_MR_RESP_TYPE_LAST     CREQ_DEREGISTER_MR_RESP_TYPE_QP_EVENT
1460	u8	status;
1461	__le16	cookie;
1462	__le32	xid;
1463	u8	v;
1464	#define CREQ_DEREGISTER_MR_RESP_V     0x1UL
1465	u8	event;
1466	#define CREQ_DEREGISTER_MR_RESP_EVENT_DEREGISTER_MR 0x10UL
1467	#define CREQ_DEREGISTER_MR_RESP_EVENT_LAST CREQ_DEREGISTER_MR_RESP_EVENT_DEREGISTER_MR
1468	__le16	reserved16;
1469	__le32	bound_windows;
1470};
1471
1472/* cmdq_add_gid (size:384b/48B) */
1473struct cmdq_add_gid {
1474	u8	opcode;
1475	#define CMDQ_ADD_GID_OPCODE_ADD_GID 0x11UL
1476	#define CMDQ_ADD_GID_OPCODE_LAST   CMDQ_ADD_GID_OPCODE_ADD_GID
1477	u8	cmd_size;
1478	__le16	flags;
1479	__le16	cookie;
1480	u8	resp_size;
1481	u8	reserved8;
1482	__le64	resp_addr;
1483	__be32	gid[4];
1484	__be16	src_mac[3];
1485	__le16	vlan;
1486	#define CMDQ_ADD_GID_VLAN_VLAN_EN_TPID_VLAN_ID_MASK          0xffffUL
1487	#define CMDQ_ADD_GID_VLAN_VLAN_EN_TPID_VLAN_ID_SFT           0
1488	#define CMDQ_ADD_GID_VLAN_VLAN_ID_MASK                       0xfffUL
1489	#define CMDQ_ADD_GID_VLAN_VLAN_ID_SFT                        0
1490	#define CMDQ_ADD_GID_VLAN_TPID_MASK                          0x7000UL
1491	#define CMDQ_ADD_GID_VLAN_TPID_SFT                           12
1492	#define CMDQ_ADD_GID_VLAN_TPID_TPID_88A8                       (0x0UL << 12)
1493	#define CMDQ_ADD_GID_VLAN_TPID_TPID_8100                       (0x1UL << 12)
1494	#define CMDQ_ADD_GID_VLAN_TPID_TPID_9100                       (0x2UL << 12)
1495	#define CMDQ_ADD_GID_VLAN_TPID_TPID_9200                       (0x3UL << 12)
1496	#define CMDQ_ADD_GID_VLAN_TPID_TPID_9300                       (0x4UL << 12)
1497	#define CMDQ_ADD_GID_VLAN_TPID_TPID_CFG1                       (0x5UL << 12)
1498	#define CMDQ_ADD_GID_VLAN_TPID_TPID_CFG2                       (0x6UL << 12)
1499	#define CMDQ_ADD_GID_VLAN_TPID_TPID_CFG3                       (0x7UL << 12)
1500	#define CMDQ_ADD_GID_VLAN_TPID_LAST CMDQ_ADD_GID_VLAN_TPID_TPID_CFG3
1501	#define CMDQ_ADD_GID_VLAN_VLAN_EN                            0x8000UL
1502	__le16	ipid;
1503	__le16	stats_ctx;
1504	#define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_VALID_STATS_CTX_ID_MASK                0xffffUL
1505	#define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_VALID_STATS_CTX_ID_SFT                 0
1506	#define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_ID_MASK                                0x7fffUL
1507	#define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_ID_SFT                                 0
1508	#define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_VALID                                  0x8000UL
1509	__le32	unused_0;
1510};
1511
1512/* creq_add_gid_resp (size:128b/16B) */
1513struct creq_add_gid_resp {
1514	u8	type;
1515	#define CREQ_ADD_GID_RESP_TYPE_MASK    0x3fUL
1516	#define CREQ_ADD_GID_RESP_TYPE_SFT     0
1517	#define CREQ_ADD_GID_RESP_TYPE_QP_EVENT  0x38UL
1518	#define CREQ_ADD_GID_RESP_TYPE_LAST     CREQ_ADD_GID_RESP_TYPE_QP_EVENT
1519	u8	status;
1520	__le16	cookie;
1521	__le32	xid;
1522	u8	v;
1523	#define CREQ_ADD_GID_RESP_V     0x1UL
1524	u8	event;
1525	#define CREQ_ADD_GID_RESP_EVENT_ADD_GID 0x11UL
1526	#define CREQ_ADD_GID_RESP_EVENT_LAST   CREQ_ADD_GID_RESP_EVENT_ADD_GID
1527	u8	reserved48[6];
1528};
1529
1530/* cmdq_delete_gid (size:192b/24B) */
1531struct cmdq_delete_gid {
1532	u8	opcode;
1533	#define CMDQ_DELETE_GID_OPCODE_DELETE_GID 0x12UL
1534	#define CMDQ_DELETE_GID_OPCODE_LAST      CMDQ_DELETE_GID_OPCODE_DELETE_GID
1535	u8	cmd_size;
1536	__le16	flags;
1537	__le16	cookie;
1538	u8	resp_size;
1539	u8	reserved8;
1540	__le64	resp_addr;
1541	__le16	gid_index;
1542	u8	unused_0[6];
1543};
1544
1545/* creq_delete_gid_resp (size:128b/16B) */
1546struct creq_delete_gid_resp {
1547	u8	type;
1548	#define CREQ_DELETE_GID_RESP_TYPE_MASK    0x3fUL
1549	#define CREQ_DELETE_GID_RESP_TYPE_SFT     0
1550	#define CREQ_DELETE_GID_RESP_TYPE_QP_EVENT  0x38UL
1551	#define CREQ_DELETE_GID_RESP_TYPE_LAST     CREQ_DELETE_GID_RESP_TYPE_QP_EVENT
1552	u8	status;
1553	__le16	cookie;
1554	__le32	xid;
1555	u8	v;
1556	#define CREQ_DELETE_GID_RESP_V     0x1UL
1557	u8	event;
1558	#define CREQ_DELETE_GID_RESP_EVENT_DELETE_GID 0x12UL
1559	#define CREQ_DELETE_GID_RESP_EVENT_LAST      CREQ_DELETE_GID_RESP_EVENT_DELETE_GID
1560	u8	reserved48[6];
1561};
1562
1563/* cmdq_modify_gid (size:384b/48B) */
1564struct cmdq_modify_gid {
1565	u8	opcode;
1566	#define CMDQ_MODIFY_GID_OPCODE_MODIFY_GID 0x17UL
1567	#define CMDQ_MODIFY_GID_OPCODE_LAST      CMDQ_MODIFY_GID_OPCODE_MODIFY_GID
1568	u8	cmd_size;
1569	__le16	flags;
1570	__le16	cookie;
1571	u8	resp_size;
1572	u8	reserved8;
1573	__le64	resp_addr;
1574	__be32	gid[4];
1575	__be16	src_mac[3];
1576	__le16	vlan;
1577	#define CMDQ_MODIFY_GID_VLAN_VLAN_ID_MASK  0xfffUL
1578	#define CMDQ_MODIFY_GID_VLAN_VLAN_ID_SFT   0
1579	#define CMDQ_MODIFY_GID_VLAN_TPID_MASK     0x7000UL
1580	#define CMDQ_MODIFY_GID_VLAN_TPID_SFT      12
1581	#define CMDQ_MODIFY_GID_VLAN_TPID_TPID_88A8  (0x0UL << 12)
1582	#define CMDQ_MODIFY_GID_VLAN_TPID_TPID_8100  (0x1UL << 12)
1583	#define CMDQ_MODIFY_GID_VLAN_TPID_TPID_9100  (0x2UL << 12)
1584	#define CMDQ_MODIFY_GID_VLAN_TPID_TPID_9200  (0x3UL << 12)
1585	#define CMDQ_MODIFY_GID_VLAN_TPID_TPID_9300  (0x4UL << 12)
1586	#define CMDQ_MODIFY_GID_VLAN_TPID_TPID_CFG1  (0x5UL << 12)
1587	#define CMDQ_MODIFY_GID_VLAN_TPID_TPID_CFG2  (0x6UL << 12)
1588	#define CMDQ_MODIFY_GID_VLAN_TPID_TPID_CFG3  (0x7UL << 12)
1589	#define CMDQ_MODIFY_GID_VLAN_TPID_LAST      CMDQ_MODIFY_GID_VLAN_TPID_TPID_CFG3
1590	#define CMDQ_MODIFY_GID_VLAN_VLAN_EN       0x8000UL
1591	__le16	ipid;
1592	__le16	gid_index;
1593	__le16	stats_ctx;
1594	#define CMDQ_MODIFY_GID_STATS_CTX_STATS_CTX_ID_MASK   0x7fffUL
1595	#define CMDQ_MODIFY_GID_STATS_CTX_STATS_CTX_ID_SFT    0
1596	#define CMDQ_MODIFY_GID_STATS_CTX_STATS_CTX_VALID     0x8000UL
1597	__le16	unused_0;
1598};
1599
1600/* creq_modify_gid_resp (size:128b/16B) */
1601struct creq_modify_gid_resp {
1602	u8	type;
1603	#define CREQ_MODIFY_GID_RESP_TYPE_MASK    0x3fUL
1604	#define CREQ_MODIFY_GID_RESP_TYPE_SFT     0
1605	#define CREQ_MODIFY_GID_RESP_TYPE_QP_EVENT  0x38UL
1606	#define CREQ_MODIFY_GID_RESP_TYPE_LAST     CREQ_MODIFY_GID_RESP_TYPE_QP_EVENT
1607	u8	status;
1608	__le16	cookie;
1609	__le32	xid;
1610	u8	v;
1611	#define CREQ_MODIFY_GID_RESP_V     0x1UL
1612	u8	event;
1613	#define CREQ_MODIFY_GID_RESP_EVENT_ADD_GID 0x11UL
1614	#define CREQ_MODIFY_GID_RESP_EVENT_LAST   CREQ_MODIFY_GID_RESP_EVENT_ADD_GID
1615	u8	reserved48[6];
1616};
1617
1618/* cmdq_query_gid (size:192b/24B) */
1619struct cmdq_query_gid {
1620	u8	opcode;
1621	#define CMDQ_QUERY_GID_OPCODE_QUERY_GID 0x18UL
1622	#define CMDQ_QUERY_GID_OPCODE_LAST     CMDQ_QUERY_GID_OPCODE_QUERY_GID
1623	u8	cmd_size;
1624	__le16	flags;
1625	__le16	cookie;
1626	u8	resp_size;
1627	u8	reserved8;
1628	__le64	resp_addr;
1629	__le16	gid_index;
1630	u8	unused16[6];
1631};
1632
1633/* creq_query_gid_resp (size:128b/16B) */
1634struct creq_query_gid_resp {
1635	u8	type;
1636	#define CREQ_QUERY_GID_RESP_TYPE_MASK    0x3fUL
1637	#define CREQ_QUERY_GID_RESP_TYPE_SFT     0
1638	#define CREQ_QUERY_GID_RESP_TYPE_QP_EVENT  0x38UL
1639	#define CREQ_QUERY_GID_RESP_TYPE_LAST     CREQ_QUERY_GID_RESP_TYPE_QP_EVENT
1640	u8	status;
1641	__le16	cookie;
1642	__le32	size;
1643	u8	v;
1644	#define CREQ_QUERY_GID_RESP_V     0x1UL
1645	u8	event;
1646	#define CREQ_QUERY_GID_RESP_EVENT_QUERY_GID 0x18UL
1647	#define CREQ_QUERY_GID_RESP_EVENT_LAST     CREQ_QUERY_GID_RESP_EVENT_QUERY_GID
1648	u8	reserved48[6];
1649};
1650
1651/* creq_query_gid_resp_sb (size:320b/40B) */
1652struct creq_query_gid_resp_sb {
1653	u8	opcode;
1654	#define CREQ_QUERY_GID_RESP_SB_OPCODE_QUERY_GID 0x18UL
1655	#define CREQ_QUERY_GID_RESP_SB_OPCODE_LAST     CREQ_QUERY_GID_RESP_SB_OPCODE_QUERY_GID
1656	u8	status;
1657	__le16	cookie;
1658	__le16	flags;
1659	u8	resp_size;
1660	u8	reserved8;
1661	__le32	gid[4];
1662	__le16	src_mac[3];
1663	__le16	vlan;
1664	#define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_EN_TPID_VLAN_ID_MASK          0xffffUL
1665	#define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_EN_TPID_VLAN_ID_SFT           0
1666	#define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_ID_MASK                       0xfffUL
1667	#define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_ID_SFT                        0
1668	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_MASK                          0x7000UL
1669	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_SFT                           12
1670	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_88A8                       (0x0UL << 12)
1671	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_8100                       (0x1UL << 12)
1672	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_9100                       (0x2UL << 12)
1673	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_9200                       (0x3UL << 12)
1674	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_9300                       (0x4UL << 12)
1675	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_CFG1                       (0x5UL << 12)
1676	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_CFG2                       (0x6UL << 12)
1677	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_CFG3                       (0x7UL << 12)
1678	#define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_LAST CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_CFG3
1679	#define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_EN                            0x8000UL
1680	__le16	ipid;
1681	__le16	gid_index;
1682	__le32	unused_0;
1683};
1684
1685/* cmdq_create_qp1 (size:640b/80B) */
1686struct cmdq_create_qp1 {
1687	u8	opcode;
1688	#define CMDQ_CREATE_QP1_OPCODE_CREATE_QP1 0x13UL
1689	#define CMDQ_CREATE_QP1_OPCODE_LAST      CMDQ_CREATE_QP1_OPCODE_CREATE_QP1
1690	u8	cmd_size;
1691	__le16	flags;
1692	__le16	cookie;
1693	u8	resp_size;
1694	u8	reserved8;
1695	__le64	resp_addr;
1696	__le64	qp_handle;
1697	__le32	qp_flags;
1698	#define CMDQ_CREATE_QP1_QP_FLAGS_SRQ_USED             0x1UL
1699	#define CMDQ_CREATE_QP1_QP_FLAGS_FORCE_COMPLETION     0x2UL
1700	#define CMDQ_CREATE_QP1_QP_FLAGS_RESERVED_LKEY_ENABLE 0x4UL
1701	#define CMDQ_CREATE_QP1_QP_FLAGS_LAST     CMDQ_CREATE_QP1_QP_FLAGS_RESERVED_LKEY_ENABLE
1702	u8	type;
1703	#define CMDQ_CREATE_QP1_TYPE_GSI 0x1UL
1704	#define CMDQ_CREATE_QP1_TYPE_LAST CMDQ_CREATE_QP1_TYPE_GSI
1705	u8	sq_pg_size_sq_lvl;
1706	#define CMDQ_CREATE_QP1_SQ_LVL_MASK      0xfUL
1707	#define CMDQ_CREATE_QP1_SQ_LVL_SFT       0
1708	#define CMDQ_CREATE_QP1_SQ_LVL_LVL_0       0x0UL
1709	#define CMDQ_CREATE_QP1_SQ_LVL_LVL_1       0x1UL
1710	#define CMDQ_CREATE_QP1_SQ_LVL_LVL_2       0x2UL
1711	#define CMDQ_CREATE_QP1_SQ_LVL_LAST       CMDQ_CREATE_QP1_SQ_LVL_LVL_2
1712	#define CMDQ_CREATE_QP1_SQ_PG_SIZE_MASK  0xf0UL
1713	#define CMDQ_CREATE_QP1_SQ_PG_SIZE_SFT   4
1714	#define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_4K   (0x0UL << 4)
1715	#define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_8K   (0x1UL << 4)
1716	#define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_64K  (0x2UL << 4)
1717	#define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_2M   (0x3UL << 4)
1718	#define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_8M   (0x4UL << 4)
1719	#define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_1G   (0x5UL << 4)
1720	#define CMDQ_CREATE_QP1_SQ_PG_SIZE_LAST   CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_1G
1721	u8	rq_pg_size_rq_lvl;
1722	#define CMDQ_CREATE_QP1_RQ_LVL_MASK      0xfUL
1723	#define CMDQ_CREATE_QP1_RQ_LVL_SFT       0
1724	#define CMDQ_CREATE_QP1_RQ_LVL_LVL_0       0x0UL
1725	#define CMDQ_CREATE_QP1_RQ_LVL_LVL_1       0x1UL
1726	#define CMDQ_CREATE_QP1_RQ_LVL_LVL_2       0x2UL
1727	#define CMDQ_CREATE_QP1_RQ_LVL_LAST       CMDQ_CREATE_QP1_RQ_LVL_LVL_2
1728	#define CMDQ_CREATE_QP1_RQ_PG_SIZE_MASK  0xf0UL
1729	#define CMDQ_CREATE_QP1_RQ_PG_SIZE_SFT   4
1730	#define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_4K   (0x0UL << 4)
1731	#define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_8K   (0x1UL << 4)
1732	#define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_64K  (0x2UL << 4)
1733	#define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_2M   (0x3UL << 4)
1734	#define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_8M   (0x4UL << 4)
1735	#define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_1G   (0x5UL << 4)
1736	#define CMDQ_CREATE_QP1_RQ_PG_SIZE_LAST   CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_1G
1737	u8	unused_0;
1738	__le32	dpi;
1739	__le32	sq_size;
1740	__le32	rq_size;
1741	__le16	sq_fwo_sq_sge;
1742	#define CMDQ_CREATE_QP1_SQ_SGE_MASK 0xfUL
1743	#define CMDQ_CREATE_QP1_SQ_SGE_SFT 0
1744	#define CMDQ_CREATE_QP1_SQ_FWO_MASK 0xfff0UL
1745	#define CMDQ_CREATE_QP1_SQ_FWO_SFT 4
1746	__le16	rq_fwo_rq_sge;
1747	#define CMDQ_CREATE_QP1_RQ_SGE_MASK 0xfUL
1748	#define CMDQ_CREATE_QP1_RQ_SGE_SFT 0
1749	#define CMDQ_CREATE_QP1_RQ_FWO_MASK 0xfff0UL
1750	#define CMDQ_CREATE_QP1_RQ_FWO_SFT 4
1751	__le32	scq_cid;
1752	__le32	rcq_cid;
1753	__le32	srq_cid;
1754	__le32	pd_id;
1755	__le64	sq_pbl;
1756	__le64	rq_pbl;
1757};
1758
1759/* creq_create_qp1_resp (size:128b/16B) */
1760struct creq_create_qp1_resp {
1761	u8	type;
1762	#define CREQ_CREATE_QP1_RESP_TYPE_MASK    0x3fUL
1763	#define CREQ_CREATE_QP1_RESP_TYPE_SFT     0
1764	#define CREQ_CREATE_QP1_RESP_TYPE_QP_EVENT  0x38UL
1765	#define CREQ_CREATE_QP1_RESP_TYPE_LAST     CREQ_CREATE_QP1_RESP_TYPE_QP_EVENT
1766	u8	status;
1767	__le16	cookie;
1768	__le32	xid;
1769	u8	v;
1770	#define CREQ_CREATE_QP1_RESP_V     0x1UL
1771	u8	event;
1772	#define CREQ_CREATE_QP1_RESP_EVENT_CREATE_QP1 0x13UL
1773	#define CREQ_CREATE_QP1_RESP_EVENT_LAST      CREQ_CREATE_QP1_RESP_EVENT_CREATE_QP1
1774	u8	reserved48[6];
1775};
1776
1777/* cmdq_destroy_qp1 (size:192b/24B) */
1778struct cmdq_destroy_qp1 {
1779	u8	opcode;
1780	#define CMDQ_DESTROY_QP1_OPCODE_DESTROY_QP1 0x14UL
1781	#define CMDQ_DESTROY_QP1_OPCODE_LAST       CMDQ_DESTROY_QP1_OPCODE_DESTROY_QP1
1782	u8	cmd_size;
1783	__le16	flags;
1784	__le16	cookie;
1785	u8	resp_size;
1786	u8	reserved8;
1787	__le64	resp_addr;
1788	__le32	qp1_cid;
1789	__le32	unused_0;
1790};
1791
1792/* creq_destroy_qp1_resp (size:128b/16B) */
1793struct creq_destroy_qp1_resp {
1794	u8	type;
1795	#define CREQ_DESTROY_QP1_RESP_TYPE_MASK    0x3fUL
1796	#define CREQ_DESTROY_QP1_RESP_TYPE_SFT     0
1797	#define CREQ_DESTROY_QP1_RESP_TYPE_QP_EVENT  0x38UL
1798	#define CREQ_DESTROY_QP1_RESP_TYPE_LAST     CREQ_DESTROY_QP1_RESP_TYPE_QP_EVENT
1799	u8	status;
1800	__le16	cookie;
1801	__le32	xid;
1802	u8	v;
1803	#define CREQ_DESTROY_QP1_RESP_V     0x1UL
1804	u8	event;
1805	#define CREQ_DESTROY_QP1_RESP_EVENT_DESTROY_QP1 0x14UL
1806	#define CREQ_DESTROY_QP1_RESP_EVENT_LAST       CREQ_DESTROY_QP1_RESP_EVENT_DESTROY_QP1
1807	u8	reserved48[6];
1808};
1809
1810/* cmdq_create_ah (size:512b/64B) */
1811struct cmdq_create_ah {
1812	u8	opcode;
1813	#define CMDQ_CREATE_AH_OPCODE_CREATE_AH 0x15UL
1814	#define CMDQ_CREATE_AH_OPCODE_LAST     CMDQ_CREATE_AH_OPCODE_CREATE_AH
1815	u8	cmd_size;
1816	__le16	flags;
1817	__le16	cookie;
1818	u8	resp_size;
1819	u8	reserved8;
1820	__le64	resp_addr;
1821	__le64	ah_handle;
1822	__le32	dgid[4];
1823	u8	type;
1824	#define CMDQ_CREATE_AH_TYPE_V1     0x0UL
1825	#define CMDQ_CREATE_AH_TYPE_V2IPV4 0x2UL
1826	#define CMDQ_CREATE_AH_TYPE_V2IPV6 0x3UL
1827	#define CMDQ_CREATE_AH_TYPE_LAST  CMDQ_CREATE_AH_TYPE_V2IPV6
1828	u8	hop_limit;
1829	__le16	sgid_index;
1830	__le32	dest_vlan_id_flow_label;
1831	#define CMDQ_CREATE_AH_FLOW_LABEL_MASK  0xfffffUL
1832	#define CMDQ_CREATE_AH_FLOW_LABEL_SFT   0
1833	#define CMDQ_CREATE_AH_DEST_VLAN_ID_MASK 0xfff00000UL
1834	#define CMDQ_CREATE_AH_DEST_VLAN_ID_SFT 20
1835	__le32	pd_id;
1836	__le32	unused_0;
1837	__le16	dest_mac[3];
1838	u8	traffic_class;
1839	u8	enable_cc;
1840	#define CMDQ_CREATE_AH_ENABLE_CC     0x1UL
1841};
1842
1843/* creq_create_ah_resp (size:128b/16B) */
1844struct creq_create_ah_resp {
1845	u8	type;
1846	#define CREQ_CREATE_AH_RESP_TYPE_MASK    0x3fUL
1847	#define CREQ_CREATE_AH_RESP_TYPE_SFT     0
1848	#define CREQ_CREATE_AH_RESP_TYPE_QP_EVENT  0x38UL
1849	#define CREQ_CREATE_AH_RESP_TYPE_LAST     CREQ_CREATE_AH_RESP_TYPE_QP_EVENT
1850	u8	status;
1851	__le16	cookie;
1852	__le32	xid;
1853	u8	v;
1854	#define CREQ_CREATE_AH_RESP_V     0x1UL
1855	u8	event;
1856	#define CREQ_CREATE_AH_RESP_EVENT_CREATE_AH 0x15UL
1857	#define CREQ_CREATE_AH_RESP_EVENT_LAST     CREQ_CREATE_AH_RESP_EVENT_CREATE_AH
1858	u8	reserved48[6];
1859};
1860
1861/* cmdq_destroy_ah (size:192b/24B) */
1862struct cmdq_destroy_ah {
1863	u8	opcode;
1864	#define CMDQ_DESTROY_AH_OPCODE_DESTROY_AH 0x16UL
1865	#define CMDQ_DESTROY_AH_OPCODE_LAST      CMDQ_DESTROY_AH_OPCODE_DESTROY_AH
1866	u8	cmd_size;
1867	__le16	flags;
1868	__le16	cookie;
1869	u8	resp_size;
1870	u8	reserved8;
1871	__le64	resp_addr;
1872	__le32	ah_cid;
1873	__le32	unused_0;
1874};
1875
1876/* creq_destroy_ah_resp (size:128b/16B) */
1877struct creq_destroy_ah_resp {
1878	u8	type;
1879	#define CREQ_DESTROY_AH_RESP_TYPE_MASK    0x3fUL
1880	#define CREQ_DESTROY_AH_RESP_TYPE_SFT     0
1881	#define CREQ_DESTROY_AH_RESP_TYPE_QP_EVENT  0x38UL
1882	#define CREQ_DESTROY_AH_RESP_TYPE_LAST     CREQ_DESTROY_AH_RESP_TYPE_QP_EVENT
1883	u8	status;
1884	__le16	cookie;
1885	__le32	xid;
1886	u8	v;
1887	#define CREQ_DESTROY_AH_RESP_V     0x1UL
1888	u8	event;
1889	#define CREQ_DESTROY_AH_RESP_EVENT_DESTROY_AH 0x16UL
1890	#define CREQ_DESTROY_AH_RESP_EVENT_LAST      CREQ_DESTROY_AH_RESP_EVENT_DESTROY_AH
1891	u8	reserved48[6];
1892};
1893
1894/* cmdq_query_roce_stats (size:192b/24B) */
1895struct cmdq_query_roce_stats {
1896	u8	opcode;
1897	#define CMDQ_QUERY_ROCE_STATS_OPCODE_QUERY_ROCE_STATS 0x8eUL
1898	#define CMDQ_QUERY_ROCE_STATS_OPCODE_LAST    CMDQ_QUERY_ROCE_STATS_OPCODE_QUERY_ROCE_STATS
1899	u8	cmd_size;
1900	__le16	flags;
1901	#define CMDQ_QUERY_ROCE_STATS_FLAGS_COLLECTION_ID     0x1UL
1902	#define CMDQ_QUERY_ROCE_STATS_FLAGS_FUNCTION_ID       0x2UL
1903	__le16	cookie;
1904	u8	resp_size;
1905	u8	collection_id;
1906	__le64	resp_addr;
1907	__le32	function_id;
1908	#define CMDQ_QUERY_ROCE_STATS_PF_NUM_MASK  0xffUL
1909	#define CMDQ_QUERY_ROCE_STATS_PF_NUM_SFT   0
1910	#define CMDQ_QUERY_ROCE_STATS_VF_NUM_MASK  0xffff00UL
1911	#define CMDQ_QUERY_ROCE_STATS_VF_NUM_SFT   8
1912	#define CMDQ_QUERY_ROCE_STATS_VF_VALID     0x1000000UL
1913	__le32	reserved32;
1914};
1915
1916/* creq_query_roce_stats_resp (size:128b/16B) */
1917struct creq_query_roce_stats_resp {
1918	u8	type;
1919	#define CREQ_QUERY_ROCE_STATS_RESP_TYPE_MASK    0x3fUL
1920	#define CREQ_QUERY_ROCE_STATS_RESP_TYPE_SFT     0
1921	#define CREQ_QUERY_ROCE_STATS_RESP_TYPE_QP_EVENT  0x38UL
1922	#define CREQ_QUERY_ROCE_STATS_RESP_TYPE_LAST     CREQ_QUERY_ROCE_STATS_RESP_TYPE_QP_EVENT
1923	u8	status;
1924	__le16	cookie;
1925	__le32	size;
1926	u8	v;
1927	#define CREQ_QUERY_ROCE_STATS_RESP_V     0x1UL
1928	u8	event;
1929	#define CREQ_QUERY_ROCE_STATS_RESP_EVENT_QUERY_ROCE_STATS 0x8eUL
1930	#define CREQ_QUERY_ROCE_STATS_RESP_EVENT_LAST \
1931		CREQ_QUERY_ROCE_STATS_RESP_EVENT_QUERY_ROCE_STATS
1932	u8	reserved48[6];
1933};
1934
1935/* creq_query_roce_stats_resp_sb (size:2944b/368B) */
1936struct creq_query_roce_stats_resp_sb {
1937	u8	opcode;
1938	#define CREQ_QUERY_ROCE_STATS_RESP_SB_OPCODE_QUERY_ROCE_STATS 0x8eUL
1939	#define CREQ_QUERY_ROCE_STATS_RESP_SB_OPCODE_LAST \
1940		CREQ_QUERY_ROCE_STATS_RESP_SB_OPCODE_QUERY_ROCE_STATS
1941	u8	status;
1942	__le16	cookie;
1943	__le16	flags;
1944	u8	resp_size;
1945	u8	rsvd;
1946	__le32	num_counters;
1947	__le32	rsvd1;
1948	__le64	to_retransmits;
1949	__le64	seq_err_naks_rcvd;
1950	__le64	max_retry_exceeded;
1951	__le64	rnr_naks_rcvd;
1952	__le64	missing_resp;
1953	__le64	unrecoverable_err;
1954	__le64	bad_resp_err;
1955	__le64	local_qp_op_err;
1956	__le64	local_protection_err;
1957	__le64	mem_mgmt_op_err;
1958	__le64	remote_invalid_req_err;
1959	__le64	remote_access_err;
1960	__le64	remote_op_err;
1961	__le64	dup_req;
1962	__le64	res_exceed_max;
1963	__le64	res_length_mismatch;
1964	__le64	res_exceeds_wqe;
1965	__le64	res_opcode_err;
1966	__le64	res_rx_invalid_rkey;
1967	__le64	res_rx_domain_err;
1968	__le64	res_rx_no_perm;
1969	__le64	res_rx_range_err;
1970	__le64	res_tx_invalid_rkey;
1971	__le64	res_tx_domain_err;
1972	__le64	res_tx_no_perm;
1973	__le64	res_tx_range_err;
1974	__le64	res_irrq_oflow;
1975	__le64	res_unsup_opcode;
1976	__le64	res_unaligned_atomic;
1977	__le64	res_rem_inv_err;
1978	__le64	res_mem_error;
1979	__le64	res_srq_err;
1980	__le64	res_cmp_err;
1981	__le64	res_invalid_dup_rkey;
1982	__le64	res_wqe_format_err;
1983	__le64	res_cq_load_err;
1984	__le64	res_srq_load_err;
1985	__le64	res_tx_pci_err;
1986	__le64	res_rx_pci_err;
1987	__le64	res_oos_drop_count;
1988	__le64	active_qp_count_p0;
1989	__le64	active_qp_count_p1;
1990	__le64	active_qp_count_p2;
1991	__le64	active_qp_count_p3;
1992};
1993
1994/* cmdq_query_roce_stats_ext (size:192b/24B) */
1995struct cmdq_query_roce_stats_ext {
1996	u8	opcode;
1997	#define CMDQ_QUERY_ROCE_STATS_EXT_OPCODE_QUERY_ROCE_STATS 0x92UL
1998	#define CMDQ_QUERY_ROCE_STATS_EXT_OPCODE_LAST \
1999			CMDQ_QUERY_ROCE_STATS_EXT_OPCODE_QUERY_ROCE_STATS
2000	u8	cmd_size;
2001	__le16	flags;
2002	#define CMDQ_QUERY_ROCE_STATS_EXT_FLAGS_COLLECTION_ID     0x1UL
2003	#define CMDQ_QUERY_ROCE_STATS_EXT_FLAGS_FUNCTION_ID       0x2UL
2004	__le16	cookie;
2005	u8	resp_size;
2006	u8	collection_id;
2007	__le64	resp_addr;
2008	__le32	function_id;
2009	#define CMDQ_QUERY_ROCE_STATS_EXT_PF_NUM_MASK  0xffUL
2010	#define CMDQ_QUERY_ROCE_STATS_EXT_PF_NUM_SFT   0
2011	#define CMDQ_QUERY_ROCE_STATS_EXT_VF_NUM_MASK  0xffff00UL
2012	#define CMDQ_QUERY_ROCE_STATS_EXT_VF_NUM_SFT   8
2013	#define CMDQ_QUERY_ROCE_STATS_EXT_VF_VALID     0x1000000UL
2014	__le32	reserved32;
2015};
2016
2017/* creq_query_roce_stats_ext_resp (size:128b/16B) */
2018struct creq_query_roce_stats_ext_resp {
2019	u8	type;
2020	#define CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_MASK    0x3fUL
2021	#define CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_SFT     0
2022	#define CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_QP_EVENT  0x38UL
2023	#define CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_LAST \
2024		CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_QP_EVENT
2025	u8	status;
2026	__le16	cookie;
2027	__le32	size;
2028	u8	v;
2029	#define CREQ_QUERY_ROCE_STATS_EXT_RESP_V     0x1UL
2030	u8	event;
2031	#define CREQ_QUERY_ROCE_STATS_EXT_RESP_EVENT_QUERY_ROCE_STATS_EXT 0x92UL
2032	#define CREQ_QUERY_ROCE_STATS_EXT_RESP_EVENT_LAST \
2033		CREQ_QUERY_ROCE_STATS_EXT_RESP_EVENT_QUERY_ROCE_STATS_EXT
2034	u8	reserved48[6];
2035};
2036
2037/* creq_query_roce_stats_ext_resp_sb (size:1856b/232B) */
2038struct creq_query_roce_stats_ext_resp_sb {
2039	u8	opcode;
2040	#define CREQ_QUERY_ROCE_STATS_EXT_RESP_SB_OPCODE_QUERY_ROCE_STATS_EXT 0x92UL
2041	#define CREQ_QUERY_ROCE_STATS_EXT_RESP_SB_OPCODE_LAST \
2042		CREQ_QUERY_ROCE_STATS_EXT_RESP_SB_OPCODE_QUERY_ROCE_STATS_EXT
2043	u8	status;
2044	__le16	cookie;
2045	__le16	flags;
2046	u8	resp_size;
2047	u8	rsvd;
2048	__le64	tx_atomic_req_pkts;
2049	__le64	tx_read_req_pkts;
2050	__le64	tx_read_res_pkts;
2051	__le64	tx_write_req_pkts;
2052	__le64	tx_send_req_pkts;
2053	__le64	tx_roce_pkts;
2054	__le64	tx_roce_bytes;
2055	__le64	rx_atomic_req_pkts;
2056	__le64	rx_read_req_pkts;
2057	__le64	rx_read_res_pkts;
2058	__le64	rx_write_req_pkts;
2059	__le64	rx_send_req_pkts;
2060	__le64	rx_roce_pkts;
2061	__le64	rx_roce_bytes;
2062	__le64	rx_roce_good_pkts;
2063	__le64	rx_roce_good_bytes;
2064	__le64	rx_out_of_buffer_pkts;
2065	__le64	rx_out_of_sequence_pkts;
2066	__le64	tx_cnp_pkts;
2067	__le64	rx_cnp_pkts;
2068	__le64	rx_ecn_marked_pkts;
2069	__le64	tx_cnp_bytes;
2070	__le64	rx_cnp_bytes;
2071	__le64	seq_err_naks_rcvd;
2072	__le64	rnr_naks_rcvd;
2073	__le64	missing_resp;
2074	__le64	to_retransmit;
2075	__le64	dup_req;
2076};
2077
2078/* cmdq_query_func (size:128b/16B) */
2079struct cmdq_query_func {
2080	u8	opcode;
2081	#define CMDQ_QUERY_FUNC_OPCODE_QUERY_FUNC 0x83UL
2082	#define CMDQ_QUERY_FUNC_OPCODE_LAST      CMDQ_QUERY_FUNC_OPCODE_QUERY_FUNC
2083	u8	cmd_size;
2084	__le16	flags;
2085	__le16	cookie;
2086	u8	resp_size;
2087	u8	reserved8;
2088	__le64	resp_addr;
2089};
2090
2091/* creq_query_func_resp (size:128b/16B) */
2092struct creq_query_func_resp {
2093	u8	type;
2094	#define CREQ_QUERY_FUNC_RESP_TYPE_MASK    0x3fUL
2095	#define CREQ_QUERY_FUNC_RESP_TYPE_SFT     0
2096	#define CREQ_QUERY_FUNC_RESP_TYPE_QP_EVENT  0x38UL
2097	#define CREQ_QUERY_FUNC_RESP_TYPE_LAST     CREQ_QUERY_FUNC_RESP_TYPE_QP_EVENT
2098	u8	status;
2099	__le16	cookie;
2100	__le32	size;
2101	u8	v;
2102	#define CREQ_QUERY_FUNC_RESP_V     0x1UL
2103	u8	event;
2104	#define CREQ_QUERY_FUNC_RESP_EVENT_QUERY_FUNC 0x83UL
2105	#define CREQ_QUERY_FUNC_RESP_EVENT_LAST      CREQ_QUERY_FUNC_RESP_EVENT_QUERY_FUNC
2106	u8	reserved48[6];
2107};
2108
2109/* creq_query_func_resp_sb (size:1088b/136B) */
2110struct creq_query_func_resp_sb {
2111	u8	opcode;
2112	#define CREQ_QUERY_FUNC_RESP_SB_OPCODE_QUERY_FUNC 0x83UL
2113	#define CREQ_QUERY_FUNC_RESP_SB_OPCODE_LAST      CREQ_QUERY_FUNC_RESP_SB_OPCODE_QUERY_FUNC
2114	u8	status;
2115	__le16	cookie;
2116	__le16	flags;
2117	u8	resp_size;
2118	u8	reserved8;
2119	__le64	max_mr_size;
2120	__le32	max_qp;
2121	__le16	max_qp_wr;
2122	__le16	dev_cap_flags;
2123	#define CREQ_QUERY_FUNC_RESP_SB_RESIZE_QP                      0x1UL
2124	#define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_MASK             0xeUL
2125	#define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_SFT              1
2126	#define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_CC_GEN0            (0x0UL << 1)
2127	#define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_CC_GEN1            (0x1UL << 1)
2128	#define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_CC_GEN1_EXT        (0x2UL << 1)
2129	#define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_LAST \
2130		CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_CC_GEN1_EXT
2131	#define CREQ_QUERY_FUNC_RESP_SB_EXT_STATS                      0x10UL
2132	#define CREQ_QUERY_FUNC_RESP_SB_MR_REGISTER_ALLOC              0x20UL
2133	#define CREQ_QUERY_FUNC_RESP_SB_OPTIMIZED_TRANSMIT_ENABLED     0x40UL
2134	#define CREQ_QUERY_FUNC_RESP_SB_CQE_V2                         0x80UL
2135	#define CREQ_QUERY_FUNC_RESP_SB_PINGPONG_PUSH_MODE             0x100UL
2136	#define CREQ_QUERY_FUNC_RESP_SB_HW_REQUESTER_RETX_ENABLED      0x200UL
2137	#define CREQ_QUERY_FUNC_RESP_SB_HW_RESPONDER_RETX_ENABLED      0x400UL
2138	__le32	max_cq;
2139	__le32	max_cqe;
2140	__le32	max_pd;
2141	u8	max_sge;
2142	u8	max_srq_sge;
2143	u8	max_qp_rd_atom;
2144	u8	max_qp_init_rd_atom;
2145	__le32	max_mr;
2146	__le32	max_mw;
2147	__le32	max_raw_eth_qp;
2148	__le32	max_ah;
2149	__le32	max_fmr;
2150	__le32	max_srq_wr;
2151	__le32	max_pkeys;
2152	__le32	max_inline_data;
2153	u8	max_map_per_fmr;
2154	u8	l2_db_space_size;
2155	__le16	max_srq;
2156	__le32	max_gid;
2157	__le32	tqm_alloc_reqs[12];
2158	__le32	max_dpi;
2159	u8	max_sge_var_wqe;
2160	u8	reserved_8;
2161	__le16	max_inline_data_var_wqe;
2162};
2163
2164/* cmdq_set_func_resources (size:448b/56B) */
2165struct cmdq_set_func_resources {
2166	u8	opcode;
2167	#define CMDQ_SET_FUNC_RESOURCES_OPCODE_SET_FUNC_RESOURCES 0x84UL
2168	#define CMDQ_SET_FUNC_RESOURCES_OPCODE_LAST\
2169			CMDQ_SET_FUNC_RESOURCES_OPCODE_SET_FUNC_RESOURCES
2170	u8	cmd_size;
2171	__le16	flags;
2172	#define CMDQ_SET_FUNC_RESOURCES_FLAGS_MRAV_RESERVATION_SPLIT     0x1UL
2173	__le16	cookie;
2174	u8	resp_size;
2175	u8	reserved8;
2176	__le64	resp_addr;
2177	__le32	number_of_qp;
2178	__le32	number_of_mrw;
2179	__le32	number_of_srq;
2180	__le32	number_of_cq;
2181	__le32	max_qp_per_vf;
2182	__le32	max_mrw_per_vf;
2183	__le32	max_srq_per_vf;
2184	__le32	max_cq_per_vf;
2185	__le32	max_gid_per_vf;
2186	__le32	stat_ctx_id;
2187};
2188
2189/* creq_set_func_resources_resp (size:128b/16B) */
2190struct creq_set_func_resources_resp {
2191	u8	type;
2192	#define CREQ_SET_FUNC_RESOURCES_RESP_TYPE_MASK    0x3fUL
2193	#define CREQ_SET_FUNC_RESOURCES_RESP_TYPE_SFT     0
2194	#define CREQ_SET_FUNC_RESOURCES_RESP_TYPE_QP_EVENT  0x38UL
2195	#define CREQ_SET_FUNC_RESOURCES_RESP_TYPE_LAST CREQ_SET_FUNC_RESOURCES_RESP_TYPE_QP_EVENT
2196	u8	status;
2197	__le16	cookie;
2198	__le32	reserved32;
2199	u8	v;
2200	#define CREQ_SET_FUNC_RESOURCES_RESP_V     0x1UL
2201	u8	event;
2202	#define CREQ_SET_FUNC_RESOURCES_RESP_EVENT_SET_FUNC_RESOURCES 0x84UL
2203	#define CREQ_SET_FUNC_RESOURCES_RESP_EVENT_LAST \
2204		CREQ_SET_FUNC_RESOURCES_RESP_EVENT_SET_FUNC_RESOURCES
2205	u8	reserved48[6];
2206};
2207
2208/* cmdq_map_tc_to_cos (size:192b/24B) */
2209struct cmdq_map_tc_to_cos {
2210	u8	opcode;
2211	#define CMDQ_MAP_TC_TO_COS_OPCODE_MAP_TC_TO_COS 0x8aUL
2212	#define CMDQ_MAP_TC_TO_COS_OPCODE_LAST         CMDQ_MAP_TC_TO_COS_OPCODE_MAP_TC_TO_COS
2213	u8	cmd_size;
2214	__le16	flags;
2215	__le16	cookie;
2216	u8	resp_size;
2217	u8	reserved8;
2218	__le64	resp_addr;
2219	__le16	cos0;
2220	#define CMDQ_MAP_TC_TO_COS_COS0_NO_CHANGE 0xffffUL
2221	#define CMDQ_MAP_TC_TO_COS_COS0_LAST     CMDQ_MAP_TC_TO_COS_COS0_NO_CHANGE
2222	__le16	cos1;
2223	#define CMDQ_MAP_TC_TO_COS_COS1_DISABLE   0x8000UL
2224	#define CMDQ_MAP_TC_TO_COS_COS1_NO_CHANGE 0xffffUL
2225	#define CMDQ_MAP_TC_TO_COS_COS1_LAST     CMDQ_MAP_TC_TO_COS_COS1_NO_CHANGE
2226	__le32	unused_0;
2227};
2228
2229/* creq_map_tc_to_cos_resp (size:128b/16B) */
2230struct creq_map_tc_to_cos_resp {
2231	u8	type;
2232	#define CREQ_MAP_TC_TO_COS_RESP_TYPE_MASK    0x3fUL
2233	#define CREQ_MAP_TC_TO_COS_RESP_TYPE_SFT     0
2234	#define CREQ_MAP_TC_TO_COS_RESP_TYPE_QP_EVENT  0x38UL
2235	#define CREQ_MAP_TC_TO_COS_RESP_TYPE_LAST     CREQ_MAP_TC_TO_COS_RESP_TYPE_QP_EVENT
2236	u8	status;
2237	__le16	cookie;
2238	__le32	reserved32;
2239	u8	v;
2240	#define CREQ_MAP_TC_TO_COS_RESP_V     0x1UL
2241	u8	event;
2242	#define CREQ_MAP_TC_TO_COS_RESP_EVENT_MAP_TC_TO_COS 0x8aUL
2243	#define CREQ_MAP_TC_TO_COS_RESP_EVENT_LAST CREQ_MAP_TC_TO_COS_RESP_EVENT_MAP_TC_TO_COS
2244	u8	reserved48[6];
2245};
2246
2247/* cmdq_query_roce_cc (size:128b/16B) */
2248struct cmdq_query_roce_cc {
2249	u8	opcode;
2250	#define CMDQ_QUERY_ROCE_CC_OPCODE_QUERY_ROCE_CC 0x8dUL
2251	#define CMDQ_QUERY_ROCE_CC_OPCODE_LAST CMDQ_QUERY_ROCE_CC_OPCODE_QUERY_ROCE_CC
2252	u8	cmd_size;
2253	__le16	flags;
2254	__le16	cookie;
2255	u8	resp_size;
2256	u8	reserved8;
2257	__le64	resp_addr;
2258};
2259
2260/* creq_query_roce_cc_resp (size:128b/16B) */
2261struct creq_query_roce_cc_resp {
2262	u8	type;
2263	#define CREQ_QUERY_ROCE_CC_RESP_TYPE_MASK    0x3fUL
2264	#define CREQ_QUERY_ROCE_CC_RESP_TYPE_SFT     0
2265	#define CREQ_QUERY_ROCE_CC_RESP_TYPE_QP_EVENT  0x38UL
2266	#define CREQ_QUERY_ROCE_CC_RESP_TYPE_LAST     CREQ_QUERY_ROCE_CC_RESP_TYPE_QP_EVENT
2267	u8	status;
2268	__le16	cookie;
2269	__le32	size;
2270	u8	v;
2271	#define CREQ_QUERY_ROCE_CC_RESP_V     0x1UL
2272	u8	event;
2273	#define CREQ_QUERY_ROCE_CC_RESP_EVENT_QUERY_ROCE_CC 0x8dUL
2274	#define CREQ_QUERY_ROCE_CC_RESP_EVENT_LAST  CREQ_QUERY_ROCE_CC_RESP_EVENT_QUERY_ROCE_CC
2275	u8	reserved48[6];
2276};
2277
2278/* creq_query_roce_cc_resp_sb (size:256b/32B) */
2279struct creq_query_roce_cc_resp_sb {
2280	u8	opcode;
2281	#define CREQ_QUERY_ROCE_CC_RESP_SB_OPCODE_QUERY_ROCE_CC 0x8dUL
2282	#define CREQ_QUERY_ROCE_CC_RESP_SB_OPCODE_LAST \
2283		CREQ_QUERY_ROCE_CC_RESP_SB_OPCODE_QUERY_ROCE_CC
2284	u8	status;
2285	__le16	cookie;
2286	__le16	flags;
2287	u8	resp_size;
2288	u8	reserved8;
2289	u8	enable_cc;
2290	#define CREQ_QUERY_ROCE_CC_RESP_SB_ENABLE_CC     0x1UL
2291	#define CREQ_QUERY_ROCE_CC_RESP_SB_UNUSED7_MASK  0xfeUL
2292	#define CREQ_QUERY_ROCE_CC_RESP_SB_UNUSED7_SFT   1
2293	u8	tos_dscp_tos_ecn;
2294	#define CREQ_QUERY_ROCE_CC_RESP_SB_TOS_ECN_MASK 0x3UL
2295	#define CREQ_QUERY_ROCE_CC_RESP_SB_TOS_ECN_SFT  0
2296	#define CREQ_QUERY_ROCE_CC_RESP_SB_TOS_DSCP_MASK 0xfcUL
2297	#define CREQ_QUERY_ROCE_CC_RESP_SB_TOS_DSCP_SFT 2
2298	u8	g;
2299	u8	num_phases_per_state;
2300	__le16	init_cr;
2301	__le16	init_tr;
2302	u8	alt_vlan_pcp;
2303	#define CREQ_QUERY_ROCE_CC_RESP_SB_ALT_VLAN_PCP_MASK 0x7UL
2304	#define CREQ_QUERY_ROCE_CC_RESP_SB_ALT_VLAN_PCP_SFT 0
2305	#define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD1_MASK       0xf8UL
2306	#define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD1_SFT        3
2307	u8	alt_tos_dscp;
2308	#define CREQ_QUERY_ROCE_CC_RESP_SB_ALT_TOS_DSCP_MASK 0x3fUL
2309	#define CREQ_QUERY_ROCE_CC_RESP_SB_ALT_TOS_DSCP_SFT 0
2310	#define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD4_MASK       0xc0UL
2311	#define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD4_SFT        6
2312	u8	cc_mode;
2313	#define CREQ_QUERY_ROCE_CC_RESP_SB_CC_MODE_DCTCP         0x0UL
2314	#define CREQ_QUERY_ROCE_CC_RESP_SB_CC_MODE_PROBABILISTIC 0x1UL
2315	#define CREQ_QUERY_ROCE_CC_RESP_SB_CC_MODE_LAST \
2316		CREQ_QUERY_ROCE_CC_RESP_SB_CC_MODE_PROBABILISTIC
2317	u8	tx_queue;
2318	__le16	rtt;
2319	#define CREQ_QUERY_ROCE_CC_RESP_SB_RTT_MASK  0x3fffUL
2320	#define CREQ_QUERY_ROCE_CC_RESP_SB_RTT_SFT   0
2321	#define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD5_MASK 0xc000UL
2322	#define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD5_SFT 14
2323	__le16	tcp_cp;
2324	#define CREQ_QUERY_ROCE_CC_RESP_SB_TCP_CP_MASK 0x3ffUL
2325	#define CREQ_QUERY_ROCE_CC_RESP_SB_TCP_CP_SFT 0
2326	#define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD6_MASK 0xfc00UL
2327	#define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD6_SFT  10
2328	__le16	inactivity_th;
2329	u8	pkts_per_phase;
2330	u8	time_per_phase;
2331	__le32	reserved32;
2332};
2333
2334/* creq_query_roce_cc_resp_sb_tlv (size:384b/48B) */
2335struct creq_query_roce_cc_resp_sb_tlv {
2336	__le16	cmd_discr;
2337	u8	reserved_8b;
2338	u8	tlv_flags;
2339	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_MORE         0x1UL
2340	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_MORE_LAST      0x0UL
2341	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_MORE_NOT_LAST  0x1UL
2342	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED     0x2UL
2343	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED_NO    (0x0UL << 1)
2344	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES   (0x1UL << 1)
2345	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED_LAST \
2346		CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES
2347	__le16	tlv_type;
2348	__le16	length;
2349	u8	total_size;
2350	u8	reserved56[7];
2351	u8	opcode;
2352	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_OPCODE_QUERY_ROCE_CC 0x8dUL
2353	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_OPCODE_LAST \
2354		CREQ_QUERY_ROCE_CC_RESP_SB_TLV_OPCODE_QUERY_ROCE_CC
2355	u8	status;
2356	__le16	cookie;
2357	__le16	flags;
2358	u8	resp_size;
2359	u8	reserved8;
2360	u8	enable_cc;
2361	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ENABLE_CC     0x1UL
2362	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_UNUSED7_MASK  0xfeUL
2363	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_UNUSED7_SFT   1
2364	u8	tos_dscp_tos_ecn;
2365	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TOS_ECN_MASK 0x3UL
2366	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TOS_ECN_SFT  0
2367	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TOS_DSCP_MASK 0xfcUL
2368	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TOS_DSCP_SFT 2
2369	u8	g;
2370	u8	num_phases_per_state;
2371	__le16	init_cr;
2372	__le16	init_tr;
2373	u8	alt_vlan_pcp;
2374	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ALT_VLAN_PCP_MASK 0x7UL
2375	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ALT_VLAN_PCP_SFT 0
2376	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD1_MASK       0xf8UL
2377	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD1_SFT        3
2378	u8	alt_tos_dscp;
2379	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ALT_TOS_DSCP_MASK 0x3fUL
2380	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ALT_TOS_DSCP_SFT 0
2381	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD4_MASK       0xc0UL
2382	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD4_SFT        6
2383	u8	cc_mode;
2384	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_CC_MODE_DCTCP         0x0UL
2385	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_CC_MODE_PROBABILISTIC 0x1UL
2386	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_CC_MODE_LAST\
2387		CREQ_QUERY_ROCE_CC_RESP_SB_TLV_CC_MODE_PROBABILISTIC
2388	u8	tx_queue;
2389	__le16	rtt;
2390	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RTT_MASK  0x3fffUL
2391	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RTT_SFT   0
2392	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD5_MASK 0xc000UL
2393	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD5_SFT 14
2394	__le16	tcp_cp;
2395	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TCP_CP_MASK 0x3ffUL
2396	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TCP_CP_SFT 0
2397	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD6_MASK 0xfc00UL
2398	#define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD6_SFT  10
2399	__le16	inactivity_th;
2400	u8	pkts_per_phase;
2401	u8	time_per_phase;
2402	__le32	reserved32;
2403};
2404
2405/* creq_query_roce_cc_gen1_resp_sb_tlv (size:704b/88B) */
2406struct creq_query_roce_cc_gen1_resp_sb_tlv {
2407	__le16	cmd_discr;
2408	u8	reserved_8b;
2409	u8	tlv_flags;
2410	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_MORE         0x1UL
2411	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_MORE_LAST      0x0UL
2412	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_MORE_NOT_LAST  0x1UL
2413	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED     0x2UL
2414	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED_NO    (0x0UL << 1)
2415	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES   (0x1UL << 1)
2416	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED_LAST \
2417		CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES
2418	__le16	tlv_type;
2419	__le16	length;
2420	__le64	reserved64;
2421	__le16	inactivity_th_hi;
2422	__le16	min_time_between_cnps;
2423	__le16	init_cp;
2424	u8	tr_update_mode;
2425	u8	tr_update_cycles;
2426	u8	fr_num_rtts;
2427	u8	ai_rate_increase;
2428	__le16	reduction_relax_rtts_th;
2429	__le16	additional_relax_cr_th;
2430	__le16	cr_min_th;
2431	u8	bw_avg_weight;
2432	u8	actual_cr_factor;
2433	__le16	max_cp_cr_th;
2434	u8	cp_bias_en;
2435	u8	cp_bias;
2436	u8	cnp_ecn;
2437	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_NOT_ECT 0x0UL
2438	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_ECT_1   0x1UL
2439	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_ECT_0   0x2UL
2440	#define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_LAST \
2441		CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_ECT_0
2442	u8	rtt_jitter_en;
2443	__le16	link_bytes_per_usec;
2444	__le16	reset_cc_cr_th;
2445	u8	cr_width;
2446	u8	quota_period_min;
2447	u8	quota_period_max;
2448	u8	quota_period_abs_max;
2449	__le16	tr_lower_bound;
2450	u8	cr_prob_factor;
2451	u8	tr_prob_factor;
2452	__le16	fairness_cr_th;
2453	u8	red_div;
2454	u8	cnp_ratio_th;
2455	__le16	exp_ai_rtts;
2456	u8	exp_ai_cr_cp_ratio;
2457	u8	use_rate_table;
2458	__le16	cp_exp_update_th;
2459	__le16	high_exp_ai_rtts_th1;
2460	__le16	high_exp_ai_rtts_th2;
2461	__le16	actual_cr_cong_free_rtts_th;
2462	__le16	severe_cong_cr_th1;
2463	__le16	severe_cong_cr_th2;
2464	__le32	link64B_per_rtt;
2465	u8	cc_ack_bytes;
2466	u8	reduce_init_en;
2467	__le16	reduce_init_cong_free_rtts_th;
2468	u8	random_no_red_en;
2469	u8	actual_cr_shift_correction_en;
2470	u8	quota_period_adjust_en;
2471	u8	reserved[5];
2472};
2473
2474/* cmdq_modify_roce_cc (size:448b/56B) */
2475struct cmdq_modify_roce_cc {
2476	u8	opcode;
2477	#define CMDQ_MODIFY_ROCE_CC_OPCODE_MODIFY_ROCE_CC 0x8cUL
2478	#define CMDQ_MODIFY_ROCE_CC_OPCODE_LAST          CMDQ_MODIFY_ROCE_CC_OPCODE_MODIFY_ROCE_CC
2479	u8	cmd_size;
2480	__le16	flags;
2481	__le16	cookie;
2482	u8	resp_size;
2483	u8	reserved8;
2484	__le64	resp_addr;
2485	__le32	modify_mask;
2486	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_ENABLE_CC            0x1UL
2487	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_G                    0x2UL
2488	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_NUMPHASEPERSTATE     0x4UL
2489	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_INIT_CR              0x8UL
2490	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_INIT_TR              0x10UL
2491	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TOS_ECN              0x20UL
2492	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TOS_DSCP             0x40UL
2493	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_ALT_VLAN_PCP         0x80UL
2494	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_ALT_TOS_DSCP         0x100UL
2495	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_RTT                  0x200UL
2496	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_CC_MODE              0x400UL
2497	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TCP_CP               0x800UL
2498	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TX_QUEUE             0x1000UL
2499	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_INACTIVITY_CP        0x2000UL
2500	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TIME_PER_PHASE       0x4000UL
2501	#define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_PKTS_PER_PHASE       0x8000UL
2502	u8	enable_cc;
2503	#define CMDQ_MODIFY_ROCE_CC_ENABLE_CC     0x1UL
2504	#define CMDQ_MODIFY_ROCE_CC_RSVD1_MASK    0xfeUL
2505	#define CMDQ_MODIFY_ROCE_CC_RSVD1_SFT     1
2506	u8	g;
2507	u8	num_phases_per_state;
2508	u8	pkts_per_phase;
2509	__le16	init_cr;
2510	__le16	init_tr;
2511	u8	tos_dscp_tos_ecn;
2512	#define CMDQ_MODIFY_ROCE_CC_TOS_ECN_MASK 0x3UL
2513	#define CMDQ_MODIFY_ROCE_CC_TOS_ECN_SFT  0
2514	#define CMDQ_MODIFY_ROCE_CC_TOS_DSCP_MASK 0xfcUL
2515	#define CMDQ_MODIFY_ROCE_CC_TOS_DSCP_SFT 2
2516	u8	alt_vlan_pcp;
2517	#define CMDQ_MODIFY_ROCE_CC_ALT_VLAN_PCP_MASK 0x7UL
2518	#define CMDQ_MODIFY_ROCE_CC_ALT_VLAN_PCP_SFT 0
2519	#define CMDQ_MODIFY_ROCE_CC_RSVD3_MASK       0xf8UL
2520	#define CMDQ_MODIFY_ROCE_CC_RSVD3_SFT        3
2521	__le16	alt_tos_dscp;
2522	#define CMDQ_MODIFY_ROCE_CC_ALT_TOS_DSCP_MASK 0x3fUL
2523	#define CMDQ_MODIFY_ROCE_CC_ALT_TOS_DSCP_SFT 0
2524	#define CMDQ_MODIFY_ROCE_CC_RSVD4_MASK       0xffc0UL
2525	#define CMDQ_MODIFY_ROCE_CC_RSVD4_SFT        6
2526	__le16	rtt;
2527	#define CMDQ_MODIFY_ROCE_CC_RTT_MASK  0x3fffUL
2528	#define CMDQ_MODIFY_ROCE_CC_RTT_SFT   0
2529	#define CMDQ_MODIFY_ROCE_CC_RSVD5_MASK 0xc000UL
2530	#define CMDQ_MODIFY_ROCE_CC_RSVD5_SFT 14
2531	__le16	tcp_cp;
2532	#define CMDQ_MODIFY_ROCE_CC_TCP_CP_MASK 0x3ffUL
2533	#define CMDQ_MODIFY_ROCE_CC_TCP_CP_SFT 0
2534	#define CMDQ_MODIFY_ROCE_CC_RSVD6_MASK 0xfc00UL
2535	#define CMDQ_MODIFY_ROCE_CC_RSVD6_SFT  10
2536	u8	cc_mode;
2537	#define CMDQ_MODIFY_ROCE_CC_CC_MODE_DCTCP_CC_MODE         0x0UL
2538	#define CMDQ_MODIFY_ROCE_CC_CC_MODE_PROBABILISTIC_CC_MODE 0x1UL
2539	#define CMDQ_MODIFY_ROCE_CC_CC_MODE_LAST CMDQ_MODIFY_ROCE_CC_CC_MODE_PROBABILISTIC_CC_MODE
2540	u8	tx_queue;
2541	__le16	inactivity_th;
2542	u8	time_per_phase;
2543	u8	reserved8_1;
2544	__le16	reserved16;
2545	__le32	reserved32;
2546	__le64	reserved64;
2547};
2548
2549/* cmdq_modify_roce_cc_tlv (size:640b/80B) */
2550struct cmdq_modify_roce_cc_tlv {
2551	__le16	cmd_discr;
2552	u8	reserved_8b;
2553	u8	tlv_flags;
2554	#define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_MORE         0x1UL
2555	#define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_MORE_LAST      0x0UL
2556	#define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_MORE_NOT_LAST  0x1UL
2557	#define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED     0x2UL
2558	#define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED_NO    (0x0UL << 1)
2559	#define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED_YES   (0x1UL << 1)
2560	#define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED_LAST \
2561		CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED_YES
2562	__le16	tlv_type;
2563	__le16	length;
2564	u8	total_size;
2565	u8	reserved56[7];
2566	u8	opcode;
2567	#define CMDQ_MODIFY_ROCE_CC_TLV_OPCODE_MODIFY_ROCE_CC 0x8cUL
2568	#define CMDQ_MODIFY_ROCE_CC_TLV_OPCODE_LAST CMDQ_MODIFY_ROCE_CC_TLV_OPCODE_MODIFY_ROCE_CC
2569	u8	cmd_size;
2570	__le16	flags;
2571	__le16	cookie;
2572	u8	resp_size;
2573	u8	reserved8;
2574	__le64	resp_addr;
2575	__le32	modify_mask;
2576	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_ENABLE_CC            0x1UL
2577	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_G                    0x2UL
2578	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_NUMPHASEPERSTATE     0x4UL
2579	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_INIT_CR              0x8UL
2580	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_INIT_TR              0x10UL
2581	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TOS_ECN              0x20UL
2582	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TOS_DSCP             0x40UL
2583	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_ALT_VLAN_PCP         0x80UL
2584	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_ALT_TOS_DSCP         0x100UL
2585	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_RTT                  0x200UL
2586	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_CC_MODE              0x400UL
2587	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TCP_CP               0x800UL
2588	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TX_QUEUE             0x1000UL
2589	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_INACTIVITY_CP        0x2000UL
2590	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TIME_PER_PHASE       0x4000UL
2591	#define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_PKTS_PER_PHASE       0x8000UL
2592	u8	enable_cc;
2593	#define CMDQ_MODIFY_ROCE_CC_TLV_ENABLE_CC     0x1UL
2594	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD1_MASK    0xfeUL
2595	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD1_SFT     1
2596	u8	g;
2597	u8	num_phases_per_state;
2598	u8	pkts_per_phase;
2599	__le16	init_cr;
2600	__le16	init_tr;
2601	u8	tos_dscp_tos_ecn;
2602	#define CMDQ_MODIFY_ROCE_CC_TLV_TOS_ECN_MASK 0x3UL
2603	#define CMDQ_MODIFY_ROCE_CC_TLV_TOS_ECN_SFT  0
2604	#define CMDQ_MODIFY_ROCE_CC_TLV_TOS_DSCP_MASK 0xfcUL
2605	#define CMDQ_MODIFY_ROCE_CC_TLV_TOS_DSCP_SFT 2
2606	u8	alt_vlan_pcp;
2607	#define CMDQ_MODIFY_ROCE_CC_TLV_ALT_VLAN_PCP_MASK 0x7UL
2608	#define CMDQ_MODIFY_ROCE_CC_TLV_ALT_VLAN_PCP_SFT 0
2609	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD3_MASK       0xf8UL
2610	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD3_SFT        3
2611	__le16	alt_tos_dscp;
2612	#define CMDQ_MODIFY_ROCE_CC_TLV_ALT_TOS_DSCP_MASK 0x3fUL
2613	#define CMDQ_MODIFY_ROCE_CC_TLV_ALT_TOS_DSCP_SFT 0
2614	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD4_MASK       0xffc0UL
2615	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD4_SFT        6
2616	__le16	rtt;
2617	#define CMDQ_MODIFY_ROCE_CC_TLV_RTT_MASK  0x3fffUL
2618	#define CMDQ_MODIFY_ROCE_CC_TLV_RTT_SFT   0
2619	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD5_MASK 0xc000UL
2620	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD5_SFT 14
2621	__le16	tcp_cp;
2622	#define CMDQ_MODIFY_ROCE_CC_TLV_TCP_CP_MASK 0x3ffUL
2623	#define CMDQ_MODIFY_ROCE_CC_TLV_TCP_CP_SFT 0
2624	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD6_MASK 0xfc00UL
2625	#define CMDQ_MODIFY_ROCE_CC_TLV_RSVD6_SFT  10
2626	u8	cc_mode;
2627	#define CMDQ_MODIFY_ROCE_CC_TLV_CC_MODE_DCTCP_CC_MODE         0x0UL
2628	#define CMDQ_MODIFY_ROCE_CC_TLV_CC_MODE_PROBABILISTIC_CC_MODE 0x1UL
2629	#define CMDQ_MODIFY_ROCE_CC_TLV_CC_MODE_LAST\
2630		CMDQ_MODIFY_ROCE_CC_TLV_CC_MODE_PROBABILISTIC_CC_MODE
2631	u8	tx_queue;
2632	__le16	inactivity_th;
2633	u8	time_per_phase;
2634	u8	reserved8_1;
2635	__le16	reserved16;
2636	__le32	reserved32;
2637	__le64	reserved64;
2638	__le64	reservedtlvpad;
2639};
2640
2641/* cmdq_modify_roce_cc_gen1_tlv (size:768b/96B) */
2642struct cmdq_modify_roce_cc_gen1_tlv {
2643	__le16	cmd_discr;
2644	u8	reserved_8b;
2645	u8	tlv_flags;
2646	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_MORE         0x1UL
2647	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_MORE_LAST      0x0UL
2648	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_MORE_NOT_LAST  0x1UL
2649	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED     0x2UL
2650	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED_NO    (0x0UL << 1)
2651	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED_YES   (0x1UL << 1)
2652	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED_LAST\
2653		CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED_YES
2654	__le16	tlv_type;
2655	__le16	length;
2656	__le64	reserved64;
2657	__le64	modify_mask;
2658	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_MIN_TIME_BETWEEN_CNPS       0x1UL
2659	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_INIT_CP                     0x2UL
2660	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_TR_UPDATE_MODE              0x4UL
2661	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_TR_UPDATE_CYCLES            0x8UL
2662	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_FR_NUM_RTTS                 0x10UL
2663	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_AI_RATE_INCREASE            0x20UL
2664	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_REDUCTION_RELAX_RTTS_TH     0x40UL
2665	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_ADDITIONAL_RELAX_CR_TH      0x80UL
2666	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CR_MIN_TH                   0x100UL
2667	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_BW_AVG_WEIGHT               0x200UL
2668	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_ACTUAL_CR_FACTOR            0x400UL
2669	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_MAX_CP_CR_TH                0x800UL
2670	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CP_BIAS_EN                  0x1000UL
2671	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CP_BIAS                     0x2000UL
2672	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CNP_ECN                     0x4000UL
2673	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_RTT_JITTER_EN               0x8000UL
2674	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_LINK_BYTES_PER_USEC         0x10000UL
2675	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_RESET_CC_CR_TH              0x20000UL
2676	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CR_WIDTH                    0x40000UL
2677	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_QUOTA_PERIOD_MIN            0x80000UL
2678	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_QUOTA_PERIOD_MAX            0x100000UL
2679	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_QUOTA_PERIOD_ABS_MAX        0x200000UL
2680	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_TR_LOWER_BOUND              0x400000UL
2681	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CR_PROB_FACTOR              0x800000UL
2682	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_TR_PROB_FACTOR              0x1000000UL
2683	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_FAIRNESS_CR_TH              0x2000000UL
2684	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_RED_DIV                     0x4000000UL
2685	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CNP_RATIO_TH                0x8000000UL
2686	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_EXP_AI_RTTS                 0x10000000UL
2687	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_EXP_AI_CR_CP_RATIO          0x20000000UL
2688	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CP_EXP_UPDATE_TH            0x40000000UL
2689	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_HIGH_EXP_AI_RTTS_TH1        0x80000000UL
2690	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_HIGH_EXP_AI_RTTS_TH2        0x100000000ULL
2691	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_USE_RATE_TABLE              0x200000000ULL
2692	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_LINK64B_PER_RTT             0x400000000ULL
2693	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_ACTUAL_CR_CONG_FREE_RTTS_TH 0x800000000ULL
2694	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_SEVERE_CONG_CR_TH1          0x1000000000ULL
2695	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_SEVERE_CONG_CR_TH2          0x2000000000ULL
2696	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CC_ACK_BYTES                0x4000000000ULL
2697	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_REDUCE_INIT_EN              0x8000000000ULL
2698	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_REDUCE_INIT_CONG_FREE_RTTS_TH \
2699										0x10000000000ULL
2700	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_RANDOM_NO_RED_EN 0x20000000000ULL
2701	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_ACTUAL_CR_SHIFT_CORRECTION_EN \
2702										0x40000000000ULL
2703	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_QUOTA_PERIOD_ADJUST_EN 0x80000000000ULL
2704	__le16	inactivity_th_hi;
2705	__le16	min_time_between_cnps;
2706	__le16	init_cp;
2707	u8	tr_update_mode;
2708	u8	tr_update_cycles;
2709	u8	fr_num_rtts;
2710	u8	ai_rate_increase;
2711	__le16	reduction_relax_rtts_th;
2712	__le16	additional_relax_cr_th;
2713	__le16	cr_min_th;
2714	u8	bw_avg_weight;
2715	u8	actual_cr_factor;
2716	__le16	max_cp_cr_th;
2717	u8	cp_bias_en;
2718	u8	cp_bias;
2719	u8	cnp_ecn;
2720	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_NOT_ECT 0x0UL
2721	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_ECT_1   0x1UL
2722	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_ECT_0   0x2UL
2723	#define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_LAST CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_ECT_0
2724	u8	rtt_jitter_en;
2725	__le16	link_bytes_per_usec;
2726	__le16	reset_cc_cr_th;
2727	u8	cr_width;
2728	u8	quota_period_min;
2729	u8	quota_period_max;
2730	u8	quota_period_abs_max;
2731	__le16	tr_lower_bound;
2732	u8	cr_prob_factor;
2733	u8	tr_prob_factor;
2734	__le16	fairness_cr_th;
2735	u8	red_div;
2736	u8	cnp_ratio_th;
2737	__le16	exp_ai_rtts;
2738	u8	exp_ai_cr_cp_ratio;
2739	u8	use_rate_table;
2740	__le16	cp_exp_update_th;
2741	__le16	high_exp_ai_rtts_th1;
2742	__le16	high_exp_ai_rtts_th2;
2743	__le16	actual_cr_cong_free_rtts_th;
2744	__le16	severe_cong_cr_th1;
2745	__le16	severe_cong_cr_th2;
2746	__le32	link64B_per_rtt;
2747	u8	cc_ack_bytes;
2748	u8	reduce_init_en;
2749	__le16	reduce_init_cong_free_rtts_th;
2750	u8	random_no_red_en;
2751	u8	actual_cr_shift_correction_en;
2752	u8	quota_period_adjust_en;
2753	u8	reserved[5];
2754};
2755
2756/* creq_modify_roce_cc_resp (size:128b/16B) */
2757struct creq_modify_roce_cc_resp {
2758	u8	type;
2759	#define CREQ_MODIFY_ROCE_CC_RESP_TYPE_MASK    0x3fUL
2760	#define CREQ_MODIFY_ROCE_CC_RESP_TYPE_SFT     0
2761	#define CREQ_MODIFY_ROCE_CC_RESP_TYPE_QP_EVENT  0x38UL
2762	#define CREQ_MODIFY_ROCE_CC_RESP_TYPE_LAST     CREQ_MODIFY_ROCE_CC_RESP_TYPE_QP_EVENT
2763	u8	status;
2764	__le16	cookie;
2765	__le32	reserved32;
2766	u8	v;
2767	#define CREQ_MODIFY_ROCE_CC_RESP_V     0x1UL
2768	u8	event;
2769	#define CREQ_MODIFY_ROCE_CC_RESP_EVENT_MODIFY_ROCE_CC 0x8cUL
2770	#define CREQ_MODIFY_ROCE_CC_RESP_EVENT_LAST   CREQ_MODIFY_ROCE_CC_RESP_EVENT_MODIFY_ROCE_CC
2771	u8	reserved48[6];
2772};
2773
2774/* cmdq_set_link_aggr_mode_cc (size:320b/40B) */
2775struct cmdq_set_link_aggr_mode_cc {
2776	u8	opcode;
2777	#define CMDQ_SET_LINK_AGGR_MODE_OPCODE_SET_LINK_AGGR_MODE 0x8fUL
2778	#define CMDQ_SET_LINK_AGGR_MODE_OPCODE_LAST \
2779		CMDQ_SET_LINK_AGGR_MODE_OPCODE_SET_LINK_AGGR_MODE
2780	u8	cmd_size;
2781	__le16	flags;
2782	__le16	cookie;
2783	u8	resp_size;
2784	u8	reserved8;
2785	__le64	resp_addr;
2786	__le32	modify_mask;
2787	#define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_AGGR_EN             0x1UL
2788	#define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_ACTIVE_PORT_MAP     0x2UL
2789	#define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_MEMBER_PORT_MAP     0x4UL
2790	#define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_AGGR_MODE           0x8UL
2791	#define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_STAT_CTX_ID         0x10UL
2792	u8	aggr_enable;
2793	#define CMDQ_SET_LINK_AGGR_MODE_AGGR_ENABLE     0x1UL
2794	#define CMDQ_SET_LINK_AGGR_MODE_RSVD1_MASK      0xfeUL
2795	#define CMDQ_SET_LINK_AGGR_MODE_RSVD1_SFT       1
2796	u8	active_port_map;
2797	#define CMDQ_SET_LINK_AGGR_MODE_ACTIVE_PORT_MAP_MASK 0xfUL
2798	#define CMDQ_SET_LINK_AGGR_MODE_ACTIVE_PORT_MAP_SFT 0
2799	#define CMDQ_SET_LINK_AGGR_MODE_RSVD2_MASK          0xf0UL
2800	#define CMDQ_SET_LINK_AGGR_MODE_RSVD2_SFT           4
2801	u8	member_port_map;
2802	u8	link_aggr_mode;
2803	#define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_ACTIVE_ACTIVE 0x1UL
2804	#define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_ACTIVE_BACKUP 0x2UL
2805	#define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_BALANCE_XOR   0x3UL
2806	#define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_802_3_AD      0x4UL
2807	#define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_LAST CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_802_3_AD
2808	__le16	stat_ctx_id[4];
2809	__le64	rsvd1;
2810};
2811
2812/* creq_set_link_aggr_mode_resources_resp (size:128b/16B) */
2813struct creq_set_link_aggr_mode_resources_resp {
2814	u8	type;
2815	#define CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_MASK    0x3fUL
2816	#define CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_SFT     0
2817	#define CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_QP_EVENT  0x38UL
2818	#define CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_LAST CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_QP_EVENT
2819	u8	status;
2820	__le16	cookie;
2821	__le32	reserved32;
2822	u8	v;
2823	#define CREQ_SET_LINK_AGGR_MODE_RESP_V     0x1UL
2824	u8	event;
2825	#define CREQ_SET_LINK_AGGR_MODE_RESP_EVENT_SET_LINK_AGGR_MODE 0x8fUL
2826	#define CREQ_SET_LINK_AGGR_MODE_RESP_EVENT_LAST\
2827		CREQ_SET_LINK_AGGR_MODE_RESP_EVENT_SET_LINK_AGGR_MODE
2828	u8	reserved48[6];
2829};
2830
2831/* creq_func_event (size:128b/16B) */
2832struct creq_func_event {
2833	u8	type;
2834	#define CREQ_FUNC_EVENT_TYPE_MASK      0x3fUL
2835	#define CREQ_FUNC_EVENT_TYPE_SFT       0
2836	#define CREQ_FUNC_EVENT_TYPE_FUNC_EVENT  0x3aUL
2837	#define CREQ_FUNC_EVENT_TYPE_LAST       CREQ_FUNC_EVENT_TYPE_FUNC_EVENT
2838	u8	reserved56[7];
2839	u8	v;
2840	#define CREQ_FUNC_EVENT_V     0x1UL
2841	u8	event;
2842	#define CREQ_FUNC_EVENT_EVENT_TX_WQE_ERROR       0x1UL
2843	#define CREQ_FUNC_EVENT_EVENT_TX_DATA_ERROR      0x2UL
2844	#define CREQ_FUNC_EVENT_EVENT_RX_WQE_ERROR       0x3UL
2845	#define CREQ_FUNC_EVENT_EVENT_RX_DATA_ERROR      0x4UL
2846	#define CREQ_FUNC_EVENT_EVENT_CQ_ERROR           0x5UL
2847	#define CREQ_FUNC_EVENT_EVENT_TQM_ERROR          0x6UL
2848	#define CREQ_FUNC_EVENT_EVENT_CFCQ_ERROR         0x7UL
2849	#define CREQ_FUNC_EVENT_EVENT_CFCS_ERROR         0x8UL
2850	#define CREQ_FUNC_EVENT_EVENT_CFCC_ERROR         0x9UL
2851	#define CREQ_FUNC_EVENT_EVENT_CFCM_ERROR         0xaUL
2852	#define CREQ_FUNC_EVENT_EVENT_TIM_ERROR          0xbUL
2853	#define CREQ_FUNC_EVENT_EVENT_VF_COMM_REQUEST    0x80UL
2854	#define CREQ_FUNC_EVENT_EVENT_RESOURCE_EXHAUSTED 0x81UL
2855	#define CREQ_FUNC_EVENT_EVENT_LAST              CREQ_FUNC_EVENT_EVENT_RESOURCE_EXHAUSTED
2856	u8	reserved48[6];
2857};
2858
2859/* creq_qp_event (size:128b/16B) */
2860struct creq_qp_event {
2861	u8	type;
2862	#define CREQ_QP_EVENT_TYPE_MASK    0x3fUL
2863	#define CREQ_QP_EVENT_TYPE_SFT     0
2864	#define CREQ_QP_EVENT_TYPE_QP_EVENT  0x38UL
2865	#define CREQ_QP_EVENT_TYPE_LAST     CREQ_QP_EVENT_TYPE_QP_EVENT
2866	u8	status;
2867	#define CREQ_QP_EVENT_STATUS_SUCCESS           0x0UL
2868	#define CREQ_QP_EVENT_STATUS_FAIL              0x1UL
2869	#define CREQ_QP_EVENT_STATUS_RESOURCES         0x2UL
2870	#define CREQ_QP_EVENT_STATUS_INVALID_CMD       0x3UL
2871	#define CREQ_QP_EVENT_STATUS_NOT_IMPLEMENTED   0x4UL
2872	#define CREQ_QP_EVENT_STATUS_INVALID_PARAMETER 0x5UL
2873	#define CREQ_QP_EVENT_STATUS_HARDWARE_ERROR    0x6UL
2874	#define CREQ_QP_EVENT_STATUS_INTERNAL_ERROR    0x7UL
2875	#define CREQ_QP_EVENT_STATUS_LAST             CREQ_QP_EVENT_STATUS_INTERNAL_ERROR
2876	__le16	cookie;
2877	__le32	reserved32;
2878	u8	v;
2879	#define CREQ_QP_EVENT_V     0x1UL
2880	u8	event;
2881	#define CREQ_QP_EVENT_EVENT_CREATE_QP             0x1UL
2882	#define CREQ_QP_EVENT_EVENT_DESTROY_QP            0x2UL
2883	#define CREQ_QP_EVENT_EVENT_MODIFY_QP             0x3UL
2884	#define CREQ_QP_EVENT_EVENT_QUERY_QP              0x4UL
2885	#define CREQ_QP_EVENT_EVENT_CREATE_SRQ            0x5UL
2886	#define CREQ_QP_EVENT_EVENT_DESTROY_SRQ           0x6UL
2887	#define CREQ_QP_EVENT_EVENT_QUERY_SRQ             0x8UL
2888	#define CREQ_QP_EVENT_EVENT_CREATE_CQ             0x9UL
2889	#define CREQ_QP_EVENT_EVENT_DESTROY_CQ            0xaUL
2890	#define CREQ_QP_EVENT_EVENT_RESIZE_CQ             0xcUL
2891	#define CREQ_QP_EVENT_EVENT_ALLOCATE_MRW          0xdUL
2892	#define CREQ_QP_EVENT_EVENT_DEALLOCATE_KEY        0xeUL
2893	#define CREQ_QP_EVENT_EVENT_REGISTER_MR           0xfUL
2894	#define CREQ_QP_EVENT_EVENT_DEREGISTER_MR         0x10UL
2895	#define CREQ_QP_EVENT_EVENT_ADD_GID               0x11UL
2896	#define CREQ_QP_EVENT_EVENT_DELETE_GID            0x12UL
2897	#define CREQ_QP_EVENT_EVENT_MODIFY_GID            0x17UL
2898	#define CREQ_QP_EVENT_EVENT_QUERY_GID             0x18UL
2899	#define CREQ_QP_EVENT_EVENT_CREATE_QP1            0x13UL
2900	#define CREQ_QP_EVENT_EVENT_DESTROY_QP1           0x14UL
2901	#define CREQ_QP_EVENT_EVENT_CREATE_AH             0x15UL
2902	#define CREQ_QP_EVENT_EVENT_DESTROY_AH            0x16UL
2903	#define CREQ_QP_EVENT_EVENT_INITIALIZE_FW         0x80UL
2904	#define CREQ_QP_EVENT_EVENT_DEINITIALIZE_FW       0x81UL
2905	#define CREQ_QP_EVENT_EVENT_STOP_FUNC             0x82UL
2906	#define CREQ_QP_EVENT_EVENT_QUERY_FUNC            0x83UL
2907	#define CREQ_QP_EVENT_EVENT_SET_FUNC_RESOURCES    0x84UL
2908	#define CREQ_QP_EVENT_EVENT_READ_CONTEXT          0x85UL
2909	#define CREQ_QP_EVENT_EVENT_MAP_TC_TO_COS         0x8aUL
2910	#define CREQ_QP_EVENT_EVENT_QUERY_VERSION         0x8bUL
2911	#define CREQ_QP_EVENT_EVENT_MODIFY_CC             0x8cUL
2912	#define CREQ_QP_EVENT_EVENT_QUERY_CC              0x8dUL
2913	#define CREQ_QP_EVENT_EVENT_QUERY_ROCE_STATS      0x8eUL
2914	#define CREQ_QP_EVENT_EVENT_SET_LINK_AGGR_MODE    0x8fUL
2915	#define CREQ_QP_EVENT_EVENT_QUERY_QP_EXTEND       0x91UL
2916	#define CREQ_QP_EVENT_EVENT_QP_ERROR_NOTIFICATION 0xc0UL
2917	#define CREQ_QP_EVENT_EVENT_CQ_ERROR_NOTIFICATION 0xc1UL
2918	#define CREQ_QP_EVENT_EVENT_LAST                 CREQ_QP_EVENT_EVENT_CQ_ERROR_NOTIFICATION
2919	u8	reserved48[6];
2920};
2921
2922/* creq_qp_error_notification (size:128b/16B) */
2923struct creq_qp_error_notification {
2924	u8	type;
2925	#define CREQ_QP_ERROR_NOTIFICATION_TYPE_MASK    0x3fUL
2926	#define CREQ_QP_ERROR_NOTIFICATION_TYPE_SFT     0
2927	#define CREQ_QP_ERROR_NOTIFICATION_TYPE_QP_EVENT  0x38UL
2928	#define CREQ_QP_ERROR_NOTIFICATION_TYPE_LAST     CREQ_QP_ERROR_NOTIFICATION_TYPE_QP_EVENT
2929	u8	status;
2930	u8	req_slow_path_state;
2931	u8	req_err_state_reason;
2932	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_NO_ERROR                    0X0UL
2933	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_OPCODE_ERROR            0X1UL
2934	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_TIMEOUT_RETRY_LIMIT     0X2UL
2935	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RNR_TIMEOUT_RETRY_LIMIT 0X3UL
2936	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_NAK_ARRIVAL_1           0X4UL
2937	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_NAK_ARRIVAL_2           0X5UL
2938	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_NAK_ARRIVAL_3           0X6UL
2939	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_NAK_ARRIVAL_4           0X7UL
2940	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RX_MEMORY_ERROR         0X8UL
2941	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_TX_MEMORY_ERROR         0X9UL
2942	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_READ_RESP_LENGTH        0XAUL
2943	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_INVALID_READ_RESP       0XBUL
2944	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_ILLEGAL_BIND            0XCUL
2945	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_ILLEGAL_FAST_REG        0XDUL
2946	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_ILLEGAL_INVALIDATE      0XEUL
2947	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_CMP_ERROR               0XFUL
2948	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RETRAN_LOCAL_ERROR      0X10UL
2949	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_WQE_FORMAT_ERROR        0X11UL
2950	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_ORRQ_FORMAT_ERROR       0X12UL
2951	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_INVALID_AVID_ERROR      0X13UL
2952	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_AV_DOMAIN_ERROR         0X14UL
2953	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_CQ_LOAD_ERROR           0X15UL
2954	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_SERV_TYPE_ERROR         0X16UL
2955	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_INVALID_OP_ERROR        0X17UL
2956	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_TX_PCI_ERROR            0X18UL
2957	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RX_PCI_ERROR            0X19UL
2958	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_PROD_WQE_MSMTCH_ERROR   0X1AUL
2959	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_PSN_RANGE_CHECK_ERROR   0X1BUL
2960	#define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RETX_SETUP_ERROR        0X1CUL
2961	__le32	xid;
2962	u8	v;
2963	#define CREQ_QP_ERROR_NOTIFICATION_V     0x1UL
2964	u8	event;
2965	#define CREQ_QP_ERROR_NOTIFICATION_EVENT_QP_ERROR_NOTIFICATION 0xc0UL
2966	#define CREQ_QP_ERROR_NOTIFICATION_EVENT_LAST \
2967		CREQ_QP_ERROR_NOTIFICATION_EVENT_QP_ERROR_NOTIFICATION
2968	u8	res_slow_path_state;
2969	u8	res_err_state_reason;
2970	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_NO_ERROR                      0x0UL
2971	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_EXCEED_MAX                0x1UL
2972	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_PAYLOAD_LENGTH_MISMATCH   0x2UL
2973	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_EXCEEDS_WQE               0x3UL
2974	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_OPCODE_ERROR              0x4UL
2975	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_PSN_SEQ_ERROR_RETRY_LIMIT 0x5UL
2976	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_INVALID_R_KEY          0x6UL
2977	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_DOMAIN_ERROR           0x7UL
2978	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_NO_PERMISSION          0x8UL
2979	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_RANGE_ERROR            0x9UL
2980	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_INVALID_R_KEY          0xaUL
2981	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_DOMAIN_ERROR           0xbUL
2982	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_NO_PERMISSION          0xcUL
2983	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_RANGE_ERROR            0xdUL
2984	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_IRRQ_OFLOW                0xeUL
2985	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_UNSUPPORTED_OPCODE        0xfUL
2986	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_UNALIGN_ATOMIC            0x10UL
2987	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_REM_INVALIDATE            0x11UL
2988	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_MEMORY_ERROR              0x12UL
2989	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_SRQ_ERROR                 0x13UL
2990	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_CMP_ERROR                 0x14UL
2991	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_INVALID_DUP_RKEY          0x15UL
2992	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_WQE_FORMAT_ERROR          0x16UL
2993	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_IRRQ_FORMAT_ERROR         0x17UL
2994	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_CQ_LOAD_ERROR             0x18UL
2995	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_SRQ_LOAD_ERROR            0x19UL
2996	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_PCI_ERROR              0x1bUL
2997	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_PCI_ERROR              0x1cUL
2998	#define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_PSN_NOT_FOUND             0x1dUL
2999	__le16	sq_cons_idx;
3000	__le16	rq_cons_idx;
3001};
3002
3003/* creq_cq_error_notification (size:128b/16B) */
3004struct creq_cq_error_notification {
3005	u8	type;
3006	#define CREQ_CQ_ERROR_NOTIFICATION_TYPE_MASK    0x3fUL
3007	#define CREQ_CQ_ERROR_NOTIFICATION_TYPE_SFT     0
3008	#define CREQ_CQ_ERROR_NOTIFICATION_TYPE_CQ_EVENT  0x38UL
3009	#define CREQ_CQ_ERROR_NOTIFICATION_TYPE_LAST     CREQ_CQ_ERROR_NOTIFICATION_TYPE_CQ_EVENT
3010	u8	status;
3011	u8	cq_err_reason;
3012	#define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_REQ_CQ_INVALID_ERROR  0x1UL
3013	#define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_REQ_CQ_OVERFLOW_ERROR 0x2UL
3014	#define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_REQ_CQ_LOAD_ERROR     0x3UL
3015	#define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_RES_CQ_INVALID_ERROR  0x4UL
3016	#define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_RES_CQ_OVERFLOW_ERROR 0x5UL
3017	#define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_RES_CQ_LOAD_ERROR     0x6UL
3018	#define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_LAST \
3019			CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_RES_CQ_LOAD_ERROR
3020	u8	reserved8;
3021	__le32	xid;
3022	u8	v;
3023	#define CREQ_CQ_ERROR_NOTIFICATION_V     0x1UL
3024	u8	event;
3025	#define CREQ_CQ_ERROR_NOTIFICATION_EVENT_CQ_ERROR_NOTIFICATION 0xc1UL
3026	#define CREQ_CQ_ERROR_NOTIFICATION_EVENT_LAST \
3027		CREQ_CQ_ERROR_NOTIFICATION_EVENT_CQ_ERROR_NOTIFICATION
3028	u8	reserved48[6];
3029};
3030
3031/* sq_base (size:64b/8B) */
3032struct sq_base {
3033	u8	wqe_type;
3034	#define SQ_BASE_WQE_TYPE_SEND           0x0UL
3035	#define SQ_BASE_WQE_TYPE_SEND_W_IMMEAD  0x1UL
3036	#define SQ_BASE_WQE_TYPE_SEND_W_INVALID 0x2UL
3037	#define SQ_BASE_WQE_TYPE_WRITE_WQE      0x4UL
3038	#define SQ_BASE_WQE_TYPE_WRITE_W_IMMEAD 0x5UL
3039	#define SQ_BASE_WQE_TYPE_READ_WQE       0x6UL
3040	#define SQ_BASE_WQE_TYPE_ATOMIC_CS      0x8UL
3041	#define SQ_BASE_WQE_TYPE_ATOMIC_FA      0xbUL
3042	#define SQ_BASE_WQE_TYPE_LOCAL_INVALID  0xcUL
3043	#define SQ_BASE_WQE_TYPE_FR_PMR         0xdUL
3044	#define SQ_BASE_WQE_TYPE_BIND           0xeUL
3045	#define SQ_BASE_WQE_TYPE_FR_PPMR        0xfUL
3046	#define SQ_BASE_WQE_TYPE_LAST          SQ_BASE_WQE_TYPE_FR_PPMR
3047	u8	unused_0[7];
3048};
3049
3050/* sq_sge (size:128b/16B) */
3051struct sq_sge {
3052	__le64	va_or_pa;
3053	__le32	l_key;
3054	__le32	size;
3055};
3056
3057/* sq_psn_search (size:64b/8B) */
3058struct sq_psn_search {
3059	__le32	opcode_start_psn;
3060	#define SQ_PSN_SEARCH_START_PSN_MASK 0xffffffUL
3061	#define SQ_PSN_SEARCH_START_PSN_SFT 0
3062	#define SQ_PSN_SEARCH_OPCODE_MASK   0xff000000UL
3063	#define SQ_PSN_SEARCH_OPCODE_SFT    24
3064	__le32	flags_next_psn;
3065	#define SQ_PSN_SEARCH_NEXT_PSN_MASK 0xffffffUL
3066	#define SQ_PSN_SEARCH_NEXT_PSN_SFT 0
3067	#define SQ_PSN_SEARCH_FLAGS_MASK   0xff000000UL
3068	#define SQ_PSN_SEARCH_FLAGS_SFT    24
3069};
3070
3071/* sq_psn_search_ext (size:128b/16B) */
3072struct sq_psn_search_ext {
3073	__le32	opcode_start_psn;
3074	#define SQ_PSN_SEARCH_EXT_START_PSN_MASK 0xffffffUL
3075	#define SQ_PSN_SEARCH_EXT_START_PSN_SFT 0
3076	#define SQ_PSN_SEARCH_EXT_OPCODE_MASK   0xff000000UL
3077	#define SQ_PSN_SEARCH_EXT_OPCODE_SFT    24
3078	__le32	flags_next_psn;
3079	#define SQ_PSN_SEARCH_EXT_NEXT_PSN_MASK 0xffffffUL
3080	#define SQ_PSN_SEARCH_EXT_NEXT_PSN_SFT 0
3081	#define SQ_PSN_SEARCH_EXT_FLAGS_MASK   0xff000000UL
3082	#define SQ_PSN_SEARCH_EXT_FLAGS_SFT    24
3083	__le16	start_slot_idx;
3084	__le16	reserved16;
3085	__le32	reserved32;
3086};
3087
3088/* sq_msn_search (size:64b/8B) */
3089struct sq_msn_search {
3090	__le64	start_idx_next_psn_start_psn;
3091	#define SQ_MSN_SEARCH_START_PSN_MASK 0xffffffUL
3092	#define SQ_MSN_SEARCH_START_PSN_SFT 0
3093	#define SQ_MSN_SEARCH_NEXT_PSN_MASK 0xffffff000000ULL
3094	#define SQ_MSN_SEARCH_NEXT_PSN_SFT  24
3095	#define SQ_MSN_SEARCH_START_IDX_MASK 0xffff000000000000ULL
3096	#define SQ_MSN_SEARCH_START_IDX_SFT 48
3097};
3098
3099/* sq_send (size:1024b/128B) */
3100struct sq_send {
3101	u8	wqe_type;
3102	#define SQ_SEND_WQE_TYPE_SEND           0x0UL
3103	#define SQ_SEND_WQE_TYPE_SEND_W_IMMEAD  0x1UL
3104	#define SQ_SEND_WQE_TYPE_SEND_W_INVALID 0x2UL
3105	#define SQ_SEND_WQE_TYPE_LAST          SQ_SEND_WQE_TYPE_SEND_W_INVALID
3106	u8	flags;
3107	#define SQ_SEND_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL
3108	#define SQ_SEND_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT  0
3109	#define SQ_SEND_FLAGS_SIGNAL_COMP                                            0x1UL
3110	#define SQ_SEND_FLAGS_RD_OR_ATOMIC_FENCE                                     0x2UL
3111	#define SQ_SEND_FLAGS_UC_FENCE                                               0x4UL
3112	#define SQ_SEND_FLAGS_SE                                                     0x8UL
3113	#define SQ_SEND_FLAGS_INLINE                                                 0x10UL
3114	#define SQ_SEND_FLAGS_WQE_TS_EN                                              0x20UL
3115	#define SQ_SEND_FLAGS_DEBUG_TRACE                                            0x40UL
3116	u8	wqe_size;
3117	u8	reserved8_1;
3118	__le32	inv_key_or_imm_data;
3119	__le32	length;
3120	__le32	q_key;
3121	__le32	dst_qp;
3122	#define SQ_SEND_DST_QP_MASK 0xffffffUL
3123	#define SQ_SEND_DST_QP_SFT 0
3124	__le32	avid;
3125	#define SQ_SEND_AVID_MASK 0xfffffUL
3126	#define SQ_SEND_AVID_SFT 0
3127	__le32	reserved32;
3128	__le32	timestamp;
3129	#define SQ_SEND_TIMESTAMP_MASK 0xffffffUL
3130	#define SQ_SEND_TIMESTAMP_SFT 0
3131	__le32	data[24];
3132};
3133
3134/* sq_send_hdr (size:256b/32B) */
3135struct sq_send_hdr {
3136	u8	wqe_type;
3137	#define SQ_SEND_HDR_WQE_TYPE_SEND           0x0UL
3138	#define SQ_SEND_HDR_WQE_TYPE_SEND_W_IMMEAD  0x1UL
3139	#define SQ_SEND_HDR_WQE_TYPE_SEND_W_INVALID 0x2UL
3140	#define SQ_SEND_HDR_WQE_TYPE_LAST          SQ_SEND_HDR_WQE_TYPE_SEND_W_INVALID
3141	u8	flags;
3142	#define SQ_SEND_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL
3143	#define SQ_SEND_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT  0
3144	#define SQ_SEND_HDR_FLAGS_SIGNAL_COMP                                            0x1UL
3145	#define SQ_SEND_HDR_FLAGS_RD_OR_ATOMIC_FENCE                                     0x2UL
3146	#define SQ_SEND_HDR_FLAGS_UC_FENCE                                               0x4UL
3147	#define SQ_SEND_HDR_FLAGS_SE                                                     0x8UL
3148	#define SQ_SEND_HDR_FLAGS_INLINE                                                 0x10UL
3149	#define SQ_SEND_HDR_FLAGS_WQE_TS_EN                                              0x20UL
3150	#define SQ_SEND_HDR_FLAGS_DEBUG_TRACE                                            0x40UL
3151	u8	wqe_size;
3152	u8	reserved8_1;
3153	__le32	inv_key_or_imm_data;
3154	__le32	length;
3155	__le32	q_key;
3156	__le32	dst_qp;
3157	#define SQ_SEND_HDR_DST_QP_MASK 0xffffffUL
3158	#define SQ_SEND_HDR_DST_QP_SFT 0
3159	__le32	avid;
3160	#define SQ_SEND_HDR_AVID_MASK 0xfffffUL
3161	#define SQ_SEND_HDR_AVID_SFT 0
3162	__le32	reserved32;
3163	__le32	timestamp;
3164	#define SQ_SEND_HDR_TIMESTAMP_MASK 0xffffffUL
3165	#define SQ_SEND_HDR_TIMESTAMP_SFT 0
3166};
3167
3168/* sq_send_raweth_qp1 (size:1024b/128B) */
3169struct sq_send_raweth_qp1 {
3170	u8	wqe_type;
3171	#define SQ_SEND_RAWETH_QP1_WQE_TYPE_SEND 0x0UL
3172	#define SQ_SEND_RAWETH_QP1_WQE_TYPE_LAST SQ_SEND_RAWETH_QP1_WQE_TYPE_SEND
3173	u8	flags;
3174	#define SQ_SEND_RAWETH_QP1_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK \
3175		0xffUL
3176	#define SQ_SEND_RAWETH_QP1_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT \
3177		0
3178	#define SQ_SEND_RAWETH_QP1_FLAGS_SIGNAL_COMP  0x1UL
3179	#define SQ_SEND_RAWETH_QP1_FLAGS_RD_OR_ATOMIC_FENCE  0x2UL
3180	#define SQ_SEND_RAWETH_QP1_FLAGS_UC_FENCE 0x4UL
3181	#define SQ_SEND_RAWETH_QP1_FLAGS_SE	0x8UL
3182	#define SQ_SEND_RAWETH_QP1_FLAGS_INLINE 0x10UL
3183	#define SQ_SEND_RAWETH_QP1_FLAGS_WQE_TS_EN 0x20UL
3184	#define SQ_SEND_RAWETH_QP1_FLAGS_DEBUG_TRACE 0x40UL
3185	u8	wqe_size;
3186	u8	reserved8;
3187	__le16	lflags;
3188	#define SQ_SEND_RAWETH_QP1_LFLAGS_TCP_UDP_CHKSUM     0x1UL
3189	#define SQ_SEND_RAWETH_QP1_LFLAGS_IP_CHKSUM          0x2UL
3190	#define SQ_SEND_RAWETH_QP1_LFLAGS_NOCRC              0x4UL
3191	#define SQ_SEND_RAWETH_QP1_LFLAGS_STAMP              0x8UL
3192	#define SQ_SEND_RAWETH_QP1_LFLAGS_T_IP_CHKSUM        0x10UL
3193	#define SQ_SEND_RAWETH_QP1_LFLAGS_ROCE_CRC           0x100UL
3194	#define SQ_SEND_RAWETH_QP1_LFLAGS_FCOE_CRC           0x200UL
3195	__le16	cfa_action;
3196	__le32	length;
3197	__le32	reserved32_1;
3198	__le32	cfa_meta;
3199	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_VID_MASK     0xfffUL
3200	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_VID_SFT      0
3201	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_DE           0x1000UL
3202	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_PRI_MASK     0xe000UL
3203	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_PRI_SFT      13
3204	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_MASK    0x70000UL
3205	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_SFT     16
3206	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID88A8  (0x0UL << 16)
3207	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID8100  (0x1UL << 16)
3208	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID9100  (0x2UL << 16)
3209	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID9200  (0x3UL << 16)
3210	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID9300  (0x4UL << 16)
3211	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPIDCFG   (0x5UL << 16)
3212	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_LAST\
3213		SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPIDCFG
3214	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_RESERVED_MASK 0xff80000UL
3215	#define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_RESERVED_SFT 19
3216	#define SQ_SEND_RAWETH_QP1_CFA_META_KEY_MASK          0xf0000000UL
3217	#define SQ_SEND_RAWETH_QP1_CFA_META_KEY_SFT           28
3218	#define SQ_SEND_RAWETH_QP1_CFA_META_KEY_NONE            (0x0UL << 28)
3219	#define SQ_SEND_RAWETH_QP1_CFA_META_KEY_VLAN_TAG        (0x1UL << 28)
3220	#define SQ_SEND_RAWETH_QP1_CFA_META_KEY_LAST SQ_SEND_RAWETH_QP1_CFA_META_KEY_VLAN_TAG
3221	__le32	reserved32_2;
3222	__le32	reserved32_3;
3223	__le32	timestamp;
3224	#define SQ_SEND_RAWETH_QP1_TIMESTAMP_MASK 0xffffffUL
3225	#define SQ_SEND_RAWETH_QP1_TIMESTAMP_SFT 0
3226	__le32	data[24];
3227};
3228
3229/* sq_send_raweth_qp1_hdr (size:256b/32B) */
3230struct sq_send_raweth_qp1_hdr {
3231	u8	wqe_type;
3232	#define SQ_SEND_RAWETH_QP1_HDR_WQE_TYPE_SEND 0x0UL
3233	#define SQ_SEND_RAWETH_QP1_HDR_WQE_TYPE_LAST SQ_SEND_RAWETH_QP1_HDR_WQE_TYPE_SEND
3234	u8	flags;
3235	#define \
3236	SQ_SEND_RAWETH_QP1_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL
3237	#define SQ_SEND_RAWETH_QP1_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT\
3238		0
3239	#define SQ_SEND_RAWETH_QP1_HDR_FLAGS_SIGNAL_COMP 0x1UL
3240	#define SQ_SEND_RAWETH_QP1_HDR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL
3241	#define SQ_SEND_RAWETH_QP1_HDR_FLAGS_UC_FENCE 0x4UL
3242	#define SQ_SEND_RAWETH_QP1_HDR_FLAGS_SE 0x8UL
3243	#define SQ_SEND_RAWETH_QP1_HDR_FLAGS_INLINE 0x10UL
3244	#define SQ_SEND_RAWETH_QP1_HDR_FLAGS_WQE_TS_EN 0x20UL
3245	#define SQ_SEND_RAWETH_QP1_HDR_FLAGS_DEBUG_TRACE 0x40UL
3246	u8	wqe_size;
3247	u8	reserved8;
3248	__le16	lflags;
3249	#define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_TCP_UDP_CHKSUM     0x1UL
3250	#define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_IP_CHKSUM          0x2UL
3251	#define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_NOCRC              0x4UL
3252	#define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_STAMP              0x8UL
3253	#define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_T_IP_CHKSUM        0x10UL
3254	#define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_ROCE_CRC           0x100UL
3255	#define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_FCOE_CRC           0x200UL
3256	__le16	cfa_action;
3257	__le32	length;
3258	__le32	reserved32_1;
3259	__le32	cfa_meta;
3260	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_VID_MASK     0xfffUL
3261	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_VID_SFT      0
3262	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_DE           0x1000UL
3263	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_PRI_MASK     0xe000UL
3264	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_PRI_SFT      13
3265	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_MASK    0x70000UL
3266	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_SFT     16
3267	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID88A8  (0x0UL << 16)
3268	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID8100  (0x1UL << 16)
3269	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID9100  (0x2UL << 16)
3270	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID9200  (0x3UL << 16)
3271	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID9300  (0x4UL << 16)
3272	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPIDCFG   (0x5UL << 16)
3273	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_LAST\
3274			SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPIDCFG
3275	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_RESERVED_MASK 0xff80000UL
3276	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_RESERVED_SFT 19
3277	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_MASK          0xf0000000UL
3278	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_SFT           28
3279	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_NONE            (0x0UL << 28)
3280	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_VLAN_TAG        (0x1UL << 28)
3281	#define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_LAST\
3282		SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_VLAN_TAG
3283	__le32	reserved32_2;
3284	__le32	reserved32_3;
3285	__le32	timestamp;
3286	#define SQ_SEND_RAWETH_QP1_HDR_TIMESTAMP_MASK 0xffffffUL
3287	#define SQ_SEND_RAWETH_QP1_HDR_TIMESTAMP_SFT 0
3288};
3289
3290/* sq_rdma (size:1024b/128B) */
3291struct sq_rdma {
3292	u8	wqe_type;
3293	#define SQ_RDMA_WQE_TYPE_WRITE_WQE      0x4UL
3294	#define SQ_RDMA_WQE_TYPE_WRITE_W_IMMEAD 0x5UL
3295	#define SQ_RDMA_WQE_TYPE_READ_WQE       0x6UL
3296	#define SQ_RDMA_WQE_TYPE_LAST          SQ_RDMA_WQE_TYPE_READ_WQE
3297	u8	flags;
3298	#define SQ_RDMA_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL
3299	#define SQ_RDMA_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT  0
3300	#define SQ_RDMA_FLAGS_SIGNAL_COMP                                            0x1UL
3301	#define SQ_RDMA_FLAGS_RD_OR_ATOMIC_FENCE                                     0x2UL
3302	#define SQ_RDMA_FLAGS_UC_FENCE                                               0x4UL
3303	#define SQ_RDMA_FLAGS_SE                                                     0x8UL
3304	#define SQ_RDMA_FLAGS_INLINE                                                 0x10UL
3305	#define SQ_RDMA_FLAGS_WQE_TS_EN                                              0x20UL
3306	#define SQ_RDMA_FLAGS_DEBUG_TRACE                                            0x40UL
3307	u8	wqe_size;
3308	u8	reserved8;
3309	__le32	imm_data;
3310	__le32	length;
3311	__le32	reserved32_1;
3312	__le64	remote_va;
3313	__le32	remote_key;
3314	__le32	timestamp;
3315	#define SQ_RDMA_TIMESTAMP_MASK 0xffffffUL
3316	#define SQ_RDMA_TIMESTAMP_SFT 0
3317	__le32	data[24];
3318};
3319
3320/* sq_rdma_hdr (size:256b/32B) */
3321struct sq_rdma_hdr {
3322	u8	wqe_type;
3323	#define SQ_RDMA_HDR_WQE_TYPE_WRITE_WQE      0x4UL
3324	#define SQ_RDMA_HDR_WQE_TYPE_WRITE_W_IMMEAD 0x5UL
3325	#define SQ_RDMA_HDR_WQE_TYPE_READ_WQE       0x6UL
3326	#define SQ_RDMA_HDR_WQE_TYPE_LAST          SQ_RDMA_HDR_WQE_TYPE_READ_WQE
3327	u8	flags;
3328	#define SQ_RDMA_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL
3329	#define SQ_RDMA_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT  0
3330	#define SQ_RDMA_HDR_FLAGS_SIGNAL_COMP                                            0x1UL
3331	#define SQ_RDMA_HDR_FLAGS_RD_OR_ATOMIC_FENCE                                     0x2UL
3332	#define SQ_RDMA_HDR_FLAGS_UC_FENCE                                               0x4UL
3333	#define SQ_RDMA_HDR_FLAGS_SE                                                     0x8UL
3334	#define SQ_RDMA_HDR_FLAGS_INLINE                                                 0x10UL
3335	#define SQ_RDMA_HDR_FLAGS_WQE_TS_EN                                              0x20UL
3336	#define SQ_RDMA_HDR_FLAGS_DEBUG_TRACE                                            0x40UL
3337	u8	wqe_size;
3338	u8	reserved8;
3339	__le32	imm_data;
3340	__le32	length;
3341	__le32	reserved32_1;
3342	__le64	remote_va;
3343	__le32	remote_key;
3344	__le32	timestamp;
3345	#define SQ_RDMA_HDR_TIMESTAMP_MASK 0xffffffUL
3346	#define SQ_RDMA_HDR_TIMESTAMP_SFT 0
3347};
3348
3349/* sq_atomic (size:1024b/128B) */
3350struct sq_atomic {
3351	u8	wqe_type;
3352	#define SQ_ATOMIC_WQE_TYPE_ATOMIC_CS 0x8UL
3353	#define SQ_ATOMIC_WQE_TYPE_ATOMIC_FA 0xbUL
3354	#define SQ_ATOMIC_WQE_TYPE_LAST     SQ_ATOMIC_WQE_TYPE_ATOMIC_FA
3355	u8	flags;
3356	#define SQ_ATOMIC_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK   0xffUL
3357	#define SQ_ATOMIC_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT    0
3358	#define SQ_ATOMIC_FLAGS_SIGNAL_COMP                                              0x1UL
3359	#define SQ_ATOMIC_FLAGS_RD_OR_ATOMIC_FENCE                                       0x2UL
3360	#define SQ_ATOMIC_FLAGS_UC_FENCE                                                 0x4UL
3361	#define SQ_ATOMIC_FLAGS_SE                                                       0x8UL
3362	#define SQ_ATOMIC_FLAGS_INLINE                                                   0x10UL
3363	#define SQ_ATOMIC_FLAGS_WQE_TS_EN                                                0x20UL
3364	#define SQ_ATOMIC_FLAGS_DEBUG_TRACE                                              0x40UL
3365	__le16	reserved16;
3366	__le32	remote_key;
3367	__le64	remote_va;
3368	__le64	swap_data;
3369	__le64	cmp_data;
3370	__le32	data[24];
3371};
3372
3373/* sq_atomic_hdr (size:256b/32B) */
3374struct sq_atomic_hdr {
3375	u8	wqe_type;
3376	#define SQ_ATOMIC_HDR_WQE_TYPE_ATOMIC_CS 0x8UL
3377	#define SQ_ATOMIC_HDR_WQE_TYPE_ATOMIC_FA 0xbUL
3378	#define SQ_ATOMIC_HDR_WQE_TYPE_LAST     SQ_ATOMIC_HDR_WQE_TYPE_ATOMIC_FA
3379	u8	flags;
3380	#define SQ_ATOMIC_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL
3381	#define SQ_ATOMIC_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT 0
3382	#define SQ_ATOMIC_HDR_FLAGS_SIGNAL_COMP  0x1UL
3383	#define SQ_ATOMIC_HDR_FLAGS_RD_OR_ATOMIC_FENCE  0x2UL
3384	#define SQ_ATOMIC_HDR_FLAGS_UC_FENCE            0x4UL
3385	#define SQ_ATOMIC_HDR_FLAGS_SE                  0x8UL
3386	#define SQ_ATOMIC_HDR_FLAGS_INLINE              0x10UL
3387	#define SQ_ATOMIC_HDR_FLAGS_WQE_TS_EN           0x20UL
3388	#define SQ_ATOMIC_HDR_FLAGS_DEBUG_TRACE         0x40UL
3389	__le16	reserved16;
3390	__le32	remote_key;
3391	__le64	remote_va;
3392	__le64	swap_data;
3393	__le64	cmp_data;
3394};
3395
3396/* sq_localinvalidate (size:1024b/128B) */
3397struct sq_localinvalidate {
3398	u8	wqe_type;
3399	#define SQ_LOCALINVALIDATE_WQE_TYPE_LOCAL_INVALID 0xcUL
3400	#define SQ_LOCALINVALIDATE_WQE_TYPE_LAST         SQ_LOCALINVALIDATE_WQE_TYPE_LOCAL_INVALID
3401	u8	flags;
3402	#define SQ_LOCALINVALIDATE_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK\
3403		0xffUL
3404	#define SQ_LOCALINVALIDATE_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT\
3405		0
3406	#define SQ_LOCALINVALIDATE_FLAGS_SIGNAL_COMP   0x1UL
3407	#define SQ_LOCALINVALIDATE_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL
3408	#define SQ_LOCALINVALIDATE_FLAGS_UC_FENCE 0x4UL
3409	#define SQ_LOCALINVALIDATE_FLAGS_SE 0x8UL
3410	#define SQ_LOCALINVALIDATE_FLAGS_INLINE 0x10UL
3411	#define SQ_LOCALINVALIDATE_FLAGS_WQE_TS_EN 0x20UL
3412	#define SQ_LOCALINVALIDATE_FLAGS_DEBUG_TRACE 0x40UL
3413	__le16	reserved16;
3414	__le32	inv_l_key;
3415	__le64	reserved64;
3416	u8	reserved128[16];
3417	__le32	data[24];
3418};
3419
3420/* sq_localinvalidate_hdr (size:256b/32B) */
3421struct sq_localinvalidate_hdr {
3422	u8	wqe_type;
3423	#define SQ_LOCALINVALIDATE_HDR_WQE_TYPE_LOCAL_INVALID 0xcUL
3424	#define SQ_LOCALINVALIDATE_HDR_WQE_TYPE_LAST SQ_LOCALINVALIDATE_HDR_WQE_TYPE_LOCAL_INVALID
3425	u8	flags;
3426	#define \
3427	SQ_LOCALINVALIDATE_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL
3428	#define SQ_LOCALINVALIDATE_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT\
3429		0
3430	#define SQ_LOCALINVALIDATE_HDR_FLAGS_SIGNAL_COMP 0x1UL
3431	#define SQ_LOCALINVALIDATE_HDR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL
3432	#define SQ_LOCALINVALIDATE_HDR_FLAGS_UC_FENCE 0x4UL
3433	#define SQ_LOCALINVALIDATE_HDR_FLAGS_SE 0x8UL
3434	#define SQ_LOCALINVALIDATE_HDR_FLAGS_INLINE 0x10UL
3435	#define SQ_LOCALINVALIDATE_HDR_FLAGS_WQE_TS_EN  0x20UL
3436	#define SQ_LOCALINVALIDATE_HDR_FLAGS_DEBUG_TRACE 0x40UL
3437	__le16	reserved16;
3438	__le32	inv_l_key;
3439	__le64	reserved64;
3440	u8	reserved128[16];
3441};
3442
3443/* sq_fr_pmr (size:1024b/128B) */
3444struct sq_fr_pmr {
3445	u8	wqe_type;
3446	#define SQ_FR_PMR_WQE_TYPE_FR_PMR 0xdUL
3447	#define SQ_FR_PMR_WQE_TYPE_LAST  SQ_FR_PMR_WQE_TYPE_FR_PMR
3448	u8	flags;
3449	#define SQ_FR_PMR_FLAGS_SIGNAL_COMP            0x1UL
3450	#define SQ_FR_PMR_FLAGS_RD_OR_ATOMIC_FENCE     0x2UL
3451	#define SQ_FR_PMR_FLAGS_UC_FENCE               0x4UL
3452	#define SQ_FR_PMR_FLAGS_SE                     0x8UL
3453	#define SQ_FR_PMR_FLAGS_INLINE                 0x10UL
3454	#define SQ_FR_PMR_FLAGS_WQE_TS_EN              0x20UL
3455	#define SQ_FR_PMR_FLAGS_DEBUG_TRACE            0x40UL
3456	u8	access_cntl;
3457	#define SQ_FR_PMR_ACCESS_CNTL_LOCAL_WRITE       0x1UL
3458	#define SQ_FR_PMR_ACCESS_CNTL_REMOTE_READ       0x2UL
3459	#define SQ_FR_PMR_ACCESS_CNTL_REMOTE_WRITE      0x4UL
3460	#define SQ_FR_PMR_ACCESS_CNTL_REMOTE_ATOMIC     0x8UL
3461	#define SQ_FR_PMR_ACCESS_CNTL_WINDOW_BIND       0x10UL
3462	u8	zero_based_page_size_log;
3463	#define SQ_FR_PMR_PAGE_SIZE_LOG_MASK     0x1fUL
3464	#define SQ_FR_PMR_PAGE_SIZE_LOG_SFT      0
3465	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_4K    0x0UL
3466	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8K    0x1UL
3467	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_16K   0x2UL
3468	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_32K   0x3UL
3469	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_64K   0x4UL
3470	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_128K  0x5UL
3471	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_256K  0x6UL
3472	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_512K  0x7UL
3473	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_1M    0x8UL
3474	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_2M    0x9UL
3475	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_4M    0xaUL
3476	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8M    0xbUL
3477	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_16M   0xcUL
3478	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_32M   0xdUL
3479	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_64M   0xeUL
3480	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_128M  0xfUL
3481	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_256M  0x10UL
3482	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_512M  0x11UL
3483	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_1G    0x12UL
3484	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_2G    0x13UL
3485	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_4G    0x14UL
3486	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8G    0x15UL
3487	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_16G   0x16UL
3488	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_32G   0x17UL
3489	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_64G   0x18UL
3490	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_128G  0x19UL
3491	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_256G  0x1aUL
3492	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_512G  0x1bUL
3493	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_1T    0x1cUL
3494	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_2T    0x1dUL
3495	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_4T    0x1eUL
3496	#define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8T    0x1fUL
3497	#define SQ_FR_PMR_PAGE_SIZE_LOG_LAST      SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8T
3498	#define SQ_FR_PMR_ZERO_BASED             0x20UL
3499	__le32	l_key;
3500	u8	length[5];
3501	u8	reserved8_1;
3502	u8	reserved8_2;
3503	u8	numlevels_pbl_page_size_log;
3504	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_MASK     0x1fUL
3505	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_SFT      0
3506	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_4K    0x0UL
3507	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8K    0x1UL
3508	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_16K   0x2UL
3509	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_32K   0x3UL
3510	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_64K   0x4UL
3511	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_128K  0x5UL
3512	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_256K  0x6UL
3513	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_512K  0x7UL
3514	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_1M    0x8UL
3515	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_2M    0x9UL
3516	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_4M    0xaUL
3517	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8M    0xbUL
3518	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_16M   0xcUL
3519	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_32M   0xdUL
3520	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_64M   0xeUL
3521	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_128M  0xfUL
3522	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_256M  0x10UL
3523	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_512M  0x11UL
3524	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_1G    0x12UL
3525	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_2G    0x13UL
3526	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_4G    0x14UL
3527	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8G    0x15UL
3528	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_16G   0x16UL
3529	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_32G   0x17UL
3530	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_64G   0x18UL
3531	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_128G  0x19UL
3532	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_256G  0x1aUL
3533	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_512G  0x1bUL
3534	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_1T    0x1cUL
3535	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_2T    0x1dUL
3536	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_4T    0x1eUL
3537	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8T    0x1fUL
3538	#define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_LAST      SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8T
3539	#define SQ_FR_PMR_NUMLEVELS_MASK             0xc0UL
3540	#define SQ_FR_PMR_NUMLEVELS_SFT              6
3541	#define SQ_FR_PMR_NUMLEVELS_PHYSICAL           (0x0UL << 6)
3542	#define SQ_FR_PMR_NUMLEVELS_LAYER1             (0x1UL << 6)
3543	#define SQ_FR_PMR_NUMLEVELS_LAYER2             (0x2UL << 6)
3544	#define SQ_FR_PMR_NUMLEVELS_LAST              SQ_FR_PMR_NUMLEVELS_LAYER2
3545	__le64	pblptr;
3546	__le64	va;
3547	__le32	data[24];
3548};
3549
3550/* sq_fr_pmr_hdr (size:256b/32B) */
3551struct sq_fr_pmr_hdr {
3552	u8	wqe_type;
3553	#define SQ_FR_PMR_HDR_WQE_TYPE_FR_PMR 0xdUL
3554	#define SQ_FR_PMR_HDR_WQE_TYPE_LAST  SQ_FR_PMR_HDR_WQE_TYPE_FR_PMR
3555	u8	flags;
3556	#define SQ_FR_PMR_HDR_FLAGS_SIGNAL_COMP            0x1UL
3557	#define SQ_FR_PMR_HDR_FLAGS_RD_OR_ATOMIC_FENCE     0x2UL
3558	#define SQ_FR_PMR_HDR_FLAGS_UC_FENCE               0x4UL
3559	#define SQ_FR_PMR_HDR_FLAGS_SE                     0x8UL
3560	#define SQ_FR_PMR_HDR_FLAGS_INLINE                 0x10UL
3561	#define SQ_FR_PMR_HDR_FLAGS_WQE_TS_EN              0x20UL
3562	#define SQ_FR_PMR_HDR_FLAGS_DEBUG_TRACE            0x40UL
3563	u8	access_cntl;
3564	#define SQ_FR_PMR_HDR_ACCESS_CNTL_LOCAL_WRITE       0x1UL
3565	#define SQ_FR_PMR_HDR_ACCESS_CNTL_REMOTE_READ       0x2UL
3566	#define SQ_FR_PMR_HDR_ACCESS_CNTL_REMOTE_WRITE      0x4UL
3567	#define SQ_FR_PMR_HDR_ACCESS_CNTL_REMOTE_ATOMIC     0x8UL
3568	#define SQ_FR_PMR_HDR_ACCESS_CNTL_WINDOW_BIND       0x10UL
3569	u8	zero_based_page_size_log;
3570	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_MASK     0x1fUL
3571	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_SFT      0
3572	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_4K    0x0UL
3573	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8K    0x1UL
3574	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_16K   0x2UL
3575	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_32K   0x3UL
3576	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_64K   0x4UL
3577	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_128K  0x5UL
3578	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_256K  0x6UL
3579	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_512K  0x7UL
3580	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_1M    0x8UL
3581	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_2M    0x9UL
3582	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_4M    0xaUL
3583	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8M    0xbUL
3584	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_16M   0xcUL
3585	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_32M   0xdUL
3586	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_64M   0xeUL
3587	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_128M  0xfUL
3588	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_256M  0x10UL
3589	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_512M  0x11UL
3590	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_1G    0x12UL
3591	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_2G    0x13UL
3592	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_4G    0x14UL
3593	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8G    0x15UL
3594	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_16G   0x16UL
3595	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_32G   0x17UL
3596	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_64G   0x18UL
3597	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_128G  0x19UL
3598	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_256G  0x1aUL
3599	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_512G  0x1bUL
3600	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_1T    0x1cUL
3601	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_2T    0x1dUL
3602	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_4T    0x1eUL
3603	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8T    0x1fUL
3604	#define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_LAST      SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8T
3605	#define SQ_FR_PMR_HDR_ZERO_BASED             0x20UL
3606	__le32	l_key;
3607	u8	length[5];
3608	u8	reserved8_1;
3609	u8	reserved8_2;
3610	u8	numlevels_pbl_page_size_log;
3611	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_MASK     0x1fUL
3612	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_SFT      0
3613	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_4K    0x0UL
3614	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8K    0x1UL
3615	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_16K   0x2UL
3616	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_32K   0x3UL
3617	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_64K   0x4UL
3618	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_128K  0x5UL
3619	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_256K  0x6UL
3620	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_512K  0x7UL
3621	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_1M    0x8UL
3622	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_2M    0x9UL
3623	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_4M    0xaUL
3624	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8M    0xbUL
3625	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_16M   0xcUL
3626	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_32M   0xdUL
3627	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_64M   0xeUL
3628	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_128M  0xfUL
3629	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_256M  0x10UL
3630	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_512M  0x11UL
3631	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_1G    0x12UL
3632	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_2G    0x13UL
3633	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_4G    0x14UL
3634	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8G    0x15UL
3635	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_16G   0x16UL
3636	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_32G   0x17UL
3637	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_64G   0x18UL
3638	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_128G  0x19UL
3639	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_256G  0x1aUL
3640	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_512G  0x1bUL
3641	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_1T    0x1cUL
3642	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_2T    0x1dUL
3643	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_4T    0x1eUL
3644	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8T    0x1fUL
3645	#define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_LAST      SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8T
3646	#define SQ_FR_PMR_HDR_NUMLEVELS_MASK             0xc0UL
3647	#define SQ_FR_PMR_HDR_NUMLEVELS_SFT              6
3648	#define SQ_FR_PMR_HDR_NUMLEVELS_PHYSICAL           (0x0UL << 6)
3649	#define SQ_FR_PMR_HDR_NUMLEVELS_LAYER1             (0x1UL << 6)
3650	#define SQ_FR_PMR_HDR_NUMLEVELS_LAYER2             (0x2UL << 6)
3651	#define SQ_FR_PMR_HDR_NUMLEVELS_LAST              SQ_FR_PMR_HDR_NUMLEVELS_LAYER2
3652	__le64	pblptr;
3653	__le64	va;
3654};
3655
3656/* sq_bind (size:1024b/128B) */
3657struct sq_bind {
3658	u8	wqe_type;
3659	#define SQ_BIND_WQE_TYPE_BIND 0xeUL
3660	#define SQ_BIND_WQE_TYPE_LAST SQ_BIND_WQE_TYPE_BIND
3661	u8	flags;
3662	#define SQ_BIND_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL
3663	#define SQ_BIND_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT  0
3664	#define SQ_BIND_FLAGS_SIGNAL_COMP                                            0x1UL
3665	#define SQ_BIND_FLAGS_RD_OR_ATOMIC_FENCE                                     0x2UL
3666	#define SQ_BIND_FLAGS_UC_FENCE                                               0x4UL
3667	#define SQ_BIND_FLAGS_SE                                                     0x8UL
3668	#define SQ_BIND_FLAGS_INLINE                                                 0x10UL
3669	#define SQ_BIND_FLAGS_WQE_TS_EN                                              0x20UL
3670	#define SQ_BIND_FLAGS_DEBUG_TRACE                                            0x40UL
3671	u8	access_cntl;
3672	#define \
3673	SQ_BIND_ACCESS_CNTL_WINDOW_BIND_REMOTE_ATOMIC_REMOTE_WRITE_REMOTE_READ_LOCAL_WRITE_MASK\
3674		0xffUL
3675	#define \
3676	SQ_BIND_ACCESS_CNTL_WINDOW_BIND_REMOTE_ATOMIC_REMOTE_WRITE_REMOTE_READ_LOCAL_WRITE_SFT 0
3677	#define SQ_BIND_ACCESS_CNTL_LOCAL_WRITE       0x1UL
3678	#define SQ_BIND_ACCESS_CNTL_REMOTE_READ       0x2UL
3679	#define SQ_BIND_ACCESS_CNTL_REMOTE_WRITE      0x4UL
3680	#define SQ_BIND_ACCESS_CNTL_REMOTE_ATOMIC     0x8UL
3681	#define SQ_BIND_ACCESS_CNTL_WINDOW_BIND       0x10UL
3682	u8	reserved8_1;
3683	u8	mw_type_zero_based;
3684	#define SQ_BIND_ZERO_BASED     0x1UL
3685	#define SQ_BIND_MW_TYPE        0x2UL
3686	#define SQ_BIND_MW_TYPE_TYPE1    (0x0UL << 1)
3687	#define SQ_BIND_MW_TYPE_TYPE2    (0x1UL << 1)
3688	#define SQ_BIND_MW_TYPE_LAST    SQ_BIND_MW_TYPE_TYPE2
3689	u8	reserved8_2;
3690	__le16	reserved16;
3691	__le32	parent_l_key;
3692	__le32	l_key;
3693	__le64	va;
3694	u8	length[5];
3695	u8	reserved24[3];
3696	__le32	data[24];
3697};
3698
3699/* sq_bind_hdr (size:256b/32B) */
3700struct sq_bind_hdr {
3701	u8	wqe_type;
3702	#define SQ_BIND_HDR_WQE_TYPE_BIND 0xeUL
3703	#define SQ_BIND_HDR_WQE_TYPE_LAST SQ_BIND_HDR_WQE_TYPE_BIND
3704	u8	flags;
3705	#define SQ_BIND_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL
3706	#define SQ_BIND_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT  0
3707	#define SQ_BIND_HDR_FLAGS_SIGNAL_COMP		0x1UL
3708	#define SQ_BIND_HDR_FLAGS_RD_OR_ATOMIC_FENCE	0x2UL
3709	#define SQ_BIND_HDR_FLAGS_UC_FENCE		0x4UL
3710	#define SQ_BIND_HDR_FLAGS_SE                    0x8UL
3711	#define SQ_BIND_HDR_FLAGS_INLINE                0x10UL
3712	#define SQ_BIND_HDR_FLAGS_WQE_TS_EN             0x20UL
3713	#define SQ_BIND_HDR_FLAGS_DEBUG_TRACE           0x40UL
3714	u8	access_cntl;
3715	#define \
3716	SQ_BIND_HDR_ACCESS_CNTL_WINDOW_BIND_REMOTE_ATOMIC_REMOTE_WRITE_REMOTE_READ_LOCAL_WRITE_MASK\
3717		0xffUL
3718	#define \
3719	SQ_BIND_HDR_ACCESS_CNTL_WINDOW_BIND_REMOTE_ATOMIC_REMOTE_WRITE_REMOTE_READ_LOCAL_WRITE_SFT \
3720		0
3721	#define SQ_BIND_HDR_ACCESS_CNTL_LOCAL_WRITE	0x1UL
3722	#define SQ_BIND_HDR_ACCESS_CNTL_REMOTE_READ	0x2UL
3723	#define SQ_BIND_HDR_ACCESS_CNTL_REMOTE_WRITE    0x4UL
3724	#define SQ_BIND_HDR_ACCESS_CNTL_REMOTE_ATOMIC   0x8UL
3725	#define SQ_BIND_HDR_ACCESS_CNTL_WINDOW_BIND     0x10UL
3726	u8	reserved8_1;
3727	u8	mw_type_zero_based;
3728	#define SQ_BIND_HDR_ZERO_BASED     0x1UL
3729	#define SQ_BIND_HDR_MW_TYPE        0x2UL
3730	#define SQ_BIND_HDR_MW_TYPE_TYPE1    (0x0UL << 1)
3731	#define SQ_BIND_HDR_MW_TYPE_TYPE2    (0x1UL << 1)
3732	#define SQ_BIND_HDR_MW_TYPE_LAST    SQ_BIND_HDR_MW_TYPE_TYPE2
3733	u8	reserved8_2;
3734	__le16	reserved16;
3735	__le32	parent_l_key;
3736	__le32	l_key;
3737	__le64	va;
3738	u8	length[5];
3739	u8	reserved24[3];
3740};
3741
3742/* rq_wqe (size:1024b/128B) */
3743struct rq_wqe {
3744	u8	wqe_type;
3745	#define RQ_WQE_WQE_TYPE_RCV 0x80UL
3746	#define RQ_WQE_WQE_TYPE_LAST RQ_WQE_WQE_TYPE_RCV
3747	u8	flags;
3748	u8	wqe_size;
3749	u8	reserved8;
3750	__le32	reserved32;
3751	__le32	wr_id[2];
3752	#define RQ_WQE_WR_ID_MASK 0xfffffUL
3753	#define RQ_WQE_WR_ID_SFT 0
3754	u8	reserved128[16];
3755	__le32	data[24];
3756};
3757
3758/* rq_wqe_hdr (size:256b/32B) */
3759struct rq_wqe_hdr {
3760	u8	wqe_type;
3761	#define RQ_WQE_HDR_WQE_TYPE_RCV 0x80UL
3762	#define RQ_WQE_HDR_WQE_TYPE_LAST RQ_WQE_HDR_WQE_TYPE_RCV
3763	u8	flags;
3764	u8	wqe_size;
3765	u8	reserved8;
3766	__le32	reserved32;
3767	__le32	wr_id[2];
3768	#define RQ_WQE_HDR_WR_ID_MASK 0xfffffUL
3769	#define RQ_WQE_HDR_WR_ID_SFT 0
3770	u8	reserved128[16];
3771};
3772
3773/* cq_base (size:256b/32B) */
3774struct cq_base {
3775	__le64	reserved64_1;
3776	__le64	reserved64_2;
3777	__le64	reserved64_3;
3778	u8	cqe_type_toggle;
3779	#define CQ_BASE_TOGGLE                 0x1UL
3780	#define CQ_BASE_CQE_TYPE_MASK          0x1eUL
3781	#define CQ_BASE_CQE_TYPE_SFT           1
3782	#define CQ_BASE_CQE_TYPE_REQ             (0x0UL << 1)
3783	#define CQ_BASE_CQE_TYPE_RES_RC          (0x1UL << 1)
3784	#define CQ_BASE_CQE_TYPE_RES_UD          (0x2UL << 1)
3785	#define CQ_BASE_CQE_TYPE_RES_RAWETH_QP1  (0x3UL << 1)
3786	#define CQ_BASE_CQE_TYPE_RES_UD_CFA      (0x4UL << 1)
3787	#define CQ_BASE_CQE_TYPE_REQ_V3             (0x8UL << 1)
3788	#define CQ_BASE_CQE_TYPE_RES_RC_V3          (0x9UL << 1)
3789	#define CQ_BASE_CQE_TYPE_RES_UD_V3          (0xaUL << 1)
3790	#define CQ_BASE_CQE_TYPE_RES_RAWETH_QP1_V3  (0xbUL << 1)
3791	#define CQ_BASE_CQE_TYPE_RES_UD_CFA_V3      (0xcUL << 1)
3792	#define CQ_BASE_CQE_TYPE_NO_OP           (0xdUL << 1)
3793	#define CQ_BASE_CQE_TYPE_TERMINAL        (0xeUL << 1)
3794	#define CQ_BASE_CQE_TYPE_CUT_OFF         (0xfUL << 1)
3795	#define CQ_BASE_CQE_TYPE_LAST           CQ_BASE_CQE_TYPE_CUT_OFF
3796	u8	status;
3797	#define CQ_BASE_STATUS_OK                         0x0UL
3798	#define CQ_BASE_STATUS_BAD_RESPONSE_ERR           0x1UL
3799	#define CQ_BASE_STATUS_LOCAL_LENGTH_ERR           0x2UL
3800	#define CQ_BASE_STATUS_HW_LOCAL_LENGTH_ERR        0x3UL
3801	#define CQ_BASE_STATUS_LOCAL_QP_OPERATION_ERR     0x4UL
3802	#define CQ_BASE_STATUS_LOCAL_PROTECTION_ERR       0x5UL
3803	#define CQ_BASE_STATUS_LOCAL_ACCESS_ERROR         0x6UL
3804	#define CQ_BASE_STATUS_MEMORY_MGT_OPERATION_ERR   0x7UL
3805	#define CQ_BASE_STATUS_REMOTE_INVALID_REQUEST_ERR 0x8UL
3806	#define CQ_BASE_STATUS_REMOTE_ACCESS_ERR          0x9UL
3807	#define CQ_BASE_STATUS_REMOTE_OPERATION_ERR       0xaUL
3808	#define CQ_BASE_STATUS_RNR_NAK_RETRY_CNT_ERR      0xbUL
3809	#define CQ_BASE_STATUS_TRANSPORT_RETRY_CNT_ERR    0xcUL
3810	#define CQ_BASE_STATUS_WORK_REQUEST_FLUSHED_ERR   0xdUL
3811	#define CQ_BASE_STATUS_HW_FLUSH_ERR               0xeUL
3812	#define CQ_BASE_STATUS_OVERFLOW_ERR               0xfUL
3813	#define CQ_BASE_STATUS_LAST                      CQ_BASE_STATUS_OVERFLOW_ERR
3814	__le16	reserved16;
3815	__le32	opaque;
3816};
3817
3818/* cq_req (size:256b/32B) */
3819struct cq_req {
3820	__le64	qp_handle;
3821	__le16	sq_cons_idx;
3822	__le16	reserved16_1;
3823	__le32	reserved32_2;
3824	__le64	reserved64;
3825	u8	cqe_type_toggle;
3826	#define CQ_REQ_TOGGLE       0x1UL
3827	#define CQ_REQ_CQE_TYPE_MASK 0x1eUL
3828	#define CQ_REQ_CQE_TYPE_SFT 1
3829	#define CQ_REQ_CQE_TYPE_REQ   (0x0UL << 1)
3830	#define CQ_REQ_CQE_TYPE_LAST CQ_REQ_CQE_TYPE_REQ
3831	#define CQ_REQ_PUSH         0x20UL
3832	u8	status;
3833	#define CQ_REQ_STATUS_OK                         0x0UL
3834	#define CQ_REQ_STATUS_BAD_RESPONSE_ERR           0x1UL
3835	#define CQ_REQ_STATUS_LOCAL_LENGTH_ERR           0x2UL
3836	#define CQ_REQ_STATUS_LOCAL_QP_OPERATION_ERR     0x3UL
3837	#define CQ_REQ_STATUS_LOCAL_PROTECTION_ERR       0x4UL
3838	#define CQ_REQ_STATUS_MEMORY_MGT_OPERATION_ERR   0x5UL
3839	#define CQ_REQ_STATUS_REMOTE_INVALID_REQUEST_ERR 0x6UL
3840	#define CQ_REQ_STATUS_REMOTE_ACCESS_ERR          0x7UL
3841	#define CQ_REQ_STATUS_REMOTE_OPERATION_ERR       0x8UL
3842	#define CQ_REQ_STATUS_RNR_NAK_RETRY_CNT_ERR      0x9UL
3843	#define CQ_REQ_STATUS_TRANSPORT_RETRY_CNT_ERR    0xaUL
3844	#define CQ_REQ_STATUS_WORK_REQUEST_FLUSHED_ERR   0xbUL
3845	#define CQ_REQ_STATUS_LAST                      CQ_REQ_STATUS_WORK_REQUEST_FLUSHED_ERR
3846	__le16	reserved16_2;
3847	__le32	reserved32_1;
3848};
3849
3850/* cq_res_rc (size:256b/32B) */
3851struct cq_res_rc {
3852	__le32	length;
3853	__le32	imm_data_or_inv_r_key;
3854	__le64	qp_handle;
3855	__le64	mr_handle;
3856	u8	cqe_type_toggle;
3857	#define CQ_RES_RC_TOGGLE         0x1UL
3858	#define CQ_RES_RC_CQE_TYPE_MASK  0x1eUL
3859	#define CQ_RES_RC_CQE_TYPE_SFT   1
3860	#define CQ_RES_RC_CQE_TYPE_RES_RC  (0x1UL << 1)
3861	#define CQ_RES_RC_CQE_TYPE_LAST   CQ_RES_RC_CQE_TYPE_RES_RC
3862	u8	status;
3863	#define CQ_RES_RC_STATUS_OK                         0x0UL
3864	#define CQ_RES_RC_STATUS_LOCAL_ACCESS_ERROR         0x1UL
3865	#define CQ_RES_RC_STATUS_LOCAL_LENGTH_ERR           0x2UL
3866	#define CQ_RES_RC_STATUS_LOCAL_PROTECTION_ERR       0x3UL
3867	#define CQ_RES_RC_STATUS_LOCAL_QP_OPERATION_ERR     0x4UL
3868	#define CQ_RES_RC_STATUS_MEMORY_MGT_OPERATION_ERR   0x5UL
3869	#define CQ_RES_RC_STATUS_REMOTE_INVALID_REQUEST_ERR 0x6UL
3870	#define CQ_RES_RC_STATUS_WORK_REQUEST_FLUSHED_ERR   0x7UL
3871	#define CQ_RES_RC_STATUS_HW_FLUSH_ERR               0x8UL
3872	#define CQ_RES_RC_STATUS_LAST                      CQ_RES_RC_STATUS_HW_FLUSH_ERR
3873	__le16	flags;
3874	#define CQ_RES_RC_FLAGS_SRQ            0x1UL
3875	#define CQ_RES_RC_FLAGS_SRQ_RQ           0x0UL
3876	#define CQ_RES_RC_FLAGS_SRQ_SRQ          0x1UL
3877	#define CQ_RES_RC_FLAGS_SRQ_LAST        CQ_RES_RC_FLAGS_SRQ_SRQ
3878	#define CQ_RES_RC_FLAGS_IMM            0x2UL
3879	#define CQ_RES_RC_FLAGS_INV            0x4UL
3880	#define CQ_RES_RC_FLAGS_RDMA           0x8UL
3881	#define CQ_RES_RC_FLAGS_RDMA_SEND        (0x0UL << 3)
3882	#define CQ_RES_RC_FLAGS_RDMA_RDMA_WRITE  (0x1UL << 3)
3883	#define CQ_RES_RC_FLAGS_RDMA_LAST       CQ_RES_RC_FLAGS_RDMA_RDMA_WRITE
3884	__le32	srq_or_rq_wr_id;
3885	#define CQ_RES_RC_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL
3886	#define CQ_RES_RC_SRQ_OR_RQ_WR_ID_SFT 0
3887};
3888
3889/* cq_res_ud (size:256b/32B) */
3890struct cq_res_ud {
3891	__le16	length;
3892	#define CQ_RES_UD_LENGTH_MASK 0x3fffUL
3893	#define CQ_RES_UD_LENGTH_SFT 0
3894	__le16	cfa_metadata;
3895	#define CQ_RES_UD_CFA_METADATA_VID_MASK 0xfffUL
3896	#define CQ_RES_UD_CFA_METADATA_VID_SFT 0
3897	#define CQ_RES_UD_CFA_METADATA_DE      0x1000UL
3898	#define CQ_RES_UD_CFA_METADATA_PRI_MASK 0xe000UL
3899	#define CQ_RES_UD_CFA_METADATA_PRI_SFT 13
3900	__le32	imm_data;
3901	__le64	qp_handle;
3902	__le16	src_mac[3];
3903	__le16	src_qp_low;
3904	u8	cqe_type_toggle;
3905	#define CQ_RES_UD_TOGGLE         0x1UL
3906	#define CQ_RES_UD_CQE_TYPE_MASK  0x1eUL
3907	#define CQ_RES_UD_CQE_TYPE_SFT   1
3908	#define CQ_RES_UD_CQE_TYPE_RES_UD  (0x2UL << 1)
3909	#define CQ_RES_UD_CQE_TYPE_LAST   CQ_RES_UD_CQE_TYPE_RES_UD
3910	u8	status;
3911	#define CQ_RES_UD_STATUS_OK                       0x0UL
3912	#define CQ_RES_UD_STATUS_LOCAL_ACCESS_ERROR       0x1UL
3913	#define CQ_RES_UD_STATUS_HW_LOCAL_LENGTH_ERR      0x2UL
3914	#define CQ_RES_UD_STATUS_LOCAL_PROTECTION_ERR     0x3UL
3915	#define CQ_RES_UD_STATUS_LOCAL_QP_OPERATION_ERR   0x4UL
3916	#define CQ_RES_UD_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL
3917	#define CQ_RES_UD_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL
3918	#define CQ_RES_UD_STATUS_HW_FLUSH_ERR             0x8UL
3919	#define CQ_RES_UD_STATUS_LAST                    CQ_RES_UD_STATUS_HW_FLUSH_ERR
3920	__le16	flags;
3921	#define CQ_RES_UD_FLAGS_SRQ                   0x1UL
3922	#define CQ_RES_UD_FLAGS_SRQ_RQ                  0x0UL
3923	#define CQ_RES_UD_FLAGS_SRQ_SRQ                 0x1UL
3924	#define CQ_RES_UD_FLAGS_SRQ_LAST               CQ_RES_UD_FLAGS_SRQ_SRQ
3925	#define CQ_RES_UD_FLAGS_IMM                   0x2UL
3926	#define CQ_RES_UD_FLAGS_UNUSED_MASK           0xcUL
3927	#define CQ_RES_UD_FLAGS_UNUSED_SFT            2
3928	#define CQ_RES_UD_FLAGS_ROCE_IP_VER_MASK      0x30UL
3929	#define CQ_RES_UD_FLAGS_ROCE_IP_VER_SFT       4
3930	#define CQ_RES_UD_FLAGS_ROCE_IP_VER_V1          (0x0UL << 4)
3931	#define CQ_RES_UD_FLAGS_ROCE_IP_VER_V2IPV4      (0x2UL << 4)
3932	#define CQ_RES_UD_FLAGS_ROCE_IP_VER_V2IPV6      (0x3UL << 4)
3933	#define CQ_RES_UD_FLAGS_ROCE_IP_VER_LAST       CQ_RES_UD_FLAGS_ROCE_IP_VER_V2IPV6
3934	#define CQ_RES_UD_FLAGS_META_FORMAT_MASK      0x3c0UL
3935	#define CQ_RES_UD_FLAGS_META_FORMAT_SFT       6
3936	#define CQ_RES_UD_FLAGS_META_FORMAT_NONE        (0x0UL << 6)
3937	#define CQ_RES_UD_FLAGS_META_FORMAT_VLAN        (0x1UL << 6)
3938	#define CQ_RES_UD_FLAGS_META_FORMAT_TUNNEL_ID   (0x2UL << 6)
3939	#define CQ_RES_UD_FLAGS_META_FORMAT_CHDR_DATA   (0x3UL << 6)
3940	#define CQ_RES_UD_FLAGS_META_FORMAT_HDR_OFFSET  (0x4UL << 6)
3941	#define CQ_RES_UD_FLAGS_META_FORMAT_LAST       CQ_RES_UD_FLAGS_META_FORMAT_HDR_OFFSET
3942	#define CQ_RES_UD_FLAGS_EXT_META_FORMAT_MASK  0xc00UL
3943	#define CQ_RES_UD_FLAGS_EXT_META_FORMAT_SFT   10
3944	__le32	src_qp_high_srq_or_rq_wr_id;
3945	#define CQ_RES_UD_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL
3946	#define CQ_RES_UD_SRQ_OR_RQ_WR_ID_SFT 0
3947	#define CQ_RES_UD_SRC_QP_HIGH_MASK    0xff000000UL
3948	#define CQ_RES_UD_SRC_QP_HIGH_SFT     24
3949};
3950
3951/* cq_res_ud_v2 (size:256b/32B) */
3952struct cq_res_ud_v2 {
3953	__le16	length;
3954	#define CQ_RES_UD_V2_LENGTH_MASK 0x3fffUL
3955	#define CQ_RES_UD_V2_LENGTH_SFT 0
3956	__le16	cfa_metadata0;
3957	#define CQ_RES_UD_V2_CFA_METADATA0_VID_MASK 0xfffUL
3958	#define CQ_RES_UD_V2_CFA_METADATA0_VID_SFT 0
3959	#define CQ_RES_UD_V2_CFA_METADATA0_DE      0x1000UL
3960	#define CQ_RES_UD_V2_CFA_METADATA0_PRI_MASK 0xe000UL
3961	#define CQ_RES_UD_V2_CFA_METADATA0_PRI_SFT 13
3962	__le32	imm_data;
3963	__le64	qp_handle;
3964	__le16	src_mac[3];
3965	__le16	src_qp_low;
3966	u8	cqe_type_toggle;
3967	#define CQ_RES_UD_V2_TOGGLE         0x1UL
3968	#define CQ_RES_UD_V2_CQE_TYPE_MASK  0x1eUL
3969	#define CQ_RES_UD_V2_CQE_TYPE_SFT   1
3970	#define CQ_RES_UD_V2_CQE_TYPE_RES_UD  (0x2UL << 1)
3971	#define CQ_RES_UD_V2_CQE_TYPE_LAST   CQ_RES_UD_V2_CQE_TYPE_RES_UD
3972	u8	status;
3973	#define CQ_RES_UD_V2_STATUS_OK                       0x0UL
3974	#define CQ_RES_UD_V2_STATUS_LOCAL_ACCESS_ERROR       0x1UL
3975	#define CQ_RES_UD_V2_STATUS_HW_LOCAL_LENGTH_ERR      0x2UL
3976	#define CQ_RES_UD_V2_STATUS_LOCAL_PROTECTION_ERR     0x3UL
3977	#define CQ_RES_UD_V2_STATUS_LOCAL_QP_OPERATION_ERR   0x4UL
3978	#define CQ_RES_UD_V2_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL
3979	#define CQ_RES_UD_V2_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL
3980	#define CQ_RES_UD_V2_STATUS_HW_FLUSH_ERR             0x8UL
3981	#define CQ_RES_UD_V2_STATUS_LAST                    CQ_RES_UD_V2_STATUS_HW_FLUSH_ERR
3982	__le16	flags;
3983	#define CQ_RES_UD_V2_FLAGS_SRQ                    0x1UL
3984	#define CQ_RES_UD_V2_FLAGS_SRQ_RQ                   0x0UL
3985	#define CQ_RES_UD_V2_FLAGS_SRQ_SRQ                  0x1UL
3986	#define CQ_RES_UD_V2_FLAGS_SRQ_LAST                CQ_RES_UD_V2_FLAGS_SRQ_SRQ
3987	#define CQ_RES_UD_V2_FLAGS_IMM                    0x2UL
3988	#define CQ_RES_UD_V2_FLAGS_UNUSED_MASK            0xcUL
3989	#define CQ_RES_UD_V2_FLAGS_UNUSED_SFT             2
3990	#define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_MASK       0x30UL
3991	#define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_SFT        4
3992	#define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_V1           (0x0UL << 4)
3993	#define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_V2IPV4       (0x2UL << 4)
3994	#define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_V2IPV6       (0x3UL << 4)
3995	#define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_LAST        CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_V2IPV6
3996	#define CQ_RES_UD_V2_FLAGS_META_FORMAT_MASK       0x3c0UL
3997	#define CQ_RES_UD_V2_FLAGS_META_FORMAT_SFT        6
3998	#define CQ_RES_UD_V2_FLAGS_META_FORMAT_NONE         (0x0UL << 6)
3999	#define CQ_RES_UD_V2_FLAGS_META_FORMAT_ACT_REC_PTR  (0x1UL << 6)
4000	#define CQ_RES_UD_V2_FLAGS_META_FORMAT_TUNNEL_ID    (0x2UL << 6)
4001	#define CQ_RES_UD_V2_FLAGS_META_FORMAT_CHDR_DATA    (0x3UL << 6)
4002	#define CQ_RES_UD_V2_FLAGS_META_FORMAT_HDR_OFFSET   (0x4UL << 6)
4003	#define CQ_RES_UD_V2_FLAGS_META_FORMAT_LAST        CQ_RES_UD_V2_FLAGS_META_FORMAT_HDR_OFFSET
4004	__le32	src_qp_high_srq_or_rq_wr_id;
4005	#define CQ_RES_UD_V2_SRQ_OR_RQ_WR_ID_MASK           0xfffffUL
4006	#define CQ_RES_UD_V2_SRQ_OR_RQ_WR_ID_SFT            0
4007	#define CQ_RES_UD_V2_CFA_METADATA1_MASK             0xf00000UL
4008	#define CQ_RES_UD_V2_CFA_METADATA1_SFT              20
4009	#define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_MASK     0x700000UL
4010	#define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_SFT      20
4011	#define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID88A8   (0x0UL << 20)
4012	#define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID8100   (0x1UL << 20)
4013	#define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID9100   (0x2UL << 20)
4014	#define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID9200   (0x3UL << 20)
4015	#define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID9300   (0x4UL << 20)
4016	#define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPIDCFG    (0x5UL << 20)
4017	#define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_LAST CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPIDCFG
4018	#define CQ_RES_UD_V2_CFA_METADATA1_VALID             0x800000UL
4019	#define CQ_RES_UD_V2_SRC_QP_HIGH_MASK               0xff000000UL
4020	#define CQ_RES_UD_V2_SRC_QP_HIGH_SFT                24
4021};
4022
4023/* cq_res_ud_cfa (size:256b/32B) */
4024struct cq_res_ud_cfa {
4025	__le16	length;
4026	#define CQ_RES_UD_CFA_LENGTH_MASK 0x3fffUL
4027	#define CQ_RES_UD_CFA_LENGTH_SFT 0
4028	__le16	cfa_code;
4029	__le32	imm_data;
4030	__le32	qid;
4031	#define CQ_RES_UD_CFA_QID_MASK 0xfffffUL
4032	#define CQ_RES_UD_CFA_QID_SFT 0
4033	__le32	cfa_metadata;
4034	#define CQ_RES_UD_CFA_CFA_METADATA_VID_MASK 0xfffUL
4035	#define CQ_RES_UD_CFA_CFA_METADATA_VID_SFT  0
4036	#define CQ_RES_UD_CFA_CFA_METADATA_DE       0x1000UL
4037	#define CQ_RES_UD_CFA_CFA_METADATA_PRI_MASK 0xe000UL
4038	#define CQ_RES_UD_CFA_CFA_METADATA_PRI_SFT  13
4039	#define CQ_RES_UD_CFA_CFA_METADATA_TPID_MASK 0xffff0000UL
4040	#define CQ_RES_UD_CFA_CFA_METADATA_TPID_SFT 16
4041	__le16	src_mac[3];
4042	__le16	src_qp_low;
4043	u8	cqe_type_toggle;
4044	#define CQ_RES_UD_CFA_TOGGLE             0x1UL
4045	#define CQ_RES_UD_CFA_CQE_TYPE_MASK      0x1eUL
4046	#define CQ_RES_UD_CFA_CQE_TYPE_SFT       1
4047	#define CQ_RES_UD_CFA_CQE_TYPE_RES_UD_CFA  (0x4UL << 1)
4048	#define CQ_RES_UD_CFA_CQE_TYPE_LAST       CQ_RES_UD_CFA_CQE_TYPE_RES_UD_CFA
4049	u8	status;
4050	#define CQ_RES_UD_CFA_STATUS_OK                       0x0UL
4051	#define CQ_RES_UD_CFA_STATUS_LOCAL_ACCESS_ERROR       0x1UL
4052	#define CQ_RES_UD_CFA_STATUS_HW_LOCAL_LENGTH_ERR      0x2UL
4053	#define CQ_RES_UD_CFA_STATUS_LOCAL_PROTECTION_ERR     0x3UL
4054	#define CQ_RES_UD_CFA_STATUS_LOCAL_QP_OPERATION_ERR   0x4UL
4055	#define CQ_RES_UD_CFA_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL
4056	#define CQ_RES_UD_CFA_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL
4057	#define CQ_RES_UD_CFA_STATUS_HW_FLUSH_ERR             0x8UL
4058	#define CQ_RES_UD_CFA_STATUS_LAST                    CQ_RES_UD_CFA_STATUS_HW_FLUSH_ERR
4059	__le16	flags;
4060	#define CQ_RES_UD_CFA_FLAGS_SRQ                   0x1UL
4061	#define CQ_RES_UD_CFA_FLAGS_SRQ_RQ                  0x0UL
4062	#define CQ_RES_UD_CFA_FLAGS_SRQ_SRQ                 0x1UL
4063	#define CQ_RES_UD_CFA_FLAGS_SRQ_LAST               CQ_RES_UD_CFA_FLAGS_SRQ_SRQ
4064	#define CQ_RES_UD_CFA_FLAGS_IMM                   0x2UL
4065	#define CQ_RES_UD_CFA_FLAGS_UNUSED_MASK           0xcUL
4066	#define CQ_RES_UD_CFA_FLAGS_UNUSED_SFT            2
4067	#define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_MASK      0x30UL
4068	#define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_SFT       4
4069	#define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_V1          (0x0UL << 4)
4070	#define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_V2IPV4      (0x2UL << 4)
4071	#define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_V2IPV6      (0x3UL << 4)
4072	#define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_LAST       CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_V2IPV6
4073	#define CQ_RES_UD_CFA_FLAGS_META_FORMAT_MASK      0x3c0UL
4074	#define CQ_RES_UD_CFA_FLAGS_META_FORMAT_SFT       6
4075	#define CQ_RES_UD_CFA_FLAGS_META_FORMAT_NONE        (0x0UL << 6)
4076	#define CQ_RES_UD_CFA_FLAGS_META_FORMAT_VLAN        (0x1UL << 6)
4077	#define CQ_RES_UD_CFA_FLAGS_META_FORMAT_TUNNEL_ID   (0x2UL << 6)
4078	#define CQ_RES_UD_CFA_FLAGS_META_FORMAT_CHDR_DATA   (0x3UL << 6)
4079	#define CQ_RES_UD_CFA_FLAGS_META_FORMAT_HDR_OFFSET  (0x4UL << 6)
4080	#define CQ_RES_UD_CFA_FLAGS_META_FORMAT_LAST	CQ_RES_UD_CFA_FLAGS_META_FORMAT_HDR_OFFSET
4081	#define CQ_RES_UD_CFA_FLAGS_EXT_META_FORMAT_MASK  0xc00UL
4082	#define CQ_RES_UD_CFA_FLAGS_EXT_META_FORMAT_SFT   10
4083	__le32	src_qp_high_srq_or_rq_wr_id;
4084	#define CQ_RES_UD_CFA_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL
4085	#define CQ_RES_UD_CFA_SRQ_OR_RQ_WR_ID_SFT 0
4086	#define CQ_RES_UD_CFA_SRC_QP_HIGH_MASK    0xff000000UL
4087	#define CQ_RES_UD_CFA_SRC_QP_HIGH_SFT     24
4088};
4089
4090/* cq_res_ud_cfa_v2 (size:256b/32B) */
4091struct cq_res_ud_cfa_v2 {
4092	__le16	length;
4093	#define CQ_RES_UD_CFA_V2_LENGTH_MASK 0x3fffUL
4094	#define CQ_RES_UD_CFA_V2_LENGTH_SFT 0
4095	__le16	cfa_metadata0;
4096	#define CQ_RES_UD_CFA_V2_CFA_METADATA0_VID_MASK 0xfffUL
4097	#define CQ_RES_UD_CFA_V2_CFA_METADATA0_VID_SFT 0
4098	#define CQ_RES_UD_CFA_V2_CFA_METADATA0_DE      0x1000UL
4099	#define CQ_RES_UD_CFA_V2_CFA_METADATA0_PRI_MASK 0xe000UL
4100	#define CQ_RES_UD_CFA_V2_CFA_METADATA0_PRI_SFT 13
4101	__le32	imm_data;
4102	__le32	qid;
4103	#define CQ_RES_UD_CFA_V2_QID_MASK 0xfffffUL
4104	#define CQ_RES_UD_CFA_V2_QID_SFT 0
4105	__le32	cfa_metadata2;
4106	__le16	src_mac[3];
4107	__le16	src_qp_low;
4108	u8	cqe_type_toggle;
4109	#define CQ_RES_UD_CFA_V2_TOGGLE             0x1UL
4110	#define CQ_RES_UD_CFA_V2_CQE_TYPE_MASK      0x1eUL
4111	#define CQ_RES_UD_CFA_V2_CQE_TYPE_SFT       1
4112	#define CQ_RES_UD_CFA_V2_CQE_TYPE_RES_UD_CFA  (0x4UL << 1)
4113	#define CQ_RES_UD_CFA_V2_CQE_TYPE_LAST       CQ_RES_UD_CFA_V2_CQE_TYPE_RES_UD_CFA
4114	u8	status;
4115	#define CQ_RES_UD_CFA_V2_STATUS_OK                       0x0UL
4116	#define CQ_RES_UD_CFA_V2_STATUS_LOCAL_ACCESS_ERROR       0x1UL
4117	#define CQ_RES_UD_CFA_V2_STATUS_HW_LOCAL_LENGTH_ERR      0x2UL
4118	#define CQ_RES_UD_CFA_V2_STATUS_LOCAL_PROTECTION_ERR     0x3UL
4119	#define CQ_RES_UD_CFA_V2_STATUS_LOCAL_QP_OPERATION_ERR   0x4UL
4120	#define CQ_RES_UD_CFA_V2_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL
4121	#define CQ_RES_UD_CFA_V2_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL
4122	#define CQ_RES_UD_CFA_V2_STATUS_HW_FLUSH_ERR             0x8UL
4123	#define CQ_RES_UD_CFA_V2_STATUS_LAST   CQ_RES_UD_CFA_V2_STATUS_HW_FLUSH_ERR
4124	__le16	flags;
4125	#define CQ_RES_UD_CFA_V2_FLAGS_SRQ                    0x1UL
4126	#define CQ_RES_UD_CFA_V2_FLAGS_SRQ_RQ                   0x0UL
4127	#define CQ_RES_UD_CFA_V2_FLAGS_SRQ_SRQ                  0x1UL
4128	#define CQ_RES_UD_CFA_V2_FLAGS_SRQ_LAST                CQ_RES_UD_CFA_V2_FLAGS_SRQ_SRQ
4129	#define CQ_RES_UD_CFA_V2_FLAGS_IMM                    0x2UL
4130	#define CQ_RES_UD_CFA_V2_FLAGS_UNUSED_MASK            0xcUL
4131	#define CQ_RES_UD_CFA_V2_FLAGS_UNUSED_SFT             2
4132	#define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_MASK       0x30UL
4133	#define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_SFT        4
4134	#define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_V1           (0x0UL << 4)
4135	#define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_V2IPV4       (0x2UL << 4)
4136	#define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_V2IPV6       (0x3UL << 4)
4137	#define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_LAST  CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_V2IPV6
4138	#define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_MASK       0x3c0UL
4139	#define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_SFT        6
4140	#define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_NONE         (0x0UL << 6)
4141	#define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_ACT_REC_PTR  (0x1UL << 6)
4142	#define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_TUNNEL_ID    (0x2UL << 6)
4143	#define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_CHDR_DATA    (0x3UL << 6)
4144	#define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_HDR_OFFSET   (0x4UL << 6)
4145	#define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_LAST \
4146		CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_HDR_OFFSET
4147	__le32	src_qp_high_srq_or_rq_wr_id;
4148	#define CQ_RES_UD_CFA_V2_SRQ_OR_RQ_WR_ID_MASK           0xfffffUL
4149	#define CQ_RES_UD_CFA_V2_SRQ_OR_RQ_WR_ID_SFT            0
4150	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_MASK             0xf00000UL
4151	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_SFT              20
4152	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_MASK     0x700000UL
4153	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_SFT      20
4154	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID88A8   (0x0UL << 20)
4155	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID8100   (0x1UL << 20)
4156	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID9100   (0x2UL << 20)
4157	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID9200   (0x3UL << 20)
4158	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID9300   (0x4UL << 20)
4159	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPIDCFG    (0x5UL << 20)
4160	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_LAST \
4161		CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPIDCFG
4162	#define CQ_RES_UD_CFA_V2_CFA_METADATA1_VALID             0x800000UL
4163	#define CQ_RES_UD_CFA_V2_SRC_QP_HIGH_MASK               0xff000000UL
4164	#define CQ_RES_UD_CFA_V2_SRC_QP_HIGH_SFT                24
4165};
4166
4167/* cq_res_raweth_qp1 (size:256b/32B) */
4168struct cq_res_raweth_qp1 {
4169	__le16	length;
4170	#define CQ_RES_RAWETH_QP1_LENGTH_MASK 0x3fffUL
4171	#define CQ_RES_RAWETH_QP1_LENGTH_SFT 0
4172	__le16	raweth_qp1_flags;
4173	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_MASK                  0x3ffUL
4174	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_SFT                   0
4175	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ERROR                  0x1UL
4176	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_MASK             0x3c0UL
4177	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_SFT              6
4178	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_NOT_KNOWN          (0x0UL << 6)
4179	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_IP                 (0x1UL << 6)
4180	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_TCP                (0x2UL << 6)
4181	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_UDP                (0x3UL << 6)
4182	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_FCOE               (0x4UL << 6)
4183	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_ROCE               (0x5UL << 6)
4184	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_ICMP               (0x7UL << 6)
4185	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_PTP_WO_TIMESTAMP   (0x8UL << 6)
4186	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_PTP_W_TIMESTAMP    (0x9UL << 6)
4187	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_LAST \
4188		CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_PTP_W_TIMESTAMP
4189	__le16	raweth_qp1_errors;
4190	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_IP_CS_ERROR   0x10UL
4191	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_L4_CS_ERROR   0x20UL
4192	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_IP_CS_ERROR 0x40UL
4193	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_L4_CS_ERROR 0x80UL
4194	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_CRC_ERROR     0x100UL
4195	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_MASK  0xe00UL
4196	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_SFT   9
4197	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_NO_ERROR                (0x0UL << 9)
4198	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION        (0x1UL << 9)
4199	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN        (0x2UL << 9)
4200	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_TUNNEL_TOTAL_ERROR      (0x3UL << 9)
4201	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR        (0x4UL << 9)
4202	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR       (0x5UL << 9)
4203	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL            (0x6UL << 9)
4204	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_LAST \
4205		CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL
4206	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_MASK                    0xf000UL
4207	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_SFT                     12
4208	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_NO_ERROR	(0x0UL << 12)
4209	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_VERSION	(0x1UL << 12)
4210	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN    (0x2UL << 12)
4211	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_TTL        (0x3UL << 12)
4212	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_IP_TOTAL_ERROR    (0x4UL << 12)
4213	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR   (0x5UL << 12)
4214	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN    (0x6UL << 12)
4215	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL (0x7UL << 12)
4216	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN (0x8UL << 12)
4217	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_LAST \
4218		CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN
4219	__le16	raweth_qp1_cfa_code;
4220	__le64	qp_handle;
4221	__le32	raweth_qp1_flags2;
4222	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_IP_CS_CALC                 0x1UL
4223	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_L4_CS_CALC                 0x2UL
4224	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_T_IP_CS_CALC               0x4UL
4225	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_T_L4_CS_CALC               0x8UL
4226	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_MASK           0xf0UL
4227	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_SFT            4
4228	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_NONE             (0x0UL << 4)
4229	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_VLAN             (0x1UL << 4)
4230	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_TUNNEL_ID        (0x2UL << 4)
4231	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_CHDR_DATA        (0x3UL << 4)
4232	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_HDR_OFFSET       (0x4UL << 4)
4233	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_LAST \
4234		CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_HDR_OFFSET
4235	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_IP_TYPE                    0x100UL
4236	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_CALC     0x200UL
4237	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_EXT_META_FORMAT_MASK       0xc00UL
4238	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_EXT_META_FORMAT_SFT        10
4239	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_MASK     0xffff0000UL
4240	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_SFT      16
4241	__le32	raweth_qp1_metadata;
4242	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_PRI_DE_VID_MASK    0xffffUL
4243	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_PRI_DE_VID_SFT     0
4244	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_VID_MASK           0xfffUL
4245	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_VID_SFT            0
4246	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_DE                 0x1000UL
4247	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_PRI_MASK           0xe000UL
4248	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_PRI_SFT            13
4249	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_TPID_MASK          0xffff0000UL
4250	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_TPID_SFT           16
4251	u8	cqe_type_toggle;
4252	#define CQ_RES_RAWETH_QP1_TOGGLE                 0x1UL
4253	#define CQ_RES_RAWETH_QP1_CQE_TYPE_MASK          0x1eUL
4254	#define CQ_RES_RAWETH_QP1_CQE_TYPE_SFT           1
4255	#define CQ_RES_RAWETH_QP1_CQE_TYPE_RES_RAWETH_QP1  (0x3UL << 1)
4256	#define CQ_RES_RAWETH_QP1_CQE_TYPE_LAST           CQ_RES_RAWETH_QP1_CQE_TYPE_RES_RAWETH_QP1
4257	u8	status;
4258	#define CQ_RES_RAWETH_QP1_STATUS_OK                       0x0UL
4259	#define CQ_RES_RAWETH_QP1_STATUS_LOCAL_ACCESS_ERROR       0x1UL
4260	#define CQ_RES_RAWETH_QP1_STATUS_HW_LOCAL_LENGTH_ERR      0x2UL
4261	#define CQ_RES_RAWETH_QP1_STATUS_LOCAL_PROTECTION_ERR     0x3UL
4262	#define CQ_RES_RAWETH_QP1_STATUS_LOCAL_QP_OPERATION_ERR   0x4UL
4263	#define CQ_RES_RAWETH_QP1_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL
4264	#define CQ_RES_RAWETH_QP1_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL
4265	#define CQ_RES_RAWETH_QP1_STATUS_HW_FLUSH_ERR             0x8UL
4266	#define CQ_RES_RAWETH_QP1_STATUS_LAST  CQ_RES_RAWETH_QP1_STATUS_HW_FLUSH_ERR
4267	__le16	flags;
4268	#define CQ_RES_RAWETH_QP1_FLAGS_SRQ     0x1UL
4269	#define CQ_RES_RAWETH_QP1_FLAGS_SRQ_RQ    0x0UL
4270	#define CQ_RES_RAWETH_QP1_FLAGS_SRQ_SRQ   0x1UL
4271	#define CQ_RES_RAWETH_QP1_FLAGS_SRQ_LAST CQ_RES_RAWETH_QP1_FLAGS_SRQ_SRQ
4272	__le32	raweth_qp1_payload_offset_srq_or_rq_wr_id;
4273	#define CQ_RES_RAWETH_QP1_SRQ_OR_RQ_WR_ID_MASK          0xfffffUL
4274	#define CQ_RES_RAWETH_QP1_SRQ_OR_RQ_WR_ID_SFT           0
4275	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_PAYLOAD_OFFSET_MASK 0xff000000UL
4276	#define CQ_RES_RAWETH_QP1_RAWETH_QP1_PAYLOAD_OFFSET_SFT 24
4277};
4278
4279/* cq_res_raweth_qp1_v2 (size:256b/32B) */
4280struct cq_res_raweth_qp1_v2 {
4281	__le16	length;
4282	#define CQ_RES_RAWETH_QP1_V2_LENGTH_MASK 0x3fffUL
4283	#define CQ_RES_RAWETH_QP1_V2_LENGTH_SFT 0
4284	__le16	raweth_qp1_flags;
4285	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_MASK                  0x3ffUL
4286	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_SFT                   0
4287	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ERROR                  0x1UL
4288	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_MASK             0x3c0UL
4289	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_SFT              6
4290	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_NOT_KNOWN          (0x0UL << 6)
4291	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_IP                 (0x1UL << 6)
4292	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_TCP                (0x2UL << 6)
4293	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_UDP                (0x3UL << 6)
4294	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_FCOE               (0x4UL << 6)
4295	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_ROCE               (0x5UL << 6)
4296	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_ICMP               (0x7UL << 6)
4297	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_PTP_WO_TIMESTAMP   (0x8UL << 6)
4298	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_PTP_W_TIMESTAMP    (0x9UL << 6)
4299	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_LAST \
4300		CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_PTP_W_TIMESTAMP
4301	__le16	raweth_qp1_errors;
4302	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_IP_CS_ERROR                       0x10UL
4303	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_L4_CS_ERROR                       0x20UL
4304	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_IP_CS_ERROR                     0x40UL
4305	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_L4_CS_ERROR                     0x80UL
4306	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_CRC_ERROR                         0x100UL
4307	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_MASK                  0xe00UL
4308	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_SFT                   9
4309	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_NO_ERROR (0x0UL << 9)
4310	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION (0x1UL << 9)
4311	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN (0x2UL << 9)
4312	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_TUNNEL_TOTAL_ERROR (0x3UL << 9)
4313	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR (0x4UL << 9)
4314	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR (0x5UL << 9)
4315	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL (0x6UL << 9)
4316	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_LAST \
4317		CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL
4318	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_MASK    0xf000UL
4319	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_SFT 12
4320	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_NO_ERROR   (0x0UL << 12)
4321	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_VERSION  (0x1UL << 12)
4322	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN  (0x2UL << 12)
4323	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_TTL      (0x3UL << 12)
4324	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_IP_TOTAL_ERROR  (0x4UL << 12)
4325	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR (0x5UL << 12)
4326	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN  (0x6UL << 12)
4327	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL \
4328		(0x7UL << 12)
4329	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN \
4330		(0x8UL << 12)
4331	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_LAST \
4332		CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN
4333	__le16	cfa_metadata0;
4334	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_VID_MASK 0xfffUL
4335	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_VID_SFT 0
4336	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_DE      0x1000UL
4337	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_PRI_MASK 0xe000UL
4338	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_PRI_SFT 13
4339	__le64	qp_handle;
4340	__le32	raweth_qp1_flags2;
4341	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_CS_ALL_OK_MODE             0x8UL
4342	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_MASK           0xf0UL
4343	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_SFT            4
4344	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_NONE             (0x0UL << 4)
4345	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_ACT_REC_PTR      (0x1UL << 4)
4346	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_TUNNEL_ID        (0x2UL << 4)
4347	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_CHDR_DATA        (0x3UL << 4)
4348	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_HDR_OFFSET       (0x4UL << 4)
4349	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_LAST \
4350		CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_HDR_OFFSET
4351	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_IP_TYPE                    0x100UL
4352	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_CALC     0x200UL
4353	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_CS_OK_MASK                 0xfc00UL
4354	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_CS_OK_SFT                  10
4355	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_MASK     0xffff0000UL
4356	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_SFT      16
4357	__le32	cfa_metadata2;
4358	u8	cqe_type_toggle;
4359	#define CQ_RES_RAWETH_QP1_V2_TOGGLE                 0x1UL
4360	#define CQ_RES_RAWETH_QP1_V2_CQE_TYPE_MASK          0x1eUL
4361	#define CQ_RES_RAWETH_QP1_V2_CQE_TYPE_SFT           1
4362	#define CQ_RES_RAWETH_QP1_V2_CQE_TYPE_RES_RAWETH_QP1  (0x3UL << 1)
4363	#define CQ_RES_RAWETH_QP1_V2_CQE_TYPE_LAST CQ_RES_RAWETH_QP1_V2_CQE_TYPE_RES_RAWETH_QP1
4364	u8	status;
4365	#define CQ_RES_RAWETH_QP1_V2_STATUS_OK                       0x0UL
4366	#define CQ_RES_RAWETH_QP1_V2_STATUS_LOCAL_ACCESS_ERROR       0x1UL
4367	#define CQ_RES_RAWETH_QP1_V2_STATUS_HW_LOCAL_LENGTH_ERR      0x2UL
4368	#define CQ_RES_RAWETH_QP1_V2_STATUS_LOCAL_PROTECTION_ERR     0x3UL
4369	#define CQ_RES_RAWETH_QP1_V2_STATUS_LOCAL_QP_OPERATION_ERR   0x4UL
4370	#define CQ_RES_RAWETH_QP1_V2_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL
4371	#define CQ_RES_RAWETH_QP1_V2_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL
4372	#define CQ_RES_RAWETH_QP1_V2_STATUS_HW_FLUSH_ERR             0x8UL
4373	#define CQ_RES_RAWETH_QP1_V2_STATUS_LAST CQ_RES_RAWETH_QP1_V2_STATUS_HW_FLUSH_ERR
4374	__le16	flags;
4375	#define CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ     0x1UL
4376	#define CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ_RQ    0x0UL
4377	#define CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ_SRQ   0x1UL
4378	#define CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ_LAST CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ_SRQ
4379	__le32	raweth_qp1_payload_offset_srq_or_rq_wr_id;
4380	#define CQ_RES_RAWETH_QP1_V2_SRQ_OR_RQ_WR_ID_MASK           0xfffffUL
4381	#define CQ_RES_RAWETH_QP1_V2_SRQ_OR_RQ_WR_ID_SFT            0
4382	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_MASK             0xf00000UL
4383	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_SFT              20
4384	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_MASK     0x700000UL
4385	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_SFT      20
4386	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID88A8   (0x0UL << 20)
4387	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID8100   (0x1UL << 20)
4388	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID9100   (0x2UL << 20)
4389	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID9200   (0x3UL << 20)
4390	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID9300   (0x4UL << 20)
4391	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPIDCFG    (0x5UL << 20)
4392	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_LAST \
4393		CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPIDCFG
4394	#define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_VALID             0x800000UL
4395	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_PAYLOAD_OFFSET_MASK 0xff000000UL
4396	#define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_PAYLOAD_OFFSET_SFT  24
4397};
4398
4399/* cq_terminal (size:256b/32B) */
4400struct cq_terminal {
4401	__le64	qp_handle;
4402	__le16	sq_cons_idx;
4403	__le16	rq_cons_idx;
4404	__le32	reserved32_1;
4405	__le64	reserved64_3;
4406	u8	cqe_type_toggle;
4407	#define CQ_TERMINAL_TOGGLE           0x1UL
4408	#define CQ_TERMINAL_CQE_TYPE_MASK    0x1eUL
4409	#define CQ_TERMINAL_CQE_TYPE_SFT     1
4410	#define CQ_TERMINAL_CQE_TYPE_TERMINAL  (0xeUL << 1)
4411	#define CQ_TERMINAL_CQE_TYPE_LAST     CQ_TERMINAL_CQE_TYPE_TERMINAL
4412	u8	status;
4413	#define CQ_TERMINAL_STATUS_OK 0x0UL
4414	#define CQ_TERMINAL_STATUS_LAST CQ_TERMINAL_STATUS_OK
4415	__le16	reserved16;
4416	__le32	reserved32_2;
4417};
4418
4419/* cq_cutoff (size:256b/32B) */
4420struct cq_cutoff {
4421	__le64	reserved64_1;
4422	__le64	reserved64_2;
4423	__le64	reserved64_3;
4424	u8	cqe_type_toggle;
4425	#define CQ_CUTOFF_TOGGLE          0x1UL
4426	#define CQ_CUTOFF_CQE_TYPE_MASK   0x1eUL
4427	#define CQ_CUTOFF_CQE_TYPE_SFT    1
4428	#define CQ_CUTOFF_CQE_TYPE_CUT_OFF  (0xfUL << 1)
4429	#define CQ_CUTOFF_CQE_TYPE_LAST    CQ_CUTOFF_CQE_TYPE_CUT_OFF
4430	#define CQ_CUTOFF_RESIZE_TOGGLE_MASK 0x60UL
4431	#define CQ_CUTOFF_RESIZE_TOGGLE_SFT 5
4432	u8	status;
4433	#define CQ_CUTOFF_STATUS_OK 0x0UL
4434	#define CQ_CUTOFF_STATUS_LAST CQ_CUTOFF_STATUS_OK
4435	__le16	reserved16;
4436	__le32	reserved32;
4437};
4438
4439/* nq_base (size:128b/16B) */
4440struct nq_base {
4441	__le16	info10_type;
4442	#define NQ_BASE_TYPE_MASK           0x3fUL
4443	#define NQ_BASE_TYPE_SFT            0
4444	#define NQ_BASE_TYPE_CQ_NOTIFICATION  0x30UL
4445	#define NQ_BASE_TYPE_SRQ_EVENT        0x32UL
4446	#define NQ_BASE_TYPE_DBQ_EVENT        0x34UL
4447	#define NQ_BASE_TYPE_QP_EVENT         0x38UL
4448	#define NQ_BASE_TYPE_FUNC_EVENT       0x3aUL
4449	#define NQ_BASE_TYPE_LAST            NQ_BASE_TYPE_FUNC_EVENT
4450	#define NQ_BASE_INFO10_MASK         0xffc0UL
4451	#define NQ_BASE_INFO10_SFT          6
4452	__le16	info16;
4453	__le32	info32;
4454	__le32	info63_v[2];
4455	#define NQ_BASE_V          0x1UL
4456	#define NQ_BASE_INFO63_MASK 0xfffffffeUL
4457	#define NQ_BASE_INFO63_SFT 1
4458};
4459
4460/* nq_cn (size:128b/16B) */
4461struct nq_cn {
4462	__le16	type;
4463	#define NQ_CN_TYPE_MASK           0x3fUL
4464	#define NQ_CN_TYPE_SFT            0
4465	#define NQ_CN_TYPE_CQ_NOTIFICATION  0x30UL
4466	#define NQ_CN_TYPE_LAST            NQ_CN_TYPE_CQ_NOTIFICATION
4467	#define NQ_CN_TOGGLE_MASK         0xc0UL
4468	#define NQ_CN_TOGGLE_SFT          6
4469	__le16	reserved16;
4470	__le32	cq_handle_low;
4471	__le32	v;
4472	#define NQ_CN_V     0x1UL
4473	__le32	cq_handle_high;
4474};
4475
4476/* nq_srq_event (size:128b/16B) */
4477struct nq_srq_event {
4478	u8	type;
4479	#define NQ_SRQ_EVENT_TYPE_MASK     0x3fUL
4480	#define NQ_SRQ_EVENT_TYPE_SFT      0
4481	#define NQ_SRQ_EVENT_TYPE_SRQ_EVENT  0x32UL
4482	#define NQ_SRQ_EVENT_TYPE_LAST      NQ_SRQ_EVENT_TYPE_SRQ_EVENT
4483	#define NQ_SRQ_EVENT_TOGGLE_MASK   0xc0UL
4484	#define NQ_SRQ_EVENT_TOGGLE_SFT    6
4485	u8	event;
4486	#define NQ_SRQ_EVENT_EVENT_SRQ_THRESHOLD_EVENT 0x1UL
4487	#define NQ_SRQ_EVENT_EVENT_LAST               NQ_SRQ_EVENT_EVENT_SRQ_THRESHOLD_EVENT
4488	__le16	reserved16;
4489	__le32	srq_handle_low;
4490	__le32	v;
4491	#define NQ_SRQ_EVENT_V     0x1UL
4492	__le32	srq_handle_high;
4493};
4494
4495/* nq_dbq_event (size:128b/16B) */
4496struct nq_dbq_event {
4497	u8	type;
4498	#define NQ_DBQ_EVENT_TYPE_MASK     0x3fUL
4499	#define NQ_DBQ_EVENT_TYPE_SFT      0
4500	#define NQ_DBQ_EVENT_TYPE_DBQ_EVENT  0x34UL
4501	#define NQ_DBQ_EVENT_TYPE_LAST      NQ_DBQ_EVENT_TYPE_DBQ_EVENT
4502	u8	event;
4503	#define NQ_DBQ_EVENT_EVENT_DBQ_THRESHOLD_EVENT 0x1UL
4504	#define NQ_DBQ_EVENT_EVENT_LAST               NQ_DBQ_EVENT_EVENT_DBQ_THRESHOLD_EVENT
4505	__le16	db_pfid;
4506	#define NQ_DBQ_EVENT_DB_PFID_MASK 0xfUL
4507	#define NQ_DBQ_EVENT_DB_PFID_SFT 0
4508	__le32	db_dpi;
4509	#define NQ_DBQ_EVENT_DB_DPI_MASK 0xfffffUL
4510	#define NQ_DBQ_EVENT_DB_DPI_SFT 0
4511	__le32	v;
4512	#define NQ_DBQ_EVENT_V     0x1UL
4513	__le32	db_type_db_xid;
4514	#define NQ_DBQ_EVENT_DB_XID_MASK 0xfffffUL
4515	#define NQ_DBQ_EVENT_DB_XID_SFT  0
4516	#define NQ_DBQ_EVENT_DB_TYPE_MASK 0xf0000000UL
4517	#define NQ_DBQ_EVENT_DB_TYPE_SFT 28
4518};
4519
4520/* xrrq_irrq (size:256b/32B) */
4521struct xrrq_irrq {
4522	__le16	credits_type;
4523	#define XRRQ_IRRQ_TYPE           0x1UL
4524	#define XRRQ_IRRQ_TYPE_READ_REQ    0x0UL
4525	#define XRRQ_IRRQ_TYPE_ATOMIC_REQ  0x1UL
4526	#define XRRQ_IRRQ_TYPE_LAST       XRRQ_IRRQ_TYPE_ATOMIC_REQ
4527	#define XRRQ_IRRQ_CREDITS_MASK   0xf800UL
4528	#define XRRQ_IRRQ_CREDITS_SFT    11
4529	__le16	reserved16;
4530	__le32	reserved32;
4531	__le32	psn;
4532	#define XRRQ_IRRQ_PSN_MASK 0xffffffUL
4533	#define XRRQ_IRRQ_PSN_SFT 0
4534	__le32	msn;
4535	#define XRRQ_IRRQ_MSN_MASK 0xffffffUL
4536	#define XRRQ_IRRQ_MSN_SFT 0
4537	__le64	va_or_atomic_result;
4538	__le32	rdma_r_key;
4539	__le32	length;
4540};
4541
4542/* xrrq_orrq (size:256b/32B) */
4543struct xrrq_orrq {
4544	__le16	num_sges_type;
4545	#define XRRQ_ORRQ_TYPE           0x1UL
4546	#define XRRQ_ORRQ_TYPE_READ_REQ    0x0UL
4547	#define XRRQ_ORRQ_TYPE_ATOMIC_REQ  0x1UL
4548	#define XRRQ_ORRQ_TYPE_LAST       XRRQ_ORRQ_TYPE_ATOMIC_REQ
4549	#define XRRQ_ORRQ_NUM_SGES_MASK  0xf800UL
4550	#define XRRQ_ORRQ_NUM_SGES_SFT   11
4551	__le16	reserved16;
4552	__le32	length;
4553	__le32	psn;
4554	#define XRRQ_ORRQ_PSN_MASK 0xffffffUL
4555	#define XRRQ_ORRQ_PSN_SFT 0
4556	__le32	end_psn;
4557	#define XRRQ_ORRQ_END_PSN_MASK 0xffffffUL
4558	#define XRRQ_ORRQ_END_PSN_SFT 0
4559	__le64	first_sge_phy_or_sing_sge_va;
4560	__le32	single_sge_l_key;
4561	__le32	single_sge_size;
4562};
4563
4564/* ptu_pte (size:64b/8B) */
4565struct ptu_pte {
4566	__le32	page_next_to_last_last_valid[2];
4567	#define PTU_PTE_VALID            0x1UL
4568	#define PTU_PTE_LAST             0x2UL
4569	#define PTU_PTE_NEXT_TO_LAST     0x4UL
4570	#define PTU_PTE_UNUSED_MASK      0xff8UL
4571	#define PTU_PTE_UNUSED_SFT       3
4572	#define PTU_PTE_PAGE_MASK        0xfffff000UL
4573	#define PTU_PTE_PAGE_SFT         12
4574};
4575
4576/* ptu_pde (size:64b/8B) */
4577struct ptu_pde {
4578	__le32	page_valid[2];
4579	#define PTU_PDE_VALID      0x1UL
4580	#define PTU_PDE_UNUSED_MASK 0xffeUL
4581	#define PTU_PDE_UNUSED_SFT 1
4582	#define PTU_PDE_PAGE_MASK  0xfffff000UL
4583	#define PTU_PDE_PAGE_SFT   12
4584};
4585
4586#endif /* ___BNXT_RE_HSI_H__ */
4587