1*14b24e2bSVaishali Kulkarni /*
2*14b24e2bSVaishali Kulkarni * CDDL HEADER START
3*14b24e2bSVaishali Kulkarni *
4*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the
5*14b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1,  (the "License").
6*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
7*14b24e2bSVaishali Kulkarni *
8*14b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*14b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0.
10*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions
11*14b24e2bSVaishali Kulkarni * and limitations under the License.
12*14b24e2bSVaishali Kulkarni *
13*14b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each
14*14b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*14b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the
16*14b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying
17*14b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner]
18*14b24e2bSVaishali Kulkarni *
19*14b24e2bSVaishali Kulkarni * CDDL HEADER END
20*14b24e2bSVaishali Kulkarni */
21*14b24e2bSVaishali Kulkarni 
22*14b24e2bSVaishali Kulkarni /*
23*14b24e2bSVaishali Kulkarni * Copyright 2014-2017 Cavium, Inc.
24*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the Common Development
25*14b24e2bSVaishali Kulkarni * and Distribution License, v.1,  (the "License").
26*14b24e2bSVaishali Kulkarni 
27*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
28*14b24e2bSVaishali Kulkarni 
29*14b24e2bSVaishali Kulkarni * You can obtain a copy of the License at available
30*14b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0
31*14b24e2bSVaishali Kulkarni 
32*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions and
33*14b24e2bSVaishali Kulkarni * limitations under the License.
34*14b24e2bSVaishali Kulkarni */
35*14b24e2bSVaishali Kulkarni 
36*14b24e2bSVaishali Kulkarni #ifndef __ECORE_HSI_COMMON__
37*14b24e2bSVaishali Kulkarni #define __ECORE_HSI_COMMON__
38*14b24e2bSVaishali Kulkarni /********************************/
39*14b24e2bSVaishali Kulkarni /* Add include to common target */
40*14b24e2bSVaishali Kulkarni /********************************/
41*14b24e2bSVaishali Kulkarni #include "common_hsi.h"
42*14b24e2bSVaishali Kulkarni 
43*14b24e2bSVaishali Kulkarni 
44*14b24e2bSVaishali Kulkarni /*
45*14b24e2bSVaishali Kulkarni  * opcodes for the event ring
46*14b24e2bSVaishali Kulkarni  */
47*14b24e2bSVaishali Kulkarni enum common_event_opcode
48*14b24e2bSVaishali Kulkarni {
49*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_PF_START,
50*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_PF_STOP,
51*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_VF_START,
52*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_VF_STOP,
53*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_VF_PF_CHANNEL,
54*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_VF_FLR,
55*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_PF_UPDATE,
56*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_MALICIOUS_VF,
57*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_RL_UPDATE,
58*14b24e2bSVaishali Kulkarni 	COMMON_EVENT_EMPTY,
59*14b24e2bSVaishali Kulkarni 	MAX_COMMON_EVENT_OPCODE
60*14b24e2bSVaishali Kulkarni };
61*14b24e2bSVaishali Kulkarni 
62*14b24e2bSVaishali Kulkarni 
63*14b24e2bSVaishali Kulkarni /*
64*14b24e2bSVaishali Kulkarni  * Common Ramrod Command IDs
65*14b24e2bSVaishali Kulkarni  */
66*14b24e2bSVaishali Kulkarni enum common_ramrod_cmd_id
67*14b24e2bSVaishali Kulkarni {
68*14b24e2bSVaishali Kulkarni 	COMMON_RAMROD_UNUSED,
69*14b24e2bSVaishali Kulkarni 	COMMON_RAMROD_PF_START /* PF Function Start Ramrod */,
70*14b24e2bSVaishali Kulkarni 	COMMON_RAMROD_PF_STOP /* PF Function Stop Ramrod */,
71*14b24e2bSVaishali Kulkarni 	COMMON_RAMROD_VF_START /* VF Function Start */,
72*14b24e2bSVaishali Kulkarni 	COMMON_RAMROD_VF_STOP /* VF Function Stop Ramrod */,
73*14b24e2bSVaishali Kulkarni 	COMMON_RAMROD_PF_UPDATE /* PF update Ramrod */,
74*14b24e2bSVaishali Kulkarni 	COMMON_RAMROD_RL_UPDATE /* QCN/DCQCN RL update Ramrod */,
75*14b24e2bSVaishali Kulkarni 	COMMON_RAMROD_EMPTY /* Empty Ramrod */,
76*14b24e2bSVaishali Kulkarni 	MAX_COMMON_RAMROD_CMD_ID
77*14b24e2bSVaishali Kulkarni };
78*14b24e2bSVaishali Kulkarni 
79*14b24e2bSVaishali Kulkarni 
80*14b24e2bSVaishali Kulkarni /*
81*14b24e2bSVaishali Kulkarni  * The core storm context for the Ystorm
82*14b24e2bSVaishali Kulkarni  */
83*14b24e2bSVaishali Kulkarni struct ystorm_core_conn_st_ctx
84*14b24e2bSVaishali Kulkarni {
85*14b24e2bSVaishali Kulkarni 	__le32 reserved[4];
86*14b24e2bSVaishali Kulkarni };
87*14b24e2bSVaishali Kulkarni 
88*14b24e2bSVaishali Kulkarni /*
89*14b24e2bSVaishali Kulkarni  * The core storm context for the Pstorm
90*14b24e2bSVaishali Kulkarni  */
91*14b24e2bSVaishali Kulkarni struct pstorm_core_conn_st_ctx
92*14b24e2bSVaishali Kulkarni {
93*14b24e2bSVaishali Kulkarni 	__le32 reserved[4];
94*14b24e2bSVaishali Kulkarni };
95*14b24e2bSVaishali Kulkarni 
96*14b24e2bSVaishali Kulkarni /*
97*14b24e2bSVaishali Kulkarni  * Core Slowpath Connection storm context of Xstorm
98*14b24e2bSVaishali Kulkarni  */
99*14b24e2bSVaishali Kulkarni struct xstorm_core_conn_st_ctx
100*14b24e2bSVaishali Kulkarni {
101*14b24e2bSVaishali Kulkarni 	__le32 spq_base_lo /* SPQ Ring Base Address low dword */;
102*14b24e2bSVaishali Kulkarni 	__le32 spq_base_hi /* SPQ Ring Base Address high dword */;
103*14b24e2bSVaishali Kulkarni 	struct regpair consolid_base_addr /* Consolidation Ring Base Address */;
104*14b24e2bSVaishali Kulkarni 	__le16 spq_cons /* SPQ Ring Consumer */;
105*14b24e2bSVaishali Kulkarni 	__le16 consolid_cons /* Consolidation Ring Consumer */;
106*14b24e2bSVaishali Kulkarni 	__le32 reserved0[55] /* Pad to 15 cycles */;
107*14b24e2bSVaishali Kulkarni };
108*14b24e2bSVaishali Kulkarni 
109*14b24e2bSVaishali Kulkarni struct e4_xstorm_core_conn_ag_ctx
110*14b24e2bSVaishali Kulkarni {
111*14b24e2bSVaishali Kulkarni 	u8 reserved0 /* cdu_validation */;
112*14b24e2bSVaishali Kulkarni 	u8 core_state /* state */;
113*14b24e2bSVaishali Kulkarni 	u8 flags0;
114*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_MASK         0x1 /* exist_in_qm0 */
115*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT        0
116*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_MASK            0x1 /* exist_in_qm1 */
117*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_SHIFT           1
118*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_MASK            0x1 /* exist_in_qm2 */
119*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_SHIFT           2
120*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_MASK         0x1 /* exist_in_qm3 */
121*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT        3
122*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_MASK            0x1 /* bit4 */
123*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_SHIFT           4
124*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_MASK            0x1 /* cf_array_active */
125*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_SHIFT           5
126*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_MASK            0x1 /* bit6 */
127*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_SHIFT           6
128*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_MASK            0x1 /* bit7 */
129*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_SHIFT           7
130*14b24e2bSVaishali Kulkarni 	u8 flags1;
131*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_MASK            0x1 /* bit8 */
132*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_SHIFT           0
133*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_MASK            0x1 /* bit9 */
134*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_SHIFT           1
135*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_MASK            0x1 /* bit10 */
136*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_SHIFT           2
137*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_MASK                0x1 /* bit11 */
138*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_SHIFT               3
139*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_MASK                0x1 /* bit12 */
140*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_SHIFT               4
141*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_MASK                0x1 /* bit13 */
142*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_SHIFT               5
143*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_MASK       0x1 /* bit14 */
144*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT      6
145*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_MASK         0x1 /* bit15 */
146*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT        7
147*14b24e2bSVaishali Kulkarni 	u8 flags2;
148*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF0_MASK                  0x3 /* timer0cf */
149*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF0_SHIFT                 0
150*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF1_MASK                  0x3 /* timer1cf */
151*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF1_SHIFT                 2
152*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF2_MASK                  0x3 /* timer2cf */
153*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF2_SHIFT                 4
154*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF3_MASK                  0x3 /* timer_stop_all */
155*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF3_SHIFT                 6
156*14b24e2bSVaishali Kulkarni 	u8 flags3;
157*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF4_MASK                  0x3 /* cf4 */
158*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF4_SHIFT                 0
159*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF5_MASK                  0x3 /* cf5 */
160*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF5_SHIFT                 2
161*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF6_MASK                  0x3 /* cf6 */
162*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF6_SHIFT                 4
163*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF7_MASK                  0x3 /* cf7 */
164*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF7_SHIFT                 6
165*14b24e2bSVaishali Kulkarni 	u8 flags4;
166*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF8_MASK                  0x3 /* cf8 */
167*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF8_SHIFT                 0
168*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF9_MASK                  0x3 /* cf9 */
169*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF9_SHIFT                 2
170*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF10_MASK                 0x3 /* cf10 */
171*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF10_SHIFT                4
172*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF11_MASK                 0x3 /* cf11 */
173*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF11_SHIFT                6
174*14b24e2bSVaishali Kulkarni 	u8 flags5;
175*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF12_MASK                 0x3 /* cf12 */
176*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF12_SHIFT                0
177*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF13_MASK                 0x3 /* cf13 */
178*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF13_SHIFT                2
179*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF14_MASK                 0x3 /* cf14 */
180*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF14_SHIFT                4
181*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF15_MASK                 0x3 /* cf15 */
182*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF15_SHIFT                6
183*14b24e2bSVaishali Kulkarni 	u8 flags6;
184*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_MASK     0x3 /* cf16 */
185*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_SHIFT    0
186*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF17_MASK                 0x3 /* cf_array_cf */
187*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF17_SHIFT                2
188*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_MASK                0x3 /* cf18 */
189*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_SHIFT               4
190*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_MASK         0x3 /* cf19 */
191*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_SHIFT        6
192*14b24e2bSVaishali Kulkarni 	u8 flags7;
193*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_MASK             0x3 /* cf20 */
194*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_SHIFT            0
195*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_MASK           0x3 /* cf21 */
196*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_SHIFT          2
197*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_MASK            0x3 /* cf22 */
198*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_SHIFT           4
199*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_MASK                0x1 /* cf0en */
200*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT               6
201*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_MASK                0x1 /* cf1en */
202*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT               7
203*14b24e2bSVaishali Kulkarni 	u8 flags8;
204*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_MASK                0x1 /* cf2en */
205*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT               0
206*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_MASK                0x1 /* cf3en */
207*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT               1
208*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_MASK                0x1 /* cf4en */
209*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT               2
210*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_MASK                0x1 /* cf5en */
211*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT               3
212*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_MASK                0x1 /* cf6en */
213*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT               4
214*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_MASK                0x1 /* cf7en */
215*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT               5
216*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_MASK                0x1 /* cf8en */
217*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT               6
218*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_MASK                0x1 /* cf9en */
219*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT               7
220*14b24e2bSVaishali Kulkarni 	u8 flags9;
221*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_MASK               0x1 /* cf10en */
222*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT              0
223*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_MASK               0x1 /* cf11en */
224*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_SHIFT              1
225*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_MASK               0x1 /* cf12en */
226*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_SHIFT              2
227*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_MASK               0x1 /* cf13en */
228*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_SHIFT              3
229*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_MASK               0x1 /* cf14en */
230*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_SHIFT              4
231*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_MASK               0x1 /* cf15en */
232*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_SHIFT              5
233*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_MASK  0x1 /* cf16en */
234*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_SHIFT 6
235*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_MASK               0x1 /* cf_array_cf_en */
236*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_SHIFT              7
237*14b24e2bSVaishali Kulkarni 	u8 flags10;
238*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_MASK             0x1 /* cf18en */
239*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_SHIFT            0
240*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_MASK      0x1 /* cf19en */
241*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT     1
242*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_MASK          0x1 /* cf20en */
243*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT         2
244*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_MASK           0x1 /* cf21en */
245*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_SHIFT          3
246*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_MASK         0x1 /* cf22en */
247*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT        4
248*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_MASK               0x1 /* cf23en */
249*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_SHIFT              5
250*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_MASK           0x1 /* rule0en */
251*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_SHIFT          6
252*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_MASK           0x1 /* rule1en */
253*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_SHIFT          7
254*14b24e2bSVaishali Kulkarni 	u8 flags11;
255*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_MASK           0x1 /* rule2en */
256*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_SHIFT          0
257*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_MASK           0x1 /* rule3en */
258*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_SHIFT          1
259*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_MASK       0x1 /* rule4en */
260*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT      2
261*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK              0x1 /* rule5en */
262*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT             3
263*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK              0x1 /* rule6en */
264*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT             4
265*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK              0x1 /* rule7en */
266*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT             5
267*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_MASK         0x1 /* rule8en */
268*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_SHIFT        6
269*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_MASK              0x1 /* rule9en */
270*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_SHIFT             7
271*14b24e2bSVaishali Kulkarni 	u8 flags12;
272*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_MASK             0x1 /* rule10en */
273*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_SHIFT            0
274*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_MASK             0x1 /* rule11en */
275*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_SHIFT            1
276*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_MASK         0x1 /* rule12en */
277*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_SHIFT        2
278*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_MASK         0x1 /* rule13en */
279*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_SHIFT        3
280*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_MASK             0x1 /* rule14en */
281*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_SHIFT            4
282*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_MASK             0x1 /* rule15en */
283*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_SHIFT            5
284*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_MASK             0x1 /* rule16en */
285*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_SHIFT            6
286*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_MASK             0x1 /* rule17en */
287*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_SHIFT            7
288*14b24e2bSVaishali Kulkarni 	u8 flags13;
289*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_MASK             0x1 /* rule18en */
290*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_SHIFT            0
291*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_MASK             0x1 /* rule19en */
292*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_SHIFT            1
293*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_MASK         0x1 /* rule20en */
294*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_SHIFT        2
295*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_MASK         0x1 /* rule21en */
296*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_SHIFT        3
297*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_MASK         0x1 /* rule22en */
298*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_SHIFT        4
299*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_MASK         0x1 /* rule23en */
300*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_SHIFT        5
301*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_MASK         0x1 /* rule24en */
302*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_SHIFT        6
303*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_MASK         0x1 /* rule25en */
304*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_SHIFT        7
305*14b24e2bSVaishali Kulkarni 	u8 flags14;
306*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_MASK                0x1 /* bit16 */
307*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_SHIFT               0
308*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_MASK                0x1 /* bit17 */
309*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_SHIFT               1
310*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_MASK                0x1 /* bit18 */
311*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_SHIFT               2
312*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_MASK                0x1 /* bit19 */
313*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_SHIFT               3
314*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_MASK                0x1 /* bit20 */
315*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_SHIFT               4
316*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_MASK                0x1 /* bit21 */
317*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_SHIFT               5
318*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF23_MASK                 0x3 /* cf23 */
319*14b24e2bSVaishali Kulkarni #define E4_XSTORM_CORE_CONN_AG_CTX_CF23_SHIFT                6
320*14b24e2bSVaishali Kulkarni 	u8 byte2 /* byte2 */;
321*14b24e2bSVaishali Kulkarni 	__le16 physical_q0 /* physical_q0 */;
322*14b24e2bSVaishali Kulkarni 	__le16 consolid_prod /* physical_q1 */;
323*14b24e2bSVaishali Kulkarni 	__le16 reserved16 /* physical_q2 */;
324*14b24e2bSVaishali Kulkarni 	__le16 tx_bd_cons /* word3 */;
325*14b24e2bSVaishali Kulkarni 	__le16 tx_bd_or_spq_prod /* word4 */;
326*14b24e2bSVaishali Kulkarni 	__le16 word5 /* word5 */;
327*14b24e2bSVaishali Kulkarni 	__le16 conn_dpi /* conn_dpi */;
328*14b24e2bSVaishali Kulkarni 	u8 byte3 /* byte3 */;
329*14b24e2bSVaishali Kulkarni 	u8 byte4 /* byte4 */;
330*14b24e2bSVaishali Kulkarni 	u8 byte5 /* byte5 */;
331*14b24e2bSVaishali Kulkarni 	u8 byte6 /* byte6 */;
332*14b24e2bSVaishali Kulkarni 	__le32 reg0 /* reg0 */;
333*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
334*14b24e2bSVaishali Kulkarni 	__le32 reg2 /* reg2 */;
335*14b24e2bSVaishali Kulkarni 	__le32 reg3 /* reg3 */;
336*14b24e2bSVaishali Kulkarni 	__le32 reg4 /* reg4 */;
337*14b24e2bSVaishali Kulkarni 	__le32 reg5 /* cf_array0 */;
338*14b24e2bSVaishali Kulkarni 	__le32 reg6 /* cf_array1 */;
339*14b24e2bSVaishali Kulkarni 	__le16 word7 /* word7 */;
340*14b24e2bSVaishali Kulkarni 	__le16 word8 /* word8 */;
341*14b24e2bSVaishali Kulkarni 	__le16 word9 /* word9 */;
342*14b24e2bSVaishali Kulkarni 	__le16 word10 /* word10 */;
343*14b24e2bSVaishali Kulkarni 	__le32 reg7 /* reg7 */;
344*14b24e2bSVaishali Kulkarni 	__le32 reg8 /* reg8 */;
345*14b24e2bSVaishali Kulkarni 	__le32 reg9 /* reg9 */;
346*14b24e2bSVaishali Kulkarni 	u8 byte7 /* byte7 */;
347*14b24e2bSVaishali Kulkarni 	u8 byte8 /* byte8 */;
348*14b24e2bSVaishali Kulkarni 	u8 byte9 /* byte9 */;
349*14b24e2bSVaishali Kulkarni 	u8 byte10 /* byte10 */;
350*14b24e2bSVaishali Kulkarni 	u8 byte11 /* byte11 */;
351*14b24e2bSVaishali Kulkarni 	u8 byte12 /* byte12 */;
352*14b24e2bSVaishali Kulkarni 	u8 byte13 /* byte13 */;
353*14b24e2bSVaishali Kulkarni 	u8 byte14 /* byte14 */;
354*14b24e2bSVaishali Kulkarni 	u8 byte15 /* byte15 */;
355*14b24e2bSVaishali Kulkarni 	u8 e5_reserved /* e5_reserved */;
356*14b24e2bSVaishali Kulkarni 	__le16 word11 /* word11 */;
357*14b24e2bSVaishali Kulkarni 	__le32 reg10 /* reg10 */;
358*14b24e2bSVaishali Kulkarni 	__le32 reg11 /* reg11 */;
359*14b24e2bSVaishali Kulkarni 	__le32 reg12 /* reg12 */;
360*14b24e2bSVaishali Kulkarni 	__le32 reg13 /* reg13 */;
361*14b24e2bSVaishali Kulkarni 	__le32 reg14 /* reg14 */;
362*14b24e2bSVaishali Kulkarni 	__le32 reg15 /* reg15 */;
363*14b24e2bSVaishali Kulkarni 	__le32 reg16 /* reg16 */;
364*14b24e2bSVaishali Kulkarni 	__le32 reg17 /* reg17 */;
365*14b24e2bSVaishali Kulkarni 	__le32 reg18 /* reg18 */;
366*14b24e2bSVaishali Kulkarni 	__le32 reg19 /* reg19 */;
367*14b24e2bSVaishali Kulkarni 	__le16 word12 /* word12 */;
368*14b24e2bSVaishali Kulkarni 	__le16 word13 /* word13 */;
369*14b24e2bSVaishali Kulkarni 	__le16 word14 /* word14 */;
370*14b24e2bSVaishali Kulkarni 	__le16 word15 /* word15 */;
371*14b24e2bSVaishali Kulkarni };
372*14b24e2bSVaishali Kulkarni 
373*14b24e2bSVaishali Kulkarni struct e4_tstorm_core_conn_ag_ctx
374*14b24e2bSVaishali Kulkarni {
375*14b24e2bSVaishali Kulkarni 	u8 byte0 /* cdu_validation */;
376*14b24e2bSVaishali Kulkarni 	u8 byte1 /* state */;
377*14b24e2bSVaishali Kulkarni 	u8 flags0;
378*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1 /* exist_in_qm0 */
379*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
380*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1 /* exist_in_qm1 */
381*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
382*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_MASK     0x1 /* bit2 */
383*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_SHIFT    2
384*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_MASK     0x1 /* bit3 */
385*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_SHIFT    3
386*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_MASK     0x1 /* bit4 */
387*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_SHIFT    4
388*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_MASK     0x1 /* bit5 */
389*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_SHIFT    5
390*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3 /* timer0cf */
391*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF0_SHIFT     6
392*14b24e2bSVaishali Kulkarni 	u8 flags1;
393*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3 /* timer1cf */
394*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF1_SHIFT     0
395*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3 /* timer2cf */
396*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF2_SHIFT     2
397*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF3_MASK      0x3 /* timer_stop_all */
398*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF3_SHIFT     4
399*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF4_MASK      0x3 /* cf4 */
400*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF4_SHIFT     6
401*14b24e2bSVaishali Kulkarni 	u8 flags2;
402*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF5_MASK      0x3 /* cf5 */
403*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF5_SHIFT     0
404*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF6_MASK      0x3 /* cf6 */
405*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF6_SHIFT     2
406*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF7_MASK      0x3 /* cf7 */
407*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF7_SHIFT     4
408*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF8_MASK      0x3 /* cf8 */
409*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF8_SHIFT     6
410*14b24e2bSVaishali Kulkarni 	u8 flags3;
411*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF9_MASK      0x3 /* cf9 */
412*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF9_SHIFT     0
413*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF10_MASK     0x3 /* cf10 */
414*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF10_SHIFT    2
415*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1 /* cf0en */
416*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   4
417*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1 /* cf1en */
418*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   5
419*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1 /* cf2en */
420*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   6
421*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_MASK    0x1 /* cf3en */
422*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT   7
423*14b24e2bSVaishali Kulkarni 	u8 flags4;
424*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_MASK    0x1 /* cf4en */
425*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT   0
426*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_MASK    0x1 /* cf5en */
427*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT   1
428*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_MASK    0x1 /* cf6en */
429*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT   2
430*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_MASK    0x1 /* cf7en */
431*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT   3
432*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_MASK    0x1 /* cf8en */
433*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT   4
434*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_MASK    0x1 /* cf9en */
435*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT   5
436*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_MASK   0x1 /* cf10en */
437*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT  6
438*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1 /* rule0en */
439*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
440*14b24e2bSVaishali Kulkarni 	u8 flags5;
441*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1 /* rule1en */
442*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
443*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1 /* rule2en */
444*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
445*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1 /* rule3en */
446*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
447*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1 /* rule4en */
448*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
449*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK  0x1 /* rule5en */
450*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
451*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK  0x1 /* rule6en */
452*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
453*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK  0x1 /* rule7en */
454*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
455*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_MASK  0x1 /* rule8en */
456*14b24e2bSVaishali Kulkarni #define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
457*14b24e2bSVaishali Kulkarni 	__le32 reg0 /* reg0 */;
458*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
459*14b24e2bSVaishali Kulkarni 	__le32 reg2 /* reg2 */;
460*14b24e2bSVaishali Kulkarni 	__le32 reg3 /* reg3 */;
461*14b24e2bSVaishali Kulkarni 	__le32 reg4 /* reg4 */;
462*14b24e2bSVaishali Kulkarni 	__le32 reg5 /* reg5 */;
463*14b24e2bSVaishali Kulkarni 	__le32 reg6 /* reg6 */;
464*14b24e2bSVaishali Kulkarni 	__le32 reg7 /* reg7 */;
465*14b24e2bSVaishali Kulkarni 	__le32 reg8 /* reg8 */;
466*14b24e2bSVaishali Kulkarni 	u8 byte2 /* byte2 */;
467*14b24e2bSVaishali Kulkarni 	u8 byte3 /* byte3 */;
468*14b24e2bSVaishali Kulkarni 	__le16 word0 /* word0 */;
469*14b24e2bSVaishali Kulkarni 	u8 byte4 /* byte4 */;
470*14b24e2bSVaishali Kulkarni 	u8 byte5 /* byte5 */;
471*14b24e2bSVaishali Kulkarni 	__le16 word1 /* word1 */;
472*14b24e2bSVaishali Kulkarni 	__le16 word2 /* conn_dpi */;
473*14b24e2bSVaishali Kulkarni 	__le16 word3 /* word3 */;
474*14b24e2bSVaishali Kulkarni 	__le32 reg9 /* reg9 */;
475*14b24e2bSVaishali Kulkarni 	__le32 reg10 /* reg10 */;
476*14b24e2bSVaishali Kulkarni };
477*14b24e2bSVaishali Kulkarni 
478*14b24e2bSVaishali Kulkarni struct e4_ustorm_core_conn_ag_ctx
479*14b24e2bSVaishali Kulkarni {
480*14b24e2bSVaishali Kulkarni 	u8 reserved /* cdu_validation */;
481*14b24e2bSVaishali Kulkarni 	u8 byte1 /* state */;
482*14b24e2bSVaishali Kulkarni 	u8 flags0;
483*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1 /* exist_in_qm0 */
484*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
485*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1 /* exist_in_qm1 */
486*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
487*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3 /* timer0cf */
488*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF0_SHIFT     2
489*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3 /* timer1cf */
490*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF1_SHIFT     4
491*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3 /* timer2cf */
492*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF2_SHIFT     6
493*14b24e2bSVaishali Kulkarni 	u8 flags1;
494*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF3_MASK      0x3 /* timer_stop_all */
495*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF3_SHIFT     0
496*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF4_MASK      0x3 /* cf4 */
497*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF4_SHIFT     2
498*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF5_MASK      0x3 /* cf5 */
499*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF5_SHIFT     4
500*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF6_MASK      0x3 /* cf6 */
501*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF6_SHIFT     6
502*14b24e2bSVaishali Kulkarni 	u8 flags2;
503*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1 /* cf0en */
504*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   0
505*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1 /* cf1en */
506*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   1
507*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1 /* cf2en */
508*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   2
509*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_MASK    0x1 /* cf3en */
510*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT   3
511*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_MASK    0x1 /* cf4en */
512*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT   4
513*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_MASK    0x1 /* cf5en */
514*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT   5
515*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_MASK    0x1 /* cf6en */
516*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT   6
517*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1 /* rule0en */
518*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
519*14b24e2bSVaishali Kulkarni 	u8 flags3;
520*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1 /* rule1en */
521*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
522*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1 /* rule2en */
523*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
524*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1 /* rule3en */
525*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
526*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1 /* rule4en */
527*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
528*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK  0x1 /* rule5en */
529*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
530*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK  0x1 /* rule6en */
531*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
532*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK  0x1 /* rule7en */
533*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
534*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK  0x1 /* rule8en */
535*14b24e2bSVaishali Kulkarni #define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
536*14b24e2bSVaishali Kulkarni 	u8 byte2 /* byte2 */;
537*14b24e2bSVaishali Kulkarni 	u8 byte3 /* byte3 */;
538*14b24e2bSVaishali Kulkarni 	__le16 word0 /* conn_dpi */;
539*14b24e2bSVaishali Kulkarni 	__le16 word1 /* word1 */;
540*14b24e2bSVaishali Kulkarni 	__le32 rx_producers /* reg0 */;
541*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
542*14b24e2bSVaishali Kulkarni 	__le32 reg2 /* reg2 */;
543*14b24e2bSVaishali Kulkarni 	__le32 reg3 /* reg3 */;
544*14b24e2bSVaishali Kulkarni 	__le16 word2 /* word2 */;
545*14b24e2bSVaishali Kulkarni 	__le16 word3 /* word3 */;
546*14b24e2bSVaishali Kulkarni };
547*14b24e2bSVaishali Kulkarni 
548*14b24e2bSVaishali Kulkarni /*
549*14b24e2bSVaishali Kulkarni  * The core storm context for the Mstorm
550*14b24e2bSVaishali Kulkarni  */
551*14b24e2bSVaishali Kulkarni struct mstorm_core_conn_st_ctx
552*14b24e2bSVaishali Kulkarni {
553*14b24e2bSVaishali Kulkarni 	__le32 reserved[24];
554*14b24e2bSVaishali Kulkarni };
555*14b24e2bSVaishali Kulkarni 
556*14b24e2bSVaishali Kulkarni /*
557*14b24e2bSVaishali Kulkarni  * The core storm context for the Ustorm
558*14b24e2bSVaishali Kulkarni  */
559*14b24e2bSVaishali Kulkarni struct ustorm_core_conn_st_ctx
560*14b24e2bSVaishali Kulkarni {
561*14b24e2bSVaishali Kulkarni 	__le32 reserved[4];
562*14b24e2bSVaishali Kulkarni };
563*14b24e2bSVaishali Kulkarni 
564*14b24e2bSVaishali Kulkarni /*
565*14b24e2bSVaishali Kulkarni  * core connection context
566*14b24e2bSVaishali Kulkarni  */
567*14b24e2bSVaishali Kulkarni struct core_conn_context
568*14b24e2bSVaishali Kulkarni {
569*14b24e2bSVaishali Kulkarni 	struct ystorm_core_conn_st_ctx ystorm_st_context /* ystorm storm context */;
570*14b24e2bSVaishali Kulkarni 	struct regpair ystorm_st_padding[2] /* padding */;
571*14b24e2bSVaishali Kulkarni 	struct pstorm_core_conn_st_ctx pstorm_st_context /* pstorm storm context */;
572*14b24e2bSVaishali Kulkarni 	struct regpair pstorm_st_padding[2] /* padding */;
573*14b24e2bSVaishali Kulkarni 	struct xstorm_core_conn_st_ctx xstorm_st_context /* xstorm storm context */;
574*14b24e2bSVaishali Kulkarni 	struct e4_xstorm_core_conn_ag_ctx xstorm_ag_context /* xstorm aggregative context */;
575*14b24e2bSVaishali Kulkarni 	struct e4_tstorm_core_conn_ag_ctx tstorm_ag_context /* tstorm aggregative context */;
576*14b24e2bSVaishali Kulkarni 	struct e4_ustorm_core_conn_ag_ctx ustorm_ag_context /* ustorm aggregative context */;
577*14b24e2bSVaishali Kulkarni 	struct mstorm_core_conn_st_ctx mstorm_st_context /* mstorm storm context */;
578*14b24e2bSVaishali Kulkarni 	struct ustorm_core_conn_st_ctx ustorm_st_context /* ustorm storm context */;
579*14b24e2bSVaishali Kulkarni 	struct regpair ustorm_st_padding[2] /* padding */;
580*14b24e2bSVaishali Kulkarni };
581*14b24e2bSVaishali Kulkarni 
582*14b24e2bSVaishali Kulkarni 
583*14b24e2bSVaishali Kulkarni /*
584*14b24e2bSVaishali Kulkarni  * How ll2 should deal with packet upon errors
585*14b24e2bSVaishali Kulkarni  */
586*14b24e2bSVaishali Kulkarni enum core_error_handle
587*14b24e2bSVaishali Kulkarni {
588*14b24e2bSVaishali Kulkarni 	LL2_DROP_PACKET /* If error occurs drop packet */,
589*14b24e2bSVaishali Kulkarni 	LL2_DO_NOTHING /* If error occurs do nothing */,
590*14b24e2bSVaishali Kulkarni 	LL2_ASSERT /* If error occurs assert */,
591*14b24e2bSVaishali Kulkarni 	MAX_CORE_ERROR_HANDLE
592*14b24e2bSVaishali Kulkarni };
593*14b24e2bSVaishali Kulkarni 
594*14b24e2bSVaishali Kulkarni 
595*14b24e2bSVaishali Kulkarni /*
596*14b24e2bSVaishali Kulkarni  * opcodes for the event ring
597*14b24e2bSVaishali Kulkarni  */
598*14b24e2bSVaishali Kulkarni enum core_event_opcode
599*14b24e2bSVaishali Kulkarni {
600*14b24e2bSVaishali Kulkarni 	CORE_EVENT_TX_QUEUE_START,
601*14b24e2bSVaishali Kulkarni 	CORE_EVENT_TX_QUEUE_STOP,
602*14b24e2bSVaishali Kulkarni 	CORE_EVENT_RX_QUEUE_START,
603*14b24e2bSVaishali Kulkarni 	CORE_EVENT_RX_QUEUE_STOP,
604*14b24e2bSVaishali Kulkarni 	CORE_EVENT_RX_QUEUE_FLUSH,
605*14b24e2bSVaishali Kulkarni 	MAX_CORE_EVENT_OPCODE
606*14b24e2bSVaishali Kulkarni };
607*14b24e2bSVaishali Kulkarni 
608*14b24e2bSVaishali Kulkarni 
609*14b24e2bSVaishali Kulkarni /*
610*14b24e2bSVaishali Kulkarni  * The L4 pseudo checksum mode for Core
611*14b24e2bSVaishali Kulkarni  */
612*14b24e2bSVaishali Kulkarni enum core_l4_pseudo_checksum_mode
613*14b24e2bSVaishali Kulkarni {
614*14b24e2bSVaishali Kulkarni 	CORE_L4_PSEUDO_CSUM_CORRECT_LENGTH /* Pseudo Checksum on packet is calculated with the correct packet length. */,
615*14b24e2bSVaishali Kulkarni 	CORE_L4_PSEUDO_CSUM_ZERO_LENGTH /* Pseudo Checksum on packet is calculated with zero length. */,
616*14b24e2bSVaishali Kulkarni 	MAX_CORE_L4_PSEUDO_CHECKSUM_MODE
617*14b24e2bSVaishali Kulkarni };
618*14b24e2bSVaishali Kulkarni 
619*14b24e2bSVaishali Kulkarni 
620*14b24e2bSVaishali Kulkarni /*
621*14b24e2bSVaishali Kulkarni  * Light-L2 RX Producers in Tstorm RAM
622*14b24e2bSVaishali Kulkarni  */
623*14b24e2bSVaishali Kulkarni struct core_ll2_port_stats
624*14b24e2bSVaishali Kulkarni {
625*14b24e2bSVaishali Kulkarni 	struct regpair gsi_invalid_hdr;
626*14b24e2bSVaishali Kulkarni 	struct regpair gsi_invalid_pkt_length;
627*14b24e2bSVaishali Kulkarni 	struct regpair gsi_unsupported_pkt_typ;
628*14b24e2bSVaishali Kulkarni 	struct regpair gsi_crcchksm_error;
629*14b24e2bSVaishali Kulkarni };
630*14b24e2bSVaishali Kulkarni 
631*14b24e2bSVaishali Kulkarni 
632*14b24e2bSVaishali Kulkarni /*
633*14b24e2bSVaishali Kulkarni  * Ethernet TX Per Queue Stats
634*14b24e2bSVaishali Kulkarni  */
635*14b24e2bSVaishali Kulkarni struct core_ll2_pstorm_per_queue_stat
636*14b24e2bSVaishali Kulkarni {
637*14b24e2bSVaishali Kulkarni 	struct regpair sent_ucast_bytes /* number of total bytes sent without errors */;
638*14b24e2bSVaishali Kulkarni 	struct regpair sent_mcast_bytes /* number of total bytes sent without errors */;
639*14b24e2bSVaishali Kulkarni 	struct regpair sent_bcast_bytes /* number of total bytes sent without errors */;
640*14b24e2bSVaishali Kulkarni 	struct regpair sent_ucast_pkts /* number of total packets sent without errors */;
641*14b24e2bSVaishali Kulkarni 	struct regpair sent_mcast_pkts /* number of total packets sent without errors */;
642*14b24e2bSVaishali Kulkarni 	struct regpair sent_bcast_pkts /* number of total packets sent without errors */;
643*14b24e2bSVaishali Kulkarni };
644*14b24e2bSVaishali Kulkarni 
645*14b24e2bSVaishali Kulkarni 
646*14b24e2bSVaishali Kulkarni /*
647*14b24e2bSVaishali Kulkarni  * Light-L2 RX Producers in Tstorm RAM
648*14b24e2bSVaishali Kulkarni  */
649*14b24e2bSVaishali Kulkarni struct core_ll2_rx_prod
650*14b24e2bSVaishali Kulkarni {
651*14b24e2bSVaishali Kulkarni 	__le16 bd_prod /* BD Producer */;
652*14b24e2bSVaishali Kulkarni 	__le16 cqe_prod /* CQE Producer */;
653*14b24e2bSVaishali Kulkarni 	__le32 reserved;
654*14b24e2bSVaishali Kulkarni };
655*14b24e2bSVaishali Kulkarni 
656*14b24e2bSVaishali Kulkarni 
657*14b24e2bSVaishali Kulkarni struct core_ll2_tstorm_per_queue_stat
658*14b24e2bSVaishali Kulkarni {
659*14b24e2bSVaishali Kulkarni 	struct regpair packet_too_big_discard /* Number of packets discarded because they are bigger than MTU */;
660*14b24e2bSVaishali Kulkarni 	struct regpair no_buff_discard /* Number of packets discarded due to lack of host buffers */;
661*14b24e2bSVaishali Kulkarni };
662*14b24e2bSVaishali Kulkarni 
663*14b24e2bSVaishali Kulkarni 
664*14b24e2bSVaishali Kulkarni struct core_ll2_ustorm_per_queue_stat
665*14b24e2bSVaishali Kulkarni {
666*14b24e2bSVaishali Kulkarni 	struct regpair rcv_ucast_bytes;
667*14b24e2bSVaishali Kulkarni 	struct regpair rcv_mcast_bytes;
668*14b24e2bSVaishali Kulkarni 	struct regpair rcv_bcast_bytes;
669*14b24e2bSVaishali Kulkarni 	struct regpair rcv_ucast_pkts;
670*14b24e2bSVaishali Kulkarni 	struct regpair rcv_mcast_pkts;
671*14b24e2bSVaishali Kulkarni 	struct regpair rcv_bcast_pkts;
672*14b24e2bSVaishali Kulkarni };
673*14b24e2bSVaishali Kulkarni 
674*14b24e2bSVaishali Kulkarni 
675*14b24e2bSVaishali Kulkarni /*
676*14b24e2bSVaishali Kulkarni  * Core Ramrod Command IDs (light L2)
677*14b24e2bSVaishali Kulkarni  */
678*14b24e2bSVaishali Kulkarni enum core_ramrod_cmd_id
679*14b24e2bSVaishali Kulkarni {
680*14b24e2bSVaishali Kulkarni 	CORE_RAMROD_UNUSED,
681*14b24e2bSVaishali Kulkarni 	CORE_RAMROD_RX_QUEUE_START /* RX Queue Start Ramrod */,
682*14b24e2bSVaishali Kulkarni 	CORE_RAMROD_TX_QUEUE_START /* TX Queue Start Ramrod */,
683*14b24e2bSVaishali Kulkarni 	CORE_RAMROD_RX_QUEUE_STOP /* RX Queue Stop Ramrod */,
684*14b24e2bSVaishali Kulkarni 	CORE_RAMROD_TX_QUEUE_STOP /* TX Queue Stop Ramrod */,
685*14b24e2bSVaishali Kulkarni 	CORE_RAMROD_RX_QUEUE_FLUSH /* RX Flush queue Ramrod */,
686*14b24e2bSVaishali Kulkarni 	MAX_CORE_RAMROD_CMD_ID
687*14b24e2bSVaishali Kulkarni };
688*14b24e2bSVaishali Kulkarni 
689*14b24e2bSVaishali Kulkarni 
690*14b24e2bSVaishali Kulkarni /*
691*14b24e2bSVaishali Kulkarni  * Core RX CQE Type for Light L2
692*14b24e2bSVaishali Kulkarni  */
693*14b24e2bSVaishali Kulkarni enum core_roce_flavor_type
694*14b24e2bSVaishali Kulkarni {
695*14b24e2bSVaishali Kulkarni 	CORE_ROCE,
696*14b24e2bSVaishali Kulkarni 	CORE_RROCE,
697*14b24e2bSVaishali Kulkarni 	MAX_CORE_ROCE_FLAVOR_TYPE
698*14b24e2bSVaishali Kulkarni };
699*14b24e2bSVaishali Kulkarni 
700*14b24e2bSVaishali Kulkarni 
701*14b24e2bSVaishali Kulkarni /*
702*14b24e2bSVaishali Kulkarni  * Specifies how ll2 should deal with packets errors: packet_too_big and no_buff
703*14b24e2bSVaishali Kulkarni  */
704*14b24e2bSVaishali Kulkarni struct core_rx_action_on_error
705*14b24e2bSVaishali Kulkarni {
706*14b24e2bSVaishali Kulkarni 	u8 error_type;
707*14b24e2bSVaishali Kulkarni #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_MASK  0x3 /* ll2 how to handle error packet_too_big (use enum core_error_handle) */
708*14b24e2bSVaishali Kulkarni #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_SHIFT 0
709*14b24e2bSVaishali Kulkarni #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_MASK         0x3 /* ll2 how to handle error with no_buff  (use enum core_error_handle) */
710*14b24e2bSVaishali Kulkarni #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_SHIFT        2
711*14b24e2bSVaishali Kulkarni #define CORE_RX_ACTION_ON_ERROR_RESERVED_MASK        0xF
712*14b24e2bSVaishali Kulkarni #define CORE_RX_ACTION_ON_ERROR_RESERVED_SHIFT       4
713*14b24e2bSVaishali Kulkarni };
714*14b24e2bSVaishali Kulkarni 
715*14b24e2bSVaishali Kulkarni 
716*14b24e2bSVaishali Kulkarni /*
717*14b24e2bSVaishali Kulkarni  * Core RX BD for Light L2
718*14b24e2bSVaishali Kulkarni  */
719*14b24e2bSVaishali Kulkarni struct core_rx_bd
720*14b24e2bSVaishali Kulkarni {
721*14b24e2bSVaishali Kulkarni 	struct regpair addr;
722*14b24e2bSVaishali Kulkarni 	__le16 reserved[4];
723*14b24e2bSVaishali Kulkarni };
724*14b24e2bSVaishali Kulkarni 
725*14b24e2bSVaishali Kulkarni 
726*14b24e2bSVaishali Kulkarni /*
727*14b24e2bSVaishali Kulkarni  * Core RX CM offload BD for Light L2
728*14b24e2bSVaishali Kulkarni  */
729*14b24e2bSVaishali Kulkarni struct core_rx_bd_with_buff_len
730*14b24e2bSVaishali Kulkarni {
731*14b24e2bSVaishali Kulkarni 	struct regpair addr;
732*14b24e2bSVaishali Kulkarni 	__le16 buff_length;
733*14b24e2bSVaishali Kulkarni 	__le16 reserved[3];
734*14b24e2bSVaishali Kulkarni };
735*14b24e2bSVaishali Kulkarni 
736*14b24e2bSVaishali Kulkarni /*
737*14b24e2bSVaishali Kulkarni  * Core RX CM offload BD for Light L2
738*14b24e2bSVaishali Kulkarni  */
739*14b24e2bSVaishali Kulkarni union core_rx_bd_union
740*14b24e2bSVaishali Kulkarni {
741*14b24e2bSVaishali Kulkarni 	struct core_rx_bd rx_bd /* Core Rx Bd static buffer size */;
742*14b24e2bSVaishali Kulkarni 	struct core_rx_bd_with_buff_len rx_bd_with_len /* Core Rx Bd with dynamic buffer length */;
743*14b24e2bSVaishali Kulkarni };
744*14b24e2bSVaishali Kulkarni 
745*14b24e2bSVaishali Kulkarni 
746*14b24e2bSVaishali Kulkarni 
747*14b24e2bSVaishali Kulkarni /*
748*14b24e2bSVaishali Kulkarni  * Opaque Data for Light L2 RX CQE .
749*14b24e2bSVaishali Kulkarni  */
750*14b24e2bSVaishali Kulkarni struct core_rx_cqe_opaque_data
751*14b24e2bSVaishali Kulkarni {
752*14b24e2bSVaishali Kulkarni 	__le32 data[2] /* Opaque CQE Data */;
753*14b24e2bSVaishali Kulkarni };
754*14b24e2bSVaishali Kulkarni 
755*14b24e2bSVaishali Kulkarni 
756*14b24e2bSVaishali Kulkarni /*
757*14b24e2bSVaishali Kulkarni  * Core RX CQE Type for Light L2
758*14b24e2bSVaishali Kulkarni  */
759*14b24e2bSVaishali Kulkarni enum core_rx_cqe_type
760*14b24e2bSVaishali Kulkarni {
761*14b24e2bSVaishali Kulkarni 	CORE_RX_CQE_ILLIGAL_TYPE /* Bad RX Cqe type */,
762*14b24e2bSVaishali Kulkarni 	CORE_RX_CQE_TYPE_REGULAR /* Regular Core RX CQE */,
763*14b24e2bSVaishali Kulkarni 	CORE_RX_CQE_TYPE_GSI_OFFLOAD /* Fp Gsi offload RX CQE */,
764*14b24e2bSVaishali Kulkarni 	CORE_RX_CQE_TYPE_SLOW_PATH /* Slow path Core RX CQE */,
765*14b24e2bSVaishali Kulkarni 	MAX_CORE_RX_CQE_TYPE
766*14b24e2bSVaishali Kulkarni };
767*14b24e2bSVaishali Kulkarni 
768*14b24e2bSVaishali Kulkarni 
769*14b24e2bSVaishali Kulkarni /*
770*14b24e2bSVaishali Kulkarni  * Core RX CQE for Light L2 .
771*14b24e2bSVaishali Kulkarni  */
772*14b24e2bSVaishali Kulkarni struct core_rx_fast_path_cqe
773*14b24e2bSVaishali Kulkarni {
774*14b24e2bSVaishali Kulkarni 	u8 type /* CQE type */;
775*14b24e2bSVaishali Kulkarni 	u8 placement_offset /* Offset (in bytes) of the packet from start of the buffer */;
776*14b24e2bSVaishali Kulkarni 	struct parsing_and_err_flags parse_flags /* Parsing and error flags from the parser */;
777*14b24e2bSVaishali Kulkarni 	__le16 packet_length /* Total packet length (from the parser) */;
778*14b24e2bSVaishali Kulkarni 	__le16 vlan /* 802.1q VLAN tag */;
779*14b24e2bSVaishali Kulkarni 	struct core_rx_cqe_opaque_data opaque_data /* Opaque Data */;
780*14b24e2bSVaishali Kulkarni 	struct parsing_err_flags err_flags /* bit- map: each bit represents a specific error. errors indications are provided by the cracker. see spec for detailed description */;
781*14b24e2bSVaishali Kulkarni 	__le16 reserved0;
782*14b24e2bSVaishali Kulkarni 	__le32 reserved1[3];
783*14b24e2bSVaishali Kulkarni };
784*14b24e2bSVaishali Kulkarni 
785*14b24e2bSVaishali Kulkarni /*
786*14b24e2bSVaishali Kulkarni  * Core Rx CM offload CQE .
787*14b24e2bSVaishali Kulkarni  */
788*14b24e2bSVaishali Kulkarni struct core_rx_gsi_offload_cqe
789*14b24e2bSVaishali Kulkarni {
790*14b24e2bSVaishali Kulkarni 	u8 type /* CQE type */;
791*14b24e2bSVaishali Kulkarni 	u8 data_length_error /* set if gsi data is bigger than buff */;
792*14b24e2bSVaishali Kulkarni 	struct parsing_and_err_flags parse_flags /* Parsing and error flags from the parser */;
793*14b24e2bSVaishali Kulkarni 	__le16 data_length /* Total packet length (from the parser) */;
794*14b24e2bSVaishali Kulkarni 	__le16 vlan /* 802.1q VLAN tag */;
795*14b24e2bSVaishali Kulkarni 	__le32 src_mac_addrhi /* hi 4 bytes source mac address */;
796*14b24e2bSVaishali Kulkarni 	__le16 src_mac_addrlo /* lo 2 bytes of source mac address */;
797*14b24e2bSVaishali Kulkarni 	__le16 qp_id /* These are the lower 16 bit of QP id in RoCE BTH header */;
798*14b24e2bSVaishali Kulkarni 	__le32 gid_dst[4] /* Gid destination address */;
799*14b24e2bSVaishali Kulkarni };
800*14b24e2bSVaishali Kulkarni 
801*14b24e2bSVaishali Kulkarni /*
802*14b24e2bSVaishali Kulkarni  * Core RX CQE for Light L2 .
803*14b24e2bSVaishali Kulkarni  */
804*14b24e2bSVaishali Kulkarni struct core_rx_slow_path_cqe
805*14b24e2bSVaishali Kulkarni {
806*14b24e2bSVaishali Kulkarni 	u8 type /* CQE type */;
807*14b24e2bSVaishali Kulkarni 	u8 ramrod_cmd_id;
808*14b24e2bSVaishali Kulkarni 	__le16 echo;
809*14b24e2bSVaishali Kulkarni 	struct core_rx_cqe_opaque_data opaque_data /* Opaque Data */;
810*14b24e2bSVaishali Kulkarni 	__le32 reserved1[5];
811*14b24e2bSVaishali Kulkarni };
812*14b24e2bSVaishali Kulkarni 
813*14b24e2bSVaishali Kulkarni /*
814*14b24e2bSVaishali Kulkarni  * Core RX CM offload BD for Light L2
815*14b24e2bSVaishali Kulkarni  */
816*14b24e2bSVaishali Kulkarni union core_rx_cqe_union
817*14b24e2bSVaishali Kulkarni {
818*14b24e2bSVaishali Kulkarni 	struct core_rx_fast_path_cqe rx_cqe_fp /* Fast path CQE */;
819*14b24e2bSVaishali Kulkarni 	struct core_rx_gsi_offload_cqe rx_cqe_gsi /* GSI offload CQE */;
820*14b24e2bSVaishali Kulkarni 	struct core_rx_slow_path_cqe rx_cqe_sp /* Slow path CQE */;
821*14b24e2bSVaishali Kulkarni };
822*14b24e2bSVaishali Kulkarni 
823*14b24e2bSVaishali Kulkarni 
824*14b24e2bSVaishali Kulkarni 
825*14b24e2bSVaishali Kulkarni 
826*14b24e2bSVaishali Kulkarni 
827*14b24e2bSVaishali Kulkarni /*
828*14b24e2bSVaishali Kulkarni  * Ramrod data for rx queue start ramrod
829*14b24e2bSVaishali Kulkarni  */
830*14b24e2bSVaishali Kulkarni struct core_rx_start_ramrod_data
831*14b24e2bSVaishali Kulkarni {
832*14b24e2bSVaishali Kulkarni 	struct regpair bd_base /* bd address of the first bd page */;
833*14b24e2bSVaishali Kulkarni 	struct regpair cqe_pbl_addr /* Base address on host of CQE PBL */;
834*14b24e2bSVaishali Kulkarni 	__le16 mtu /* Maximum transmission unit */;
835*14b24e2bSVaishali Kulkarni 	__le16 sb_id /* Status block ID */;
836*14b24e2bSVaishali Kulkarni 	u8 sb_index /* index of the protocol index */;
837*14b24e2bSVaishali Kulkarni 	u8 complete_cqe_flg /* post completion to the CQE ring if set */;
838*14b24e2bSVaishali Kulkarni 	u8 complete_event_flg /* post completion to the event ring if set */;
839*14b24e2bSVaishali Kulkarni 	u8 drop_ttl0_flg /* drop packet with ttl0 if set */;
840*14b24e2bSVaishali Kulkarni 	__le16 num_of_pbl_pages /* Num of pages in CQE PBL */;
841*14b24e2bSVaishali Kulkarni 	u8 inner_vlan_removal_en /* if set, 802.1q tags will be removed and copied to CQE */;
842*14b24e2bSVaishali Kulkarni 	u8 queue_id /* Light L2 RX Queue ID */;
843*14b24e2bSVaishali Kulkarni 	u8 main_func_queue /* Is this the main queue for the PF */;
844*14b24e2bSVaishali Kulkarni 	u8 mf_si_bcast_accept_all /* Duplicate broadcast packets to LL2 main queue in mf_si mode. Valid if main_func_queue is set. */;
845*14b24e2bSVaishali Kulkarni 	u8 mf_si_mcast_accept_all /* Duplicate multicast packets to LL2 main queue in mf_si mode. Valid if main_func_queue is set. */;
846*14b24e2bSVaishali Kulkarni 	struct core_rx_action_on_error action_on_error /* Specifies how ll2 should deal with packets errors: packet_too_big and no_buff */;
847*14b24e2bSVaishali Kulkarni 	u8 gsi_offload_flag /* set when in GSI offload mode on ROCE connection */;
848*14b24e2bSVaishali Kulkarni 	u8 reserved[7];
849*14b24e2bSVaishali Kulkarni };
850*14b24e2bSVaishali Kulkarni 
851*14b24e2bSVaishali Kulkarni 
852*14b24e2bSVaishali Kulkarni /*
853*14b24e2bSVaishali Kulkarni  * Ramrod data for rx queue stop ramrod
854*14b24e2bSVaishali Kulkarni  */
855*14b24e2bSVaishali Kulkarni struct core_rx_stop_ramrod_data
856*14b24e2bSVaishali Kulkarni {
857*14b24e2bSVaishali Kulkarni 	u8 complete_cqe_flg /* post completion to the CQE ring if set */;
858*14b24e2bSVaishali Kulkarni 	u8 complete_event_flg /* post completion to the event ring if set */;
859*14b24e2bSVaishali Kulkarni 	u8 queue_id /* Light L2 RX Queue ID */;
860*14b24e2bSVaishali Kulkarni 	u8 reserved1;
861*14b24e2bSVaishali Kulkarni 	__le16 reserved2[2];
862*14b24e2bSVaishali Kulkarni };
863*14b24e2bSVaishali Kulkarni 
864*14b24e2bSVaishali Kulkarni 
865*14b24e2bSVaishali Kulkarni /*
866*14b24e2bSVaishali Kulkarni  * Flags for Core TX BD
867*14b24e2bSVaishali Kulkarni  */
868*14b24e2bSVaishali Kulkarni struct core_tx_bd_data
869*14b24e2bSVaishali Kulkarni {
870*14b24e2bSVaishali Kulkarni 	__le16 as_bitfield;
871*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_FORCE_VLAN_MODE_MASK      0x1 /* Do not allow additional VLAN manipulations on this packet (DCB) */
872*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_FORCE_VLAN_MODE_SHIFT     0
873*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_VLAN_INSERTION_MASK       0x1 /* Insert VLAN into packet */
874*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_VLAN_INSERTION_SHIFT      1
875*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_START_BD_MASK             0x1 /* This is the first BD of the packet (for debug) */
876*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_START_BD_SHIFT            2
877*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_IP_CSUM_MASK              0x1 /* Calculate the IP checksum for the packet */
878*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_IP_CSUM_SHIFT             3
879*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_L4_CSUM_MASK              0x1 /* Calculate the L4 checksum for the packet */
880*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_L4_CSUM_SHIFT             4
881*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_IPV6_EXT_MASK             0x1 /* Packet is IPv6 with extensions */
882*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_IPV6_EXT_SHIFT            5
883*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_L4_PROTOCOL_MASK          0x1 /* If IPv6+ext, and if l4_csum is 1, than this field indicates L4 protocol: 0-TCP, 1-UDP */
884*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_L4_PROTOCOL_SHIFT         6
885*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_MASK  0x1 /* The pseudo checksum mode to place in the L4 checksum field. Required only when IPv6+ext and l4_csum is set. (use enum core_l4_pseudo_checksum_mode) */
886*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_SHIFT 7
887*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_NBDS_MASK                 0xF /* Number of BDs that make up one packet - width wide enough to present CORE_LL2_TX_MAX_BDS_PER_PACKET */
888*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_NBDS_SHIFT                8
889*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_ROCE_FLAV_MASK            0x1 /* Use roce_flavor enum - Differentiate between Roce flavors is valid when connType is ROCE (use enum core_roce_flavor_type) */
890*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_ROCE_FLAV_SHIFT           12
891*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_IP_LEN_MASK               0x1 /* Calculate ip length */
892*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_IP_LEN_SHIFT              13
893*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_RESERVED0_MASK            0x3
894*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_DATA_RESERVED0_SHIFT           14
895*14b24e2bSVaishali Kulkarni };
896*14b24e2bSVaishali Kulkarni 
897*14b24e2bSVaishali Kulkarni /*
898*14b24e2bSVaishali Kulkarni  * Core TX BD for Light L2
899*14b24e2bSVaishali Kulkarni  */
900*14b24e2bSVaishali Kulkarni struct core_tx_bd
901*14b24e2bSVaishali Kulkarni {
902*14b24e2bSVaishali Kulkarni 	struct regpair addr /* Buffer Address */;
903*14b24e2bSVaishali Kulkarni 	__le16 nbytes /* Number of Bytes in Buffer */;
904*14b24e2bSVaishali Kulkarni 	__le16 nw_vlan_or_lb_echo /* Network packets: VLAN to insert to packet (if insertion flag set) LoopBack packets: echo data to pass to Rx */;
905*14b24e2bSVaishali Kulkarni 	struct core_tx_bd_data bd_data /* BD Flags */;
906*14b24e2bSVaishali Kulkarni 	__le16 bitfield1;
907*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_L4_HDR_OFFSET_W_MASK  0x3FFF /* L4 Header Offset from start of packet (in Words). This is needed if both l4_csum and ipv6_ext are set */
908*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_L4_HDR_OFFSET_W_SHIFT 0
909*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_TX_DST_MASK           0x3 /* Packet destination - Network, Loopback or Drop (use enum core_tx_dest) */
910*14b24e2bSVaishali Kulkarni #define CORE_TX_BD_TX_DST_SHIFT          14
911*14b24e2bSVaishali Kulkarni };
912*14b24e2bSVaishali Kulkarni 
913*14b24e2bSVaishali Kulkarni 
914*14b24e2bSVaishali Kulkarni 
915*14b24e2bSVaishali Kulkarni /*
916*14b24e2bSVaishali Kulkarni  * Light L2 TX Destination
917*14b24e2bSVaishali Kulkarni  */
918*14b24e2bSVaishali Kulkarni enum core_tx_dest
919*14b24e2bSVaishali Kulkarni {
920*14b24e2bSVaishali Kulkarni 	CORE_TX_DEST_NW /* TX Destination to the Network */,
921*14b24e2bSVaishali Kulkarni 	CORE_TX_DEST_LB /* TX Destination to the Loopback */,
922*14b24e2bSVaishali Kulkarni 	CORE_TX_DEST_RESERVED,
923*14b24e2bSVaishali Kulkarni 	CORE_TX_DEST_DROP /* TX Drop */,
924*14b24e2bSVaishali Kulkarni 	MAX_CORE_TX_DEST
925*14b24e2bSVaishali Kulkarni };
926*14b24e2bSVaishali Kulkarni 
927*14b24e2bSVaishali Kulkarni 
928*14b24e2bSVaishali Kulkarni /*
929*14b24e2bSVaishali Kulkarni  * Ramrod data for tx queue start ramrod
930*14b24e2bSVaishali Kulkarni  */
931*14b24e2bSVaishali Kulkarni struct core_tx_start_ramrod_data
932*14b24e2bSVaishali Kulkarni {
933*14b24e2bSVaishali Kulkarni 	struct regpair pbl_base_addr /* Address of the pbl page */;
934*14b24e2bSVaishali Kulkarni 	__le16 mtu /* Maximum transmission unit */;
935*14b24e2bSVaishali Kulkarni 	__le16 sb_id /* Status block ID */;
936*14b24e2bSVaishali Kulkarni 	u8 sb_index /* Status block protocol index */;
937*14b24e2bSVaishali Kulkarni 	u8 stats_en /* Statistics Enable */;
938*14b24e2bSVaishali Kulkarni 	u8 stats_id /* Statistics Counter ID */;
939*14b24e2bSVaishali Kulkarni 	u8 conn_type /* connection type that loaded ll2 */;
940*14b24e2bSVaishali Kulkarni 	__le16 pbl_size /* Number of BD pages pointed by PBL */;
941*14b24e2bSVaishali Kulkarni 	__le16 qm_pq_id /* QM PQ ID */;
942*14b24e2bSVaishali Kulkarni 	u8 gsi_offload_flag /* set when in GSI offload mode on ROCE connection */;
943*14b24e2bSVaishali Kulkarni 	u8 resrved[3];
944*14b24e2bSVaishali Kulkarni };
945*14b24e2bSVaishali Kulkarni 
946*14b24e2bSVaishali Kulkarni 
947*14b24e2bSVaishali Kulkarni /*
948*14b24e2bSVaishali Kulkarni  * Ramrod data for tx queue stop ramrod
949*14b24e2bSVaishali Kulkarni  */
950*14b24e2bSVaishali Kulkarni struct core_tx_stop_ramrod_data
951*14b24e2bSVaishali Kulkarni {
952*14b24e2bSVaishali Kulkarni 	__le32 reserved0[2];
953*14b24e2bSVaishali Kulkarni };
954*14b24e2bSVaishali Kulkarni 
955*14b24e2bSVaishali Kulkarni 
956*14b24e2bSVaishali Kulkarni /*
957*14b24e2bSVaishali Kulkarni  * Enum flag for what type of dcb data to update
958*14b24e2bSVaishali Kulkarni  */
959*14b24e2bSVaishali Kulkarni enum dcb_dscp_update_mode
960*14b24e2bSVaishali Kulkarni {
961*14b24e2bSVaishali Kulkarni 	DONT_UPDATE_DCB_DSCP /* use when no change should be done to dcb data */,
962*14b24e2bSVaishali Kulkarni 	UPDATE_DCB /* use to update only l2 (vlan) priority */,
963*14b24e2bSVaishali Kulkarni 	UPDATE_DSCP /* use to update only l3 dscp */,
964*14b24e2bSVaishali Kulkarni 	UPDATE_DCB_DSCP /* update vlan pri and dscp */,
965*14b24e2bSVaishali Kulkarni 	MAX_DCB_DSCP_UPDATE_MODE
966*14b24e2bSVaishali Kulkarni };
967*14b24e2bSVaishali Kulkarni 
968*14b24e2bSVaishali Kulkarni 
969*14b24e2bSVaishali Kulkarni struct eth_mstorm_per_pf_stat
970*14b24e2bSVaishali Kulkarni {
971*14b24e2bSVaishali Kulkarni 	struct regpair gre_discard_pkts /* Dropped GRE RX packets */;
972*14b24e2bSVaishali Kulkarni 	struct regpair vxlan_discard_pkts /* Dropped VXLAN RX packets */;
973*14b24e2bSVaishali Kulkarni 	struct regpair geneve_discard_pkts /* Dropped GENEVE RX packets */;
974*14b24e2bSVaishali Kulkarni 	struct regpair lb_discard_pkts /* Dropped Tx switched packets */;
975*14b24e2bSVaishali Kulkarni };
976*14b24e2bSVaishali Kulkarni 
977*14b24e2bSVaishali Kulkarni 
978*14b24e2bSVaishali Kulkarni struct eth_mstorm_per_queue_stat
979*14b24e2bSVaishali Kulkarni {
980*14b24e2bSVaishali Kulkarni 	struct regpair ttl0_discard /* Number of packets discarded because TTL=0 (in IPv4) or hopLimit=0 (in IPv6) */;
981*14b24e2bSVaishali Kulkarni 	struct regpair packet_too_big_discard /* Number of packets discarded because they are bigger than MTU */;
982*14b24e2bSVaishali Kulkarni 	struct regpair no_buff_discard /* Number of packets discarded due to lack of host buffers (BDs/SGEs/CQEs) */;
983*14b24e2bSVaishali Kulkarni 	struct regpair not_active_discard /* Number of packets discarded because of no active Rx connection */;
984*14b24e2bSVaishali Kulkarni 	struct regpair tpa_coalesced_pkts /* number of coalesced packets in all TPA aggregations */;
985*14b24e2bSVaishali Kulkarni 	struct regpair tpa_coalesced_events /* total number of TPA aggregations */;
986*14b24e2bSVaishali Kulkarni 	struct regpair tpa_aborts_num /* number of aggregations, which abnormally ended */;
987*14b24e2bSVaishali Kulkarni 	struct regpair tpa_coalesced_bytes /* total TCP payload length in all TPA aggregations */;
988*14b24e2bSVaishali Kulkarni };
989*14b24e2bSVaishali Kulkarni 
990*14b24e2bSVaishali Kulkarni 
991*14b24e2bSVaishali Kulkarni /*
992*14b24e2bSVaishali Kulkarni  * Ethernet TX Per PF
993*14b24e2bSVaishali Kulkarni  */
994*14b24e2bSVaishali Kulkarni struct eth_pstorm_per_pf_stat
995*14b24e2bSVaishali Kulkarni {
996*14b24e2bSVaishali Kulkarni 	struct regpair sent_lb_ucast_bytes /* number of total ucast bytes sent on loopback port without errors */;
997*14b24e2bSVaishali Kulkarni 	struct regpair sent_lb_mcast_bytes /* number of total mcast bytes sent on loopback port without errors */;
998*14b24e2bSVaishali Kulkarni 	struct regpair sent_lb_bcast_bytes /* number of total bcast bytes sent on loopback port without errors */;
999*14b24e2bSVaishali Kulkarni 	struct regpair sent_lb_ucast_pkts /* number of total ucast packets sent on loopback port without errors */;
1000*14b24e2bSVaishali Kulkarni 	struct regpair sent_lb_mcast_pkts /* number of total mcast packets sent on loopback port without errors */;
1001*14b24e2bSVaishali Kulkarni 	struct regpair sent_lb_bcast_pkts /* number of total bcast packets sent on loopback port without errors */;
1002*14b24e2bSVaishali Kulkarni 	struct regpair sent_gre_bytes /* Sent GRE bytes */;
1003*14b24e2bSVaishali Kulkarni 	struct regpair sent_vxlan_bytes /* Sent VXLAN bytes */;
1004*14b24e2bSVaishali Kulkarni 	struct regpair sent_geneve_bytes /* Sent GENEVE bytes */;
1005*14b24e2bSVaishali Kulkarni 	struct regpair sent_gre_pkts /* Sent GRE packets */;
1006*14b24e2bSVaishali Kulkarni 	struct regpair sent_vxlan_pkts /* Sent VXLAN packets */;
1007*14b24e2bSVaishali Kulkarni 	struct regpair sent_geneve_pkts /* Sent GENEVE packets */;
1008*14b24e2bSVaishali Kulkarni 	struct regpair gre_drop_pkts /* Dropped GRE TX packets */;
1009*14b24e2bSVaishali Kulkarni 	struct regpair vxlan_drop_pkts /* Dropped VXLAN TX packets */;
1010*14b24e2bSVaishali Kulkarni 	struct regpair geneve_drop_pkts /* Dropped GENEVE TX packets */;
1011*14b24e2bSVaishali Kulkarni };
1012*14b24e2bSVaishali Kulkarni 
1013*14b24e2bSVaishali Kulkarni 
1014*14b24e2bSVaishali Kulkarni /*
1015*14b24e2bSVaishali Kulkarni  * Ethernet TX Per Queue Stats
1016*14b24e2bSVaishali Kulkarni  */
1017*14b24e2bSVaishali Kulkarni struct eth_pstorm_per_queue_stat
1018*14b24e2bSVaishali Kulkarni {
1019*14b24e2bSVaishali Kulkarni 	struct regpair sent_ucast_bytes /* number of total bytes sent without errors */;
1020*14b24e2bSVaishali Kulkarni 	struct regpair sent_mcast_bytes /* number of total bytes sent without errors */;
1021*14b24e2bSVaishali Kulkarni 	struct regpair sent_bcast_bytes /* number of total bytes sent without errors */;
1022*14b24e2bSVaishali Kulkarni 	struct regpair sent_ucast_pkts /* number of total packets sent without errors */;
1023*14b24e2bSVaishali Kulkarni 	struct regpair sent_mcast_pkts /* number of total packets sent without errors */;
1024*14b24e2bSVaishali Kulkarni 	struct regpair sent_bcast_pkts /* number of total packets sent without errors */;
1025*14b24e2bSVaishali Kulkarni 	struct regpair error_drop_pkts /* number of total packets dropped due to errors */;
1026*14b24e2bSVaishali Kulkarni };
1027*14b24e2bSVaishali Kulkarni 
1028*14b24e2bSVaishali Kulkarni 
1029*14b24e2bSVaishali Kulkarni /*
1030*14b24e2bSVaishali Kulkarni  * ETH Rx producers data
1031*14b24e2bSVaishali Kulkarni  */
1032*14b24e2bSVaishali Kulkarni struct eth_rx_rate_limit
1033*14b24e2bSVaishali Kulkarni {
1034*14b24e2bSVaishali Kulkarni 	__le16 mult /* Rate Limit Multiplier - (Storm Clock (MHz) * 8 / Desired Bandwidth (MB/s)) */;
1035*14b24e2bSVaishali Kulkarni 	__le16 cnst /* Constant term to add (or subtract from number of cycles) */;
1036*14b24e2bSVaishali Kulkarni 	u8 add_sub_cnst /* Add (1) or subtract (0) constant term */;
1037*14b24e2bSVaishali Kulkarni 	u8 reserved0;
1038*14b24e2bSVaishali Kulkarni 	__le16 reserved1;
1039*14b24e2bSVaishali Kulkarni };
1040*14b24e2bSVaishali Kulkarni 
1041*14b24e2bSVaishali Kulkarni 
1042*14b24e2bSVaishali Kulkarni struct eth_ustorm_per_pf_stat
1043*14b24e2bSVaishali Kulkarni {
1044*14b24e2bSVaishali Kulkarni 	struct regpair rcv_lb_ucast_bytes /* number of total ucast bytes received on loopback port without errors */;
1045*14b24e2bSVaishali Kulkarni 	struct regpair rcv_lb_mcast_bytes /* number of total mcast bytes received on loopback port without errors */;
1046*14b24e2bSVaishali Kulkarni 	struct regpair rcv_lb_bcast_bytes /* number of total bcast bytes received on loopback port without errors */;
1047*14b24e2bSVaishali Kulkarni 	struct regpair rcv_lb_ucast_pkts /* number of total ucast packets received on loopback port without errors */;
1048*14b24e2bSVaishali Kulkarni 	struct regpair rcv_lb_mcast_pkts /* number of total mcast packets received on loopback port without errors */;
1049*14b24e2bSVaishali Kulkarni 	struct regpair rcv_lb_bcast_pkts /* number of total bcast packets received on loopback port without errors */;
1050*14b24e2bSVaishali Kulkarni 	struct regpair rcv_gre_bytes /* Received GRE bytes */;
1051*14b24e2bSVaishali Kulkarni 	struct regpair rcv_vxlan_bytes /* Received VXLAN bytes */;
1052*14b24e2bSVaishali Kulkarni 	struct regpair rcv_geneve_bytes /* Received GENEVE bytes */;
1053*14b24e2bSVaishali Kulkarni 	struct regpair rcv_gre_pkts /* Received GRE packets */;
1054*14b24e2bSVaishali Kulkarni 	struct regpair rcv_vxlan_pkts /* Received VXLAN packets */;
1055*14b24e2bSVaishali Kulkarni 	struct regpair rcv_geneve_pkts /* Received GENEVE packets */;
1056*14b24e2bSVaishali Kulkarni };
1057*14b24e2bSVaishali Kulkarni 
1058*14b24e2bSVaishali Kulkarni 
1059*14b24e2bSVaishali Kulkarni struct eth_ustorm_per_queue_stat
1060*14b24e2bSVaishali Kulkarni {
1061*14b24e2bSVaishali Kulkarni 	struct regpair rcv_ucast_bytes;
1062*14b24e2bSVaishali Kulkarni 	struct regpair rcv_mcast_bytes;
1063*14b24e2bSVaishali Kulkarni 	struct regpair rcv_bcast_bytes;
1064*14b24e2bSVaishali Kulkarni 	struct regpair rcv_ucast_pkts;
1065*14b24e2bSVaishali Kulkarni 	struct regpair rcv_mcast_pkts;
1066*14b24e2bSVaishali Kulkarni 	struct regpair rcv_bcast_pkts;
1067*14b24e2bSVaishali Kulkarni };
1068*14b24e2bSVaishali Kulkarni 
1069*14b24e2bSVaishali Kulkarni 
1070*14b24e2bSVaishali Kulkarni /*
1071*14b24e2bSVaishali Kulkarni  * Event Ring Next Page Address
1072*14b24e2bSVaishali Kulkarni  */
1073*14b24e2bSVaishali Kulkarni struct event_ring_next_addr
1074*14b24e2bSVaishali Kulkarni {
1075*14b24e2bSVaishali Kulkarni 	struct regpair addr /* Next Page Address */;
1076*14b24e2bSVaishali Kulkarni 	__le32 reserved[2] /* Reserved */;
1077*14b24e2bSVaishali Kulkarni };
1078*14b24e2bSVaishali Kulkarni 
1079*14b24e2bSVaishali Kulkarni /*
1080*14b24e2bSVaishali Kulkarni  * Event Ring Element
1081*14b24e2bSVaishali Kulkarni  */
1082*14b24e2bSVaishali Kulkarni union event_ring_element
1083*14b24e2bSVaishali Kulkarni {
1084*14b24e2bSVaishali Kulkarni 	struct event_ring_entry entry /* Event Ring Entry */;
1085*14b24e2bSVaishali Kulkarni 	struct event_ring_next_addr next_addr /* Event Ring Next Page Address */;
1086*14b24e2bSVaishali Kulkarni };
1087*14b24e2bSVaishali Kulkarni 
1088*14b24e2bSVaishali Kulkarni 
1089*14b24e2bSVaishali Kulkarni 
1090*14b24e2bSVaishali Kulkarni /*
1091*14b24e2bSVaishali Kulkarni  * Ports mode
1092*14b24e2bSVaishali Kulkarni  */
1093*14b24e2bSVaishali Kulkarni enum fw_flow_ctrl_mode
1094*14b24e2bSVaishali Kulkarni {
1095*14b24e2bSVaishali Kulkarni 	flow_ctrl_pause,
1096*14b24e2bSVaishali Kulkarni 	flow_ctrl_pfc,
1097*14b24e2bSVaishali Kulkarni 	MAX_FW_FLOW_CTRL_MODE
1098*14b24e2bSVaishali Kulkarni };
1099*14b24e2bSVaishali Kulkarni 
1100*14b24e2bSVaishali Kulkarni 
1101*14b24e2bSVaishali Kulkarni /*
1102*14b24e2bSVaishali Kulkarni  * Major and Minor hsi Versions
1103*14b24e2bSVaishali Kulkarni  */
1104*14b24e2bSVaishali Kulkarni struct hsi_fp_ver_struct
1105*14b24e2bSVaishali Kulkarni {
1106*14b24e2bSVaishali Kulkarni 	u8 minor_ver_arr[2] /* Minor Version of hsi loading pf */;
1107*14b24e2bSVaishali Kulkarni 	u8 major_ver_arr[2] /* Major Version of driver loading pf */;
1108*14b24e2bSVaishali Kulkarni };
1109*14b24e2bSVaishali Kulkarni 
1110*14b24e2bSVaishali Kulkarni 
1111*14b24e2bSVaishali Kulkarni /*
1112*14b24e2bSVaishali Kulkarni  * Integration Phase
1113*14b24e2bSVaishali Kulkarni  */
1114*14b24e2bSVaishali Kulkarni enum integ_phase
1115*14b24e2bSVaishali Kulkarni {
1116*14b24e2bSVaishali Kulkarni 	INTEG_PHASE_BB_A0_LATEST=3 /* BB A0 latest integration phase */,
1117*14b24e2bSVaishali Kulkarni 	INTEG_PHASE_BB_B0_NO_MCP=10 /* BB B0 without MCP */,
1118*14b24e2bSVaishali Kulkarni 	INTEG_PHASE_BB_B0_WITH_MCP=11 /* BB B0 with MCP */,
1119*14b24e2bSVaishali Kulkarni 	MAX_INTEG_PHASE
1120*14b24e2bSVaishali Kulkarni };
1121*14b24e2bSVaishali Kulkarni 
1122*14b24e2bSVaishali Kulkarni 
1123*14b24e2bSVaishali Kulkarni /*
1124*14b24e2bSVaishali Kulkarni  * Ports mode
1125*14b24e2bSVaishali Kulkarni  */
1126*14b24e2bSVaishali Kulkarni enum iwarp_ll2_tx_queues
1127*14b24e2bSVaishali Kulkarni {
1128*14b24e2bSVaishali Kulkarni 	IWARP_LL2_IN_ORDER_TX_QUEUE=1 /* LL2 queue for OOO packets sent in-order by the driver */,
1129*14b24e2bSVaishali Kulkarni 	IWARP_LL2_ALIGNED_TX_QUEUE /* LL2 queue for unaligned packets sent aligned by the driver */,
1130*14b24e2bSVaishali Kulkarni 	IWARP_LL2_ALIGNED_RIGHT_TRIMMED_TX_QUEUE /* LL2 queue for unaligned packets sent aligned and was right-trimmed by the driver */,
1131*14b24e2bSVaishali Kulkarni 	IWARP_LL2_ERROR /* Error indication */,
1132*14b24e2bSVaishali Kulkarni 	MAX_IWARP_LL2_TX_QUEUES
1133*14b24e2bSVaishali Kulkarni };
1134*14b24e2bSVaishali Kulkarni 
1135*14b24e2bSVaishali Kulkarni 
1136*14b24e2bSVaishali Kulkarni /*
1137*14b24e2bSVaishali Kulkarni  * Malicious VF error ID
1138*14b24e2bSVaishali Kulkarni  */
1139*14b24e2bSVaishali Kulkarni enum malicious_vf_error_id
1140*14b24e2bSVaishali Kulkarni {
1141*14b24e2bSVaishali Kulkarni 	MALICIOUS_VF_NO_ERROR /* Zero placeholder value */,
1142*14b24e2bSVaishali Kulkarni 	VF_PF_CHANNEL_NOT_READY /* Writing to VF/PF channel when it is not ready */,
1143*14b24e2bSVaishali Kulkarni 	VF_ZONE_MSG_NOT_VALID /* VF channel message is not valid */,
1144*14b24e2bSVaishali Kulkarni 	VF_ZONE_FUNC_NOT_ENABLED /* Parent PF of VF channel is not active */,
1145*14b24e2bSVaishali Kulkarni 	ETH_PACKET_TOO_SMALL /* TX packet is shorter then reported on BDs or from minimal size */,
1146*14b24e2bSVaishali Kulkarni 	ETH_ILLEGAL_VLAN_MODE /* Tx packet with marked as insert VLAN when its illegal */,
1147*14b24e2bSVaishali Kulkarni 	ETH_MTU_VIOLATION /* TX packet is greater then MTU */,
1148*14b24e2bSVaishali Kulkarni 	ETH_ILLEGAL_INBAND_TAGS /* TX packet has illegal inband tags marked */,
1149*14b24e2bSVaishali Kulkarni 	ETH_VLAN_INSERT_AND_INBAND_VLAN /* Vlan cant be added to inband tag */,
1150*14b24e2bSVaishali Kulkarni 	ETH_ILLEGAL_NBDS /* indicated number of BDs for the packet is illegal */,
1151*14b24e2bSVaishali Kulkarni 	ETH_FIRST_BD_WO_SOP /* 1st BD must have start_bd flag set */,
1152*14b24e2bSVaishali Kulkarni 	ETH_INSUFFICIENT_BDS /* There are not enough BDs for transmission of even one packet */,
1153*14b24e2bSVaishali Kulkarni 	ETH_ILLEGAL_LSO_HDR_NBDS /* Header NBDs value is illegal */,
1154*14b24e2bSVaishali Kulkarni 	ETH_ILLEGAL_LSO_MSS /* LSO MSS value is more than allowed */,
1155*14b24e2bSVaishali Kulkarni 	ETH_ZERO_SIZE_BD /* empty BD (which not contains control flags) is illegal  */,
1156*14b24e2bSVaishali Kulkarni 	ETH_ILLEGAL_LSO_HDR_LEN /* LSO header size is above the limit  */,
1157*14b24e2bSVaishali Kulkarni 	ETH_INSUFFICIENT_PAYLOAD /* In LSO its expected that on the local BD ring there will be at least MSS bytes of data */,
1158*14b24e2bSVaishali Kulkarni 	ETH_EDPM_OUT_OF_SYNC /* Valid BDs on local ring after EDPM L2 sync */,
1159*14b24e2bSVaishali Kulkarni 	ETH_TUNN_IPV6_EXT_NBD_ERR /* Tunneled packet with IPv6+Ext without a proper number of BDs */,
1160*14b24e2bSVaishali Kulkarni 	ETH_CONTROL_PACKET_VIOLATION /* VF sent control frame such as PFC */,
1161*14b24e2bSVaishali Kulkarni 	ETH_ANTI_SPOOFING_ERR /* Anti-Spoofing verification failure */,
1162*14b24e2bSVaishali Kulkarni 	MAX_MALICIOUS_VF_ERROR_ID
1163*14b24e2bSVaishali Kulkarni };
1164*14b24e2bSVaishali Kulkarni 
1165*14b24e2bSVaishali Kulkarni 
1166*14b24e2bSVaishali Kulkarni 
1167*14b24e2bSVaishali Kulkarni /*
1168*14b24e2bSVaishali Kulkarni  * Mstorm non-triggering VF zone
1169*14b24e2bSVaishali Kulkarni  */
1170*14b24e2bSVaishali Kulkarni struct mstorm_non_trigger_vf_zone
1171*14b24e2bSVaishali Kulkarni {
1172*14b24e2bSVaishali Kulkarni 	struct eth_mstorm_per_queue_stat eth_queue_stat /* VF statistic bucket */;
1173*14b24e2bSVaishali Kulkarni 	struct eth_rx_prod_data eth_rx_queue_producers[ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD] /* VF RX queues producers */;
1174*14b24e2bSVaishali Kulkarni };
1175*14b24e2bSVaishali Kulkarni 
1176*14b24e2bSVaishali Kulkarni 
1177*14b24e2bSVaishali Kulkarni /*
1178*14b24e2bSVaishali Kulkarni  * Mstorm VF zone
1179*14b24e2bSVaishali Kulkarni  */
1180*14b24e2bSVaishali Kulkarni struct mstorm_vf_zone
1181*14b24e2bSVaishali Kulkarni {
1182*14b24e2bSVaishali Kulkarni 	struct mstorm_non_trigger_vf_zone non_trigger /* non-interrupt-triggering zone */;
1183*14b24e2bSVaishali Kulkarni };
1184*14b24e2bSVaishali Kulkarni 
1185*14b24e2bSVaishali Kulkarni 
1186*14b24e2bSVaishali Kulkarni /*
1187*14b24e2bSVaishali Kulkarni  * personality per PF
1188*14b24e2bSVaishali Kulkarni  */
1189*14b24e2bSVaishali Kulkarni enum personality_type
1190*14b24e2bSVaishali Kulkarni {
1191*14b24e2bSVaishali Kulkarni 	BAD_PERSONALITY_TYP,
1192*14b24e2bSVaishali Kulkarni 	PERSONALITY_ISCSI /* iSCSI and LL2 */,
1193*14b24e2bSVaishali Kulkarni 	PERSONALITY_FCOE /* Fcoe and LL2 */,
1194*14b24e2bSVaishali Kulkarni 	PERSONALITY_RDMA_AND_ETH /* Roce or Iwarp, Eth and LL2 */,
1195*14b24e2bSVaishali Kulkarni 	PERSONALITY_RDMA /* Roce and LL2 */,
1196*14b24e2bSVaishali Kulkarni 	PERSONALITY_CORE /* CORE(LL2) */,
1197*14b24e2bSVaishali Kulkarni 	PERSONALITY_ETH /* Ethernet */,
1198*14b24e2bSVaishali Kulkarni 	PERSONALITY_TOE /* Toe and LL2 */,
1199*14b24e2bSVaishali Kulkarni 	MAX_PERSONALITY_TYPE
1200*14b24e2bSVaishali Kulkarni };
1201*14b24e2bSVaishali Kulkarni 
1202*14b24e2bSVaishali Kulkarni 
1203*14b24e2bSVaishali Kulkarni /*
1204*14b24e2bSVaishali Kulkarni  * tunnel configuration
1205*14b24e2bSVaishali Kulkarni  */
1206*14b24e2bSVaishali Kulkarni struct pf_start_tunnel_config
1207*14b24e2bSVaishali Kulkarni {
1208*14b24e2bSVaishali Kulkarni 	u8 set_vxlan_udp_port_flg /* Set VXLAN tunnel UDP destination port to vxlan_udp_port. If not set - FW will use a default port */;
1209*14b24e2bSVaishali Kulkarni 	u8 set_geneve_udp_port_flg /* Set GENEVE tunnel UDP destination port to geneve_udp_port. If not set - FW will use a default port */;
1210*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_vxlan /* Rx classification scheme for VXLAN tunnel. */;
1211*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_l2geneve /* Rx classification scheme for l2 GENEVE tunnel. */;
1212*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_ipgeneve /* Rx classification scheme for ip GENEVE tunnel. */;
1213*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_l2gre /* Rx classification scheme for l2 GRE tunnel. */;
1214*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_ipgre /* Rx classification scheme for ip GRE tunnel. */;
1215*14b24e2bSVaishali Kulkarni 	u8 reserved;
1216*14b24e2bSVaishali Kulkarni 	__le16 vxlan_udp_port /* VXLAN tunnel UDP destination port. Valid if set_vxlan_udp_port_flg=1 */;
1217*14b24e2bSVaishali Kulkarni 	__le16 geneve_udp_port /* GENEVE tunnel UDP destination port. Valid if set_geneve_udp_port_flg=1 */;
1218*14b24e2bSVaishali Kulkarni };
1219*14b24e2bSVaishali Kulkarni 
1220*14b24e2bSVaishali Kulkarni /*
1221*14b24e2bSVaishali Kulkarni  * Ramrod data for PF start ramrod
1222*14b24e2bSVaishali Kulkarni  */
1223*14b24e2bSVaishali Kulkarni struct pf_start_ramrod_data
1224*14b24e2bSVaishali Kulkarni {
1225*14b24e2bSVaishali Kulkarni 	struct regpair event_ring_pbl_addr /* Address of event ring PBL */;
1226*14b24e2bSVaishali Kulkarni 	struct regpair consolid_q_pbl_addr /* PBL address of consolidation queue */;
1227*14b24e2bSVaishali Kulkarni 	struct pf_start_tunnel_config tunnel_config /* tunnel configuration. */;
1228*14b24e2bSVaishali Kulkarni 	__le32 reserved;
1229*14b24e2bSVaishali Kulkarni 	__le16 event_ring_sb_id /* Status block ID */;
1230*14b24e2bSVaishali Kulkarni 	u8 base_vf_id /* All VfIds owned by Pf will be from baseVfId till baseVfId+numVfs */;
1231*14b24e2bSVaishali Kulkarni 	u8 num_vfs /* Amount of vfs owned by PF */;
1232*14b24e2bSVaishali Kulkarni 	u8 event_ring_num_pages /* Number of PBL pages in event ring */;
1233*14b24e2bSVaishali Kulkarni 	u8 event_ring_sb_index /* Status block index */;
1234*14b24e2bSVaishali Kulkarni 	u8 path_id /* HW path ID (engine ID) */;
1235*14b24e2bSVaishali Kulkarni 	u8 warning_as_error /* In FW asserts, treat warning as error */;
1236*14b24e2bSVaishali Kulkarni 	u8 dont_log_ramrods /* If not set - throw a warning for each ramrod (for debug) */;
1237*14b24e2bSVaishali Kulkarni 	u8 personality /* define what type of personality is new PF */;
1238*14b24e2bSVaishali Kulkarni 	__le16 log_type_mask /* Log type mask. Each bit set enables a corresponding event type logging. Event types are defined as ASSERT_LOG_TYPE_xxx */;
1239*14b24e2bSVaishali Kulkarni 	u8 mf_mode /* Multi function mode */;
1240*14b24e2bSVaishali Kulkarni 	u8 integ_phase /* Integration phase */;
1241*14b24e2bSVaishali Kulkarni 	u8 allow_npar_tx_switching /* If set, inter-pf tx switching is allowed in Switch Independent function mode */;
1242*14b24e2bSVaishali Kulkarni 	u8 inner_to_outer_pri_map[8] /* Map from inner to outer priority. Set pri_map_valid when init map */;
1243*14b24e2bSVaishali Kulkarni 	u8 pri_map_valid /* If inner_to_outer_pri_map is initialize then set pri_map_valid */;
1244*14b24e2bSVaishali Kulkarni 	__le32 outer_tag /* In case mf_mode is MF_OVLAN, this field specifies the outer vlan (lower 16 bits) and ethType to use (higher 16 bits) */;
1245*14b24e2bSVaishali Kulkarni 	struct hsi_fp_ver_struct hsi_fp_ver /* FP HSI version to be used by FW */;
1246*14b24e2bSVaishali Kulkarni };
1247*14b24e2bSVaishali Kulkarni 
1248*14b24e2bSVaishali Kulkarni 
1249*14b24e2bSVaishali Kulkarni 
1250*14b24e2bSVaishali Kulkarni /*
1251*14b24e2bSVaishali Kulkarni  * Data for port update ramrod
1252*14b24e2bSVaishali Kulkarni  */
1253*14b24e2bSVaishali Kulkarni struct protocol_dcb_data
1254*14b24e2bSVaishali Kulkarni {
1255*14b24e2bSVaishali Kulkarni 	u8 dcb_enable_flag /* dcbEnable flag value */;
1256*14b24e2bSVaishali Kulkarni 	u8 dscp_enable_flag /* If set use dscp value */;
1257*14b24e2bSVaishali Kulkarni 	u8 dcb_priority /* dcbPri flag value */;
1258*14b24e2bSVaishali Kulkarni 	u8 dcb_tc /* dcb TC value */;
1259*14b24e2bSVaishali Kulkarni 	u8 dscp_val /* dscp value to write if dscp_enable_flag is set */;
1260*14b24e2bSVaishali Kulkarni 	u8 reserved0;
1261*14b24e2bSVaishali Kulkarni };
1262*14b24e2bSVaishali Kulkarni 
1263*14b24e2bSVaishali Kulkarni /*
1264*14b24e2bSVaishali Kulkarni  * Update tunnel configuration
1265*14b24e2bSVaishali Kulkarni  */
1266*14b24e2bSVaishali Kulkarni struct pf_update_tunnel_config
1267*14b24e2bSVaishali Kulkarni {
1268*14b24e2bSVaishali Kulkarni 	u8 update_rx_pf_clss /* Update RX per PF tunnel classification scheme. */;
1269*14b24e2bSVaishali Kulkarni 	u8 update_rx_def_ucast_clss /* Update per PORT default tunnel RX classification scheme for traffic with unknown unicast outer MAC in NPAR mode. */;
1270*14b24e2bSVaishali Kulkarni 	u8 update_rx_def_non_ucast_clss /* Update per PORT default tunnel RX classification scheme for traffic with non unicast outer MAC in NPAR mode. */;
1271*14b24e2bSVaishali Kulkarni 	u8 set_vxlan_udp_port_flg /* Update VXLAN tunnel UDP destination port. */;
1272*14b24e2bSVaishali Kulkarni 	u8 set_geneve_udp_port_flg /* Update GENEVE tunnel UDP destination port. */;
1273*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_vxlan /* Classification scheme for VXLAN tunnel. */;
1274*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_l2geneve /* Classification scheme for l2 GENEVE tunnel. */;
1275*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_ipgeneve /* Classification scheme for ip GENEVE tunnel. */;
1276*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_l2gre /* Classification scheme for l2 GRE tunnel. */;
1277*14b24e2bSVaishali Kulkarni 	u8 tunnel_clss_ipgre /* Classification scheme for ip GRE tunnel. */;
1278*14b24e2bSVaishali Kulkarni 	__le16 vxlan_udp_port /* VXLAN tunnel UDP destination port. */;
1279*14b24e2bSVaishali Kulkarni 	__le16 geneve_udp_port /* GENEVE tunnel UDP destination port. */;
1280*14b24e2bSVaishali Kulkarni 	__le16 reserved;
1281*14b24e2bSVaishali Kulkarni };
1282*14b24e2bSVaishali Kulkarni 
1283*14b24e2bSVaishali Kulkarni /*
1284*14b24e2bSVaishali Kulkarni  * Data for port update ramrod
1285*14b24e2bSVaishali Kulkarni  */
1286*14b24e2bSVaishali Kulkarni struct pf_update_ramrod_data
1287*14b24e2bSVaishali Kulkarni {
1288*14b24e2bSVaishali Kulkarni 	u8 pf_id;
1289*14b24e2bSVaishali Kulkarni 	u8 update_eth_dcb_data_mode /* Update Eth DCB  data indication */;
1290*14b24e2bSVaishali Kulkarni 	u8 update_fcoe_dcb_data_mode /* Update FCOE DCB  data indication */;
1291*14b24e2bSVaishali Kulkarni 	u8 update_iscsi_dcb_data_mode /* Update iSCSI DCB  data indication */;
1292*14b24e2bSVaishali Kulkarni 	u8 update_roce_dcb_data_mode /* Update ROCE DCB  data indication */;
1293*14b24e2bSVaishali Kulkarni 	u8 update_rroce_dcb_data_mode /* Update RROCE (RoceV2) DCB  data indication */;
1294*14b24e2bSVaishali Kulkarni 	u8 update_iwarp_dcb_data_mode /* Update IWARP DCB  data indication */;
1295*14b24e2bSVaishali Kulkarni 	u8 update_mf_vlan_flag /* Update MF outer vlan Id */;
1296*14b24e2bSVaishali Kulkarni 	struct protocol_dcb_data eth_dcb_data /* core eth related fields */;
1297*14b24e2bSVaishali Kulkarni 	struct protocol_dcb_data fcoe_dcb_data /* core fcoe related fields */;
1298*14b24e2bSVaishali Kulkarni 	struct protocol_dcb_data iscsi_dcb_data /* core iscsi related fields */;
1299*14b24e2bSVaishali Kulkarni 	struct protocol_dcb_data roce_dcb_data /* core roce related fields */;
1300*14b24e2bSVaishali Kulkarni 	struct protocol_dcb_data rroce_dcb_data /* core roce related fields */;
1301*14b24e2bSVaishali Kulkarni 	struct protocol_dcb_data iwarp_dcb_data /* core iwarp related fields */;
1302*14b24e2bSVaishali Kulkarni 	__le16 mf_vlan /* new outer vlan id value */;
1303*14b24e2bSVaishali Kulkarni 	__le16 reserved;
1304*14b24e2bSVaishali Kulkarni 	struct pf_update_tunnel_config tunnel_config /* tunnel configuration. */;
1305*14b24e2bSVaishali Kulkarni };
1306*14b24e2bSVaishali Kulkarni 
1307*14b24e2bSVaishali Kulkarni 
1308*14b24e2bSVaishali Kulkarni 
1309*14b24e2bSVaishali Kulkarni /*
1310*14b24e2bSVaishali Kulkarni  * Ports mode
1311*14b24e2bSVaishali Kulkarni  */
1312*14b24e2bSVaishali Kulkarni enum ports_mode
1313*14b24e2bSVaishali Kulkarni {
1314*14b24e2bSVaishali Kulkarni 	ENGX2_PORTX1 /* 2 engines x 1 port */,
1315*14b24e2bSVaishali Kulkarni 	ENGX2_PORTX2 /* 2 engines x 2 ports */,
1316*14b24e2bSVaishali Kulkarni 	ENGX1_PORTX1 /* 1 engine  x 1 port */,
1317*14b24e2bSVaishali Kulkarni 	ENGX1_PORTX2 /* 1 engine  x 2 ports */,
1318*14b24e2bSVaishali Kulkarni 	ENGX1_PORTX4 /* 1 engine  x 4 ports */,
1319*14b24e2bSVaishali Kulkarni 	MAX_PORTS_MODE
1320*14b24e2bSVaishali Kulkarni };
1321*14b24e2bSVaishali Kulkarni 
1322*14b24e2bSVaishali Kulkarni 
1323*14b24e2bSVaishali Kulkarni 
1324*14b24e2bSVaishali Kulkarni /*
1325*14b24e2bSVaishali Kulkarni  * use to index in hsi_fp_[major|minor]_ver_arr per protocol
1326*14b24e2bSVaishali Kulkarni  */
1327*14b24e2bSVaishali Kulkarni enum protocol_version_array_key
1328*14b24e2bSVaishali Kulkarni {
1329*14b24e2bSVaishali Kulkarni 	ETH_VER_KEY=0,
1330*14b24e2bSVaishali Kulkarni 	ROCE_VER_KEY,
1331*14b24e2bSVaishali Kulkarni 	MAX_PROTOCOL_VERSION_ARRAY_KEY
1332*14b24e2bSVaishali Kulkarni };
1333*14b24e2bSVaishali Kulkarni 
1334*14b24e2bSVaishali Kulkarni 
1335*14b24e2bSVaishali Kulkarni 
1336*14b24e2bSVaishali Kulkarni /*
1337*14b24e2bSVaishali Kulkarni  * RDMA TX Stats
1338*14b24e2bSVaishali Kulkarni  */
1339*14b24e2bSVaishali Kulkarni struct rdma_sent_stats
1340*14b24e2bSVaishali Kulkarni {
1341*14b24e2bSVaishali Kulkarni 	struct regpair sent_bytes /* number of total RDMA bytes sent */;
1342*14b24e2bSVaishali Kulkarni 	struct regpair sent_pkts /* number of total RDMA packets sent */;
1343*14b24e2bSVaishali Kulkarni };
1344*14b24e2bSVaishali Kulkarni 
1345*14b24e2bSVaishali Kulkarni /*
1346*14b24e2bSVaishali Kulkarni  * Pstorm non-triggering VF zone
1347*14b24e2bSVaishali Kulkarni  */
1348*14b24e2bSVaishali Kulkarni struct pstorm_non_trigger_vf_zone
1349*14b24e2bSVaishali Kulkarni {
1350*14b24e2bSVaishali Kulkarni 	struct eth_pstorm_per_queue_stat eth_queue_stat /* VF statistic bucket */;
1351*14b24e2bSVaishali Kulkarni 	struct rdma_sent_stats rdma_stats /* RoCE sent statistics */;
1352*14b24e2bSVaishali Kulkarni };
1353*14b24e2bSVaishali Kulkarni 
1354*14b24e2bSVaishali Kulkarni 
1355*14b24e2bSVaishali Kulkarni /*
1356*14b24e2bSVaishali Kulkarni  * Pstorm VF zone
1357*14b24e2bSVaishali Kulkarni  */
1358*14b24e2bSVaishali Kulkarni struct pstorm_vf_zone
1359*14b24e2bSVaishali Kulkarni {
1360*14b24e2bSVaishali Kulkarni 	struct pstorm_non_trigger_vf_zone non_trigger /* non-interrupt-triggering zone */;
1361*14b24e2bSVaishali Kulkarni 	struct regpair reserved[7] /* vf_zone size mus be power of 2 */;
1362*14b24e2bSVaishali Kulkarni };
1363*14b24e2bSVaishali Kulkarni 
1364*14b24e2bSVaishali Kulkarni 
1365*14b24e2bSVaishali Kulkarni /*
1366*14b24e2bSVaishali Kulkarni  * Ramrod Header of SPQE
1367*14b24e2bSVaishali Kulkarni  */
1368*14b24e2bSVaishali Kulkarni struct ramrod_header
1369*14b24e2bSVaishali Kulkarni {
1370*14b24e2bSVaishali Kulkarni 	__le32 cid /* Slowpath Connection CID */;
1371*14b24e2bSVaishali Kulkarni 	u8 cmd_id /* Ramrod Cmd (Per Protocol Type) */;
1372*14b24e2bSVaishali Kulkarni 	u8 protocol_id /* Ramrod Protocol ID */;
1373*14b24e2bSVaishali Kulkarni 	__le16 echo /* Ramrod echo */;
1374*14b24e2bSVaishali Kulkarni };
1375*14b24e2bSVaishali Kulkarni 
1376*14b24e2bSVaishali Kulkarni 
1377*14b24e2bSVaishali Kulkarni /*
1378*14b24e2bSVaishali Kulkarni  * RDMA RX Stats
1379*14b24e2bSVaishali Kulkarni  */
1380*14b24e2bSVaishali Kulkarni struct rdma_rcv_stats
1381*14b24e2bSVaishali Kulkarni {
1382*14b24e2bSVaishali Kulkarni 	struct regpair rcv_bytes /* number of total RDMA bytes received */;
1383*14b24e2bSVaishali Kulkarni 	struct regpair rcv_pkts /* number of total RDMA packets received */;
1384*14b24e2bSVaishali Kulkarni };
1385*14b24e2bSVaishali Kulkarni 
1386*14b24e2bSVaishali Kulkarni 
1387*14b24e2bSVaishali Kulkarni 
1388*14b24e2bSVaishali Kulkarni /*
1389*14b24e2bSVaishali Kulkarni  * Data for update QCN/DCQCN RL ramrod
1390*14b24e2bSVaishali Kulkarni  */
1391*14b24e2bSVaishali Kulkarni struct rl_update_ramrod_data
1392*14b24e2bSVaishali Kulkarni {
1393*14b24e2bSVaishali Kulkarni 	u8 qcn_update_param_flg /* Update QCN global params: timeout. */;
1394*14b24e2bSVaishali Kulkarni 	u8 dcqcn_update_param_flg /* Update DCQCN global params: timeout, g, k. */;
1395*14b24e2bSVaishali Kulkarni 	u8 rl_init_flg /* Init RL parameters, when RL disabled. */;
1396*14b24e2bSVaishali Kulkarni 	u8 rl_start_flg /* Start RL in IDLE state. Set rate to maximum. */;
1397*14b24e2bSVaishali Kulkarni 	u8 rl_stop_flg /* Stop RL. */;
1398*14b24e2bSVaishali Kulkarni 	u8 rl_id_first /* ID of first or single RL, that will be updated. */;
1399*14b24e2bSVaishali Kulkarni 	u8 rl_id_last /* ID of last RL, that will be updated. If clear, single RL will updated. */;
1400*14b24e2bSVaishali Kulkarni 	u8 rl_dc_qcn_flg /* If set, RL will used for DCQCN. */;
1401*14b24e2bSVaishali Kulkarni 	__le32 rl_bc_rate /* Byte Counter Limit. */;
1402*14b24e2bSVaishali Kulkarni 	__le16 rl_max_rate /* Maximum rate in 1.6 Mbps resolution. */;
1403*14b24e2bSVaishali Kulkarni 	__le16 rl_r_ai /* Active increase rate. */;
1404*14b24e2bSVaishali Kulkarni 	__le16 rl_r_hai /* Hyper active increase rate. */;
1405*14b24e2bSVaishali Kulkarni 	__le16 dcqcn_g /* DCQCN Alpha update gain in 1/64K resolution . */;
1406*14b24e2bSVaishali Kulkarni 	__le32 dcqcn_k_us /* DCQCN Alpha update interval. */;
1407*14b24e2bSVaishali Kulkarni 	__le32 dcqcn_timeuot_us /* DCQCN timeout. */;
1408*14b24e2bSVaishali Kulkarni 	__le32 qcn_timeuot_us /* QCN timeout. */;
1409*14b24e2bSVaishali Kulkarni 	__le32 reserved[2];
1410*14b24e2bSVaishali Kulkarni };
1411*14b24e2bSVaishali Kulkarni 
1412*14b24e2bSVaishali Kulkarni 
1413*14b24e2bSVaishali Kulkarni /*
1414*14b24e2bSVaishali Kulkarni  * Slowpath Element (SPQE)
1415*14b24e2bSVaishali Kulkarni  */
1416*14b24e2bSVaishali Kulkarni struct slow_path_element
1417*14b24e2bSVaishali Kulkarni {
1418*14b24e2bSVaishali Kulkarni 	struct ramrod_header hdr /* Ramrod Header */;
1419*14b24e2bSVaishali Kulkarni 	struct regpair data_ptr /* Pointer to the Ramrod Data on the Host */;
1420*14b24e2bSVaishali Kulkarni };
1421*14b24e2bSVaishali Kulkarni 
1422*14b24e2bSVaishali Kulkarni 
1423*14b24e2bSVaishali Kulkarni /*
1424*14b24e2bSVaishali Kulkarni  * Tstorm non-triggering VF zone
1425*14b24e2bSVaishali Kulkarni  */
1426*14b24e2bSVaishali Kulkarni struct tstorm_non_trigger_vf_zone
1427*14b24e2bSVaishali Kulkarni {
1428*14b24e2bSVaishali Kulkarni 	struct rdma_rcv_stats rdma_stats /* RoCE received statistics */;
1429*14b24e2bSVaishali Kulkarni };
1430*14b24e2bSVaishali Kulkarni 
1431*14b24e2bSVaishali Kulkarni 
1432*14b24e2bSVaishali Kulkarni struct tstorm_per_port_stat
1433*14b24e2bSVaishali Kulkarni {
1434*14b24e2bSVaishali Kulkarni 	struct regpair trunc_error_discard /* packet is dropped because it was truncated in NIG */;
1435*14b24e2bSVaishali Kulkarni 	struct regpair mac_error_discard /* packet is dropped because of Ethernet FCS error */;
1436*14b24e2bSVaishali Kulkarni 	struct regpair mftag_filter_discard /* packet is dropped because classification was unsuccessful */;
1437*14b24e2bSVaishali Kulkarni 	struct regpair eth_mac_filter_discard /* packet was passed to Ethernet and dropped because of no mac filter match */;
1438*14b24e2bSVaishali Kulkarni 	struct regpair ll2_mac_filter_discard /* packet passed to Light L2 and dropped because Light L2 is not configured for this PF */;
1439*14b24e2bSVaishali Kulkarni 	struct regpair ll2_conn_disabled_discard /* packet passed to Light L2 and dropped because Light L2 is not configured for this PF */;
1440*14b24e2bSVaishali Kulkarni 	struct regpair iscsi_irregular_pkt /* packet is an ISCSI irregular packet */;
1441*14b24e2bSVaishali Kulkarni 	struct regpair fcoe_irregular_pkt /* packet is an FCOE irregular packet */;
1442*14b24e2bSVaishali Kulkarni 	struct regpair roce_irregular_pkt /* packet is an ROCE irregular packet */;
1443*14b24e2bSVaishali Kulkarni 	struct regpair iwarp_irregular_pkt /* packet is an IWARP irregular packet */;
1444*14b24e2bSVaishali Kulkarni 	struct regpair eth_irregular_pkt /* packet is an ETH irregular packet */;
1445*14b24e2bSVaishali Kulkarni 	struct regpair toe_irregular_pkt /* packet is an TOE irregular packet */;
1446*14b24e2bSVaishali Kulkarni 	struct regpair preroce_irregular_pkt /* packet is an PREROCE irregular packet */;
1447*14b24e2bSVaishali Kulkarni 	struct regpair eth_gre_tunn_filter_discard /* GRE dropped packets */;
1448*14b24e2bSVaishali Kulkarni 	struct regpair eth_vxlan_tunn_filter_discard /* VXLAN dropped packets */;
1449*14b24e2bSVaishali Kulkarni 	struct regpair eth_geneve_tunn_filter_discard /* GENEVE dropped packets */;
1450*14b24e2bSVaishali Kulkarni };
1451*14b24e2bSVaishali Kulkarni 
1452*14b24e2bSVaishali Kulkarni 
1453*14b24e2bSVaishali Kulkarni /*
1454*14b24e2bSVaishali Kulkarni  * Tstorm VF zone
1455*14b24e2bSVaishali Kulkarni  */
1456*14b24e2bSVaishali Kulkarni struct tstorm_vf_zone
1457*14b24e2bSVaishali Kulkarni {
1458*14b24e2bSVaishali Kulkarni 	struct tstorm_non_trigger_vf_zone non_trigger /* non-interrupt-triggering zone */;
1459*14b24e2bSVaishali Kulkarni };
1460*14b24e2bSVaishali Kulkarni 
1461*14b24e2bSVaishali Kulkarni 
1462*14b24e2bSVaishali Kulkarni /*
1463*14b24e2bSVaishali Kulkarni  * Tunnel classification scheme
1464*14b24e2bSVaishali Kulkarni  */
1465*14b24e2bSVaishali Kulkarni enum tunnel_clss
1466*14b24e2bSVaishali Kulkarni {
1467*14b24e2bSVaishali Kulkarni 	TUNNEL_CLSS_MAC_VLAN=0 /* Use MAC and VLAN from first L2 header for vport classification. */,
1468*14b24e2bSVaishali Kulkarni 	TUNNEL_CLSS_MAC_VNI /* Use MAC from first L2 header and VNI from tunnel header for vport classification */,
1469*14b24e2bSVaishali Kulkarni 	TUNNEL_CLSS_INNER_MAC_VLAN /* Use MAC and VLAN from last L2 header for vport classification */,
1470*14b24e2bSVaishali Kulkarni 	TUNNEL_CLSS_INNER_MAC_VNI /* Use MAC from last L2 header and VNI from tunnel header for vport classification */,
1471*14b24e2bSVaishali Kulkarni 	TUNNEL_CLSS_MAC_VLAN_DUAL_STAGE /* Use MAC and VLAN from last L2 header for vport classification. If no exact match, use MAC and VLAN from first L2 header for classification. */,
1472*14b24e2bSVaishali Kulkarni 	MAX_TUNNEL_CLSS
1473*14b24e2bSVaishali Kulkarni };
1474*14b24e2bSVaishali Kulkarni 
1475*14b24e2bSVaishali Kulkarni 
1476*14b24e2bSVaishali Kulkarni 
1477*14b24e2bSVaishali Kulkarni /*
1478*14b24e2bSVaishali Kulkarni  * Ustorm non-triggering VF zone
1479*14b24e2bSVaishali Kulkarni  */
1480*14b24e2bSVaishali Kulkarni struct ustorm_non_trigger_vf_zone
1481*14b24e2bSVaishali Kulkarni {
1482*14b24e2bSVaishali Kulkarni 	struct eth_ustorm_per_queue_stat eth_queue_stat /* VF statistic bucket */;
1483*14b24e2bSVaishali Kulkarni 	struct regpair vf_pf_msg_addr /* VF-PF message address */;
1484*14b24e2bSVaishali Kulkarni };
1485*14b24e2bSVaishali Kulkarni 
1486*14b24e2bSVaishali Kulkarni 
1487*14b24e2bSVaishali Kulkarni /*
1488*14b24e2bSVaishali Kulkarni  * Ustorm triggering VF zone
1489*14b24e2bSVaishali Kulkarni  */
1490*14b24e2bSVaishali Kulkarni struct ustorm_trigger_vf_zone
1491*14b24e2bSVaishali Kulkarni {
1492*14b24e2bSVaishali Kulkarni 	u8 vf_pf_msg_valid /* VF-PF message valid flag */;
1493*14b24e2bSVaishali Kulkarni 	u8 reserved[7];
1494*14b24e2bSVaishali Kulkarni };
1495*14b24e2bSVaishali Kulkarni 
1496*14b24e2bSVaishali Kulkarni 
1497*14b24e2bSVaishali Kulkarni /*
1498*14b24e2bSVaishali Kulkarni  * Ustorm VF zone
1499*14b24e2bSVaishali Kulkarni  */
1500*14b24e2bSVaishali Kulkarni struct ustorm_vf_zone
1501*14b24e2bSVaishali Kulkarni {
1502*14b24e2bSVaishali Kulkarni 	struct ustorm_non_trigger_vf_zone non_trigger /* non-interrupt-triggering zone */;
1503*14b24e2bSVaishali Kulkarni 	struct ustorm_trigger_vf_zone trigger /* interrupt triggering zone */;
1504*14b24e2bSVaishali Kulkarni };
1505*14b24e2bSVaishali Kulkarni 
1506*14b24e2bSVaishali Kulkarni 
1507*14b24e2bSVaishali Kulkarni /*
1508*14b24e2bSVaishali Kulkarni  * VF-PF channel data
1509*14b24e2bSVaishali Kulkarni  */
1510*14b24e2bSVaishali Kulkarni struct vf_pf_channel_data
1511*14b24e2bSVaishali Kulkarni {
1512*14b24e2bSVaishali Kulkarni 	__le32 ready /* 0: VF-PF Channel NOT ready. Waiting for ack from PF driver. 1: VF-PF Channel is ready for a new transaction. */;
1513*14b24e2bSVaishali Kulkarni 	u8 valid /* 0: VF-PF Channel is invalid because of malicious VF. 1: VF-PF Channel is valid. */;
1514*14b24e2bSVaishali Kulkarni 	u8 reserved0;
1515*14b24e2bSVaishali Kulkarni 	__le16 reserved1;
1516*14b24e2bSVaishali Kulkarni };
1517*14b24e2bSVaishali Kulkarni 
1518*14b24e2bSVaishali Kulkarni 
1519*14b24e2bSVaishali Kulkarni /*
1520*14b24e2bSVaishali Kulkarni  * Ramrod data for VF start ramrod
1521*14b24e2bSVaishali Kulkarni  */
1522*14b24e2bSVaishali Kulkarni struct vf_start_ramrod_data
1523*14b24e2bSVaishali Kulkarni {
1524*14b24e2bSVaishali Kulkarni 	u8 vf_id /* VF ID */;
1525*14b24e2bSVaishali Kulkarni 	u8 enable_flr_ack /* If set, initial cleanup ack will be sent to parent PF SP event queue */;
1526*14b24e2bSVaishali Kulkarni 	__le16 opaque_fid /* VF opaque FID */;
1527*14b24e2bSVaishali Kulkarni 	u8 personality /* define what type of personality is new VF */;
1528*14b24e2bSVaishali Kulkarni 	u8 reserved[7];
1529*14b24e2bSVaishali Kulkarni 	struct hsi_fp_ver_struct hsi_fp_ver /* FP HSI version to be used by FW */;
1530*14b24e2bSVaishali Kulkarni };
1531*14b24e2bSVaishali Kulkarni 
1532*14b24e2bSVaishali Kulkarni 
1533*14b24e2bSVaishali Kulkarni /*
1534*14b24e2bSVaishali Kulkarni  * Ramrod data for VF start ramrod
1535*14b24e2bSVaishali Kulkarni  */
1536*14b24e2bSVaishali Kulkarni struct vf_stop_ramrod_data
1537*14b24e2bSVaishali Kulkarni {
1538*14b24e2bSVaishali Kulkarni 	u8 vf_id /* VF ID */;
1539*14b24e2bSVaishali Kulkarni 	u8 reserved0;
1540*14b24e2bSVaishali Kulkarni 	__le16 reserved1;
1541*14b24e2bSVaishali Kulkarni 	__le32 reserved2;
1542*14b24e2bSVaishali Kulkarni };
1543*14b24e2bSVaishali Kulkarni 
1544*14b24e2bSVaishali Kulkarni 
1545*14b24e2bSVaishali Kulkarni /*
1546*14b24e2bSVaishali Kulkarni  * VF zone size mode.
1547*14b24e2bSVaishali Kulkarni  */
1548*14b24e2bSVaishali Kulkarni enum vf_zone_size_mode
1549*14b24e2bSVaishali Kulkarni {
1550*14b24e2bSVaishali Kulkarni 	VF_ZONE_SIZE_MODE_DEFAULT /* Default VF zone size. Up to 192 VF supported. */,
1551*14b24e2bSVaishali Kulkarni 	VF_ZONE_SIZE_MODE_DOUBLE /* Doubled VF zone size. Up to 96 VF supported. */,
1552*14b24e2bSVaishali Kulkarni 	VF_ZONE_SIZE_MODE_QUAD /* Quad VF zone size. Up to 48 VF supported. */,
1553*14b24e2bSVaishali Kulkarni 	MAX_VF_ZONE_SIZE_MODE
1554*14b24e2bSVaishali Kulkarni };
1555*14b24e2bSVaishali Kulkarni 
1556*14b24e2bSVaishali Kulkarni 
1557*14b24e2bSVaishali Kulkarni 
1558*14b24e2bSVaishali Kulkarni 
1559*14b24e2bSVaishali Kulkarni /*
1560*14b24e2bSVaishali Kulkarni  * Attentions status block
1561*14b24e2bSVaishali Kulkarni  */
1562*14b24e2bSVaishali Kulkarni struct atten_status_block
1563*14b24e2bSVaishali Kulkarni {
1564*14b24e2bSVaishali Kulkarni 	__le32 atten_bits;
1565*14b24e2bSVaishali Kulkarni 	__le32 atten_ack;
1566*14b24e2bSVaishali Kulkarni 	__le16 reserved0;
1567*14b24e2bSVaishali Kulkarni 	__le16 sb_index /* status block running index */;
1568*14b24e2bSVaishali Kulkarni 	__le32 reserved1;
1569*14b24e2bSVaishali Kulkarni };
1570*14b24e2bSVaishali Kulkarni 
1571*14b24e2bSVaishali Kulkarni 
1572*14b24e2bSVaishali Kulkarni /*
1573*14b24e2bSVaishali Kulkarni  * Igu cleanup bit values to distinguish between clean or producer consumer update.
1574*14b24e2bSVaishali Kulkarni  */
1575*14b24e2bSVaishali Kulkarni enum command_type_bit
1576*14b24e2bSVaishali Kulkarni {
1577*14b24e2bSVaishali Kulkarni 	IGU_COMMAND_TYPE_NOP=0,
1578*14b24e2bSVaishali Kulkarni 	IGU_COMMAND_TYPE_SET=1,
1579*14b24e2bSVaishali Kulkarni 	MAX_COMMAND_TYPE_BIT
1580*14b24e2bSVaishali Kulkarni };
1581*14b24e2bSVaishali Kulkarni 
1582*14b24e2bSVaishali Kulkarni 
1583*14b24e2bSVaishali Kulkarni /*
1584*14b24e2bSVaishali Kulkarni  * DMAE command
1585*14b24e2bSVaishali Kulkarni  */
1586*14b24e2bSVaishali Kulkarni struct dmae_cmd
1587*14b24e2bSVaishali Kulkarni {
1588*14b24e2bSVaishali Kulkarni 	__le32 opcode;
1589*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_MASK              0x1 /* DMA Source. 0 - PCIe, 1 - GRC (use enum dmae_cmd_src_enum) */
1590*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_SHIFT             0
1591*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_MASK              0x3 /* DMA destination. 0 - None, 1 - PCIe, 2 - GRC, 3 - None (use enum dmae_cmd_dst_enum) */
1592*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_SHIFT             1
1593*14b24e2bSVaishali Kulkarni #define DMAE_CMD_C_DST_MASK            0x1 /* Completion destination. 0 - PCie, 1 - GRC (use enum dmae_cmd_c_dst_enum) */
1594*14b24e2bSVaishali Kulkarni #define DMAE_CMD_C_DST_SHIFT           3
1595*14b24e2bSVaishali Kulkarni #define DMAE_CMD_CRC_RESET_MASK        0x1 /* Reset the CRC result (do not use the previous result as the seed) */
1596*14b24e2bSVaishali Kulkarni #define DMAE_CMD_CRC_RESET_SHIFT       4
1597*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_ADDR_RESET_MASK   0x1 /* Reset the source address in the next go to the same source address of the previous go */
1598*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_ADDR_RESET_SHIFT  5
1599*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_ADDR_RESET_MASK   0x1 /* Reset the destination address in the next go to the same destination address of the previous go */
1600*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_ADDR_RESET_SHIFT  6
1601*14b24e2bSVaishali Kulkarni #define DMAE_CMD_COMP_FUNC_MASK        0x1 /* 0   completion function is the same as src function, 1 - 0   completion function is the same as dst function (use enum dmae_cmd_comp_func_enum) */
1602*14b24e2bSVaishali Kulkarni #define DMAE_CMD_COMP_FUNC_SHIFT       7
1603*14b24e2bSVaishali Kulkarni #define DMAE_CMD_COMP_WORD_EN_MASK     0x1 /* 0 - Do not write a completion word, 1 - Write a completion word (use enum dmae_cmd_comp_word_en_enum) */
1604*14b24e2bSVaishali Kulkarni #define DMAE_CMD_COMP_WORD_EN_SHIFT    8
1605*14b24e2bSVaishali Kulkarni #define DMAE_CMD_COMP_CRC_EN_MASK      0x1 /* 0 - Do not write a CRC word, 1 - Write a CRC word (use enum dmae_cmd_comp_crc_en_enum) */
1606*14b24e2bSVaishali Kulkarni #define DMAE_CMD_COMP_CRC_EN_SHIFT     9
1607*14b24e2bSVaishali Kulkarni #define DMAE_CMD_COMP_CRC_OFFSET_MASK  0x7 /* The CRC word should be taken from the DMAE address space from address 9+X, where X is the value in these bits. */
1608*14b24e2bSVaishali Kulkarni #define DMAE_CMD_COMP_CRC_OFFSET_SHIFT 10
1609*14b24e2bSVaishali Kulkarni #define DMAE_CMD_RESERVED1_MASK        0x1
1610*14b24e2bSVaishali Kulkarni #define DMAE_CMD_RESERVED1_SHIFT       13
1611*14b24e2bSVaishali Kulkarni #define DMAE_CMD_ENDIANITY_MODE_MASK   0x3
1612*14b24e2bSVaishali Kulkarni #define DMAE_CMD_ENDIANITY_MODE_SHIFT  14
1613*14b24e2bSVaishali Kulkarni #define DMAE_CMD_ERR_HANDLING_MASK     0x3 /* The field specifies how the completion word is affected by PCIe read error. 0   Send a regular completion, 1 - Send a completion with an error indication, 2   do not send a completion (use enum dmae_cmd_error_handling_enum) */
1614*14b24e2bSVaishali Kulkarni #define DMAE_CMD_ERR_HANDLING_SHIFT    16
1615*14b24e2bSVaishali Kulkarni #define DMAE_CMD_PORT_ID_MASK          0x3 /* The port ID to be placed on the  RF FID  field of the GRC bus. this field is used both when GRC is the destination and when it is the source of the DMAE transaction. */
1616*14b24e2bSVaishali Kulkarni #define DMAE_CMD_PORT_ID_SHIFT         18
1617*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_PF_ID_MASK        0xF /* Source PCI function number [3:0] */
1618*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_PF_ID_SHIFT       20
1619*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_PF_ID_MASK        0xF /* Destination PCI function number [3:0] */
1620*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_PF_ID_SHIFT       24
1621*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_VF_ID_VALID_MASK  0x1 /* Source VFID valid */
1622*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_VF_ID_VALID_SHIFT 28
1623*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_VF_ID_VALID_MASK  0x1 /* Destination VFID valid */
1624*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_VF_ID_VALID_SHIFT 29
1625*14b24e2bSVaishali Kulkarni #define DMAE_CMD_RESERVED2_MASK        0x3
1626*14b24e2bSVaishali Kulkarni #define DMAE_CMD_RESERVED2_SHIFT       30
1627*14b24e2bSVaishali Kulkarni 	__le32 src_addr_lo /* PCIe source address low in bytes or GRC source address in DW */;
1628*14b24e2bSVaishali Kulkarni 	__le32 src_addr_hi /* PCIe source address high in bytes or reserved (if source is GRC) */;
1629*14b24e2bSVaishali Kulkarni 	__le32 dst_addr_lo /* PCIe destination address low in bytes or GRC destination address in DW */;
1630*14b24e2bSVaishali Kulkarni 	__le32 dst_addr_hi /* PCIe destination address high in bytes or reserved (if destination is GRC) */;
1631*14b24e2bSVaishali Kulkarni 	__le16 length_dw /* Length in DW */;
1632*14b24e2bSVaishali Kulkarni 	__le16 opcode_b;
1633*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_VF_ID_MASK        0xFF /* Source VF id */
1634*14b24e2bSVaishali Kulkarni #define DMAE_CMD_SRC_VF_ID_SHIFT       0
1635*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_VF_ID_MASK        0xFF /* Destination VF id */
1636*14b24e2bSVaishali Kulkarni #define DMAE_CMD_DST_VF_ID_SHIFT       8
1637*14b24e2bSVaishali Kulkarni 	__le32 comp_addr_lo /* PCIe completion address low in bytes or GRC completion address in DW */;
1638*14b24e2bSVaishali Kulkarni 	__le32 comp_addr_hi /* PCIe completion address high in bytes or reserved (if completion address is GRC) */;
1639*14b24e2bSVaishali Kulkarni 	__le32 comp_val /* Value to write to completion address */;
1640*14b24e2bSVaishali Kulkarni 	__le32 crc32 /* crc16 result */;
1641*14b24e2bSVaishali Kulkarni 	__le32 crc_32_c /* crc32_c result */;
1642*14b24e2bSVaishali Kulkarni 	__le16 crc16 /* crc16 result */;
1643*14b24e2bSVaishali Kulkarni 	__le16 crc16_c /* crc16_c result */;
1644*14b24e2bSVaishali Kulkarni 	__le16 crc10 /* crc_t10 result */;
1645*14b24e2bSVaishali Kulkarni 	__le16 reserved;
1646*14b24e2bSVaishali Kulkarni 	__le16 xsum16 /* checksum16 result  */;
1647*14b24e2bSVaishali Kulkarni 	__le16 xsum8 /* checksum8 result  */;
1648*14b24e2bSVaishali Kulkarni };
1649*14b24e2bSVaishali Kulkarni 
1650*14b24e2bSVaishali Kulkarni 
1651*14b24e2bSVaishali Kulkarni enum dmae_cmd_comp_crc_en_enum
1652*14b24e2bSVaishali Kulkarni {
1653*14b24e2bSVaishali Kulkarni 	dmae_cmd_comp_crc_disabled /* Do not write a CRC word */,
1654*14b24e2bSVaishali Kulkarni 	dmae_cmd_comp_crc_enabled /* Write a CRC word */,
1655*14b24e2bSVaishali Kulkarni 	MAX_DMAE_CMD_COMP_CRC_EN_ENUM
1656*14b24e2bSVaishali Kulkarni };
1657*14b24e2bSVaishali Kulkarni 
1658*14b24e2bSVaishali Kulkarni 
1659*14b24e2bSVaishali Kulkarni enum dmae_cmd_comp_func_enum
1660*14b24e2bSVaishali Kulkarni {
1661*14b24e2bSVaishali Kulkarni 	dmae_cmd_comp_func_to_src /* completion word and/or CRC will be sent to SRC-PCI function/SRC VFID */,
1662*14b24e2bSVaishali Kulkarni 	dmae_cmd_comp_func_to_dst /* completion word and/or CRC will be sent to DST-PCI function/DST VFID */,
1663*14b24e2bSVaishali Kulkarni 	MAX_DMAE_CMD_COMP_FUNC_ENUM
1664*14b24e2bSVaishali Kulkarni };
1665*14b24e2bSVaishali Kulkarni 
1666*14b24e2bSVaishali Kulkarni 
1667*14b24e2bSVaishali Kulkarni enum dmae_cmd_comp_word_en_enum
1668*14b24e2bSVaishali Kulkarni {
1669*14b24e2bSVaishali Kulkarni 	dmae_cmd_comp_word_disabled /* Do not write a completion word */,
1670*14b24e2bSVaishali Kulkarni 	dmae_cmd_comp_word_enabled /* Write the completion word */,
1671*14b24e2bSVaishali Kulkarni 	MAX_DMAE_CMD_COMP_WORD_EN_ENUM
1672*14b24e2bSVaishali Kulkarni };
1673*14b24e2bSVaishali Kulkarni 
1674*14b24e2bSVaishali Kulkarni 
1675*14b24e2bSVaishali Kulkarni enum dmae_cmd_c_dst_enum
1676*14b24e2bSVaishali Kulkarni {
1677*14b24e2bSVaishali Kulkarni 	dmae_cmd_c_dst_pcie,
1678*14b24e2bSVaishali Kulkarni 	dmae_cmd_c_dst_grc,
1679*14b24e2bSVaishali Kulkarni 	MAX_DMAE_CMD_C_DST_ENUM
1680*14b24e2bSVaishali Kulkarni };
1681*14b24e2bSVaishali Kulkarni 
1682*14b24e2bSVaishali Kulkarni 
1683*14b24e2bSVaishali Kulkarni enum dmae_cmd_dst_enum
1684*14b24e2bSVaishali Kulkarni {
1685*14b24e2bSVaishali Kulkarni 	dmae_cmd_dst_none_0,
1686*14b24e2bSVaishali Kulkarni 	dmae_cmd_dst_pcie,
1687*14b24e2bSVaishali Kulkarni 	dmae_cmd_dst_grc,
1688*14b24e2bSVaishali Kulkarni 	dmae_cmd_dst_none_3,
1689*14b24e2bSVaishali Kulkarni 	MAX_DMAE_CMD_DST_ENUM
1690*14b24e2bSVaishali Kulkarni };
1691*14b24e2bSVaishali Kulkarni 
1692*14b24e2bSVaishali Kulkarni 
1693*14b24e2bSVaishali Kulkarni enum dmae_cmd_error_handling_enum
1694*14b24e2bSVaishali Kulkarni {
1695*14b24e2bSVaishali Kulkarni 	dmae_cmd_error_handling_send_regular_comp /* Send a regular completion (with no error indication) */,
1696*14b24e2bSVaishali Kulkarni 	dmae_cmd_error_handling_send_comp_with_err /* Send a completion with an error indication (i.e. set bit 31 of the completion word) */,
1697*14b24e2bSVaishali Kulkarni 	dmae_cmd_error_handling_dont_send_comp /* Do not send a completion */,
1698*14b24e2bSVaishali Kulkarni 	MAX_DMAE_CMD_ERROR_HANDLING_ENUM
1699*14b24e2bSVaishali Kulkarni };
1700*14b24e2bSVaishali Kulkarni 
1701*14b24e2bSVaishali Kulkarni 
1702*14b24e2bSVaishali Kulkarni enum dmae_cmd_src_enum
1703*14b24e2bSVaishali Kulkarni {
1704*14b24e2bSVaishali Kulkarni 	dmae_cmd_src_pcie /* The source is the PCIe */,
1705*14b24e2bSVaishali Kulkarni 	dmae_cmd_src_grc /* The source is the GRC */,
1706*14b24e2bSVaishali Kulkarni 	MAX_DMAE_CMD_SRC_ENUM
1707*14b24e2bSVaishali Kulkarni };
1708*14b24e2bSVaishali Kulkarni 
1709*14b24e2bSVaishali Kulkarni 
1710*14b24e2bSVaishali Kulkarni struct e4_mstorm_core_conn_ag_ctx
1711*14b24e2bSVaishali Kulkarni {
1712*14b24e2bSVaishali Kulkarni 	u8 byte0 /* cdu_validation */;
1713*14b24e2bSVaishali Kulkarni 	u8 byte1 /* state */;
1714*14b24e2bSVaishali Kulkarni 	u8 flags0;
1715*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1 /* exist_in_qm0 */
1716*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
1717*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1 /* exist_in_qm1 */
1718*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
1719*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3 /* cf0 */
1720*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT     2
1721*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3 /* cf1 */
1722*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT     4
1723*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3 /* cf2 */
1724*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT     6
1725*14b24e2bSVaishali Kulkarni 	u8 flags1;
1726*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1 /* cf0en */
1727*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   0
1728*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1 /* cf1en */
1729*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   1
1730*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1 /* cf2en */
1731*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   2
1732*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1 /* rule0en */
1733*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
1734*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1 /* rule1en */
1735*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
1736*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1 /* rule2en */
1737*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
1738*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1 /* rule3en */
1739*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
1740*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1 /* rule4en */
1741*14b24e2bSVaishali Kulkarni #define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
1742*14b24e2bSVaishali Kulkarni 	__le16 word0 /* word0 */;
1743*14b24e2bSVaishali Kulkarni 	__le16 word1 /* word1 */;
1744*14b24e2bSVaishali Kulkarni 	__le32 reg0 /* reg0 */;
1745*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
1746*14b24e2bSVaishali Kulkarni };
1747*14b24e2bSVaishali Kulkarni 
1748*14b24e2bSVaishali Kulkarni 
1749*14b24e2bSVaishali Kulkarni 
1750*14b24e2bSVaishali Kulkarni 
1751*14b24e2bSVaishali Kulkarni 
1752*14b24e2bSVaishali Kulkarni struct e4_ystorm_core_conn_ag_ctx
1753*14b24e2bSVaishali Kulkarni {
1754*14b24e2bSVaishali Kulkarni 	u8 byte0 /* cdu_validation */;
1755*14b24e2bSVaishali Kulkarni 	u8 byte1 /* state */;
1756*14b24e2bSVaishali Kulkarni 	u8 flags0;
1757*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1 /* exist_in_qm0 */
1758*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
1759*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1 /* exist_in_qm1 */
1760*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
1761*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3 /* cf0 */
1762*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT     2
1763*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3 /* cf1 */
1764*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT     4
1765*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3 /* cf2 */
1766*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT     6
1767*14b24e2bSVaishali Kulkarni 	u8 flags1;
1768*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1 /* cf0en */
1769*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   0
1770*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1 /* cf1en */
1771*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   1
1772*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1 /* cf2en */
1773*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   2
1774*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1 /* rule0en */
1775*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
1776*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1 /* rule1en */
1777*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
1778*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1 /* rule2en */
1779*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
1780*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1 /* rule3en */
1781*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
1782*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1 /* rule4en */
1783*14b24e2bSVaishali Kulkarni #define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
1784*14b24e2bSVaishali Kulkarni 	u8 byte2 /* byte2 */;
1785*14b24e2bSVaishali Kulkarni 	u8 byte3 /* byte3 */;
1786*14b24e2bSVaishali Kulkarni 	__le16 word0 /* word0 */;
1787*14b24e2bSVaishali Kulkarni 	__le32 reg0 /* reg0 */;
1788*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
1789*14b24e2bSVaishali Kulkarni 	__le16 word1 /* word1 */;
1790*14b24e2bSVaishali Kulkarni 	__le16 word2 /* word2 */;
1791*14b24e2bSVaishali Kulkarni 	__le16 word3 /* word3 */;
1792*14b24e2bSVaishali Kulkarni 	__le16 word4 /* word4 */;
1793*14b24e2bSVaishali Kulkarni 	__le32 reg2 /* reg2 */;
1794*14b24e2bSVaishali Kulkarni 	__le32 reg3 /* reg3 */;
1795*14b24e2bSVaishali Kulkarni };
1796*14b24e2bSVaishali Kulkarni 
1797*14b24e2bSVaishali Kulkarni 
1798*14b24e2bSVaishali Kulkarni struct e5_mstorm_core_conn_ag_ctx
1799*14b24e2bSVaishali Kulkarni {
1800*14b24e2bSVaishali Kulkarni 	u8 byte0 /* cdu_validation */;
1801*14b24e2bSVaishali Kulkarni 	u8 byte1 /* state_and_core_id */;
1802*14b24e2bSVaishali Kulkarni 	u8 flags0;
1803*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1 /* exist_in_qm0 */
1804*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
1805*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1 /* exist_in_qm1 */
1806*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
1807*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3 /* cf0 */
1808*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT     2
1809*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3 /* cf1 */
1810*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT     4
1811*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3 /* cf2 */
1812*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT     6
1813*14b24e2bSVaishali Kulkarni 	u8 flags1;
1814*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1 /* cf0en */
1815*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   0
1816*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1 /* cf1en */
1817*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   1
1818*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1 /* cf2en */
1819*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   2
1820*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1 /* rule0en */
1821*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
1822*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1 /* rule1en */
1823*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
1824*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1 /* rule2en */
1825*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
1826*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1 /* rule3en */
1827*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
1828*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1 /* rule4en */
1829*14b24e2bSVaishali Kulkarni #define E5_MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
1830*14b24e2bSVaishali Kulkarni 	__le16 word0 /* word0 */;
1831*14b24e2bSVaishali Kulkarni 	__le16 word1 /* word1 */;
1832*14b24e2bSVaishali Kulkarni 	__le32 reg0 /* reg0 */;
1833*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
1834*14b24e2bSVaishali Kulkarni };
1835*14b24e2bSVaishali Kulkarni 
1836*14b24e2bSVaishali Kulkarni 
1837*14b24e2bSVaishali Kulkarni struct e5_tstorm_core_conn_ag_ctx
1838*14b24e2bSVaishali Kulkarni {
1839*14b24e2bSVaishali Kulkarni 	u8 byte0 /* cdu_validation */;
1840*14b24e2bSVaishali Kulkarni 	u8 byte1 /* state_and_core_id */;
1841*14b24e2bSVaishali Kulkarni 	u8 flags0;
1842*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT0_MASK          0x1 /* exist_in_qm0 */
1843*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT         0
1844*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT1_MASK          0x1 /* exist_in_qm1 */
1845*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT         1
1846*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT2_MASK          0x1 /* bit2 */
1847*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT2_SHIFT         2
1848*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT3_MASK          0x1 /* bit3 */
1849*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT3_SHIFT         3
1850*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT4_MASK          0x1 /* bit4 */
1851*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT4_SHIFT         4
1852*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT5_MASK          0x1 /* bit5 */
1853*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_BIT5_SHIFT         5
1854*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF0_MASK           0x3 /* timer0cf */
1855*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF0_SHIFT          6
1856*14b24e2bSVaishali Kulkarni 	u8 flags1;
1857*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF1_MASK           0x3 /* timer1cf */
1858*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF1_SHIFT          0
1859*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF2_MASK           0x3 /* timer2cf */
1860*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF2_SHIFT          2
1861*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF3_MASK           0x3 /* timer_stop_all */
1862*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF3_SHIFT          4
1863*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF4_MASK           0x3 /* cf4 */
1864*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF4_SHIFT          6
1865*14b24e2bSVaishali Kulkarni 	u8 flags2;
1866*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF5_MASK           0x3 /* cf5 */
1867*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF5_SHIFT          0
1868*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF6_MASK           0x3 /* cf6 */
1869*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF6_SHIFT          2
1870*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF7_MASK           0x3 /* cf7 */
1871*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF7_SHIFT          4
1872*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF8_MASK           0x3 /* cf8 */
1873*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF8_SHIFT          6
1874*14b24e2bSVaishali Kulkarni 	u8 flags3;
1875*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF9_MASK           0x3 /* cf9 */
1876*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF9_SHIFT          0
1877*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF10_MASK          0x3 /* cf10 */
1878*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF10_SHIFT         2
1879*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF0EN_MASK         0x1 /* cf0en */
1880*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT        4
1881*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF1EN_MASK         0x1 /* cf1en */
1882*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT        5
1883*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF2EN_MASK         0x1 /* cf2en */
1884*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT        6
1885*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF3EN_MASK         0x1 /* cf3en */
1886*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT        7
1887*14b24e2bSVaishali Kulkarni 	u8 flags4;
1888*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF4EN_MASK         0x1 /* cf4en */
1889*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT        0
1890*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF5EN_MASK         0x1 /* cf5en */
1891*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT        1
1892*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF6EN_MASK         0x1 /* cf6en */
1893*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT        2
1894*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF7EN_MASK         0x1 /* cf7en */
1895*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT        3
1896*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF8EN_MASK         0x1 /* cf8en */
1897*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT        4
1898*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF9EN_MASK         0x1 /* cf9en */
1899*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT        5
1900*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF10EN_MASK        0x1 /* cf10en */
1901*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT       6
1902*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK       0x1 /* rule0en */
1903*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT      7
1904*14b24e2bSVaishali Kulkarni 	u8 flags5;
1905*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK       0x1 /* rule1en */
1906*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT      0
1907*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK       0x1 /* rule2en */
1908*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT      1
1909*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK       0x1 /* rule3en */
1910*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT      2
1911*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK       0x1 /* rule4en */
1912*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT      3
1913*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK       0x1 /* rule5en */
1914*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT      4
1915*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK       0x1 /* rule6en */
1916*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT      5
1917*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK       0x1 /* rule7en */
1918*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT      6
1919*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE8EN_MASK       0x1 /* rule8en */
1920*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT      7
1921*14b24e2bSVaishali Kulkarni 	u8 flags6;
1922*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED1_MASK  0x1 /* bit6 */
1923*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED1_SHIFT 0
1924*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED2_MASK  0x1 /* bit7 */
1925*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED2_SHIFT 1
1926*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED3_MASK  0x1 /* bit8 */
1927*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED3_SHIFT 2
1928*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED4_MASK  0x3 /* cf11 */
1929*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED4_SHIFT 3
1930*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED5_MASK  0x1 /* cf11en */
1931*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED5_SHIFT 5
1932*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED6_MASK  0x1 /* rule9en */
1933*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED6_SHIFT 6
1934*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED7_MASK  0x1 /* rule10en */
1935*14b24e2bSVaishali Kulkarni #define E5_TSTORM_CORE_CONN_AG_CTX_E4_RESERVED7_SHIFT 7
1936*14b24e2bSVaishali Kulkarni 	u8 byte2 /* byte2 */;
1937*14b24e2bSVaishali Kulkarni 	__le16 word0 /* word0 */;
1938*14b24e2bSVaishali Kulkarni 	__le32 reg0 /* reg0 */;
1939*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
1940*14b24e2bSVaishali Kulkarni 	__le32 reg2 /* reg2 */;
1941*14b24e2bSVaishali Kulkarni 	__le32 reg3 /* reg3 */;
1942*14b24e2bSVaishali Kulkarni 	__le32 reg4 /* reg4 */;
1943*14b24e2bSVaishali Kulkarni 	__le32 reg5 /* reg5 */;
1944*14b24e2bSVaishali Kulkarni 	__le32 reg6 /* reg6 */;
1945*14b24e2bSVaishali Kulkarni 	__le32 reg7 /* reg7 */;
1946*14b24e2bSVaishali Kulkarni 	__le32 reg8 /* reg8 */;
1947*14b24e2bSVaishali Kulkarni 	u8 byte3 /* byte3 */;
1948*14b24e2bSVaishali Kulkarni 	u8 byte4 /* byte4 */;
1949*14b24e2bSVaishali Kulkarni 	u8 byte5 /* byte5 */;
1950*14b24e2bSVaishali Kulkarni 	u8 e4_reserved8 /* byte6 */;
1951*14b24e2bSVaishali Kulkarni 	__le16 word1 /* word1 */;
1952*14b24e2bSVaishali Kulkarni 	__le16 word2 /* conn_dpi */;
1953*14b24e2bSVaishali Kulkarni 	__le32 reg9 /* reg9 */;
1954*14b24e2bSVaishali Kulkarni 	__le16 word3 /* word3 */;
1955*14b24e2bSVaishali Kulkarni 	__le16 e4_reserved9 /* word4 */;
1956*14b24e2bSVaishali Kulkarni };
1957*14b24e2bSVaishali Kulkarni 
1958*14b24e2bSVaishali Kulkarni 
1959*14b24e2bSVaishali Kulkarni struct e5_ustorm_core_conn_ag_ctx
1960*14b24e2bSVaishali Kulkarni {
1961*14b24e2bSVaishali Kulkarni 	u8 reserved /* cdu_validation */;
1962*14b24e2bSVaishali Kulkarni 	u8 byte1 /* state_and_core_id */;
1963*14b24e2bSVaishali Kulkarni 	u8 flags0;
1964*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_BIT0_MASK          0x1 /* exist_in_qm0 */
1965*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT         0
1966*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_BIT1_MASK          0x1 /* exist_in_qm1 */
1967*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT         1
1968*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF0_MASK           0x3 /* timer0cf */
1969*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF0_SHIFT          2
1970*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF1_MASK           0x3 /* timer1cf */
1971*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF1_SHIFT          4
1972*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF2_MASK           0x3 /* timer2cf */
1973*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF2_SHIFT          6
1974*14b24e2bSVaishali Kulkarni 	u8 flags1;
1975*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF3_MASK           0x3 /* timer_stop_all */
1976*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF3_SHIFT          0
1977*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF4_MASK           0x3 /* cf4 */
1978*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF4_SHIFT          2
1979*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF5_MASK           0x3 /* cf5 */
1980*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF5_SHIFT          4
1981*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF6_MASK           0x3 /* cf6 */
1982*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF6_SHIFT          6
1983*14b24e2bSVaishali Kulkarni 	u8 flags2;
1984*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF0EN_MASK         0x1 /* cf0en */
1985*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT        0
1986*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF1EN_MASK         0x1 /* cf1en */
1987*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT        1
1988*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF2EN_MASK         0x1 /* cf2en */
1989*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT        2
1990*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF3EN_MASK         0x1 /* cf3en */
1991*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT        3
1992*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF4EN_MASK         0x1 /* cf4en */
1993*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT        4
1994*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF5EN_MASK         0x1 /* cf5en */
1995*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT        5
1996*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF6EN_MASK         0x1 /* cf6en */
1997*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT        6
1998*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK       0x1 /* rule0en */
1999*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT      7
2000*14b24e2bSVaishali Kulkarni 	u8 flags3;
2001*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK       0x1 /* rule1en */
2002*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT      0
2003*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK       0x1 /* rule2en */
2004*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT      1
2005*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK       0x1 /* rule3en */
2006*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT      2
2007*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK       0x1 /* rule4en */
2008*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT      3
2009*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK       0x1 /* rule5en */
2010*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT      4
2011*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK       0x1 /* rule6en */
2012*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT      5
2013*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK       0x1 /* rule7en */
2014*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT      6
2015*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK       0x1 /* rule8en */
2016*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT      7
2017*14b24e2bSVaishali Kulkarni 	u8 flags4;
2018*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED1_MASK  0x1 /* bit2 */
2019*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED1_SHIFT 0
2020*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED2_MASK  0x1 /* bit3 */
2021*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED2_SHIFT 1
2022*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED3_MASK  0x3 /* cf7 */
2023*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED3_SHIFT 2
2024*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED4_MASK  0x3 /* cf8 */
2025*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED4_SHIFT 4
2026*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED5_MASK  0x1 /* cf7en */
2027*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED5_SHIFT 6
2028*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED6_MASK  0x1 /* cf8en */
2029*14b24e2bSVaishali Kulkarni #define E5_USTORM_CORE_CONN_AG_CTX_E4_RESERVED6_SHIFT 7
2030*14b24e2bSVaishali Kulkarni 	u8 byte2 /* byte2 */;
2031*14b24e2bSVaishali Kulkarni 	__le16 word0 /* conn_dpi */;
2032*14b24e2bSVaishali Kulkarni 	__le16 word1 /* word1 */;
2033*14b24e2bSVaishali Kulkarni 	__le32 rx_producers /* reg0 */;
2034*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
2035*14b24e2bSVaishali Kulkarni 	__le32 reg2 /* reg2 */;
2036*14b24e2bSVaishali Kulkarni 	__le32 reg3 /* reg3 */;
2037*14b24e2bSVaishali Kulkarni 	__le16 word2 /* word2 */;
2038*14b24e2bSVaishali Kulkarni 	__le16 word3 /* word3 */;
2039*14b24e2bSVaishali Kulkarni };
2040*14b24e2bSVaishali Kulkarni 
2041*14b24e2bSVaishali Kulkarni 
2042*14b24e2bSVaishali Kulkarni struct e5_xstorm_core_conn_ag_ctx
2043*14b24e2bSVaishali Kulkarni {
2044*14b24e2bSVaishali Kulkarni 	u8 reserved0 /* cdu_validation */;
2045*14b24e2bSVaishali Kulkarni 	u8 state_and_core_id /* state_and_core_id */;
2046*14b24e2bSVaishali Kulkarni 	u8 flags0;
2047*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_MASK         0x1 /* exist_in_qm0 */
2048*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT        0
2049*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED1_MASK            0x1 /* exist_in_qm1 */
2050*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED1_SHIFT           1
2051*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED2_MASK            0x1 /* exist_in_qm2 */
2052*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED2_SHIFT           2
2053*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_MASK         0x1 /* exist_in_qm3 */
2054*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT        3
2055*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED3_MASK            0x1 /* bit4 */
2056*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED3_SHIFT           4
2057*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED4_MASK            0x1 /* cf_array_active */
2058*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED4_SHIFT           5
2059*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED5_MASK            0x1 /* bit6 */
2060*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED5_SHIFT           6
2061*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED6_MASK            0x1 /* bit7 */
2062*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED6_SHIFT           7
2063*14b24e2bSVaishali Kulkarni 	u8 flags1;
2064*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED7_MASK            0x1 /* bit8 */
2065*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED7_SHIFT           0
2066*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED8_MASK            0x1 /* bit9 */
2067*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED8_SHIFT           1
2068*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED9_MASK            0x1 /* bit10 */
2069*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED9_SHIFT           2
2070*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT11_MASK                0x1 /* bit11 */
2071*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT11_SHIFT               3
2072*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT12_MASK                0x1 /* bit12 */
2073*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT12_SHIFT               4
2074*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT13_MASK                0x1 /* bit13 */
2075*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT13_SHIFT               5
2076*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_MASK       0x1 /* bit14 */
2077*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT      6
2078*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_MASK         0x1 /* bit15 */
2079*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT        7
2080*14b24e2bSVaishali Kulkarni 	u8 flags2;
2081*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF0_MASK                  0x3 /* timer0cf */
2082*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF0_SHIFT                 0
2083*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF1_MASK                  0x3 /* timer1cf */
2084*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF1_SHIFT                 2
2085*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF2_MASK                  0x3 /* timer2cf */
2086*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF2_SHIFT                 4
2087*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF3_MASK                  0x3 /* timer_stop_all */
2088*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF3_SHIFT                 6
2089*14b24e2bSVaishali Kulkarni 	u8 flags3;
2090*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF4_MASK                  0x3 /* cf4 */
2091*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF4_SHIFT                 0
2092*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF5_MASK                  0x3 /* cf5 */
2093*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF5_SHIFT                 2
2094*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF6_MASK                  0x3 /* cf6 */
2095*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF6_SHIFT                 4
2096*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF7_MASK                  0x3 /* cf7 */
2097*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF7_SHIFT                 6
2098*14b24e2bSVaishali Kulkarni 	u8 flags4;
2099*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF8_MASK                  0x3 /* cf8 */
2100*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF8_SHIFT                 0
2101*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF9_MASK                  0x3 /* cf9 */
2102*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF9_SHIFT                 2
2103*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF10_MASK                 0x3 /* cf10 */
2104*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF10_SHIFT                4
2105*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF11_MASK                 0x3 /* cf11 */
2106*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF11_SHIFT                6
2107*14b24e2bSVaishali Kulkarni 	u8 flags5;
2108*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF12_MASK                 0x3 /* cf12 */
2109*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF12_SHIFT                0
2110*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF13_MASK                 0x3 /* cf13 */
2111*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF13_SHIFT                2
2112*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF14_MASK                 0x3 /* cf14 */
2113*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF14_SHIFT                4
2114*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF15_MASK                 0x3 /* cf15 */
2115*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF15_SHIFT                6
2116*14b24e2bSVaishali Kulkarni 	u8 flags6;
2117*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_MASK     0x3 /* cf16 */
2118*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_SHIFT    0
2119*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF17_MASK                 0x3 /* cf_array_cf */
2120*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF17_SHIFT                2
2121*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_DQ_CF_MASK                0x3 /* cf18 */
2122*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_DQ_CF_SHIFT               4
2123*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_MASK         0x3 /* cf19 */
2124*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_SHIFT        6
2125*14b24e2bSVaishali Kulkarni 	u8 flags7;
2126*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_MASK             0x3 /* cf20 */
2127*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_SHIFT            0
2128*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED10_MASK           0x3 /* cf21 */
2129*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED10_SHIFT          2
2130*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_MASK            0x3 /* cf22 */
2131*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_SHIFT           4
2132*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF0EN_MASK                0x1 /* cf0en */
2133*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT               6
2134*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF1EN_MASK                0x1 /* cf1en */
2135*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT               7
2136*14b24e2bSVaishali Kulkarni 	u8 flags8;
2137*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF2EN_MASK                0x1 /* cf2en */
2138*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT               0
2139*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF3EN_MASK                0x1 /* cf3en */
2140*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT               1
2141*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF4EN_MASK                0x1 /* cf4en */
2142*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT               2
2143*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF5EN_MASK                0x1 /* cf5en */
2144*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT               3
2145*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF6EN_MASK                0x1 /* cf6en */
2146*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT               4
2147*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF7EN_MASK                0x1 /* cf7en */
2148*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT               5
2149*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF8EN_MASK                0x1 /* cf8en */
2150*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT               6
2151*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF9EN_MASK                0x1 /* cf9en */
2152*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT               7
2153*14b24e2bSVaishali Kulkarni 	u8 flags9;
2154*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF10EN_MASK               0x1 /* cf10en */
2155*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT              0
2156*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF11EN_MASK               0x1 /* cf11en */
2157*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF11EN_SHIFT              1
2158*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF12EN_MASK               0x1 /* cf12en */
2159*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF12EN_SHIFT              2
2160*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF13EN_MASK               0x1 /* cf13en */
2161*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF13EN_SHIFT              3
2162*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF14EN_MASK               0x1 /* cf14en */
2163*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF14EN_SHIFT              4
2164*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF15EN_MASK               0x1 /* cf15en */
2165*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF15EN_SHIFT              5
2166*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_MASK  0x1 /* cf16en */
2167*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_SHIFT 6
2168*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF17EN_MASK               0x1 /* cf_array_cf_en */
2169*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF17EN_SHIFT              7
2170*14b24e2bSVaishali Kulkarni 	u8 flags10;
2171*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_MASK             0x1 /* cf18en */
2172*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_SHIFT            0
2173*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_MASK      0x1 /* cf19en */
2174*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT     1
2175*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_MASK          0x1 /* cf20en */
2176*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT         2
2177*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED11_MASK           0x1 /* cf21en */
2178*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED11_SHIFT          3
2179*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_MASK         0x1 /* cf22en */
2180*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT        4
2181*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF23EN_MASK               0x1 /* cf23en */
2182*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF23EN_SHIFT              5
2183*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED12_MASK           0x1 /* rule0en */
2184*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED12_SHIFT          6
2185*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED13_MASK           0x1 /* rule1en */
2186*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED13_SHIFT          7
2187*14b24e2bSVaishali Kulkarni 	u8 flags11;
2188*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED14_MASK           0x1 /* rule2en */
2189*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED14_SHIFT          0
2190*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED15_MASK           0x1 /* rule3en */
2191*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RESERVED15_SHIFT          1
2192*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_MASK       0x1 /* rule4en */
2193*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT      2
2194*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK              0x1 /* rule5en */
2195*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT             3
2196*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK              0x1 /* rule6en */
2197*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT             4
2198*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK              0x1 /* rule7en */
2199*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT             5
2200*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_MASK         0x1 /* rule8en */
2201*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_SHIFT        6
2202*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE9EN_MASK              0x1 /* rule9en */
2203*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE9EN_SHIFT             7
2204*14b24e2bSVaishali Kulkarni 	u8 flags12;
2205*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE10EN_MASK             0x1 /* rule10en */
2206*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE10EN_SHIFT            0
2207*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE11EN_MASK             0x1 /* rule11en */
2208*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE11EN_SHIFT            1
2209*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_MASK         0x1 /* rule12en */
2210*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_SHIFT        2
2211*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_MASK         0x1 /* rule13en */
2212*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_SHIFT        3
2213*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE14EN_MASK             0x1 /* rule14en */
2214*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE14EN_SHIFT            4
2215*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE15EN_MASK             0x1 /* rule15en */
2216*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE15EN_SHIFT            5
2217*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE16EN_MASK             0x1 /* rule16en */
2218*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE16EN_SHIFT            6
2219*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE17EN_MASK             0x1 /* rule17en */
2220*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE17EN_SHIFT            7
2221*14b24e2bSVaishali Kulkarni 	u8 flags13;
2222*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE18EN_MASK             0x1 /* rule18en */
2223*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE18EN_SHIFT            0
2224*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE19EN_MASK             0x1 /* rule19en */
2225*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_RULE19EN_SHIFT            1
2226*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_MASK         0x1 /* rule20en */
2227*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_SHIFT        2
2228*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_MASK         0x1 /* rule21en */
2229*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_SHIFT        3
2230*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_MASK         0x1 /* rule22en */
2231*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_SHIFT        4
2232*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_MASK         0x1 /* rule23en */
2233*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_SHIFT        5
2234*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_MASK         0x1 /* rule24en */
2235*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_SHIFT        6
2236*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_MASK         0x1 /* rule25en */
2237*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_SHIFT        7
2238*14b24e2bSVaishali Kulkarni 	u8 flags14;
2239*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT16_MASK                0x1 /* bit16 */
2240*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT16_SHIFT               0
2241*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT17_MASK                0x1 /* bit17 */
2242*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT17_SHIFT               1
2243*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT18_MASK                0x1 /* bit18 */
2244*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT18_SHIFT               2
2245*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT19_MASK                0x1 /* bit19 */
2246*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT19_SHIFT               3
2247*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT20_MASK                0x1 /* bit20 */
2248*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT20_SHIFT               4
2249*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT21_MASK                0x1 /* bit21 */
2250*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_BIT21_SHIFT               5
2251*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF23_MASK                 0x3 /* cf23 */
2252*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_CF23_SHIFT                6
2253*14b24e2bSVaishali Kulkarni 	u8 byte2 /* byte2 */;
2254*14b24e2bSVaishali Kulkarni 	__le16 physical_q0 /* physical_q0 */;
2255*14b24e2bSVaishali Kulkarni 	__le16 consolid_prod /* physical_q1 */;
2256*14b24e2bSVaishali Kulkarni 	__le16 reserved16 /* physical_q2 */;
2257*14b24e2bSVaishali Kulkarni 	__le16 tx_bd_cons /* word3 */;
2258*14b24e2bSVaishali Kulkarni 	__le16 tx_bd_or_spq_prod /* word4 */;
2259*14b24e2bSVaishali Kulkarni 	__le16 word5 /* word5 */;
2260*14b24e2bSVaishali Kulkarni 	__le16 conn_dpi /* conn_dpi */;
2261*14b24e2bSVaishali Kulkarni 	u8 byte3 /* byte3 */;
2262*14b24e2bSVaishali Kulkarni 	u8 byte4 /* byte4 */;
2263*14b24e2bSVaishali Kulkarni 	u8 byte5 /* byte5 */;
2264*14b24e2bSVaishali Kulkarni 	u8 byte6 /* byte6 */;
2265*14b24e2bSVaishali Kulkarni 	__le32 reg0 /* reg0 */;
2266*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
2267*14b24e2bSVaishali Kulkarni 	__le32 reg2 /* reg2 */;
2268*14b24e2bSVaishali Kulkarni 	__le32 reg3 /* reg3 */;
2269*14b24e2bSVaishali Kulkarni 	__le32 reg4 /* reg4 */;
2270*14b24e2bSVaishali Kulkarni 	__le32 reg5 /* cf_array0 */;
2271*14b24e2bSVaishali Kulkarni 	__le32 reg6 /* cf_array1 */;
2272*14b24e2bSVaishali Kulkarni 	u8 flags15;
2273*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED1_MASK         0x1 /* bit22 */
2274*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED1_SHIFT        0
2275*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED2_MASK         0x1 /* bit23 */
2276*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED2_SHIFT        1
2277*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED3_MASK         0x1 /* bit24 */
2278*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED3_SHIFT        2
2279*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED4_MASK         0x3 /* cf24 */
2280*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED4_SHIFT        3
2281*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED5_MASK         0x1 /* cf24en */
2282*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED5_SHIFT        5
2283*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED6_MASK         0x1 /* rule26en */
2284*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED6_SHIFT        6
2285*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED7_MASK         0x1 /* rule27en */
2286*14b24e2bSVaishali Kulkarni #define E5_XSTORM_CORE_CONN_AG_CTX_E4_RESERVED7_SHIFT        7
2287*14b24e2bSVaishali Kulkarni 	u8 byte7 /* byte7 */;
2288*14b24e2bSVaishali Kulkarni 	__le16 word7 /* word7 */;
2289*14b24e2bSVaishali Kulkarni 	__le16 word8 /* word8 */;
2290*14b24e2bSVaishali Kulkarni 	__le16 word9 /* word9 */;
2291*14b24e2bSVaishali Kulkarni 	__le16 word10 /* word10 */;
2292*14b24e2bSVaishali Kulkarni 	__le16 word11 /* word11 */;
2293*14b24e2bSVaishali Kulkarni 	__le32 reg7 /* reg7 */;
2294*14b24e2bSVaishali Kulkarni 	__le32 reg8 /* reg8 */;
2295*14b24e2bSVaishali Kulkarni 	__le32 reg9 /* reg9 */;
2296*14b24e2bSVaishali Kulkarni 	u8 byte8 /* byte8 */;
2297*14b24e2bSVaishali Kulkarni 	u8 byte9 /* byte9 */;
2298*14b24e2bSVaishali Kulkarni 	u8 byte10 /* byte10 */;
2299*14b24e2bSVaishali Kulkarni 	u8 byte11 /* byte11 */;
2300*14b24e2bSVaishali Kulkarni 	u8 byte12 /* byte12 */;
2301*14b24e2bSVaishali Kulkarni 	u8 byte13 /* byte13 */;
2302*14b24e2bSVaishali Kulkarni 	u8 byte14 /* byte14 */;
2303*14b24e2bSVaishali Kulkarni 	u8 byte15 /* byte15 */;
2304*14b24e2bSVaishali Kulkarni 	__le32 reg10 /* reg10 */;
2305*14b24e2bSVaishali Kulkarni 	__le32 reg11 /* reg11 */;
2306*14b24e2bSVaishali Kulkarni 	__le32 reg12 /* reg12 */;
2307*14b24e2bSVaishali Kulkarni 	__le32 reg13 /* reg13 */;
2308*14b24e2bSVaishali Kulkarni 	__le32 reg14 /* reg14 */;
2309*14b24e2bSVaishali Kulkarni 	__le32 reg15 /* reg15 */;
2310*14b24e2bSVaishali Kulkarni 	__le32 reg16 /* reg16 */;
2311*14b24e2bSVaishali Kulkarni 	__le32 reg17 /* reg17 */;
2312*14b24e2bSVaishali Kulkarni 	__le32 reg18 /* reg18 */;
2313*14b24e2bSVaishali Kulkarni 	__le32 reg19 /* reg19 */;
2314*14b24e2bSVaishali Kulkarni 	__le16 word12 /* word12 */;
2315*14b24e2bSVaishali Kulkarni 	__le16 word13 /* word13 */;
2316*14b24e2bSVaishali Kulkarni 	__le16 word14 /* word14 */;
2317*14b24e2bSVaishali Kulkarni 	__le16 word15 /* word15 */;
2318*14b24e2bSVaishali Kulkarni };
2319*14b24e2bSVaishali Kulkarni 
2320*14b24e2bSVaishali Kulkarni 
2321*14b24e2bSVaishali Kulkarni struct e5_ystorm_core_conn_ag_ctx
2322*14b24e2bSVaishali Kulkarni {
2323*14b24e2bSVaishali Kulkarni 	u8 byte0 /* cdu_validation */;
2324*14b24e2bSVaishali Kulkarni 	u8 byte1 /* state_and_core_id */;
2325*14b24e2bSVaishali Kulkarni 	u8 flags0;
2326*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1 /* exist_in_qm0 */
2327*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
2328*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1 /* exist_in_qm1 */
2329*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
2330*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3 /* cf0 */
2331*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT     2
2332*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3 /* cf1 */
2333*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT     4
2334*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3 /* cf2 */
2335*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT     6
2336*14b24e2bSVaishali Kulkarni 	u8 flags1;
2337*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1 /* cf0en */
2338*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   0
2339*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1 /* cf1en */
2340*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   1
2341*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1 /* cf2en */
2342*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   2
2343*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1 /* rule0en */
2344*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
2345*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1 /* rule1en */
2346*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
2347*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1 /* rule2en */
2348*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
2349*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1 /* rule3en */
2350*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
2351*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1 /* rule4en */
2352*14b24e2bSVaishali Kulkarni #define E5_YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
2353*14b24e2bSVaishali Kulkarni 	u8 byte2 /* byte2 */;
2354*14b24e2bSVaishali Kulkarni 	u8 byte3 /* byte3 */;
2355*14b24e2bSVaishali Kulkarni 	__le16 word0 /* word0 */;
2356*14b24e2bSVaishali Kulkarni 	__le32 reg0 /* reg0 */;
2357*14b24e2bSVaishali Kulkarni 	__le32 reg1 /* reg1 */;
2358*14b24e2bSVaishali Kulkarni 	__le16 word1 /* word1 */;
2359*14b24e2bSVaishali Kulkarni 	__le16 word2 /* word2 */;
2360*14b24e2bSVaishali Kulkarni 	__le16 word3 /* word3 */;
2361*14b24e2bSVaishali Kulkarni 	__le16 word4 /* word4 */;
2362*14b24e2bSVaishali Kulkarni 	__le32 reg2 /* reg2 */;
2363*14b24e2bSVaishali Kulkarni 	__le32 reg3 /* reg3 */;
2364*14b24e2bSVaishali Kulkarni };
2365*14b24e2bSVaishali Kulkarni 
2366*14b24e2bSVaishali Kulkarni 
2367*14b24e2bSVaishali Kulkarni /*
2368*14b24e2bSVaishali Kulkarni  * IGU cleanup command
2369*14b24e2bSVaishali Kulkarni  */
2370*14b24e2bSVaishali Kulkarni struct igu_cleanup
2371*14b24e2bSVaishali Kulkarni {
2372*14b24e2bSVaishali Kulkarni 	__le32 sb_id_and_flags;
2373*14b24e2bSVaishali Kulkarni #define IGU_CLEANUP_RESERVED0_MASK     0x7FFFFFF
2374*14b24e2bSVaishali Kulkarni #define IGU_CLEANUP_RESERVED0_SHIFT    0
2375*14b24e2bSVaishali Kulkarni #define IGU_CLEANUP_CLEANUP_SET_MASK   0x1 /* cleanup clear - 0, set - 1 */
2376*14b24e2bSVaishali Kulkarni #define IGU_CLEANUP_CLEANUP_SET_SHIFT  27
2377*14b24e2bSVaishali Kulkarni #define IGU_CLEANUP_CLEANUP_TYPE_MASK  0x7
2378*14b24e2bSVaishali Kulkarni #define IGU_CLEANUP_CLEANUP_TYPE_SHIFT 28
2379*14b24e2bSVaishali Kulkarni #define IGU_CLEANUP_COMMAND_TYPE_MASK  0x1 /* must always be set (use enum command_type_bit) */
2380*14b24e2bSVaishali Kulkarni #define IGU_CLEANUP_COMMAND_TYPE_SHIFT 31
2381*14b24e2bSVaishali Kulkarni 	__le32 reserved1;
2382*14b24e2bSVaishali Kulkarni };
2383*14b24e2bSVaishali Kulkarni 
2384*14b24e2bSVaishali Kulkarni 
2385*14b24e2bSVaishali Kulkarni /*
2386*14b24e2bSVaishali Kulkarni  * IGU firmware driver command
2387*14b24e2bSVaishali Kulkarni  */
2388*14b24e2bSVaishali Kulkarni union igu_command
2389*14b24e2bSVaishali Kulkarni {
2390*14b24e2bSVaishali Kulkarni 	struct igu_prod_cons_update prod_cons_update;
2391*14b24e2bSVaishali Kulkarni 	struct igu_cleanup cleanup;
2392*14b24e2bSVaishali Kulkarni };
2393*14b24e2bSVaishali Kulkarni 
2394*14b24e2bSVaishali Kulkarni 
2395*14b24e2bSVaishali Kulkarni /*
2396*14b24e2bSVaishali Kulkarni  * IGU firmware driver command
2397*14b24e2bSVaishali Kulkarni  */
2398*14b24e2bSVaishali Kulkarni struct igu_command_reg_ctrl
2399*14b24e2bSVaishali Kulkarni {
2400*14b24e2bSVaishali Kulkarni 	__le16 opaque_fid;
2401*14b24e2bSVaishali Kulkarni 	__le16 igu_command_reg_ctrl_fields;
2402*14b24e2bSVaishali Kulkarni #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_MASK  0xFFF
2403*14b24e2bSVaishali Kulkarni #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_SHIFT 0
2404*14b24e2bSVaishali Kulkarni #define IGU_COMMAND_REG_CTRL_RESERVED_MASK      0x7
2405*14b24e2bSVaishali Kulkarni #define IGU_COMMAND_REG_CTRL_RESERVED_SHIFT     12
2406*14b24e2bSVaishali Kulkarni #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_MASK  0x1 /* command typ: 0 - read, 1 - write */
2407*14b24e2bSVaishali Kulkarni #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_SHIFT 15
2408*14b24e2bSVaishali Kulkarni };
2409*14b24e2bSVaishali Kulkarni 
2410*14b24e2bSVaishali Kulkarni 
2411*14b24e2bSVaishali Kulkarni /*
2412*14b24e2bSVaishali Kulkarni  * IGU mapping line structure
2413*14b24e2bSVaishali Kulkarni  */
2414*14b24e2bSVaishali Kulkarni struct igu_mapping_line
2415*14b24e2bSVaishali Kulkarni {
2416*14b24e2bSVaishali Kulkarni 	__le32 igu_mapping_line_fields;
2417*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_VALID_MASK            0x1
2418*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_VALID_SHIFT           0
2419*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_VECTOR_NUMBER_MASK    0xFF
2420*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_VECTOR_NUMBER_SHIFT   1
2421*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_FUNCTION_NUMBER_MASK  0xFF /* In BB: VF-0-120, PF-0-7; In K2: VF-0-191, PF-0-15 */
2422*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_FUNCTION_NUMBER_SHIFT 9
2423*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_PF_VALID_MASK         0x1 /* PF-1, VF-0 */
2424*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_PF_VALID_SHIFT        17
2425*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_IPS_GROUP_MASK        0x3F
2426*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_IPS_GROUP_SHIFT       18
2427*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_RESERVED_MASK         0xFF
2428*14b24e2bSVaishali Kulkarni #define IGU_MAPPING_LINE_RESERVED_SHIFT        24
2429*14b24e2bSVaishali Kulkarni };
2430*14b24e2bSVaishali Kulkarni 
2431*14b24e2bSVaishali Kulkarni 
2432*14b24e2bSVaishali Kulkarni /*
2433*14b24e2bSVaishali Kulkarni  * IGU MSIX line structure
2434*14b24e2bSVaishali Kulkarni  */
2435*14b24e2bSVaishali Kulkarni struct igu_msix_vector
2436*14b24e2bSVaishali Kulkarni {
2437*14b24e2bSVaishali Kulkarni 	struct regpair address;
2438*14b24e2bSVaishali Kulkarni 	__le32 data;
2439*14b24e2bSVaishali Kulkarni 	__le32 msix_vector_fields;
2440*14b24e2bSVaishali Kulkarni #define IGU_MSIX_VECTOR_MASK_BIT_MASK      0x1
2441*14b24e2bSVaishali Kulkarni #define IGU_MSIX_VECTOR_MASK_BIT_SHIFT     0
2442*14b24e2bSVaishali Kulkarni #define IGU_MSIX_VECTOR_RESERVED0_MASK     0x7FFF
2443*14b24e2bSVaishali Kulkarni #define IGU_MSIX_VECTOR_RESERVED0_SHIFT    1
2444*14b24e2bSVaishali Kulkarni #define IGU_MSIX_VECTOR_STEERING_TAG_MASK  0xFF
2445*14b24e2bSVaishali Kulkarni #define IGU_MSIX_VECTOR_STEERING_TAG_SHIFT 16
2446*14b24e2bSVaishali Kulkarni #define IGU_MSIX_VECTOR_RESERVED1_MASK     0xFF
2447*14b24e2bSVaishali Kulkarni #define IGU_MSIX_VECTOR_RESERVED1_SHIFT    24
2448*14b24e2bSVaishali Kulkarni };
2449*14b24e2bSVaishali Kulkarni 
2450*14b24e2bSVaishali Kulkarni 
2451*14b24e2bSVaishali Kulkarni /*
2452*14b24e2bSVaishali Kulkarni  * per encapsulation type enabling flags
2453*14b24e2bSVaishali Kulkarni  */
2454*14b24e2bSVaishali Kulkarni struct prs_reg_encapsulation_type_en
2455*14b24e2bSVaishali Kulkarni {
2456*14b24e2bSVaishali Kulkarni 	u8 flags;
2457*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_MASK     0x1 /* Enable bit for Ethernet-over-GRE (L2 GRE) encapsulation. */
2458*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_SHIFT    0
2459*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_MASK      0x1 /* Enable bit for IP-over-GRE (IP GRE) encapsulation. */
2460*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_SHIFT     1
2461*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_MASK            0x1 /* Enable bit for VXLAN encapsulation. */
2462*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_SHIFT           2
2463*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_MASK            0x1 /* Enable bit for T-Tag encapsulation. */
2464*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_SHIFT           3
2465*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_MASK  0x1 /* Enable bit for Ethernet-over-GENEVE (L2 GENEVE) encapsulation. */
2466*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_SHIFT 4
2467*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_MASK   0x1 /* Enable bit for IP-over-GENEVE (IP GENEVE) encapsulation. */
2468*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_SHIFT  5
2469*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_MASK                0x3
2470*14b24e2bSVaishali Kulkarni #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_SHIFT               6
2471*14b24e2bSVaishali Kulkarni };
2472*14b24e2bSVaishali Kulkarni 
2473*14b24e2bSVaishali Kulkarni 
2474*14b24e2bSVaishali Kulkarni enum pxp_tph_st_hint
2475*14b24e2bSVaishali Kulkarni {
2476*14b24e2bSVaishali Kulkarni 	TPH_ST_HINT_BIDIR /* Read/Write access by Host and Device */,
2477*14b24e2bSVaishali Kulkarni 	TPH_ST_HINT_REQUESTER /* Read/Write access by Device */,
2478*14b24e2bSVaishali Kulkarni 	TPH_ST_HINT_TARGET /* Device Write and Host Read, or Host Write and Device Read */,
2479*14b24e2bSVaishali Kulkarni 	TPH_ST_HINT_TARGET_PRIO /* Device Write and Host Read, or Host Write and Device Read - with temporal reuse */,
2480*14b24e2bSVaishali Kulkarni 	MAX_PXP_TPH_ST_HINT
2481*14b24e2bSVaishali Kulkarni };
2482*14b24e2bSVaishali Kulkarni 
2483*14b24e2bSVaishali Kulkarni 
2484*14b24e2bSVaishali Kulkarni /*
2485*14b24e2bSVaishali Kulkarni  * QM hardware structure of enable bypass credit mask
2486*14b24e2bSVaishali Kulkarni  */
2487*14b24e2bSVaishali Kulkarni struct qm_rf_bypass_mask
2488*14b24e2bSVaishali Kulkarni {
2489*14b24e2bSVaishali Kulkarni 	u8 flags;
2490*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_LINEVOQ_MASK    0x1
2491*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_LINEVOQ_SHIFT   0
2492*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_RESERVED0_MASK  0x1
2493*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_RESERVED0_SHIFT 1
2494*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_PFWFQ_MASK      0x1
2495*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_PFWFQ_SHIFT     2
2496*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_VPWFQ_MASK      0x1
2497*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_VPWFQ_SHIFT     3
2498*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_PFRL_MASK       0x1
2499*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_PFRL_SHIFT      4
2500*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_VPQCNRL_MASK    0x1
2501*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_VPQCNRL_SHIFT   5
2502*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_FWPAUSE_MASK    0x1
2503*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_FWPAUSE_SHIFT   6
2504*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_RESERVED1_MASK  0x1
2505*14b24e2bSVaishali Kulkarni #define QM_RF_BYPASS_MASK_RESERVED1_SHIFT 7
2506*14b24e2bSVaishali Kulkarni };
2507*14b24e2bSVaishali Kulkarni 
2508*14b24e2bSVaishali Kulkarni 
2509*14b24e2bSVaishali Kulkarni /*
2510*14b24e2bSVaishali Kulkarni  * QM hardware structure of opportunistic credit mask
2511*14b24e2bSVaishali Kulkarni  */
2512*14b24e2bSVaishali Kulkarni struct qm_rf_opportunistic_mask
2513*14b24e2bSVaishali Kulkarni {
2514*14b24e2bSVaishali Kulkarni 	__le16 flags;
2515*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_MASK     0x1
2516*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_SHIFT    0
2517*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_MASK     0x1
2518*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_SHIFT    1
2519*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_MASK       0x1
2520*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_SHIFT      2
2521*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_MASK       0x1
2522*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_SHIFT      3
2523*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_PFRL_MASK        0x1
2524*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_PFRL_SHIFT       4
2525*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_MASK     0x1
2526*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_SHIFT    5
2527*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_MASK     0x1
2528*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_SHIFT    6
2529*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_MASK   0x1
2530*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_SHIFT  7
2531*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_MASK  0x1
2532*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_SHIFT 8
2533*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_MASK   0x7F
2534*14b24e2bSVaishali Kulkarni #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_SHIFT  9
2535*14b24e2bSVaishali Kulkarni };
2536*14b24e2bSVaishali Kulkarni 
2537*14b24e2bSVaishali Kulkarni 
2538*14b24e2bSVaishali Kulkarni /*
2539*14b24e2bSVaishali Kulkarni  * QM hardware structure of QM map memory
2540*14b24e2bSVaishali Kulkarni  */
2541*14b24e2bSVaishali Kulkarni struct qm_rf_pq_map
2542*14b24e2bSVaishali Kulkarni {
2543*14b24e2bSVaishali Kulkarni 	__le32 reg;
2544*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_PQ_VALID_MASK          0x1 /* PQ active */
2545*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_PQ_VALID_SHIFT         0
2546*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_RL_ID_MASK             0xFF /* RL ID */
2547*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_RL_ID_SHIFT            1
2548*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_VP_PQ_ID_MASK          0x1FF /* the first PQ associated with the VPORT and VOQ of this PQ */
2549*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_VP_PQ_ID_SHIFT         9
2550*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_VOQ_MASK               0x1F /* VOQ */
2551*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_VOQ_SHIFT              18
2552*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_WRR_WEIGHT_GROUP_MASK  0x3 /* WRR weight */
2553*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_WRR_WEIGHT_GROUP_SHIFT 23
2554*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_RL_VALID_MASK          0x1 /* RL active */
2555*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_RL_VALID_SHIFT         25
2556*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_RESERVED_MASK          0x3F
2557*14b24e2bSVaishali Kulkarni #define QM_RF_PQ_MAP_RESERVED_SHIFT         26
2558*14b24e2bSVaishali Kulkarni };
2559*14b24e2bSVaishali Kulkarni 
2560*14b24e2bSVaishali Kulkarni 
2561*14b24e2bSVaishali Kulkarni /*
2562*14b24e2bSVaishali Kulkarni  * Completion params for aggregated interrupt completion
2563*14b24e2bSVaishali Kulkarni  */
2564*14b24e2bSVaishali Kulkarni struct sdm_agg_int_comp_params
2565*14b24e2bSVaishali Kulkarni {
2566*14b24e2bSVaishali Kulkarni 	__le16 params;
2567*14b24e2bSVaishali Kulkarni #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_MASK      0x3F /* the number of aggregated interrupt, 0-31 */
2568*14b24e2bSVaishali Kulkarni #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_SHIFT     0
2569*14b24e2bSVaishali Kulkarni #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_MASK  0x1 /* 1 - set a bit in aggregated vector, 0 - dont set */
2570*14b24e2bSVaishali Kulkarni #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_SHIFT 6
2571*14b24e2bSVaishali Kulkarni #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_MASK     0x1FF /* Number of bit in the aggregated vector, 0-279 (TBD) */
2572*14b24e2bSVaishali Kulkarni #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_SHIFT    7
2573*14b24e2bSVaishali Kulkarni };
2574*14b24e2bSVaishali Kulkarni 
2575*14b24e2bSVaishali Kulkarni 
2576*14b24e2bSVaishali Kulkarni /*
2577*14b24e2bSVaishali Kulkarni  * SDM operation gen command (generate aggregative interrupt)
2578*14b24e2bSVaishali Kulkarni  */
2579*14b24e2bSVaishali Kulkarni struct sdm_op_gen
2580*14b24e2bSVaishali Kulkarni {
2581*14b24e2bSVaishali Kulkarni 	__le32 command;
2582*14b24e2bSVaishali Kulkarni #define SDM_OP_GEN_COMP_PARAM_MASK  0xFFFF /* completion parameters 0-15 */
2583*14b24e2bSVaishali Kulkarni #define SDM_OP_GEN_COMP_PARAM_SHIFT 0
2584*14b24e2bSVaishali Kulkarni #define SDM_OP_GEN_COMP_TYPE_MASK   0xF /* completion type 16-19 */
2585*14b24e2bSVaishali Kulkarni #define SDM_OP_GEN_COMP_TYPE_SHIFT  16
2586*14b24e2bSVaishali Kulkarni #define SDM_OP_GEN_RESERVED_MASK    0xFFF /* reserved 20-31 */
2587*14b24e2bSVaishali Kulkarni #define SDM_OP_GEN_RESERVED_SHIFT   20
2588*14b24e2bSVaishali Kulkarni };
2589*14b24e2bSVaishali Kulkarni 
2590*14b24e2bSVaishali Kulkarni #endif /* __ECORE_HSI_COMMON__ */
2591