1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) 2020 Marvell International Ltd.
4  *
5  * Configuration and status register (CSR) type definitions for
6  * Octeon pip.
7  */
8 
9 #ifndef __CVMX_PIP_DEFS_H__
10 #define __CVMX_PIP_DEFS_H__
11 
12 #define CVMX_PIP_ALT_SKIP_CFGX(offset)	     (0x00011800A0002A00ull + ((offset) & 3) * 8)
13 #define CVMX_PIP_BCK_PRS		     (0x00011800A0000038ull)
14 #define CVMX_PIP_BIST_STATUS		     (0x00011800A0000000ull)
15 #define CVMX_PIP_BSEL_EXT_CFGX(offset)	     (0x00011800A0002800ull + ((offset) & 3) * 16)
16 #define CVMX_PIP_BSEL_EXT_POSX(offset)	     (0x00011800A0002808ull + ((offset) & 3) * 16)
17 #define CVMX_PIP_BSEL_TBL_ENTX(offset)	     (0x00011800A0003000ull + ((offset) & 511) * 8)
18 #define CVMX_PIP_CLKEN			     (0x00011800A0000040ull)
19 #define CVMX_PIP_CRC_CTLX(offset)	     (0x00011800A0000040ull + ((offset) & 1) * 8)
20 #define CVMX_PIP_CRC_IVX(offset)	     (0x00011800A0000050ull + ((offset) & 1) * 8)
21 #define CVMX_PIP_DEC_IPSECX(offset)	     (0x00011800A0000080ull + ((offset) & 3) * 8)
22 #define CVMX_PIP_DSA_SRC_GRP		     (0x00011800A0000190ull)
23 #define CVMX_PIP_DSA_VID_GRP		     (0x00011800A0000198ull)
24 #define CVMX_PIP_FRM_LEN_CHKX(offset)	     (0x00011800A0000180ull + ((offset) & 1) * 8)
25 #define CVMX_PIP_GBL_CFG		     (0x00011800A0000028ull)
26 #define CVMX_PIP_GBL_CTL		     (0x00011800A0000020ull)
27 #define CVMX_PIP_HG_PRI_QOS		     (0x00011800A00001A0ull)
28 #define CVMX_PIP_INT_EN			     (0x00011800A0000010ull)
29 #define CVMX_PIP_INT_REG		     (0x00011800A0000008ull)
30 #define CVMX_PIP_IP_OFFSET		     (0x00011800A0000060ull)
31 #define CVMX_PIP_PRI_TBLX(offset)	     (0x00011800A0004000ull + ((offset) & 255) * 8)
32 #define CVMX_PIP_PRT_CFGBX(offset)	     (0x00011800A0008000ull + ((offset) & 63) * 8)
33 #define CVMX_PIP_PRT_CFGX(offset)	     (0x00011800A0000200ull + ((offset) & 63) * 8)
34 #define CVMX_PIP_PRT_TAGX(offset)	     (0x00011800A0000400ull + ((offset) & 63) * 8)
35 #define CVMX_PIP_QOS_DIFFX(offset)	     (0x00011800A0000600ull + ((offset) & 63) * 8)
36 #define CVMX_PIP_QOS_VLANX(offset)	     (0x00011800A00000C0ull + ((offset) & 7) * 8)
37 #define CVMX_PIP_QOS_WATCHX(offset)	     (0x00011800A0000100ull + ((offset) & 7) * 8)
38 #define CVMX_PIP_RAW_WORD		     (0x00011800A00000B0ull)
39 #define CVMX_PIP_SFT_RST		     (0x00011800A0000030ull)
40 #define CVMX_PIP_STAT0_PRTX(offset)	     (0x00011800A0000800ull + ((offset) & 63) * 80)
41 #define CVMX_PIP_STAT0_X(offset)	     (0x00011800A0040000ull + ((offset) & 63) * 128)
42 #define CVMX_PIP_STAT10_PRTX(offset)	     (0x00011800A0001480ull + ((offset) & 63) * 16)
43 #define CVMX_PIP_STAT10_X(offset)	     (0x00011800A0040050ull + ((offset) & 63) * 128)
44 #define CVMX_PIP_STAT11_PRTX(offset)	     (0x00011800A0001488ull + ((offset) & 63) * 16)
45 #define CVMX_PIP_STAT11_X(offset)	     (0x00011800A0040058ull + ((offset) & 63) * 128)
46 #define CVMX_PIP_STAT1_PRTX(offset)	     (0x00011800A0000808ull + ((offset) & 63) * 80)
47 #define CVMX_PIP_STAT1_X(offset)	     (0x00011800A0040008ull + ((offset) & 63) * 128)
48 #define CVMX_PIP_STAT2_PRTX(offset)	     (0x00011800A0000810ull + ((offset) & 63) * 80)
49 #define CVMX_PIP_STAT2_X(offset)	     (0x00011800A0040010ull + ((offset) & 63) * 128)
50 #define CVMX_PIP_STAT3_PRTX(offset)	     (0x00011800A0000818ull + ((offset) & 63) * 80)
51 #define CVMX_PIP_STAT3_X(offset)	     (0x00011800A0040018ull + ((offset) & 63) * 128)
52 #define CVMX_PIP_STAT4_PRTX(offset)	     (0x00011800A0000820ull + ((offset) & 63) * 80)
53 #define CVMX_PIP_STAT4_X(offset)	     (0x00011800A0040020ull + ((offset) & 63) * 128)
54 #define CVMX_PIP_STAT5_PRTX(offset)	     (0x00011800A0000828ull + ((offset) & 63) * 80)
55 #define CVMX_PIP_STAT5_X(offset)	     (0x00011800A0040028ull + ((offset) & 63) * 128)
56 #define CVMX_PIP_STAT6_PRTX(offset)	     (0x00011800A0000830ull + ((offset) & 63) * 80)
57 #define CVMX_PIP_STAT6_X(offset)	     (0x00011800A0040030ull + ((offset) & 63) * 128)
58 #define CVMX_PIP_STAT7_PRTX(offset)	     (0x00011800A0000838ull + ((offset) & 63) * 80)
59 #define CVMX_PIP_STAT7_X(offset)	     (0x00011800A0040038ull + ((offset) & 63) * 128)
60 #define CVMX_PIP_STAT8_PRTX(offset)	     (0x00011800A0000840ull + ((offset) & 63) * 80)
61 #define CVMX_PIP_STAT8_X(offset)	     (0x00011800A0040040ull + ((offset) & 63) * 128)
62 #define CVMX_PIP_STAT9_PRTX(offset)	     (0x00011800A0000848ull + ((offset) & 63) * 80)
63 #define CVMX_PIP_STAT9_X(offset)	     (0x00011800A0040048ull + ((offset) & 63) * 128)
64 #define CVMX_PIP_STAT_CTL		     (0x00011800A0000018ull)
65 #define CVMX_PIP_STAT_INB_ERRSX(offset)	     (0x00011800A0001A10ull + ((offset) & 63) * 32)
66 #define CVMX_PIP_STAT_INB_ERRS_PKNDX(offset) (0x00011800A0020010ull + ((offset) & 63) * 32)
67 #define CVMX_PIP_STAT_INB_OCTSX(offset)	     (0x00011800A0001A08ull + ((offset) & 63) * 32)
68 #define CVMX_PIP_STAT_INB_OCTS_PKNDX(offset) (0x00011800A0020008ull + ((offset) & 63) * 32)
69 #define CVMX_PIP_STAT_INB_PKTSX(offset)	     (0x00011800A0001A00ull + ((offset) & 63) * 32)
70 #define CVMX_PIP_STAT_INB_PKTS_PKNDX(offset) (0x00011800A0020000ull + ((offset) & 63) * 32)
71 #define CVMX_PIP_SUB_PKIND_FCSX(offset)	     (0x00011800A0080000ull)
72 #define CVMX_PIP_TAG_INCX(offset)	     (0x00011800A0001800ull + ((offset) & 63) * 8)
73 #define CVMX_PIP_TAG_MASK		     (0x00011800A0000070ull)
74 #define CVMX_PIP_TAG_SECRET		     (0x00011800A0000068ull)
75 #define CVMX_PIP_TODO_ENTRY		     (0x00011800A0000078ull)
76 #define CVMX_PIP_VLAN_ETYPESX(offset)	     (0x00011800A00001C0ull + ((offset) & 1) * 8)
77 #define CVMX_PIP_XSTAT0_PRTX(offset)	     (0x00011800A0002000ull + ((offset) & 63) * 80 - 80 * 40)
78 #define CVMX_PIP_XSTAT10_PRTX(offset)	     (0x00011800A0001700ull + ((offset) & 63) * 16 - 16 * 40)
79 #define CVMX_PIP_XSTAT11_PRTX(offset)	     (0x00011800A0001708ull + ((offset) & 63) * 16 - 16 * 40)
80 #define CVMX_PIP_XSTAT1_PRTX(offset)	     (0x00011800A0002008ull + ((offset) & 63) * 80 - 80 * 40)
81 #define CVMX_PIP_XSTAT2_PRTX(offset)	     (0x00011800A0002010ull + ((offset) & 63) * 80 - 80 * 40)
82 #define CVMX_PIP_XSTAT3_PRTX(offset)	     (0x00011800A0002018ull + ((offset) & 63) * 80 - 80 * 40)
83 #define CVMX_PIP_XSTAT4_PRTX(offset)	     (0x00011800A0002020ull + ((offset) & 63) * 80 - 80 * 40)
84 #define CVMX_PIP_XSTAT5_PRTX(offset)	     (0x00011800A0002028ull + ((offset) & 63) * 80 - 80 * 40)
85 #define CVMX_PIP_XSTAT6_PRTX(offset)	     (0x00011800A0002030ull + ((offset) & 63) * 80 - 80 * 40)
86 #define CVMX_PIP_XSTAT7_PRTX(offset)	     (0x00011800A0002038ull + ((offset) & 63) * 80 - 80 * 40)
87 #define CVMX_PIP_XSTAT8_PRTX(offset)	     (0x00011800A0002040ull + ((offset) & 63) * 80 - 80 * 40)
88 #define CVMX_PIP_XSTAT9_PRTX(offset)	     (0x00011800A0002048ull + ((offset) & 63) * 80 - 80 * 40)
89 
90 /**
91  * cvmx_pip_alt_skip_cfg#
92  *
93  * Notes:
94  * The actual SKIP I determined by HW is based on the packet contents.  BIT0 and
95  * BIT1 make up a two value value that the selects the skip value as follows.
96  *
97  *    lookup_value = LEN ? ( packet_in_bits[BIT1], packet_in_bits[BIT0] ) : ( 0, packet_in_bits[BIT0] );
98  *    SKIP I       = lookup_value == 3 ? SKIP3 :
99  *                   lookup_value == 2 ? SKIP2 :
100  *                   lookup_value == 1 ? SKIP1 :
101  *                   PIP_PRT_CFG<pknd>[SKIP];
102  */
103 union cvmx_pip_alt_skip_cfgx {
104 	u64 u64;
105 	struct cvmx_pip_alt_skip_cfgx_s {
106 		u64 reserved_57_63 : 7;
107 		u64 len : 1;
108 		u64 reserved_46_55 : 10;
109 		u64 bit1 : 6;
110 		u64 reserved_38_39 : 2;
111 		u64 bit0 : 6;
112 		u64 reserved_23_31 : 9;
113 		u64 skip3 : 7;
114 		u64 reserved_15_15 : 1;
115 		u64 skip2 : 7;
116 		u64 reserved_7_7 : 1;
117 		u64 skip1 : 7;
118 	} s;
119 	struct cvmx_pip_alt_skip_cfgx_s cn61xx;
120 	struct cvmx_pip_alt_skip_cfgx_s cn66xx;
121 	struct cvmx_pip_alt_skip_cfgx_s cn68xx;
122 	struct cvmx_pip_alt_skip_cfgx_s cn70xx;
123 	struct cvmx_pip_alt_skip_cfgx_s cn70xxp1;
124 	struct cvmx_pip_alt_skip_cfgx_s cnf71xx;
125 };
126 
127 typedef union cvmx_pip_alt_skip_cfgx cvmx_pip_alt_skip_cfgx_t;
128 
129 /**
130  * cvmx_pip_bck_prs
131  *
132  * When to assert backpressure based on the todo list filling up
133  *
134  */
135 union cvmx_pip_bck_prs {
136 	u64 u64;
137 	struct cvmx_pip_bck_prs_s {
138 		u64 bckprs : 1;
139 		u64 reserved_13_62 : 50;
140 		u64 hiwater : 5;
141 		u64 reserved_5_7 : 3;
142 		u64 lowater : 5;
143 	} s;
144 	struct cvmx_pip_bck_prs_s cn38xx;
145 	struct cvmx_pip_bck_prs_s cn38xxp2;
146 	struct cvmx_pip_bck_prs_s cn56xx;
147 	struct cvmx_pip_bck_prs_s cn56xxp1;
148 	struct cvmx_pip_bck_prs_s cn58xx;
149 	struct cvmx_pip_bck_prs_s cn58xxp1;
150 	struct cvmx_pip_bck_prs_s cn61xx;
151 	struct cvmx_pip_bck_prs_s cn63xx;
152 	struct cvmx_pip_bck_prs_s cn63xxp1;
153 	struct cvmx_pip_bck_prs_s cn66xx;
154 	struct cvmx_pip_bck_prs_s cn68xx;
155 	struct cvmx_pip_bck_prs_s cn68xxp1;
156 	struct cvmx_pip_bck_prs_s cn70xx;
157 	struct cvmx_pip_bck_prs_s cn70xxp1;
158 	struct cvmx_pip_bck_prs_s cnf71xx;
159 };
160 
161 typedef union cvmx_pip_bck_prs cvmx_pip_bck_prs_t;
162 
163 /**
164  * cvmx_pip_bist_status
165  *
166  * PIP_BIST_STATUS = PIP's BIST Results
167  *
168  */
169 union cvmx_pip_bist_status {
170 	u64 u64;
171 	struct cvmx_pip_bist_status_s {
172 		u64 reserved_22_63 : 42;
173 		u64 bist : 22;
174 	} s;
175 	struct cvmx_pip_bist_status_cn30xx {
176 		u64 reserved_18_63 : 46;
177 		u64 bist : 18;
178 	} cn30xx;
179 	struct cvmx_pip_bist_status_cn30xx cn31xx;
180 	struct cvmx_pip_bist_status_cn30xx cn38xx;
181 	struct cvmx_pip_bist_status_cn30xx cn38xxp2;
182 	struct cvmx_pip_bist_status_cn50xx {
183 		u64 reserved_17_63 : 47;
184 		u64 bist : 17;
185 	} cn50xx;
186 	struct cvmx_pip_bist_status_cn30xx cn52xx;
187 	struct cvmx_pip_bist_status_cn30xx cn52xxp1;
188 	struct cvmx_pip_bist_status_cn30xx cn56xx;
189 	struct cvmx_pip_bist_status_cn30xx cn56xxp1;
190 	struct cvmx_pip_bist_status_cn30xx cn58xx;
191 	struct cvmx_pip_bist_status_cn30xx cn58xxp1;
192 	struct cvmx_pip_bist_status_cn61xx {
193 		u64 reserved_20_63 : 44;
194 		u64 bist : 20;
195 	} cn61xx;
196 	struct cvmx_pip_bist_status_cn30xx cn63xx;
197 	struct cvmx_pip_bist_status_cn30xx cn63xxp1;
198 	struct cvmx_pip_bist_status_cn61xx cn66xx;
199 	struct cvmx_pip_bist_status_s cn68xx;
200 	struct cvmx_pip_bist_status_cn61xx cn68xxp1;
201 	struct cvmx_pip_bist_status_cn61xx cn70xx;
202 	struct cvmx_pip_bist_status_cn61xx cn70xxp1;
203 	struct cvmx_pip_bist_status_cn61xx cnf71xx;
204 };
205 
206 typedef union cvmx_pip_bist_status cvmx_pip_bist_status_t;
207 
208 /**
209  * cvmx_pip_bsel_ext_cfg#
210  *
211  * tag, offset, and skip values to be used when using the corresponding extractor.
212  *
213  */
214 union cvmx_pip_bsel_ext_cfgx {
215 	u64 u64;
216 	struct cvmx_pip_bsel_ext_cfgx_s {
217 		u64 reserved_56_63 : 8;
218 		u64 upper_tag : 16;
219 		u64 tag : 8;
220 		u64 reserved_25_31 : 7;
221 		u64 offset : 9;
222 		u64 reserved_7_15 : 9;
223 		u64 skip : 7;
224 	} s;
225 	struct cvmx_pip_bsel_ext_cfgx_s cn61xx;
226 	struct cvmx_pip_bsel_ext_cfgx_s cn68xx;
227 	struct cvmx_pip_bsel_ext_cfgx_s cn70xx;
228 	struct cvmx_pip_bsel_ext_cfgx_s cn70xxp1;
229 	struct cvmx_pip_bsel_ext_cfgx_s cnf71xx;
230 };
231 
232 typedef union cvmx_pip_bsel_ext_cfgx cvmx_pip_bsel_ext_cfgx_t;
233 
234 /**
235  * cvmx_pip_bsel_ext_pos#
236  *
237  * bit positions and valids to be used when using the corresponding extractor.
238  *
239  */
240 union cvmx_pip_bsel_ext_posx {
241 	u64 u64;
242 	struct cvmx_pip_bsel_ext_posx_s {
243 		u64 pos7_val : 1;
244 		u64 pos7 : 7;
245 		u64 pos6_val : 1;
246 		u64 pos6 : 7;
247 		u64 pos5_val : 1;
248 		u64 pos5 : 7;
249 		u64 pos4_val : 1;
250 		u64 pos4 : 7;
251 		u64 pos3_val : 1;
252 		u64 pos3 : 7;
253 		u64 pos2_val : 1;
254 		u64 pos2 : 7;
255 		u64 pos1_val : 1;
256 		u64 pos1 : 7;
257 		u64 pos0_val : 1;
258 		u64 pos0 : 7;
259 	} s;
260 	struct cvmx_pip_bsel_ext_posx_s cn61xx;
261 	struct cvmx_pip_bsel_ext_posx_s cn68xx;
262 	struct cvmx_pip_bsel_ext_posx_s cn70xx;
263 	struct cvmx_pip_bsel_ext_posx_s cn70xxp1;
264 	struct cvmx_pip_bsel_ext_posx_s cnf71xx;
265 };
266 
267 typedef union cvmx_pip_bsel_ext_posx cvmx_pip_bsel_ext_posx_t;
268 
269 /**
270  * cvmx_pip_bsel_tbl_ent#
271  *
272  * PIP_BSEL_TBL_ENTX = Entry for the extractor table
273  *
274  */
275 union cvmx_pip_bsel_tbl_entx {
276 	u64 u64;
277 	struct cvmx_pip_bsel_tbl_entx_s {
278 		u64 tag_en : 1;
279 		u64 grp_en : 1;
280 		u64 tt_en : 1;
281 		u64 qos_en : 1;
282 		u64 reserved_40_59 : 20;
283 		u64 tag : 8;
284 		u64 reserved_22_31 : 10;
285 		u64 grp : 6;
286 		u64 reserved_10_15 : 6;
287 		u64 tt : 2;
288 		u64 reserved_3_7 : 5;
289 		u64 qos : 3;
290 	} s;
291 	struct cvmx_pip_bsel_tbl_entx_cn61xx {
292 		u64 tag_en : 1;
293 		u64 grp_en : 1;
294 		u64 tt_en : 1;
295 		u64 qos_en : 1;
296 		u64 reserved_40_59 : 20;
297 		u64 tag : 8;
298 		u64 reserved_20_31 : 12;
299 		u64 grp : 4;
300 		u64 reserved_10_15 : 6;
301 		u64 tt : 2;
302 		u64 reserved_3_7 : 5;
303 		u64 qos : 3;
304 	} cn61xx;
305 	struct cvmx_pip_bsel_tbl_entx_s cn68xx;
306 	struct cvmx_pip_bsel_tbl_entx_cn61xx cn70xx;
307 	struct cvmx_pip_bsel_tbl_entx_cn61xx cn70xxp1;
308 	struct cvmx_pip_bsel_tbl_entx_cn61xx cnf71xx;
309 };
310 
311 typedef union cvmx_pip_bsel_tbl_entx cvmx_pip_bsel_tbl_entx_t;
312 
313 /**
314  * cvmx_pip_clken
315  */
316 union cvmx_pip_clken {
317 	u64 u64;
318 	struct cvmx_pip_clken_s {
319 		u64 reserved_1_63 : 63;
320 		u64 clken : 1;
321 	} s;
322 	struct cvmx_pip_clken_s cn61xx;
323 	struct cvmx_pip_clken_s cn63xx;
324 	struct cvmx_pip_clken_s cn63xxp1;
325 	struct cvmx_pip_clken_s cn66xx;
326 	struct cvmx_pip_clken_s cn68xx;
327 	struct cvmx_pip_clken_s cn68xxp1;
328 	struct cvmx_pip_clken_s cn70xx;
329 	struct cvmx_pip_clken_s cn70xxp1;
330 	struct cvmx_pip_clken_s cnf71xx;
331 };
332 
333 typedef union cvmx_pip_clken cvmx_pip_clken_t;
334 
335 /**
336  * cvmx_pip_crc_ctl#
337  *
338  * PIP_CRC_CTL = PIP CRC Control Register
339  *
340  * Controls datapath reflection when calculating CRC
341  */
342 union cvmx_pip_crc_ctlx {
343 	u64 u64;
344 	struct cvmx_pip_crc_ctlx_s {
345 		u64 reserved_2_63 : 62;
346 		u64 invres : 1;
347 		u64 reflect : 1;
348 	} s;
349 	struct cvmx_pip_crc_ctlx_s cn38xx;
350 	struct cvmx_pip_crc_ctlx_s cn38xxp2;
351 	struct cvmx_pip_crc_ctlx_s cn58xx;
352 	struct cvmx_pip_crc_ctlx_s cn58xxp1;
353 };
354 
355 typedef union cvmx_pip_crc_ctlx cvmx_pip_crc_ctlx_t;
356 
357 /**
358  * cvmx_pip_crc_iv#
359  *
360  * PIP_CRC_IV = PIP CRC IV Register
361  *
362  * Determines the IV used by the CRC algorithm
363  *
364  * Notes:
365  * * PIP_CRC_IV
366  * PIP_CRC_IV controls the initial state of the CRC algorithm.  Octane can
367  * support a wide range of CRC algorithms and as such, the IV must be
368  * carefully constructed to meet the specific algorithm.  The code below
369  * determines the value to program into Octane based on the algorthim's IV
370  * and width.  In the case of Octane, the width should always be 32.
371  *
372  * PIP_CRC_IV0 sets the IV for ports 0-15 while PIP_CRC_IV1 sets the IV for
373  * ports 16-31.
374  *
375  *  unsigned octane_crc_iv(unsigned algorithm_iv, unsigned poly, unsigned w)
376  *  [
377  *    int i;
378  *    int doit;
379  *    unsigned int current_val = algorithm_iv;
380  *
381  *    for(i = 0; i < w; i++) [
382  *      doit = current_val & 0x1;
383  *
384  *      if(doit) current_val ^= poly;
385  *      assert(!(current_val & 0x1));
386  *
387  *      current_val = (current_val >> 1) | (doit << (w-1));
388  *    ]
389  *
390  *    return current_val;
391  *  ]
392  */
393 union cvmx_pip_crc_ivx {
394 	u64 u64;
395 	struct cvmx_pip_crc_ivx_s {
396 		u64 reserved_32_63 : 32;
397 		u64 iv : 32;
398 	} s;
399 	struct cvmx_pip_crc_ivx_s cn38xx;
400 	struct cvmx_pip_crc_ivx_s cn38xxp2;
401 	struct cvmx_pip_crc_ivx_s cn58xx;
402 	struct cvmx_pip_crc_ivx_s cn58xxp1;
403 };
404 
405 typedef union cvmx_pip_crc_ivx cvmx_pip_crc_ivx_t;
406 
407 /**
408  * cvmx_pip_dec_ipsec#
409  *
410  * PIP sets the dec_ipsec based on TCP or UDP destination port.
411  *
412  */
413 union cvmx_pip_dec_ipsecx {
414 	u64 u64;
415 	struct cvmx_pip_dec_ipsecx_s {
416 		u64 reserved_18_63 : 46;
417 		u64 tcp : 1;
418 		u64 udp : 1;
419 		u64 dprt : 16;
420 	} s;
421 	struct cvmx_pip_dec_ipsecx_s cn30xx;
422 	struct cvmx_pip_dec_ipsecx_s cn31xx;
423 	struct cvmx_pip_dec_ipsecx_s cn38xx;
424 	struct cvmx_pip_dec_ipsecx_s cn38xxp2;
425 	struct cvmx_pip_dec_ipsecx_s cn50xx;
426 	struct cvmx_pip_dec_ipsecx_s cn52xx;
427 	struct cvmx_pip_dec_ipsecx_s cn52xxp1;
428 	struct cvmx_pip_dec_ipsecx_s cn56xx;
429 	struct cvmx_pip_dec_ipsecx_s cn56xxp1;
430 	struct cvmx_pip_dec_ipsecx_s cn58xx;
431 	struct cvmx_pip_dec_ipsecx_s cn58xxp1;
432 	struct cvmx_pip_dec_ipsecx_s cn61xx;
433 	struct cvmx_pip_dec_ipsecx_s cn63xx;
434 	struct cvmx_pip_dec_ipsecx_s cn63xxp1;
435 	struct cvmx_pip_dec_ipsecx_s cn66xx;
436 	struct cvmx_pip_dec_ipsecx_s cn68xx;
437 	struct cvmx_pip_dec_ipsecx_s cn68xxp1;
438 	struct cvmx_pip_dec_ipsecx_s cn70xx;
439 	struct cvmx_pip_dec_ipsecx_s cn70xxp1;
440 	struct cvmx_pip_dec_ipsecx_s cnf71xx;
441 };
442 
443 typedef union cvmx_pip_dec_ipsecx cvmx_pip_dec_ipsecx_t;
444 
445 /**
446  * cvmx_pip_dsa_src_grp
447  */
448 union cvmx_pip_dsa_src_grp {
449 	u64 u64;
450 	struct cvmx_pip_dsa_src_grp_s {
451 		u64 map15 : 4;
452 		u64 map14 : 4;
453 		u64 map13 : 4;
454 		u64 map12 : 4;
455 		u64 map11 : 4;
456 		u64 map10 : 4;
457 		u64 map9 : 4;
458 		u64 map8 : 4;
459 		u64 map7 : 4;
460 		u64 map6 : 4;
461 		u64 map5 : 4;
462 		u64 map4 : 4;
463 		u64 map3 : 4;
464 		u64 map2 : 4;
465 		u64 map1 : 4;
466 		u64 map0 : 4;
467 	} s;
468 	struct cvmx_pip_dsa_src_grp_s cn52xx;
469 	struct cvmx_pip_dsa_src_grp_s cn52xxp1;
470 	struct cvmx_pip_dsa_src_grp_s cn56xx;
471 	struct cvmx_pip_dsa_src_grp_s cn61xx;
472 	struct cvmx_pip_dsa_src_grp_s cn63xx;
473 	struct cvmx_pip_dsa_src_grp_s cn63xxp1;
474 	struct cvmx_pip_dsa_src_grp_s cn66xx;
475 	struct cvmx_pip_dsa_src_grp_s cn68xx;
476 	struct cvmx_pip_dsa_src_grp_s cn68xxp1;
477 	struct cvmx_pip_dsa_src_grp_s cn70xx;
478 	struct cvmx_pip_dsa_src_grp_s cn70xxp1;
479 	struct cvmx_pip_dsa_src_grp_s cnf71xx;
480 };
481 
482 typedef union cvmx_pip_dsa_src_grp cvmx_pip_dsa_src_grp_t;
483 
484 /**
485  * cvmx_pip_dsa_vid_grp
486  */
487 union cvmx_pip_dsa_vid_grp {
488 	u64 u64;
489 	struct cvmx_pip_dsa_vid_grp_s {
490 		u64 map15 : 4;
491 		u64 map14 : 4;
492 		u64 map13 : 4;
493 		u64 map12 : 4;
494 		u64 map11 : 4;
495 		u64 map10 : 4;
496 		u64 map9 : 4;
497 		u64 map8 : 4;
498 		u64 map7 : 4;
499 		u64 map6 : 4;
500 		u64 map5 : 4;
501 		u64 map4 : 4;
502 		u64 map3 : 4;
503 		u64 map2 : 4;
504 		u64 map1 : 4;
505 		u64 map0 : 4;
506 	} s;
507 	struct cvmx_pip_dsa_vid_grp_s cn52xx;
508 	struct cvmx_pip_dsa_vid_grp_s cn52xxp1;
509 	struct cvmx_pip_dsa_vid_grp_s cn56xx;
510 	struct cvmx_pip_dsa_vid_grp_s cn61xx;
511 	struct cvmx_pip_dsa_vid_grp_s cn63xx;
512 	struct cvmx_pip_dsa_vid_grp_s cn63xxp1;
513 	struct cvmx_pip_dsa_vid_grp_s cn66xx;
514 	struct cvmx_pip_dsa_vid_grp_s cn68xx;
515 	struct cvmx_pip_dsa_vid_grp_s cn68xxp1;
516 	struct cvmx_pip_dsa_vid_grp_s cn70xx;
517 	struct cvmx_pip_dsa_vid_grp_s cn70xxp1;
518 	struct cvmx_pip_dsa_vid_grp_s cnf71xx;
519 };
520 
521 typedef union cvmx_pip_dsa_vid_grp cvmx_pip_dsa_vid_grp_t;
522 
523 /**
524  * cvmx_pip_frm_len_chk#
525  *
526  * Notes:
527  * PIP_FRM_LEN_CHK0 is used for packets on packet interface0, PCI, PCI RAW, and PKO loopback ports.
528  * PIP_FRM_LEN_CHK1 is unused.
529  */
530 union cvmx_pip_frm_len_chkx {
531 	u64 u64;
532 	struct cvmx_pip_frm_len_chkx_s {
533 		u64 reserved_32_63 : 32;
534 		u64 maxlen : 16;
535 		u64 minlen : 16;
536 	} s;
537 	struct cvmx_pip_frm_len_chkx_s cn50xx;
538 	struct cvmx_pip_frm_len_chkx_s cn52xx;
539 	struct cvmx_pip_frm_len_chkx_s cn52xxp1;
540 	struct cvmx_pip_frm_len_chkx_s cn56xx;
541 	struct cvmx_pip_frm_len_chkx_s cn56xxp1;
542 	struct cvmx_pip_frm_len_chkx_s cn61xx;
543 	struct cvmx_pip_frm_len_chkx_s cn63xx;
544 	struct cvmx_pip_frm_len_chkx_s cn63xxp1;
545 	struct cvmx_pip_frm_len_chkx_s cn66xx;
546 	struct cvmx_pip_frm_len_chkx_s cn68xx;
547 	struct cvmx_pip_frm_len_chkx_s cn68xxp1;
548 	struct cvmx_pip_frm_len_chkx_s cn70xx;
549 	struct cvmx_pip_frm_len_chkx_s cn70xxp1;
550 	struct cvmx_pip_frm_len_chkx_s cnf71xx;
551 };
552 
553 typedef union cvmx_pip_frm_len_chkx cvmx_pip_frm_len_chkx_t;
554 
555 /**
556  * cvmx_pip_gbl_cfg
557  *
558  * Global config information that applies to all ports.
559  *
560  */
561 union cvmx_pip_gbl_cfg {
562 	u64 u64;
563 	struct cvmx_pip_gbl_cfg_s {
564 		u64 reserved_19_63 : 45;
565 		u64 tag_syn : 1;
566 		u64 ip6_udp : 1;
567 		u64 max_l2 : 1;
568 		u64 reserved_11_15 : 5;
569 		u64 raw_shf : 3;
570 		u64 reserved_3_7 : 5;
571 		u64 nip_shf : 3;
572 	} s;
573 	struct cvmx_pip_gbl_cfg_s cn30xx;
574 	struct cvmx_pip_gbl_cfg_s cn31xx;
575 	struct cvmx_pip_gbl_cfg_s cn38xx;
576 	struct cvmx_pip_gbl_cfg_s cn38xxp2;
577 	struct cvmx_pip_gbl_cfg_s cn50xx;
578 	struct cvmx_pip_gbl_cfg_s cn52xx;
579 	struct cvmx_pip_gbl_cfg_s cn52xxp1;
580 	struct cvmx_pip_gbl_cfg_s cn56xx;
581 	struct cvmx_pip_gbl_cfg_s cn56xxp1;
582 	struct cvmx_pip_gbl_cfg_s cn58xx;
583 	struct cvmx_pip_gbl_cfg_s cn58xxp1;
584 	struct cvmx_pip_gbl_cfg_s cn61xx;
585 	struct cvmx_pip_gbl_cfg_s cn63xx;
586 	struct cvmx_pip_gbl_cfg_s cn63xxp1;
587 	struct cvmx_pip_gbl_cfg_s cn66xx;
588 	struct cvmx_pip_gbl_cfg_s cn68xx;
589 	struct cvmx_pip_gbl_cfg_s cn68xxp1;
590 	struct cvmx_pip_gbl_cfg_s cn70xx;
591 	struct cvmx_pip_gbl_cfg_s cn70xxp1;
592 	struct cvmx_pip_gbl_cfg_s cnf71xx;
593 };
594 
595 typedef union cvmx_pip_gbl_cfg cvmx_pip_gbl_cfg_t;
596 
597 /**
598  * cvmx_pip_gbl_ctl
599  *
600  * Global control information.  These are the global checker enables for
601  * IPv4/IPv6 and TCP/UDP parsing.  The enables effect all ports.
602  */
603 union cvmx_pip_gbl_ctl {
604 	u64 u64;
605 	struct cvmx_pip_gbl_ctl_s {
606 		u64 reserved_29_63 : 35;
607 		u64 egrp_dis : 1;
608 		u64 ihmsk_dis : 1;
609 		u64 dsa_grp_tvid : 1;
610 		u64 dsa_grp_scmd : 1;
611 		u64 dsa_grp_sid : 1;
612 		u64 reserved_21_23 : 3;
613 		u64 ring_en : 1;
614 		u64 reserved_17_19 : 3;
615 		u64 ignrs : 1;
616 		u64 vs_wqe : 1;
617 		u64 vs_qos : 1;
618 		u64 l2_mal : 1;
619 		u64 tcp_flag : 1;
620 		u64 l4_len : 1;
621 		u64 l4_chk : 1;
622 		u64 l4_prt : 1;
623 		u64 l4_mal : 1;
624 		u64 reserved_6_7 : 2;
625 		u64 ip6_eext : 2;
626 		u64 ip4_opts : 1;
627 		u64 ip_hop : 1;
628 		u64 ip_mal : 1;
629 		u64 ip_chk : 1;
630 	} s;
631 	struct cvmx_pip_gbl_ctl_cn30xx {
632 		u64 reserved_17_63 : 47;
633 		u64 ignrs : 1;
634 		u64 vs_wqe : 1;
635 		u64 vs_qos : 1;
636 		u64 l2_mal : 1;
637 		u64 tcp_flag : 1;
638 		u64 l4_len : 1;
639 		u64 l4_chk : 1;
640 		u64 l4_prt : 1;
641 		u64 l4_mal : 1;
642 		u64 reserved_6_7 : 2;
643 		u64 ip6_eext : 2;
644 		u64 ip4_opts : 1;
645 		u64 ip_hop : 1;
646 		u64 ip_mal : 1;
647 		u64 ip_chk : 1;
648 	} cn30xx;
649 	struct cvmx_pip_gbl_ctl_cn30xx cn31xx;
650 	struct cvmx_pip_gbl_ctl_cn30xx cn38xx;
651 	struct cvmx_pip_gbl_ctl_cn30xx cn38xxp2;
652 	struct cvmx_pip_gbl_ctl_cn30xx cn50xx;
653 	struct cvmx_pip_gbl_ctl_cn52xx {
654 		u64 reserved_27_63 : 37;
655 		u64 dsa_grp_tvid : 1;
656 		u64 dsa_grp_scmd : 1;
657 		u64 dsa_grp_sid : 1;
658 		u64 reserved_21_23 : 3;
659 		u64 ring_en : 1;
660 		u64 reserved_17_19 : 3;
661 		u64 ignrs : 1;
662 		u64 vs_wqe : 1;
663 		u64 vs_qos : 1;
664 		u64 l2_mal : 1;
665 		u64 tcp_flag : 1;
666 		u64 l4_len : 1;
667 		u64 l4_chk : 1;
668 		u64 l4_prt : 1;
669 		u64 l4_mal : 1;
670 		u64 reserved_6_7 : 2;
671 		u64 ip6_eext : 2;
672 		u64 ip4_opts : 1;
673 		u64 ip_hop : 1;
674 		u64 ip_mal : 1;
675 		u64 ip_chk : 1;
676 	} cn52xx;
677 	struct cvmx_pip_gbl_ctl_cn52xx cn52xxp1;
678 	struct cvmx_pip_gbl_ctl_cn52xx cn56xx;
679 	struct cvmx_pip_gbl_ctl_cn56xxp1 {
680 		u64 reserved_21_63 : 43;
681 		u64 ring_en : 1;
682 		u64 reserved_17_19 : 3;
683 		u64 ignrs : 1;
684 		u64 vs_wqe : 1;
685 		u64 vs_qos : 1;
686 		u64 l2_mal : 1;
687 		u64 tcp_flag : 1;
688 		u64 l4_len : 1;
689 		u64 l4_chk : 1;
690 		u64 l4_prt : 1;
691 		u64 l4_mal : 1;
692 		u64 reserved_6_7 : 2;
693 		u64 ip6_eext : 2;
694 		u64 ip4_opts : 1;
695 		u64 ip_hop : 1;
696 		u64 ip_mal : 1;
697 		u64 ip_chk : 1;
698 	} cn56xxp1;
699 	struct cvmx_pip_gbl_ctl_cn30xx cn58xx;
700 	struct cvmx_pip_gbl_ctl_cn30xx cn58xxp1;
701 	struct cvmx_pip_gbl_ctl_cn61xx {
702 		u64 reserved_28_63 : 36;
703 		u64 ihmsk_dis : 1;
704 		u64 dsa_grp_tvid : 1;
705 		u64 dsa_grp_scmd : 1;
706 		u64 dsa_grp_sid : 1;
707 		u64 reserved_21_23 : 3;
708 		u64 ring_en : 1;
709 		u64 reserved_17_19 : 3;
710 		u64 ignrs : 1;
711 		u64 vs_wqe : 1;
712 		u64 vs_qos : 1;
713 		u64 l2_mal : 1;
714 		u64 tcp_flag : 1;
715 		u64 l4_len : 1;
716 		u64 l4_chk : 1;
717 		u64 l4_prt : 1;
718 		u64 l4_mal : 1;
719 		u64 reserved_6_7 : 2;
720 		u64 ip6_eext : 2;
721 		u64 ip4_opts : 1;
722 		u64 ip_hop : 1;
723 		u64 ip_mal : 1;
724 		u64 ip_chk : 1;
725 	} cn61xx;
726 	struct cvmx_pip_gbl_ctl_cn61xx cn63xx;
727 	struct cvmx_pip_gbl_ctl_cn61xx cn63xxp1;
728 	struct cvmx_pip_gbl_ctl_cn61xx cn66xx;
729 	struct cvmx_pip_gbl_ctl_cn68xx {
730 		u64 reserved_29_63 : 35;
731 		u64 egrp_dis : 1;
732 		u64 ihmsk_dis : 1;
733 		u64 dsa_grp_tvid : 1;
734 		u64 dsa_grp_scmd : 1;
735 		u64 dsa_grp_sid : 1;
736 		u64 reserved_17_23 : 7;
737 		u64 ignrs : 1;
738 		u64 vs_wqe : 1;
739 		u64 vs_qos : 1;
740 		u64 l2_mal : 1;
741 		u64 tcp_flag : 1;
742 		u64 l4_len : 1;
743 		u64 l4_chk : 1;
744 		u64 l4_prt : 1;
745 		u64 l4_mal : 1;
746 		u64 reserved_6_7 : 2;
747 		u64 ip6_eext : 2;
748 		u64 ip4_opts : 1;
749 		u64 ip_hop : 1;
750 		u64 ip_mal : 1;
751 		u64 ip_chk : 1;
752 	} cn68xx;
753 	struct cvmx_pip_gbl_ctl_cn68xxp1 {
754 		u64 reserved_28_63 : 36;
755 		u64 ihmsk_dis : 1;
756 		u64 dsa_grp_tvid : 1;
757 		u64 dsa_grp_scmd : 1;
758 		u64 dsa_grp_sid : 1;
759 		u64 reserved_17_23 : 7;
760 		u64 ignrs : 1;
761 		u64 vs_wqe : 1;
762 		u64 vs_qos : 1;
763 		u64 l2_mal : 1;
764 		u64 tcp_flag : 1;
765 		u64 l4_len : 1;
766 		u64 l4_chk : 1;
767 		u64 l4_prt : 1;
768 		u64 l4_mal : 1;
769 		u64 reserved_6_7 : 2;
770 		u64 ip6_eext : 2;
771 		u64 ip4_opts : 1;
772 		u64 ip_hop : 1;
773 		u64 ip_mal : 1;
774 		u64 ip_chk : 1;
775 	} cn68xxp1;
776 	struct cvmx_pip_gbl_ctl_cn61xx cn70xx;
777 	struct cvmx_pip_gbl_ctl_cn61xx cn70xxp1;
778 	struct cvmx_pip_gbl_ctl_cn61xx cnf71xx;
779 };
780 
781 typedef union cvmx_pip_gbl_ctl cvmx_pip_gbl_ctl_t;
782 
783 /**
784  * cvmx_pip_hg_pri_qos
785  *
786  * Notes:
787  * This register controls accesses to the HG_QOS_TABLE.  To write an entry of
788  * the table, write PIP_HG_PRI_QOS with PRI=table address, QOS=priority level,
789  * UP_QOS=1.  To read an entry of the table, write PIP_HG_PRI_QOS with
790  * PRI=table address, QOS=dont_carepriority level, UP_QOS=0 and then read
791  * PIP_HG_PRI_QOS.  The table data will be in PIP_HG_PRI_QOS[QOS].
792  */
793 union cvmx_pip_hg_pri_qos {
794 	u64 u64;
795 	struct cvmx_pip_hg_pri_qos_s {
796 		u64 reserved_13_63 : 51;
797 		u64 up_qos : 1;
798 		u64 reserved_11_11 : 1;
799 		u64 qos : 3;
800 		u64 reserved_6_7 : 2;
801 		u64 pri : 6;
802 	} s;
803 	struct cvmx_pip_hg_pri_qos_s cn52xx;
804 	struct cvmx_pip_hg_pri_qos_s cn52xxp1;
805 	struct cvmx_pip_hg_pri_qos_s cn56xx;
806 	struct cvmx_pip_hg_pri_qos_s cn61xx;
807 	struct cvmx_pip_hg_pri_qos_s cn63xx;
808 	struct cvmx_pip_hg_pri_qos_s cn63xxp1;
809 	struct cvmx_pip_hg_pri_qos_s cn66xx;
810 	struct cvmx_pip_hg_pri_qos_s cn70xx;
811 	struct cvmx_pip_hg_pri_qos_s cn70xxp1;
812 	struct cvmx_pip_hg_pri_qos_s cnf71xx;
813 };
814 
815 typedef union cvmx_pip_hg_pri_qos cvmx_pip_hg_pri_qos_t;
816 
817 /**
818  * cvmx_pip_int_en
819  *
820  * Determines if hardward should raise an interrupt to software
821  * when an exception event occurs.
822  */
823 union cvmx_pip_int_en {
824 	u64 u64;
825 	struct cvmx_pip_int_en_s {
826 		u64 reserved_13_63 : 51;
827 		u64 punyerr : 1;
828 		u64 lenerr : 1;
829 		u64 maxerr : 1;
830 		u64 minerr : 1;
831 		u64 beperr : 1;
832 		u64 feperr : 1;
833 		u64 todoovr : 1;
834 		u64 skprunt : 1;
835 		u64 badtag : 1;
836 		u64 prtnxa : 1;
837 		u64 bckprs : 1;
838 		u64 crcerr : 1;
839 		u64 pktdrp : 1;
840 	} s;
841 	struct cvmx_pip_int_en_cn30xx {
842 		u64 reserved_9_63 : 55;
843 		u64 beperr : 1;
844 		u64 feperr : 1;
845 		u64 todoovr : 1;
846 		u64 skprunt : 1;
847 		u64 badtag : 1;
848 		u64 prtnxa : 1;
849 		u64 bckprs : 1;
850 		u64 crcerr : 1;
851 		u64 pktdrp : 1;
852 	} cn30xx;
853 	struct cvmx_pip_int_en_cn30xx cn31xx;
854 	struct cvmx_pip_int_en_cn30xx cn38xx;
855 	struct cvmx_pip_int_en_cn30xx cn38xxp2;
856 	struct cvmx_pip_int_en_cn50xx {
857 		u64 reserved_12_63 : 52;
858 		u64 lenerr : 1;
859 		u64 maxerr : 1;
860 		u64 minerr : 1;
861 		u64 beperr : 1;
862 		u64 feperr : 1;
863 		u64 todoovr : 1;
864 		u64 skprunt : 1;
865 		u64 badtag : 1;
866 		u64 prtnxa : 1;
867 		u64 bckprs : 1;
868 		u64 reserved_1_1 : 1;
869 		u64 pktdrp : 1;
870 	} cn50xx;
871 	struct cvmx_pip_int_en_cn52xx {
872 		u64 reserved_13_63 : 51;
873 		u64 punyerr : 1;
874 		u64 lenerr : 1;
875 		u64 maxerr : 1;
876 		u64 minerr : 1;
877 		u64 beperr : 1;
878 		u64 feperr : 1;
879 		u64 todoovr : 1;
880 		u64 skprunt : 1;
881 		u64 badtag : 1;
882 		u64 prtnxa : 1;
883 		u64 bckprs : 1;
884 		u64 reserved_1_1 : 1;
885 		u64 pktdrp : 1;
886 	} cn52xx;
887 	struct cvmx_pip_int_en_cn52xx cn52xxp1;
888 	struct cvmx_pip_int_en_s cn56xx;
889 	struct cvmx_pip_int_en_cn56xxp1 {
890 		u64 reserved_12_63 : 52;
891 		u64 lenerr : 1;
892 		u64 maxerr : 1;
893 		u64 minerr : 1;
894 		u64 beperr : 1;
895 		u64 feperr : 1;
896 		u64 todoovr : 1;
897 		u64 skprunt : 1;
898 		u64 badtag : 1;
899 		u64 prtnxa : 1;
900 		u64 bckprs : 1;
901 		u64 crcerr : 1;
902 		u64 pktdrp : 1;
903 	} cn56xxp1;
904 	struct cvmx_pip_int_en_cn58xx {
905 		u64 reserved_13_63 : 51;
906 		u64 punyerr : 1;
907 		u64 reserved_9_11 : 3;
908 		u64 beperr : 1;
909 		u64 feperr : 1;
910 		u64 todoovr : 1;
911 		u64 skprunt : 1;
912 		u64 badtag : 1;
913 		u64 prtnxa : 1;
914 		u64 bckprs : 1;
915 		u64 crcerr : 1;
916 		u64 pktdrp : 1;
917 	} cn58xx;
918 	struct cvmx_pip_int_en_cn30xx cn58xxp1;
919 	struct cvmx_pip_int_en_s cn61xx;
920 	struct cvmx_pip_int_en_s cn63xx;
921 	struct cvmx_pip_int_en_s cn63xxp1;
922 	struct cvmx_pip_int_en_s cn66xx;
923 	struct cvmx_pip_int_en_s cn68xx;
924 	struct cvmx_pip_int_en_s cn68xxp1;
925 	struct cvmx_pip_int_en_s cn70xx;
926 	struct cvmx_pip_int_en_s cn70xxp1;
927 	struct cvmx_pip_int_en_s cnf71xx;
928 };
929 
930 typedef union cvmx_pip_int_en cvmx_pip_int_en_t;
931 
932 /**
933  * cvmx_pip_int_reg
934  *
935  * Any exception event that occurs is captured in the PIP_INT_REG.
936  * PIP_INT_REG will set the exception bit regardless of the value
937  * of PIP_INT_EN.  PIP_INT_EN only controls if an interrupt is
938  * raised to software.
939  */
940 union cvmx_pip_int_reg {
941 	u64 u64;
942 	struct cvmx_pip_int_reg_s {
943 		u64 reserved_13_63 : 51;
944 		u64 punyerr : 1;
945 		u64 lenerr : 1;
946 		u64 maxerr : 1;
947 		u64 minerr : 1;
948 		u64 beperr : 1;
949 		u64 feperr : 1;
950 		u64 todoovr : 1;
951 		u64 skprunt : 1;
952 		u64 badtag : 1;
953 		u64 prtnxa : 1;
954 		u64 bckprs : 1;
955 		u64 crcerr : 1;
956 		u64 pktdrp : 1;
957 	} s;
958 	struct cvmx_pip_int_reg_cn30xx {
959 		u64 reserved_9_63 : 55;
960 		u64 beperr : 1;
961 		u64 feperr : 1;
962 		u64 todoovr : 1;
963 		u64 skprunt : 1;
964 		u64 badtag : 1;
965 		u64 prtnxa : 1;
966 		u64 bckprs : 1;
967 		u64 crcerr : 1;
968 		u64 pktdrp : 1;
969 	} cn30xx;
970 	struct cvmx_pip_int_reg_cn30xx cn31xx;
971 	struct cvmx_pip_int_reg_cn30xx cn38xx;
972 	struct cvmx_pip_int_reg_cn30xx cn38xxp2;
973 	struct cvmx_pip_int_reg_cn50xx {
974 		u64 reserved_12_63 : 52;
975 		u64 lenerr : 1;
976 		u64 maxerr : 1;
977 		u64 minerr : 1;
978 		u64 beperr : 1;
979 		u64 feperr : 1;
980 		u64 todoovr : 1;
981 		u64 skprunt : 1;
982 		u64 badtag : 1;
983 		u64 prtnxa : 1;
984 		u64 bckprs : 1;
985 		u64 reserved_1_1 : 1;
986 		u64 pktdrp : 1;
987 	} cn50xx;
988 	struct cvmx_pip_int_reg_cn52xx {
989 		u64 reserved_13_63 : 51;
990 		u64 punyerr : 1;
991 		u64 lenerr : 1;
992 		u64 maxerr : 1;
993 		u64 minerr : 1;
994 		u64 beperr : 1;
995 		u64 feperr : 1;
996 		u64 todoovr : 1;
997 		u64 skprunt : 1;
998 		u64 badtag : 1;
999 		u64 prtnxa : 1;
1000 		u64 bckprs : 1;
1001 		u64 reserved_1_1 : 1;
1002 		u64 pktdrp : 1;
1003 	} cn52xx;
1004 	struct cvmx_pip_int_reg_cn52xx cn52xxp1;
1005 	struct cvmx_pip_int_reg_s cn56xx;
1006 	struct cvmx_pip_int_reg_cn56xxp1 {
1007 		u64 reserved_12_63 : 52;
1008 		u64 lenerr : 1;
1009 		u64 maxerr : 1;
1010 		u64 minerr : 1;
1011 		u64 beperr : 1;
1012 		u64 feperr : 1;
1013 		u64 todoovr : 1;
1014 		u64 skprunt : 1;
1015 		u64 badtag : 1;
1016 		u64 prtnxa : 1;
1017 		u64 bckprs : 1;
1018 		u64 crcerr : 1;
1019 		u64 pktdrp : 1;
1020 	} cn56xxp1;
1021 	struct cvmx_pip_int_reg_cn58xx {
1022 		u64 reserved_13_63 : 51;
1023 		u64 punyerr : 1;
1024 		u64 reserved_9_11 : 3;
1025 		u64 beperr : 1;
1026 		u64 feperr : 1;
1027 		u64 todoovr : 1;
1028 		u64 skprunt : 1;
1029 		u64 badtag : 1;
1030 		u64 prtnxa : 1;
1031 		u64 bckprs : 1;
1032 		u64 crcerr : 1;
1033 		u64 pktdrp : 1;
1034 	} cn58xx;
1035 	struct cvmx_pip_int_reg_cn30xx cn58xxp1;
1036 	struct cvmx_pip_int_reg_s cn61xx;
1037 	struct cvmx_pip_int_reg_s cn63xx;
1038 	struct cvmx_pip_int_reg_s cn63xxp1;
1039 	struct cvmx_pip_int_reg_s cn66xx;
1040 	struct cvmx_pip_int_reg_s cn68xx;
1041 	struct cvmx_pip_int_reg_s cn68xxp1;
1042 	struct cvmx_pip_int_reg_s cn70xx;
1043 	struct cvmx_pip_int_reg_s cn70xxp1;
1044 	struct cvmx_pip_int_reg_s cnf71xx;
1045 };
1046 
1047 typedef union cvmx_pip_int_reg cvmx_pip_int_reg_t;
1048 
1049 /**
1050  * cvmx_pip_ip_offset
1051  *
1052  * An 8-byte offset to find the start of the IP header in the data portion of IP workQ entires
1053  *
1054  */
1055 union cvmx_pip_ip_offset {
1056 	u64 u64;
1057 	struct cvmx_pip_ip_offset_s {
1058 		u64 reserved_3_63 : 61;
1059 		u64 offset : 3;
1060 	} s;
1061 	struct cvmx_pip_ip_offset_s cn30xx;
1062 	struct cvmx_pip_ip_offset_s cn31xx;
1063 	struct cvmx_pip_ip_offset_s cn38xx;
1064 	struct cvmx_pip_ip_offset_s cn38xxp2;
1065 	struct cvmx_pip_ip_offset_s cn50xx;
1066 	struct cvmx_pip_ip_offset_s cn52xx;
1067 	struct cvmx_pip_ip_offset_s cn52xxp1;
1068 	struct cvmx_pip_ip_offset_s cn56xx;
1069 	struct cvmx_pip_ip_offset_s cn56xxp1;
1070 	struct cvmx_pip_ip_offset_s cn58xx;
1071 	struct cvmx_pip_ip_offset_s cn58xxp1;
1072 	struct cvmx_pip_ip_offset_s cn61xx;
1073 	struct cvmx_pip_ip_offset_s cn63xx;
1074 	struct cvmx_pip_ip_offset_s cn63xxp1;
1075 	struct cvmx_pip_ip_offset_s cn66xx;
1076 	struct cvmx_pip_ip_offset_s cn68xx;
1077 	struct cvmx_pip_ip_offset_s cn68xxp1;
1078 	struct cvmx_pip_ip_offset_s cn70xx;
1079 	struct cvmx_pip_ip_offset_s cn70xxp1;
1080 	struct cvmx_pip_ip_offset_s cnf71xx;
1081 };
1082 
1083 typedef union cvmx_pip_ip_offset cvmx_pip_ip_offset_t;
1084 
1085 /**
1086  * cvmx_pip_pri_tbl#
1087  *
1088  * Notes:
1089  * The priority level from HiGig header is as follows
1090  *
1091  * HiGig/HiGig+ PRI = [1'b0, CNG[1:0], COS[2:0]]
1092  * HiGig2       PRI = [DP[1:0], TC[3:0]]
1093  *
1094  * DSA          PRI = WORD0[15:13]
1095  *
1096  * VLAN         PRI = VLAN[15:13]
1097  *
1098  * DIFFSERV         = IP.TOS/CLASS<7:2>
1099  */
1100 union cvmx_pip_pri_tblx {
1101 	u64 u64;
1102 	struct cvmx_pip_pri_tblx_s {
1103 		u64 diff2_padd : 8;
1104 		u64 hg2_padd : 8;
1105 		u64 vlan2_padd : 8;
1106 		u64 reserved_38_39 : 2;
1107 		u64 diff2_bpid : 6;
1108 		u64 reserved_30_31 : 2;
1109 		u64 hg2_bpid : 6;
1110 		u64 reserved_22_23 : 2;
1111 		u64 vlan2_bpid : 6;
1112 		u64 reserved_11_15 : 5;
1113 		u64 diff2_qos : 3;
1114 		u64 reserved_7_7 : 1;
1115 		u64 hg2_qos : 3;
1116 		u64 reserved_3_3 : 1;
1117 		u64 vlan2_qos : 3;
1118 	} s;
1119 	struct cvmx_pip_pri_tblx_s cn68xx;
1120 	struct cvmx_pip_pri_tblx_s cn68xxp1;
1121 };
1122 
1123 typedef union cvmx_pip_pri_tblx cvmx_pip_pri_tblx_t;
1124 
1125 /**
1126  * cvmx_pip_prt_cfg#
1127  *
1128  * PIP_PRT_CFGX = Per port config information
1129  *
1130  */
1131 union cvmx_pip_prt_cfgx {
1132 	u64 u64;
1133 	struct cvmx_pip_prt_cfgx_s {
1134 		u64 reserved_55_63 : 9;
1135 		u64 ih_pri : 1;
1136 		u64 len_chk_sel : 1;
1137 		u64 pad_len : 1;
1138 		u64 vlan_len : 1;
1139 		u64 lenerr_en : 1;
1140 		u64 maxerr_en : 1;
1141 		u64 minerr_en : 1;
1142 		u64 grp_wat_47 : 4;
1143 		u64 qos_wat_47 : 4;
1144 		u64 reserved_37_39 : 3;
1145 		u64 rawdrp : 1;
1146 		u64 tag_inc : 2;
1147 		u64 dyn_rs : 1;
1148 		u64 inst_hdr : 1;
1149 		u64 grp_wat : 4;
1150 		u64 hg_qos : 1;
1151 		u64 qos : 3;
1152 		u64 qos_wat : 4;
1153 		u64 qos_vsel : 1;
1154 		u64 qos_vod : 1;
1155 		u64 qos_diff : 1;
1156 		u64 qos_vlan : 1;
1157 		u64 reserved_13_15 : 3;
1158 		u64 crc_en : 1;
1159 		u64 higig_en : 1;
1160 		u64 dsa_en : 1;
1161 		cvmx_pip_port_parse_mode_t mode : 2;
1162 		u64 reserved_7_7 : 1;
1163 		u64 skip : 7;
1164 	} s;
1165 	struct cvmx_pip_prt_cfgx_cn30xx {
1166 		u64 reserved_37_63 : 27;
1167 		u64 rawdrp : 1;
1168 		u64 tag_inc : 2;
1169 		u64 dyn_rs : 1;
1170 		u64 inst_hdr : 1;
1171 		u64 grp_wat : 4;
1172 		u64 reserved_27_27 : 1;
1173 		u64 qos : 3;
1174 		u64 qos_wat : 4;
1175 		u64 reserved_18_19 : 2;
1176 		u64 qos_diff : 1;
1177 		u64 qos_vlan : 1;
1178 		u64 reserved_10_15 : 6;
1179 		cvmx_pip_port_parse_mode_t mode : 2;
1180 		u64 reserved_7_7 : 1;
1181 		u64 skip : 7;
1182 	} cn30xx;
1183 	struct cvmx_pip_prt_cfgx_cn30xx cn31xx;
1184 	struct cvmx_pip_prt_cfgx_cn38xx {
1185 		u64 reserved_37_63 : 27;
1186 		u64 rawdrp : 1;
1187 		u64 tag_inc : 2;
1188 		u64 dyn_rs : 1;
1189 		u64 inst_hdr : 1;
1190 		u64 grp_wat : 4;
1191 		u64 reserved_27_27 : 1;
1192 		u64 qos : 3;
1193 		u64 qos_wat : 4;
1194 		u64 reserved_18_19 : 2;
1195 		u64 qos_diff : 1;
1196 		u64 qos_vlan : 1;
1197 		u64 reserved_13_15 : 3;
1198 		u64 crc_en : 1;
1199 		u64 reserved_10_11 : 2;
1200 		cvmx_pip_port_parse_mode_t mode : 2;
1201 		u64 reserved_7_7 : 1;
1202 		u64 skip : 7;
1203 	} cn38xx;
1204 	struct cvmx_pip_prt_cfgx_cn38xx cn38xxp2;
1205 	struct cvmx_pip_prt_cfgx_cn50xx {
1206 		u64 reserved_53_63 : 11;
1207 		u64 pad_len : 1;
1208 		u64 vlan_len : 1;
1209 		u64 lenerr_en : 1;
1210 		u64 maxerr_en : 1;
1211 		u64 minerr_en : 1;
1212 		u64 grp_wat_47 : 4;
1213 		u64 qos_wat_47 : 4;
1214 		u64 reserved_37_39 : 3;
1215 		u64 rawdrp : 1;
1216 		u64 tag_inc : 2;
1217 		u64 dyn_rs : 1;
1218 		u64 inst_hdr : 1;
1219 		u64 grp_wat : 4;
1220 		u64 reserved_27_27 : 1;
1221 		u64 qos : 3;
1222 		u64 qos_wat : 4;
1223 		u64 reserved_19_19 : 1;
1224 		u64 qos_vod : 1;
1225 		u64 qos_diff : 1;
1226 		u64 qos_vlan : 1;
1227 		u64 reserved_13_15 : 3;
1228 		u64 crc_en : 1;
1229 		u64 reserved_10_11 : 2;
1230 		cvmx_pip_port_parse_mode_t mode : 2;
1231 		u64 reserved_7_7 : 1;
1232 		u64 skip : 7;
1233 	} cn50xx;
1234 	struct cvmx_pip_prt_cfgx_cn52xx {
1235 		u64 reserved_53_63 : 11;
1236 		u64 pad_len : 1;
1237 		u64 vlan_len : 1;
1238 		u64 lenerr_en : 1;
1239 		u64 maxerr_en : 1;
1240 		u64 minerr_en : 1;
1241 		u64 grp_wat_47 : 4;
1242 		u64 qos_wat_47 : 4;
1243 		u64 reserved_37_39 : 3;
1244 		u64 rawdrp : 1;
1245 		u64 tag_inc : 2;
1246 		u64 dyn_rs : 1;
1247 		u64 inst_hdr : 1;
1248 		u64 grp_wat : 4;
1249 		u64 hg_qos : 1;
1250 		u64 qos : 3;
1251 		u64 qos_wat : 4;
1252 		u64 qos_vsel : 1;
1253 		u64 qos_vod : 1;
1254 		u64 qos_diff : 1;
1255 		u64 qos_vlan : 1;
1256 		u64 reserved_13_15 : 3;
1257 		u64 crc_en : 1;
1258 		u64 higig_en : 1;
1259 		u64 dsa_en : 1;
1260 		cvmx_pip_port_parse_mode_t mode : 2;
1261 		u64 reserved_7_7 : 1;
1262 		u64 skip : 7;
1263 	} cn52xx;
1264 	struct cvmx_pip_prt_cfgx_cn52xx cn52xxp1;
1265 	struct cvmx_pip_prt_cfgx_cn52xx cn56xx;
1266 	struct cvmx_pip_prt_cfgx_cn50xx cn56xxp1;
1267 	struct cvmx_pip_prt_cfgx_cn58xx {
1268 		u64 reserved_37_63 : 27;
1269 		u64 rawdrp : 1;
1270 		u64 tag_inc : 2;
1271 		u64 dyn_rs : 1;
1272 		u64 inst_hdr : 1;
1273 		u64 grp_wat : 4;
1274 		u64 reserved_27_27 : 1;
1275 		u64 qos : 3;
1276 		u64 qos_wat : 4;
1277 		u64 reserved_19_19 : 1;
1278 		u64 qos_vod : 1;
1279 		u64 qos_diff : 1;
1280 		u64 qos_vlan : 1;
1281 		u64 reserved_13_15 : 3;
1282 		u64 crc_en : 1;
1283 		u64 reserved_10_11 : 2;
1284 		cvmx_pip_port_parse_mode_t mode : 2;
1285 		u64 reserved_7_7 : 1;
1286 		u64 skip : 7;
1287 	} cn58xx;
1288 	struct cvmx_pip_prt_cfgx_cn58xx cn58xxp1;
1289 	struct cvmx_pip_prt_cfgx_cn52xx cn61xx;
1290 	struct cvmx_pip_prt_cfgx_cn52xx cn63xx;
1291 	struct cvmx_pip_prt_cfgx_cn52xx cn63xxp1;
1292 	struct cvmx_pip_prt_cfgx_cn52xx cn66xx;
1293 	struct cvmx_pip_prt_cfgx_cn68xx {
1294 		u64 reserved_55_63 : 9;
1295 		u64 ih_pri : 1;
1296 		u64 len_chk_sel : 1;
1297 		u64 pad_len : 1;
1298 		u64 vlan_len : 1;
1299 		u64 lenerr_en : 1;
1300 		u64 maxerr_en : 1;
1301 		u64 minerr_en : 1;
1302 		u64 grp_wat_47 : 4;
1303 		u64 qos_wat_47 : 4;
1304 		u64 reserved_37_39 : 3;
1305 		u64 rawdrp : 1;
1306 		u64 tag_inc : 2;
1307 		u64 dyn_rs : 1;
1308 		u64 inst_hdr : 1;
1309 		u64 grp_wat : 4;
1310 		u64 hg_qos : 1;
1311 		u64 qos : 3;
1312 		u64 qos_wat : 4;
1313 		u64 reserved_19_19 : 1;
1314 		u64 qos_vod : 1;
1315 		u64 qos_diff : 1;
1316 		u64 qos_vlan : 1;
1317 		u64 reserved_13_15 : 3;
1318 		u64 crc_en : 1;
1319 		u64 higig_en : 1;
1320 		u64 dsa_en : 1;
1321 		cvmx_pip_port_parse_mode_t mode : 2;
1322 		u64 reserved_7_7 : 1;
1323 		u64 skip : 7;
1324 	} cn68xx;
1325 	struct cvmx_pip_prt_cfgx_cn68xx cn68xxp1;
1326 	struct cvmx_pip_prt_cfgx_cn52xx cn70xx;
1327 	struct cvmx_pip_prt_cfgx_cn52xx cn70xxp1;
1328 	struct cvmx_pip_prt_cfgx_cn52xx cnf71xx;
1329 };
1330 
1331 typedef union cvmx_pip_prt_cfgx cvmx_pip_prt_cfgx_t;
1332 
1333 /**
1334  * cvmx_pip_prt_cfgb#
1335  *
1336  * Notes:
1337  * PIP_PRT_CFGB* does not exist prior to pass 1.2.
1338  *
1339  */
1340 union cvmx_pip_prt_cfgbx {
1341 	u64 u64;
1342 	struct cvmx_pip_prt_cfgbx_s {
1343 		u64 reserved_39_63 : 25;
1344 		u64 alt_skp_sel : 2;
1345 		u64 alt_skp_en : 1;
1346 		u64 reserved_35_35 : 1;
1347 		u64 bsel_num : 2;
1348 		u64 bsel_en : 1;
1349 		u64 reserved_24_31 : 8;
1350 		u64 base : 8;
1351 		u64 reserved_6_15 : 10;
1352 		u64 bpid : 6;
1353 	} s;
1354 	struct cvmx_pip_prt_cfgbx_cn61xx {
1355 		u64 reserved_39_63 : 25;
1356 		u64 alt_skp_sel : 2;
1357 		u64 alt_skp_en : 1;
1358 		u64 reserved_35_35 : 1;
1359 		u64 bsel_num : 2;
1360 		u64 bsel_en : 1;
1361 		u64 reserved_0_31 : 32;
1362 	} cn61xx;
1363 	struct cvmx_pip_prt_cfgbx_cn66xx {
1364 		u64 reserved_39_63 : 25;
1365 		u64 alt_skp_sel : 2;
1366 		u64 alt_skp_en : 1;
1367 		u64 reserved_0_35 : 36;
1368 	} cn66xx;
1369 	struct cvmx_pip_prt_cfgbx_s cn68xx;
1370 	struct cvmx_pip_prt_cfgbx_cn68xxp1 {
1371 		u64 reserved_24_63 : 40;
1372 		u64 base : 8;
1373 		u64 reserved_6_15 : 10;
1374 		u64 bpid : 6;
1375 	} cn68xxp1;
1376 	struct cvmx_pip_prt_cfgbx_cn61xx cn70xx;
1377 	struct cvmx_pip_prt_cfgbx_cn61xx cn70xxp1;
1378 	struct cvmx_pip_prt_cfgbx_cn61xx cnf71xx;
1379 };
1380 
1381 typedef union cvmx_pip_prt_cfgbx cvmx_pip_prt_cfgbx_t;
1382 
1383 /**
1384  * cvmx_pip_prt_tag#
1385  *
1386  * PIP_PRT_TAGX = Per port config information
1387  *
1388  */
1389 union cvmx_pip_prt_tagx {
1390 	u64 u64;
1391 	struct cvmx_pip_prt_tagx_s {
1392 		u64 reserved_54_63 : 10;
1393 		u64 portadd_en : 1;
1394 		u64 inc_hwchk : 1;
1395 		u64 reserved_50_51 : 2;
1396 		u64 grptagbase_msb : 2;
1397 		u64 reserved_46_47 : 2;
1398 		u64 grptagmask_msb : 2;
1399 		u64 reserved_42_43 : 2;
1400 		u64 grp_msb : 2;
1401 		u64 grptagbase : 4;
1402 		u64 grptagmask : 4;
1403 		u64 grptag : 1;
1404 		u64 grptag_mskip : 1;
1405 		u64 tag_mode : 2;
1406 		u64 inc_vs : 2;
1407 		u64 inc_vlan : 1;
1408 		u64 inc_prt_flag : 1;
1409 		u64 ip6_dprt_flag : 1;
1410 		u64 ip4_dprt_flag : 1;
1411 		u64 ip6_sprt_flag : 1;
1412 		u64 ip4_sprt_flag : 1;
1413 		u64 ip6_nxth_flag : 1;
1414 		u64 ip4_pctl_flag : 1;
1415 		u64 ip6_dst_flag : 1;
1416 		u64 ip4_dst_flag : 1;
1417 		u64 ip6_src_flag : 1;
1418 		u64 ip4_src_flag : 1;
1419 		cvmx_pow_tag_type_t tcp6_tag_type : 2;
1420 		cvmx_pow_tag_type_t tcp4_tag_type : 2;
1421 		cvmx_pow_tag_type_t ip6_tag_type : 2;
1422 		cvmx_pow_tag_type_t ip4_tag_type : 2;
1423 		cvmx_pow_tag_type_t non_tag_type : 2;
1424 		u64 grp : 4;
1425 	} s;
1426 	struct cvmx_pip_prt_tagx_cn30xx {
1427 		u64 reserved_40_63 : 24;
1428 		u64 grptagbase : 4;
1429 		u64 grptagmask : 4;
1430 		u64 grptag : 1;
1431 		u64 reserved_30_30 : 1;
1432 		u64 tag_mode : 2;
1433 		u64 inc_vs : 2;
1434 		u64 inc_vlan : 1;
1435 		u64 inc_prt_flag : 1;
1436 		u64 ip6_dprt_flag : 1;
1437 		u64 ip4_dprt_flag : 1;
1438 		u64 ip6_sprt_flag : 1;
1439 		u64 ip4_sprt_flag : 1;
1440 		u64 ip6_nxth_flag : 1;
1441 		u64 ip4_pctl_flag : 1;
1442 		u64 ip6_dst_flag : 1;
1443 		u64 ip4_dst_flag : 1;
1444 		u64 ip6_src_flag : 1;
1445 		u64 ip4_src_flag : 1;
1446 		cvmx_pow_tag_type_t tcp6_tag_type : 2;
1447 		cvmx_pow_tag_type_t tcp4_tag_type : 2;
1448 		cvmx_pow_tag_type_t ip6_tag_type : 2;
1449 		cvmx_pow_tag_type_t ip4_tag_type : 2;
1450 		cvmx_pow_tag_type_t non_tag_type : 2;
1451 		u64 grp : 4;
1452 	} cn30xx;
1453 	struct cvmx_pip_prt_tagx_cn30xx cn31xx;
1454 	struct cvmx_pip_prt_tagx_cn30xx cn38xx;
1455 	struct cvmx_pip_prt_tagx_cn30xx cn38xxp2;
1456 	struct cvmx_pip_prt_tagx_cn50xx {
1457 		u64 reserved_40_63 : 24;
1458 		u64 grptagbase : 4;
1459 		u64 grptagmask : 4;
1460 		u64 grptag : 1;
1461 		u64 grptag_mskip : 1;
1462 		u64 tag_mode : 2;
1463 		u64 inc_vs : 2;
1464 		u64 inc_vlan : 1;
1465 		u64 inc_prt_flag : 1;
1466 		u64 ip6_dprt_flag : 1;
1467 		u64 ip4_dprt_flag : 1;
1468 		u64 ip6_sprt_flag : 1;
1469 		u64 ip4_sprt_flag : 1;
1470 		u64 ip6_nxth_flag : 1;
1471 		u64 ip4_pctl_flag : 1;
1472 		u64 ip6_dst_flag : 1;
1473 		u64 ip4_dst_flag : 1;
1474 		u64 ip6_src_flag : 1;
1475 		u64 ip4_src_flag : 1;
1476 		cvmx_pow_tag_type_t tcp6_tag_type : 2;
1477 		cvmx_pow_tag_type_t tcp4_tag_type : 2;
1478 		cvmx_pow_tag_type_t ip6_tag_type : 2;
1479 		cvmx_pow_tag_type_t ip4_tag_type : 2;
1480 		cvmx_pow_tag_type_t non_tag_type : 2;
1481 		u64 grp : 4;
1482 	} cn50xx;
1483 	struct cvmx_pip_prt_tagx_cn50xx cn52xx;
1484 	struct cvmx_pip_prt_tagx_cn50xx cn52xxp1;
1485 	struct cvmx_pip_prt_tagx_cn50xx cn56xx;
1486 	struct cvmx_pip_prt_tagx_cn50xx cn56xxp1;
1487 	struct cvmx_pip_prt_tagx_cn30xx cn58xx;
1488 	struct cvmx_pip_prt_tagx_cn30xx cn58xxp1;
1489 	struct cvmx_pip_prt_tagx_cn50xx cn61xx;
1490 	struct cvmx_pip_prt_tagx_cn50xx cn63xx;
1491 	struct cvmx_pip_prt_tagx_cn50xx cn63xxp1;
1492 	struct cvmx_pip_prt_tagx_cn50xx cn66xx;
1493 	struct cvmx_pip_prt_tagx_s cn68xx;
1494 	struct cvmx_pip_prt_tagx_s cn68xxp1;
1495 	struct cvmx_pip_prt_tagx_cn50xx cn70xx;
1496 	struct cvmx_pip_prt_tagx_cn50xx cn70xxp1;
1497 	struct cvmx_pip_prt_tagx_cn50xx cnf71xx;
1498 };
1499 
1500 typedef union cvmx_pip_prt_tagx cvmx_pip_prt_tagx_t;
1501 
1502 /**
1503  * cvmx_pip_qos_diff#
1504  *
1505  * PIP_QOS_DIFFX = QOS Diffserv Tables
1506  *
1507  */
1508 union cvmx_pip_qos_diffx {
1509 	u64 u64;
1510 	struct cvmx_pip_qos_diffx_s {
1511 		u64 reserved_3_63 : 61;
1512 		u64 qos : 3;
1513 	} s;
1514 	struct cvmx_pip_qos_diffx_s cn30xx;
1515 	struct cvmx_pip_qos_diffx_s cn31xx;
1516 	struct cvmx_pip_qos_diffx_s cn38xx;
1517 	struct cvmx_pip_qos_diffx_s cn38xxp2;
1518 	struct cvmx_pip_qos_diffx_s cn50xx;
1519 	struct cvmx_pip_qos_diffx_s cn52xx;
1520 	struct cvmx_pip_qos_diffx_s cn52xxp1;
1521 	struct cvmx_pip_qos_diffx_s cn56xx;
1522 	struct cvmx_pip_qos_diffx_s cn56xxp1;
1523 	struct cvmx_pip_qos_diffx_s cn58xx;
1524 	struct cvmx_pip_qos_diffx_s cn58xxp1;
1525 	struct cvmx_pip_qos_diffx_s cn61xx;
1526 	struct cvmx_pip_qos_diffx_s cn63xx;
1527 	struct cvmx_pip_qos_diffx_s cn63xxp1;
1528 	struct cvmx_pip_qos_diffx_s cn66xx;
1529 	struct cvmx_pip_qos_diffx_s cn70xx;
1530 	struct cvmx_pip_qos_diffx_s cn70xxp1;
1531 	struct cvmx_pip_qos_diffx_s cnf71xx;
1532 };
1533 
1534 typedef union cvmx_pip_qos_diffx cvmx_pip_qos_diffx_t;
1535 
1536 /**
1537  * cvmx_pip_qos_vlan#
1538  *
1539  * If the PIP indentifies a packet is DSA/VLAN tagged, then the QOS
1540  * can be set based on the DSA/VLAN user priority.  These eight register
1541  * comprise the QOS values for all DSA/VLAN user priority values.
1542  */
1543 union cvmx_pip_qos_vlanx {
1544 	u64 u64;
1545 	struct cvmx_pip_qos_vlanx_s {
1546 		u64 reserved_7_63 : 57;
1547 		u64 qos1 : 3;
1548 		u64 reserved_3_3 : 1;
1549 		u64 qos : 3;
1550 	} s;
1551 	struct cvmx_pip_qos_vlanx_cn30xx {
1552 		u64 reserved_3_63 : 61;
1553 		u64 qos : 3;
1554 	} cn30xx;
1555 	struct cvmx_pip_qos_vlanx_cn30xx cn31xx;
1556 	struct cvmx_pip_qos_vlanx_cn30xx cn38xx;
1557 	struct cvmx_pip_qos_vlanx_cn30xx cn38xxp2;
1558 	struct cvmx_pip_qos_vlanx_cn30xx cn50xx;
1559 	struct cvmx_pip_qos_vlanx_s cn52xx;
1560 	struct cvmx_pip_qos_vlanx_s cn52xxp1;
1561 	struct cvmx_pip_qos_vlanx_s cn56xx;
1562 	struct cvmx_pip_qos_vlanx_cn30xx cn56xxp1;
1563 	struct cvmx_pip_qos_vlanx_cn30xx cn58xx;
1564 	struct cvmx_pip_qos_vlanx_cn30xx cn58xxp1;
1565 	struct cvmx_pip_qos_vlanx_s cn61xx;
1566 	struct cvmx_pip_qos_vlanx_s cn63xx;
1567 	struct cvmx_pip_qos_vlanx_s cn63xxp1;
1568 	struct cvmx_pip_qos_vlanx_s cn66xx;
1569 	struct cvmx_pip_qos_vlanx_s cn70xx;
1570 	struct cvmx_pip_qos_vlanx_s cn70xxp1;
1571 	struct cvmx_pip_qos_vlanx_s cnf71xx;
1572 };
1573 
1574 typedef union cvmx_pip_qos_vlanx cvmx_pip_qos_vlanx_t;
1575 
1576 /**
1577  * cvmx_pip_qos_watch#
1578  *
1579  * Sets up the Configuration CSRs for the four QOS Watchers.
1580  * Each Watcher can be set to look for a specific protocol,
1581  * TCP/UDP destination port, or Ethertype to override the
1582  * default QOS value.
1583  */
1584 union cvmx_pip_qos_watchx {
1585 	u64 u64;
1586 	struct cvmx_pip_qos_watchx_s {
1587 		u64 reserved_48_63 : 16;
1588 		u64 mask : 16;
1589 		u64 reserved_30_31 : 2;
1590 		u64 grp : 6;
1591 		u64 reserved_23_23 : 1;
1592 		u64 qos : 3;
1593 		u64 reserved_16_19 : 4;
1594 		u64 match_value : 16;
1595 	} s;
1596 	struct cvmx_pip_qos_watchx_cn30xx {
1597 		u64 reserved_48_63 : 16;
1598 		u64 mask : 16;
1599 		u64 reserved_28_31 : 4;
1600 		u64 grp : 4;
1601 		u64 reserved_23_23 : 1;
1602 		u64 qos : 3;
1603 		u64 reserved_18_19 : 2;
1604 
1605 		cvmx_pip_qos_watch_types match_type : 2;
1606 		u64 match_value : 16;
1607 	} cn30xx;
1608 	struct cvmx_pip_qos_watchx_cn30xx cn31xx;
1609 	struct cvmx_pip_qos_watchx_cn30xx cn38xx;
1610 	struct cvmx_pip_qos_watchx_cn30xx cn38xxp2;
1611 	struct cvmx_pip_qos_watchx_cn50xx {
1612 		u64 reserved_48_63 : 16;
1613 		u64 mask : 16;
1614 		u64 reserved_28_31 : 4;
1615 		u64 grp : 4;
1616 		u64 reserved_23_23 : 1;
1617 		u64 qos : 3;
1618 		u64 reserved_19_19 : 1;
1619 
1620 		cvmx_pip_qos_watch_types match_type : 3;
1621 		u64 match_value : 16;
1622 	} cn50xx;
1623 	struct cvmx_pip_qos_watchx_cn50xx cn52xx;
1624 	struct cvmx_pip_qos_watchx_cn50xx cn52xxp1;
1625 	struct cvmx_pip_qos_watchx_cn50xx cn56xx;
1626 	struct cvmx_pip_qos_watchx_cn50xx cn56xxp1;
1627 	struct cvmx_pip_qos_watchx_cn30xx cn58xx;
1628 	struct cvmx_pip_qos_watchx_cn30xx cn58xxp1;
1629 	struct cvmx_pip_qos_watchx_cn50xx cn61xx;
1630 	struct cvmx_pip_qos_watchx_cn50xx cn63xx;
1631 	struct cvmx_pip_qos_watchx_cn50xx cn63xxp1;
1632 	struct cvmx_pip_qos_watchx_cn50xx cn66xx;
1633 	struct cvmx_pip_qos_watchx_cn68xx {
1634 		u64 reserved_48_63 : 16;
1635 		u64 mask : 16;
1636 		u64 reserved_30_31 : 2;
1637 		u64 grp : 6;
1638 		u64 reserved_23_23 : 1;
1639 		u64 qos : 3;
1640 		u64 reserved_19_19 : 1;
1641 
1642 		cvmx_pip_qos_watch_types match_type : 3;
1643 		u64 match_value : 16;
1644 	} cn68xx;
1645 	struct cvmx_pip_qos_watchx_cn68xx cn68xxp1;
1646 	struct cvmx_pip_qos_watchx_cn70xx {
1647 		u64 reserved_48_63 : 16;
1648 		u64 mask : 16;
1649 		u64 reserved_28_31 : 4;
1650 		u64 grp : 4;
1651 		u64 reserved_23_23 : 1;
1652 		u64 qos : 3;
1653 		u64 reserved_19_19 : 1;
1654 		u64 typ : 3;
1655 		u64 match_value : 16;
1656 	} cn70xx;
1657 	struct cvmx_pip_qos_watchx_cn70xx cn70xxp1;
1658 	struct cvmx_pip_qos_watchx_cn50xx cnf71xx;
1659 };
1660 
1661 typedef union cvmx_pip_qos_watchx cvmx_pip_qos_watchx_t;
1662 
1663 /**
1664  * cvmx_pip_raw_word
1665  *
1666  * The RAW Word2 to be inserted into the workQ entry of RAWFULL packets.
1667  *
1668  */
1669 union cvmx_pip_raw_word {
1670 	u64 u64;
1671 	struct cvmx_pip_raw_word_s {
1672 		u64 reserved_56_63 : 8;
1673 		u64 word : 56;
1674 	} s;
1675 	struct cvmx_pip_raw_word_s cn30xx;
1676 	struct cvmx_pip_raw_word_s cn31xx;
1677 	struct cvmx_pip_raw_word_s cn38xx;
1678 	struct cvmx_pip_raw_word_s cn38xxp2;
1679 	struct cvmx_pip_raw_word_s cn50xx;
1680 	struct cvmx_pip_raw_word_s cn52xx;
1681 	struct cvmx_pip_raw_word_s cn52xxp1;
1682 	struct cvmx_pip_raw_word_s cn56xx;
1683 	struct cvmx_pip_raw_word_s cn56xxp1;
1684 	struct cvmx_pip_raw_word_s cn58xx;
1685 	struct cvmx_pip_raw_word_s cn58xxp1;
1686 	struct cvmx_pip_raw_word_s cn61xx;
1687 	struct cvmx_pip_raw_word_s cn63xx;
1688 	struct cvmx_pip_raw_word_s cn63xxp1;
1689 	struct cvmx_pip_raw_word_s cn66xx;
1690 	struct cvmx_pip_raw_word_s cn68xx;
1691 	struct cvmx_pip_raw_word_s cn68xxp1;
1692 	struct cvmx_pip_raw_word_s cn70xx;
1693 	struct cvmx_pip_raw_word_s cn70xxp1;
1694 	struct cvmx_pip_raw_word_s cnf71xx;
1695 };
1696 
1697 typedef union cvmx_pip_raw_word cvmx_pip_raw_word_t;
1698 
1699 /**
1700  * cvmx_pip_sft_rst
1701  *
1702  * When written to a '1', resets the pip block
1703  *
1704  */
1705 union cvmx_pip_sft_rst {
1706 	u64 u64;
1707 	struct cvmx_pip_sft_rst_s {
1708 		u64 reserved_1_63 : 63;
1709 		u64 rst : 1;
1710 	} s;
1711 	struct cvmx_pip_sft_rst_s cn30xx;
1712 	struct cvmx_pip_sft_rst_s cn31xx;
1713 	struct cvmx_pip_sft_rst_s cn38xx;
1714 	struct cvmx_pip_sft_rst_s cn50xx;
1715 	struct cvmx_pip_sft_rst_s cn52xx;
1716 	struct cvmx_pip_sft_rst_s cn52xxp1;
1717 	struct cvmx_pip_sft_rst_s cn56xx;
1718 	struct cvmx_pip_sft_rst_s cn56xxp1;
1719 	struct cvmx_pip_sft_rst_s cn58xx;
1720 	struct cvmx_pip_sft_rst_s cn58xxp1;
1721 	struct cvmx_pip_sft_rst_s cn61xx;
1722 	struct cvmx_pip_sft_rst_s cn63xx;
1723 	struct cvmx_pip_sft_rst_s cn63xxp1;
1724 	struct cvmx_pip_sft_rst_s cn66xx;
1725 	struct cvmx_pip_sft_rst_s cn68xx;
1726 	struct cvmx_pip_sft_rst_s cn68xxp1;
1727 	struct cvmx_pip_sft_rst_s cn70xx;
1728 	struct cvmx_pip_sft_rst_s cn70xxp1;
1729 	struct cvmx_pip_sft_rst_s cnf71xx;
1730 };
1731 
1732 typedef union cvmx_pip_sft_rst cvmx_pip_sft_rst_t;
1733 
1734 /**
1735  * cvmx_pip_stat0_#
1736  *
1737  * PIP Statistics Counters
1738  *
1739  * Note: special stat counter behavior
1740  *
1741  * 1) Read and write operations must arbitrate for the statistics resources
1742  *     along with the packet engines which are incrementing the counters.
1743  *     In order to not drop packet information, the packet HW is always a
1744  *     higher priority and the CSR requests will only be satisified when
1745  *     there are idle cycles.  This can potentially cause long delays if the
1746  *     system becomes full.
1747  *
1748  * 2) stat counters can be cleared in two ways.  If PIP_STAT_CTL[RDCLR] is
1749  *     set, then all read accesses will clear the register.  In addition,
1750  *     any write to a stats register will also reset the register to zero.
1751  *     Please note that the clearing operations must obey rule \#1 above.
1752  *
1753  * 3) all counters are wrapping - software must ensure they are read periodically
1754  *
1755  * 4) The counters accumulate statistics for packets that are sent to PKI.  If
1756  *    PTP_MODE is enabled, the 8B timestamp is prepended to the packet.  This
1757  *    additional 8B of data is captured in the octet counts.
1758  *
1759  * 5) X represents either the packet's port-kind or backpressure ID as
1760  *    determined by PIP_STAT_CTL[MODE]
1761  * PIP_STAT0_X = PIP_STAT_DRP_PKTS / PIP_STAT_DRP_OCTS
1762  */
1763 union cvmx_pip_stat0_x {
1764 	u64 u64;
1765 	struct cvmx_pip_stat0_x_s {
1766 		u64 drp_pkts : 32;
1767 		u64 drp_octs : 32;
1768 	} s;
1769 	struct cvmx_pip_stat0_x_s cn68xx;
1770 	struct cvmx_pip_stat0_x_s cn68xxp1;
1771 };
1772 
1773 typedef union cvmx_pip_stat0_x cvmx_pip_stat0_x_t;
1774 
1775 /**
1776  * cvmx_pip_stat0_prt#
1777  *
1778  * "PIP Statistics Counters
1779  * Note: special stat counter behavior
1780  * 1) Read and write operations must arbitrate for the statistics resources
1781  * along with the packet engines which are incrementing the counters.
1782  * In order to not drop packet information, the packet HW is always a
1783  * higher priority and the CSR requests will only be satisified when
1784  * there are idle cycles.  This can potentially cause long delays if the
1785  * system becomes full.
1786  * 2) stat counters can be cleared in two ways.  If PIP_STAT_CTL[RDCLR] is
1787  * set, then all read accesses will clear the register.  In addition,
1788  * any write to a stats register will also reset the register to zero.
1789  * Please note that the clearing operations must obey rule \#1 above.
1790  * 3) all counters are wrapping - software must ensure they are read periodically
1791  * 4) The counters accumulate statistics for packets that are sent to PKI.  If
1792  * PTP_MODE is enabled, the 8B timestamp is prepended to the packet.  This
1793  * additional 8B of data is captured in the octet counts.
1794  * PIP_STAT0_PRT = PIP_STAT_DRP_PKTS / PIP_STAT_DRP_OCTS"
1795  */
1796 union cvmx_pip_stat0_prtx {
1797 	u64 u64;
1798 	struct cvmx_pip_stat0_prtx_s {
1799 		u64 drp_pkts : 32;
1800 		u64 drp_octs : 32;
1801 	} s;
1802 	struct cvmx_pip_stat0_prtx_s cn30xx;
1803 	struct cvmx_pip_stat0_prtx_s cn31xx;
1804 	struct cvmx_pip_stat0_prtx_s cn38xx;
1805 	struct cvmx_pip_stat0_prtx_s cn38xxp2;
1806 	struct cvmx_pip_stat0_prtx_s cn50xx;
1807 	struct cvmx_pip_stat0_prtx_s cn52xx;
1808 	struct cvmx_pip_stat0_prtx_s cn52xxp1;
1809 	struct cvmx_pip_stat0_prtx_s cn56xx;
1810 	struct cvmx_pip_stat0_prtx_s cn56xxp1;
1811 	struct cvmx_pip_stat0_prtx_s cn58xx;
1812 	struct cvmx_pip_stat0_prtx_s cn58xxp1;
1813 	struct cvmx_pip_stat0_prtx_s cn61xx;
1814 	struct cvmx_pip_stat0_prtx_s cn63xx;
1815 	struct cvmx_pip_stat0_prtx_s cn63xxp1;
1816 	struct cvmx_pip_stat0_prtx_s cn66xx;
1817 	struct cvmx_pip_stat0_prtx_s cn70xx;
1818 	struct cvmx_pip_stat0_prtx_s cn70xxp1;
1819 	struct cvmx_pip_stat0_prtx_s cnf71xx;
1820 };
1821 
1822 typedef union cvmx_pip_stat0_prtx cvmx_pip_stat0_prtx_t;
1823 
1824 /**
1825  * cvmx_pip_stat10_#
1826  *
1827  * PIP_STAT10_X = PIP_STAT_L2_MCAST / PIP_STAT_L2_BCAST
1828  *
1829  */
1830 union cvmx_pip_stat10_x {
1831 	u64 u64;
1832 	struct cvmx_pip_stat10_x_s {
1833 		u64 bcast : 32;
1834 		u64 mcast : 32;
1835 	} s;
1836 	struct cvmx_pip_stat10_x_s cn68xx;
1837 	struct cvmx_pip_stat10_x_s cn68xxp1;
1838 };
1839 
1840 typedef union cvmx_pip_stat10_x cvmx_pip_stat10_x_t;
1841 
1842 /**
1843  * cvmx_pip_stat10_prt#
1844  *
1845  * PIP_STAT10_PRTX = PIP_STAT_L2_MCAST / PIP_STAT_L2_BCAST
1846  *
1847  */
1848 union cvmx_pip_stat10_prtx {
1849 	u64 u64;
1850 	struct cvmx_pip_stat10_prtx_s {
1851 		u64 bcast : 32;
1852 		u64 mcast : 32;
1853 	} s;
1854 	struct cvmx_pip_stat10_prtx_s cn52xx;
1855 	struct cvmx_pip_stat10_prtx_s cn52xxp1;
1856 	struct cvmx_pip_stat10_prtx_s cn56xx;
1857 	struct cvmx_pip_stat10_prtx_s cn56xxp1;
1858 	struct cvmx_pip_stat10_prtx_s cn61xx;
1859 	struct cvmx_pip_stat10_prtx_s cn63xx;
1860 	struct cvmx_pip_stat10_prtx_s cn63xxp1;
1861 	struct cvmx_pip_stat10_prtx_s cn66xx;
1862 	struct cvmx_pip_stat10_prtx_s cn70xx;
1863 	struct cvmx_pip_stat10_prtx_s cn70xxp1;
1864 	struct cvmx_pip_stat10_prtx_s cnf71xx;
1865 };
1866 
1867 typedef union cvmx_pip_stat10_prtx cvmx_pip_stat10_prtx_t;
1868 
1869 /**
1870  * cvmx_pip_stat11_#
1871  *
1872  * PIP_STAT11_X = PIP_STAT_L3_MCAST / PIP_STAT_L3_BCAST
1873  *
1874  */
1875 union cvmx_pip_stat11_x {
1876 	u64 u64;
1877 	struct cvmx_pip_stat11_x_s {
1878 		u64 bcast : 32;
1879 		u64 mcast : 32;
1880 	} s;
1881 	struct cvmx_pip_stat11_x_s cn68xx;
1882 	struct cvmx_pip_stat11_x_s cn68xxp1;
1883 };
1884 
1885 typedef union cvmx_pip_stat11_x cvmx_pip_stat11_x_t;
1886 
1887 /**
1888  * cvmx_pip_stat11_prt#
1889  *
1890  * PIP_STAT11_PRTX = PIP_STAT_L3_MCAST / PIP_STAT_L3_BCAST
1891  *
1892  */
1893 union cvmx_pip_stat11_prtx {
1894 	u64 u64;
1895 	struct cvmx_pip_stat11_prtx_s {
1896 		u64 bcast : 32;
1897 		u64 mcast : 32;
1898 	} s;
1899 	struct cvmx_pip_stat11_prtx_s cn52xx;
1900 	struct cvmx_pip_stat11_prtx_s cn52xxp1;
1901 	struct cvmx_pip_stat11_prtx_s cn56xx;
1902 	struct cvmx_pip_stat11_prtx_s cn56xxp1;
1903 	struct cvmx_pip_stat11_prtx_s cn61xx;
1904 	struct cvmx_pip_stat11_prtx_s cn63xx;
1905 	struct cvmx_pip_stat11_prtx_s cn63xxp1;
1906 	struct cvmx_pip_stat11_prtx_s cn66xx;
1907 	struct cvmx_pip_stat11_prtx_s cn70xx;
1908 	struct cvmx_pip_stat11_prtx_s cn70xxp1;
1909 	struct cvmx_pip_stat11_prtx_s cnf71xx;
1910 };
1911 
1912 typedef union cvmx_pip_stat11_prtx cvmx_pip_stat11_prtx_t;
1913 
1914 /**
1915  * cvmx_pip_stat1_#
1916  *
1917  * PIP_STAT1_X = PIP_STAT_OCTS
1918  *
1919  */
1920 union cvmx_pip_stat1_x {
1921 	u64 u64;
1922 	struct cvmx_pip_stat1_x_s {
1923 		u64 reserved_48_63 : 16;
1924 		u64 octs : 48;
1925 	} s;
1926 	struct cvmx_pip_stat1_x_s cn68xx;
1927 	struct cvmx_pip_stat1_x_s cn68xxp1;
1928 };
1929 
1930 typedef union cvmx_pip_stat1_x cvmx_pip_stat1_x_t;
1931 
1932 /**
1933  * cvmx_pip_stat1_prt#
1934  *
1935  * PIP_STAT1_PRTX = PIP_STAT_OCTS
1936  *
1937  */
1938 union cvmx_pip_stat1_prtx {
1939 	u64 u64;
1940 	struct cvmx_pip_stat1_prtx_s {
1941 		u64 reserved_48_63 : 16;
1942 		u64 octs : 48;
1943 	} s;
1944 	struct cvmx_pip_stat1_prtx_s cn30xx;
1945 	struct cvmx_pip_stat1_prtx_s cn31xx;
1946 	struct cvmx_pip_stat1_prtx_s cn38xx;
1947 	struct cvmx_pip_stat1_prtx_s cn38xxp2;
1948 	struct cvmx_pip_stat1_prtx_s cn50xx;
1949 	struct cvmx_pip_stat1_prtx_s cn52xx;
1950 	struct cvmx_pip_stat1_prtx_s cn52xxp1;
1951 	struct cvmx_pip_stat1_prtx_s cn56xx;
1952 	struct cvmx_pip_stat1_prtx_s cn56xxp1;
1953 	struct cvmx_pip_stat1_prtx_s cn58xx;
1954 	struct cvmx_pip_stat1_prtx_s cn58xxp1;
1955 	struct cvmx_pip_stat1_prtx_s cn61xx;
1956 	struct cvmx_pip_stat1_prtx_s cn63xx;
1957 	struct cvmx_pip_stat1_prtx_s cn63xxp1;
1958 	struct cvmx_pip_stat1_prtx_s cn66xx;
1959 	struct cvmx_pip_stat1_prtx_s cn70xx;
1960 	struct cvmx_pip_stat1_prtx_s cn70xxp1;
1961 	struct cvmx_pip_stat1_prtx_s cnf71xx;
1962 };
1963 
1964 typedef union cvmx_pip_stat1_prtx cvmx_pip_stat1_prtx_t;
1965 
1966 /**
1967  * cvmx_pip_stat2_#
1968  *
1969  * PIP_STAT2_X = PIP_STAT_PKTS     / PIP_STAT_RAW
1970  *
1971  */
1972 union cvmx_pip_stat2_x {
1973 	u64 u64;
1974 	struct cvmx_pip_stat2_x_s {
1975 		u64 pkts : 32;
1976 		u64 raw : 32;
1977 	} s;
1978 	struct cvmx_pip_stat2_x_s cn68xx;
1979 	struct cvmx_pip_stat2_x_s cn68xxp1;
1980 };
1981 
1982 typedef union cvmx_pip_stat2_x cvmx_pip_stat2_x_t;
1983 
1984 /**
1985  * cvmx_pip_stat2_prt#
1986  *
1987  * PIP_STAT2_PRTX = PIP_STAT_PKTS     / PIP_STAT_RAW
1988  *
1989  */
1990 union cvmx_pip_stat2_prtx {
1991 	u64 u64;
1992 	struct cvmx_pip_stat2_prtx_s {
1993 		u64 pkts : 32;
1994 		u64 raw : 32;
1995 	} s;
1996 	struct cvmx_pip_stat2_prtx_s cn30xx;
1997 	struct cvmx_pip_stat2_prtx_s cn31xx;
1998 	struct cvmx_pip_stat2_prtx_s cn38xx;
1999 	struct cvmx_pip_stat2_prtx_s cn38xxp2;
2000 	struct cvmx_pip_stat2_prtx_s cn50xx;
2001 	struct cvmx_pip_stat2_prtx_s cn52xx;
2002 	struct cvmx_pip_stat2_prtx_s cn52xxp1;
2003 	struct cvmx_pip_stat2_prtx_s cn56xx;
2004 	struct cvmx_pip_stat2_prtx_s cn56xxp1;
2005 	struct cvmx_pip_stat2_prtx_s cn58xx;
2006 	struct cvmx_pip_stat2_prtx_s cn58xxp1;
2007 	struct cvmx_pip_stat2_prtx_s cn61xx;
2008 	struct cvmx_pip_stat2_prtx_s cn63xx;
2009 	struct cvmx_pip_stat2_prtx_s cn63xxp1;
2010 	struct cvmx_pip_stat2_prtx_s cn66xx;
2011 	struct cvmx_pip_stat2_prtx_s cn70xx;
2012 	struct cvmx_pip_stat2_prtx_s cn70xxp1;
2013 	struct cvmx_pip_stat2_prtx_s cnf71xx;
2014 };
2015 
2016 typedef union cvmx_pip_stat2_prtx cvmx_pip_stat2_prtx_t;
2017 
2018 /**
2019  * cvmx_pip_stat3_#
2020  *
2021  * PIP_STAT3_X = PIP_STAT_BCST     / PIP_STAT_MCST
2022  *
2023  */
2024 union cvmx_pip_stat3_x {
2025 	u64 u64;
2026 	struct cvmx_pip_stat3_x_s {
2027 		u64 bcst : 32;
2028 		u64 mcst : 32;
2029 	} s;
2030 	struct cvmx_pip_stat3_x_s cn68xx;
2031 	struct cvmx_pip_stat3_x_s cn68xxp1;
2032 };
2033 
2034 typedef union cvmx_pip_stat3_x cvmx_pip_stat3_x_t;
2035 
2036 /**
2037  * cvmx_pip_stat3_prt#
2038  *
2039  * PIP_STAT3_PRTX = PIP_STAT_BCST     / PIP_STAT_MCST
2040  *
2041  */
2042 union cvmx_pip_stat3_prtx {
2043 	u64 u64;
2044 	struct cvmx_pip_stat3_prtx_s {
2045 		u64 bcst : 32;
2046 		u64 mcst : 32;
2047 	} s;
2048 	struct cvmx_pip_stat3_prtx_s cn30xx;
2049 	struct cvmx_pip_stat3_prtx_s cn31xx;
2050 	struct cvmx_pip_stat3_prtx_s cn38xx;
2051 	struct cvmx_pip_stat3_prtx_s cn38xxp2;
2052 	struct cvmx_pip_stat3_prtx_s cn50xx;
2053 	struct cvmx_pip_stat3_prtx_s cn52xx;
2054 	struct cvmx_pip_stat3_prtx_s cn52xxp1;
2055 	struct cvmx_pip_stat3_prtx_s cn56xx;
2056 	struct cvmx_pip_stat3_prtx_s cn56xxp1;
2057 	struct cvmx_pip_stat3_prtx_s cn58xx;
2058 	struct cvmx_pip_stat3_prtx_s cn58xxp1;
2059 	struct cvmx_pip_stat3_prtx_s cn61xx;
2060 	struct cvmx_pip_stat3_prtx_s cn63xx;
2061 	struct cvmx_pip_stat3_prtx_s cn63xxp1;
2062 	struct cvmx_pip_stat3_prtx_s cn66xx;
2063 	struct cvmx_pip_stat3_prtx_s cn70xx;
2064 	struct cvmx_pip_stat3_prtx_s cn70xxp1;
2065 	struct cvmx_pip_stat3_prtx_s cnf71xx;
2066 };
2067 
2068 typedef union cvmx_pip_stat3_prtx cvmx_pip_stat3_prtx_t;
2069 
2070 /**
2071  * cvmx_pip_stat4_#
2072  *
2073  * PIP_STAT4_X = PIP_STAT_HIST1    / PIP_STAT_HIST0
2074  *
2075  */
2076 union cvmx_pip_stat4_x {
2077 	u64 u64;
2078 	struct cvmx_pip_stat4_x_s {
2079 		u64 h65to127 : 32;
2080 		u64 h64 : 32;
2081 	} s;
2082 	struct cvmx_pip_stat4_x_s cn68xx;
2083 	struct cvmx_pip_stat4_x_s cn68xxp1;
2084 };
2085 
2086 typedef union cvmx_pip_stat4_x cvmx_pip_stat4_x_t;
2087 
2088 /**
2089  * cvmx_pip_stat4_prt#
2090  *
2091  * PIP_STAT4_PRTX = PIP_STAT_HIST1    / PIP_STAT_HIST0
2092  *
2093  */
2094 union cvmx_pip_stat4_prtx {
2095 	u64 u64;
2096 	struct cvmx_pip_stat4_prtx_s {
2097 		u64 h65to127 : 32;
2098 		u64 h64 : 32;
2099 	} s;
2100 	struct cvmx_pip_stat4_prtx_s cn30xx;
2101 	struct cvmx_pip_stat4_prtx_s cn31xx;
2102 	struct cvmx_pip_stat4_prtx_s cn38xx;
2103 	struct cvmx_pip_stat4_prtx_s cn38xxp2;
2104 	struct cvmx_pip_stat4_prtx_s cn50xx;
2105 	struct cvmx_pip_stat4_prtx_s cn52xx;
2106 	struct cvmx_pip_stat4_prtx_s cn52xxp1;
2107 	struct cvmx_pip_stat4_prtx_s cn56xx;
2108 	struct cvmx_pip_stat4_prtx_s cn56xxp1;
2109 	struct cvmx_pip_stat4_prtx_s cn58xx;
2110 	struct cvmx_pip_stat4_prtx_s cn58xxp1;
2111 	struct cvmx_pip_stat4_prtx_s cn61xx;
2112 	struct cvmx_pip_stat4_prtx_s cn63xx;
2113 	struct cvmx_pip_stat4_prtx_s cn63xxp1;
2114 	struct cvmx_pip_stat4_prtx_s cn66xx;
2115 	struct cvmx_pip_stat4_prtx_s cn70xx;
2116 	struct cvmx_pip_stat4_prtx_s cn70xxp1;
2117 	struct cvmx_pip_stat4_prtx_s cnf71xx;
2118 };
2119 
2120 typedef union cvmx_pip_stat4_prtx cvmx_pip_stat4_prtx_t;
2121 
2122 /**
2123  * cvmx_pip_stat5_#
2124  *
2125  * PIP_STAT5_X = PIP_STAT_HIST3    / PIP_STAT_HIST2
2126  *
2127  */
2128 union cvmx_pip_stat5_x {
2129 	u64 u64;
2130 	struct cvmx_pip_stat5_x_s {
2131 		u64 h256to511 : 32;
2132 		u64 h128to255 : 32;
2133 	} s;
2134 	struct cvmx_pip_stat5_x_s cn68xx;
2135 	struct cvmx_pip_stat5_x_s cn68xxp1;
2136 };
2137 
2138 typedef union cvmx_pip_stat5_x cvmx_pip_stat5_x_t;
2139 
2140 /**
2141  * cvmx_pip_stat5_prt#
2142  *
2143  * PIP_STAT5_PRTX = PIP_STAT_HIST3    / PIP_STAT_HIST2
2144  *
2145  */
2146 union cvmx_pip_stat5_prtx {
2147 	u64 u64;
2148 	struct cvmx_pip_stat5_prtx_s {
2149 		u64 h256to511 : 32;
2150 		u64 h128to255 : 32;
2151 	} s;
2152 	struct cvmx_pip_stat5_prtx_s cn30xx;
2153 	struct cvmx_pip_stat5_prtx_s cn31xx;
2154 	struct cvmx_pip_stat5_prtx_s cn38xx;
2155 	struct cvmx_pip_stat5_prtx_s cn38xxp2;
2156 	struct cvmx_pip_stat5_prtx_s cn50xx;
2157 	struct cvmx_pip_stat5_prtx_s cn52xx;
2158 	struct cvmx_pip_stat5_prtx_s cn52xxp1;
2159 	struct cvmx_pip_stat5_prtx_s cn56xx;
2160 	struct cvmx_pip_stat5_prtx_s cn56xxp1;
2161 	struct cvmx_pip_stat5_prtx_s cn58xx;
2162 	struct cvmx_pip_stat5_prtx_s cn58xxp1;
2163 	struct cvmx_pip_stat5_prtx_s cn61xx;
2164 	struct cvmx_pip_stat5_prtx_s cn63xx;
2165 	struct cvmx_pip_stat5_prtx_s cn63xxp1;
2166 	struct cvmx_pip_stat5_prtx_s cn66xx;
2167 	struct cvmx_pip_stat5_prtx_s cn70xx;
2168 	struct cvmx_pip_stat5_prtx_s cn70xxp1;
2169 	struct cvmx_pip_stat5_prtx_s cnf71xx;
2170 };
2171 
2172 typedef union cvmx_pip_stat5_prtx cvmx_pip_stat5_prtx_t;
2173 
2174 /**
2175  * cvmx_pip_stat6_#
2176  *
2177  * PIP_STAT6_X = PIP_STAT_HIST5    / PIP_STAT_HIST4
2178  *
2179  */
2180 union cvmx_pip_stat6_x {
2181 	u64 u64;
2182 	struct cvmx_pip_stat6_x_s {
2183 		u64 h1024to1518 : 32;
2184 		u64 h512to1023 : 32;
2185 	} s;
2186 	struct cvmx_pip_stat6_x_s cn68xx;
2187 	struct cvmx_pip_stat6_x_s cn68xxp1;
2188 };
2189 
2190 typedef union cvmx_pip_stat6_x cvmx_pip_stat6_x_t;
2191 
2192 /**
2193  * cvmx_pip_stat6_prt#
2194  *
2195  * PIP_STAT6_PRTX = PIP_STAT_HIST5    / PIP_STAT_HIST4
2196  *
2197  */
2198 union cvmx_pip_stat6_prtx {
2199 	u64 u64;
2200 	struct cvmx_pip_stat6_prtx_s {
2201 		u64 h1024to1518 : 32;
2202 		u64 h512to1023 : 32;
2203 	} s;
2204 	struct cvmx_pip_stat6_prtx_s cn30xx;
2205 	struct cvmx_pip_stat6_prtx_s cn31xx;
2206 	struct cvmx_pip_stat6_prtx_s cn38xx;
2207 	struct cvmx_pip_stat6_prtx_s cn38xxp2;
2208 	struct cvmx_pip_stat6_prtx_s cn50xx;
2209 	struct cvmx_pip_stat6_prtx_s cn52xx;
2210 	struct cvmx_pip_stat6_prtx_s cn52xxp1;
2211 	struct cvmx_pip_stat6_prtx_s cn56xx;
2212 	struct cvmx_pip_stat6_prtx_s cn56xxp1;
2213 	struct cvmx_pip_stat6_prtx_s cn58xx;
2214 	struct cvmx_pip_stat6_prtx_s cn58xxp1;
2215 	struct cvmx_pip_stat6_prtx_s cn61xx;
2216 	struct cvmx_pip_stat6_prtx_s cn63xx;
2217 	struct cvmx_pip_stat6_prtx_s cn63xxp1;
2218 	struct cvmx_pip_stat6_prtx_s cn66xx;
2219 	struct cvmx_pip_stat6_prtx_s cn70xx;
2220 	struct cvmx_pip_stat6_prtx_s cn70xxp1;
2221 	struct cvmx_pip_stat6_prtx_s cnf71xx;
2222 };
2223 
2224 typedef union cvmx_pip_stat6_prtx cvmx_pip_stat6_prtx_t;
2225 
2226 /**
2227  * cvmx_pip_stat7_#
2228  *
2229  * PIP_STAT7_X = PIP_STAT_FCS      / PIP_STAT_HIST6
2230  *
2231  */
2232 union cvmx_pip_stat7_x {
2233 	u64 u64;
2234 	struct cvmx_pip_stat7_x_s {
2235 		u64 fcs : 32;
2236 		u64 h1519 : 32;
2237 	} s;
2238 	struct cvmx_pip_stat7_x_s cn68xx;
2239 	struct cvmx_pip_stat7_x_s cn68xxp1;
2240 };
2241 
2242 typedef union cvmx_pip_stat7_x cvmx_pip_stat7_x_t;
2243 
2244 /**
2245  * cvmx_pip_stat7_prt#
2246  *
2247  * PIP_STAT7_PRTX = PIP_STAT_FCS      / PIP_STAT_HIST6
2248  *
2249  *
2250  * Notes:
2251  * DPI does not check FCS, therefore FCS will never increment on DPI ports 32-35
2252  * sRIO does not check FCS, therefore FCS will never increment on sRIO ports 40-47
2253  */
2254 union cvmx_pip_stat7_prtx {
2255 	u64 u64;
2256 	struct cvmx_pip_stat7_prtx_s {
2257 		u64 fcs : 32;
2258 		u64 h1519 : 32;
2259 	} s;
2260 	struct cvmx_pip_stat7_prtx_s cn30xx;
2261 	struct cvmx_pip_stat7_prtx_s cn31xx;
2262 	struct cvmx_pip_stat7_prtx_s cn38xx;
2263 	struct cvmx_pip_stat7_prtx_s cn38xxp2;
2264 	struct cvmx_pip_stat7_prtx_s cn50xx;
2265 	struct cvmx_pip_stat7_prtx_s cn52xx;
2266 	struct cvmx_pip_stat7_prtx_s cn52xxp1;
2267 	struct cvmx_pip_stat7_prtx_s cn56xx;
2268 	struct cvmx_pip_stat7_prtx_s cn56xxp1;
2269 	struct cvmx_pip_stat7_prtx_s cn58xx;
2270 	struct cvmx_pip_stat7_prtx_s cn58xxp1;
2271 	struct cvmx_pip_stat7_prtx_s cn61xx;
2272 	struct cvmx_pip_stat7_prtx_s cn63xx;
2273 	struct cvmx_pip_stat7_prtx_s cn63xxp1;
2274 	struct cvmx_pip_stat7_prtx_s cn66xx;
2275 	struct cvmx_pip_stat7_prtx_s cn70xx;
2276 	struct cvmx_pip_stat7_prtx_s cn70xxp1;
2277 	struct cvmx_pip_stat7_prtx_s cnf71xx;
2278 };
2279 
2280 typedef union cvmx_pip_stat7_prtx cvmx_pip_stat7_prtx_t;
2281 
2282 /**
2283  * cvmx_pip_stat8_#
2284  *
2285  * PIP_STAT8_X = PIP_STAT_FRAG     / PIP_STAT_UNDER
2286  *
2287  */
2288 union cvmx_pip_stat8_x {
2289 	u64 u64;
2290 	struct cvmx_pip_stat8_x_s {
2291 		u64 frag : 32;
2292 		u64 undersz : 32;
2293 	} s;
2294 	struct cvmx_pip_stat8_x_s cn68xx;
2295 	struct cvmx_pip_stat8_x_s cn68xxp1;
2296 };
2297 
2298 typedef union cvmx_pip_stat8_x cvmx_pip_stat8_x_t;
2299 
2300 /**
2301  * cvmx_pip_stat8_prt#
2302  *
2303  * PIP_STAT8_PRTX = PIP_STAT_FRAG     / PIP_STAT_UNDER
2304  *
2305  *
2306  * Notes:
2307  * DPI does not check FCS, therefore FRAG will never increment on DPI ports 32-35
2308  * sRIO does not check FCS, therefore FRAG will never increment on sRIO ports 40-47
2309  */
2310 union cvmx_pip_stat8_prtx {
2311 	u64 u64;
2312 	struct cvmx_pip_stat8_prtx_s {
2313 		u64 frag : 32;
2314 		u64 undersz : 32;
2315 	} s;
2316 	struct cvmx_pip_stat8_prtx_s cn30xx;
2317 	struct cvmx_pip_stat8_prtx_s cn31xx;
2318 	struct cvmx_pip_stat8_prtx_s cn38xx;
2319 	struct cvmx_pip_stat8_prtx_s cn38xxp2;
2320 	struct cvmx_pip_stat8_prtx_s cn50xx;
2321 	struct cvmx_pip_stat8_prtx_s cn52xx;
2322 	struct cvmx_pip_stat8_prtx_s cn52xxp1;
2323 	struct cvmx_pip_stat8_prtx_s cn56xx;
2324 	struct cvmx_pip_stat8_prtx_s cn56xxp1;
2325 	struct cvmx_pip_stat8_prtx_s cn58xx;
2326 	struct cvmx_pip_stat8_prtx_s cn58xxp1;
2327 	struct cvmx_pip_stat8_prtx_s cn61xx;
2328 	struct cvmx_pip_stat8_prtx_s cn63xx;
2329 	struct cvmx_pip_stat8_prtx_s cn63xxp1;
2330 	struct cvmx_pip_stat8_prtx_s cn66xx;
2331 	struct cvmx_pip_stat8_prtx_s cn70xx;
2332 	struct cvmx_pip_stat8_prtx_s cn70xxp1;
2333 	struct cvmx_pip_stat8_prtx_s cnf71xx;
2334 };
2335 
2336 typedef union cvmx_pip_stat8_prtx cvmx_pip_stat8_prtx_t;
2337 
2338 /**
2339  * cvmx_pip_stat9_#
2340  *
2341  * PIP_STAT9_X = PIP_STAT_JABBER   / PIP_STAT_OVER
2342  *
2343  */
2344 union cvmx_pip_stat9_x {
2345 	u64 u64;
2346 	struct cvmx_pip_stat9_x_s {
2347 		u64 jabber : 32;
2348 		u64 oversz : 32;
2349 	} s;
2350 	struct cvmx_pip_stat9_x_s cn68xx;
2351 	struct cvmx_pip_stat9_x_s cn68xxp1;
2352 };
2353 
2354 typedef union cvmx_pip_stat9_x cvmx_pip_stat9_x_t;
2355 
2356 /**
2357  * cvmx_pip_stat9_prt#
2358  *
2359  * PIP_STAT9_PRTX = PIP_STAT_JABBER   / PIP_STAT_OVER
2360  *
2361  *
2362  * Notes:
2363  * DPI does not check FCS, therefore JABBER will never increment on DPI ports 32-35
2364  * sRIO does not check FCS, therefore JABBER will never increment on sRIO ports 40-47 due to FCS errors
2365  * sRIO does use the JABBER opcode to communicate sRIO error, therefore JABBER can increment under the sRIO error conditions
2366  */
2367 union cvmx_pip_stat9_prtx {
2368 	u64 u64;
2369 	struct cvmx_pip_stat9_prtx_s {
2370 		u64 jabber : 32;
2371 		u64 oversz : 32;
2372 	} s;
2373 	struct cvmx_pip_stat9_prtx_s cn30xx;
2374 	struct cvmx_pip_stat9_prtx_s cn31xx;
2375 	struct cvmx_pip_stat9_prtx_s cn38xx;
2376 	struct cvmx_pip_stat9_prtx_s cn38xxp2;
2377 	struct cvmx_pip_stat9_prtx_s cn50xx;
2378 	struct cvmx_pip_stat9_prtx_s cn52xx;
2379 	struct cvmx_pip_stat9_prtx_s cn52xxp1;
2380 	struct cvmx_pip_stat9_prtx_s cn56xx;
2381 	struct cvmx_pip_stat9_prtx_s cn56xxp1;
2382 	struct cvmx_pip_stat9_prtx_s cn58xx;
2383 	struct cvmx_pip_stat9_prtx_s cn58xxp1;
2384 	struct cvmx_pip_stat9_prtx_s cn61xx;
2385 	struct cvmx_pip_stat9_prtx_s cn63xx;
2386 	struct cvmx_pip_stat9_prtx_s cn63xxp1;
2387 	struct cvmx_pip_stat9_prtx_s cn66xx;
2388 	struct cvmx_pip_stat9_prtx_s cn70xx;
2389 	struct cvmx_pip_stat9_prtx_s cn70xxp1;
2390 	struct cvmx_pip_stat9_prtx_s cnf71xx;
2391 };
2392 
2393 typedef union cvmx_pip_stat9_prtx cvmx_pip_stat9_prtx_t;
2394 
2395 /**
2396  * cvmx_pip_stat_ctl
2397  *
2398  * Controls how the PIP statistics counters are handled.
2399  *
2400  */
2401 union cvmx_pip_stat_ctl {
2402 	u64 u64;
2403 	struct cvmx_pip_stat_ctl_s {
2404 		u64 reserved_9_63 : 55;
2405 		u64 mode : 1;
2406 		u64 reserved_1_7 : 7;
2407 		u64 rdclr : 1;
2408 	} s;
2409 	struct cvmx_pip_stat_ctl_cn30xx {
2410 		u64 reserved_1_63 : 63;
2411 		u64 rdclr : 1;
2412 	} cn30xx;
2413 	struct cvmx_pip_stat_ctl_cn30xx cn31xx;
2414 	struct cvmx_pip_stat_ctl_cn30xx cn38xx;
2415 	struct cvmx_pip_stat_ctl_cn30xx cn38xxp2;
2416 	struct cvmx_pip_stat_ctl_cn30xx cn50xx;
2417 	struct cvmx_pip_stat_ctl_cn30xx cn52xx;
2418 	struct cvmx_pip_stat_ctl_cn30xx cn52xxp1;
2419 	struct cvmx_pip_stat_ctl_cn30xx cn56xx;
2420 	struct cvmx_pip_stat_ctl_cn30xx cn56xxp1;
2421 	struct cvmx_pip_stat_ctl_cn30xx cn58xx;
2422 	struct cvmx_pip_stat_ctl_cn30xx cn58xxp1;
2423 	struct cvmx_pip_stat_ctl_cn30xx cn61xx;
2424 	struct cvmx_pip_stat_ctl_cn30xx cn63xx;
2425 	struct cvmx_pip_stat_ctl_cn30xx cn63xxp1;
2426 	struct cvmx_pip_stat_ctl_cn30xx cn66xx;
2427 	struct cvmx_pip_stat_ctl_s cn68xx;
2428 	struct cvmx_pip_stat_ctl_s cn68xxp1;
2429 	struct cvmx_pip_stat_ctl_cn30xx cn70xx;
2430 	struct cvmx_pip_stat_ctl_cn30xx cn70xxp1;
2431 	struct cvmx_pip_stat_ctl_cn30xx cnf71xx;
2432 };
2433 
2434 typedef union cvmx_pip_stat_ctl cvmx_pip_stat_ctl_t;
2435 
2436 /**
2437  * cvmx_pip_stat_inb_errs#
2438  *
2439  * Inbound stats collect all data sent to PIP from all packet interfaces.
2440  * Its the raw counts of everything that comes into the block.  The counts
2441  * will reflect all error packets and packets dropped by the PKI RED engine.
2442  * These counts are intended for system debug, but could convey useful
2443  * information in production systems.
2444  */
2445 union cvmx_pip_stat_inb_errsx {
2446 	u64 u64;
2447 	struct cvmx_pip_stat_inb_errsx_s {
2448 		u64 reserved_16_63 : 48;
2449 		u64 errs : 16;
2450 	} s;
2451 	struct cvmx_pip_stat_inb_errsx_s cn30xx;
2452 	struct cvmx_pip_stat_inb_errsx_s cn31xx;
2453 	struct cvmx_pip_stat_inb_errsx_s cn38xx;
2454 	struct cvmx_pip_stat_inb_errsx_s cn38xxp2;
2455 	struct cvmx_pip_stat_inb_errsx_s cn50xx;
2456 	struct cvmx_pip_stat_inb_errsx_s cn52xx;
2457 	struct cvmx_pip_stat_inb_errsx_s cn52xxp1;
2458 	struct cvmx_pip_stat_inb_errsx_s cn56xx;
2459 	struct cvmx_pip_stat_inb_errsx_s cn56xxp1;
2460 	struct cvmx_pip_stat_inb_errsx_s cn58xx;
2461 	struct cvmx_pip_stat_inb_errsx_s cn58xxp1;
2462 	struct cvmx_pip_stat_inb_errsx_s cn61xx;
2463 	struct cvmx_pip_stat_inb_errsx_s cn63xx;
2464 	struct cvmx_pip_stat_inb_errsx_s cn63xxp1;
2465 	struct cvmx_pip_stat_inb_errsx_s cn66xx;
2466 	struct cvmx_pip_stat_inb_errsx_s cn70xx;
2467 	struct cvmx_pip_stat_inb_errsx_s cn70xxp1;
2468 	struct cvmx_pip_stat_inb_errsx_s cnf71xx;
2469 };
2470 
2471 typedef union cvmx_pip_stat_inb_errsx cvmx_pip_stat_inb_errsx_t;
2472 
2473 /**
2474  * cvmx_pip_stat_inb_errs_pknd#
2475  *
2476  * PIP_STAT_INB_ERRS_PKNDX = Inbound error packets received by PIP per pkind
2477  *
2478  * Inbound stats collect all data sent to PIP from all packet interfaces.
2479  * Its the raw counts of everything that comes into the block.  The counts
2480  * will reflect all error packets and packets dropped by the PKI RED engine.
2481  * These counts are intended for system debug, but could convey useful
2482  * information in production systems.
2483  */
2484 union cvmx_pip_stat_inb_errs_pkndx {
2485 	u64 u64;
2486 	struct cvmx_pip_stat_inb_errs_pkndx_s {
2487 		u64 reserved_16_63 : 48;
2488 		u64 errs : 16;
2489 	} s;
2490 	struct cvmx_pip_stat_inb_errs_pkndx_s cn68xx;
2491 	struct cvmx_pip_stat_inb_errs_pkndx_s cn68xxp1;
2492 };
2493 
2494 typedef union cvmx_pip_stat_inb_errs_pkndx cvmx_pip_stat_inb_errs_pkndx_t;
2495 
2496 /**
2497  * cvmx_pip_stat_inb_octs#
2498  *
2499  * Inbound stats collect all data sent to PIP from all packet interfaces.
2500  * Its the raw counts of everything that comes into the block.  The counts
2501  * will reflect all error packets and packets dropped by the PKI RED engine.
2502  * These counts are intended for system debug, but could convey useful
2503  * information in production systems. The OCTS will include the bytes from
2504  * timestamp fields in PTP_MODE.
2505  */
2506 union cvmx_pip_stat_inb_octsx {
2507 	u64 u64;
2508 	struct cvmx_pip_stat_inb_octsx_s {
2509 		u64 reserved_48_63 : 16;
2510 		u64 octs : 48;
2511 	} s;
2512 	struct cvmx_pip_stat_inb_octsx_s cn30xx;
2513 	struct cvmx_pip_stat_inb_octsx_s cn31xx;
2514 	struct cvmx_pip_stat_inb_octsx_s cn38xx;
2515 	struct cvmx_pip_stat_inb_octsx_s cn38xxp2;
2516 	struct cvmx_pip_stat_inb_octsx_s cn50xx;
2517 	struct cvmx_pip_stat_inb_octsx_s cn52xx;
2518 	struct cvmx_pip_stat_inb_octsx_s cn52xxp1;
2519 	struct cvmx_pip_stat_inb_octsx_s cn56xx;
2520 	struct cvmx_pip_stat_inb_octsx_s cn56xxp1;
2521 	struct cvmx_pip_stat_inb_octsx_s cn58xx;
2522 	struct cvmx_pip_stat_inb_octsx_s cn58xxp1;
2523 	struct cvmx_pip_stat_inb_octsx_s cn61xx;
2524 	struct cvmx_pip_stat_inb_octsx_s cn63xx;
2525 	struct cvmx_pip_stat_inb_octsx_s cn63xxp1;
2526 	struct cvmx_pip_stat_inb_octsx_s cn66xx;
2527 	struct cvmx_pip_stat_inb_octsx_s cn70xx;
2528 	struct cvmx_pip_stat_inb_octsx_s cn70xxp1;
2529 	struct cvmx_pip_stat_inb_octsx_s cnf71xx;
2530 };
2531 
2532 typedef union cvmx_pip_stat_inb_octsx cvmx_pip_stat_inb_octsx_t;
2533 
2534 /**
2535  * cvmx_pip_stat_inb_octs_pknd#
2536  *
2537  * PIP_STAT_INB_OCTS_PKNDX = Inbound octets received by PIP per pkind
2538  *
2539  * Inbound stats collect all data sent to PIP from all packet interfaces.
2540  * Its the raw counts of everything that comes into the block.  The counts
2541  * will reflect all error packets and packets dropped by the PKI RED engine.
2542  * These counts are intended for system debug, but could convey useful
2543  * information in production systems. The OCTS will include the bytes from
2544  * timestamp fields in PTP_MODE.
2545  */
2546 union cvmx_pip_stat_inb_octs_pkndx {
2547 	u64 u64;
2548 	struct cvmx_pip_stat_inb_octs_pkndx_s {
2549 		u64 reserved_48_63 : 16;
2550 		u64 octs : 48;
2551 	} s;
2552 	struct cvmx_pip_stat_inb_octs_pkndx_s cn68xx;
2553 	struct cvmx_pip_stat_inb_octs_pkndx_s cn68xxp1;
2554 };
2555 
2556 typedef union cvmx_pip_stat_inb_octs_pkndx cvmx_pip_stat_inb_octs_pkndx_t;
2557 
2558 /**
2559  * cvmx_pip_stat_inb_pkts#
2560  *
2561  * Inbound stats collect all data sent to PIP from all packet interfaces.
2562  * Its the raw counts of everything that comes into the block.  The counts
2563  * will reflect all error packets and packets dropped by the PKI RED engine.
2564  * These counts are intended for system debug, but could convey useful
2565  * information in production systems.
2566  */
2567 union cvmx_pip_stat_inb_pktsx {
2568 	u64 u64;
2569 	struct cvmx_pip_stat_inb_pktsx_s {
2570 		u64 reserved_32_63 : 32;
2571 		u64 pkts : 32;
2572 	} s;
2573 	struct cvmx_pip_stat_inb_pktsx_s cn30xx;
2574 	struct cvmx_pip_stat_inb_pktsx_s cn31xx;
2575 	struct cvmx_pip_stat_inb_pktsx_s cn38xx;
2576 	struct cvmx_pip_stat_inb_pktsx_s cn38xxp2;
2577 	struct cvmx_pip_stat_inb_pktsx_s cn50xx;
2578 	struct cvmx_pip_stat_inb_pktsx_s cn52xx;
2579 	struct cvmx_pip_stat_inb_pktsx_s cn52xxp1;
2580 	struct cvmx_pip_stat_inb_pktsx_s cn56xx;
2581 	struct cvmx_pip_stat_inb_pktsx_s cn56xxp1;
2582 	struct cvmx_pip_stat_inb_pktsx_s cn58xx;
2583 	struct cvmx_pip_stat_inb_pktsx_s cn58xxp1;
2584 	struct cvmx_pip_stat_inb_pktsx_s cn61xx;
2585 	struct cvmx_pip_stat_inb_pktsx_s cn63xx;
2586 	struct cvmx_pip_stat_inb_pktsx_s cn63xxp1;
2587 	struct cvmx_pip_stat_inb_pktsx_s cn66xx;
2588 	struct cvmx_pip_stat_inb_pktsx_s cn70xx;
2589 	struct cvmx_pip_stat_inb_pktsx_s cn70xxp1;
2590 	struct cvmx_pip_stat_inb_pktsx_s cnf71xx;
2591 };
2592 
2593 typedef union cvmx_pip_stat_inb_pktsx cvmx_pip_stat_inb_pktsx_t;
2594 
2595 /**
2596  * cvmx_pip_stat_inb_pkts_pknd#
2597  *
2598  * PIP_STAT_INB_PKTS_PKNDX = Inbound packets received by PIP per pkind
2599  *
2600  * Inbound stats collect all data sent to PIP from all packet interfaces.
2601  * Its the raw counts of everything that comes into the block.  The counts
2602  * will reflect all error packets and packets dropped by the PKI RED engine.
2603  * These counts are intended for system debug, but could convey useful
2604  * information in production systems.
2605  */
2606 union cvmx_pip_stat_inb_pkts_pkndx {
2607 	u64 u64;
2608 	struct cvmx_pip_stat_inb_pkts_pkndx_s {
2609 		u64 reserved_32_63 : 32;
2610 		u64 pkts : 32;
2611 	} s;
2612 	struct cvmx_pip_stat_inb_pkts_pkndx_s cn68xx;
2613 	struct cvmx_pip_stat_inb_pkts_pkndx_s cn68xxp1;
2614 };
2615 
2616 typedef union cvmx_pip_stat_inb_pkts_pkndx cvmx_pip_stat_inb_pkts_pkndx_t;
2617 
2618 /**
2619  * cvmx_pip_sub_pkind_fcs#
2620  */
2621 union cvmx_pip_sub_pkind_fcsx {
2622 	u64 u64;
2623 	struct cvmx_pip_sub_pkind_fcsx_s {
2624 		u64 port_bit : 64;
2625 	} s;
2626 	struct cvmx_pip_sub_pkind_fcsx_s cn68xx;
2627 	struct cvmx_pip_sub_pkind_fcsx_s cn68xxp1;
2628 };
2629 
2630 typedef union cvmx_pip_sub_pkind_fcsx cvmx_pip_sub_pkind_fcsx_t;
2631 
2632 /**
2633  * cvmx_pip_tag_inc#
2634  *
2635  * # $PIP_TAG_INCX = 0x300+X X=(0..63) RegType=(RSL) RtlReg=(pip_tag_inc_csr_direct_TestbuilderTask)
2636  *
2637  */
2638 union cvmx_pip_tag_incx {
2639 	u64 u64;
2640 	struct cvmx_pip_tag_incx_s {
2641 		u64 reserved_8_63 : 56;
2642 		u64 en : 8;
2643 	} s;
2644 	struct cvmx_pip_tag_incx_s cn30xx;
2645 	struct cvmx_pip_tag_incx_s cn31xx;
2646 	struct cvmx_pip_tag_incx_s cn38xx;
2647 	struct cvmx_pip_tag_incx_s cn38xxp2;
2648 	struct cvmx_pip_tag_incx_s cn50xx;
2649 	struct cvmx_pip_tag_incx_s cn52xx;
2650 	struct cvmx_pip_tag_incx_s cn52xxp1;
2651 	struct cvmx_pip_tag_incx_s cn56xx;
2652 	struct cvmx_pip_tag_incx_s cn56xxp1;
2653 	struct cvmx_pip_tag_incx_s cn58xx;
2654 	struct cvmx_pip_tag_incx_s cn58xxp1;
2655 	struct cvmx_pip_tag_incx_s cn61xx;
2656 	struct cvmx_pip_tag_incx_s cn63xx;
2657 	struct cvmx_pip_tag_incx_s cn63xxp1;
2658 	struct cvmx_pip_tag_incx_s cn66xx;
2659 	struct cvmx_pip_tag_incx_s cn68xx;
2660 	struct cvmx_pip_tag_incx_s cn68xxp1;
2661 	struct cvmx_pip_tag_incx_s cn70xx;
2662 	struct cvmx_pip_tag_incx_s cn70xxp1;
2663 	struct cvmx_pip_tag_incx_s cnf71xx;
2664 };
2665 
2666 typedef union cvmx_pip_tag_incx cvmx_pip_tag_incx_t;
2667 
2668 /**
2669  * cvmx_pip_tag_mask
2670  *
2671  * PIP_TAG_MASK = Mask bit in the tag generation
2672  *
2673  */
2674 union cvmx_pip_tag_mask {
2675 	u64 u64;
2676 	struct cvmx_pip_tag_mask_s {
2677 		u64 reserved_16_63 : 48;
2678 		u64 mask : 16;
2679 	} s;
2680 	struct cvmx_pip_tag_mask_s cn30xx;
2681 	struct cvmx_pip_tag_mask_s cn31xx;
2682 	struct cvmx_pip_tag_mask_s cn38xx;
2683 	struct cvmx_pip_tag_mask_s cn38xxp2;
2684 	struct cvmx_pip_tag_mask_s cn50xx;
2685 	struct cvmx_pip_tag_mask_s cn52xx;
2686 	struct cvmx_pip_tag_mask_s cn52xxp1;
2687 	struct cvmx_pip_tag_mask_s cn56xx;
2688 	struct cvmx_pip_tag_mask_s cn56xxp1;
2689 	struct cvmx_pip_tag_mask_s cn58xx;
2690 	struct cvmx_pip_tag_mask_s cn58xxp1;
2691 	struct cvmx_pip_tag_mask_s cn61xx;
2692 	struct cvmx_pip_tag_mask_s cn63xx;
2693 	struct cvmx_pip_tag_mask_s cn63xxp1;
2694 	struct cvmx_pip_tag_mask_s cn66xx;
2695 	struct cvmx_pip_tag_mask_s cn68xx;
2696 	struct cvmx_pip_tag_mask_s cn68xxp1;
2697 	struct cvmx_pip_tag_mask_s cn70xx;
2698 	struct cvmx_pip_tag_mask_s cn70xxp1;
2699 	struct cvmx_pip_tag_mask_s cnf71xx;
2700 };
2701 
2702 typedef union cvmx_pip_tag_mask cvmx_pip_tag_mask_t;
2703 
2704 /**
2705  * cvmx_pip_tag_secret
2706  *
2707  * The source and destination IV's provide a mechanism for each Octeon to be unique.
2708  *
2709  */
2710 union cvmx_pip_tag_secret {
2711 	u64 u64;
2712 	struct cvmx_pip_tag_secret_s {
2713 		u64 reserved_32_63 : 32;
2714 		u64 dst : 16;
2715 		u64 src : 16;
2716 	} s;
2717 	struct cvmx_pip_tag_secret_s cn30xx;
2718 	struct cvmx_pip_tag_secret_s cn31xx;
2719 	struct cvmx_pip_tag_secret_s cn38xx;
2720 	struct cvmx_pip_tag_secret_s cn38xxp2;
2721 	struct cvmx_pip_tag_secret_s cn50xx;
2722 	struct cvmx_pip_tag_secret_s cn52xx;
2723 	struct cvmx_pip_tag_secret_s cn52xxp1;
2724 	struct cvmx_pip_tag_secret_s cn56xx;
2725 	struct cvmx_pip_tag_secret_s cn56xxp1;
2726 	struct cvmx_pip_tag_secret_s cn58xx;
2727 	struct cvmx_pip_tag_secret_s cn58xxp1;
2728 	struct cvmx_pip_tag_secret_s cn61xx;
2729 	struct cvmx_pip_tag_secret_s cn63xx;
2730 	struct cvmx_pip_tag_secret_s cn63xxp1;
2731 	struct cvmx_pip_tag_secret_s cn66xx;
2732 	struct cvmx_pip_tag_secret_s cn68xx;
2733 	struct cvmx_pip_tag_secret_s cn68xxp1;
2734 	struct cvmx_pip_tag_secret_s cn70xx;
2735 	struct cvmx_pip_tag_secret_s cn70xxp1;
2736 	struct cvmx_pip_tag_secret_s cnf71xx;
2737 };
2738 
2739 typedef union cvmx_pip_tag_secret cvmx_pip_tag_secret_t;
2740 
2741 /**
2742  * cvmx_pip_todo_entry
2743  *
2744  * Summary of the current packet that has completed and waiting to be processed
2745  *
2746  */
2747 union cvmx_pip_todo_entry {
2748 	u64 u64;
2749 	struct cvmx_pip_todo_entry_s {
2750 		u64 val : 1;
2751 		u64 reserved_62_62 : 1;
2752 		u64 entry : 62;
2753 	} s;
2754 	struct cvmx_pip_todo_entry_s cn30xx;
2755 	struct cvmx_pip_todo_entry_s cn31xx;
2756 	struct cvmx_pip_todo_entry_s cn38xx;
2757 	struct cvmx_pip_todo_entry_s cn38xxp2;
2758 	struct cvmx_pip_todo_entry_s cn50xx;
2759 	struct cvmx_pip_todo_entry_s cn52xx;
2760 	struct cvmx_pip_todo_entry_s cn52xxp1;
2761 	struct cvmx_pip_todo_entry_s cn56xx;
2762 	struct cvmx_pip_todo_entry_s cn56xxp1;
2763 	struct cvmx_pip_todo_entry_s cn58xx;
2764 	struct cvmx_pip_todo_entry_s cn58xxp1;
2765 	struct cvmx_pip_todo_entry_s cn61xx;
2766 	struct cvmx_pip_todo_entry_s cn63xx;
2767 	struct cvmx_pip_todo_entry_s cn63xxp1;
2768 	struct cvmx_pip_todo_entry_s cn66xx;
2769 	struct cvmx_pip_todo_entry_s cn68xx;
2770 	struct cvmx_pip_todo_entry_s cn68xxp1;
2771 	struct cvmx_pip_todo_entry_s cn70xx;
2772 	struct cvmx_pip_todo_entry_s cn70xxp1;
2773 	struct cvmx_pip_todo_entry_s cnf71xx;
2774 };
2775 
2776 typedef union cvmx_pip_todo_entry cvmx_pip_todo_entry_t;
2777 
2778 /**
2779  * cvmx_pip_vlan_etypes#
2780  */
2781 union cvmx_pip_vlan_etypesx {
2782 	u64 u64;
2783 	struct cvmx_pip_vlan_etypesx_s {
2784 		u64 type3 : 16;
2785 		u64 type2 : 16;
2786 		u64 type1 : 16;
2787 		u64 type0 : 16;
2788 	} s;
2789 	struct cvmx_pip_vlan_etypesx_s cn61xx;
2790 	struct cvmx_pip_vlan_etypesx_s cn66xx;
2791 	struct cvmx_pip_vlan_etypesx_s cn68xx;
2792 	struct cvmx_pip_vlan_etypesx_s cn70xx;
2793 	struct cvmx_pip_vlan_etypesx_s cn70xxp1;
2794 	struct cvmx_pip_vlan_etypesx_s cnf71xx;
2795 };
2796 
2797 typedef union cvmx_pip_vlan_etypesx cvmx_pip_vlan_etypesx_t;
2798 
2799 /**
2800  * cvmx_pip_xstat0_prt#
2801  *
2802  * PIP_XSTAT0_PRT = PIP_XSTAT_DRP_PKTS / PIP_XSTAT_DRP_OCTS
2803  *
2804  */
2805 union cvmx_pip_xstat0_prtx {
2806 	u64 u64;
2807 	struct cvmx_pip_xstat0_prtx_s {
2808 		u64 drp_pkts : 32;
2809 		u64 drp_octs : 32;
2810 	} s;
2811 	struct cvmx_pip_xstat0_prtx_s cn63xx;
2812 	struct cvmx_pip_xstat0_prtx_s cn63xxp1;
2813 	struct cvmx_pip_xstat0_prtx_s cn66xx;
2814 };
2815 
2816 typedef union cvmx_pip_xstat0_prtx cvmx_pip_xstat0_prtx_t;
2817 
2818 /**
2819  * cvmx_pip_xstat10_prt#
2820  *
2821  * PIP_XSTAT10_PRTX = PIP_XSTAT_L2_MCAST / PIP_XSTAT_L2_BCAST
2822  *
2823  */
2824 union cvmx_pip_xstat10_prtx {
2825 	u64 u64;
2826 	struct cvmx_pip_xstat10_prtx_s {
2827 		u64 bcast : 32;
2828 		u64 mcast : 32;
2829 	} s;
2830 	struct cvmx_pip_xstat10_prtx_s cn63xx;
2831 	struct cvmx_pip_xstat10_prtx_s cn63xxp1;
2832 	struct cvmx_pip_xstat10_prtx_s cn66xx;
2833 };
2834 
2835 typedef union cvmx_pip_xstat10_prtx cvmx_pip_xstat10_prtx_t;
2836 
2837 /**
2838  * cvmx_pip_xstat11_prt#
2839  *
2840  * PIP_XSTAT11_PRTX = PIP_XSTAT_L3_MCAST / PIP_XSTAT_L3_BCAST
2841  *
2842  */
2843 union cvmx_pip_xstat11_prtx {
2844 	u64 u64;
2845 	struct cvmx_pip_xstat11_prtx_s {
2846 		u64 bcast : 32;
2847 		u64 mcast : 32;
2848 	} s;
2849 	struct cvmx_pip_xstat11_prtx_s cn63xx;
2850 	struct cvmx_pip_xstat11_prtx_s cn63xxp1;
2851 	struct cvmx_pip_xstat11_prtx_s cn66xx;
2852 };
2853 
2854 typedef union cvmx_pip_xstat11_prtx cvmx_pip_xstat11_prtx_t;
2855 
2856 /**
2857  * cvmx_pip_xstat1_prt#
2858  *
2859  * PIP_XSTAT1_PRTX = PIP_XSTAT_OCTS
2860  *
2861  */
2862 union cvmx_pip_xstat1_prtx {
2863 	u64 u64;
2864 	struct cvmx_pip_xstat1_prtx_s {
2865 		u64 reserved_48_63 : 16;
2866 		u64 octs : 48;
2867 	} s;
2868 	struct cvmx_pip_xstat1_prtx_s cn63xx;
2869 	struct cvmx_pip_xstat1_prtx_s cn63xxp1;
2870 	struct cvmx_pip_xstat1_prtx_s cn66xx;
2871 };
2872 
2873 typedef union cvmx_pip_xstat1_prtx cvmx_pip_xstat1_prtx_t;
2874 
2875 /**
2876  * cvmx_pip_xstat2_prt#
2877  *
2878  * PIP_XSTAT2_PRTX = PIP_XSTAT_PKTS     / PIP_XSTAT_RAW
2879  *
2880  */
2881 union cvmx_pip_xstat2_prtx {
2882 	u64 u64;
2883 	struct cvmx_pip_xstat2_prtx_s {
2884 		u64 pkts : 32;
2885 		u64 raw : 32;
2886 	} s;
2887 	struct cvmx_pip_xstat2_prtx_s cn63xx;
2888 	struct cvmx_pip_xstat2_prtx_s cn63xxp1;
2889 	struct cvmx_pip_xstat2_prtx_s cn66xx;
2890 };
2891 
2892 typedef union cvmx_pip_xstat2_prtx cvmx_pip_xstat2_prtx_t;
2893 
2894 /**
2895  * cvmx_pip_xstat3_prt#
2896  *
2897  * PIP_XSTAT3_PRTX = PIP_XSTAT_BCST     / PIP_XSTAT_MCST
2898  *
2899  */
2900 union cvmx_pip_xstat3_prtx {
2901 	u64 u64;
2902 	struct cvmx_pip_xstat3_prtx_s {
2903 		u64 bcst : 32;
2904 		u64 mcst : 32;
2905 	} s;
2906 	struct cvmx_pip_xstat3_prtx_s cn63xx;
2907 	struct cvmx_pip_xstat3_prtx_s cn63xxp1;
2908 	struct cvmx_pip_xstat3_prtx_s cn66xx;
2909 };
2910 
2911 typedef union cvmx_pip_xstat3_prtx cvmx_pip_xstat3_prtx_t;
2912 
2913 /**
2914  * cvmx_pip_xstat4_prt#
2915  *
2916  * PIP_XSTAT4_PRTX = PIP_XSTAT_HIST1    / PIP_XSTAT_HIST0
2917  *
2918  */
2919 union cvmx_pip_xstat4_prtx {
2920 	u64 u64;
2921 	struct cvmx_pip_xstat4_prtx_s {
2922 		u64 h65to127 : 32;
2923 		u64 h64 : 32;
2924 	} s;
2925 	struct cvmx_pip_xstat4_prtx_s cn63xx;
2926 	struct cvmx_pip_xstat4_prtx_s cn63xxp1;
2927 	struct cvmx_pip_xstat4_prtx_s cn66xx;
2928 };
2929 
2930 typedef union cvmx_pip_xstat4_prtx cvmx_pip_xstat4_prtx_t;
2931 
2932 /**
2933  * cvmx_pip_xstat5_prt#
2934  *
2935  * PIP_XSTAT5_PRTX = PIP_XSTAT_HIST3    / PIP_XSTAT_HIST2
2936  *
2937  */
2938 union cvmx_pip_xstat5_prtx {
2939 	u64 u64;
2940 	struct cvmx_pip_xstat5_prtx_s {
2941 		u64 h256to511 : 32;
2942 		u64 h128to255 : 32;
2943 	} s;
2944 	struct cvmx_pip_xstat5_prtx_s cn63xx;
2945 	struct cvmx_pip_xstat5_prtx_s cn63xxp1;
2946 	struct cvmx_pip_xstat5_prtx_s cn66xx;
2947 };
2948 
2949 typedef union cvmx_pip_xstat5_prtx cvmx_pip_xstat5_prtx_t;
2950 
2951 /**
2952  * cvmx_pip_xstat6_prt#
2953  *
2954  * PIP_XSTAT6_PRTX = PIP_XSTAT_HIST5    / PIP_XSTAT_HIST4
2955  *
2956  */
2957 union cvmx_pip_xstat6_prtx {
2958 	u64 u64;
2959 	struct cvmx_pip_xstat6_prtx_s {
2960 		u64 h1024to1518 : 32;
2961 		u64 h512to1023 : 32;
2962 	} s;
2963 	struct cvmx_pip_xstat6_prtx_s cn63xx;
2964 	struct cvmx_pip_xstat6_prtx_s cn63xxp1;
2965 	struct cvmx_pip_xstat6_prtx_s cn66xx;
2966 };
2967 
2968 typedef union cvmx_pip_xstat6_prtx cvmx_pip_xstat6_prtx_t;
2969 
2970 /**
2971  * cvmx_pip_xstat7_prt#
2972  *
2973  * PIP_XSTAT7_PRTX = PIP_XSTAT_FCS      / PIP_XSTAT_HIST6
2974  *
2975  *
2976  * Notes:
2977  * DPI does not check FCS, therefore FCS will never increment on DPI ports 32-35
2978  * sRIO does not check FCS, therefore FCS will never increment on sRIO ports 40-47
2979  */
2980 union cvmx_pip_xstat7_prtx {
2981 	u64 u64;
2982 	struct cvmx_pip_xstat7_prtx_s {
2983 		u64 fcs : 32;
2984 		u64 h1519 : 32;
2985 	} s;
2986 	struct cvmx_pip_xstat7_prtx_s cn63xx;
2987 	struct cvmx_pip_xstat7_prtx_s cn63xxp1;
2988 	struct cvmx_pip_xstat7_prtx_s cn66xx;
2989 };
2990 
2991 typedef union cvmx_pip_xstat7_prtx cvmx_pip_xstat7_prtx_t;
2992 
2993 /**
2994  * cvmx_pip_xstat8_prt#
2995  *
2996  * PIP_XSTAT8_PRTX = PIP_XSTAT_FRAG     / PIP_XSTAT_UNDER
2997  *
2998  *
2999  * Notes:
3000  * DPI does not check FCS, therefore FRAG will never increment on DPI ports 32-35
3001  * sRIO does not check FCS, therefore FRAG will never increment on sRIO ports 40-47
3002  */
3003 union cvmx_pip_xstat8_prtx {
3004 	u64 u64;
3005 	struct cvmx_pip_xstat8_prtx_s {
3006 		u64 frag : 32;
3007 		u64 undersz : 32;
3008 	} s;
3009 	struct cvmx_pip_xstat8_prtx_s cn63xx;
3010 	struct cvmx_pip_xstat8_prtx_s cn63xxp1;
3011 	struct cvmx_pip_xstat8_prtx_s cn66xx;
3012 };
3013 
3014 typedef union cvmx_pip_xstat8_prtx cvmx_pip_xstat8_prtx_t;
3015 
3016 /**
3017  * cvmx_pip_xstat9_prt#
3018  *
3019  * PIP_XSTAT9_PRTX = PIP_XSTAT_JABBER   / PIP_XSTAT_OVER
3020  *
3021  *
3022  * Notes:
3023  * DPI does not check FCS, therefore JABBER will never increment on DPI ports 32-35
3024  * sRIO does not check FCS, therefore JABBER will never increment on sRIO ports 40-47 due to FCS errors
3025  * sRIO does use the JABBER opcode to communicate sRIO error, therefore JABBER can increment under the sRIO error conditions
3026  */
3027 union cvmx_pip_xstat9_prtx {
3028 	u64 u64;
3029 	struct cvmx_pip_xstat9_prtx_s {
3030 		u64 jabber : 32;
3031 		u64 oversz : 32;
3032 	} s;
3033 	struct cvmx_pip_xstat9_prtx_s cn63xx;
3034 	struct cvmx_pip_xstat9_prtx_s cn63xxp1;
3035 	struct cvmx_pip_xstat9_prtx_s cn66xx;
3036 };
3037 
3038 typedef union cvmx_pip_xstat9_prtx cvmx_pip_xstat9_prtx_t;
3039 
3040 #endif
3041