1eef4f27bSRobert Mustacchi /*
2eef4f27bSRobert Mustacchi  * Copyright 2014-2017 Cavium, Inc.
3eef4f27bSRobert Mustacchi  * The contents of this file are subject to the terms of the Common Development
4eef4f27bSRobert Mustacchi  * and Distribution License, v.1,  (the "License").
5eef4f27bSRobert Mustacchi  *
6eef4f27bSRobert Mustacchi  * You may not use this file except in compliance with the License.
7eef4f27bSRobert Mustacchi  *
8eef4f27bSRobert Mustacchi  * You can obtain a copy of the License at available
9eef4f27bSRobert Mustacchi  * at http://opensource.org/licenses/CDDL-1.0
10eef4f27bSRobert Mustacchi  *
11eef4f27bSRobert Mustacchi  * See the License for the specific language governing permissions and
12eef4f27bSRobert Mustacchi  * limitations under the License.
13eef4f27bSRobert Mustacchi  */
14eef4f27bSRobert Mustacchi 
15eef4f27bSRobert Mustacchi #ifndef _l2_ftq_h_
16eef4f27bSRobert Mustacchi #define _l2_ftq_h_
17eef4f27bSRobert Mustacchi 
18eef4f27bSRobert Mustacchi #include "l2_defs.h"
19eef4f27bSRobert Mustacchi 
20eef4f27bSRobert Mustacchi // This is to avoid compiling error for drivers compilation
21eef4f27bSRobert Mustacchi #if  !defined (TARGET_CHIP)
22eef4f27bSRobert Mustacchi     #define TARGET_CHIP      5709
23eef4f27bSRobert Mustacchi #endif
24eef4f27bSRobert Mustacchi 
25eef4f27bSRobert Mustacchi 
26eef4f27bSRobert Mustacchi 
27eef4f27bSRobert Mustacchi 
28eef4f27bSRobert Mustacchi /*
29eef4f27bSRobert Mustacchi  *  rxp cmd enqueue definition
30eef4f27bSRobert Mustacchi  *  offset: 0000
31eef4f27bSRobert Mustacchi  */
32eef4f27bSRobert Mustacchi 
33eef4f27bSRobert Mustacchi 
34eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
35eef4f27bSRobert Mustacchi     typedef struct rxpcq_l
36eef4f27bSRobert Mustacchi     {
37eef4f27bSRobert Mustacchi         u32_t cid;
38eef4f27bSRobert Mustacchi 	    union{
39eef4f27bSRobert Mustacchi             u32_t host_opaque;
40eef4f27bSRobert Mustacchi             u32_t generic1;
41eef4f27bSRobert Mustacchi         }u1;
42eef4f27bSRobert Mustacchi 	    union{
43eef4f27bSRobert Mustacchi             struct {
44eef4f27bSRobert Mustacchi                 u16_t status;
45eef4f27bSRobert Mustacchi                 u8_t  opcode;
46*55fea89dSDan Cross                 u8_t  flags;
47eef4f27bSRobert Mustacchi             }s1;
48eef4f27bSRobert Mustacchi             u32_t generic2;
49eef4f27bSRobert Mustacchi         }u2;
50eef4f27bSRobert Mustacchi     } rxpcq_l_t;
51eef4f27bSRobert Mustacchi 
52eef4f27bSRobert Mustacchi     typedef rxpcq_l_t rxpcq_t;
53eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
54eef4f27bSRobert Mustacchi     typedef struct rxpcq_b
55eef4f27bSRobert Mustacchi     {
56eef4f27bSRobert Mustacchi         u32_t cid;
57eef4f27bSRobert Mustacchi 	    union{
58eef4f27bSRobert Mustacchi             u32_t host_opaque;
59eef4f27bSRobert Mustacchi             u32_t generic1;
60eef4f27bSRobert Mustacchi         } u1;
61eef4f27bSRobert Mustacchi 	    union{
62eef4f27bSRobert Mustacchi             struct {
63*55fea89dSDan Cross                 u8_t  flags;
64eef4f27bSRobert Mustacchi                 u8_t  opcode;
65eef4f27bSRobert Mustacchi                 u16_t status;
66eef4f27bSRobert Mustacchi             } s1;
67eef4f27bSRobert Mustacchi             u32_t generic2;
68eef4f27bSRobert Mustacchi         } u2;
69eef4f27bSRobert Mustacchi     } rxpcq_b_t;
70eef4f27bSRobert Mustacchi 
71eef4f27bSRobert Mustacchi     typedef rxpcq_b_t rxpcq_t;
72eef4f27bSRobert Mustacchi #endif
73eef4f27bSRobert Mustacchi 
74eef4f27bSRobert Mustacchi 
75eef4f27bSRobert Mustacchi /*
76eef4f27bSRobert Mustacchi  *  rxp enqueue definition
77eef4f27bSRobert Mustacchi  *  offset: 0000
78eef4f27bSRobert Mustacchi  */
79eef4f27bSRobert Mustacchi typedef struct rxpq_b
80eef4f27bSRobert Mustacchi {
81eef4f27bSRobert Mustacchi     u32_t bits_errors;
82eef4f27bSRobert Mustacchi     u32_t bits_status;
83*55fea89dSDan Cross 
84eef4f27bSRobert Mustacchi     u8_t  bit_mcast_hash_idx;
85eef4f27bSRobert Mustacchi     u8_t  bits_acpi_pat;
86eef4f27bSRobert Mustacchi     u8_t  knum;
87eef4f27bSRobert Mustacchi     u8_t  unused1;
88*55fea89dSDan Cross 
89eef4f27bSRobert Mustacchi     u16_t rule_tag;
90eef4f27bSRobert Mustacchi     u16_t pkt_len;
91*55fea89dSDan Cross 
92eef4f27bSRobert Mustacchi     u16_t vlan_tag;
93eef4f27bSRobert Mustacchi     u8_t  ip_hdr_offset;
94eef4f27bSRobert Mustacchi     u8_t  rx_qid;
95*55fea89dSDan Cross 
96eef4f27bSRobert Mustacchi     u16_t ip_xsum;
97eef4f27bSRobert Mustacchi     // this field has been extended to 2-byte in Xinan
98eef4f27bSRobert Mustacchi #if (TARGET_CHIP == 5706)
99eef4f27bSRobert Mustacchi     u8_t  tcp_udp_hdr_offset;
100*55fea89dSDan Cross     u8_t  unused2;
101eef4f27bSRobert Mustacchi #else
102eef4f27bSRobert Mustacchi     u16_t tcp_udp_hdr_offset;
103*55fea89dSDan Cross #endif
104eef4f27bSRobert Mustacchi     u16_t tcp_udp_xsum;
105eef4f27bSRobert Mustacchi     u16_t tcp_payload_len;
106*55fea89dSDan Cross 
107eef4f27bSRobert Mustacchi     u16_t pseud_xsum;
108eef4f27bSRobert Mustacchi     u16_t l2_payload_raw_xsum;
109eef4f27bSRobert Mustacchi     // this field has been extended to 2-byte in Xinan
110eef4f27bSRobert Mustacchi #if (TARGET_CHIP == 5706)
111eef4f27bSRobert Mustacchi     u8_t  data_offset;
112*55fea89dSDan Cross     u8_t  unused3;
113eef4f27bSRobert Mustacchi #else
114eef4f27bSRobert Mustacchi     u16_t data_offset;
115eef4f27bSRobert Mustacchi #endif
116eef4f27bSRobert Mustacchi     u16_t l3_payload_raw_xsum;
117*55fea89dSDan Cross 
118eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
119eef4f27bSRobert Mustacchi     u32_t cid;
120eef4f27bSRobert Mustacchi 
121eef4f27bSRobert Mustacchi     u16_t cs16;
122eef4f27bSRobert Mustacchi     u16_t unused4;
123eef4f27bSRobert Mustacchi 
124eef4f27bSRobert Mustacchi     u16_t ext_status;
125eef4f27bSRobert Mustacchi     u16_t unused5;
126*55fea89dSDan Cross 
127eef4f27bSRobert Mustacchi } rxpq_b_t;
128eef4f27bSRobert Mustacchi 
129eef4f27bSRobert Mustacchi typedef struct rxpq_l
130eef4f27bSRobert Mustacchi {
131eef4f27bSRobert Mustacchi     u32_t bits_errors;
132eef4f27bSRobert Mustacchi     u32_t bits_status;
133*55fea89dSDan Cross 
134eef4f27bSRobert Mustacchi     u8_t  unused1;
135eef4f27bSRobert Mustacchi     u8_t  knum;
136eef4f27bSRobert Mustacchi     u8_t  bits_acpi_pat;
137eef4f27bSRobert Mustacchi     u8_t  bit_mcast_hash_idx;
138*55fea89dSDan Cross 
139eef4f27bSRobert Mustacchi     u16_t pkt_len;
140eef4f27bSRobert Mustacchi     u16_t rule_tag;
141*55fea89dSDan Cross 
142eef4f27bSRobert Mustacchi     u8_t  rx_qid;
143eef4f27bSRobert Mustacchi     u8_t  ip_hdr_offset;
144eef4f27bSRobert Mustacchi     u16_t vlan_tag;
145*55fea89dSDan Cross 
146eef4f27bSRobert Mustacchi     // this field has been extended to 2-byte in Xinan
147eef4f27bSRobert Mustacchi #if (TARGET_CHIP == 5706)
148*55fea89dSDan Cross     u8_t  unused2;
149eef4f27bSRobert Mustacchi     u8_t tcp_udp_hdr_offset;
150eef4f27bSRobert Mustacchi #else
151eef4f27bSRobert Mustacchi     u16_t tcp_udp_hdr_offset;
152eef4f27bSRobert Mustacchi #endif
153eef4f27bSRobert Mustacchi     u16_t ip_xsum;
154*55fea89dSDan Cross 
155eef4f27bSRobert Mustacchi     u16_t tcp_payload_len;
156eef4f27bSRobert Mustacchi     u16_t tcp_udp_xsum;
157*55fea89dSDan Cross 
158eef4f27bSRobert Mustacchi     u16_t l2_payload_raw_xsum;
159eef4f27bSRobert Mustacchi     u16_t pseud_xsum;
160eef4f27bSRobert Mustacchi 
161eef4f27bSRobert Mustacchi     u16_t l3_payload_raw_xsum;
162eef4f27bSRobert Mustacchi     // this field has been extended to 2-byte in Xinan
163eef4f27bSRobert Mustacchi #if (TARGET_CHIP == 5706)
164*55fea89dSDan Cross     u8_t  unused3;
165eef4f27bSRobert Mustacchi     u8_t  data_offset;
166eef4f27bSRobert Mustacchi #else
167eef4f27bSRobert Mustacchi     u16_t data_offset;
168*55fea89dSDan Cross #endif
169eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
170eef4f27bSRobert Mustacchi     u32_t cid;
171eef4f27bSRobert Mustacchi 
172eef4f27bSRobert Mustacchi     u16_t unused4;
173eef4f27bSRobert Mustacchi     u16_t cs16;
174eef4f27bSRobert Mustacchi 
175eef4f27bSRobert Mustacchi     u16_t unused5;
176eef4f27bSRobert Mustacchi     u16_t ext_status;
177*55fea89dSDan Cross 
178eef4f27bSRobert Mustacchi } rxpq_l_t;
179eef4f27bSRobert Mustacchi 
180eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
181eef4f27bSRobert Mustacchi     typedef rxpq_l_t rxpq_t;
182eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
183eef4f27bSRobert Mustacchi     typedef rxpq_b_t rxpq_t;
184eef4f27bSRobert Mustacchi #endif
185eef4f27bSRobert Mustacchi 
186eef4f27bSRobert Mustacchi /*
187eef4f27bSRobert Mustacchi  *  rv2ppq_generic definition
188eef4f27bSRobert Mustacchi  */
189eef4f27bSRobert Mustacchi typedef struct rv2ppq_generic_b
190eef4f27bSRobert Mustacchi {
191eef4f27bSRobert Mustacchi     u32_t cid;
192eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
193eef4f27bSRobert Mustacchi     u16_t operand_flags;
194eef4f27bSRobert Mustacchi     u8_t knum;
195eef4f27bSRobert Mustacchi     u8_t opcode;
196eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_UNUSED               0
197eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_NOP                  1
198eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_OPAQUE               2
199eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_L2_PLACE             3
200eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_L4_PLACE             4
201eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_L4_FLUSH             5
202eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_L5_PLACE            10
203eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_L5_FLUSH            14
204eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_DBG_RDMA            17
205eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_DBG_RV2P            18
206eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_L4_INDICATE_TIMEOUT 20
207eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_L2_JUMBO_PLACE      26
208eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_L2_FLUSH_BD_CHAIN   28
209eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_RV2PPQ_VALUE_FLR                 29 // X1V only
210eef4f27bSRobert Mustacchi 
211*55fea89dSDan Cross     u16_t operand16_0;    // Note that 16_0 and 16_1 will be absorbed
212eef4f27bSRobert Mustacchi     u16_t operand16_1;    // by RDMA and won't be passed to COM
213eef4f27bSRobert Mustacchi     u16_t operand16_2;
214eef4f27bSRobert Mustacchi     u16_t operand16_3;
215eef4f27bSRobert Mustacchi     u16_t operand16_4;
216eef4f27bSRobert Mustacchi     u16_t operand16_5;
217eef4f27bSRobert Mustacchi     u16_t operand16_6;
218eef4f27bSRobert Mustacchi     u16_t operand16_7;
219eef4f27bSRobert Mustacchi     u32_t operand32_0;    // Note that 32_0 and 32_1 will be absorbed
220*55fea89dSDan Cross     u32_t operand32_1;    // by RDMA and won't be passed to COM
221eef4f27bSRobert Mustacchi     u32_t operand32_2;
222eef4f27bSRobert Mustacchi     u32_t operand32_3;
223eef4f27bSRobert Mustacchi     u32_t operand32_4;
224eef4f27bSRobert Mustacchi     u8_t rdma_action;   // no need to be cleared by RXP, RV2P will do it
225eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
226eef4f27bSRobert Mustacchi     u16_t cs16;
227eef4f27bSRobert Mustacchi } rv2ppq_generic_b_t;
228eef4f27bSRobert Mustacchi 
229eef4f27bSRobert Mustacchi typedef struct rv2ppq_generic_l
230eef4f27bSRobert Mustacchi {
231eef4f27bSRobert Mustacchi     u32_t cid;
232eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
233eef4f27bSRobert Mustacchi     u8_t  opcode;
234eef4f27bSRobert Mustacchi     u8_t  knum;
235eef4f27bSRobert Mustacchi     u16_t operand_flags;
236eef4f27bSRobert Mustacchi     u16_t operand16_1;    // by RDMA and won't be passed to COM
237*55fea89dSDan Cross     u16_t operand16_0;    // Note that 16_0 and 16_1 will be absorbed
238eef4f27bSRobert Mustacchi     u16_t operand16_3;
239eef4f27bSRobert Mustacchi     u16_t operand16_2;
240eef4f27bSRobert Mustacchi     u16_t operand16_5;
241eef4f27bSRobert Mustacchi     u16_t operand16_4;
242eef4f27bSRobert Mustacchi     u16_t operand16_7;
243eef4f27bSRobert Mustacchi     u16_t operand16_6;
244eef4f27bSRobert Mustacchi     u32_t operand32_0;    // Note that 32_0 and 32_1 will be absorbed
245*55fea89dSDan Cross     u32_t operand32_1;    // by RDMA and won't be passed to COM
246eef4f27bSRobert Mustacchi     u32_t operand32_2;
247eef4f27bSRobert Mustacchi     u32_t operand32_3;
248eef4f27bSRobert Mustacchi     u32_t operand32_4;
249eef4f27bSRobert Mustacchi     u16_t cs16;
250eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
251eef4f27bSRobert Mustacchi     u8_t rdma_action;   // no need to be cleared by RXP, RV2P will do it
252eef4f27bSRobert Mustacchi } rv2ppq_generic_l_t;
253eef4f27bSRobert Mustacchi 
254eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
255eef4f27bSRobert Mustacchi     typedef rv2ppq_generic_l_t rv2ppq_generic_t;
256eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
257eef4f27bSRobert Mustacchi     typedef rv2ppq_generic_b_t rv2ppq_generic_t;
258eef4f27bSRobert Mustacchi #endif
259eef4f27bSRobert Mustacchi 
260eef4f27bSRobert Mustacchi 
261eef4f27bSRobert Mustacchi 
262eef4f27bSRobert Mustacchi /*
263eef4f27bSRobert Mustacchi  *  rv2ppq_l2_place definition
264eef4f27bSRobert Mustacchi  */
265eef4f27bSRobert Mustacchi typedef struct rv2ppq_l2_place_b
266eef4f27bSRobert Mustacchi {
267eef4f27bSRobert Mustacchi     u32_t cid;
268eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
269eef4f27bSRobert Mustacchi     u16_t operand_flags;
270eef4f27bSRobert Mustacchi         #define L2_OPERAND_FLAGS_PREPEND_L2_FRAME_HEADER  (1<<0)
271eef4f27bSRobert Mustacchi         #define L2_OPERAND_FLAGS_LAST                     (1<<1)
272eef4f27bSRobert Mustacchi         #define L2_OPERAND_FLAGS_ENQUEUE_TO_MCP           (1<<2)
273eef4f27bSRobert Mustacchi         #define L2_OPERAND_FLAGS_DROP_PKT                 (1<<3)
274eef4f27bSRobert Mustacchi         #define L2_OPERAND_FLAGS_MCAST                    (1<<4)
275eef4f27bSRobert Mustacchi         #define L2_OPERAND_FLAGS_BCAST                    (1<<5)
276eef4f27bSRobert Mustacchi         #define L2_OPERAND_FLAGS_VMQ                      (1<<6)
277eef4f27bSRobert Mustacchi         #define L2_OPERAND_FLAGS_OOO_PLACE                (1<<7)
278eef4f27bSRobert Mustacchi         #define L2_OPERAND_FLAGS_CU_PKT                   (1<<14)
279eef4f27bSRobert Mustacchi 
280eef4f27bSRobert Mustacchi     u8_t knum;
281eef4f27bSRobert Mustacchi     u8_t opcode;
282eef4f27bSRobert Mustacchi     u16_t offset;
283eef4f27bSRobert Mustacchi     u16_t length; // represent look-ahead_hdr length if VMQ flag is set (total pkt len otherwise)
284eef4f27bSRobert Mustacchi     u16_t bits_status;
285eef4f27bSRobert Mustacchi     u16_t vlan_tag;
286eef4f27bSRobert Mustacchi     u16_t ip_xsum;
287eef4f27bSRobert Mustacchi     u16_t udp_tcp_xsum;
288eef4f27bSRobert Mustacchi     u16_t unused_0;
289*55fea89dSDan Cross     u16_t packet_length; // represent total packet length
290eef4f27bSRobert Mustacchi     u32_t unused_1[2];
291eef4f27bSRobert Mustacchi     u16_t unused_2;
292eef4f27bSRobert Mustacchi     u16_t error_flags;
293eef4f27bSRobert Mustacchi         #define L2_ERROR_FLAGS_CRC_ERROR              (1<<1)
294eef4f27bSRobert Mustacchi         #define L2_ERROR_FLAGS_PHY_DECODE_ERROR       (1<<2)
295eef4f27bSRobert Mustacchi         #define L2_ERROR_FLAGS_ALIGNMENT_ERROR        (1<<3)
296eef4f27bSRobert Mustacchi         #define L2_ERROR_FLAGS_TOO_SHORT_ERROR        (1<<4)
297eef4f27bSRobert Mustacchi         #define L2_ERROR_FLAGS_GIANT_FRAME_ERROR      (1<<5)
298eef4f27bSRobert Mustacchi 
299eef4f27bSRobert Mustacchi     u32_t hash;
300eef4f27bSRobert Mustacchi     u32_t rt_bt;
301eef4f27bSRobert Mustacchi     u8_t rdma_action;  // no need to be cleared by RXP, RV2P will do it
302eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
303eef4f27bSRobert Mustacchi     u16_t cs16;
304*55fea89dSDan Cross 
305eef4f27bSRobert Mustacchi } rv2ppq_l2_place_b_t;
306eef4f27bSRobert Mustacchi 
307eef4f27bSRobert Mustacchi typedef struct rv2ppq_l2_place_l
308eef4f27bSRobert Mustacchi {
309eef4f27bSRobert Mustacchi     u32_t cid;
310eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
311eef4f27bSRobert Mustacchi     u8_t opcode;
312eef4f27bSRobert Mustacchi     u8_t knum;
313eef4f27bSRobert Mustacchi     u16_t operand_flags;
314eef4f27bSRobert Mustacchi     u16_t length; // represent look-ahead_hdr_length if VMQ flag is set (total pkt len otherwise)
315eef4f27bSRobert Mustacchi     u16_t offset;
316eef4f27bSRobert Mustacchi     u16_t vlan_tag;
317eef4f27bSRobert Mustacchi     u16_t bits_status;
318eef4f27bSRobert Mustacchi     u16_t udp_tcp_xsum;
319eef4f27bSRobert Mustacchi     u16_t ip_xsum;
320*55fea89dSDan Cross     u16_t packet_length; // represent total packet length if VMQ flag is set
321eef4f27bSRobert Mustacchi     u16_t unused_0;
322eef4f27bSRobert Mustacchi     u32_t unused_1[2];
323eef4f27bSRobert Mustacchi     u16_t error_flags;
324eef4f27bSRobert Mustacchi     u16_t unused_2;
325eef4f27bSRobert Mustacchi     u32_t hash;
326eef4f27bSRobert Mustacchi     u32_t rt_bt;
327eef4f27bSRobert Mustacchi     u16_t cs16;
328eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
329eef4f27bSRobert Mustacchi     u8_t rdma_action;  // no need to be cleared by RXP, RV2P will do it
330eef4f27bSRobert Mustacchi 
331eef4f27bSRobert Mustacchi } rv2ppq_l2_place_l_t;
332eef4f27bSRobert Mustacchi 
333eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
334eef4f27bSRobert Mustacchi     typedef rv2ppq_l2_place_l_t rv2ppq_l2_place_t;
335eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
336eef4f27bSRobert Mustacchi     typedef rv2ppq_l2_place_b_t rv2ppq_l2_place_t;
337eef4f27bSRobert Mustacchi #endif
338eef4f27bSRobert Mustacchi 
339eef4f27bSRobert Mustacchi 
340eef4f27bSRobert Mustacchi /*
341eef4f27bSRobert Mustacchi  *  rv2ppq_l2_flush_bd_chain definition
342eef4f27bSRobert Mustacchi  */
343eef4f27bSRobert Mustacchi typedef struct rv2ppq_l2_flush_bd_chain_b
344eef4f27bSRobert Mustacchi {
345eef4f27bSRobert Mustacchi     u32_t cid;
346eef4f27bSRobert Mustacchi     u32_t unused_0;
347eef4f27bSRobert Mustacchi     u16_t unused_1;
348eef4f27bSRobert Mustacchi     u8_t unused_2;
349eef4f27bSRobert Mustacchi     u8_t opcode;
350eef4f27bSRobert Mustacchi     u32_t unused_3[9];
351eef4f27bSRobert Mustacchi     u8_t rdma_action; // no need to be cleared by RXP, RV2P will do it
352eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
353eef4f27bSRobert Mustacchi     u16_t cs16;
354*55fea89dSDan Cross 
355eef4f27bSRobert Mustacchi } rv2ppq_l2_flush_bd_chain_b_t;
356eef4f27bSRobert Mustacchi 
357eef4f27bSRobert Mustacchi typedef struct rv2ppq_l2_flush_bd_chain_l
358eef4f27bSRobert Mustacchi {
359eef4f27bSRobert Mustacchi     u32_t cid;
360eef4f27bSRobert Mustacchi     u32_t unused_0;
361eef4f27bSRobert Mustacchi     u8_t opcode;
362eef4f27bSRobert Mustacchi     u8_t unused_2;
363eef4f27bSRobert Mustacchi     u16_t unused_1;
364eef4f27bSRobert Mustacchi     u32_t unused_3[9];
365eef4f27bSRobert Mustacchi     u16_t cs16;
366eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
367eef4f27bSRobert Mustacchi     u8_t rdma_action; // no need to be cleared by RXP, RV2P will do it
368*55fea89dSDan Cross 
369eef4f27bSRobert Mustacchi } rv2ppq_l2_flush_bd_chain_l_t;
370eef4f27bSRobert Mustacchi 
371eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
372eef4f27bSRobert Mustacchi     typedef rv2ppq_l2_flush_bd_chain_l_t rv2ppq_l2_flush_bd_chain_t;
373eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
374eef4f27bSRobert Mustacchi     typedef rv2ppq_l2_flush_bd_chain_b_t rv2ppq_l2_flush_bd_chain_t;
375eef4f27bSRobert Mustacchi #endif
376eef4f27bSRobert Mustacchi 
377eef4f27bSRobert Mustacchi /*
378eef4f27bSRobert Mustacchi  *  comq_generic definition
379eef4f27bSRobert Mustacchi  */
380*55fea89dSDan Cross typedef enum
381eef4f27bSRobert Mustacchi {
382eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_UNUSED                =  0,
383eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_NOP                   = GENERIC_OPCODE_RV2PPQ_VALUE_NOP      ,
384eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_OPAQUE                = GENERIC_OPCODE_RV2PPQ_VALUE_OPAQUE   ,
385eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L2_COMPLETION         = GENERIC_OPCODE_RV2PPQ_VALUE_L2_PLACE ,
386eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_COMPLETION         = GENERIC_OPCODE_RV2PPQ_VALUE_L4_PLACE ,
387eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_FLUSH              = GENERIC_OPCODE_RV2PPQ_VALUE_L4_FLUSH ,
388eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_STARTGEN           =  6,
389eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_ADDGEN             =  7,
390eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_PLACE              =  8,
391eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_DISCARDGEN         =  9,
392eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L5_PLACE              = GENERIC_OPCODE_RV2PPQ_VALUE_L5_PLACE,
393eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L2_NOBUFFER           = 11,
394eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_ARMPUSH            = 12,
395eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_RWINUPDATE         = 13,
396eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L5_FLUSH              = GENERIC_OPCODE_RV2PPQ_VALUE_L5_FLUSH,
397eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_INDICATE           = 15,
398eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_COPYGEN            = 16,
399eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_DBG_RDMA              = GENERIC_OPCODE_RV2PPQ_VALUE_DBG_RDMA,
400eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_DBG_RV2P              = GENERIC_OPCODE_RV2PPQ_VALUE_DBG_RV2P,
401eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L4_MQUPLOAD           = 19,
402eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_ISCSI_SGL_PLACE	    = 22,
403eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_ISCSI_RQ_PLACE 	    = 23,
404eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_ISCSI_RQ_FLUSH	    = 24,
405eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_ISCSI_SGL_FLUSH	    = 25,
406eef4f27bSRobert Mustacchi 
407eef4f27bSRobert Mustacchi     // Jumbo mode and L2 FLUSH are for Linux only
408eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L2_JUMBO_COMPLETION   = GENERIC_OPCODE_RV2PPQ_VALUE_L2_JUMBO_PLACE,
409eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L2_JUMBO_NOBUFFER     = 27,
410eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_L2_FLUSH_BD_CHAIN     = GENERIC_OPCODE_RV2PPQ_VALUE_L2_FLUSH_BD_CHAIN,
411eef4f27bSRobert Mustacchi     GENERIC_OPCODE_COMQ_VALUE_FLR                   = GENERIC_OPCODE_RV2PPQ_VALUE_FLR,
412*55fea89dSDan Cross     MAX_COMQ_OPCODE
413eef4f27bSRobert Mustacchi }GENERIC_OPCODE_COMQ_t ;
414eef4f27bSRobert Mustacchi 
415eef4f27bSRobert Mustacchi 
416eef4f27bSRobert Mustacchi typedef struct comq_generic_b
417eef4f27bSRobert Mustacchi {
418eef4f27bSRobert Mustacchi     u32_t cid;
419eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
420eef4f27bSRobert Mustacchi     u16_t operand_flags;
421eef4f27bSRobert Mustacchi     u8_t knum;
422eef4f27bSRobert Mustacchi     u8_t opcode;
423eef4f27bSRobert Mustacchi         #define GENERIC_OPCODE_COMQ_VALUE                   (0xff<<0)
424eef4f27bSRobert Mustacchi     u16_t operand16_2;
425eef4f27bSRobert Mustacchi     u16_t operand16_3;
426eef4f27bSRobert Mustacchi     u16_t operand16_4;
427eef4f27bSRobert Mustacchi     u16_t operand16_5;
428eef4f27bSRobert Mustacchi     u16_t operand16_6;
429eef4f27bSRobert Mustacchi     u16_t operand16_7;
430eef4f27bSRobert Mustacchi     u32_t operand32_2;
431eef4f27bSRobert Mustacchi     u32_t operand32_3;
432eef4f27bSRobert Mustacchi     u32_t operand32_4;
433eef4f27bSRobert Mustacchi     u8_t rdma_action;
434eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
435eef4f27bSRobert Mustacchi     u16_t cs16;
436eef4f27bSRobert Mustacchi } comq_generic_b_t;
437eef4f27bSRobert Mustacchi 
438eef4f27bSRobert Mustacchi typedef struct comq_generic_l
439eef4f27bSRobert Mustacchi {
440eef4f27bSRobert Mustacchi     u32_t cid;
441eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
442eef4f27bSRobert Mustacchi     u8_t opcode;
443eef4f27bSRobert Mustacchi     u8_t knum;
444eef4f27bSRobert Mustacchi     u16_t operand_flags;
445eef4f27bSRobert Mustacchi     u16_t operand16_3;
446eef4f27bSRobert Mustacchi     u16_t operand16_2;
447eef4f27bSRobert Mustacchi     u16_t operand16_5;
448eef4f27bSRobert Mustacchi     u16_t operand16_4;
449eef4f27bSRobert Mustacchi     u16_t operand16_7;
450eef4f27bSRobert Mustacchi     u16_t operand16_6;
451eef4f27bSRobert Mustacchi     u32_t operand32_2;
452eef4f27bSRobert Mustacchi     u32_t operand32_3;
453eef4f27bSRobert Mustacchi     u32_t operand32_4;
454eef4f27bSRobert Mustacchi     u16_t cs16;
455eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
456eef4f27bSRobert Mustacchi     u8_t rdma_action;
457eef4f27bSRobert Mustacchi } comq_generic_l_t;
458eef4f27bSRobert Mustacchi 
459eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
460eef4f27bSRobert Mustacchi     typedef comq_generic_l_t comq_generic_t;
461eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
462eef4f27bSRobert Mustacchi     typedef comq_generic_b_t comq_generic_t;
463eef4f27bSRobert Mustacchi #endif
464eef4f27bSRobert Mustacchi 
465eef4f27bSRobert Mustacchi 
466eef4f27bSRobert Mustacchi /*
467eef4f27bSRobert Mustacchi  *  comq_l2_completion definition
468eef4f27bSRobert Mustacchi  */
469eef4f27bSRobert Mustacchi typedef struct comq_l2_completion_b
470eef4f27bSRobert Mustacchi {
471eef4f27bSRobert Mustacchi     u32_t cid;
472eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
473eef4f27bSRobert Mustacchi     u16_t operand_flags;
474eef4f27bSRobert Mustacchi     u8_t knum;
475eef4f27bSRobert Mustacchi     u8_t opcode;
476eef4f27bSRobert Mustacchi     u16_t bits_status;
477eef4f27bSRobert Mustacchi     u16_t vlan_tag;
478eef4f27bSRobert Mustacchi     u16_t ip_xsum;
479eef4f27bSRobert Mustacchi     u16_t udp_tcp_xsum;
480eef4f27bSRobert Mustacchi     u16_t nx_bidx;
481eef4f27bSRobert Mustacchi     u16_t packet_length;  // total pkt len (MCP will need this info)
482eef4f27bSRobert Mustacchi     u16_t unused_0;
483eef4f27bSRobert Mustacchi     u16_t error_flags;
484eef4f27bSRobert Mustacchi     u32_t hash;
485eef4f27bSRobert Mustacchi     u32_t rt_bt;
486eef4f27bSRobert Mustacchi     u8_t rdma_action;
487eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
488eef4f27bSRobert Mustacchi     u16_t cs16;
489eef4f27bSRobert Mustacchi 
490eef4f27bSRobert Mustacchi } comq_l2_completion_b_t;
491eef4f27bSRobert Mustacchi 
492eef4f27bSRobert Mustacchi typedef struct comq_l2_completion_l
493eef4f27bSRobert Mustacchi {
494eef4f27bSRobert Mustacchi     u32_t cid;
495eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
496eef4f27bSRobert Mustacchi     u8_t opcode;
497eef4f27bSRobert Mustacchi     u8_t knum;
498eef4f27bSRobert Mustacchi     u16_t operand_flags;
499eef4f27bSRobert Mustacchi     u16_t vlan_tag;
500eef4f27bSRobert Mustacchi     u16_t bits_status;
501eef4f27bSRobert Mustacchi     u16_t udp_tcp_xsum;
502eef4f27bSRobert Mustacchi     u16_t ip_xsum;
503eef4f27bSRobert Mustacchi     u16_t packet_length;  // total pkt len (MCP will need this info)
504eef4f27bSRobert Mustacchi     u16_t nx_bidx;
505eef4f27bSRobert Mustacchi     u16_t error_flags;
506eef4f27bSRobert Mustacchi     u16_t unused_0;
507eef4f27bSRobert Mustacchi     u32_t hash;
508eef4f27bSRobert Mustacchi     u32_t rt_bt;
509eef4f27bSRobert Mustacchi     u16_t cs16;
510eef4f27bSRobert Mustacchi     u8_t cs16_pkt_len;
511eef4f27bSRobert Mustacchi     u8_t rdma_action;
512*55fea89dSDan Cross 
513eef4f27bSRobert Mustacchi } comq_l2_completion_l_t;
514eef4f27bSRobert Mustacchi 
515eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
516eef4f27bSRobert Mustacchi     typedef comq_l2_completion_l_t comq_l2_completion_t;
517eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
518eef4f27bSRobert Mustacchi     typedef comq_l2_completion_b_t comq_l2_completion_t;
519eef4f27bSRobert Mustacchi #endif
520eef4f27bSRobert Mustacchi 
521eef4f27bSRobert Mustacchi /*
522eef4f27bSRobert Mustacchi  *  comq_l2_nobuffer definition
523eef4f27bSRobert Mustacchi  */
524eef4f27bSRobert Mustacchi typedef struct comq_l2_nobuffer_b
525eef4f27bSRobert Mustacchi {
526eef4f27bSRobert Mustacchi     u32_t l2_nobuff_cid;
527eef4f27bSRobert Mustacchi     u32_t l2_nobuff_mbuf_cluster;
528eef4f27bSRobert Mustacchi     u16_t l2_nobuff_operand_flags;
529eef4f27bSRobert Mustacchi     u8_t l2_nobuff_knum;
530eef4f27bSRobert Mustacchi     u8_t l2_nobuff_opcode;
531eef4f27bSRobert Mustacchi     u16_t l2_nobuff_bits_status;
532eef4f27bSRobert Mustacchi     u16_t l2_nobuff_vlan_tag;
533eef4f27bSRobert Mustacchi     u16_t l2_nobuff_ip_xsum;
534eef4f27bSRobert Mustacchi     u16_t l2_nobuff_udp_tcp_xsum;
535eef4f27bSRobert Mustacchi     u16_t l2_nobuff_nx_bidx;
536eef4f27bSRobert Mustacchi     u16_t l2_nobuff_packet_length;  // total pkt len (MCP will need this info)
537eef4f27bSRobert Mustacchi     u16_t unused_1;
538eef4f27bSRobert Mustacchi     u16_t l2_nobuff_error_flags;
539eef4f27bSRobert Mustacchi     u32_t l2_nobuff_hash;
540eef4f27bSRobert Mustacchi     u32_t unused_2;
541eef4f27bSRobert Mustacchi     u8_t l2_nobuff_rdma_action;
542eef4f27bSRobert Mustacchi     u8_t l2_nobuff_cs16_pkt_len;
543eef4f27bSRobert Mustacchi     u16_t l2_nobuff_cs16;
544*55fea89dSDan Cross 
545eef4f27bSRobert Mustacchi } comq_l2_nobuffer_b_t;
546eef4f27bSRobert Mustacchi 
547eef4f27bSRobert Mustacchi typedef struct comq_l2_nobuffer_l
548eef4f27bSRobert Mustacchi {
549eef4f27bSRobert Mustacchi     u32_t l2_nobuff_cid;
550eef4f27bSRobert Mustacchi     u32_t l2_nobuff_mbuf_cluster;
551eef4f27bSRobert Mustacchi     u8_t l2_nobuff_opcode;
552eef4f27bSRobert Mustacchi     u8_t l2_nobuff_knum;
553eef4f27bSRobert Mustacchi     u16_t l2_nobuff_operand_flags;
554eef4f27bSRobert Mustacchi     u16_t l2_nobuff_vlan_tag;
555eef4f27bSRobert Mustacchi     u16_t l2_nobuff_bits_status;
556eef4f27bSRobert Mustacchi     u16_t l2_nobuff_udp_tcp_xsum;
557eef4f27bSRobert Mustacchi     u16_t l2_nobuff_ip_xsum;
558eef4f27bSRobert Mustacchi     u16_t l2_nobuff_packet_length;  // total pkt len (MCP will need this info)
559eef4f27bSRobert Mustacchi     u16_t l2_nobuff_nx_bidx;
560eef4f27bSRobert Mustacchi     u16_t l2_nobuff_error_flags;
561eef4f27bSRobert Mustacchi     u16_t unused_1;
562eef4f27bSRobert Mustacchi     u32_t l2_nobuff_hash;
563eef4f27bSRobert Mustacchi     u32_t unused_2;
564eef4f27bSRobert Mustacchi     u16_t l2_nobuff_cs16;
565eef4f27bSRobert Mustacchi     u8_t l2_nobuff_cs16_pkt_len;
566eef4f27bSRobert Mustacchi     u8_t l2_nobuff_rdma_action;
567*55fea89dSDan Cross 
568eef4f27bSRobert Mustacchi } comq_l2_nobuffer_l_t;
569eef4f27bSRobert Mustacchi 
570eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
571eef4f27bSRobert Mustacchi     typedef comq_l2_nobuffer_l_t comq_l2_nobuffer_t;
572eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
573eef4f27bSRobert Mustacchi     typedef comq_l2_nobuffer_b_t comq_l2_nobuffer_t;
574eef4f27bSRobert Mustacchi #endif
575eef4f27bSRobert Mustacchi 
576eef4f27bSRobert Mustacchi 
577eef4f27bSRobert Mustacchi /*
578eef4f27bSRobert Mustacchi  *  comq_l2_flr definition
579eef4f27bSRobert Mustacchi  */
580eef4f27bSRobert Mustacchi typedef struct comq_l2_flr_b
581eef4f27bSRobert Mustacchi {
582eef4f27bSRobert Mustacchi     u32_t cid;
583eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
584eef4f27bSRobert Mustacchi     u16_t operand_flags;
585eef4f27bSRobert Mustacchi     u8_t  knum;
586eef4f27bSRobert Mustacchi     u8_t  opcode;
587eef4f27bSRobert Mustacchi     u16_t bits_status;
588eef4f27bSRobert Mustacchi     u16_t vlan_tag;
589eef4f27bSRobert Mustacchi     u16_t ip_xsum;
590eef4f27bSRobert Mustacchi     u16_t udp_tcp_xsum;
591eef4f27bSRobert Mustacchi     u16_t nx_bidx;
592eef4f27bSRobert Mustacchi     u16_t unused_0;
593eef4f27bSRobert Mustacchi     u16_t unused_1;
594eef4f27bSRobert Mustacchi     u16_t error_flags;
595eef4f27bSRobert Mustacchi     u32_t hash;
596eef4f27bSRobert Mustacchi     u32_t unused_2;
597eef4f27bSRobert Mustacchi     u8_t  rdma_action;
598eef4f27bSRobert Mustacchi     u8_t  cs16_pkt_len;
599eef4f27bSRobert Mustacchi     u16_t cs16;
600*55fea89dSDan Cross 
601eef4f27bSRobert Mustacchi } comq_l2_flr_b_t;
602eef4f27bSRobert Mustacchi 
603eef4f27bSRobert Mustacchi typedef struct comq_l2_flr_l
604eef4f27bSRobert Mustacchi {
605eef4f27bSRobert Mustacchi     u32_t cid;
606eef4f27bSRobert Mustacchi     u32_t mbuf_cluster;
607eef4f27bSRobert Mustacchi     u8_t  opcode;
608eef4f27bSRobert Mustacchi     u8_t  knum;
609eef4f27bSRobert Mustacchi     u16_t operand_flags;
610eef4f27bSRobert Mustacchi     u16_t vlan_tag;
611eef4f27bSRobert Mustacchi     u16_t bits_status;
612eef4f27bSRobert Mustacchi     u16_t udp_tcp_xsum;
613eef4f27bSRobert Mustacchi     u16_t ip_xsum;
614eef4f27bSRobert Mustacchi     u16_t unused_0;
615eef4f27bSRobert Mustacchi     u16_t nx_bidx;
616eef4f27bSRobert Mustacchi     u16_t error_flags;
617eef4f27bSRobert Mustacchi     u16_t unused_1;
618eef4f27bSRobert Mustacchi     u32_t hash;
619eef4f27bSRobert Mustacchi     u32_t unused_2;
620eef4f27bSRobert Mustacchi     u16_t cs16;
621eef4f27bSRobert Mustacchi     u8_t  cs16_pkt_len;
622eef4f27bSRobert Mustacchi     u8_t  rdma_action;
623*55fea89dSDan Cross 
624eef4f27bSRobert Mustacchi } comq_l2_flr_l_t;
625eef4f27bSRobert Mustacchi 
626eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
627eef4f27bSRobert Mustacchi     typedef comq_l2_flr_l_t comq_l2_flr_t;
628eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
629eef4f27bSRobert Mustacchi     typedef comq_l2_flr_b_t comq_l2_flr_t;
630eef4f27bSRobert Mustacchi #endif
631eef4f27bSRobert Mustacchi 
632eef4f27bSRobert Mustacchi /*
633eef4f27bSRobert Mustacchi  * comxq_t
634eef4f27bSRobert Mustacchi  */
635eef4f27bSRobert Mustacchi typedef struct comxq_b
636eef4f27bSRobert Mustacchi {
637eef4f27bSRobert Mustacchi     u32_t cid;
638eef4f27bSRobert Mustacchi     u16_t flags;
639eef4f27bSRobert Mustacchi     u16_t unused1;
640eef4f27bSRobert Mustacchi     u32_t snd_next;
641eef4f27bSRobert Mustacchi }comxq_b_t;
642eef4f27bSRobert Mustacchi 
643eef4f27bSRobert Mustacchi typedef struct comxq_l
644eef4f27bSRobert Mustacchi {
645eef4f27bSRobert Mustacchi     u32_t cid;
646eef4f27bSRobert Mustacchi     u16_t unused1;
647eef4f27bSRobert Mustacchi     u16_t flags;
648eef4f27bSRobert Mustacchi     u32_t snd_next;
649eef4f27bSRobert Mustacchi }comxq_l_t;
650eef4f27bSRobert Mustacchi 
651eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
652eef4f27bSRobert Mustacchi     typedef comxq_l_t comxq_t;
653eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
654eef4f27bSRobert Mustacchi     typedef comxq_b_t comxq_t;
655eef4f27bSRobert Mustacchi #endif
656*55fea89dSDan Cross 
657eef4f27bSRobert Mustacchi /*
658eef4f27bSRobert Mustacchi  * comtq_t
659eef4f27bSRobert Mustacchi  */
660eef4f27bSRobert Mustacchi typedef struct comtq_b
661eef4f27bSRobert Mustacchi {
662eef4f27bSRobert Mustacchi     u32_t cid;
663eef4f27bSRobert Mustacchi     u32_t val;
664eef4f27bSRobert Mustacchi     u8_t  type;
665eef4f27bSRobert Mustacchi     u8_t  unused[3];
666eef4f27bSRobert Mustacchi }comtq_b_t;
667eef4f27bSRobert Mustacchi 
668eef4f27bSRobert Mustacchi typedef struct comtq_l
669eef4f27bSRobert Mustacchi {
670eef4f27bSRobert Mustacchi     u32_t cid;
671eef4f27bSRobert Mustacchi     u32_t val;
672eef4f27bSRobert Mustacchi     u8_t  unused[3];
673eef4f27bSRobert Mustacchi     u8_t  type;
674eef4f27bSRobert Mustacchi }comtq_l_t;
675eef4f27bSRobert Mustacchi 
676eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
677eef4f27bSRobert Mustacchi     typedef comtq_l_t comtq_t;
678eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
679eef4f27bSRobert Mustacchi     typedef comtq_b_t comtq_t;
680eef4f27bSRobert Mustacchi #endif
681eef4f27bSRobert Mustacchi 
682eef4f27bSRobert Mustacchi /*
683eef4f27bSRobert Mustacchi  * csq_t
684eef4f27bSRobert Mustacchi  */
685eef4f27bSRobert Mustacchi typedef struct csq_b
686eef4f27bSRobert Mustacchi {
687eef4f27bSRobert Mustacchi     u32_t cid;
688eef4f27bSRobert Mustacchi         // bit 7 lsb of CID is always 0, but CSQ can be enqueued by MQ or COM.
689eef4f27bSRobert Mustacchi         // For L4, we can use this bit to indicate the source
690eef4f27bSRobert Mustacchi         // Note that 7 lsb is ALWAYS masked out to be zero by HW
691eef4f27bSRobert Mustacchi         #define CSQ_SRC_MQ     0
692eef4f27bSRobert Mustacchi         #define CSQ_SRC_COM    0x80
693*55fea89dSDan Cross         #define CSQ_SRC_MASK   0xFF
694eef4f27bSRobert Mustacchi     u8_t  flags;
695eef4f27bSRobert Mustacchi     u8_t  unused[3];
696eef4f27bSRobert Mustacchi }csq_b_t;
697eef4f27bSRobert Mustacchi 
698eef4f27bSRobert Mustacchi typedef struct csq_l
699eef4f27bSRobert Mustacchi {
700eef4f27bSRobert Mustacchi     u32_t cid;
701eef4f27bSRobert Mustacchi     u8_t  unused[3];
702eef4f27bSRobert Mustacchi     u8_t  flags;
703eef4f27bSRobert Mustacchi }csq_l_t;
704eef4f27bSRobert Mustacchi 
705eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
706eef4f27bSRobert Mustacchi     typedef csq_l_t csq_t;
707eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
708eef4f27bSRobert Mustacchi     typedef csq_b_t csq_t;
709eef4f27bSRobert Mustacchi #endif
710eef4f27bSRobert Mustacchi 
711eef4f27bSRobert Mustacchi /*
712eef4f27bSRobert Mustacchi  * cpq_t
713eef4f27bSRobert Mustacchi  */
714eef4f27bSRobert Mustacchi typedef struct cpq_b
715eef4f27bSRobert Mustacchi {
716eef4f27bSRobert Mustacchi     u32_t cid;
717eef4f27bSRobert Mustacchi }cpq_b_t;
718eef4f27bSRobert Mustacchi 
719eef4f27bSRobert Mustacchi typedef struct cpq_l
720eef4f27bSRobert Mustacchi {
721eef4f27bSRobert Mustacchi     u32_t cid;
722eef4f27bSRobert Mustacchi }cpq_l_t;
723eef4f27bSRobert Mustacchi 
724eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
725eef4f27bSRobert Mustacchi     typedef cpq_l_t cpq_t;
726eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
727eef4f27bSRobert Mustacchi     typedef cpq_b_t cpq_t;
728eef4f27bSRobert Mustacchi #endif
729eef4f27bSRobert Mustacchi 
730eef4f27bSRobert Mustacchi /*
731eef4f27bSRobert Mustacchi  * rv2ptq_t
732eef4f27bSRobert Mustacchi  */
733eef4f27bSRobert Mustacchi typedef struct rv2ptq_b
734eef4f27bSRobert Mustacchi {
735eef4f27bSRobert Mustacchi     u32_t cid;
736eef4f27bSRobert Mustacchi }rv2ptq_b_t;
737eef4f27bSRobert Mustacchi 
738eef4f27bSRobert Mustacchi typedef struct rv2ptq_l
739eef4f27bSRobert Mustacchi {
740eef4f27bSRobert Mustacchi     u32_t cid;
741eef4f27bSRobert Mustacchi }rv2ptq_l_t;
742eef4f27bSRobert Mustacchi 
743eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
744eef4f27bSRobert Mustacchi     typedef rv2ptq_l_t rv2ptq_t;
745eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
746eef4f27bSRobert Mustacchi     typedef rv2ptq_b_t rv2ptq_t;
747eef4f27bSRobert Mustacchi #endif
748eef4f27bSRobert Mustacchi 
749eef4f27bSRobert Mustacchi 
750eef4f27bSRobert Mustacchi     /* TX FTQs */
751*55fea89dSDan Cross 
752eef4f27bSRobert Mustacchi typedef struct tschq_b
753eef4f27bSRobert Mustacchi {
754eef4f27bSRobert Mustacchi     u32_t cid;
755eef4f27bSRobert Mustacchi     u8_t  flags;
756eef4f27bSRobert Mustacchi     u8_t  unused[3];
757eef4f27bSRobert Mustacchi }tschq_b_t;
758eef4f27bSRobert Mustacchi 
759eef4f27bSRobert Mustacchi typedef struct tschq_l
760eef4f27bSRobert Mustacchi {
761eef4f27bSRobert Mustacchi     u32_t cid;
762eef4f27bSRobert Mustacchi     u8_t  unused[3];
763eef4f27bSRobert Mustacchi     u8_t  flags;
764eef4f27bSRobert Mustacchi }tschq_l_t;
765eef4f27bSRobert Mustacchi 
766eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
767eef4f27bSRobert Mustacchi     typedef tschq_l_t tschq_t;
768eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
769eef4f27bSRobert Mustacchi     typedef tschq_b_t tschq_t;
770eef4f27bSRobert Mustacchi #endif
771eef4f27bSRobert Mustacchi 
772eef4f27bSRobert Mustacchi typedef struct txpq_b
773eef4f27bSRobert Mustacchi {
774eef4f27bSRobert Mustacchi     u32_t cid;
775eef4f27bSRobert Mustacchi     u32_t bseq;
776eef4f27bSRobert Mustacchi     u8_t  flags_flags;
777eef4f27bSRobert Mustacchi     u8_t  cmd;
778eef4f27bSRobert Mustacchi     u8_t  xnum;
779eef4f27bSRobert Mustacchi     u8_t  protocol_flags;
780eef4f27bSRobert Mustacchi     u32_t tcp_rcv_nxt;
781eef4f27bSRobert Mustacchi }txpq_b_t;
782eef4f27bSRobert Mustacchi 
783eef4f27bSRobert Mustacchi typedef struct txpq_l
784eef4f27bSRobert Mustacchi {
785eef4f27bSRobert Mustacchi     u32_t cid;
786eef4f27bSRobert Mustacchi     u32_t bseq;
787eef4f27bSRobert Mustacchi     u8_t  protocol_flags;
788eef4f27bSRobert Mustacchi     u8_t  xnum;
789eef4f27bSRobert Mustacchi     u8_t  cmd;
790eef4f27bSRobert Mustacchi     u8_t  flags_flags;
791eef4f27bSRobert Mustacchi     u32_t tcp_rcv_nxt;
792eef4f27bSRobert Mustacchi }txpq_l_t;
793eef4f27bSRobert Mustacchi 
794eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
795eef4f27bSRobert Mustacchi     typedef txpq_l_t txpq_t;
796eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
797eef4f27bSRobert Mustacchi     typedef txpq_b_t txpq_t;
798eef4f27bSRobert Mustacchi #endif
799eef4f27bSRobert Mustacchi 
800eef4f27bSRobert Mustacchi typedef struct tdmaq_b
801eef4f27bSRobert Mustacchi {
802eef4f27bSRobert Mustacchi     u32_t cid;
803eef4f27bSRobert Mustacchi     tx_bidx_boff_t bidx_boff;
804eef4f27bSRobert Mustacchi     u32_t bseq;
805eef4f27bSRobert Mustacchi     u32_t snd_next;
806eef4f27bSRobert Mustacchi     u8_t  cmd;
807eef4f27bSRobert Mustacchi     u8_t  xnum;
808eef4f27bSRobert Mustacchi     u8_t  knum;
809eef4f27bSRobert Mustacchi     u8_t  unused1;
810eef4f27bSRobert Mustacchi     u32_t flags_flags;
811eef4f27bSRobert Mustacchi     u16_t nbytes;
812eef4f27bSRobert Mustacchi     u16_t hole0_boff;
813eef4f27bSRobert Mustacchi     u16_t hole1_boff;
814eef4f27bSRobert Mustacchi     u16_t hole2_boff;
815eef4f27bSRobert Mustacchi     u32_t hole0_fill;
816eef4f27bSRobert Mustacchi     u32_t hole1_fill;
817eef4f27bSRobert Mustacchi     u32_t hole2_fill;
818eef4f27bSRobert Mustacchi     u8_t  fnum;
819eef4f27bSRobert Mustacchi     u8_t  txp_act_cmd;
820eef4f27bSRobert Mustacchi     u16_t unused2;
821eef4f27bSRobert Mustacchi }tdmaq_b_t;
822eef4f27bSRobert Mustacchi 
823eef4f27bSRobert Mustacchi typedef struct tdmaq_l
824eef4f27bSRobert Mustacchi {
825eef4f27bSRobert Mustacchi     u32_t cid;
826eef4f27bSRobert Mustacchi     tx_bidx_boff_t bidx_boff;
827eef4f27bSRobert Mustacchi     u32_t bseq;
828eef4f27bSRobert Mustacchi     u32_t snd_next;
829eef4f27bSRobert Mustacchi     u8_t  unused1;
830eef4f27bSRobert Mustacchi     u8_t  knum;
831eef4f27bSRobert Mustacchi     u8_t  xnum;
832eef4f27bSRobert Mustacchi     u8_t  cmd;
833eef4f27bSRobert Mustacchi     u32_t flags_flags;
834eef4f27bSRobert Mustacchi     u16_t hole0_boff;
835eef4f27bSRobert Mustacchi     u16_t nbytes;
836eef4f27bSRobert Mustacchi     u16_t hole2_boff;
837eef4f27bSRobert Mustacchi     u16_t hole1_boff;
838eef4f27bSRobert Mustacchi     u32_t hole0_fill;
839eef4f27bSRobert Mustacchi     u32_t hole1_fill;
840eef4f27bSRobert Mustacchi     u32_t hole2_fill;
841eef4f27bSRobert Mustacchi     u16_t unused2;
842eef4f27bSRobert Mustacchi     u8_t  txp_act_cmd;
843eef4f27bSRobert Mustacchi     u8_t  fnum;
844eef4f27bSRobert Mustacchi }tdmaq_l_t;
845eef4f27bSRobert Mustacchi 
846eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
847eef4f27bSRobert Mustacchi     typedef tdmaq_l_t tdmaq_t;
848eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
849eef4f27bSRobert Mustacchi     typedef tdmaq_b_t tdmaq_t;
850eef4f27bSRobert Mustacchi #endif
851eef4f27bSRobert Mustacchi 
852eef4f27bSRobert Mustacchi typedef struct tpatq_b
853eef4f27bSRobert Mustacchi {
854eef4f27bSRobert Mustacchi     u32_t cid;
855eef4f27bSRobert Mustacchi     u16_t nbytes;
856eef4f27bSRobert Mustacchi     u8_t  xnum;
857eef4f27bSRobert Mustacchi     u8_t  knum;
858eef4f27bSRobert Mustacchi     u32_t flags_flags;
859eef4f27bSRobert Mustacchi     u16_t raw_chksum;
860eef4f27bSRobert Mustacchi     u16_t tpat_bidx;
861eef4f27bSRobert Mustacchi }tpatq_b_t;
862eef4f27bSRobert Mustacchi 
863eef4f27bSRobert Mustacchi typedef struct tpatq_l
864eef4f27bSRobert Mustacchi {
865eef4f27bSRobert Mustacchi     u32_t cid;
866eef4f27bSRobert Mustacchi     u8_t  knum;
867eef4f27bSRobert Mustacchi     u8_t  xnum;
868eef4f27bSRobert Mustacchi     u16_t nbytes;
869eef4f27bSRobert Mustacchi     u32_t flags_flags;
870eef4f27bSRobert Mustacchi     u16_t tpat_bidx;
871eef4f27bSRobert Mustacchi     u16_t raw_chksum;
872eef4f27bSRobert Mustacchi }tpatq_l_t;
873eef4f27bSRobert Mustacchi 
874eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
875eef4f27bSRobert Mustacchi     typedef tpatq_l_t tpatq_t;
876eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
877eef4f27bSRobert Mustacchi     typedef tpatq_b_t tpatq_t;
878eef4f27bSRobert Mustacchi #endif
879eef4f27bSRobert Mustacchi 
880*55fea89dSDan Cross typedef struct taspq_b
881eef4f27bSRobert Mustacchi {
882eef4f27bSRobert Mustacchi     u16_t taspq_hdr_skip;
883eef4f27bSRobert Mustacchi     u16_t taspq_hdr_post_skip;
884eef4f27bSRobert Mustacchi     u16_t taspq_hdr_size;
885eef4f27bSRobert Mustacchi     u16_t taspq_payload_skip;
886eef4f27bSRobert Mustacchi     u16_t taspq_payload_size;
887eef4f27bSRobert Mustacchi     u16_t taspq_flags;
888eef4f27bSRobert Mustacchi #if (TARGET_CHIP == 5709)
889eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_PKT_END                 TPATF_TASQ_FLAGS_PKT_END
890eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_MGMT_PACKET             TPATF_TASQ_FLAGS_MGMT_PACKET
891eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_CATCHUP        TPATF_TASQ_FLAGS_CATCHUP_PACKET
892eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DONT_GEN_CRC            TPATF_TASQ_FLAGS_DONT_GEN_CRC
893eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_RESERVED                TPATF_TASQ_FLAGS_RESERVED
894eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_EMAC               TPATF_TASQ_FLAGS_DEST_EMAC
895eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_MIRROR         TPATF_TASQ_FLAGS_DEST_RPC_MIRROR
896eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_LOOPBACK       TPATF_TASQ_FLAGS_DEST_RPC_LOOPBACK
897eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_MGMT_PKT_TAG            TPATF_TASQ_FLAGS_MGMT_PKT_TAG
898*55fea89dSDan Cross         #define TASPQ_FLAGS_CS16_VLD                TPATF_TASQ_FLAGS_CS16_VLD
899eef4f27bSRobert Mustacchi #else
900eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_PKT_END                 TPATF_TASPQ_FLAGS_PKT_END
901eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_MGMT_PACKET             TPATF_TASPQ_FLAGS_MGMT_PACKET
902eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_CATCHUP        TPATF_TASPQ_FLAGS_DEST_RPC_CATCHUP
903eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DONT_GEN_CRC            TPATF_TASPQ_FLAGS_DONT_GEN_CRC
904eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_RESERVED                TPATF_TASPQ_FLAGS_RESERVED
905eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_EMAC               TPATF_TASPQ_FLAGS_DEST_EMAC
906eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_MIRROR         TPATF_TASPQ_FLAGS_DEST_RPC_MIRROR
907eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_LOOPBACK       TPATF_TASPQ_FLAGS_DEST_RPC_LOOPBACK
908eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_MGMT_PKT_TAG            TPATF_TASPQ_FLAGS_MGMT_PKT_TAG
909*55fea89dSDan Cross         #define TASPQ_FLAGS_CS16_VLD                TPATF_TASPQ_FLAGS_CS16_VLD
910eef4f27bSRobert Mustacchi #endif
911eef4f27bSRobert Mustacchi     u16_t taspq_cs16;
912eef4f27bSRobert Mustacchi     u16_t taspq_uftq_cmd;  /* Only the upper 16 bit of the ftq cmd is used */
913eef4f27bSRobert Mustacchi #if (TARGET_CHIP == 5709)
914eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_CPY_DATA              TPATF_TASQ_FTQ_CMD_CPY_DATA
915eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_ADD_INTERVEN          TPATF_TASQ_FTQ_CMD_ADD_INTERVEN
916eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_ADD_DATA              TPATF_TASQ_FTQ_CMD_ADD_DATA
917eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_BUSY                  TPATF_TASQ_FTQ_CMD_BUSY
918eef4f27bSRobert Mustacchi #else
919eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_CPY_DATA              TPATF_TASPQ_FTQ_CMD_CPY_DATA
920eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_ADD_INTERVEN          TPATF_TASPQ_FTQ_CMD_ADD_INTERVEN
921eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_ADD_DATA              TPATF_TASPQ_FTQ_CMD_ADD_DATA
922eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_BUSY                  TPATF_TASPQ_FTQ_CMD_BUSY
923*55fea89dSDan Cross #endif
924eef4f27bSRobert Mustacchi } taspq_b_t;
925eef4f27bSRobert Mustacchi 
926*55fea89dSDan Cross typedef struct taspq_l
927eef4f27bSRobert Mustacchi {
928eef4f27bSRobert Mustacchi     u16_t taspq_hdr_post_skip;
929eef4f27bSRobert Mustacchi     u16_t taspq_hdr_skip;
930eef4f27bSRobert Mustacchi     u16_t taspq_payload_skip;
931eef4f27bSRobert Mustacchi     u16_t taspq_hdr_size;
932eef4f27bSRobert Mustacchi     u16_t taspq_flags;
933eef4f27bSRobert Mustacchi #if (TARGET_CHIP == 5709)
934eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_PKT_END                 TPATF_TASQ_FLAGS_PKT_END
935eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_MGMT_PACKET             TPATF_TASQ_FLAGS_MGMT_PACKET
936eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_CATCHUP        TPATF_TASQ_FLAGS_CATCHUP_PACKET
937eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DONT_GEN_CRC            TPATF_TASQ_FLAGS_DONT_GEN_CRC
938eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_RESERVED                TPATF_TASQ_FLAGS_RESERVED
939eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_EMAC               TPATF_TASQ_FLAGS_DEST_EMAC
940eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_MIRROR         TPATF_TASQ_FLAGS_DEST_RPC_MIRROR
941eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_LOOPBACK       TPATF_TASQ_FLAGS_DEST_RPC_LOOPBACK
942eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_MGMT_PKT_TAG            TPATF_TASQ_FLAGS_MGMT_PKT_TAG
943*55fea89dSDan Cross         #define TASPQ_FLAGS_CS16_VLD                TPATF_TASQ_FLAGS_CS16_VLD
944eef4f27bSRobert Mustacchi #else
945eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_PKT_END                 TPATF_TASPQ_FLAGS_PKT_END
946eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_MGMT_PACKET             TPATF_TASPQ_FLAGS_MGMT_PACKET
947eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_CATCHUP        TPATF_TASPQ_FLAGS_DEST_RPC_CATCHUP
948eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DONT_GEN_CRC            TPATF_TASPQ_FLAGS_DONT_GEN_CRC
949eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_RESERVED                TPATF_TASPQ_FLAGS_RESERVED
950eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_EMAC               TPATF_TASPQ_FLAGS_DEST_EMAC
951eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_MIRROR         TPATF_TASPQ_FLAGS_DEST_RPC_MIRROR
952eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_DEST_RPC_LOOPBACK       TPATF_TASPQ_FLAGS_DEST_RPC_LOOPBACK
953eef4f27bSRobert Mustacchi         #define TASPQ_FLAGS_MGMT_PKT_TAG            TPATF_TASPQ_FLAGS_MGMT_PKT_TAG
954*55fea89dSDan Cross         #define TASPQ_FLAGS_CS16_VLD                TPATF_TASPQ_FLAGS_CS16_VLD
955eef4f27bSRobert Mustacchi #endif
956eef4f27bSRobert Mustacchi     u16_t taspq_payload_size;
957eef4f27bSRobert Mustacchi     u16_t taspq_uftq_cmd;  /* Only the upper 16 bit of the ftq cmd is used */
958eef4f27bSRobert Mustacchi #if (TARGET_CHIP == 5709)
959eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_CPY_DATA              TPATF_TASQ_FTQ_CMD_CPY_DATA
960eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_ADD_INTERVEN          TPATF_TASQ_FTQ_CMD_ADD_INTERVEN
961eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_ADD_DATA              TPATF_TASQ_FTQ_CMD_ADD_DATA
962eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_BUSY                  TPATF_TASQ_FTQ_CMD_BUSY
963eef4f27bSRobert Mustacchi #else
964eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_CPY_DATA              TPATF_TASPQ_FTQ_CMD_CPY_DATA
965eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_ADD_INTERVEN          TPATF_TASPQ_FTQ_CMD_ADD_INTERVEN
966eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_ADD_DATA              TPATF_TASPQ_FTQ_CMD_ADD_DATA
967eef4f27bSRobert Mustacchi         #define TASPQ_FTQ_CMD_BUSY                  TPATF_TASPQ_FTQ_CMD_BUSY
968*55fea89dSDan Cross #endif
969eef4f27bSRobert Mustacchi     u16_t taspq_cs16;
970eef4f27bSRobert Mustacchi } taspq_l_t;
971eef4f27bSRobert Mustacchi 
972eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
973eef4f27bSRobert Mustacchi     typedef taspq_l_t taspq_t;
974eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
975eef4f27bSRobert Mustacchi     typedef taspq_b_t taspq_t;
976eef4f27bSRobert Mustacchi #endif
977*55fea89dSDan Cross 
978eef4f27bSRobert Mustacchi #endif /* _l2_ftq_h_ */
979