1*eef4f27bSRobert Mustacchi /*
2*eef4f27bSRobert Mustacchi  * Copyright 2014-2017 Cavium, Inc.
3*eef4f27bSRobert Mustacchi  * The contents of this file are subject to the terms of the Common Development
4*eef4f27bSRobert Mustacchi  * and Distribution License, v.1,  (the "License").
5*eef4f27bSRobert Mustacchi  *
6*eef4f27bSRobert Mustacchi  * You may not use this file except in compliance with the License.
7*eef4f27bSRobert Mustacchi  *
8*eef4f27bSRobert Mustacchi  * You can obtain a copy of the License at available
9*eef4f27bSRobert Mustacchi  * at http://opensource.org/licenses/CDDL-1.0
10*eef4f27bSRobert Mustacchi  *
11*eef4f27bSRobert Mustacchi  * See the License for the specific language governing permissions and
12*eef4f27bSRobert Mustacchi  * limitations under the License.
13*eef4f27bSRobert Mustacchi  */
14*eef4f27bSRobert Mustacchi 
15*eef4f27bSRobert Mustacchi 
16*eef4f27bSRobert Mustacchi #ifndef _l5_defs_h_
17*eef4f27bSRobert Mustacchi #define _l5_defs_h_
18*eef4f27bSRobert Mustacchi 
19*eef4f27bSRobert Mustacchi #include "5706_reg.h"
20*eef4f27bSRobert Mustacchi #include "l2_defs.h"
21*eef4f27bSRobert Mustacchi #include "l2_ftq.h"
22*eef4f27bSRobert Mustacchi 
23*eef4f27bSRobert Mustacchi /* data structure defs: */
24*eef4f27bSRobert Mustacchi 
25*eef4f27bSRobert Mustacchi typedef struct ddp_tagged_msg_header
26*eef4f27bSRobert Mustacchi {
27*eef4f27bSRobert Mustacchi     u16_t   mpa_length;
28*eef4f27bSRobert Mustacchi 	u16_t   control;
29*eef4f27bSRobert Mustacchi     u32_t   stag;
30*eef4f27bSRobert Mustacchi 	u64_t   to;
31*eef4f27bSRobert Mustacchi } ddp_tagged_msg_header_t;
32*eef4f27bSRobert Mustacchi 
33*eef4f27bSRobert Mustacchi typedef struct ddp_untagged_msg_header
34*eef4f27bSRobert Mustacchi {
35*eef4f27bSRobert Mustacchi     u16_t   mpa_length;
36*eef4f27bSRobert Mustacchi 	u16_t   control;
37*eef4f27bSRobert Mustacchi 	union
38*eef4f27bSRobert Mustacchi 	{
39*eef4f27bSRobert Mustacchi         u32_t   reserved;
40*eef4f27bSRobert Mustacchi         u32_t   invalidated_stag;
41*eef4f27bSRobert Mustacchi     } rdmap_rsvd;
42*eef4f27bSRobert Mustacchi 	u32_t   queue_number;
43*eef4f27bSRobert Mustacchi 	u32_t   msn;
44*eef4f27bSRobert Mustacchi 	u32_t   mo;
45*eef4f27bSRobert Mustacchi } ddp_untagged_msg_header_t;
46*eef4f27bSRobert Mustacchi 
47*eef4f27bSRobert Mustacchi typedef struct rdmap_read_request_header
48*eef4f27bSRobert Mustacchi {
49*eef4f27bSRobert Mustacchi     ddp_untagged_msg_header_t  ddp_header;
50*eef4f27bSRobert Mustacchi 	u32_t  sink_stag;
51*eef4f27bSRobert Mustacchi 	u64_t  sink_to;
52*eef4f27bSRobert Mustacchi 	u32_t  length;
53*eef4f27bSRobert Mustacchi 	u32_t  source_stag;
54*eef4f27bSRobert Mustacchi 	u64_t  source_to;
55*eef4f27bSRobert Mustacchi } rdmap_read_request_header_t;
56*eef4f27bSRobert Mustacchi 
57*eef4f27bSRobert Mustacchi 
58*eef4f27bSRobert Mustacchi /****************************************************************************
59*eef4f27bSRobert Mustacchi  * L5 Window Reference Count Table Entry
60*eef4f27bSRobert Mustacchi  ****************************************************************************/
61*eef4f27bSRobert Mustacchi 
62*eef4f27bSRobert Mustacchi typedef struct l5_window_ref_cnt_table_entry
63*eef4f27bSRobert Mustacchi {
64*eef4f27bSRobert Mustacchi     u8_t wrcte_pidx;    /* Incremented by CP whenever a SQ work request or
65*eef4f27bSRobert Mustacchi                            incoming RDMA Read Request is processed that
66*eef4f27bSRobert Mustacchi                            references the associated window for source data. */
67*eef4f27bSRobert Mustacchi 
68*eef4f27bSRobert Mustacchi     u8_t wrcte_cidx;    /* Incremented by COM whenever an entry is removed from
69*eef4f27bSRobert Mustacchi                            the command queue where the associated window is
70*eef4f27bSRobert Mustacchi                            the data source. */
71*eef4f27bSRobert Mustacchi 
72*eef4f27bSRobert Mustacchi } l5_window_ref_cnt_table_entry_t;
73*eef4f27bSRobert Mustacchi 
74*eef4f27bSRobert Mustacchi 
75*eef4f27bSRobert Mustacchi /* constants and macros: */
76*eef4f27bSRobert Mustacchi 
77*eef4f27bSRobert Mustacchi #define   RDMA_WRITE_CMD      0
78*eef4f27bSRobert Mustacchi #define   RDMA_READ_REQ_CMD   1
79*eef4f27bSRobert Mustacchi #define   RDMA_READ_RSP_CMD   2
80*eef4f27bSRobert Mustacchi #define   RDMA_SEND_CMD       3
81*eef4f27bSRobert Mustacchi #define   RDMA_SEND_W_EVENT   4
82*eef4f27bSRobert Mustacchi 
83*eef4f27bSRobert Mustacchi #define   RDMA_MPA_HDR_LENGTH            2
84*eef4f27bSRobert Mustacchi #define   RDMA_MPA_CRC_LENGTH            4
85*eef4f27bSRobert Mustacchi #define   RDMA_MPA_MARKER_SIZE           4
86*eef4f27bSRobert Mustacchi 
87*eef4f27bSRobert Mustacchi #define   RDMA_DDP_TAGGED_HDR_LENGTH     14
88*eef4f27bSRobert Mustacchi #define   RDMA_DDP_UNTAGGED_HDR_LENGTH   18
89*eef4f27bSRobert Mustacchi 
90*eef4f27bSRobert Mustacchi #define   RDMA_READ_REQ_MSG_LENGTH       28
91*eef4f27bSRobert Mustacchi 
92*eef4f27bSRobert Mustacchi #define   RDMA_WRITE_HDR_LENGTH          (RDMA_MPA_HDR_LENGTH + RDMA_DDP_TAGGED_HDR_LENGTH)
93*eef4f27bSRobert Mustacchi #define   RDMA_SEND_MSG_HDR_LENGTH       (RDMA_MPA_HDR_LENGTH + RDMA_DDP_UNTAGGED_HDR_LENGTH)
94*eef4f27bSRobert Mustacchi #define   RDMA_READ_REQ_HDR_LENGTH       (RDMA_MPA_HDR_LENGTH + RDMA_DDP_UNTAGGED_HDR_LENGTH + RDMA_READ_REQ_MSG_LENGTH)
95*eef4f27bSRobert Mustacchi #define   RDMA_READ_RESP_HDR_LENGTH      (RDMA_MPA_HDR_LENGTH + RDMA_DDP_TAGGED_HDR_LENGTH)
96*eef4f27bSRobert Mustacchi 
97*eef4f27bSRobert Mustacchi #define   RDMA_STANDARD_L5_OVERHEAD (RDMA_STANDARD_HDR_LENGTH + RDMA_MPA_HDR_LENGTH + RDMA_MPA_CRC_LENGTH)
98*eef4f27bSRobert Mustacchi #define   RDMA_READ_REQ_L5_OVERHEAD (RDMA_READ_REQ_HDR_LENGTH + RDMA_MPA_HDR_LENGTH + RDMA_MPA_CRC_LENGTH)
99*eef4f27bSRobert Mustacchi 
100*eef4f27bSRobert Mustacchi #define   RDMA_SEND_QUEUE_NUMBER    0x00000000
101*eef4f27bSRobert Mustacchi #define   RDMA_READ_QUEUE_NUMBER    0x00000001
102*eef4f27bSRobert Mustacchi #define   RDMA_TERM_QUEUE_NUMBER    0x00000002
103*eef4f27bSRobert Mustacchi 
104*eef4f27bSRobert Mustacchi #define   RDMA_MPA_MARKER_INTERVAL       512                                                /* MPA marker interval */
105*eef4f27bSRobert Mustacchi #define   RDMA_DATA_MARKER_INTERVAL      (RDMA_MPA_MARKER_INTERVAL - RDMA_MPA_MARKER_SIZE)  /* Data between markers */
106*eef4f27bSRobert Mustacchi #define   RDMA_MPA_MARKER_INTERVAL_SHIFT   9
107*eef4f27bSRobert Mustacchi 
108*eef4f27bSRobert Mustacchi #define   DDP_CTRL_RDMA_WRITE           0x8000
109*eef4f27bSRobert Mustacchi #define   DDP_CTRL_RDMA_READ_REQ        0x0001
110*eef4f27bSRobert Mustacchi #define   DDP_CTRL_RDMA_READ_RSP        0x8002
111*eef4f27bSRobert Mustacchi #define   DDP_CTRL_SEND_MSG             0x0003
112*eef4f27bSRobert Mustacchi #define   DDP_CTRL_SEND_INV_MSG         0x0004
113*eef4f27bSRobert Mustacchi #define   DDP_CTRL_SEND_EVT_MSG         0x0005
114*eef4f27bSRobert Mustacchi #define   DDP_CTRL_SEND_INV_EVT_MSG     0x0006
115*eef4f27bSRobert Mustacchi 
116*eef4f27bSRobert Mustacchi #define   DDP_CTRL_L_BIT                0x4000
117*eef4f27bSRobert Mustacchi #define   DDP_CTRL_T_BIT                0x8000
118*eef4f27bSRobert Mustacchi 
119*eef4f27bSRobert Mustacchi #define   DDP_CTRL_DDP_VERSION_MASK     0x0300
120*eef4f27bSRobert Mustacchi #define   DDP_CTRL_DDP_VERSION          0x0000
121*eef4f27bSRobert Mustacchi 
122*eef4f27bSRobert Mustacchi #define   DDP_TAGGED_HDR_LENGTH         14
123*eef4f27bSRobert Mustacchi #define   DDP_UNTAGGED_HDR_LENGTH       18
124*eef4f27bSRobert Mustacchi 
125*eef4f27bSRobert Mustacchi #define   DDP_QN_SEND_MESSAGE_QUEUE       0x00000000
126*eef4f27bSRobert Mustacchi #define   DDP_QN_RDMA_READ_REQUEST_QUEUE  0x00000001
127*eef4f27bSRobert Mustacchi #define   DDP_QN_RDMA_TERMINATE_QUEUE     0x00000002
128*eef4f27bSRobert Mustacchi 
129*eef4f27bSRobert Mustacchi #define   DDP_MAX_UNTAGGED_QUEUES         0x00000003
130*eef4f27bSRobert Mustacchi 
131*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_RDMAP_VERSION_MASK   0x00C0
132*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_RDMAP_VERSION        0x0000
133*eef4f27bSRobert Mustacchi 
134*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_RDMAP_OPCODE_MASK    0x0F
135*eef4f27bSRobert Mustacchi 
136*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_RDMA_WRITE           0x00
137*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_RDMA_READ_REQ        0x01
138*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_RDMA_READ_RSP        0x02
139*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_SEND_MSG             0x03
140*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_SEND_W_INV_MSG       0x04
141*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_SEND_W_EVT_MSG       0x05
142*eef4f27bSRobert Mustacchi #define   RDMAP_CTRL_SEND_W_INV_EVT_MSG   0x06
143*eef4f27bSRobert Mustacchi 
144*eef4f27bSRobert Mustacchi #define   L5_MEMORY_REGION_STAG_BIT       0x00800000
145*eef4f27bSRobert Mustacchi #define   L5_STAG_INDEX_MASK              0x00FFFFFF
146*eef4f27bSRobert Mustacchi #define   L5_STAG_KEY_MASK                0xFF000000
147*eef4f27bSRobert Mustacchi #define   L5_MIN_HOST_PAGE_SIZE           0x100    /* 256 bytes */
148*eef4f27bSRobert Mustacchi #define   L5_WINDOW_CACHE_KEY_BASE        0x2000
149*eef4f27bSRobert Mustacchi 
150*eef4f27bSRobert Mustacchi 
151*eef4f27bSRobert Mustacchi /* define context memory-related constants for things
152*eef4f27bSRobert Mustacchi    like STag validation: */
153*eef4f27bSRobert Mustacchi 
154*eef4f27bSRobert Mustacchi #define   L5_RX_VCID_SIZE                 128
155*eef4f27bSRobert Mustacchi 
156*eef4f27bSRobert Mustacchi 
157*eef4f27bSRobert Mustacchi /* L5 RxP protocol errors: */
158*eef4f27bSRobert Mustacchi 
159*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_MPA_LEN_NON_MULT_FOUR     0x00000001
160*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_INVALID_MPA_LEN           0x00000002
161*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_INVALID_MARKER            0x00000003
162*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_INVALID_TAGGED_OPCODE     0x00000004
163*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_INVALID_UNTAGGED_OPCODE   0x00000005
164*eef4f27bSRobert Mustacchi 
165*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_STAG_INVALID              0x00000006
166*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_STAG_BASE_BOUNDS          0x00000007
167*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_STAG_ACCESS_RIGHTS        0x00000008
168*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_STAG_PROTECTION           0x00000009
169*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_STAG_TO_WRAP              0x0000000A
170*eef4f27bSRobert Mustacchi 
171*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_INVALID_DDP_VERSION       0x0000000B
172*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_INVALID_RDMAP_VERSION     0x0000000C
173*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_INVALID_DDP_QUEUE_NUMBER  0x0000000D
174*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_IRD_EXCEEDED              0x0000000E
175*eef4f27bSRobert Mustacchi 
176*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_MSN_GAP                   0x0000000F
177*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_MSN_RANGE                 0x00000010
178*eef4f27bSRobert Mustacchi 
179*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_NO_RCV_BUFF_AVAIL         0x00000011
180*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_RCV_BASE_BOUNDS           0x00000012
181*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_RCV_MO_WRAP               0x00000013
182*eef4f27bSRobert Mustacchi 
183*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_INVALID_MPA_CRC           0x00000014
184*eef4f27bSRobert Mustacchi 
185*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_NO_RCV_BUFF_POSTED        0x00000080
186*eef4f27bSRobert Mustacchi 
187*eef4f27bSRobert Mustacchi #define   RX_PROTO_ERR_TERM_MSG_RECEIVED         0x000000FF
188*eef4f27bSRobert Mustacchi 
189*eef4f27bSRobert Mustacchi /* L5 */
190*eef4f27bSRobert Mustacchi #define L5_TCP_MAX_DACK		2
191*eef4f27bSRobert Mustacchi 
192*eef4f27bSRobert Mustacchi /* Iscsi */
193*eef4f27bSRobert Mustacchi 
194*eef4f27bSRobert Mustacchi //#define THIN_CONN_ESTAB
195*eef4f27bSRobert Mustacchi 
196*eef4f27bSRobert Mustacchi #define RDMA_CONFIG_CRC_OFFSET_SHIFT	18
197*eef4f27bSRobert Mustacchi 
198*eef4f27bSRobert Mustacchi #define VCID_SIZE          128
199*eef4f27bSRobert Mustacchi #define VCID_SHIFT         7
200*eef4f27bSRobert Mustacchi 
201*eef4f27bSRobert Mustacchi #define CID_ENC(_idx)      ((_idx)<<VCID_SHIFT)
202*eef4f27bSRobert Mustacchi 
203*eef4f27bSRobert Mustacchi #define CID_ISCSI_CONF_PARAMS CID_ENC(46) // context ID of iSCSI configuration params
204*eef4f27bSRobert Mustacchi 
205*eef4f27bSRobert Mustacchi #define	MAX_RQ_BUF_SIZE			256
206*eef4f27bSRobert Mustacchi #define ISCSI_CRC_SIZE			4
207*eef4f27bSRobert Mustacchi #define ISCSI_CRC_SIZE_LOG2		2
208*eef4f27bSRobert Mustacchi #define ISCSI_HDR_SIZE			48
209*eef4f27bSRobert Mustacchi #define ISCSI_CRC_RESULT		0x1c2d19ed
210*eef4f27bSRobert Mustacchi 
211*eef4f27bSRobert Mustacchi #define ISCSI_CRC_TABLE_SIZE 256
212*eef4f27bSRobert Mustacchi 
213*eef4f27bSRobert Mustacchi #define ISCSI_PROCESS_ERROR			(-1)
214*eef4f27bSRobert Mustacchi #define ISCSI_PROCESS_WARNING		(-2)
215*eef4f27bSRobert Mustacchi #define ISCSI_SILENT_DROP			(-3)
216*eef4f27bSRobert Mustacchi 
217*eef4f27bSRobert Mustacchi /* Completion types */
218*eef4f27bSRobert Mustacchi #define ISCSI_COMP_TYPE_MP			(0<<0)
219*eef4f27bSRobert Mustacchi #define ISCSI_COMP_TYPE_FP			(1<<0)
220*eef4f27bSRobert Mustacchi 
221*eef4f27bSRobert Mustacchi /* Command types for placement in RV2P */
222*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_TYPE_RQ			(0<<0)
223*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_TYPE_SGL		(1<<0)
224*eef4f27bSRobert Mustacchi 
225*eef4f27bSRobert Mustacchi /* RV2P iscsi placement opcodes */
226*eef4f27bSRobert Mustacchi #define GENERIC_OPCODE_RV2PPQ_VALUE_ISCSI_SGL_PLACE	(22<<0)
227*eef4f27bSRobert Mustacchi #define GENERIC_OPCODE_RV2PPQ_VALUE_ISCSI_RQ_PLACE 	(23<<0)
228*eef4f27bSRobert Mustacchi #define GENERIC_OPCODE_RV2PPQ_VALUE_ISCSI_RQ_FLUSH	(24<<0)
229*eef4f27bSRobert Mustacchi #define GENERIC_OPCODE_RV2PPQ_VALUE_ISCSI_SGL_FLUSH	(25<<0)
230*eef4f27bSRobert Mustacchi 
231*eef4f27bSRobert Mustacchi /* COM L5 (iSCSI/RDMA) opaque types */
232*eef4f27bSRobert Mustacchi #define L5_OPAQUE_TCP_ACK_TYPE			(0x80)
233*eef4f27bSRobert Mustacchi #define L5_OPAQUE_TCP_ERROR_TYPE		(0x81)
234*eef4f27bSRobert Mustacchi 
235*eef4f27bSRobert Mustacchi /* COM iSCSI opaque types */
236*eef4f27bSRobert Mustacchi #define ISCSI_OPAQUE_COMPLETION_TYPE	(0x82)
237*eef4f27bSRobert Mustacchi #define ISCSI_OPAQUE_FREE_MBUF_TYPE		(0x83)
238*eef4f27bSRobert Mustacchi #define ISCSI_OPAQUE_ERROR_TYPE			(0x84)
239*eef4f27bSRobert Mustacchi #define ISCSI_OPAQUE_FREE_CU_MBUF_TYPE  (0x85)
240*eef4f27bSRobert Mustacchi 
241*eef4f27bSRobert Mustacchi #define HDR_ISCSI_OPCODE			(0x3f<<0)
242*eef4f27bSRobert Mustacchi 
243*eef4f27bSRobert Mustacchi #define ISCSI_INVALID_VALUE			(0xffffffff)
244*eef4f27bSRobert Mustacchi 
245*eef4f27bSRobert Mustacchi #define TCP_L5CM_MAX_RETRIES 3
246*eef4f27bSRobert Mustacchi 
247*eef4f27bSRobert Mustacchi typedef struct iscsi_ctx_offsets
248*eef4f27bSRobert Mustacchi {
249*eef4f27bSRobert Mustacchi     u32_t task_offset;     // offset of the task array
250*eef4f27bSRobert Mustacchi     u32_t r2tq_offset;     // offset of R2TQ section
251*eef4f27bSRobert Mustacchi 
252*eef4f27bSRobert Mustacchi     u32_t max_num_of_tasks;     // maximal number of pending tasks
253*eef4f27bSRobert Mustacchi     u32_t max_num_of_ccells;    // maximal number of ccells
254*eef4f27bSRobert Mustacchi } iscsi_ctx_offsets_t;
255*eef4f27bSRobert Mustacchi 
256*eef4f27bSRobert Mustacchi 
257*eef4f27bSRobert Mustacchi /*
258*eef4f27bSRobert Mustacchi  *  rv2ppq_iscsi_sgl_place definition
259*eef4f27bSRobert Mustacchi  */
260*eef4f27bSRobert Mustacchi typedef struct rv2ppq_iscsi_sgl_place
261*eef4f27bSRobert Mustacchi {
262*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_place_cid;
263*eef4f27bSRobert Mustacchi 	u32_t 	iscsi_sgl_place_mbuf_cluster;
264*eef4f27bSRobert Mustacchi 	u16_t 	iscsi_sgl_place_operand_flags;
265*eef4f27bSRobert Mustacchi 		#define ISCSI_PLACE_OPERAND_FLAGS_LAST_PKT		(1<<7)
266*eef4f27bSRobert Mustacchi         #define ISCSI_PLACE_OPERAND_FLAGS_FLUSH			(1<<11)
267*eef4f27bSRobert Mustacchi 		#define ISCSI_PLACE_OPERAND_FLAGS_USE_SEED		(1<<12)
268*eef4f27bSRobert Mustacchi 		#define ISCSI_PLACE_OPERAND_FLAGS_DIGEST_EN		(1<<13)
269*eef4f27bSRobert Mustacchi 		#define ISCSI_PLACE_OPERAND_FLAGS_COMPLETE		(1<<14)
270*eef4f27bSRobert Mustacchi         /* overloading bit 14 */
271*eef4f27bSRobert Mustacchi         #define ISCSI_PLACE_OPERAND_FLAGS_CU_PKT        (1<<14)
272*eef4f27bSRobert Mustacchi 		#define ISCSI_PLACE_OPERAND_FLAGS_FREE_MBUF		(1<<15)
273*eef4f27bSRobert Mustacchi 
274*eef4f27bSRobert Mustacchi 	u8_t	iscsi_sgl_place_tcp_flags;
275*eef4f27bSRobert Mustacchi 	u8_t	iscsi_sgl_place_opcode;
276*eef4f27bSRobert Mustacchi     u16_t 	iscsi_sgl_place_offset; //cut in COM
277*eef4f27bSRobert Mustacchi 	u16_t 	iscsi_sgl_place_length; //cut in COM
278*eef4f27bSRobert Mustacchi 	u16_t 	iscsi_sgl_place_ctx_offset_to_pad_baddr;
279*eef4f27bSRobert Mustacchi 	u16_t 	iscsi_sgl_place_num_pad_bytes;
280*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_place_reserved1;
281*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_place_tcp_ack_sn;
282*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_place_reserved2[2]; //cut in COM
283*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_place_crc_seed;
284*eef4f27bSRobert Mustacchi 		#define ISCSI_PLACE_CRC_SEED_VAL		(0xFFFFFFFF)
285*eef4f27bSRobert Mustacchi 
286*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_place_task_cache_key;
287*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_place_task_cid;
288*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_place_rdma_action;
289*eef4f27bSRobert Mustacchi } rv2ppq_iscsi_sgl_place_t;
290*eef4f27bSRobert Mustacchi 
291*eef4f27bSRobert Mustacchi /*
292*eef4f27bSRobert Mustacchi  *  rv2ppq_iscsi_rq_place definition
293*eef4f27bSRobert Mustacchi  */
294*eef4f27bSRobert Mustacchi typedef struct rv2ppq_iscsi_rq_place
295*eef4f27bSRobert Mustacchi {
296*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_place_cid;
297*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_place_mbuf_cluster;
298*eef4f27bSRobert Mustacchi 	u16_t	iscsi_rq_place_operand_flags;
299*eef4f27bSRobert Mustacchi 		#define ISCSI_PLACE_OPERAND_FLAGS_PAGE_SIZE_SHIFT	(8)
300*eef4f27bSRobert Mustacchi 		#define ISCSI_PLACE_OPERAND_FLAGS_PAGE_SIZE_MASK	(0xf<<8)
301*eef4f27bSRobert Mustacchi 
302*eef4f27bSRobert Mustacchi 	u8_t	iscsi_rq_place_tcp_flags;
303*eef4f27bSRobert Mustacchi 	u8_t	iscsi_rq_place_opcode;
304*eef4f27bSRobert Mustacchi 	u16_t	iscsi_rq_place_offset; //cut in COM
305*eef4f27bSRobert Mustacchi 	u16_t	iscsi_rq_place_length; //cut in COM
306*eef4f27bSRobert Mustacchi 	u16_t	iscsi_rq_place_ctx_offset_to_pad_baddr;
307*eef4f27bSRobert Mustacchi 	u16_t 	iscsi_rq_place_num_pad_bytes;
308*eef4f27bSRobert Mustacchi     u32_t	iscsi_rq_place_first_page_offset;
309*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_place_tcp_ack_sn;
310*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_place_page_table_base_addr_h; //cut in COM
311*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_place_page_table_base_addr_l; //cut in COM
312*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_place_crc_seed;
313*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_place_rbdc_key;
314*eef4f27bSRobert Mustacchi     u32_t	iscsi_rq_place_rq_buffer_offset;
315*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_place_rdma_action;
316*eef4f27bSRobert Mustacchi } rv2ppq_iscsi_rq_place_t;
317*eef4f27bSRobert Mustacchi 
318*eef4f27bSRobert Mustacchi /*
319*eef4f27bSRobert Mustacchi  *  rv2ppq_iscsi_sgl_flush definition
320*eef4f27bSRobert Mustacchi  */
321*eef4f27bSRobert Mustacchi typedef struct rv2ppq_iscsi_sgl_flush
322*eef4f27bSRobert Mustacchi {
323*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_flush_task_cid;
324*eef4f27bSRobert Mustacchi 	u32_t 	iscsi_sgl_flush_unused_a;
325*eef4f27bSRobert Mustacchi 	u16_t	iscsi_sgl_flush_unsused_b;
326*eef4f27bSRobert Mustacchi 	u8_t	iscsi_sgl_flush_unsused_c;
327*eef4f27bSRobert Mustacchi 	u8_t	iscsi_sgl_flush_opcode;
328*eef4f27bSRobert Mustacchi 	u32_t	iscsi_sgl_flush_unsused_d[9];
329*eef4f27bSRobert Mustacchi } rv2ppq_iscsi_sgl_flush_t;
330*eef4f27bSRobert Mustacchi 
331*eef4f27bSRobert Mustacchi /*
332*eef4f27bSRobert Mustacchi  *  rv2ppq_iscsi_rq_flush definition
333*eef4f27bSRobert Mustacchi  */
334*eef4f27bSRobert Mustacchi typedef struct rv2ppq_iscsi_rq_flush
335*eef4f27bSRobert Mustacchi {
336*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_flush_cid;
337*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_flush_unsused_a;
338*eef4f27bSRobert Mustacchi 	u16_t	iscsi_rq_flush_unsused_b;
339*eef4f27bSRobert Mustacchi 	u8_t	iscsi_rq_flush_unsused_c;
340*eef4f27bSRobert Mustacchi 	u8_t	iscsi_rq_flush_opcode;
341*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_flush_unsused_d;
342*eef4f27bSRobert Mustacchi 	u16_t	iscsi_rq_flush_rbdc_key;
343*eef4f27bSRobert Mustacchi 	u16_t	iscsi_rq_flush_unsused_e;
344*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_flush_unsused_f[7];
345*eef4f27bSRobert Mustacchi 	u32_t	iscsi_rq_flush_rdma_spec;
346*eef4f27bSRobert Mustacchi } rv2ppq_iscsi_rq_flush_t;
347*eef4f27bSRobert Mustacchi 
348*eef4f27bSRobert Mustacchi /*
349*eef4f27bSRobert Mustacchi  *  comq_iscsi_sgl_place definition
350*eef4f27bSRobert Mustacchi  */
351*eef4f27bSRobert Mustacchi typedef struct comq_iscsi_sgl_place
352*eef4f27bSRobert Mustacchi {
353*eef4f27bSRobert Mustacchi 	u32_t	cid;
354*eef4f27bSRobert Mustacchi 	u32_t	mbuf_cluster;
355*eef4f27bSRobert Mustacchi 	u16_t	operand_flags;
356*eef4f27bSRobert Mustacchi 	u8_t	tcp_flags;
357*eef4f27bSRobert Mustacchi 	u8_t	opcode;
358*eef4f27bSRobert Mustacchi 	u16_t   ctx_offset_to_pad_baddr;
359*eef4f27bSRobert Mustacchi 	u16_t	num_pad_bytes;
360*eef4f27bSRobert Mustacchi 	u32_t   unused;
361*eef4f27bSRobert Mustacchi 	u32_t   tcp_ack_sn;
362*eef4f27bSRobert Mustacchi 	u32_t   crc_result;
363*eef4f27bSRobert Mustacchi 	u32_t   reserved;
364*eef4f27bSRobert Mustacchi 	u32_t   task_cid;
365*eef4f27bSRobert Mustacchi 
366*eef4f27bSRobert Mustacchi } comq_iscsi_sgl_place_t;
367*eef4f27bSRobert Mustacchi 
368*eef4f27bSRobert Mustacchi typedef struct itt32_fields
369*eef4f27bSRobert Mustacchi {
370*eef4f27bSRobert Mustacchi 	u32_t   task_rsrv	: 16;
371*eef4f27bSRobert Mustacchi 	u32_t 	task_type 	: 2;
372*eef4f27bSRobert Mustacchi 	u32_t   task_idx 	: 14;
373*eef4f27bSRobert Mustacchi 
374*eef4f27bSRobert Mustacchi } itt32_fields_t;
375*eef4f27bSRobert Mustacchi 
376*eef4f27bSRobert Mustacchi typedef union itt32_union
377*eef4f27bSRobert Mustacchi {
378*eef4f27bSRobert Mustacchi     itt32_fields_t 	fields;
379*eef4f27bSRobert Mustacchi     u32_t           itt32;
380*eef4f27bSRobert Mustacchi 
381*eef4f27bSRobert Mustacchi } itt32_union_t;
382*eef4f27bSRobert Mustacchi 
383*eef4f27bSRobert Mustacchi /*
384*eef4f27bSRobert Mustacchi  *  rv2ppq_opaque_iscsi definition
385*eef4f27bSRobert Mustacchi  */
386*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_iscsi_comp_msg_a
387*eef4f27bSRobert Mustacchi {
388*eef4f27bSRobert Mustacchi 	u32_t	cid;
389*eef4f27bSRobert Mustacchi 	u8_t	unused_a;
390*eef4f27bSRobert Mustacchi 	u8_t	iscsi_err_code;
391*eef4f27bSRobert Mustacchi     u16_t	hdr_itt;
392*eef4f27bSRobert Mustacchi 	u16_t	opaque_flags_opcode;
393*eef4f27bSRobert Mustacchi 	u8_t	tcp_flags;				// Only 8 bits relevant
394*eef4f27bSRobert Mustacchi 	u8_t	opcode;
395*eef4f27bSRobert Mustacchi 	u16_t 	o_iscsi_unused_b[2];
396*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword0;
397*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword1;
398*eef4f27bSRobert Mustacchi 	u32_t	tcp_ack_sn;
399*eef4f27bSRobert Mustacchi     u32_t 	o_iscsi_unused_c[2];
400*eef4f27bSRobert Mustacchi 	u32_t	hdr_exp_cmd_sn;
401*eef4f27bSRobert Mustacchi 	u32_t	hdr_max_cmd_sn;
402*eef4f27bSRobert Mustacchi 	u32_t	hdr_res_count;
403*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_comp_msg_a_t;
404*eef4f27bSRobert Mustacchi 
405*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_iscsi_comp_msg_b
406*eef4f27bSRobert Mustacchi {
407*eef4f27bSRobert Mustacchi 	u32_t	cid;
408*eef4f27bSRobert Mustacchi 	u32_t	reserved0;
409*eef4f27bSRobert Mustacchi     u16_t	opaque_flags_opcode;
410*eef4f27bSRobert Mustacchi 	u8_t	reserved1;
411*eef4f27bSRobert Mustacchi 	u8_t	opcode;
412*eef4f27bSRobert Mustacchi 	u16_t 	o_iscsi_unused_a[2];
413*eef4f27bSRobert Mustacchi     u32_t	hdr_dword2;
414*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword3;
415*eef4f27bSRobert Mustacchi 	u32_t	hdr_ttt;
416*eef4f27bSRobert Mustacchi     u32_t 	o_iscsi_unused_b[2];
417*eef4f27bSRobert Mustacchi 	u32_t	hdr_stat_sn;
418*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword9;
419*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword10;
420*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_comp_msg_b_t;
421*eef4f27bSRobert Mustacchi 
422*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_iscsi_free_mbuf
423*eef4f27bSRobert Mustacchi {
424*eef4f27bSRobert Mustacchi 	u32_t	cid;
425*eef4f27bSRobert Mustacchi 	u32_t 	mbuf_cluster;
426*eef4f27bSRobert Mustacchi 	u16_t	opaque_flags_opcode;
427*eef4f27bSRobert Mustacchi 	u8_t	rsrv;
428*eef4f27bSRobert Mustacchi 	u8_t	opcode;
429*eef4f27bSRobert Mustacchi 	u16_t 	o_iscsi_unused_a[2];
430*eef4f27bSRobert Mustacchi 	u16_t 	o_iscsi_allowed16[6];
431*eef4f27bSRobert Mustacchi 	u32_t 	o_iscsi_unused_b[2];
432*eef4f27bSRobert Mustacchi 	u32_t 	o_iscsi_allowed32[3];
433*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_free_mbuf_t;
434*eef4f27bSRobert Mustacchi 
435*eef4f27bSRobert Mustacchi typedef union rv2ppq_opaque_iscsi
436*eef4f27bSRobert Mustacchi {
437*eef4f27bSRobert Mustacchi 	rv2ppq_opaque_iscsi_comp_msg_a_t	rv2p_o_comp_msg_a;
438*eef4f27bSRobert Mustacchi     rv2ppq_opaque_iscsi_comp_msg_b_t	rv2p_o_comp_msg_b;
439*eef4f27bSRobert Mustacchi 	rv2ppq_opaque_iscsi_free_mbuf_t		rv2p_o_free_mbuf;
440*eef4f27bSRobert Mustacchi 
441*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_t;
442*eef4f27bSRobert Mustacchi 
443*eef4f27bSRobert Mustacchi // Used for TCP messages from RXP to COM (Mutual to RDMA and iSCSI)
444*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_l5
445*eef4f27bSRobert Mustacchi {
446*eef4f27bSRobert Mustacchi 	u32_t	cid;
447*eef4f27bSRobert Mustacchi 	u32_t 	o_l5_allowed32_a;
448*eef4f27bSRobert Mustacchi 	u16_t	opaque_flags_opcode;
449*eef4f27bSRobert Mustacchi 	u8_t	tcp_flags;
450*eef4f27bSRobert Mustacchi 	u8_t	opcode;
451*eef4f27bSRobert Mustacchi 	u16_t 	o_l5_unused_a[2];
452*eef4f27bSRobert Mustacchi 	u16_t 	o_l5_allowed16[4];
453*eef4f27bSRobert Mustacchi 	u32_t	tcp_ack_sn;
454*eef4f27bSRobert Mustacchi 	u32_t 	o_l5_unused_b[2];
455*eef4f27bSRobert Mustacchi 	u32_t 	o_l5_allowed32_b[3];
456*eef4f27bSRobert Mustacchi } rv2ppq_opaque_l5_t;
457*eef4f27bSRobert Mustacchi 
458*eef4f27bSRobert Mustacchi /*
459*eef4f27bSRobert Mustacchi  *  comq_opaque_iscsi definition
460*eef4f27bSRobert Mustacchi  */
461*eef4f27bSRobert Mustacchi typedef struct comq_opaque_iscsi_comp_msg_a
462*eef4f27bSRobert Mustacchi {
463*eef4f27bSRobert Mustacchi 	u32_t	cid;
464*eef4f27bSRobert Mustacchi 	u8_t	unused;
465*eef4f27bSRobert Mustacchi 	u8_t	iscsi_err_code;
466*eef4f27bSRobert Mustacchi     u16_t	hdr_itt;
467*eef4f27bSRobert Mustacchi 	u16_t	opaque_flags_opcode;
468*eef4f27bSRobert Mustacchi 	u8_t	tcp_flags;				// Only 8 bits relevant
469*eef4f27bSRobert Mustacchi 	u8_t	opcode;
470*eef4f27bSRobert Mustacchi     u32_t	hdr_dword0;
471*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword1;
472*eef4f27bSRobert Mustacchi 	u32_t	tcp_ack_sn;
473*eef4f27bSRobert Mustacchi 	u32_t	hdr_exp_cmd_sn;
474*eef4f27bSRobert Mustacchi 	u32_t	hdr_max_cmd_sn;
475*eef4f27bSRobert Mustacchi 	u32_t	hdr_res_count;
476*eef4f27bSRobert Mustacchi 
477*eef4f27bSRobert Mustacchi } comq_opaque_iscsi_comp_msg_a_t;
478*eef4f27bSRobert Mustacchi 
479*eef4f27bSRobert Mustacchi typedef struct comq_opaque_iscsi_comp_msg_b
480*eef4f27bSRobert Mustacchi {
481*eef4f27bSRobert Mustacchi 	u32_t	cid;
482*eef4f27bSRobert Mustacchi 	u32_t	reserved0;
483*eef4f27bSRobert Mustacchi 	u16_t	opaque_flags_opcode;
484*eef4f27bSRobert Mustacchi 	u8_t	reserved1;
485*eef4f27bSRobert Mustacchi 	u8_t	opcode;
486*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword2;
487*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword3;
488*eef4f27bSRobert Mustacchi     u32_t	hdr_ttt;
489*eef4f27bSRobert Mustacchi 	u32_t	hdr_stat_sn;
490*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword9;
491*eef4f27bSRobert Mustacchi 	u32_t	hdr_dword10;
492*eef4f27bSRobert Mustacchi 
493*eef4f27bSRobert Mustacchi } comq_opaque_iscsi_comp_msg_b_t;
494*eef4f27bSRobert Mustacchi 
495*eef4f27bSRobert Mustacchi typedef union comq_opaque_iscsi
496*eef4f27bSRobert Mustacchi {
497*eef4f27bSRobert Mustacchi 	comq_opaque_iscsi_comp_msg_a_t 	com_o_comp_msg_a;
498*eef4f27bSRobert Mustacchi 	comq_opaque_iscsi_comp_msg_b_t 	com_o_comp_msg_b;
499*eef4f27bSRobert Mustacchi 
500*eef4f27bSRobert Mustacchi } comq_opaque_iscsi_t;
501*eef4f27bSRobert Mustacchi 
502*eef4f27bSRobert Mustacchi // TCP opaque message for L5 (no data)
503*eef4f27bSRobert Mustacchi typedef struct comq_opaque_l5
504*eef4f27bSRobert Mustacchi {
505*eef4f27bSRobert Mustacchi 	u32_t	cid;
506*eef4f27bSRobert Mustacchi 	u32_t 	o_l5_allowed32_a;
507*eef4f27bSRobert Mustacchi 	u16_t	opaque_flags_opcode;
508*eef4f27bSRobert Mustacchi 	u8_t	tcp_flags;
509*eef4f27bSRobert Mustacchi 	u8_t	opcode;
510*eef4f27bSRobert Mustacchi 	u16_t 	o_l5_allowed16[4];
511*eef4f27bSRobert Mustacchi 	u32_t	tcp_ack_sn;
512*eef4f27bSRobert Mustacchi     u32_t 	o_l5_allowed32_b[3];
513*eef4f27bSRobert Mustacchi 
514*eef4f27bSRobert Mustacchi } comq_opaque_l5_t;
515*eef4f27bSRobert Mustacchi 
516*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_iscsi_kcqe_comp
517*eef4f27bSRobert Mustacchi {
518*eef4f27bSRobert Mustacchi     u32_t cid;
519*eef4f27bSRobert Mustacchi     u32_t iscsi_conn_id;
520*eef4f27bSRobert Mustacchi     u16_t opaque_flags_opcode;
521*eef4f27bSRobert Mustacchi     u8_t reserved1;
522*eef4f27bSRobert Mustacchi     u8_t opcode;
523*eef4f27bSRobert Mustacchi     u16_t unused_a[2];
524*eef4f27bSRobert Mustacchi 	u32_t reserved2[3];
525*eef4f27bSRobert Mustacchi     u32_t unused_b[2];
526*eef4f27bSRobert Mustacchi 	u32_t status_code;
527*eef4f27bSRobert Mustacchi     u32_t reserved3[2];
528*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_kcqe_comp_t;
529*eef4f27bSRobert Mustacchi 
530*eef4f27bSRobert Mustacchi typedef struct comq_opaque_iscsi_kcqe_comp
531*eef4f27bSRobert Mustacchi {
532*eef4f27bSRobert Mustacchi 	u32_t cid;
533*eef4f27bSRobert Mustacchi 	u32_t iscsi_conn_id;
534*eef4f27bSRobert Mustacchi 	u16_t opaque_flags_opcode;
535*eef4f27bSRobert Mustacchi 	u8_t reserved1;
536*eef4f27bSRobert Mustacchi 	u8_t opcode;
537*eef4f27bSRobert Mustacchi 	u32_t reserved2[3];
538*eef4f27bSRobert Mustacchi 	u32_t status_code;
539*eef4f27bSRobert Mustacchi 	u32_t reserved3[2];
540*eef4f27bSRobert Mustacchi 
541*eef4f27bSRobert Mustacchi } comq_opaque_iscsi_kcqe_comp_t;
542*eef4f27bSRobert Mustacchi 
543*eef4f27bSRobert Mustacchi // L5 context manager parameters context struct
544*eef4f27bSRobert Mustacchi typedef struct l5_cm_fixed_connect_context
545*eef4f27bSRobert Mustacchi {
546*eef4f27bSRobert Mustacchi     u32_t fixed_seed /* 32 bits of secret passed by the driver for port 0 */;
547*eef4f27bSRobert Mustacchi     u32_t rsrv[31] /*  */;
548*eef4f27bSRobert Mustacchi 
549*eef4f27bSRobert Mustacchi } l5_cm_fixed_connect_context_t;
550*eef4f27bSRobert Mustacchi 
551*eef4f27bSRobert Mustacchi // TCP general message for L5
552*eef4f27bSRobert Mustacchi typedef struct comq_l5_tcp
553*eef4f27bSRobert Mustacchi {
554*eef4f27bSRobert Mustacchi 	u32_t	cid;
555*eef4f27bSRobert Mustacchi 	u32_t	reserved0;
556*eef4f27bSRobert Mustacchi 	u16_t	reserved1;
557*eef4f27bSRobert Mustacchi 	u8_t	tcp_flags;
558*eef4f27bSRobert Mustacchi 		#define L5_FLAGS_TCP_SMALL_WIN		(1<<0)
559*eef4f27bSRobert Mustacchi 		#define L5_FLAGS_TCP_SILENT_DROP	(1<<1)
560*eef4f27bSRobert Mustacchi 		#define L5_FLAGS_TCP_RELEASE_MBUF	(1<<2)
561*eef4f27bSRobert Mustacchi 		#define L5_FLAGS_TCP_ACK_PROCESS	(1<<3)
562*eef4f27bSRobert Mustacchi 		#define L5_FLAGS_TCP_PURE_ACK		(1<<4) // No payload and no window update
563*eef4f27bSRobert Mustacchi 		#define L5_FLAGS_TCP_IP_FRAG		(1<<5)
564*eef4f27bSRobert Mustacchi 		#define L5_FLAGS_TCP_IP_OPTION		(1<<6)
565*eef4f27bSRobert Mustacchi 		#define L5_FLAGS_TCP_URGENT_FLAG	(1<<7)
566*eef4f27bSRobert Mustacchi 
567*eef4f27bSRobert Mustacchi 	u8_t	reserved2;
568*eef4f27bSRobert Mustacchi     u32_t	reserved3[2];
569*eef4f27bSRobert Mustacchi 	u32_t	tcp_ack_sn;
570*eef4f27bSRobert Mustacchi 	u32_t	reserved4[3];
571*eef4f27bSRobert Mustacchi 
572*eef4f27bSRobert Mustacchi } comq_l5_tcp_t;
573*eef4f27bSRobert Mustacchi 
574*eef4f27bSRobert Mustacchi 
575*eef4f27bSRobert Mustacchi 
576*eef4f27bSRobert Mustacchi 
577*eef4f27bSRobert Mustacchi /*
578*eef4f27bSRobert Mustacchi  *  rv2ppq_l5_place definition
579*eef4f27bSRobert Mustacchi  */
580*eef4f27bSRobert Mustacchi typedef struct rv2ppq_l5_place_b
581*eef4f27bSRobert Mustacchi {
582*eef4f27bSRobert Mustacchi     u32_t l5_place_cid;
583*eef4f27bSRobert Mustacchi     u32_t l5_place_mbuf_cluster;
584*eef4f27bSRobert Mustacchi     u16_t l5_place_operand_flags;
585*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_MARKERS_PRESENT      (1<<0)
586*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_NEW_ISLAND           (1<<1)
587*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_TCP_HOLE_CLOSED      (1<<2)
588*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_IN_ORDER             (1<<3)
589*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_LBIT_STATUS          (1<<4)
590*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_FLUSH                (1<<5)
591*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_PG_SZ                (0xf<<8)
592*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_256        (0<<8)
593*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_512        (1<<8)
594*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_1K         (2<<8)
595*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_2K         (3<<8)
596*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_4K         (4<<8)
597*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_8K         (5<<8)
598*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_16K        (6<<8)
599*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_32K        (7<<8)
600*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_64K        (8<<8)
601*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_128K       (9<<8)
602*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_256K       (10<<8)
603*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_512K       (11<<8)
604*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_1M         (12<<8)
605*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_2M         (13<<8)
606*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_4M         (14<<8)
607*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_8M         (15<<8)
608*eef4f27bSRobert Mustacchi 
609*eef4f27bSRobert Mustacchi     u8_t l5_place_knum;
610*eef4f27bSRobert Mustacchi     u8_t l5_place_opcode;
611*eef4f27bSRobert Mustacchi     u16_t l5_place_offset;
612*eef4f27bSRobert Mustacchi     u16_t l5_place_length;
613*eef4f27bSRobert Mustacchi     u16_t l5_place_offset_to_first_marker;
614*eef4f27bSRobert Mustacchi     u16_t l5_place_rbdc_key;
615*eef4f27bSRobert Mustacchi     u32_t l5_place_first_page_offset;
616*eef4f27bSRobert Mustacchi     u16_t l5_place_l5_header_length;
617*eef4f27bSRobert Mustacchi     u16_t l5_place_l5_cmd_type;
618*eef4f27bSRobert Mustacchi         #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE              (0xf<<0)
619*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_UNDEFINED  (0<<0)
620*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND     (1<<0)
621*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_SE  (2<<0)
622*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_INV  (3<<0)
623*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_SE_INV  (4<<0)
624*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_WRITE  (5<<0)
625*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ  (6<<0)
626*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ_W_INV  (7<<0)
627*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_WINDOW_BIND  (8<<0)
628*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_FAST_REGISTER  (9<<0)
629*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_LOCAL_INVALIDATE  (10<<0)
630*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ_RESPONSE  (11<<0)
631*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_TCP_ACK  (12<<0)
632*eef4f27bSRobert Mustacchi 
633*eef4f27bSRobert Mustacchi     u32_t l5_place_page_table_base_addr_h;
634*eef4f27bSRobert Mustacchi     u32_t l5_place_page_table_base_addr_l;
635*eef4f27bSRobert Mustacchi     u32_t l5_place_tcp_ack_seq;
636*eef4f27bSRobert Mustacchi     u32_t l5_place_sink_bfr_target_offset_h;
637*eef4f27bSRobert Mustacchi     u32_t l5_place_sink_bfr_target_offset_l;
638*eef4f27bSRobert Mustacchi     u8_t l5_place_rdma_action;  // no need to be cleared by RXP, RV2P will do it
639*eef4f27bSRobert Mustacchi     u8_t l5_place_cs16_pkt_len;
640*eef4f27bSRobert Mustacchi     u16_t l5_place_cs16;
641*eef4f27bSRobert Mustacchi } rv2ppq_l5_place_b_t;
642*eef4f27bSRobert Mustacchi 
643*eef4f27bSRobert Mustacchi typedef struct rv2ppq_l5_place_l
644*eef4f27bSRobert Mustacchi {
645*eef4f27bSRobert Mustacchi     u32_t l5_place_cid;
646*eef4f27bSRobert Mustacchi     u32_t l5_place_mbuf_cluster;
647*eef4f27bSRobert Mustacchi     u8_t l5_place_opcode;
648*eef4f27bSRobert Mustacchi     u8_t l5_place_knum;
649*eef4f27bSRobert Mustacchi     u16_t l5_place_operand_flags;
650*eef4f27bSRobert Mustacchi     u16_t l5_place_length;
651*eef4f27bSRobert Mustacchi     u16_t l5_place_offset;
652*eef4f27bSRobert Mustacchi     u16_t l5_place_rbdc_key;
653*eef4f27bSRobert Mustacchi     u16_t l5_place_offset_to_first_marker;
654*eef4f27bSRobert Mustacchi     u32_t l5_place_first_page_offset;
655*eef4f27bSRobert Mustacchi     u16_t l5_place_l5_cmd_type;
656*eef4f27bSRobert Mustacchi     u16_t l5_place_l5_header_length;
657*eef4f27bSRobert Mustacchi     u32_t l5_place_page_table_base_addr_h;
658*eef4f27bSRobert Mustacchi     u32_t l5_place_page_table_base_addr_l;
659*eef4f27bSRobert Mustacchi     u32_t l5_place_tcp_ack_seq;
660*eef4f27bSRobert Mustacchi     u32_t l5_place_sink_bfr_target_offset_h;
661*eef4f27bSRobert Mustacchi     u32_t l5_place_sink_bfr_target_offset_l;
662*eef4f27bSRobert Mustacchi     u16_t l5_place_cs16;
663*eef4f27bSRobert Mustacchi     u8_t l5_place_cs16_pkt_len;
664*eef4f27bSRobert Mustacchi     u8_t l5_place_rdma_action;  // no need to be cleared by RXP, RV2P will do it
665*eef4f27bSRobert Mustacchi } rv2ppq_l5_place_l_t;
666*eef4f27bSRobert Mustacchi 
667*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
668*eef4f27bSRobert Mustacchi     typedef rv2ppq_l5_place_l_t rv2ppq_l5_place_t;
669*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
670*eef4f27bSRobert Mustacchi     typedef rv2ppq_l5_place_b_t rv2ppq_l5_place_t;
671*eef4f27bSRobert Mustacchi #endif
672*eef4f27bSRobert Mustacchi 
673*eef4f27bSRobert Mustacchi 
674*eef4f27bSRobert Mustacchi /*
675*eef4f27bSRobert Mustacchi  *  rv2ppq_l5_flush definition
676*eef4f27bSRobert Mustacchi  */
677*eef4f27bSRobert Mustacchi typedef struct rv2ppq_l5_flush_b
678*eef4f27bSRobert Mustacchi {
679*eef4f27bSRobert Mustacchi     u32_t unused_0[2];
680*eef4f27bSRobert Mustacchi     u16_t unused_1;
681*eef4f27bSRobert Mustacchi     u8_t unused_2;
682*eef4f27bSRobert Mustacchi     u8_t l5_flush_opcode;
683*eef4f27bSRobert Mustacchi     u32_t unused_3;
684*eef4f27bSRobert Mustacchi     u16_t l5_flush_rbdc_key;
685*eef4f27bSRobert Mustacchi     u16_t unused_4;
686*eef4f27bSRobert Mustacchi     u32_t unused_5[7];
687*eef4f27bSRobert Mustacchi     u8_t l5_flush_rdma_action;  // no need to be cleared by RXP, RV2P will do it
688*eef4f27bSRobert Mustacchi     u8_t l5_flush_cs16_pkt_len;
689*eef4f27bSRobert Mustacchi     u16_t l5_flush_cs16;
690*eef4f27bSRobert Mustacchi } rv2ppq_l5_flush_b_t;
691*eef4f27bSRobert Mustacchi 
692*eef4f27bSRobert Mustacchi typedef struct rv2ppq_l5_flush_l
693*eef4f27bSRobert Mustacchi {
694*eef4f27bSRobert Mustacchi     u32_t unused_0[2];
695*eef4f27bSRobert Mustacchi     u8_t l5_flush_opcode;
696*eef4f27bSRobert Mustacchi     u8_t unused_2;
697*eef4f27bSRobert Mustacchi     u16_t unused_1;
698*eef4f27bSRobert Mustacchi     u32_t unused_3;
699*eef4f27bSRobert Mustacchi     u16_t unused_4;
700*eef4f27bSRobert Mustacchi     u16_t l5_flush_rbdc_key;
701*eef4f27bSRobert Mustacchi     u32_t unused_5[7];
702*eef4f27bSRobert Mustacchi     u16_t l5_flush_cs16;
703*eef4f27bSRobert Mustacchi     u8_t l5_flush_cs16_pkt_len;
704*eef4f27bSRobert Mustacchi     u8_t l5_flush_rdma_action;  // no need to be cleared by RXP, RV2P will do it
705*eef4f27bSRobert Mustacchi } rv2ppq_l5_flush_l_t;
706*eef4f27bSRobert Mustacchi 
707*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
708*eef4f27bSRobert Mustacchi     typedef rv2ppq_l5_flush_l_t rv2ppq_l5_flush_t;
709*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
710*eef4f27bSRobert Mustacchi     typedef rv2ppq_l5_flush_b_t rv2ppq_l5_flush_t;
711*eef4f27bSRobert Mustacchi #endif
712*eef4f27bSRobert Mustacchi 
713*eef4f27bSRobert Mustacchi 
714*eef4f27bSRobert Mustacchi 
715*eef4f27bSRobert Mustacchi /*
716*eef4f27bSRobert Mustacchi  *  comq_l5_place definition
717*eef4f27bSRobert Mustacchi  */
718*eef4f27bSRobert Mustacchi typedef struct comq_l5_place_b
719*eef4f27bSRobert Mustacchi {
720*eef4f27bSRobert Mustacchi     u32_t l5_place_cid;
721*eef4f27bSRobert Mustacchi     u32_t l5_place_mbuf_cluster;
722*eef4f27bSRobert Mustacchi     u16_t l5_place_operand_flags;
723*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_MARKERS_PRESENT      (1<<0)
724*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_NEW_ISLAND           (1<<1)
725*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_TCP_HOLE_CLOSED      (1<<2)
726*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_IN_ORDER             (1<<3)
727*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_LBIT_STATUS          (1<<4)
728*eef4f27bSRobert Mustacchi         #define L5_PLACE_OPERAND_FLAGS_PG_SZ                (0xf<<8)
729*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_256        (0<<8)
730*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_512        (1<<8)
731*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_1K         (2<<8)
732*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_2K         (3<<8)
733*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_4K         (4<<8)
734*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_8K         (5<<8)
735*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_16K        (6<<8)
736*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_32K        (7<<8)
737*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_64K        (8<<8)
738*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_128K       (9<<8)
739*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_256K       (10<<8)
740*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_512K       (11<<8)
741*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_1M         (12<<8)
742*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_2M         (13<<8)
743*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_4M         (14<<8)
744*eef4f27bSRobert Mustacchi             #define L5_PLACE_OPERAND_FLAGS_PG_SZ_8M         (15<<8)
745*eef4f27bSRobert Mustacchi 
746*eef4f27bSRobert Mustacchi     u8_t l5_place_knum;
747*eef4f27bSRobert Mustacchi     u8_t l5_place_opcode;
748*eef4f27bSRobert Mustacchi     u16_t l5_place_offset_to_first_marker;
749*eef4f27bSRobert Mustacchi     u16_t l5_place_rbdc_key;
750*eef4f27bSRobert Mustacchi     u32_t l5_place_first_page_offset;
751*eef4f27bSRobert Mustacchi     u16_t l5_place_l5_header_length;
752*eef4f27bSRobert Mustacchi     u16_t l5_place_l5_cmd_type;
753*eef4f27bSRobert Mustacchi         #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE              (0xf<<0)
754*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_UNDEFINED  (0<<0)
755*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND     (1<<0)
756*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_SE  (2<<0)
757*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_INV  (3<<0)
758*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_SE_INV  (4<<0)
759*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_WRITE  (5<<0)
760*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ  (6<<0)
761*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ_W_INV  (7<<0)
762*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_WINDOW_BIND  (8<<0)
763*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_FAST_REGISTER  (9<<0)
764*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_LOCAL_INVALIDATE  (10<<0)
765*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ_RESPONSE  (11<<0)
766*eef4f27bSRobert Mustacchi             #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_TCP_ACK  (12<<0)
767*eef4f27bSRobert Mustacchi 
768*eef4f27bSRobert Mustacchi     u32_t l5_place_tcp_ack_seq;
769*eef4f27bSRobert Mustacchi     u32_t l5_place_sink_bfr_target_offset_h;
770*eef4f27bSRobert Mustacchi     u32_t l5_place_sink_bfr_target_offset_l;
771*eef4f27bSRobert Mustacchi     u8_t l5_place_rdma_action;
772*eef4f27bSRobert Mustacchi     u8_t l5_place_cs16_pkt_len;
773*eef4f27bSRobert Mustacchi     u16_t l5_place_cs16;
774*eef4f27bSRobert Mustacchi } comq_l5_place_b_t;
775*eef4f27bSRobert Mustacchi 
776*eef4f27bSRobert Mustacchi typedef struct comq_l5_place_l
777*eef4f27bSRobert Mustacchi 
778*eef4f27bSRobert Mustacchi {
779*eef4f27bSRobert Mustacchi     u32_t l5_place_cid;
780*eef4f27bSRobert Mustacchi     u32_t l5_place_mbuf_cluster;
781*eef4f27bSRobert Mustacchi     u8_t l5_place_opcode;
782*eef4f27bSRobert Mustacchi     u8_t l5_place_knum;
783*eef4f27bSRobert Mustacchi     u16_t l5_place_operand_flags;
784*eef4f27bSRobert Mustacchi     u16_t l5_place_rbdc_key;
785*eef4f27bSRobert Mustacchi     u16_t l5_place_offset_to_first_marker;
786*eef4f27bSRobert Mustacchi     u32_t l5_place_first_page_offset;
787*eef4f27bSRobert Mustacchi     u16_t l5_place_l5_cmd_type;
788*eef4f27bSRobert Mustacchi     u16_t l5_place_l5_header_length;
789*eef4f27bSRobert Mustacchi     u32_t l5_place_tcp_ack_seq;
790*eef4f27bSRobert Mustacchi     u32_t l5_place_sink_bfr_target_offset_h;
791*eef4f27bSRobert Mustacchi     u32_t l5_place_sink_bfr_target_offset_l;
792*eef4f27bSRobert Mustacchi     u16_t l5_place_cs16;
793*eef4f27bSRobert Mustacchi     u8_t l5_place_cs16_pkt_len;
794*eef4f27bSRobert Mustacchi     u8_t l5_place_rdma_action;
795*eef4f27bSRobert Mustacchi } comq_l5_place_l_t;
796*eef4f27bSRobert Mustacchi 
797*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
798*eef4f27bSRobert Mustacchi     typedef comq_l5_place_l_t comq_l5_place_t;
799*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
800*eef4f27bSRobert Mustacchi     typedef comq_l5_place_b_t comq_l5_place_t;
801*eef4f27bSRobert Mustacchi #endif
802*eef4f27bSRobert Mustacchi 
803*eef4f27bSRobert Mustacchi 
804*eef4f27bSRobert Mustacchi /*
805*eef4f27bSRobert Mustacchi  *  comq_l5_flush definition
806*eef4f27bSRobert Mustacchi  */
807*eef4f27bSRobert Mustacchi typedef struct comq_l5_flush_b
808*eef4f27bSRobert Mustacchi {
809*eef4f27bSRobert Mustacchi     u32_t unused_0[2];
810*eef4f27bSRobert Mustacchi     u16_t unused_1;
811*eef4f27bSRobert Mustacchi     u8_t unused_2;
812*eef4f27bSRobert Mustacchi     u8_t l5_flush_opcode;
813*eef4f27bSRobert Mustacchi     u16_t l5_flush_rbdc_key;
814*eef4f27bSRobert Mustacchi     u16_t unused_3;
815*eef4f27bSRobert Mustacchi     u32_t unused_4[5];
816*eef4f27bSRobert Mustacchi     u8_t l5_flush_rdma_action;
817*eef4f27bSRobert Mustacchi     u8_t l5_flush_cs16_pkt_len;
818*eef4f27bSRobert Mustacchi     u16_t l5_flush_cs16;
819*eef4f27bSRobert Mustacchi } comq_l5_flush_b_t;
820*eef4f27bSRobert Mustacchi 
821*eef4f27bSRobert Mustacchi typedef struct comq_l5_flush_l
822*eef4f27bSRobert Mustacchi {
823*eef4f27bSRobert Mustacchi     u32_t unused_0[2];
824*eef4f27bSRobert Mustacchi     u8_t l5_flush_opcode;
825*eef4f27bSRobert Mustacchi     u8_t unused_2;
826*eef4f27bSRobert Mustacchi     u16_t unused_1;
827*eef4f27bSRobert Mustacchi     u16_t unused_3;
828*eef4f27bSRobert Mustacchi     u16_t l5_flush_rbdc_key;
829*eef4f27bSRobert Mustacchi     u32_t unused_4[5];
830*eef4f27bSRobert Mustacchi     u16_t l5_flush_cs16;
831*eef4f27bSRobert Mustacchi     u8_t l5_flush_cs16_pkt_len;
832*eef4f27bSRobert Mustacchi     u8_t l5_flush_rdma_action;
833*eef4f27bSRobert Mustacchi } comq_l5_flush_l_t;
834*eef4f27bSRobert Mustacchi 
835*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
836*eef4f27bSRobert Mustacchi     typedef comq_l5_flush_l_t comq_l5_flush_t;
837*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
838*eef4f27bSRobert Mustacchi     typedef comq_l5_flush_b_t comq_l5_flush_t;
839*eef4f27bSRobert Mustacchi #endif
840*eef4f27bSRobert Mustacchi 
841*eef4f27bSRobert Mustacchi /*
842*eef4f27bSRobert Mustacchi  *  l5_local_region_table_entry_b definition
843*eef4f27bSRobert Mustacchi  */
844*eef4f27bSRobert Mustacchi typedef struct l5_local_region_table_entry_b
845*eef4f27bSRobert Mustacchi {
846*eef4f27bSRobert Mustacchi     u8_t rte_flags;
847*eef4f27bSRobert Mustacchi 
848*eef4f27bSRobert Mustacchi     u8_t rte_bind_cnt;
849*eef4f27bSRobert Mustacchi     u16_t rte_pd;
850*eef4f27bSRobert Mustacchi } l5_local_region_table_entry_b_t;
851*eef4f27bSRobert Mustacchi 
852*eef4f27bSRobert Mustacchi 
853*eef4f27bSRobert Mustacchi 
854*eef4f27bSRobert Mustacchi /*
855*eef4f27bSRobert Mustacchi  *  l5_local_region_table_entry_b definition
856*eef4f27bSRobert Mustacchi  */
857*eef4f27bSRobert Mustacchi typedef struct l5_local_region_table_entry_b_xi
858*eef4f27bSRobert Mustacchi {
859*eef4f27bSRobert Mustacchi     u8_t rte_flags;
860*eef4f27bSRobert Mustacchi         #define RTE_FLAGS_FLAGS_MASK                        (0xff<<0)
861*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_UNDEFINED          (0<<0)
862*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_VALID              (1<<0)
863*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_LOCAL_READ         (2<<0)
864*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_LOCAL_WRITE        (4<<0)
865*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_REMOTE_REGION      (8<<0)
866*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_ALLOW_WIND_BIND    (16<<0)
867*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_INVALIDATE_IN_PROGRESS  (32<<0)
868*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_RX_FLUSH_IN_PROGRESS  (64<<0)
869*eef4f27bSRobert Mustacchi 
870*eef4f27bSRobert Mustacchi     u8_t rte_bind_cnt;
871*eef4f27bSRobert Mustacchi     u16_t rte_pd;
872*eef4f27bSRobert Mustacchi } l5_local_region_table_entry_b_xi_t;
873*eef4f27bSRobert Mustacchi 
874*eef4f27bSRobert Mustacchi 
875*eef4f27bSRobert Mustacchi /*
876*eef4f27bSRobert Mustacchi  *  l5_local_region_table_entry_l definition
877*eef4f27bSRobert Mustacchi  */
878*eef4f27bSRobert Mustacchi typedef struct l5_local_region_table_entry_l
879*eef4f27bSRobert Mustacchi {
880*eef4f27bSRobert Mustacchi     u16_t rte_pd;
881*eef4f27bSRobert Mustacchi     u8_t rte_bind_cnt;
882*eef4f27bSRobert Mustacchi     u8_t rte_flags;
883*eef4f27bSRobert Mustacchi 
884*eef4f27bSRobert Mustacchi } l5_local_region_table_entry_l_t;
885*eef4f27bSRobert Mustacchi 
886*eef4f27bSRobert Mustacchi 
887*eef4f27bSRobert Mustacchi 
888*eef4f27bSRobert Mustacchi /*
889*eef4f27bSRobert Mustacchi  *  l5_local_region_table_entry_l definition
890*eef4f27bSRobert Mustacchi  */
891*eef4f27bSRobert Mustacchi typedef struct l5_local_region_table_entry_l_xi
892*eef4f27bSRobert Mustacchi {
893*eef4f27bSRobert Mustacchi     u16_t rte_pd;
894*eef4f27bSRobert Mustacchi     u8_t rte_bind_cnt;
895*eef4f27bSRobert Mustacchi     u8_t rte_flags;
896*eef4f27bSRobert Mustacchi         #define RTE_FLAGS_FLAGS_MASK                        (0xff<<0)
897*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_UNDEFINED          (0<<0)
898*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_VALID              (1<<0)
899*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_LOCAL_READ         (2<<0)
900*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_LOCAL_WRITE        (4<<0)
901*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_REMOTE_REGION      (8<<0)
902*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_ALLOW_WIND_BIND    (16<<0)
903*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_INVALIDATE_IN_PROGRESS  (32<<0)
904*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_RX_FLUSH_IN_PROGRESS  (64<<0)
905*eef4f27bSRobert Mustacchi 
906*eef4f27bSRobert Mustacchi } l5_local_region_table_entry_l_xi_t;
907*eef4f27bSRobert Mustacchi 
908*eef4f27bSRobert Mustacchi 
909*eef4f27bSRobert Mustacchi /*
910*eef4f27bSRobert Mustacchi  * l5_local_region_table_entry select
911*eef4f27bSRobert Mustacchi  */
912*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
913*eef4f27bSRobert Mustacchi     typedef l5_local_region_table_entry_l_t l5_local_region_table_entry_t;
914*eef4f27bSRobert Mustacchi     typedef l5_local_region_table_entry_l_xi_t l5_local_region_table_entry_xi_t;
915*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
916*eef4f27bSRobert Mustacchi     typedef l5_local_region_table_entry_b_t l5_local_region_table_entry_t;
917*eef4f27bSRobert Mustacchi     typedef l5_local_region_table_entry_b_xi_t l5_local_region_table_entry_xi_t;
918*eef4f27bSRobert Mustacchi #endif
919*eef4f27bSRobert Mustacchi 
920*eef4f27bSRobert Mustacchi 
921*eef4f27bSRobert Mustacchi /*
922*eef4f27bSRobert Mustacchi  *  l5_remote_region_table_entry_b definition
923*eef4f27bSRobert Mustacchi  */
924*eef4f27bSRobert Mustacchi typedef struct l5_remote_region_table_entry_b
925*eef4f27bSRobert Mustacchi {
926*eef4f27bSRobert Mustacchi     u8_t rte_flags;
927*eef4f27bSRobert Mustacchi 
928*eef4f27bSRobert Mustacchi     u8_t rte_wintbl_stag_hi;
929*eef4f27bSRobert Mustacchi     u16_t rte_wintbl_stag_lo;
930*eef4f27bSRobert Mustacchi } l5_remote_region_table_entry_b_t;
931*eef4f27bSRobert Mustacchi 
932*eef4f27bSRobert Mustacchi 
933*eef4f27bSRobert Mustacchi 
934*eef4f27bSRobert Mustacchi /*
935*eef4f27bSRobert Mustacchi  *  l5_remote_region_table_entry_b definition
936*eef4f27bSRobert Mustacchi  */
937*eef4f27bSRobert Mustacchi typedef struct l5_remote_region_table_entry_b_xi
938*eef4f27bSRobert Mustacchi {
939*eef4f27bSRobert Mustacchi     u8_t rte_flags;
940*eef4f27bSRobert Mustacchi         #define RTE_FLAGS_FLAGS_MASK                        (0xff<<0)
941*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_UNDEFINED          (0<<0)
942*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_VALID              (1<<0)
943*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_LOCAL_READ         (2<<0)
944*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_LOCAL_WRITE        (4<<0)
945*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_REMOTE_REGION      (8<<0)
946*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_ALLOW_WIND_BIND    (16<<0)
947*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_INVALIDATE_IN_PROGRESS  (32<<0)
948*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_RX_FLUSH_IN_PROGRESS  (64<<0)
949*eef4f27bSRobert Mustacchi 
950*eef4f27bSRobert Mustacchi     u8_t rte_wintbl_stag_hi;
951*eef4f27bSRobert Mustacchi     u16_t rte_wintbl_stag_lo;
952*eef4f27bSRobert Mustacchi } l5_remote_region_table_entry_b_xi_t;
953*eef4f27bSRobert Mustacchi 
954*eef4f27bSRobert Mustacchi 
955*eef4f27bSRobert Mustacchi /*
956*eef4f27bSRobert Mustacchi  *  l5_remote_region_table_entry_l definition
957*eef4f27bSRobert Mustacchi  */
958*eef4f27bSRobert Mustacchi typedef struct l5_remote_region_table_entry_l
959*eef4f27bSRobert Mustacchi {
960*eef4f27bSRobert Mustacchi     u16_t rte_wintbl_stag_lo;
961*eef4f27bSRobert Mustacchi     u8_t rte_wintbl_stag_hi;
962*eef4f27bSRobert Mustacchi     u8_t rte_flags;
963*eef4f27bSRobert Mustacchi 
964*eef4f27bSRobert Mustacchi } l5_remote_region_table_entry_l_t;
965*eef4f27bSRobert Mustacchi 
966*eef4f27bSRobert Mustacchi 
967*eef4f27bSRobert Mustacchi 
968*eef4f27bSRobert Mustacchi /*
969*eef4f27bSRobert Mustacchi  *  l5_remote_region_table_entry_l definition
970*eef4f27bSRobert Mustacchi  */
971*eef4f27bSRobert Mustacchi typedef struct l5_remote_region_table_entry_l_xi
972*eef4f27bSRobert Mustacchi {
973*eef4f27bSRobert Mustacchi     u16_t rte_wintbl_stag_lo;
974*eef4f27bSRobert Mustacchi     u8_t rte_wintbl_stag_hi;
975*eef4f27bSRobert Mustacchi     u8_t rte_flags;
976*eef4f27bSRobert Mustacchi         #define RTE_FLAGS_FLAGS_MASK                        (0xff<<0)
977*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_UNDEFINED          (0<<0)
978*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_VALID              (1<<0)
979*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_LOCAL_READ         (2<<0)
980*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_LOCAL_WRITE        (4<<0)
981*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_REMOTE_REGION      (8<<0)
982*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_ALLOW_WIND_BIND    (16<<0)
983*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_INVALIDATE_IN_PROGRESS  (32<<0)
984*eef4f27bSRobert Mustacchi             #define RTE_FLAGS_FLAGS_MASK_RX_FLUSH_IN_PROGRESS  (64<<0)
985*eef4f27bSRobert Mustacchi 
986*eef4f27bSRobert Mustacchi } l5_remote_region_table_entry_l_xi_t;
987*eef4f27bSRobert Mustacchi 
988*eef4f27bSRobert Mustacchi 
989*eef4f27bSRobert Mustacchi /*
990*eef4f27bSRobert Mustacchi  * l5_remote_region_table_entry select
991*eef4f27bSRobert Mustacchi  */
992*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
993*eef4f27bSRobert Mustacchi     typedef l5_remote_region_table_entry_l_t l5_remote_region_table_entry_t;
994*eef4f27bSRobert Mustacchi     typedef l5_remote_region_table_entry_l_xi_t l5_remote_region_table_entry_xi_t;
995*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
996*eef4f27bSRobert Mustacchi     typedef l5_remote_region_table_entry_b_t l5_remote_region_table_entry_t;
997*eef4f27bSRobert Mustacchi     typedef l5_remote_region_table_entry_b_xi_t l5_remote_region_table_entry_xi_t;
998*eef4f27bSRobert Mustacchi #endif
999*eef4f27bSRobert Mustacchi 
1000*eef4f27bSRobert Mustacchi 
1001*eef4f27bSRobert Mustacchi /*
1002*eef4f27bSRobert Mustacchi  *  l5_region_ref_cnt_table_entry_b definition
1003*eef4f27bSRobert Mustacchi  */
1004*eef4f27bSRobert Mustacchi typedef struct l5_region_ref_cnt_table_entry_b
1005*eef4f27bSRobert Mustacchi {
1006*eef4f27bSRobert Mustacchi     u16_t rrcte_pidx;
1007*eef4f27bSRobert Mustacchi     u16_t rrcte_cidx;
1008*eef4f27bSRobert Mustacchi } l5_region_ref_cnt_table_entry_b_t;
1009*eef4f27bSRobert Mustacchi 
1010*eef4f27bSRobert Mustacchi 
1011*eef4f27bSRobert Mustacchi 
1012*eef4f27bSRobert Mustacchi /*
1013*eef4f27bSRobert Mustacchi  *  l5_region_ref_cnt_table_entry_b definition
1014*eef4f27bSRobert Mustacchi  */
1015*eef4f27bSRobert Mustacchi typedef struct l5_region_ref_cnt_table_entry_b_xi
1016*eef4f27bSRobert Mustacchi {
1017*eef4f27bSRobert Mustacchi     u16_t rrcte_pidx;
1018*eef4f27bSRobert Mustacchi     u16_t rrcte_cidx;
1019*eef4f27bSRobert Mustacchi } l5_region_ref_cnt_table_entry_b_xi_t;
1020*eef4f27bSRobert Mustacchi 
1021*eef4f27bSRobert Mustacchi 
1022*eef4f27bSRobert Mustacchi /*
1023*eef4f27bSRobert Mustacchi  *  l5_region_ref_cnt_table_entry_l definition
1024*eef4f27bSRobert Mustacchi  */
1025*eef4f27bSRobert Mustacchi typedef struct l5_region_ref_cnt_table_entry_l
1026*eef4f27bSRobert Mustacchi {
1027*eef4f27bSRobert Mustacchi     u16_t rrcte_cidx;
1028*eef4f27bSRobert Mustacchi     u16_t rrcte_pidx;
1029*eef4f27bSRobert Mustacchi } l5_region_ref_cnt_table_entry_l_t;
1030*eef4f27bSRobert Mustacchi 
1031*eef4f27bSRobert Mustacchi 
1032*eef4f27bSRobert Mustacchi 
1033*eef4f27bSRobert Mustacchi /*
1034*eef4f27bSRobert Mustacchi  *  l5_region_ref_cnt_table_entry_l definition
1035*eef4f27bSRobert Mustacchi  */
1036*eef4f27bSRobert Mustacchi typedef struct l5_region_ref_cnt_table_entry_l_xi
1037*eef4f27bSRobert Mustacchi {
1038*eef4f27bSRobert Mustacchi     u16_t rrcte_cidx;
1039*eef4f27bSRobert Mustacchi     u16_t rrcte_pidx;
1040*eef4f27bSRobert Mustacchi } l5_region_ref_cnt_table_entry_l_xi_t;
1041*eef4f27bSRobert Mustacchi 
1042*eef4f27bSRobert Mustacchi 
1043*eef4f27bSRobert Mustacchi /*
1044*eef4f27bSRobert Mustacchi  * l5_region_ref_cnt_table_entry select
1045*eef4f27bSRobert Mustacchi  */
1046*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
1047*eef4f27bSRobert Mustacchi     typedef l5_region_ref_cnt_table_entry_l_t l5_region_ref_cnt_table_entry_t;
1048*eef4f27bSRobert Mustacchi     typedef l5_region_ref_cnt_table_entry_l_xi_t l5_region_ref_cnt_table_entry_xi_t;
1049*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
1050*eef4f27bSRobert Mustacchi     typedef l5_region_ref_cnt_table_entry_b_t l5_region_ref_cnt_table_entry_t;
1051*eef4f27bSRobert Mustacchi     typedef l5_region_ref_cnt_table_entry_b_xi_t l5_region_ref_cnt_table_entry_xi_t;
1052*eef4f27bSRobert Mustacchi #endif
1053*eef4f27bSRobert Mustacchi 
1054*eef4f27bSRobert Mustacchi 
1055*eef4f27bSRobert Mustacchi /*
1056*eef4f27bSRobert Mustacchi  *  l5_window_table_entry_b definition
1057*eef4f27bSRobert Mustacchi  */
1058*eef4f27bSRobert Mustacchi typedef struct l5_window_table_entry_b
1059*eef4f27bSRobert Mustacchi {
1060*eef4f27bSRobert Mustacchi     u32_t wte_virtual_base_addr_hi;
1061*eef4f27bSRobert Mustacchi     u32_t wte_virtual_base_addr_lo;
1062*eef4f27bSRobert Mustacchi     u32_t wte_pt_phy_base_addr_hi;
1063*eef4f27bSRobert Mustacchi     u32_t wte_pt_phy_base_addr_lo;
1064*eef4f27bSRobert Mustacchi     u32_t wte_length;
1065*eef4f27bSRobert Mustacchi     u32_t wte_qp_or_pd;
1066*eef4f27bSRobert Mustacchi     u16_t wte_region_table_index;
1067*eef4f27bSRobert Mustacchi     u16_t wte_cache_key;
1068*eef4f27bSRobert Mustacchi     u16_t wte_flags;
1069*eef4f27bSRobert Mustacchi 
1070*eef4f27bSRobert Mustacchi     u8_t wte_bind_cnt;
1071*eef4f27bSRobert Mustacchi     u8_t wte_stag_key;
1072*eef4f27bSRobert Mustacchi } l5_window_table_entry_b_t;
1073*eef4f27bSRobert Mustacchi 
1074*eef4f27bSRobert Mustacchi 
1075*eef4f27bSRobert Mustacchi 
1076*eef4f27bSRobert Mustacchi /*
1077*eef4f27bSRobert Mustacchi  *  l5_window_table_entry_b definition
1078*eef4f27bSRobert Mustacchi  */
1079*eef4f27bSRobert Mustacchi typedef struct l5_window_table_entry_b_xi
1080*eef4f27bSRobert Mustacchi {
1081*eef4f27bSRobert Mustacchi     u32_t wte_virtual_base_addr_hi;
1082*eef4f27bSRobert Mustacchi     u32_t wte_virtual_base_addr_lo;
1083*eef4f27bSRobert Mustacchi     u32_t wte_pt_phy_base_addr_hi;
1084*eef4f27bSRobert Mustacchi     u32_t wte_pt_phy_base_addr_lo;
1085*eef4f27bSRobert Mustacchi     u32_t wte_length;
1086*eef4f27bSRobert Mustacchi     u32_t wte_qp_or_pd;
1087*eef4f27bSRobert Mustacchi     u16_t wte_region_table_index;
1088*eef4f27bSRobert Mustacchi     u16_t wte_cache_key;
1089*eef4f27bSRobert Mustacchi     u16_t wte_flags;
1090*eef4f27bSRobert Mustacchi         #define WTE_FLAGS_REGION_PAGE_SIZE                  (0xf<<0)
1091*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_256          (0<<0)
1092*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_512          (1<<0)
1093*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_1K           (2<<0)
1094*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_2K           (3<<0)
1095*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_4K           (4<<0)
1096*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_8K           (5<<0)
1097*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_16K          (6<<0)
1098*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_32K          (7<<0)
1099*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_64K          (8<<0)
1100*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_128K         (9<<0)
1101*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_256K         (10<<0)
1102*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_512K         (11<<0)
1103*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_1M           (12<<0)
1104*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_2M           (13<<0)
1105*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_4M           (14<<0)
1106*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_8M           (15<<0)
1107*eef4f27bSRobert Mustacchi         #define WTE_FLAGS_WT_FLAGS                          (0xfff<<4)
1108*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_WT_UNDEFINED         (0<<4)
1109*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_VALID                (1<<4)
1110*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_REGION               (2<<4)
1111*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_UNBOUND_WINDOW       (4<<4)
1112*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_BOUND_WINDOW         (8<<4)
1113*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_REMOTE_READ          (16<<4)
1114*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_REMOTE_WRITE         (32<<4)
1115*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_ALLOW_WINDOW_BINDS   (64<<4)
1116*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_INVALIDATE_IN_PROGRESS  (128<<4)
1117*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_RX_FLUSH_IN_PROGRESS  (256<<4)
1118*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_READ_W_LINV_IN_PROGRESS  (512<<4)
1119*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_DEALLOCATE_FLUSH_INITIATED  (1024<<4)
1120*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_DEALLOCATE_FLUSH_COMPLETE  (2048<<4)
1121*eef4f27bSRobert Mustacchi 
1122*eef4f27bSRobert Mustacchi     u8_t wte_bind_cnt;
1123*eef4f27bSRobert Mustacchi     u8_t wte_stag_key;
1124*eef4f27bSRobert Mustacchi } l5_window_table_entry_b_xi_t;
1125*eef4f27bSRobert Mustacchi 
1126*eef4f27bSRobert Mustacchi 
1127*eef4f27bSRobert Mustacchi /*
1128*eef4f27bSRobert Mustacchi  *  l5_window_table_entry_l definition
1129*eef4f27bSRobert Mustacchi  */
1130*eef4f27bSRobert Mustacchi typedef struct l5_window_table_entry_l
1131*eef4f27bSRobert Mustacchi {
1132*eef4f27bSRobert Mustacchi     u32_t wte_virtual_base_addr_hi;
1133*eef4f27bSRobert Mustacchi     u32_t wte_virtual_base_addr_lo;
1134*eef4f27bSRobert Mustacchi     u32_t wte_pt_phy_base_addr_hi;
1135*eef4f27bSRobert Mustacchi     u32_t wte_pt_phy_base_addr_lo;
1136*eef4f27bSRobert Mustacchi     u32_t wte_length;
1137*eef4f27bSRobert Mustacchi     u32_t wte_qp_or_pd;
1138*eef4f27bSRobert Mustacchi     u16_t wte_cache_key;
1139*eef4f27bSRobert Mustacchi     u16_t wte_region_table_index;
1140*eef4f27bSRobert Mustacchi     u8_t wte_stag_key;
1141*eef4f27bSRobert Mustacchi     u8_t wte_bind_cnt;
1142*eef4f27bSRobert Mustacchi     u16_t wte_flags;
1143*eef4f27bSRobert Mustacchi 
1144*eef4f27bSRobert Mustacchi } l5_window_table_entry_l_t;
1145*eef4f27bSRobert Mustacchi 
1146*eef4f27bSRobert Mustacchi 
1147*eef4f27bSRobert Mustacchi 
1148*eef4f27bSRobert Mustacchi /*
1149*eef4f27bSRobert Mustacchi  *  l5_window_table_entry_l definition
1150*eef4f27bSRobert Mustacchi  */
1151*eef4f27bSRobert Mustacchi typedef struct l5_window_table_entry_l_xi
1152*eef4f27bSRobert Mustacchi {
1153*eef4f27bSRobert Mustacchi     u32_t wte_virtual_base_addr_hi;
1154*eef4f27bSRobert Mustacchi     u32_t wte_virtual_base_addr_lo;
1155*eef4f27bSRobert Mustacchi     u32_t wte_pt_phy_base_addr_hi;
1156*eef4f27bSRobert Mustacchi     u32_t wte_pt_phy_base_addr_lo;
1157*eef4f27bSRobert Mustacchi     u32_t wte_length;
1158*eef4f27bSRobert Mustacchi     u32_t wte_qp_or_pd;
1159*eef4f27bSRobert Mustacchi     u16_t wte_cache_key;
1160*eef4f27bSRobert Mustacchi     u16_t wte_region_table_index;
1161*eef4f27bSRobert Mustacchi     u8_t wte_stag_key;
1162*eef4f27bSRobert Mustacchi     u8_t wte_bind_cnt;
1163*eef4f27bSRobert Mustacchi     u16_t wte_flags;
1164*eef4f27bSRobert Mustacchi         #define WTE_FLAGS_REGION_PAGE_SIZE                  (0xf<<0)
1165*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_256          (0<<0)
1166*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_512          (1<<0)
1167*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_1K           (2<<0)
1168*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_2K           (3<<0)
1169*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_4K           (4<<0)
1170*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_8K           (5<<0)
1171*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_16K          (6<<0)
1172*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_32K          (7<<0)
1173*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_64K          (8<<0)
1174*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_128K         (9<<0)
1175*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_256K         (10<<0)
1176*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_512K         (11<<0)
1177*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_1M           (12<<0)
1178*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_2M           (13<<0)
1179*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_4M           (14<<0)
1180*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_REGION_PAGE_SIZE_8M           (15<<0)
1181*eef4f27bSRobert Mustacchi         #define WTE_FLAGS_WT_FLAGS                          (0xfff<<4)
1182*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_WT_UNDEFINED         (0<<4)
1183*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_VALID                (1<<4)
1184*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_REGION               (2<<4)
1185*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_UNBOUND_WINDOW       (4<<4)
1186*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_BOUND_WINDOW         (8<<4)
1187*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_REMOTE_READ          (16<<4)
1188*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_REMOTE_WRITE         (32<<4)
1189*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_ALLOW_WINDOW_BINDS   (64<<4)
1190*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_INVALIDATE_IN_PROGRESS  (128<<4)
1191*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_RX_FLUSH_IN_PROGRESS  (256<<4)
1192*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_READ_W_LINV_IN_PROGRESS  (512<<4)
1193*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_DEALLOCATE_FLUSH_INITIATED  (1024<<4)
1194*eef4f27bSRobert Mustacchi             #define WTE_FLAGS_WT_FLAGS_DEALLOCATE_FLUSH_COMPLETE  (2048<<4)
1195*eef4f27bSRobert Mustacchi 
1196*eef4f27bSRobert Mustacchi } l5_window_table_entry_l_xi_t;
1197*eef4f27bSRobert Mustacchi 
1198*eef4f27bSRobert Mustacchi 
1199*eef4f27bSRobert Mustacchi /*
1200*eef4f27bSRobert Mustacchi  * l5_window_table_entry select
1201*eef4f27bSRobert Mustacchi  */
1202*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
1203*eef4f27bSRobert Mustacchi     typedef l5_window_table_entry_l_t l5_window_table_entry_t;
1204*eef4f27bSRobert Mustacchi     typedef l5_window_table_entry_l_xi_t l5_window_table_entry_xi_t;
1205*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
1206*eef4f27bSRobert Mustacchi     typedef l5_window_table_entry_b_t l5_window_table_entry_t;
1207*eef4f27bSRobert Mustacchi     typedef l5_window_table_entry_b_xi_t l5_window_table_entry_xi_t;
1208*eef4f27bSRobert Mustacchi #endif
1209*eef4f27bSRobert Mustacchi 
1210*eef4f27bSRobert Mustacchi 
1211*eef4f27bSRobert Mustacchi /*
1212*eef4f27bSRobert Mustacchi  *  l5_cq_table_entry_b definition
1213*eef4f27bSRobert Mustacchi  */
1214*eef4f27bSRobert Mustacchi typedef struct l5_cq_table_entry_b
1215*eef4f27bSRobert Mustacchi {
1216*eef4f27bSRobert Mustacchi     u32_t cqte_pgtbl_phaddr_hi;
1217*eef4f27bSRobert Mustacchi     u8_t cqte_pgtbl_phaddr_lo[3];
1218*eef4f27bSRobert Mustacchi     u8_t cqte_flags;
1219*eef4f27bSRobert Mustacchi 
1220*eef4f27bSRobert Mustacchi     u16_t cqte_pidx;
1221*eef4f27bSRobert Mustacchi     u16_t cqte_cqes_per_page;
1222*eef4f27bSRobert Mustacchi     u16_t cqte_max_cqes;
1223*eef4f27bSRobert Mustacchi     u16_t cqte_nx_qe_self_seq;
1224*eef4f27bSRobert Mustacchi     u16_t cqte_nx_pg_qidx;
1225*eef4f27bSRobert Mustacchi     u16_t cqte_pgtbl_pgidx;
1226*eef4f27bSRobert Mustacchi     u16_t cqte_pgtbl_npages;
1227*eef4f27bSRobert Mustacchi     u16_t cqte_cqe_pidx;
1228*eef4f27bSRobert Mustacchi     u32_t cqte_cached_pte_phaddr_hi;
1229*eef4f27bSRobert Mustacchi     u32_t cqte_cached_pte_phaddr_lo;
1230*eef4f27bSRobert Mustacchi } l5_cq_table_entry_b_t;
1231*eef4f27bSRobert Mustacchi 
1232*eef4f27bSRobert Mustacchi 
1233*eef4f27bSRobert Mustacchi /*
1234*eef4f27bSRobert Mustacchi  *  l5_cq_table_entry_b definition
1235*eef4f27bSRobert Mustacchi  */
1236*eef4f27bSRobert Mustacchi typedef struct l5_cq_table_entry_b_xi
1237*eef4f27bSRobert Mustacchi {
1238*eef4f27bSRobert Mustacchi     u32_t cqte_pgtbl_phaddr_hi;
1239*eef4f27bSRobert Mustacchi     u8_t cqte_pgtbl_phaddr_lo[3];
1240*eef4f27bSRobert Mustacchi     u8_t cqte_flags;
1241*eef4f27bSRobert Mustacchi         #define CQTE_FLAGS_PAGE_SIZE                        (0xf<<0)
1242*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_256                (0<<0)
1243*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_512                (1<<0)
1244*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_1K                 (2<<0)
1245*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_2K                 (3<<0)
1246*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_4K                 (4<<0)
1247*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_8K                 (5<<0)
1248*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_16K                (6<<0)
1249*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_32K                (7<<0)
1250*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_64K                (8<<0)
1251*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_128K               (9<<0)
1252*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_256K               (10<<0)
1253*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_512K               (11<<0)
1254*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_1M                 (12<<0)
1255*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_2M                 (13<<0)
1256*eef4f27bSRobert Mustacchi         #define CQTE_FLAGS_FLAGS                            (0xf<<4)
1257*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_UNDEFINED              (0<<4)
1258*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_VALID                  (1<<4)
1259*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_ARMED                  (2<<4)
1260*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_ARMED_SEND_SE          (4<<4)
1261*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_CQE_NOT_ARMED          (8<<4)
1262*eef4f27bSRobert Mustacchi 
1263*eef4f27bSRobert Mustacchi     u16_t cqte_pidx;
1264*eef4f27bSRobert Mustacchi     u16_t cqte_cqes_per_page;
1265*eef4f27bSRobert Mustacchi     u16_t cqte_max_cqes;
1266*eef4f27bSRobert Mustacchi     u16_t cqte_nx_qe_self_seq;
1267*eef4f27bSRobert Mustacchi     u16_t cqte_nx_pg_qidx;
1268*eef4f27bSRobert Mustacchi     u16_t cqte_pgtbl_pgidx;
1269*eef4f27bSRobert Mustacchi     u16_t cqte_pgtbl_npages;
1270*eef4f27bSRobert Mustacchi     u16_t cqte_cqe_pidx;
1271*eef4f27bSRobert Mustacchi     u32_t cqte_cached_pte_phaddr_hi;
1272*eef4f27bSRobert Mustacchi     u32_t cqte_cached_pte_phaddr_lo;
1273*eef4f27bSRobert Mustacchi } l5_cq_table_entry_b_xi_t;
1274*eef4f27bSRobert Mustacchi 
1275*eef4f27bSRobert Mustacchi 
1276*eef4f27bSRobert Mustacchi /*
1277*eef4f27bSRobert Mustacchi  *  l5_cq_table_entry_l definition
1278*eef4f27bSRobert Mustacchi  */
1279*eef4f27bSRobert Mustacchi typedef struct l5_cq_table_entry_l
1280*eef4f27bSRobert Mustacchi {
1281*eef4f27bSRobert Mustacchi     u32_t cqte_pgtbl_phaddr_hi;
1282*eef4f27bSRobert Mustacchi     u8_t cqte_flags;
1283*eef4f27bSRobert Mustacchi 
1284*eef4f27bSRobert Mustacchi     u8_t cqte_pgtbl_phaddr_lo[3];
1285*eef4f27bSRobert Mustacchi     u16_t cqte_cqes_per_page;
1286*eef4f27bSRobert Mustacchi     u16_t cqte_pidx;
1287*eef4f27bSRobert Mustacchi     u16_t cqte_nx_qe_self_seq;
1288*eef4f27bSRobert Mustacchi     u16_t cqte_max_cqes;
1289*eef4f27bSRobert Mustacchi     u16_t cqte_pgtbl_pgidx;
1290*eef4f27bSRobert Mustacchi     u16_t cqte_nx_pg_qidx;
1291*eef4f27bSRobert Mustacchi     u16_t cqte_cqe_pidx;
1292*eef4f27bSRobert Mustacchi     u16_t cqte_pgtbl_npages;
1293*eef4f27bSRobert Mustacchi     u32_t cqte_cached_pte_phaddr_hi;
1294*eef4f27bSRobert Mustacchi     u32_t cqte_cached_pte_phaddr_lo;
1295*eef4f27bSRobert Mustacchi } l5_cq_table_entry_l_t;
1296*eef4f27bSRobert Mustacchi 
1297*eef4f27bSRobert Mustacchi 
1298*eef4f27bSRobert Mustacchi 
1299*eef4f27bSRobert Mustacchi /*
1300*eef4f27bSRobert Mustacchi  *  l5_cq_table_entry_l definition
1301*eef4f27bSRobert Mustacchi  */
1302*eef4f27bSRobert Mustacchi typedef struct l5_cq_table_entry_l_xi
1303*eef4f27bSRobert Mustacchi {
1304*eef4f27bSRobert Mustacchi     u32_t cqte_pgtbl_phaddr_hi;
1305*eef4f27bSRobert Mustacchi     u8_t cqte_flags;
1306*eef4f27bSRobert Mustacchi         #define CQTE_FLAGS_PAGE_SIZE                        (0xf<<0)
1307*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_256                (0<<0)
1308*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_512                (1<<0)
1309*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_1K                 (2<<0)
1310*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_2K                 (3<<0)
1311*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_4K                 (4<<0)
1312*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_8K                 (5<<0)
1313*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_16K                (6<<0)
1314*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_32K                (7<<0)
1315*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_64K                (8<<0)
1316*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_128K               (9<<0)
1317*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_256K               (10<<0)
1318*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_512K               (11<<0)
1319*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_1M                 (12<<0)
1320*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_PAGE_SIZE_2M                 (13<<0)
1321*eef4f27bSRobert Mustacchi         #define CQTE_FLAGS_FLAGS                            (0xf<<4)
1322*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_UNDEFINED              (0<<4)
1323*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_VALID                  (1<<4)
1324*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_ARMED                  (2<<4)
1325*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_ARMED_SEND_SE          (4<<4)
1326*eef4f27bSRobert Mustacchi             #define CQTE_FLAGS_FLAGS_CQE_NOT_ARMED          (8<<4)
1327*eef4f27bSRobert Mustacchi 
1328*eef4f27bSRobert Mustacchi     u8_t cqte_pgtbl_phaddr_lo[3];
1329*eef4f27bSRobert Mustacchi     u16_t cqte_cqes_per_page;
1330*eef4f27bSRobert Mustacchi     u16_t cqte_pidx;
1331*eef4f27bSRobert Mustacchi     u16_t cqte_nx_qe_self_seq;
1332*eef4f27bSRobert Mustacchi     u16_t cqte_max_cqes;
1333*eef4f27bSRobert Mustacchi     u16_t cqte_pgtbl_pgidx;
1334*eef4f27bSRobert Mustacchi     u16_t cqte_nx_pg_qidx;
1335*eef4f27bSRobert Mustacchi     u16_t cqte_cqe_pidx;
1336*eef4f27bSRobert Mustacchi     u16_t cqte_pgtbl_npages;
1337*eef4f27bSRobert Mustacchi     u32_t cqte_cached_pte_phaddr_hi;
1338*eef4f27bSRobert Mustacchi     u32_t cqte_cached_pte_phaddr_lo;
1339*eef4f27bSRobert Mustacchi } l5_cq_table_entry_l_xi_t;
1340*eef4f27bSRobert Mustacchi 
1341*eef4f27bSRobert Mustacchi 
1342*eef4f27bSRobert Mustacchi /*
1343*eef4f27bSRobert Mustacchi  * l5_cq_table_entry select
1344*eef4f27bSRobert Mustacchi  */
1345*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
1346*eef4f27bSRobert Mustacchi     typedef l5_cq_table_entry_l_t l5_cq_table_entry_t;
1347*eef4f27bSRobert Mustacchi     typedef l5_cq_table_entry_l_xi_t l5_cq_table_entry_xi_t;
1348*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
1349*eef4f27bSRobert Mustacchi     typedef l5_cq_table_entry_b_t l5_cq_table_entry_t;
1350*eef4f27bSRobert Mustacchi     typedef l5_cq_table_entry_b_xi_t l5_cq_table_entry_xi_t;
1351*eef4f27bSRobert Mustacchi #endif
1352*eef4f27bSRobert Mustacchi 
1353*eef4f27bSRobert Mustacchi 
1354*eef4f27bSRobert Mustacchi /*
1355*eef4f27bSRobert Mustacchi  *  l5_cmd_cell_b definition
1356*eef4f27bSRobert Mustacchi  */
1357*eef4f27bSRobert Mustacchi typedef struct l5_cmd_cell_b
1358*eef4f27bSRobert Mustacchi {
1359*eef4f27bSRobert Mustacchi     u16_t l5ccell_cmd_type;
1360*eef4f27bSRobert Mustacchi 
1361*eef4f27bSRobert Mustacchi     u16_t l5ccell_wq_idx;
1362*eef4f27bSRobert Mustacchi     u8_t unused_0;
1363*eef4f27bSRobert Mustacchi     u8_t l5ccell_cmd_val;
1364*eef4f27bSRobert Mustacchi     u16_t l5ccell_distance_to_first_marker;
1365*eef4f27bSRobert Mustacchi     u32_t unused_1;
1366*eef4f27bSRobert Mustacchi     u32_t l5ccell_ddp_hdr_word1;
1367*eef4f27bSRobert Mustacchi     u32_t l5ccell_ddp_hdr_word2;
1368*eef4f27bSRobert Mustacchi     u32_t l5ccell_ddp_hdr_word3;
1369*eef4f27bSRobert Mustacchi     u32_t l5ccell_tcp_sn_first_byte;
1370*eef4f27bSRobert Mustacchi     u32_t l5ccell_tcp_sn_last_byte;
1371*eef4f27bSRobert Mustacchi } l5_cmd_cell_b_t;
1372*eef4f27bSRobert Mustacchi 
1373*eef4f27bSRobert Mustacchi 
1374*eef4f27bSRobert Mustacchi 
1375*eef4f27bSRobert Mustacchi /*
1376*eef4f27bSRobert Mustacchi  *  l5_cmd_cell_l definition
1377*eef4f27bSRobert Mustacchi  */
1378*eef4f27bSRobert Mustacchi typedef struct l5_cmd_cell_l
1379*eef4f27bSRobert Mustacchi {
1380*eef4f27bSRobert Mustacchi     u16_t l5ccell_wq_idx;
1381*eef4f27bSRobert Mustacchi     u16_t l5ccell_cmd_type;
1382*eef4f27bSRobert Mustacchi 
1383*eef4f27bSRobert Mustacchi     u16_t l5ccell_distance_to_first_marker;
1384*eef4f27bSRobert Mustacchi     u8_t l5ccell_cmd_val;
1385*eef4f27bSRobert Mustacchi     u8_t unused_0;
1386*eef4f27bSRobert Mustacchi     u32_t unused_1;
1387*eef4f27bSRobert Mustacchi     u32_t l5ccell_ddp_hdr_word1;
1388*eef4f27bSRobert Mustacchi     u32_t l5ccell_ddp_hdr_word2;
1389*eef4f27bSRobert Mustacchi     u32_t l5ccell_ddp_hdr_word3;
1390*eef4f27bSRobert Mustacchi     u32_t l5ccell_tcp_sn_first_byte;
1391*eef4f27bSRobert Mustacchi     u32_t l5ccell_tcp_sn_last_byte;
1392*eef4f27bSRobert Mustacchi } l5_cmd_cell_l_t;
1393*eef4f27bSRobert Mustacchi 
1394*eef4f27bSRobert Mustacchi 
1395*eef4f27bSRobert Mustacchi 
1396*eef4f27bSRobert Mustacchi /*
1397*eef4f27bSRobert Mustacchi  * l5_cmd_cell select
1398*eef4f27bSRobert Mustacchi  */
1399*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
1400*eef4f27bSRobert Mustacchi     typedef l5_cmd_cell_l_t l5_cmd_cell_t;
1401*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
1402*eef4f27bSRobert Mustacchi     typedef l5_cmd_cell_b_t l5_cmd_cell_t;
1403*eef4f27bSRobert Mustacchi #endif
1404*eef4f27bSRobert Mustacchi 
1405*eef4f27bSRobert Mustacchi 
1406*eef4f27bSRobert Mustacchi /*
1407*eef4f27bSRobert Mustacchi  *  l5_abuf_cell_b definition
1408*eef4f27bSRobert Mustacchi  */
1409*eef4f27bSRobert Mustacchi typedef struct l5_abuf_cell_b
1410*eef4f27bSRobert Mustacchi {
1411*eef4f27bSRobert Mustacchi     u32_t l5acell_pgtbl_phaddr_hi;
1412*eef4f27bSRobert Mustacchi     u8_t l5acell_pgtbl_phaddr_lo[3];
1413*eef4f27bSRobert Mustacchi     u8_t l5acell_flags;
1414*eef4f27bSRobert Mustacchi 
1415*eef4f27bSRobert Mustacchi     u16_t l5acell_wq_idx;
1416*eef4f27bSRobert Mustacchi     u16_t l5acell_first_page_offset;
1417*eef4f27bSRobert Mustacchi     u32_t l5acell_buffer_offset;
1418*eef4f27bSRobert Mustacchi     u16_t l5acell_rbdc_key;
1419*eef4f27bSRobert Mustacchi     u16_t l5acell_receive_length;
1420*eef4f27bSRobert Mustacchi     u32_t l5acell_buffer_length;
1421*eef4f27bSRobert Mustacchi     u32_t l5acell_tcp_sn_L_bit_segment;
1422*eef4f27bSRobert Mustacchi } l5_abuf_cell_b_t;
1423*eef4f27bSRobert Mustacchi 
1424*eef4f27bSRobert Mustacchi 
1425*eef4f27bSRobert Mustacchi 
1426*eef4f27bSRobert Mustacchi /*
1427*eef4f27bSRobert Mustacchi  *  l5_abuf_cell_b definition
1428*eef4f27bSRobert Mustacchi  */
1429*eef4f27bSRobert Mustacchi typedef struct l5_abuf_cell_b_xi
1430*eef4f27bSRobert Mustacchi {
1431*eef4f27bSRobert Mustacchi     u32_t l5acell_pgtbl_phaddr_hi;
1432*eef4f27bSRobert Mustacchi     u8_t l5acell_pgtbl_phaddr_lo[3];
1433*eef4f27bSRobert Mustacchi     u8_t l5acell_flags;
1434*eef4f27bSRobert Mustacchi         #define L5ACELL_FLAGS_REGION_PAGE_SIZE              (0xf<<0)
1435*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_256      (0<<0)
1436*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_512      (1<<0)
1437*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_1K       (2<<0)
1438*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_2K       (3<<0)
1439*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_4K       (4<<0)
1440*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_8K       (5<<0)
1441*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_16K      (6<<0)
1442*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_32K      (7<<0)
1443*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_64K      (8<<0)
1444*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_128K     (9<<0)
1445*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_256K     (10<<0)
1446*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_512K     (11<<0)
1447*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_1M       (12<<0)
1448*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_2M       (13<<0)
1449*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_4M       (14<<0)
1450*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_8M       (15<<0)
1451*eef4f27bSRobert Mustacchi         #define L5ACELL_FLAGS_ABUF_FLAGS                    (0xf<<4)
1452*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_ABUF_UNDEFINED  (0<<4)
1453*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_L_BIT_RCVD     (1<<4)
1454*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_GEN_EVT        (2<<4)
1455*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_INV_STAG       (4<<4)
1456*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_COMP_ERROR     (8<<4)
1457*eef4f27bSRobert Mustacchi 
1458*eef4f27bSRobert Mustacchi     u16_t l5acell_wq_idx;
1459*eef4f27bSRobert Mustacchi     u16_t l5acell_first_page_offset;
1460*eef4f27bSRobert Mustacchi     u32_t l5acell_buffer_offset;
1461*eef4f27bSRobert Mustacchi     u16_t l5acell_rbdc_key;
1462*eef4f27bSRobert Mustacchi     u16_t l5acell_receive_length;
1463*eef4f27bSRobert Mustacchi     u32_t l5acell_buffer_length;
1464*eef4f27bSRobert Mustacchi     u32_t l5acell_tcp_sn_L_bit_segment;
1465*eef4f27bSRobert Mustacchi } l5_abuf_cell_b_xi_t;
1466*eef4f27bSRobert Mustacchi 
1467*eef4f27bSRobert Mustacchi 
1468*eef4f27bSRobert Mustacchi /*
1469*eef4f27bSRobert Mustacchi  *  l5_abuf_cell_l definition
1470*eef4f27bSRobert Mustacchi  */
1471*eef4f27bSRobert Mustacchi typedef struct l5_abuf_cell_l
1472*eef4f27bSRobert Mustacchi {
1473*eef4f27bSRobert Mustacchi     u32_t l5acell_pgtbl_phaddr_hi;
1474*eef4f27bSRobert Mustacchi     u8_t l5acell_flags;
1475*eef4f27bSRobert Mustacchi 
1476*eef4f27bSRobert Mustacchi     u8_t l5acell_pgtbl_phaddr_lo[3];
1477*eef4f27bSRobert Mustacchi     u16_t l5acell_first_page_offset;
1478*eef4f27bSRobert Mustacchi     u16_t l5acell_wq_idx;
1479*eef4f27bSRobert Mustacchi     u32_t l5acell_buffer_offset;
1480*eef4f27bSRobert Mustacchi     u16_t l5acell_receive_length;
1481*eef4f27bSRobert Mustacchi     u16_t l5acell_rbdc_key;
1482*eef4f27bSRobert Mustacchi     u32_t l5acell_buffer_length;
1483*eef4f27bSRobert Mustacchi     u32_t l5acell_tcp_sn_L_bit_segment;
1484*eef4f27bSRobert Mustacchi } l5_abuf_cell_l_t;
1485*eef4f27bSRobert Mustacchi 
1486*eef4f27bSRobert Mustacchi 
1487*eef4f27bSRobert Mustacchi 
1488*eef4f27bSRobert Mustacchi /*
1489*eef4f27bSRobert Mustacchi  *  l5_abuf_cell_l definition
1490*eef4f27bSRobert Mustacchi  */
1491*eef4f27bSRobert Mustacchi typedef struct l5_abuf_cell_l_xi
1492*eef4f27bSRobert Mustacchi {
1493*eef4f27bSRobert Mustacchi     u32_t l5acell_pgtbl_phaddr_hi;
1494*eef4f27bSRobert Mustacchi     u8_t l5acell_flags;
1495*eef4f27bSRobert Mustacchi         #define L5ACELL_FLAGS_REGION_PAGE_SIZE              (0xf<<0)
1496*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_256      (0<<0)
1497*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_512      (1<<0)
1498*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_1K       (2<<0)
1499*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_2K       (3<<0)
1500*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_4K       (4<<0)
1501*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_8K       (5<<0)
1502*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_16K      (6<<0)
1503*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_32K      (7<<0)
1504*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_64K      (8<<0)
1505*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_128K     (9<<0)
1506*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_256K     (10<<0)
1507*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_512K     (11<<0)
1508*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_1M       (12<<0)
1509*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_2M       (13<<0)
1510*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_4M       (14<<0)
1511*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_REGION_PAGE_SIZE_8M       (15<<0)
1512*eef4f27bSRobert Mustacchi         #define L5ACELL_FLAGS_ABUF_FLAGS                    (0xf<<4)
1513*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_ABUF_UNDEFINED  (0<<4)
1514*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_L_BIT_RCVD     (1<<4)
1515*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_GEN_EVT        (2<<4)
1516*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_INV_STAG       (4<<4)
1517*eef4f27bSRobert Mustacchi             #define L5ACELL_FLAGS_ABUF_FLAGS_COMP_ERROR     (8<<4)
1518*eef4f27bSRobert Mustacchi 
1519*eef4f27bSRobert Mustacchi     u8_t l5acell_pgtbl_phaddr_lo[3];
1520*eef4f27bSRobert Mustacchi     u16_t l5acell_first_page_offset;
1521*eef4f27bSRobert Mustacchi     u16_t l5acell_wq_idx;
1522*eef4f27bSRobert Mustacchi     u32_t l5acell_buffer_offset;
1523*eef4f27bSRobert Mustacchi     u16_t l5acell_receive_length;
1524*eef4f27bSRobert Mustacchi     u16_t l5acell_rbdc_key;
1525*eef4f27bSRobert Mustacchi     u32_t l5acell_buffer_length;
1526*eef4f27bSRobert Mustacchi     u32_t l5acell_tcp_sn_L_bit_segment;
1527*eef4f27bSRobert Mustacchi } l5_abuf_cell_l_xi_t;
1528*eef4f27bSRobert Mustacchi 
1529*eef4f27bSRobert Mustacchi 
1530*eef4f27bSRobert Mustacchi /*
1531*eef4f27bSRobert Mustacchi  * l5_abuf_cell select
1532*eef4f27bSRobert Mustacchi  */
1533*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
1534*eef4f27bSRobert Mustacchi     typedef l5_abuf_cell_l_t l5_abuf_cell_t;
1535*eef4f27bSRobert Mustacchi     typedef l5_abuf_cell_l_xi_t l5_abuf_cell_xi_t;
1536*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
1537*eef4f27bSRobert Mustacchi     typedef l5_abuf_cell_b_t l5_abuf_cell_t;
1538*eef4f27bSRobert Mustacchi     typedef l5_abuf_cell_b_xi_t l5_abuf_cell_xi_t;
1539*eef4f27bSRobert Mustacchi #endif
1540*eef4f27bSRobert Mustacchi 
1541*eef4f27bSRobert Mustacchi 
1542*eef4f27bSRobert Mustacchi /*
1543*eef4f27bSRobert Mustacchi  *  l5_irrq_entry_b definition
1544*eef4f27bSRobert Mustacchi  */
1545*eef4f27bSRobert Mustacchi typedef struct l5_irrq_entry_b
1546*eef4f27bSRobert Mustacchi {
1547*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_stag;
1548*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_to_hi;
1549*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_to_lo;
1550*eef4f27bSRobert Mustacchi     u32_t irrqe_msg_length;
1551*eef4f27bSRobert Mustacchi     u32_t irrqe_source_stag;
1552*eef4f27bSRobert Mustacchi     u32_t irrqe_source_to_hi;
1553*eef4f27bSRobert Mustacchi     u32_t irrqe_source_to_lo;
1554*eef4f27bSRobert Mustacchi } l5_irrq_entry_b_t;
1555*eef4f27bSRobert Mustacchi 
1556*eef4f27bSRobert Mustacchi 
1557*eef4f27bSRobert Mustacchi 
1558*eef4f27bSRobert Mustacchi /*
1559*eef4f27bSRobert Mustacchi  *  l5_irrq_entry_b definition
1560*eef4f27bSRobert Mustacchi  */
1561*eef4f27bSRobert Mustacchi typedef struct l5_irrq_entry_b_xi
1562*eef4f27bSRobert Mustacchi {
1563*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_stag;
1564*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_to_hi;
1565*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_to_lo;
1566*eef4f27bSRobert Mustacchi     u32_t irrqe_msg_length;
1567*eef4f27bSRobert Mustacchi     u32_t irrqe_source_stag;
1568*eef4f27bSRobert Mustacchi     u32_t irrqe_source_to_hi;
1569*eef4f27bSRobert Mustacchi     u32_t irrqe_source_to_lo;
1570*eef4f27bSRobert Mustacchi } l5_irrq_entry_b_xi_t;
1571*eef4f27bSRobert Mustacchi 
1572*eef4f27bSRobert Mustacchi 
1573*eef4f27bSRobert Mustacchi /*
1574*eef4f27bSRobert Mustacchi  *  l5_irrq_entry_l definition
1575*eef4f27bSRobert Mustacchi  */
1576*eef4f27bSRobert Mustacchi typedef struct l5_irrq_entry_l
1577*eef4f27bSRobert Mustacchi {
1578*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_stag;
1579*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_to_hi;
1580*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_to_lo;
1581*eef4f27bSRobert Mustacchi     u32_t irrqe_msg_length;
1582*eef4f27bSRobert Mustacchi     u32_t irrqe_source_stag;
1583*eef4f27bSRobert Mustacchi     u32_t irrqe_source_to_hi;
1584*eef4f27bSRobert Mustacchi     u32_t irrqe_source_to_lo;
1585*eef4f27bSRobert Mustacchi } l5_irrq_entry_l_t;
1586*eef4f27bSRobert Mustacchi 
1587*eef4f27bSRobert Mustacchi 
1588*eef4f27bSRobert Mustacchi 
1589*eef4f27bSRobert Mustacchi /*
1590*eef4f27bSRobert Mustacchi  *  l5_irrq_entry_l definition
1591*eef4f27bSRobert Mustacchi  */
1592*eef4f27bSRobert Mustacchi typedef struct l5_irrq_entry_l_xi
1593*eef4f27bSRobert Mustacchi {
1594*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_stag;
1595*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_to_hi;
1596*eef4f27bSRobert Mustacchi     u32_t irrqe_sink_to_lo;
1597*eef4f27bSRobert Mustacchi     u32_t irrqe_msg_length;
1598*eef4f27bSRobert Mustacchi     u32_t irrqe_source_stag;
1599*eef4f27bSRobert Mustacchi     u32_t irrqe_source_to_hi;
1600*eef4f27bSRobert Mustacchi     u32_t irrqe_source_to_lo;
1601*eef4f27bSRobert Mustacchi } l5_irrq_entry_l_xi_t;
1602*eef4f27bSRobert Mustacchi 
1603*eef4f27bSRobert Mustacchi 
1604*eef4f27bSRobert Mustacchi /*
1605*eef4f27bSRobert Mustacchi  * l5_irrq_entry select
1606*eef4f27bSRobert Mustacchi  */
1607*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
1608*eef4f27bSRobert Mustacchi     typedef l5_irrq_entry_l_t l5_irrq_entry_t;
1609*eef4f27bSRobert Mustacchi     typedef l5_irrq_entry_l_xi_t l5_irrq_entry_xi_t;
1610*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
1611*eef4f27bSRobert Mustacchi     typedef l5_irrq_entry_b_t l5_irrq_entry_t;
1612*eef4f27bSRobert Mustacchi     typedef l5_irrq_entry_b_xi_t l5_irrq_entry_xi_t;
1613*eef4f27bSRobert Mustacchi #endif
1614*eef4f27bSRobert Mustacchi 
1615*eef4f27bSRobert Mustacchi 
1616*eef4f27bSRobert Mustacchi /*
1617*eef4f27bSRobert Mustacchi  *  l5_orrq_entry_b definition
1618*eef4f27bSRobert Mustacchi  */
1619*eef4f27bSRobert Mustacchi typedef struct l5_orrq_entry_b
1620*eef4f27bSRobert Mustacchi {
1621*eef4f27bSRobert Mustacchi     u32_t orrqe_tcp_sn_read_rsp_L_bit_segment;
1622*eef4f27bSRobert Mustacchi     u32_t orrqe_source_to_hi;
1623*eef4f27bSRobert Mustacchi     u32_t orrqe_source_to_low;
1624*eef4f27bSRobert Mustacchi } l5_orrq_entry_b_t;
1625*eef4f27bSRobert Mustacchi 
1626*eef4f27bSRobert Mustacchi 
1627*eef4f27bSRobert Mustacchi 
1628*eef4f27bSRobert Mustacchi /*
1629*eef4f27bSRobert Mustacchi  *  l5_orrq_entry_b definition
1630*eef4f27bSRobert Mustacchi  */
1631*eef4f27bSRobert Mustacchi typedef struct l5_orrq_entry_b_xi
1632*eef4f27bSRobert Mustacchi {
1633*eef4f27bSRobert Mustacchi     u32_t orrqe_tcp_sn_read_rsp_L_bit_segment;
1634*eef4f27bSRobert Mustacchi     u32_t orrqe_source_to_hi;
1635*eef4f27bSRobert Mustacchi     u32_t orrqe_source_to_low;
1636*eef4f27bSRobert Mustacchi } l5_orrq_entry_b_xi_t;
1637*eef4f27bSRobert Mustacchi 
1638*eef4f27bSRobert Mustacchi 
1639*eef4f27bSRobert Mustacchi /*
1640*eef4f27bSRobert Mustacchi  *  l5_orrq_entry_l definition
1641*eef4f27bSRobert Mustacchi  */
1642*eef4f27bSRobert Mustacchi typedef struct l5_orrq_entry_l
1643*eef4f27bSRobert Mustacchi {
1644*eef4f27bSRobert Mustacchi     u32_t orrqe_tcp_sn_read_rsp_L_bit_segment;
1645*eef4f27bSRobert Mustacchi     u32_t orrqe_source_to_hi;
1646*eef4f27bSRobert Mustacchi     u32_t orrqe_source_to_low;
1647*eef4f27bSRobert Mustacchi } l5_orrq_entry_l_t;
1648*eef4f27bSRobert Mustacchi 
1649*eef4f27bSRobert Mustacchi 
1650*eef4f27bSRobert Mustacchi 
1651*eef4f27bSRobert Mustacchi /*
1652*eef4f27bSRobert Mustacchi  *  l5_orrq_entry_l definition
1653*eef4f27bSRobert Mustacchi  */
1654*eef4f27bSRobert Mustacchi typedef struct l5_orrq_entry_l_xi
1655*eef4f27bSRobert Mustacchi {
1656*eef4f27bSRobert Mustacchi     u32_t orrqe_tcp_sn_read_rsp_L_bit_segment;
1657*eef4f27bSRobert Mustacchi     u32_t orrqe_source_to_hi;
1658*eef4f27bSRobert Mustacchi     u32_t orrqe_source_to_low;
1659*eef4f27bSRobert Mustacchi } l5_orrq_entry_l_xi_t;
1660*eef4f27bSRobert Mustacchi 
1661*eef4f27bSRobert Mustacchi 
1662*eef4f27bSRobert Mustacchi /*
1663*eef4f27bSRobert Mustacchi  * l5_orrq_entry select
1664*eef4f27bSRobert Mustacchi  */
1665*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
1666*eef4f27bSRobert Mustacchi     typedef l5_orrq_entry_l_t l5_orrq_entry_t;
1667*eef4f27bSRobert Mustacchi     typedef l5_orrq_entry_l_xi_t l5_orrq_entry_xi_t;
1668*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
1669*eef4f27bSRobert Mustacchi     typedef l5_orrq_entry_b_t l5_orrq_entry_t;
1670*eef4f27bSRobert Mustacchi     typedef l5_orrq_entry_b_xi_t l5_orrq_entry_xi_t;
1671*eef4f27bSRobert Mustacchi #endif
1672*eef4f27bSRobert Mustacchi 
1673*eef4f27bSRobert Mustacchi 
1674*eef4f27bSRobert Mustacchi /*
1675*eef4f27bSRobert Mustacchi  *  l5_context_b definition
1676*eef4f27bSRobert Mustacchi  */
1677*eef4f27bSRobert Mustacchi typedef struct l5_context_b
1678*eef4f27bSRobert Mustacchi {
1679*eef4f27bSRobert Mustacchi     u8_t l5ctx_type;
1680*eef4f27bSRobert Mustacchi 
1681*eef4f27bSRobert Mustacchi     u8_t l5ctx_size;
1682*eef4f27bSRobert Mustacchi     u16_t l5ctx_cq_cidx;
1683*eef4f27bSRobert Mustacchi     u8_t l5ctx_gen_bd_max;
1684*eef4f27bSRobert Mustacchi     u8_t l5ctx_oubits;
1685*eef4f27bSRobert Mustacchi 
1686*eef4f27bSRobert Mustacchi     u16_t l5ctx_sq_pidx;
1687*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_pgid;
1688*eef4f27bSRobert Mustacchi     u16_t l5ctx_rq_pidx;
1689*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_timer1;
1690*eef4f27bSRobert Mustacchi 
1691*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer2;
1692*eef4f27bSRobert Mustacchi 
1693*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer3;
1694*eef4f27bSRobert Mustacchi 
1695*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer4;
1696*eef4f27bSRobert Mustacchi 
1697*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer5;
1698*eef4f27bSRobert Mustacchi 
1699*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_wl1;
1700*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_wl2;
1701*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_ttl;
1702*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tos;
1703*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_dack;
1704*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_modes;
1705*eef4f27bSRobert Mustacchi 
1706*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_max_adv_win;
1707*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_timer;
1708*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ip_src;
1709*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ip_dst;
1710*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_iphdr_nbytes;
1711*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_snd_seg_scale;
1712*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_rcv_seg_scale;
1713*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tcp_hlen;
1714*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_src_port;
1715*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_dst_port;
1716*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_mss;
1717*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_flags;
1718*eef4f27bSRobert Mustacchi 
1719*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_state;
1720*eef4f27bSRobert Mustacchi 
1721*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_rcv_next;
1722*eef4f27bSRobert Mustacchi     u32_t l5ctx_last_ack_sent;
1723*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_rcv_win_seq;
1724*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_una;
1725*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_next;
1726*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_max;
1727*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_win;
1728*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_cwin;
1729*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_tstamp;
1730*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ssthresh;
1731*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_sm_rtt;
1732*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_sm_delta;
1733*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_max_snd_win;
1734*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_tsch_snd_next;
1735*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_slot_size;
1736*eef4f27bSRobert Mustacchi 
1737*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_cp_cmd;
1738*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_cmd;
1739*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_cons_retx_num;
1740*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_xnum;
1741*eef4f27bSRobert Mustacchi 
1742*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_num_dupack;
1743*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tx_protocol_flags;
1744*eef4f27bSRobert Mustacchi 
1745*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_prod_retx_num;
1746*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_cons_retx_num;
1747*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_comp_cons_retx_num;
1748*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_num_retx;
1749*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_upload_reason;
1750*eef4f27bSRobert Mustacchi 
1751*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_txp_cmd;
1752*eef4f27bSRobert Mustacchi     u32_t unused_0;
1753*eef4f27bSRobert Mustacchi     tcp_context_cmd_cell_b_te_t l5ctx_cmd[3];
1754*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_max_wqes;
1755*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_fw_qidx;
1756*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_nx_pg_qidx;
1757*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_pgtbl_pgidx;
1758*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_wqes_per_page;
1759*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_num_pages;
1760*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_pidx;
1761*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_cidx;
1762*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_max_cached_wqes;
1763*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_flags;
1764*eef4f27bSRobert Mustacchi 
1765*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_pgtbl_phaddr_hi;
1766*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_pgtbl_phaddr_lo[3];
1767*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_read_rsp_wait;
1768*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_cached_pte_phaddr_hi;
1769*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_cached_pte_phaddr_lo;
1770*eef4f27bSRobert Mustacchi     l5_cmd_cell_b_t l5ctx_snd_q_cmd[3];
1771*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_max_wqes;
1772*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_fw_qidx;
1773*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_nx_pg_qidx;
1774*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_pgtbl_pgidx;
1775*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_wqes_per_page;
1776*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_num_pages;
1777*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_pidx;
1778*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_rxp_cidx;
1779*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_com_cidx;
1780*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_flags;
1781*eef4f27bSRobert Mustacchi 
1782*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_pgtbl_phaddr_hi;
1783*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_pgtbl_phaddr_lo[3];
1784*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_qp_ou_state;
1785*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_QP_OU_STATE_UPLOADED            (1<<0)
1786*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_QP_OU_STATE_OFFLOADED           (1<<1)
1787*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_QP_OU_STATE_UPLOAD_REQ          (1<<2)
1788*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_QP_OU_STATE_OFFLOAD_REQ         (1<<3)
1789*eef4f27bSRobert Mustacchi 
1790*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_cached_pte_phaddr_hi;
1791*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_cached_pte_phaddr_lo;
1792*eef4f27bSRobert Mustacchi     l5_abuf_cell_b_t l5ctx_rcv_q_abuf[2];
1793*eef4f27bSRobert Mustacchi     u32_t l5ctx_cq_cid;
1794*eef4f27bSRobert Mustacchi     u32_t l5ctx_curr_send_msn;
1795*eef4f27bSRobert Mustacchi     u32_t l5ctx_curr_rdma_read_msn;
1796*eef4f27bSRobert Mustacchi     u16_t l5ctx_pd;
1797*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_path_op_state;
1798*eef4f27bSRobert Mustacchi 
1799*eef4f27bSRobert Mustacchi     u8_t l5ctx_ird;
1800*eef4f27bSRobert Mustacchi     u32_t l5ctx_tx_initial_tcp_sn;
1801*eef4f27bSRobert Mustacchi     u16_t l5ctx_tsch_mult_value;
1802*eef4f27bSRobert Mustacchi     u8_t l5ctx_null_cmd_cell_pidx;
1803*eef4f27bSRobert Mustacchi     u8_t l5ctx_null_cmd_cell_cidx;
1804*eef4f27bSRobert Mustacchi     l5_orrq_entry_b_t l5ctx_orrq[1];
1805*eef4f27bSRobert Mustacchi     l5_irrq_entry_b_t l5ctx_irrq[1];
1806*eef4f27bSRobert Mustacchi     u8_t l5ctx_miq_index;
1807*eef4f27bSRobert Mustacchi     u8_t l5ctx_rx_comp_flags;
1808*eef4f27bSRobert Mustacchi 
1809*eef4f27bSRobert Mustacchi     u8_t l5ctx_qp_flags;
1810*eef4f27bSRobert Mustacchi 
1811*eef4f27bSRobert Mustacchi     u8_t l5ctx_upload_flag;
1812*eef4f27bSRobert Mustacchi 
1813*eef4f27bSRobert Mustacchi     u8_t l5ctx_upload_rxp;
1814*eef4f27bSRobert Mustacchi 
1815*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_read_resp_segs_w_L_bit;
1816*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_send_msg_segs_w_L_bit;
1817*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_read_request_msgs;
1818*eef4f27bSRobert Mustacchi     u32_t l5ctx_high_tcp_ack_sn_rcvd;
1819*eef4f27bSRobert Mustacchi     u32_t l5ctx_rx_initial_tcp_sn;
1820*eef4f27bSRobert Mustacchi     u32_t l5ctx_send_msg_high_msn_completed;
1821*eef4f27bSRobert Mustacchi     u32_t l5ctx_read_req_high_msn_queued;
1822*eef4f27bSRobert Mustacchi     u32_t l5ctx_rsvd_l4_hole_mgmt[3];
1823*eef4f27bSRobert Mustacchi     u16_t l5ctx_cam_index;
1824*eef4f27bSRobert Mustacchi     u16_t l5ctx_offload_flag;
1825*eef4f27bSRobert Mustacchi } l5_context_b_t;
1826*eef4f27bSRobert Mustacchi 
1827*eef4f27bSRobert Mustacchi 
1828*eef4f27bSRobert Mustacchi 
1829*eef4f27bSRobert Mustacchi /*
1830*eef4f27bSRobert Mustacchi  *  l5_context_b definition
1831*eef4f27bSRobert Mustacchi  */
1832*eef4f27bSRobert Mustacchi typedef struct l5_context_b_xi
1833*eef4f27bSRobert Mustacchi {
1834*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_tsch_snd_next;
1835*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_max;
1836*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_cp_cmd;
1837*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_cmd;
1838*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_cons_retx_num;
1839*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_xnum;
1840*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TSCH_XNUM_VAL                     (0x7f<<0)
1841*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TSCH_XNUM_L4                      (1<<7)
1842*eef4f27bSRobert Mustacchi 
1843*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_pgid;
1844*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_PGID_VAL                          (0x3fff<<0)
1845*eef4f27bSRobert Mustacchi 
1846*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_prod_retx_num;
1847*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_cons_retx_num;
1848*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_l2_slot_size;
1849*eef4f27bSRobert Mustacchi     u8_t unused_0;
1850*eef4f27bSRobert Mustacchi     u16_t unused_1;
1851*eef4f27bSRobert Mustacchi     u32_t unused_2;
1852*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_ttl;
1853*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tos;
1854*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_dack;
1855*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_modes;
1856*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_RST_INDICATED               (1<<0)
1857*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_DISC_BD                     (1<<1)
1858*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_UPLOAD_INITED               (1<<2)
1859*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_RMT_DISC                    (1<<3)
1860*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_PG_INVALIDATED              (1<<4)
1861*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_ABORT_PENDING               (1<<5)
1862*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_DISC_PENDING                (1<<6)
1863*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_SS                          (1<<7)
1864*eef4f27bSRobert Mustacchi 
1865*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_max_adv_win;
1866*eef4f27bSRobert Mustacchi     u32_t l5ctx_timer;
1867*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ip_src;
1868*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ip_dst;
1869*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_iphdr_nbytes;
1870*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_snd_seg_scale;
1871*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_rcv_seg_scale;
1872*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tcp_hlen;
1873*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_src_port;
1874*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_dst_port;
1875*eef4f27bSRobert Mustacchi     u32_t l5ctx_tx_initial_tcp_sn;
1876*eef4f27bSRobert Mustacchi     u8_t l5ctx_upload_flag;
1877*eef4f27bSRobert Mustacchi         #define L5CTX_UPLOAD_FLAG_TXP                       (1<<0)
1878*eef4f27bSRobert Mustacchi         #define L5CTX_UPLOAD_FLAG_TXP_COM                   (1<<1)
1879*eef4f27bSRobert Mustacchi     u8_t unused_3;
1880*eef4f27bSRobert Mustacchi     u16_t unused_4;
1881*eef4f27bSRobert Mustacchi     u32_t unused_5[17];
1882*eef4f27bSRobert Mustacchi 
1883*eef4f27bSRobert Mustacchi     u8_t l5ctx_type;
1884*eef4f27bSRobert Mustacchi         #define L5CTX_TYPE_TYPE                             (0xf<<4)
1885*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_EMPTY                   (0<<4)
1886*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_L2                      (1<<4)
1887*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_TCP                     (2<<4)
1888*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_L5                      (3<<4)
1889*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_L2_BD_CHN               (4<<4)
1890*eef4f27bSRobert Mustacchi 
1891*eef4f27bSRobert Mustacchi     u8_t l5ctx_size;
1892*eef4f27bSRobert Mustacchi         #define L5CTX_SIZE_ARM_CQ                           (1<<0)
1893*eef4f27bSRobert Mustacchi 
1894*eef4f27bSRobert Mustacchi     u16_t l5ctx_cq_cidx;
1895*eef4f27bSRobert Mustacchi     u8_t l5ctx_gen_bd_max;
1896*eef4f27bSRobert Mustacchi     u8_t l5ctx_oubits;
1897*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_ACTIVATE                       (1<<0)
1898*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_CP_UPLOAD                      (1<<1)
1899*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_RXP_UPLOAD                     (1<<2)
1900*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_TXP_UPLOAD                     (1<<3)
1901*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_COM_RX_UPLOAD                  (1<<4)
1902*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_COM_TX_UPLOAD                  (1<<5)
1903*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_CP_UPLOAD_COMP                 (1<<6)
1904*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_HOST_ACK                       (1<<7)
1905*eef4f27bSRobert Mustacchi 
1906*eef4f27bSRobert Mustacchi     u16_t l5ctx_sq_pidx;
1907*eef4f27bSRobert Mustacchi     u16_t unused_6;
1908*eef4f27bSRobert Mustacchi     u16_t l5ctx_rq_pidx;
1909*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_timer1;
1910*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER1_DISABLE                    (1UL<<0)
1911*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER1_VALUE                      (0x7fffffffL<<1)
1912*eef4f27bSRobert Mustacchi 
1913*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer2;
1914*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER2_DISABLE                    (1<<0)
1915*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER2_VALUE                      (0x7fff<<1)
1916*eef4f27bSRobert Mustacchi 
1917*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer3;
1918*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER3_DISABLE                    (1<<0)
1919*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER3_VALUE                      (0x7fff<<1)
1920*eef4f27bSRobert Mustacchi 
1921*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer4;
1922*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER4_DISABLE                    (1<<0)
1923*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER4_VALUE                      (0x7fff<<1)
1924*eef4f27bSRobert Mustacchi 
1925*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer5;
1926*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER5_DISABLE                    (1<<0)
1927*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER5_VALUE                      (0x7fff<<1)
1928*eef4f27bSRobert Mustacchi 
1929*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_slot_size;
1930*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_SLOT_SIZE_SLOT_SIZE               (0xffffffL<<0)
1931*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_SLOT_SIZE_CMD_MAX                 (0x7fL<<24)
1932*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_SLOT_SIZE_STOP                    (1UL<<31)
1933*eef4f27bSRobert Mustacchi 
1934*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_cwin;
1935*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_win;
1936*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_num_dupack;
1937*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tx_protocol_flags;
1938*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_TIMER_DELAY_ACK  (1<<0)
1939*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_UPLOAD          (1<<1)
1940*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK       (1<<2)
1941*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_LAST_ACK        (1<<3)
1942*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_LAST_RST        (1<<4)
1943*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_RST       (1<<5)
1944*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK_MINUS  (1<<6)
1945*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_TSCH_WA         (1<<7)
1946*eef4f27bSRobert Mustacchi 
1947*eef4f27bSRobert Mustacchi     u8_t l5ctx_upload_rxp;
1948*eef4f27bSRobert Mustacchi         #define L5CTX_UPLOAD_RXP_COM                        (1<<0)
1949*eef4f27bSRobert Mustacchi 
1950*eef4f27bSRobert Mustacchi     u8_t l5ctx_qp_ou_state;
1951*eef4f27bSRobert Mustacchi         #define L5CTX_QP_OU_STATE_UPLOADED                  (1<<0)
1952*eef4f27bSRobert Mustacchi         #define L5CTX_QP_OU_STATE_OFFLOADED                 (1<<1)
1953*eef4f27bSRobert Mustacchi         #define L5CTX_QP_OU_STATE_UPLOAD_REQ                (1<<2)
1954*eef4f27bSRobert Mustacchi         #define L5CTX_QP_OU_STATE_OFFLOAD_REQ               (1<<3)
1955*eef4f27bSRobert Mustacchi     u32_t unused_7;
1956*eef4f27bSRobert Mustacchi 
1957*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_mss;
1958*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_flags;
1959*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_NO_DELAY_ACK                (1<<0)
1960*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_KEEP_ALIVE                  (1<<1)
1961*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_NAGLE                       (1<<2)
1962*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_TIME_STAMP                  (1<<3)
1963*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_SACK                        (1<<4)
1964*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_SEG_SCALING                 (1<<5)
1965*eef4f27bSRobert Mustacchi 
1966*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_state;
1967*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_STATE_VALUE                       (0xff<<0)
1968*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_UNDEFINED         (0<<0)
1969*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_LISTEN            (2<<0)
1970*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_SYN_SENT          (4<<0)
1971*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_SYN_RECV          (6<<0)
1972*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_CLOSE_WAIT        (8<<0)
1973*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_ESTABLISHED       (10<<0)
1974*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_FIN_WAIT1         (12<<0)
1975*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_FIN_WAIT2         (14<<0)
1976*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_TIME_WAIT         (16<<0)
1977*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_CLOSE             (18<<0)
1978*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_LAST_ACK          (20<<0)
1979*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_CLOSING           (22<<0)
1980*eef4f27bSRobert Mustacchi 
1981*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_rcv_next;
1982*eef4f27bSRobert Mustacchi     u32_t l5ctx_last_ack_sent;
1983*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_rcv_win_seq;
1984*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_una;
1985*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_next;
1986*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_tstamp;
1987*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ssthresh;
1988*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_sm_rtt;
1989*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_sm_delta;
1990*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_max_snd_win;
1991*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_comp_cons_retx_num;
1992*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_num_retx;
1993*eef4f27bSRobert Mustacchi     u8_t unused_8;
1994*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_txp_cmd;
1995*eef4f27bSRobert Mustacchi     u32_t unused_9;
1996*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_max_cached_wqes;
1997*eef4f27bSRobert Mustacchi     u8_t l5ctx_null_cmd_cell_pidx;
1998*eef4f27bSRobert Mustacchi     u8_t l5ctx_null_cmd_cell_cidx;
1999*eef4f27bSRobert Mustacchi     u8_t l5ctx_qp_flags;
2000*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_QP_VALID                     (1<<0)
2001*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_SUPPORTS_LAZY_WQES           (1<<1)
2002*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_INBOUND_RDMA_READ_DISABLED   (1<<2)
2003*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_INBOUND_RDMA_WRITE_DISABLED  (1<<3)
2004*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_WINDOW_BINDS_ENABLED         (1<<4)
2005*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_LOCAL_INVALIDATE_IN_PROGRESS  (1<<5)
2006*eef4f27bSRobert Mustacchi 
2007*eef4f27bSRobert Mustacchi     l5_orrq_entry_b_xi_t l5ctx_orrq[1];
2008*eef4f27bSRobert Mustacchi     u32_t l5ctx_cq_cid;
2009*eef4f27bSRobert Mustacchi     u32_t unused_10[4];
2010*eef4f27bSRobert Mustacchi     u32_t l5ctx_rdma_crc;
2011*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_wl1;
2012*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_wl2;
2013*eef4f27bSRobert Mustacchi     u16_t unused_11;
2014*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_upload_reason;
2015*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_KEEP_ALIVE          (1<<0)
2016*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_FIN                 (1<<1)
2017*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_URG                 (1<<2)
2018*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_FRAGMENT            (1<<3)
2019*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_IP_OPTION           (1<<4)
2020*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_RST                 (1<<5)
2021*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_SYN                 (1<<6)
2022*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_TIMEOUT             (1<<7)
2023*eef4f27bSRobert Mustacchi     u8_t unused_12;
2024*eef4f27bSRobert Mustacchi 
2025*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_offload_seq;
2026*eef4f27bSRobert Mustacchi     u32_t l5ctx_pg_cwin;
2027*eef4f27bSRobert Mustacchi     u32_t l5ctx_high_tcp_ack_sn_rcvd;
2028*eef4f27bSRobert Mustacchi     u16_t l5ctx_pd;
2029*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_cidx;
2030*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_pidx;
2031*eef4f27bSRobert Mustacchi     u8_t l5ctx_read_rsp_wait;
2032*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_flags;
2033*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE                 (0xf<<0)
2034*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_256         (0<<0)
2035*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_512         (1<<0)
2036*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_1K          (2<<0)
2037*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_2K          (3<<0)
2038*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_4K          (4<<0)
2039*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_8K          (5<<0)
2040*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_16K         (6<<0)
2041*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_32K         (7<<0)
2042*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_64K         (8<<0)
2043*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_128K        (9<<0)
2044*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_256K        (10<<0)
2045*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_512K        (11<<0)
2046*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_1M          (12<<0)
2047*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_2M          (13<<0)
2048*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE                (0xf<<4)
2049*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_1          (0<<4)
2050*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_2          (1<<4)
2051*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_4          (2<<4)
2052*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_8          (3<<4)
2053*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_16         (4<<4)
2054*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_32         (5<<4)
2055*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_64         (6<<4)
2056*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_128        (7<<4)
2057*eef4f27bSRobert Mustacchi 
2058*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_pidx;
2059*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_rxp_cidx;
2060*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_com_cidx;
2061*eef4f27bSRobert Mustacchi     u8_t l5ctx_ird;
2062*eef4f27bSRobert Mustacchi     u8_t l5ctx_rx_comp_flags;
2063*eef4f27bSRobert Mustacchi         #define L5CTX_RX_COMP_FLAGS_TCP_HOLE_EXISTS         (1<<0)
2064*eef4f27bSRobert Mustacchi         #define L5CTX_RX_COMP_FLAGS_MARKER_IN_ISLAND        (1<<1)
2065*eef4f27bSRobert Mustacchi         #define L5CTX_RX_COMP_FLAGS_READ_REQ_OUTSTANDING    (1<<2)
2066*eef4f27bSRobert Mustacchi         #define L5CTX_RX_COMP_FLAGS_TCP_ISLAND_CREATED      (1<<3)
2067*eef4f27bSRobert Mustacchi 
2068*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_read_resp_segs_w_L_bit;
2069*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_send_msg_segs_w_L_bit;
2070*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_read_request_msgs;
2071*eef4f27bSRobert Mustacchi     u8_t l5ctx_miq_index;
2072*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_path_op_state;
2073*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_PATH_OP_STATE_OPERATIONAL         (1<<0)
2074*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_PATH_OP_STATE_BYPASS              (1<<1)
2075*eef4f27bSRobert Mustacchi 
2076*eef4f27bSRobert Mustacchi     u32_t l5ctx_send_msg_high_msn_completed;
2077*eef4f27bSRobert Mustacchi     u32_t l5ctx_read_req_high_msn_queued;
2078*eef4f27bSRobert Mustacchi     u32_t l5ctx_rx_initial_tcp_sn;
2079*eef4f27bSRobert Mustacchi     u32_t l5ctx_rsvd_l4_hole_mgmt[4];
2080*eef4f27bSRobert Mustacchi     l5_irrq_entry_b_xi_t l5ctx_irrq[1];
2081*eef4f27bSRobert Mustacchi     l5_abuf_cell_b_xi_t l5ctx_rcv_q_abuf[2];
2082*eef4f27bSRobert Mustacchi     u32_t unused_13[9];
2083*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_max_wqes;
2084*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_fw_qidx;
2085*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_pgtbl_pgidx;
2086*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_wqes_per_page;
2087*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_num_pages;
2088*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_nx_pg_qidx;
2089*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_pgtbl_phaddr_hi;
2090*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_pgtbl_phaddr_lo[3];
2091*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_flags;
2092*eef4f27bSRobert Mustacchi         #define L5CTX_SND_Q_FLAGS_PAGE_SIZE                 (0xf<<0)
2093*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_256         (0<<0)
2094*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_512         (1<<0)
2095*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_1K          (2<<0)
2096*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_2K          (3<<0)
2097*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_4K          (4<<0)
2098*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_8K          (5<<0)
2099*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_16K         (6<<0)
2100*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_32K         (7<<0)
2101*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_64K         (8<<0)
2102*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_128K        (9<<0)
2103*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_256K        (10<<0)
2104*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_512K        (11<<0)
2105*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_1M          (12<<0)
2106*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_2M          (13<<0)
2107*eef4f27bSRobert Mustacchi         #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE                (0xf<<4)
2108*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_1          (0<<4)
2109*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_2          (1<<4)
2110*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_4          (2<<4)
2111*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_8          (3<<4)
2112*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_16         (4<<4)
2113*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_32         (5<<4)
2114*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_64         (6<<4)
2115*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_128        (7<<4)
2116*eef4f27bSRobert Mustacchi 
2117*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_pgtbl_phaddr_hi;
2118*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_pgtbl_phaddr_lo[3];
2119*eef4f27bSRobert Mustacchi     u8_t l5ctx_ord;
2120*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_nx_pg_qidx;
2121*eef4f27bSRobert Mustacchi     u16_t l5ctx_tsch_mult_value;
2122*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_max_wqes;
2123*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_fw_qidx;
2124*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_pgtbl_pgidx;
2125*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_wqes_per_page;
2126*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_num_pages;
2127*eef4f27bSRobert Mustacchi     u8_t l5ctx_max_scatter_list_elements;
2128*eef4f27bSRobert Mustacchi     u8_t l5ctx_max_gather_list_elements;
2129*eef4f27bSRobert Mustacchi     u32_t l5ctx_curr_send_msn;
2130*eef4f27bSRobert Mustacchi     u32_t l5ctx_curr_rdma_read_msn;
2131*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_cached_pte_phaddr_hi;
2132*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_cached_pte_phaddr_lo;
2133*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_cached_pte_phaddr_hi;
2134*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_cached_pte_phaddr_lo;
2135*eef4f27bSRobert Mustacchi     u32_t unused_14[15];
2136*eef4f27bSRobert Mustacchi     tcp_context_cmd_cell_b_xi_t l5ctx_cmd[3];
2137*eef4f27bSRobert Mustacchi } l5_context_b_xi_t;
2138*eef4f27bSRobert Mustacchi 
2139*eef4f27bSRobert Mustacchi 
2140*eef4f27bSRobert Mustacchi /*
2141*eef4f27bSRobert Mustacchi  *  l5_context_l definition
2142*eef4f27bSRobert Mustacchi  */
2143*eef4f27bSRobert Mustacchi typedef struct l5_context_l
2144*eef4f27bSRobert Mustacchi {
2145*eef4f27bSRobert Mustacchi     u16_t l5ctx_cq_cidx;
2146*eef4f27bSRobert Mustacchi     u8_t l5ctx_size;
2147*eef4f27bSRobert Mustacchi     u8_t l5ctx_type;
2148*eef4f27bSRobert Mustacchi 
2149*eef4f27bSRobert Mustacchi     u16_t l5ctx_sq_pidx;
2150*eef4f27bSRobert Mustacchi     u8_t l5ctx_oubits;
2151*eef4f27bSRobert Mustacchi 
2152*eef4f27bSRobert Mustacchi     u8_t l5ctx_gen_bd_max;
2153*eef4f27bSRobert Mustacchi     u16_t l5ctx_rq_pidx;
2154*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_pgid;
2155*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_timer1;
2156*eef4f27bSRobert Mustacchi 
2157*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer3;
2158*eef4f27bSRobert Mustacchi 
2159*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer2;
2160*eef4f27bSRobert Mustacchi 
2161*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer5;
2162*eef4f27bSRobert Mustacchi 
2163*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer4;
2164*eef4f27bSRobert Mustacchi 
2165*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_wl1;
2166*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_wl2;
2167*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_modes;
2168*eef4f27bSRobert Mustacchi 
2169*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_dack;
2170*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tos;
2171*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_ttl;
2172*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_max_adv_win;
2173*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_timer;
2174*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ip_src;
2175*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ip_dst;
2176*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tcp_hlen;
2177*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_rcv_seg_scale;
2178*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_snd_seg_scale;
2179*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_iphdr_nbytes;
2180*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_dst_port;
2181*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_src_port;
2182*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_state;
2183*eef4f27bSRobert Mustacchi 
2184*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_flags;
2185*eef4f27bSRobert Mustacchi 
2186*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_mss;
2187*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_rcv_next;
2188*eef4f27bSRobert Mustacchi     u32_t l5ctx_last_ack_sent;
2189*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_rcv_win_seq;
2190*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_una;
2191*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_next;
2192*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_max;
2193*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_win;
2194*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_cwin;
2195*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_tstamp;
2196*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ssthresh;
2197*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_sm_delta;
2198*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_sm_rtt;
2199*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_max_snd_win;
2200*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_tsch_snd_next;
2201*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_slot_size;
2202*eef4f27bSRobert Mustacchi 
2203*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_xnum;
2204*eef4f27bSRobert Mustacchi 
2205*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_cons_retx_num;
2206*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_cmd;
2207*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_cp_cmd;
2208*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_cons_retx_num;
2209*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_prod_retx_num;
2210*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tx_protocol_flags;
2211*eef4f27bSRobert Mustacchi 
2212*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_num_dupack;
2213*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_txp_cmd;
2214*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_upload_reason;
2215*eef4f27bSRobert Mustacchi 
2216*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_num_retx;
2217*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_comp_cons_retx_num;
2218*eef4f27bSRobert Mustacchi     u32_t unused_0;
2219*eef4f27bSRobert Mustacchi     tcp_context_cmd_cell_l_te_t l5ctx_cmd[3];
2220*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_fw_qidx;
2221*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_max_wqes;
2222*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_pgtbl_pgidx;
2223*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_nx_pg_qidx;
2224*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_num_pages;
2225*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_wqes_per_page;
2226*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_flags;
2227*eef4f27bSRobert Mustacchi 
2228*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_max_cached_wqes;
2229*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_cidx;
2230*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_pidx;
2231*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_pgtbl_phaddr_hi;
2232*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_read_rsp_wait;
2233*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_pgtbl_phaddr_lo[3];
2234*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_cached_pte_phaddr_hi;
2235*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_cached_pte_phaddr_lo;
2236*eef4f27bSRobert Mustacchi     l5_cmd_cell_l_t l5ctx_snd_q_cmd[3];
2237*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_fw_qidx;
2238*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_max_wqes;
2239*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_pgtbl_pgidx;
2240*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_nx_pg_qidx;
2241*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_num_pages;
2242*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_wqes_per_page;
2243*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_flags;
2244*eef4f27bSRobert Mustacchi 
2245*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_com_cidx;
2246*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_rxp_cidx;
2247*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_pidx;
2248*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_pgtbl_phaddr_hi;
2249*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_qp_ou_state;
2250*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_QP_OU_STATE_UPLOADED            (1<<0)
2251*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_QP_OU_STATE_OFFLOADED           (1<<1)
2252*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_QP_OU_STATE_UPLOAD_REQ          (1<<2)
2253*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_QP_OU_STATE_OFFLOAD_REQ         (1<<3)
2254*eef4f27bSRobert Mustacchi 
2255*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_pgtbl_phaddr_lo[3];
2256*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_cached_pte_phaddr_hi;
2257*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_cached_pte_phaddr_lo;
2258*eef4f27bSRobert Mustacchi     l5_abuf_cell_l_t l5ctx_rcv_q_abuf[2];
2259*eef4f27bSRobert Mustacchi     u32_t l5ctx_cq_cid;
2260*eef4f27bSRobert Mustacchi     u32_t l5ctx_curr_send_msn;
2261*eef4f27bSRobert Mustacchi     u32_t l5ctx_curr_rdma_read_msn;
2262*eef4f27bSRobert Mustacchi     u8_t l5ctx_ird;
2263*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_path_op_state;
2264*eef4f27bSRobert Mustacchi 
2265*eef4f27bSRobert Mustacchi     u16_t l5ctx_pd;
2266*eef4f27bSRobert Mustacchi     u32_t l5ctx_tx_initial_tcp_sn;
2267*eef4f27bSRobert Mustacchi     u8_t l5ctx_null_cmd_cell_cidx;
2268*eef4f27bSRobert Mustacchi     u8_t l5ctx_null_cmd_cell_pidx;
2269*eef4f27bSRobert Mustacchi     u16_t l5ctx_tsch_mult_value;
2270*eef4f27bSRobert Mustacchi     l5_orrq_entry_l_t l5ctx_orrq[1];
2271*eef4f27bSRobert Mustacchi     l5_irrq_entry_l_t l5ctx_irrq[1];
2272*eef4f27bSRobert Mustacchi     u8_t l5ctx_upload_flag;
2273*eef4f27bSRobert Mustacchi 
2274*eef4f27bSRobert Mustacchi     u8_t l5ctx_qp_flags;
2275*eef4f27bSRobert Mustacchi 
2276*eef4f27bSRobert Mustacchi     u8_t l5ctx_rx_comp_flags;
2277*eef4f27bSRobert Mustacchi 
2278*eef4f27bSRobert Mustacchi     u8_t l5ctx_miq_index;
2279*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_read_request_msgs;
2280*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_send_msg_segs_w_L_bit;
2281*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_read_resp_segs_w_L_bit;
2282*eef4f27bSRobert Mustacchi     u8_t l5ctx_upload_rxp;
2283*eef4f27bSRobert Mustacchi 
2284*eef4f27bSRobert Mustacchi     u32_t l5ctx_high_tcp_ack_sn_rcvd;
2285*eef4f27bSRobert Mustacchi     u32_t l5ctx_rx_initial_tcp_sn;
2286*eef4f27bSRobert Mustacchi     u32_t l5ctx_send_msg_high_msn_completed;
2287*eef4f27bSRobert Mustacchi     u32_t l5ctx_read_req_high_msn_queued;
2288*eef4f27bSRobert Mustacchi     u32_t l5ctx_rsvd_l4_hole_mgmt[3];
2289*eef4f27bSRobert Mustacchi     u16_t l5ctx_offload_flag;
2290*eef4f27bSRobert Mustacchi     u16_t l5ctx_cam_index;
2291*eef4f27bSRobert Mustacchi } l5_context_l_t;
2292*eef4f27bSRobert Mustacchi 
2293*eef4f27bSRobert Mustacchi 
2294*eef4f27bSRobert Mustacchi 
2295*eef4f27bSRobert Mustacchi /*
2296*eef4f27bSRobert Mustacchi  *  l5_context_l definition
2297*eef4f27bSRobert Mustacchi  */
2298*eef4f27bSRobert Mustacchi typedef struct l5_context_l_xi
2299*eef4f27bSRobert Mustacchi {
2300*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_tsch_snd_next;
2301*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_max;
2302*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_xnum;
2303*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TSCH_XNUM_VAL                     (0x7f<<0)
2304*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TSCH_XNUM_L4                      (1<<7)
2305*eef4f27bSRobert Mustacchi 
2306*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_cons_retx_num;
2307*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_cmd;
2308*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_cp_cmd;
2309*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tsch_cons_retx_num;
2310*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_prod_retx_num;
2311*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_pgid;
2312*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_PGID_VAL                          (0x3fff<<0)
2313*eef4f27bSRobert Mustacchi     u16_t unused_0;
2314*eef4f27bSRobert Mustacchi     u8_t unused_1;
2315*eef4f27bSRobert Mustacchi 
2316*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_l2_slot_size;
2317*eef4f27bSRobert Mustacchi     u32_t unused_2;
2318*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_modes;
2319*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_RST_INDICATED               (1<<0)
2320*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_DISC_BD                     (1<<1)
2321*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_UPLOAD_INITED               (1<<2)
2322*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_RMT_DISC                    (1<<3)
2323*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_PG_INVALIDATED              (1<<4)
2324*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_ABORT_PENDING               (1<<5)
2325*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_DISC_PENDING                (1<<6)
2326*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_MODES_SS                          (1<<7)
2327*eef4f27bSRobert Mustacchi 
2328*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_dack;
2329*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tos;
2330*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_ttl;
2331*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_max_adv_win;
2332*eef4f27bSRobert Mustacchi     u32_t l5ctx_timer;
2333*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ip_src;
2334*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ip_dst;
2335*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tcp_hlen;
2336*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_rcv_seg_scale;
2337*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_snd_seg_scale;
2338*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_iphdr_nbytes;
2339*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_dst_port;
2340*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_src_port;
2341*eef4f27bSRobert Mustacchi     u32_t l5ctx_tx_initial_tcp_sn;
2342*eef4f27bSRobert Mustacchi     u16_t unused_3;
2343*eef4f27bSRobert Mustacchi     u8_t unused_4;
2344*eef4f27bSRobert Mustacchi     u8_t l5ctx_upload_flag;
2345*eef4f27bSRobert Mustacchi         #define L5CTX_UPLOAD_FLAG_TXP                       (1<<0)
2346*eef4f27bSRobert Mustacchi         #define L5CTX_UPLOAD_FLAG_TXP_COM                   (1<<1)
2347*eef4f27bSRobert Mustacchi     u32_t unused_5[17];
2348*eef4f27bSRobert Mustacchi 
2349*eef4f27bSRobert Mustacchi     u16_t l5ctx_cq_cidx;
2350*eef4f27bSRobert Mustacchi     u8_t l5ctx_size;
2351*eef4f27bSRobert Mustacchi         #define L5CTX_SIZE_ARM_CQ                           (1<<0)
2352*eef4f27bSRobert Mustacchi 
2353*eef4f27bSRobert Mustacchi     u8_t l5ctx_type;
2354*eef4f27bSRobert Mustacchi         #define L5CTX_TYPE_TYPE                             (0xf<<4)
2355*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_EMPTY                   (0<<4)
2356*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_L2                      (1<<4)
2357*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_TCP                     (2<<4)
2358*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_L5                      (3<<4)
2359*eef4f27bSRobert Mustacchi             #define L5CTX_TYPE_TYPE_L2_BD_CHN               (4<<4)
2360*eef4f27bSRobert Mustacchi 
2361*eef4f27bSRobert Mustacchi     u16_t l5ctx_sq_pidx;
2362*eef4f27bSRobert Mustacchi     u8_t l5ctx_oubits;
2363*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_ACTIVATE                       (1<<0)
2364*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_CP_UPLOAD                      (1<<1)
2365*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_RXP_UPLOAD                     (1<<2)
2366*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_TXP_UPLOAD                     (1<<3)
2367*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_COM_RX_UPLOAD                  (1<<4)
2368*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_COM_TX_UPLOAD                  (1<<5)
2369*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_CP_UPLOAD_COMP                 (1<<6)
2370*eef4f27bSRobert Mustacchi         #define L5CTX_OUBITS_HOST_ACK                       (1<<7)
2371*eef4f27bSRobert Mustacchi 
2372*eef4f27bSRobert Mustacchi     u8_t l5ctx_gen_bd_max;
2373*eef4f27bSRobert Mustacchi     u16_t l5ctx_rq_pidx;
2374*eef4f27bSRobert Mustacchi     u16_t unused_6;
2375*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_timer1;
2376*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER1_DISABLE                    (1UL<<0)
2377*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER1_VALUE                      (0x7fffffffL<<1)
2378*eef4f27bSRobert Mustacchi 
2379*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer3;
2380*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER3_DISABLE                    (1<<0)
2381*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER3_VALUE                      (0x7fff<<1)
2382*eef4f27bSRobert Mustacchi 
2383*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer2;
2384*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER2_DISABLE                    (1<<0)
2385*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER2_VALUE                      (0x7fff<<1)
2386*eef4f27bSRobert Mustacchi 
2387*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer5;
2388*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER5_DISABLE                    (1<<0)
2389*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER5_VALUE                      (0x7fff<<1)
2390*eef4f27bSRobert Mustacchi 
2391*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_timer4;
2392*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER4_DISABLE                    (1<<0)
2393*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TIMER4_VALUE                      (0x7fff<<1)
2394*eef4f27bSRobert Mustacchi 
2395*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_slot_size;
2396*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_SLOT_SIZE_SLOT_SIZE               (0xffffffL<<0)
2397*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_SLOT_SIZE_CMD_MAX                 (0x7fL<<24)
2398*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_SLOT_SIZE_STOP                    (1UL<<31)
2399*eef4f27bSRobert Mustacchi 
2400*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_cwin;
2401*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_win;
2402*eef4f27bSRobert Mustacchi     u8_t l5ctx_qp_ou_state;
2403*eef4f27bSRobert Mustacchi         #define L5CTX_QP_OU_STATE_UPLOADED                  (1<<0)
2404*eef4f27bSRobert Mustacchi         #define L5CTX_QP_OU_STATE_OFFLOADED                 (1<<1)
2405*eef4f27bSRobert Mustacchi         #define L5CTX_QP_OU_STATE_UPLOAD_REQ                (1<<2)
2406*eef4f27bSRobert Mustacchi         #define L5CTX_QP_OU_STATE_OFFLOAD_REQ               (1<<3)
2407*eef4f27bSRobert Mustacchi 
2408*eef4f27bSRobert Mustacchi     u8_t l5ctx_upload_rxp;
2409*eef4f27bSRobert Mustacchi         #define L5CTX_UPLOAD_RXP_COM                        (1<<0)
2410*eef4f27bSRobert Mustacchi 
2411*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_tx_protocol_flags;
2412*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_TIMER_DELAY_ACK  (1<<0)
2413*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_UPLOAD          (1<<1)
2414*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK       (1<<2)
2415*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_LAST_ACK        (1<<3)
2416*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_LAST_RST        (1<<4)
2417*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_RST       (1<<5)
2418*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK_MINUS  (1<<6)
2419*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_TX_PROTOCOL_FLAGS_TSCH_WA         (1<<7)
2420*eef4f27bSRobert Mustacchi 
2421*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_num_dupack;
2422*eef4f27bSRobert Mustacchi     u32_t unused_7;
2423*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_state;
2424*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_STATE_VALUE                       (0xff<<0)
2425*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_UNDEFINED         (0<<0)
2426*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_LISTEN            (2<<0)
2427*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_SYN_SENT          (4<<0)
2428*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_SYN_RECV          (6<<0)
2429*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_CLOSE_WAIT        (8<<0)
2430*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_ESTABLISHED       (10<<0)
2431*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_FIN_WAIT1         (12<<0)
2432*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_FIN_WAIT2         (14<<0)
2433*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_TIME_WAIT         (16<<0)
2434*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_CLOSE             (18<<0)
2435*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_LAST_ACK          (20<<0)
2436*eef4f27bSRobert Mustacchi             #define L5CTX_TCP_STATE_VALUE_CLOSING           (22<<0)
2437*eef4f27bSRobert Mustacchi 
2438*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_flags;
2439*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_NO_DELAY_ACK                (1<<0)
2440*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_KEEP_ALIVE                  (1<<1)
2441*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_NAGLE                       (1<<2)
2442*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_TIME_STAMP                  (1<<3)
2443*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_SACK                        (1<<4)
2444*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_FLAGS_SEG_SCALING                 (1<<5)
2445*eef4f27bSRobert Mustacchi 
2446*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_mss;
2447*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_rcv_next;
2448*eef4f27bSRobert Mustacchi     u32_t l5ctx_last_ack_sent;
2449*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_rcv_win_seq;
2450*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_una;
2451*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_next;
2452*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_tstamp;
2453*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_ssthresh;
2454*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_sm_delta;
2455*eef4f27bSRobert Mustacchi     u16_t l5ctx_tcp_sm_rtt;
2456*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_max_snd_win;
2457*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_txp_cmd;
2458*eef4f27bSRobert Mustacchi     u8_t unused_8;
2459*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_num_retx;
2460*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_comp_cons_retx_num;
2461*eef4f27bSRobert Mustacchi     u32_t unused_9;
2462*eef4f27bSRobert Mustacchi     u8_t l5ctx_qp_flags;
2463*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_QP_VALID                     (1<<0)
2464*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_SUPPORTS_LAZY_WQES           (1<<1)
2465*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_INBOUND_RDMA_READ_DISABLED   (1<<2)
2466*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_INBOUND_RDMA_WRITE_DISABLED  (1<<3)
2467*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_WINDOW_BINDS_ENABLED         (1<<4)
2468*eef4f27bSRobert Mustacchi         #define L5CTX_QP_FLAGS_LOCAL_INVALIDATE_IN_PROGRESS  (1<<5)
2469*eef4f27bSRobert Mustacchi 
2470*eef4f27bSRobert Mustacchi     u8_t l5ctx_null_cmd_cell_cidx;
2471*eef4f27bSRobert Mustacchi     u8_t l5ctx_null_cmd_cell_pidx;
2472*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_max_cached_wqes;
2473*eef4f27bSRobert Mustacchi     l5_orrq_entry_l_xi_t l5ctx_orrq[1];
2474*eef4f27bSRobert Mustacchi     u32_t l5ctx_cq_cid;
2475*eef4f27bSRobert Mustacchi     u32_t unused_10[4];
2476*eef4f27bSRobert Mustacchi     u32_t l5ctx_rdma_crc;
2477*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_wl1;
2478*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_snd_wl2;
2479*eef4f27bSRobert Mustacchi     u8_t unused_11;
2480*eef4f27bSRobert Mustacchi     u8_t l5ctx_tcp_upload_reason;
2481*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_KEEP_ALIVE          (1<<0)
2482*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_FIN                 (1<<1)
2483*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_URG                 (1<<2)
2484*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_FRAGMENT            (1<<3)
2485*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_IP_OPTION           (1<<4)
2486*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_RST                 (1<<5)
2487*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_SYN                 (1<<6)
2488*eef4f27bSRobert Mustacchi         #define L5CTX_TCP_UPLOAD_REASON_TIMEOUT             (1<<7)
2489*eef4f27bSRobert Mustacchi     u16_t unused_12;
2490*eef4f27bSRobert Mustacchi 
2491*eef4f27bSRobert Mustacchi     u32_t l5ctx_tcp_offload_seq;
2492*eef4f27bSRobert Mustacchi     u32_t l5ctx_pg_cwin;
2493*eef4f27bSRobert Mustacchi     u32_t l5ctx_high_tcp_ack_sn_rcvd;
2494*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_pidx;
2495*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_cidx;
2496*eef4f27bSRobert Mustacchi     u16_t l5ctx_pd;
2497*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_rxp_cidx;
2498*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_pidx;
2499*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_flags;
2500*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE                 (0xf<<0)
2501*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_256         (0<<0)
2502*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_512         (1<<0)
2503*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_1K          (2<<0)
2504*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_2K          (3<<0)
2505*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_4K          (4<<0)
2506*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_8K          (5<<0)
2507*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_16K         (6<<0)
2508*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_32K         (7<<0)
2509*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_64K         (8<<0)
2510*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_128K        (9<<0)
2511*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_256K        (10<<0)
2512*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_512K        (11<<0)
2513*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_1M          (12<<0)
2514*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_2M          (13<<0)
2515*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE                (0xf<<4)
2516*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_1          (0<<4)
2517*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_2          (1<<4)
2518*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_4          (2<<4)
2519*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_8          (3<<4)
2520*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_16         (4<<4)
2521*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_32         (5<<4)
2522*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_64         (6<<4)
2523*eef4f27bSRobert Mustacchi             #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_128        (7<<4)
2524*eef4f27bSRobert Mustacchi 
2525*eef4f27bSRobert Mustacchi     u8_t l5ctx_read_rsp_wait;
2526*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_read_resp_segs_w_L_bit;
2527*eef4f27bSRobert Mustacchi     u8_t l5ctx_rx_comp_flags;
2528*eef4f27bSRobert Mustacchi         #define L5CTX_RX_COMP_FLAGS_TCP_HOLE_EXISTS         (1<<0)
2529*eef4f27bSRobert Mustacchi         #define L5CTX_RX_COMP_FLAGS_MARKER_IN_ISLAND        (1<<1)
2530*eef4f27bSRobert Mustacchi         #define L5CTX_RX_COMP_FLAGS_READ_REQ_OUTSTANDING    (1<<2)
2531*eef4f27bSRobert Mustacchi         #define L5CTX_RX_COMP_FLAGS_TCP_ISLAND_CREATED      (1<<3)
2532*eef4f27bSRobert Mustacchi 
2533*eef4f27bSRobert Mustacchi     u8_t l5ctx_ird;
2534*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_com_cidx;
2535*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_path_op_state;
2536*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_PATH_OP_STATE_OPERATIONAL         (1<<0)
2537*eef4f27bSRobert Mustacchi         #define L5CTX_RCV_PATH_OP_STATE_BYPASS              (1<<1)
2538*eef4f27bSRobert Mustacchi 
2539*eef4f27bSRobert Mustacchi     u8_t l5ctx_miq_index;
2540*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_read_request_msgs;
2541*eef4f27bSRobert Mustacchi     u8_t l5ctx_ooo_send_msg_segs_w_L_bit;
2542*eef4f27bSRobert Mustacchi     u32_t l5ctx_send_msg_high_msn_completed;
2543*eef4f27bSRobert Mustacchi     u32_t l5ctx_read_req_high_msn_queued;
2544*eef4f27bSRobert Mustacchi     u32_t l5ctx_rx_initial_tcp_sn;
2545*eef4f27bSRobert Mustacchi     u32_t l5ctx_rsvd_l4_hole_mgmt[4];
2546*eef4f27bSRobert Mustacchi     l5_irrq_entry_l_xi_t l5ctx_irrq[1];
2547*eef4f27bSRobert Mustacchi     l5_abuf_cell_l_xi_t l5ctx_rcv_q_abuf[2];
2548*eef4f27bSRobert Mustacchi     u32_t unused_13[9];
2549*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_fw_qidx;
2550*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_max_wqes;
2551*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_wqes_per_page;
2552*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_pgtbl_pgidx;
2553*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_nx_pg_qidx;
2554*eef4f27bSRobert Mustacchi     u16_t l5ctx_snd_q_num_pages;
2555*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_pgtbl_phaddr_hi;
2556*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_flags;
2557*eef4f27bSRobert Mustacchi         #define L5CTX_SND_Q_FLAGS_PAGE_SIZE                 (0xf<<0)
2558*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_256         (0<<0)
2559*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_512         (1<<0)
2560*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_1K          (2<<0)
2561*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_2K          (3<<0)
2562*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_4K          (4<<0)
2563*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_8K          (5<<0)
2564*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_16K         (6<<0)
2565*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_32K         (7<<0)
2566*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_64K         (8<<0)
2567*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_128K        (9<<0)
2568*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_256K        (10<<0)
2569*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_512K        (11<<0)
2570*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_1M          (12<<0)
2571*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_2M          (13<<0)
2572*eef4f27bSRobert Mustacchi         #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE                (0xf<<4)
2573*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_1          (0<<4)
2574*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_2          (1<<4)
2575*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_4          (2<<4)
2576*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_8          (3<<4)
2577*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_16         (4<<4)
2578*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_32         (5<<4)
2579*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_64         (6<<4)
2580*eef4f27bSRobert Mustacchi             #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_128        (7<<4)
2581*eef4f27bSRobert Mustacchi 
2582*eef4f27bSRobert Mustacchi     u8_t l5ctx_snd_q_pgtbl_phaddr_lo[3];
2583*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_pgtbl_phaddr_hi;
2584*eef4f27bSRobert Mustacchi     u8_t l5ctx_ord;
2585*eef4f27bSRobert Mustacchi     u8_t l5ctx_rcv_q_pgtbl_phaddr_lo[3];
2586*eef4f27bSRobert Mustacchi     u16_t l5ctx_tsch_mult_value;
2587*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_nx_pg_qidx;
2588*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_fw_qidx;
2589*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_max_wqes;
2590*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_wqes_per_page;
2591*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_pgtbl_pgidx;
2592*eef4f27bSRobert Mustacchi     u8_t l5ctx_max_gather_list_elements;
2593*eef4f27bSRobert Mustacchi     u8_t l5ctx_max_scatter_list_elements;
2594*eef4f27bSRobert Mustacchi     u16_t l5ctx_rcv_q_num_pages;
2595*eef4f27bSRobert Mustacchi     u32_t l5ctx_curr_send_msn;
2596*eef4f27bSRobert Mustacchi     u32_t l5ctx_curr_rdma_read_msn;
2597*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_cached_pte_phaddr_hi;
2598*eef4f27bSRobert Mustacchi     u32_t l5ctx_snd_q_cached_pte_phaddr_lo;
2599*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_cached_pte_phaddr_hi;
2600*eef4f27bSRobert Mustacchi     u32_t l5ctx_rcv_q_cached_pte_phaddr_lo;
2601*eef4f27bSRobert Mustacchi     u32_t unused_14[15];
2602*eef4f27bSRobert Mustacchi     tcp_context_cmd_cell_l_xi_t l5ctx_cmd[3];
2603*eef4f27bSRobert Mustacchi } l5_context_l_xi_t;
2604*eef4f27bSRobert Mustacchi 
2605*eef4f27bSRobert Mustacchi 
2606*eef4f27bSRobert Mustacchi /*
2607*eef4f27bSRobert Mustacchi  * l5_context select
2608*eef4f27bSRobert Mustacchi  */
2609*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
2610*eef4f27bSRobert Mustacchi     typedef l5_context_l_t l5_context_t;
2611*eef4f27bSRobert Mustacchi     typedef l5_context_l_xi_t l5_context_xi_t;
2612*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
2613*eef4f27bSRobert Mustacchi     typedef l5_context_b_t l5_context_t;
2614*eef4f27bSRobert Mustacchi     typedef l5_context_b_xi_t l5_context_xi_t;
2615*eef4f27bSRobert Mustacchi #endif
2616*eef4f27bSRobert Mustacchi 
2617*eef4f27bSRobert Mustacchi 
2618*eef4f27bSRobert Mustacchi #endif /* _l5_defs_h_ */
2619