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