1 /***********************license start***************
2  * Author: Cavium Networks
3  *
4  * Contact: support@caviumnetworks.com
5  * This file is part of the OCTEON SDK
6  *
7  * Copyright (c) 2003-2008 Cavium Networks
8  *
9  * This file is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License, Version 2, as
11  * published by the Free Software Foundation.
12  *
13  * This file is distributed in the hope that it will be useful, but
14  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16  * NONINFRINGEMENT.  See the GNU General Public License for more
17  * details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this file; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22  * or visit http://www.gnu.org/licenses/.
23  *
24  * This file may also be available under a different license from Cavium.
25  * Contact Cavium Networks for more information
26  ***********************license end**************************************/
27 
28 #ifndef __CVMX_PIP_DEFS_H__
29 #define __CVMX_PIP_DEFS_H__
30 
31 /*
32  * Enumeration representing the amount of packet processing
33  * and validation performed by the input hardware.
34  */
35 enum cvmx_pip_port_parse_mode {
36 	/*
37 	 * Packet input doesn't perform any processing of the input
38 	 * packet.
39 	 */
40 	CVMX_PIP_PORT_CFG_MODE_NONE = 0ull,
41 	/*
42 	 * Full packet processing is performed with pointer starting
43 	 * at the L2 (ethernet MAC) header.
44 	 */
45 	CVMX_PIP_PORT_CFG_MODE_SKIPL2 = 1ull,
46 	/*
47 	 * Input packets are assumed to be IP.  Results from non IP
48 	 * packets is undefined. Pointers reference the beginning of
49 	 * the IP header.
50 	 */
51 	CVMX_PIP_PORT_CFG_MODE_SKIPIP = 2ull
52 };
53 
54 #define CVMX_PIP_BCK_PRS \
55 	 CVMX_ADD_IO_SEG(0x00011800A0000038ull)
56 #define CVMX_PIP_BIST_STATUS \
57 	 CVMX_ADD_IO_SEG(0x00011800A0000000ull)
58 #define CVMX_PIP_CRC_CTLX(offset) \
59 	 CVMX_ADD_IO_SEG(0x00011800A0000040ull + (((offset) & 1) * 8))
60 #define CVMX_PIP_CRC_IVX(offset) \
61 	 CVMX_ADD_IO_SEG(0x00011800A0000050ull + (((offset) & 1) * 8))
62 #define CVMX_PIP_DEC_IPSECX(offset) \
63 	 CVMX_ADD_IO_SEG(0x00011800A0000080ull + (((offset) & 3) * 8))
64 #define CVMX_PIP_DSA_SRC_GRP \
65 	 CVMX_ADD_IO_SEG(0x00011800A0000190ull)
66 #define CVMX_PIP_DSA_VID_GRP \
67 	 CVMX_ADD_IO_SEG(0x00011800A0000198ull)
68 #define CVMX_PIP_FRM_LEN_CHKX(offset) \
69 	 CVMX_ADD_IO_SEG(0x00011800A0000180ull + (((offset) & 1) * 8))
70 #define CVMX_PIP_GBL_CFG \
71 	 CVMX_ADD_IO_SEG(0x00011800A0000028ull)
72 #define CVMX_PIP_GBL_CTL \
73 	 CVMX_ADD_IO_SEG(0x00011800A0000020ull)
74 #define CVMX_PIP_HG_PRI_QOS \
75 	 CVMX_ADD_IO_SEG(0x00011800A00001A0ull)
76 #define CVMX_PIP_INT_EN \
77 	 CVMX_ADD_IO_SEG(0x00011800A0000010ull)
78 #define CVMX_PIP_INT_REG \
79 	 CVMX_ADD_IO_SEG(0x00011800A0000008ull)
80 #define CVMX_PIP_IP_OFFSET \
81 	 CVMX_ADD_IO_SEG(0x00011800A0000060ull)
82 #define CVMX_PIP_PRT_CFGX(offset) \
83 	 CVMX_ADD_IO_SEG(0x00011800A0000200ull + (((offset) & 63) * 8))
84 #define CVMX_PIP_PRT_TAGX(offset) \
85 	 CVMX_ADD_IO_SEG(0x00011800A0000400ull + (((offset) & 63) * 8))
86 #define CVMX_PIP_QOS_DIFFX(offset) \
87 	 CVMX_ADD_IO_SEG(0x00011800A0000600ull + (((offset) & 63) * 8))
88 #define CVMX_PIP_QOS_VLANX(offset) \
89 	 CVMX_ADD_IO_SEG(0x00011800A00000C0ull + (((offset) & 7) * 8))
90 #define CVMX_PIP_QOS_WATCHX(offset) \
91 	 CVMX_ADD_IO_SEG(0x00011800A0000100ull + (((offset) & 7) * 8))
92 #define CVMX_PIP_RAW_WORD \
93 	 CVMX_ADD_IO_SEG(0x00011800A00000B0ull)
94 #define CVMX_PIP_SFT_RST \
95 	 CVMX_ADD_IO_SEG(0x00011800A0000030ull)
96 #define CVMX_PIP_STAT0_PRTX(offset) \
97 	 CVMX_ADD_IO_SEG(0x00011800A0000800ull + (((offset) & 63) * 80))
98 #define CVMX_PIP_STAT1_PRTX(offset) \
99 	 CVMX_ADD_IO_SEG(0x00011800A0000808ull + (((offset) & 63) * 80))
100 #define CVMX_PIP_STAT2_PRTX(offset) \
101 	 CVMX_ADD_IO_SEG(0x00011800A0000810ull + (((offset) & 63) * 80))
102 #define CVMX_PIP_STAT3_PRTX(offset) \
103 	 CVMX_ADD_IO_SEG(0x00011800A0000818ull + (((offset) & 63) * 80))
104 #define CVMX_PIP_STAT4_PRTX(offset) \
105 	 CVMX_ADD_IO_SEG(0x00011800A0000820ull + (((offset) & 63) * 80))
106 #define CVMX_PIP_STAT5_PRTX(offset) \
107 	 CVMX_ADD_IO_SEG(0x00011800A0000828ull + (((offset) & 63) * 80))
108 #define CVMX_PIP_STAT6_PRTX(offset) \
109 	 CVMX_ADD_IO_SEG(0x00011800A0000830ull + (((offset) & 63) * 80))
110 #define CVMX_PIP_STAT7_PRTX(offset) \
111 	 CVMX_ADD_IO_SEG(0x00011800A0000838ull + (((offset) & 63) * 80))
112 #define CVMX_PIP_STAT8_PRTX(offset) \
113 	 CVMX_ADD_IO_SEG(0x00011800A0000840ull + (((offset) & 63) * 80))
114 #define CVMX_PIP_STAT9_PRTX(offset) \
115 	 CVMX_ADD_IO_SEG(0x00011800A0000848ull + (((offset) & 63) * 80))
116 #define CVMX_PIP_STAT_CTL \
117 	 CVMX_ADD_IO_SEG(0x00011800A0000018ull)
118 #define CVMX_PIP_STAT_INB_ERRSX(offset) \
119 	 CVMX_ADD_IO_SEG(0x00011800A0001A10ull + (((offset) & 63) * 32))
120 #define CVMX_PIP_STAT_INB_OCTSX(offset) \
121 	 CVMX_ADD_IO_SEG(0x00011800A0001A08ull + (((offset) & 63) * 32))
122 #define CVMX_PIP_STAT_INB_PKTSX(offset) \
123 	 CVMX_ADD_IO_SEG(0x00011800A0001A00ull + (((offset) & 63) * 32))
124 #define CVMX_PIP_TAG_INCX(offset) \
125 	 CVMX_ADD_IO_SEG(0x00011800A0001800ull + (((offset) & 63) * 8))
126 #define CVMX_PIP_TAG_MASK \
127 	 CVMX_ADD_IO_SEG(0x00011800A0000070ull)
128 #define CVMX_PIP_TAG_SECRET \
129 	 CVMX_ADD_IO_SEG(0x00011800A0000068ull)
130 #define CVMX_PIP_TODO_ENTRY \
131 	 CVMX_ADD_IO_SEG(0x00011800A0000078ull)
132 
133 union cvmx_pip_bck_prs {
134 	uint64_t u64;
135 	struct cvmx_pip_bck_prs_s {
136 		uint64_t bckprs:1;
137 		uint64_t reserved_13_62:50;
138 		uint64_t hiwater:5;
139 		uint64_t reserved_5_7:3;
140 		uint64_t lowater:5;
141 	} s;
142 	struct cvmx_pip_bck_prs_s cn38xx;
143 	struct cvmx_pip_bck_prs_s cn38xxp2;
144 	struct cvmx_pip_bck_prs_s cn56xx;
145 	struct cvmx_pip_bck_prs_s cn56xxp1;
146 	struct cvmx_pip_bck_prs_s cn58xx;
147 	struct cvmx_pip_bck_prs_s cn58xxp1;
148 };
149 
150 union cvmx_pip_bist_status {
151 	uint64_t u64;
152 	struct cvmx_pip_bist_status_s {
153 		uint64_t reserved_18_63:46;
154 		uint64_t bist:18;
155 	} s;
156 	struct cvmx_pip_bist_status_s cn30xx;
157 	struct cvmx_pip_bist_status_s cn31xx;
158 	struct cvmx_pip_bist_status_s cn38xx;
159 	struct cvmx_pip_bist_status_s cn38xxp2;
160 	struct cvmx_pip_bist_status_cn50xx {
161 		uint64_t reserved_17_63:47;
162 		uint64_t bist:17;
163 	} cn50xx;
164 	struct cvmx_pip_bist_status_s cn52xx;
165 	struct cvmx_pip_bist_status_s cn52xxp1;
166 	struct cvmx_pip_bist_status_s cn56xx;
167 	struct cvmx_pip_bist_status_s cn56xxp1;
168 	struct cvmx_pip_bist_status_s cn58xx;
169 	struct cvmx_pip_bist_status_s cn58xxp1;
170 };
171 
172 union cvmx_pip_crc_ctlx {
173 	uint64_t u64;
174 	struct cvmx_pip_crc_ctlx_s {
175 		uint64_t reserved_2_63:62;
176 		uint64_t invres:1;
177 		uint64_t reflect:1;
178 	} s;
179 	struct cvmx_pip_crc_ctlx_s cn38xx;
180 	struct cvmx_pip_crc_ctlx_s cn38xxp2;
181 	struct cvmx_pip_crc_ctlx_s cn58xx;
182 	struct cvmx_pip_crc_ctlx_s cn58xxp1;
183 };
184 
185 union cvmx_pip_crc_ivx {
186 	uint64_t u64;
187 	struct cvmx_pip_crc_ivx_s {
188 		uint64_t reserved_32_63:32;
189 		uint64_t iv:32;
190 	} s;
191 	struct cvmx_pip_crc_ivx_s cn38xx;
192 	struct cvmx_pip_crc_ivx_s cn38xxp2;
193 	struct cvmx_pip_crc_ivx_s cn58xx;
194 	struct cvmx_pip_crc_ivx_s cn58xxp1;
195 };
196 
197 union cvmx_pip_dec_ipsecx {
198 	uint64_t u64;
199 	struct cvmx_pip_dec_ipsecx_s {
200 		uint64_t reserved_18_63:46;
201 		uint64_t tcp:1;
202 		uint64_t udp:1;
203 		uint64_t dprt:16;
204 	} s;
205 	struct cvmx_pip_dec_ipsecx_s cn30xx;
206 	struct cvmx_pip_dec_ipsecx_s cn31xx;
207 	struct cvmx_pip_dec_ipsecx_s cn38xx;
208 	struct cvmx_pip_dec_ipsecx_s cn38xxp2;
209 	struct cvmx_pip_dec_ipsecx_s cn50xx;
210 	struct cvmx_pip_dec_ipsecx_s cn52xx;
211 	struct cvmx_pip_dec_ipsecx_s cn52xxp1;
212 	struct cvmx_pip_dec_ipsecx_s cn56xx;
213 	struct cvmx_pip_dec_ipsecx_s cn56xxp1;
214 	struct cvmx_pip_dec_ipsecx_s cn58xx;
215 	struct cvmx_pip_dec_ipsecx_s cn58xxp1;
216 };
217 
218 union cvmx_pip_dsa_src_grp {
219 	uint64_t u64;
220 	struct cvmx_pip_dsa_src_grp_s {
221 		uint64_t map15:4;
222 		uint64_t map14:4;
223 		uint64_t map13:4;
224 		uint64_t map12:4;
225 		uint64_t map11:4;
226 		uint64_t map10:4;
227 		uint64_t map9:4;
228 		uint64_t map8:4;
229 		uint64_t map7:4;
230 		uint64_t map6:4;
231 		uint64_t map5:4;
232 		uint64_t map4:4;
233 		uint64_t map3:4;
234 		uint64_t map2:4;
235 		uint64_t map1:4;
236 		uint64_t map0:4;
237 	} s;
238 	struct cvmx_pip_dsa_src_grp_s cn52xx;
239 	struct cvmx_pip_dsa_src_grp_s cn52xxp1;
240 	struct cvmx_pip_dsa_src_grp_s cn56xx;
241 };
242 
243 union cvmx_pip_dsa_vid_grp {
244 	uint64_t u64;
245 	struct cvmx_pip_dsa_vid_grp_s {
246 		uint64_t map15:4;
247 		uint64_t map14:4;
248 		uint64_t map13:4;
249 		uint64_t map12:4;
250 		uint64_t map11:4;
251 		uint64_t map10:4;
252 		uint64_t map9:4;
253 		uint64_t map8:4;
254 		uint64_t map7:4;
255 		uint64_t map6:4;
256 		uint64_t map5:4;
257 		uint64_t map4:4;
258 		uint64_t map3:4;
259 		uint64_t map2:4;
260 		uint64_t map1:4;
261 		uint64_t map0:4;
262 	} s;
263 	struct cvmx_pip_dsa_vid_grp_s cn52xx;
264 	struct cvmx_pip_dsa_vid_grp_s cn52xxp1;
265 	struct cvmx_pip_dsa_vid_grp_s cn56xx;
266 };
267 
268 union cvmx_pip_frm_len_chkx {
269 	uint64_t u64;
270 	struct cvmx_pip_frm_len_chkx_s {
271 		uint64_t reserved_32_63:32;
272 		uint64_t maxlen:16;
273 		uint64_t minlen:16;
274 	} s;
275 	struct cvmx_pip_frm_len_chkx_s cn50xx;
276 	struct cvmx_pip_frm_len_chkx_s cn52xx;
277 	struct cvmx_pip_frm_len_chkx_s cn52xxp1;
278 	struct cvmx_pip_frm_len_chkx_s cn56xx;
279 	struct cvmx_pip_frm_len_chkx_s cn56xxp1;
280 };
281 
282 union cvmx_pip_gbl_cfg {
283 	uint64_t u64;
284 	struct cvmx_pip_gbl_cfg_s {
285 		uint64_t reserved_19_63:45;
286 		uint64_t tag_syn:1;
287 		uint64_t ip6_udp:1;
288 		uint64_t max_l2:1;
289 		uint64_t reserved_11_15:5;
290 		uint64_t raw_shf:3;
291 		uint64_t reserved_3_7:5;
292 		uint64_t nip_shf:3;
293 	} s;
294 	struct cvmx_pip_gbl_cfg_s cn30xx;
295 	struct cvmx_pip_gbl_cfg_s cn31xx;
296 	struct cvmx_pip_gbl_cfg_s cn38xx;
297 	struct cvmx_pip_gbl_cfg_s cn38xxp2;
298 	struct cvmx_pip_gbl_cfg_s cn50xx;
299 	struct cvmx_pip_gbl_cfg_s cn52xx;
300 	struct cvmx_pip_gbl_cfg_s cn52xxp1;
301 	struct cvmx_pip_gbl_cfg_s cn56xx;
302 	struct cvmx_pip_gbl_cfg_s cn56xxp1;
303 	struct cvmx_pip_gbl_cfg_s cn58xx;
304 	struct cvmx_pip_gbl_cfg_s cn58xxp1;
305 };
306 
307 union cvmx_pip_gbl_ctl {
308 	uint64_t u64;
309 	struct cvmx_pip_gbl_ctl_s {
310 		uint64_t reserved_27_63:37;
311 		uint64_t dsa_grp_tvid:1;
312 		uint64_t dsa_grp_scmd:1;
313 		uint64_t dsa_grp_sid:1;
314 		uint64_t reserved_21_23:3;
315 		uint64_t ring_en:1;
316 		uint64_t reserved_17_19:3;
317 		uint64_t ignrs:1;
318 		uint64_t vs_wqe:1;
319 		uint64_t vs_qos:1;
320 		uint64_t l2_mal:1;
321 		uint64_t tcp_flag:1;
322 		uint64_t l4_len:1;
323 		uint64_t l4_chk:1;
324 		uint64_t l4_prt:1;
325 		uint64_t l4_mal:1;
326 		uint64_t reserved_6_7:2;
327 		uint64_t ip6_eext:2;
328 		uint64_t ip4_opts:1;
329 		uint64_t ip_hop:1;
330 		uint64_t ip_mal:1;
331 		uint64_t ip_chk:1;
332 	} s;
333 	struct cvmx_pip_gbl_ctl_cn30xx {
334 		uint64_t reserved_17_63:47;
335 		uint64_t ignrs:1;
336 		uint64_t vs_wqe:1;
337 		uint64_t vs_qos:1;
338 		uint64_t l2_mal:1;
339 		uint64_t tcp_flag:1;
340 		uint64_t l4_len:1;
341 		uint64_t l4_chk:1;
342 		uint64_t l4_prt:1;
343 		uint64_t l4_mal:1;
344 		uint64_t reserved_6_7:2;
345 		uint64_t ip6_eext:2;
346 		uint64_t ip4_opts:1;
347 		uint64_t ip_hop:1;
348 		uint64_t ip_mal:1;
349 		uint64_t ip_chk:1;
350 	} cn30xx;
351 	struct cvmx_pip_gbl_ctl_cn30xx cn31xx;
352 	struct cvmx_pip_gbl_ctl_cn30xx cn38xx;
353 	struct cvmx_pip_gbl_ctl_cn30xx cn38xxp2;
354 	struct cvmx_pip_gbl_ctl_cn30xx cn50xx;
355 	struct cvmx_pip_gbl_ctl_s cn52xx;
356 	struct cvmx_pip_gbl_ctl_s cn52xxp1;
357 	struct cvmx_pip_gbl_ctl_s cn56xx;
358 	struct cvmx_pip_gbl_ctl_cn56xxp1 {
359 		uint64_t reserved_21_63:43;
360 		uint64_t ring_en:1;
361 		uint64_t reserved_17_19:3;
362 		uint64_t ignrs:1;
363 		uint64_t vs_wqe:1;
364 		uint64_t vs_qos:1;
365 		uint64_t l2_mal:1;
366 		uint64_t tcp_flag:1;
367 		uint64_t l4_len:1;
368 		uint64_t l4_chk:1;
369 		uint64_t l4_prt:1;
370 		uint64_t l4_mal:1;
371 		uint64_t reserved_6_7:2;
372 		uint64_t ip6_eext:2;
373 		uint64_t ip4_opts:1;
374 		uint64_t ip_hop:1;
375 		uint64_t ip_mal:1;
376 		uint64_t ip_chk:1;
377 	} cn56xxp1;
378 	struct cvmx_pip_gbl_ctl_cn30xx cn58xx;
379 	struct cvmx_pip_gbl_ctl_cn30xx cn58xxp1;
380 };
381 
382 union cvmx_pip_hg_pri_qos {
383 	uint64_t u64;
384 	struct cvmx_pip_hg_pri_qos_s {
385 		uint64_t reserved_11_63:53;
386 		uint64_t qos:3;
387 		uint64_t reserved_6_7:2;
388 		uint64_t pri:6;
389 	} s;
390 	struct cvmx_pip_hg_pri_qos_s cn52xx;
391 	struct cvmx_pip_hg_pri_qos_s cn52xxp1;
392 	struct cvmx_pip_hg_pri_qos_s cn56xx;
393 };
394 
395 union cvmx_pip_int_en {
396 	uint64_t u64;
397 	struct cvmx_pip_int_en_s {
398 		uint64_t reserved_13_63:51;
399 		uint64_t punyerr:1;
400 		uint64_t lenerr:1;
401 		uint64_t maxerr:1;
402 		uint64_t minerr:1;
403 		uint64_t beperr:1;
404 		uint64_t feperr:1;
405 		uint64_t todoovr:1;
406 		uint64_t skprunt:1;
407 		uint64_t badtag:1;
408 		uint64_t prtnxa:1;
409 		uint64_t bckprs:1;
410 		uint64_t crcerr:1;
411 		uint64_t pktdrp:1;
412 	} s;
413 	struct cvmx_pip_int_en_cn30xx {
414 		uint64_t reserved_9_63:55;
415 		uint64_t beperr:1;
416 		uint64_t feperr:1;
417 		uint64_t todoovr:1;
418 		uint64_t skprunt:1;
419 		uint64_t badtag:1;
420 		uint64_t prtnxa:1;
421 		uint64_t bckprs:1;
422 		uint64_t crcerr:1;
423 		uint64_t pktdrp:1;
424 	} cn30xx;
425 	struct cvmx_pip_int_en_cn30xx cn31xx;
426 	struct cvmx_pip_int_en_cn30xx cn38xx;
427 	struct cvmx_pip_int_en_cn30xx cn38xxp2;
428 	struct cvmx_pip_int_en_cn50xx {
429 		uint64_t reserved_12_63:52;
430 		uint64_t lenerr:1;
431 		uint64_t maxerr:1;
432 		uint64_t minerr:1;
433 		uint64_t beperr:1;
434 		uint64_t feperr:1;
435 		uint64_t todoovr:1;
436 		uint64_t skprunt:1;
437 		uint64_t badtag:1;
438 		uint64_t prtnxa:1;
439 		uint64_t bckprs:1;
440 		uint64_t reserved_1_1:1;
441 		uint64_t pktdrp:1;
442 	} cn50xx;
443 	struct cvmx_pip_int_en_cn52xx {
444 		uint64_t reserved_13_63:51;
445 		uint64_t punyerr:1;
446 		uint64_t lenerr:1;
447 		uint64_t maxerr:1;
448 		uint64_t minerr:1;
449 		uint64_t beperr:1;
450 		uint64_t feperr:1;
451 		uint64_t todoovr:1;
452 		uint64_t skprunt:1;
453 		uint64_t badtag:1;
454 		uint64_t prtnxa:1;
455 		uint64_t bckprs:1;
456 		uint64_t reserved_1_1:1;
457 		uint64_t pktdrp:1;
458 	} cn52xx;
459 	struct cvmx_pip_int_en_cn52xx cn52xxp1;
460 	struct cvmx_pip_int_en_s cn56xx;
461 	struct cvmx_pip_int_en_cn56xxp1 {
462 		uint64_t reserved_12_63:52;
463 		uint64_t lenerr:1;
464 		uint64_t maxerr:1;
465 		uint64_t minerr:1;
466 		uint64_t beperr:1;
467 		uint64_t feperr:1;
468 		uint64_t todoovr:1;
469 		uint64_t skprunt:1;
470 		uint64_t badtag:1;
471 		uint64_t prtnxa:1;
472 		uint64_t bckprs:1;
473 		uint64_t crcerr:1;
474 		uint64_t pktdrp:1;
475 	} cn56xxp1;
476 	struct cvmx_pip_int_en_cn58xx {
477 		uint64_t reserved_13_63:51;
478 		uint64_t punyerr:1;
479 		uint64_t reserved_9_11:3;
480 		uint64_t beperr:1;
481 		uint64_t feperr:1;
482 		uint64_t todoovr:1;
483 		uint64_t skprunt:1;
484 		uint64_t badtag:1;
485 		uint64_t prtnxa:1;
486 		uint64_t bckprs:1;
487 		uint64_t crcerr:1;
488 		uint64_t pktdrp:1;
489 	} cn58xx;
490 	struct cvmx_pip_int_en_cn30xx cn58xxp1;
491 };
492 
493 union cvmx_pip_int_reg {
494 	uint64_t u64;
495 	struct cvmx_pip_int_reg_s {
496 		uint64_t reserved_13_63:51;
497 		uint64_t punyerr:1;
498 		uint64_t lenerr:1;
499 		uint64_t maxerr:1;
500 		uint64_t minerr:1;
501 		uint64_t beperr:1;
502 		uint64_t feperr:1;
503 		uint64_t todoovr:1;
504 		uint64_t skprunt:1;
505 		uint64_t badtag:1;
506 		uint64_t prtnxa:1;
507 		uint64_t bckprs:1;
508 		uint64_t crcerr:1;
509 		uint64_t pktdrp:1;
510 	} s;
511 	struct cvmx_pip_int_reg_cn30xx {
512 		uint64_t reserved_9_63:55;
513 		uint64_t beperr:1;
514 		uint64_t feperr:1;
515 		uint64_t todoovr:1;
516 		uint64_t skprunt:1;
517 		uint64_t badtag:1;
518 		uint64_t prtnxa:1;
519 		uint64_t bckprs:1;
520 		uint64_t crcerr:1;
521 		uint64_t pktdrp:1;
522 	} cn30xx;
523 	struct cvmx_pip_int_reg_cn30xx cn31xx;
524 	struct cvmx_pip_int_reg_cn30xx cn38xx;
525 	struct cvmx_pip_int_reg_cn30xx cn38xxp2;
526 	struct cvmx_pip_int_reg_cn50xx {
527 		uint64_t reserved_12_63:52;
528 		uint64_t lenerr:1;
529 		uint64_t maxerr:1;
530 		uint64_t minerr:1;
531 		uint64_t beperr:1;
532 		uint64_t feperr:1;
533 		uint64_t todoovr:1;
534 		uint64_t skprunt:1;
535 		uint64_t badtag:1;
536 		uint64_t prtnxa:1;
537 		uint64_t bckprs:1;
538 		uint64_t reserved_1_1:1;
539 		uint64_t pktdrp:1;
540 	} cn50xx;
541 	struct cvmx_pip_int_reg_cn52xx {
542 		uint64_t reserved_13_63:51;
543 		uint64_t punyerr:1;
544 		uint64_t lenerr:1;
545 		uint64_t maxerr:1;
546 		uint64_t minerr:1;
547 		uint64_t beperr:1;
548 		uint64_t feperr:1;
549 		uint64_t todoovr:1;
550 		uint64_t skprunt:1;
551 		uint64_t badtag:1;
552 		uint64_t prtnxa:1;
553 		uint64_t bckprs:1;
554 		uint64_t reserved_1_1:1;
555 		uint64_t pktdrp:1;
556 	} cn52xx;
557 	struct cvmx_pip_int_reg_cn52xx cn52xxp1;
558 	struct cvmx_pip_int_reg_s cn56xx;
559 	struct cvmx_pip_int_reg_cn56xxp1 {
560 		uint64_t reserved_12_63:52;
561 		uint64_t lenerr:1;
562 		uint64_t maxerr:1;
563 		uint64_t minerr:1;
564 		uint64_t beperr:1;
565 		uint64_t feperr:1;
566 		uint64_t todoovr:1;
567 		uint64_t skprunt:1;
568 		uint64_t badtag:1;
569 		uint64_t prtnxa:1;
570 		uint64_t bckprs:1;
571 		uint64_t crcerr:1;
572 		uint64_t pktdrp:1;
573 	} cn56xxp1;
574 	struct cvmx_pip_int_reg_cn58xx {
575 		uint64_t reserved_13_63:51;
576 		uint64_t punyerr:1;
577 		uint64_t reserved_9_11:3;
578 		uint64_t beperr:1;
579 		uint64_t feperr:1;
580 		uint64_t todoovr:1;
581 		uint64_t skprunt:1;
582 		uint64_t badtag:1;
583 		uint64_t prtnxa:1;
584 		uint64_t bckprs:1;
585 		uint64_t crcerr:1;
586 		uint64_t pktdrp:1;
587 	} cn58xx;
588 	struct cvmx_pip_int_reg_cn30xx cn58xxp1;
589 };
590 
591 union cvmx_pip_ip_offset {
592 	uint64_t u64;
593 	struct cvmx_pip_ip_offset_s {
594 		uint64_t reserved_3_63:61;
595 		uint64_t offset:3;
596 	} s;
597 	struct cvmx_pip_ip_offset_s cn30xx;
598 	struct cvmx_pip_ip_offset_s cn31xx;
599 	struct cvmx_pip_ip_offset_s cn38xx;
600 	struct cvmx_pip_ip_offset_s cn38xxp2;
601 	struct cvmx_pip_ip_offset_s cn50xx;
602 	struct cvmx_pip_ip_offset_s cn52xx;
603 	struct cvmx_pip_ip_offset_s cn52xxp1;
604 	struct cvmx_pip_ip_offset_s cn56xx;
605 	struct cvmx_pip_ip_offset_s cn56xxp1;
606 	struct cvmx_pip_ip_offset_s cn58xx;
607 	struct cvmx_pip_ip_offset_s cn58xxp1;
608 };
609 
610 union cvmx_pip_prt_cfgx {
611 	uint64_t u64;
612 	struct cvmx_pip_prt_cfgx_s {
613 		uint64_t reserved_53_63:11;
614 		uint64_t pad_len:1;
615 		uint64_t vlan_len:1;
616 		uint64_t lenerr_en:1;
617 		uint64_t maxerr_en:1;
618 		uint64_t minerr_en:1;
619 		uint64_t grp_wat_47:4;
620 		uint64_t qos_wat_47:4;
621 		uint64_t reserved_37_39:3;
622 		uint64_t rawdrp:1;
623 		uint64_t tag_inc:2;
624 		uint64_t dyn_rs:1;
625 		uint64_t inst_hdr:1;
626 		uint64_t grp_wat:4;
627 		uint64_t hg_qos:1;
628 		uint64_t qos:3;
629 		uint64_t qos_wat:4;
630 		uint64_t qos_vsel:1;
631 		uint64_t qos_vod:1;
632 		uint64_t qos_diff:1;
633 		uint64_t qos_vlan:1;
634 		uint64_t reserved_13_15:3;
635 		uint64_t crc_en:1;
636 		uint64_t higig_en:1;
637 		uint64_t dsa_en:1;
638 		uint64_t mode:2;
639 		uint64_t reserved_7_7:1;
640 		uint64_t skip:7;
641 	} s;
642 	struct cvmx_pip_prt_cfgx_cn30xx {
643 		uint64_t reserved_37_63:27;
644 		uint64_t rawdrp:1;
645 		uint64_t tag_inc:2;
646 		uint64_t dyn_rs:1;
647 		uint64_t inst_hdr:1;
648 		uint64_t grp_wat:4;
649 		uint64_t reserved_27_27:1;
650 		uint64_t qos:3;
651 		uint64_t qos_wat:4;
652 		uint64_t reserved_18_19:2;
653 		uint64_t qos_diff:1;
654 		uint64_t qos_vlan:1;
655 		uint64_t reserved_10_15:6;
656 		uint64_t mode:2;
657 		uint64_t reserved_7_7:1;
658 		uint64_t skip:7;
659 	} cn30xx;
660 	struct cvmx_pip_prt_cfgx_cn30xx cn31xx;
661 	struct cvmx_pip_prt_cfgx_cn38xx {
662 		uint64_t reserved_37_63:27;
663 		uint64_t rawdrp:1;
664 		uint64_t tag_inc:2;
665 		uint64_t dyn_rs:1;
666 		uint64_t inst_hdr:1;
667 		uint64_t grp_wat:4;
668 		uint64_t reserved_27_27:1;
669 		uint64_t qos:3;
670 		uint64_t qos_wat:4;
671 		uint64_t reserved_18_19:2;
672 		uint64_t qos_diff:1;
673 		uint64_t qos_vlan:1;
674 		uint64_t reserved_13_15:3;
675 		uint64_t crc_en:1;
676 		uint64_t reserved_10_11:2;
677 		uint64_t mode:2;
678 		uint64_t reserved_7_7:1;
679 		uint64_t skip:7;
680 	} cn38xx;
681 	struct cvmx_pip_prt_cfgx_cn38xx cn38xxp2;
682 	struct cvmx_pip_prt_cfgx_cn50xx {
683 		uint64_t reserved_53_63:11;
684 		uint64_t pad_len:1;
685 		uint64_t vlan_len:1;
686 		uint64_t lenerr_en:1;
687 		uint64_t maxerr_en:1;
688 		uint64_t minerr_en:1;
689 		uint64_t grp_wat_47:4;
690 		uint64_t qos_wat_47:4;
691 		uint64_t reserved_37_39:3;
692 		uint64_t rawdrp:1;
693 		uint64_t tag_inc:2;
694 		uint64_t dyn_rs:1;
695 		uint64_t inst_hdr:1;
696 		uint64_t grp_wat:4;
697 		uint64_t reserved_27_27:1;
698 		uint64_t qos:3;
699 		uint64_t qos_wat:4;
700 		uint64_t reserved_19_19:1;
701 		uint64_t qos_vod:1;
702 		uint64_t qos_diff:1;
703 		uint64_t qos_vlan:1;
704 		uint64_t reserved_13_15:3;
705 		uint64_t crc_en:1;
706 		uint64_t reserved_10_11:2;
707 		uint64_t mode:2;
708 		uint64_t reserved_7_7:1;
709 		uint64_t skip:7;
710 	} cn50xx;
711 	struct cvmx_pip_prt_cfgx_s cn52xx;
712 	struct cvmx_pip_prt_cfgx_s cn52xxp1;
713 	struct cvmx_pip_prt_cfgx_s cn56xx;
714 	struct cvmx_pip_prt_cfgx_cn50xx cn56xxp1;
715 	struct cvmx_pip_prt_cfgx_cn58xx {
716 		uint64_t reserved_37_63:27;
717 		uint64_t rawdrp:1;
718 		uint64_t tag_inc:2;
719 		uint64_t dyn_rs:1;
720 		uint64_t inst_hdr:1;
721 		uint64_t grp_wat:4;
722 		uint64_t reserved_27_27:1;
723 		uint64_t qos:3;
724 		uint64_t qos_wat:4;
725 		uint64_t reserved_19_19:1;
726 		uint64_t qos_vod:1;
727 		uint64_t qos_diff:1;
728 		uint64_t qos_vlan:1;
729 		uint64_t reserved_13_15:3;
730 		uint64_t crc_en:1;
731 		uint64_t reserved_10_11:2;
732 		uint64_t mode:2;
733 		uint64_t reserved_7_7:1;
734 		uint64_t skip:7;
735 	} cn58xx;
736 	struct cvmx_pip_prt_cfgx_cn58xx cn58xxp1;
737 };
738 
739 union cvmx_pip_prt_tagx {
740 	uint64_t u64;
741 	struct cvmx_pip_prt_tagx_s {
742 		uint64_t reserved_40_63:24;
743 		uint64_t grptagbase:4;
744 		uint64_t grptagmask:4;
745 		uint64_t grptag:1;
746 		uint64_t grptag_mskip:1;
747 		uint64_t tag_mode:2;
748 		uint64_t inc_vs:2;
749 		uint64_t inc_vlan:1;
750 		uint64_t inc_prt_flag:1;
751 		uint64_t ip6_dprt_flag:1;
752 		uint64_t ip4_dprt_flag:1;
753 		uint64_t ip6_sprt_flag:1;
754 		uint64_t ip4_sprt_flag:1;
755 		uint64_t ip6_nxth_flag:1;
756 		uint64_t ip4_pctl_flag:1;
757 		uint64_t ip6_dst_flag:1;
758 		uint64_t ip4_dst_flag:1;
759 		uint64_t ip6_src_flag:1;
760 		uint64_t ip4_src_flag:1;
761 		uint64_t tcp6_tag_type:2;
762 		uint64_t tcp4_tag_type:2;
763 		uint64_t ip6_tag_type:2;
764 		uint64_t ip4_tag_type:2;
765 		uint64_t non_tag_type:2;
766 		uint64_t grp:4;
767 	} s;
768 	struct cvmx_pip_prt_tagx_cn30xx {
769 		uint64_t reserved_40_63:24;
770 		uint64_t grptagbase:4;
771 		uint64_t grptagmask:4;
772 		uint64_t grptag:1;
773 		uint64_t reserved_30_30:1;
774 		uint64_t tag_mode:2;
775 		uint64_t inc_vs:2;
776 		uint64_t inc_vlan:1;
777 		uint64_t inc_prt_flag:1;
778 		uint64_t ip6_dprt_flag:1;
779 		uint64_t ip4_dprt_flag:1;
780 		uint64_t ip6_sprt_flag:1;
781 		uint64_t ip4_sprt_flag:1;
782 		uint64_t ip6_nxth_flag:1;
783 		uint64_t ip4_pctl_flag:1;
784 		uint64_t ip6_dst_flag:1;
785 		uint64_t ip4_dst_flag:1;
786 		uint64_t ip6_src_flag:1;
787 		uint64_t ip4_src_flag:1;
788 		uint64_t tcp6_tag_type:2;
789 		uint64_t tcp4_tag_type:2;
790 		uint64_t ip6_tag_type:2;
791 		uint64_t ip4_tag_type:2;
792 		uint64_t non_tag_type:2;
793 		uint64_t grp:4;
794 	} cn30xx;
795 	struct cvmx_pip_prt_tagx_cn30xx cn31xx;
796 	struct cvmx_pip_prt_tagx_cn30xx cn38xx;
797 	struct cvmx_pip_prt_tagx_cn30xx cn38xxp2;
798 	struct cvmx_pip_prt_tagx_s cn50xx;
799 	struct cvmx_pip_prt_tagx_s cn52xx;
800 	struct cvmx_pip_prt_tagx_s cn52xxp1;
801 	struct cvmx_pip_prt_tagx_s cn56xx;
802 	struct cvmx_pip_prt_tagx_s cn56xxp1;
803 	struct cvmx_pip_prt_tagx_cn30xx cn58xx;
804 	struct cvmx_pip_prt_tagx_cn30xx cn58xxp1;
805 };
806 
807 union cvmx_pip_qos_diffx {
808 	uint64_t u64;
809 	struct cvmx_pip_qos_diffx_s {
810 		uint64_t reserved_3_63:61;
811 		uint64_t qos:3;
812 	} s;
813 	struct cvmx_pip_qos_diffx_s cn30xx;
814 	struct cvmx_pip_qos_diffx_s cn31xx;
815 	struct cvmx_pip_qos_diffx_s cn38xx;
816 	struct cvmx_pip_qos_diffx_s cn38xxp2;
817 	struct cvmx_pip_qos_diffx_s cn50xx;
818 	struct cvmx_pip_qos_diffx_s cn52xx;
819 	struct cvmx_pip_qos_diffx_s cn52xxp1;
820 	struct cvmx_pip_qos_diffx_s cn56xx;
821 	struct cvmx_pip_qos_diffx_s cn56xxp1;
822 	struct cvmx_pip_qos_diffx_s cn58xx;
823 	struct cvmx_pip_qos_diffx_s cn58xxp1;
824 };
825 
826 union cvmx_pip_qos_vlanx {
827 	uint64_t u64;
828 	struct cvmx_pip_qos_vlanx_s {
829 		uint64_t reserved_7_63:57;
830 		uint64_t qos1:3;
831 		uint64_t reserved_3_3:1;
832 		uint64_t qos:3;
833 	} s;
834 	struct cvmx_pip_qos_vlanx_cn30xx {
835 		uint64_t reserved_3_63:61;
836 		uint64_t qos:3;
837 	} cn30xx;
838 	struct cvmx_pip_qos_vlanx_cn30xx cn31xx;
839 	struct cvmx_pip_qos_vlanx_cn30xx cn38xx;
840 	struct cvmx_pip_qos_vlanx_cn30xx cn38xxp2;
841 	struct cvmx_pip_qos_vlanx_cn30xx cn50xx;
842 	struct cvmx_pip_qos_vlanx_s cn52xx;
843 	struct cvmx_pip_qos_vlanx_s cn52xxp1;
844 	struct cvmx_pip_qos_vlanx_s cn56xx;
845 	struct cvmx_pip_qos_vlanx_cn30xx cn56xxp1;
846 	struct cvmx_pip_qos_vlanx_cn30xx cn58xx;
847 	struct cvmx_pip_qos_vlanx_cn30xx cn58xxp1;
848 };
849 
850 union cvmx_pip_qos_watchx {
851 	uint64_t u64;
852 	struct cvmx_pip_qos_watchx_s {
853 		uint64_t reserved_48_63:16;
854 		uint64_t mask:16;
855 		uint64_t reserved_28_31:4;
856 		uint64_t grp:4;
857 		uint64_t reserved_23_23:1;
858 		uint64_t qos:3;
859 		uint64_t reserved_19_19:1;
860 		uint64_t match_type:3;
861 		uint64_t match_value:16;
862 	} s;
863 	struct cvmx_pip_qos_watchx_cn30xx {
864 		uint64_t reserved_48_63:16;
865 		uint64_t mask:16;
866 		uint64_t reserved_28_31:4;
867 		uint64_t grp:4;
868 		uint64_t reserved_23_23:1;
869 		uint64_t qos:3;
870 		uint64_t reserved_18_19:2;
871 		uint64_t match_type:2;
872 		uint64_t match_value:16;
873 	} cn30xx;
874 	struct cvmx_pip_qos_watchx_cn30xx cn31xx;
875 	struct cvmx_pip_qos_watchx_cn30xx cn38xx;
876 	struct cvmx_pip_qos_watchx_cn30xx cn38xxp2;
877 	struct cvmx_pip_qos_watchx_s cn50xx;
878 	struct cvmx_pip_qos_watchx_s cn52xx;
879 	struct cvmx_pip_qos_watchx_s cn52xxp1;
880 	struct cvmx_pip_qos_watchx_s cn56xx;
881 	struct cvmx_pip_qos_watchx_s cn56xxp1;
882 	struct cvmx_pip_qos_watchx_cn30xx cn58xx;
883 	struct cvmx_pip_qos_watchx_cn30xx cn58xxp1;
884 };
885 
886 union cvmx_pip_raw_word {
887 	uint64_t u64;
888 	struct cvmx_pip_raw_word_s {
889 		uint64_t reserved_56_63:8;
890 		uint64_t word:56;
891 	} s;
892 	struct cvmx_pip_raw_word_s cn30xx;
893 	struct cvmx_pip_raw_word_s cn31xx;
894 	struct cvmx_pip_raw_word_s cn38xx;
895 	struct cvmx_pip_raw_word_s cn38xxp2;
896 	struct cvmx_pip_raw_word_s cn50xx;
897 	struct cvmx_pip_raw_word_s cn52xx;
898 	struct cvmx_pip_raw_word_s cn52xxp1;
899 	struct cvmx_pip_raw_word_s cn56xx;
900 	struct cvmx_pip_raw_word_s cn56xxp1;
901 	struct cvmx_pip_raw_word_s cn58xx;
902 	struct cvmx_pip_raw_word_s cn58xxp1;
903 };
904 
905 union cvmx_pip_sft_rst {
906 	uint64_t u64;
907 	struct cvmx_pip_sft_rst_s {
908 		uint64_t reserved_1_63:63;
909 		uint64_t rst:1;
910 	} s;
911 	struct cvmx_pip_sft_rst_s cn30xx;
912 	struct cvmx_pip_sft_rst_s cn31xx;
913 	struct cvmx_pip_sft_rst_s cn38xx;
914 	struct cvmx_pip_sft_rst_s cn50xx;
915 	struct cvmx_pip_sft_rst_s cn52xx;
916 	struct cvmx_pip_sft_rst_s cn52xxp1;
917 	struct cvmx_pip_sft_rst_s cn56xx;
918 	struct cvmx_pip_sft_rst_s cn56xxp1;
919 	struct cvmx_pip_sft_rst_s cn58xx;
920 	struct cvmx_pip_sft_rst_s cn58xxp1;
921 };
922 
923 union cvmx_pip_stat0_prtx {
924 	uint64_t u64;
925 	struct cvmx_pip_stat0_prtx_s {
926 		uint64_t drp_pkts:32;
927 		uint64_t drp_octs:32;
928 	} s;
929 	struct cvmx_pip_stat0_prtx_s cn30xx;
930 	struct cvmx_pip_stat0_prtx_s cn31xx;
931 	struct cvmx_pip_stat0_prtx_s cn38xx;
932 	struct cvmx_pip_stat0_prtx_s cn38xxp2;
933 	struct cvmx_pip_stat0_prtx_s cn50xx;
934 	struct cvmx_pip_stat0_prtx_s cn52xx;
935 	struct cvmx_pip_stat0_prtx_s cn52xxp1;
936 	struct cvmx_pip_stat0_prtx_s cn56xx;
937 	struct cvmx_pip_stat0_prtx_s cn56xxp1;
938 	struct cvmx_pip_stat0_prtx_s cn58xx;
939 	struct cvmx_pip_stat0_prtx_s cn58xxp1;
940 };
941 
942 union cvmx_pip_stat1_prtx {
943 	uint64_t u64;
944 	struct cvmx_pip_stat1_prtx_s {
945 		uint64_t reserved_48_63:16;
946 		uint64_t octs:48;
947 	} s;
948 	struct cvmx_pip_stat1_prtx_s cn30xx;
949 	struct cvmx_pip_stat1_prtx_s cn31xx;
950 	struct cvmx_pip_stat1_prtx_s cn38xx;
951 	struct cvmx_pip_stat1_prtx_s cn38xxp2;
952 	struct cvmx_pip_stat1_prtx_s cn50xx;
953 	struct cvmx_pip_stat1_prtx_s cn52xx;
954 	struct cvmx_pip_stat1_prtx_s cn52xxp1;
955 	struct cvmx_pip_stat1_prtx_s cn56xx;
956 	struct cvmx_pip_stat1_prtx_s cn56xxp1;
957 	struct cvmx_pip_stat1_prtx_s cn58xx;
958 	struct cvmx_pip_stat1_prtx_s cn58xxp1;
959 };
960 
961 union cvmx_pip_stat2_prtx {
962 	uint64_t u64;
963 	struct cvmx_pip_stat2_prtx_s {
964 		uint64_t pkts:32;
965 		uint64_t raw:32;
966 	} s;
967 	struct cvmx_pip_stat2_prtx_s cn30xx;
968 	struct cvmx_pip_stat2_prtx_s cn31xx;
969 	struct cvmx_pip_stat2_prtx_s cn38xx;
970 	struct cvmx_pip_stat2_prtx_s cn38xxp2;
971 	struct cvmx_pip_stat2_prtx_s cn50xx;
972 	struct cvmx_pip_stat2_prtx_s cn52xx;
973 	struct cvmx_pip_stat2_prtx_s cn52xxp1;
974 	struct cvmx_pip_stat2_prtx_s cn56xx;
975 	struct cvmx_pip_stat2_prtx_s cn56xxp1;
976 	struct cvmx_pip_stat2_prtx_s cn58xx;
977 	struct cvmx_pip_stat2_prtx_s cn58xxp1;
978 };
979 
980 union cvmx_pip_stat3_prtx {
981 	uint64_t u64;
982 	struct cvmx_pip_stat3_prtx_s {
983 		uint64_t bcst:32;
984 		uint64_t mcst:32;
985 	} s;
986 	struct cvmx_pip_stat3_prtx_s cn30xx;
987 	struct cvmx_pip_stat3_prtx_s cn31xx;
988 	struct cvmx_pip_stat3_prtx_s cn38xx;
989 	struct cvmx_pip_stat3_prtx_s cn38xxp2;
990 	struct cvmx_pip_stat3_prtx_s cn50xx;
991 	struct cvmx_pip_stat3_prtx_s cn52xx;
992 	struct cvmx_pip_stat3_prtx_s cn52xxp1;
993 	struct cvmx_pip_stat3_prtx_s cn56xx;
994 	struct cvmx_pip_stat3_prtx_s cn56xxp1;
995 	struct cvmx_pip_stat3_prtx_s cn58xx;
996 	struct cvmx_pip_stat3_prtx_s cn58xxp1;
997 };
998 
999 union cvmx_pip_stat4_prtx {
1000 	uint64_t u64;
1001 	struct cvmx_pip_stat4_prtx_s {
1002 		uint64_t h65to127:32;
1003 		uint64_t h64:32;
1004 	} s;
1005 	struct cvmx_pip_stat4_prtx_s cn30xx;
1006 	struct cvmx_pip_stat4_prtx_s cn31xx;
1007 	struct cvmx_pip_stat4_prtx_s cn38xx;
1008 	struct cvmx_pip_stat4_prtx_s cn38xxp2;
1009 	struct cvmx_pip_stat4_prtx_s cn50xx;
1010 	struct cvmx_pip_stat4_prtx_s cn52xx;
1011 	struct cvmx_pip_stat4_prtx_s cn52xxp1;
1012 	struct cvmx_pip_stat4_prtx_s cn56xx;
1013 	struct cvmx_pip_stat4_prtx_s cn56xxp1;
1014 	struct cvmx_pip_stat4_prtx_s cn58xx;
1015 	struct cvmx_pip_stat4_prtx_s cn58xxp1;
1016 };
1017 
1018 union cvmx_pip_stat5_prtx {
1019 	uint64_t u64;
1020 	struct cvmx_pip_stat5_prtx_s {
1021 		uint64_t h256to511:32;
1022 		uint64_t h128to255:32;
1023 	} s;
1024 	struct cvmx_pip_stat5_prtx_s cn30xx;
1025 	struct cvmx_pip_stat5_prtx_s cn31xx;
1026 	struct cvmx_pip_stat5_prtx_s cn38xx;
1027 	struct cvmx_pip_stat5_prtx_s cn38xxp2;
1028 	struct cvmx_pip_stat5_prtx_s cn50xx;
1029 	struct cvmx_pip_stat5_prtx_s cn52xx;
1030 	struct cvmx_pip_stat5_prtx_s cn52xxp1;
1031 	struct cvmx_pip_stat5_prtx_s cn56xx;
1032 	struct cvmx_pip_stat5_prtx_s cn56xxp1;
1033 	struct cvmx_pip_stat5_prtx_s cn58xx;
1034 	struct cvmx_pip_stat5_prtx_s cn58xxp1;
1035 };
1036 
1037 union cvmx_pip_stat6_prtx {
1038 	uint64_t u64;
1039 	struct cvmx_pip_stat6_prtx_s {
1040 		uint64_t h1024to1518:32;
1041 		uint64_t h512to1023:32;
1042 	} s;
1043 	struct cvmx_pip_stat6_prtx_s cn30xx;
1044 	struct cvmx_pip_stat6_prtx_s cn31xx;
1045 	struct cvmx_pip_stat6_prtx_s cn38xx;
1046 	struct cvmx_pip_stat6_prtx_s cn38xxp2;
1047 	struct cvmx_pip_stat6_prtx_s cn50xx;
1048 	struct cvmx_pip_stat6_prtx_s cn52xx;
1049 	struct cvmx_pip_stat6_prtx_s cn52xxp1;
1050 	struct cvmx_pip_stat6_prtx_s cn56xx;
1051 	struct cvmx_pip_stat6_prtx_s cn56xxp1;
1052 	struct cvmx_pip_stat6_prtx_s cn58xx;
1053 	struct cvmx_pip_stat6_prtx_s cn58xxp1;
1054 };
1055 
1056 union cvmx_pip_stat7_prtx {
1057 	uint64_t u64;
1058 	struct cvmx_pip_stat7_prtx_s {
1059 		uint64_t fcs:32;
1060 		uint64_t h1519:32;
1061 	} s;
1062 	struct cvmx_pip_stat7_prtx_s cn30xx;
1063 	struct cvmx_pip_stat7_prtx_s cn31xx;
1064 	struct cvmx_pip_stat7_prtx_s cn38xx;
1065 	struct cvmx_pip_stat7_prtx_s cn38xxp2;
1066 	struct cvmx_pip_stat7_prtx_s cn50xx;
1067 	struct cvmx_pip_stat7_prtx_s cn52xx;
1068 	struct cvmx_pip_stat7_prtx_s cn52xxp1;
1069 	struct cvmx_pip_stat7_prtx_s cn56xx;
1070 	struct cvmx_pip_stat7_prtx_s cn56xxp1;
1071 	struct cvmx_pip_stat7_prtx_s cn58xx;
1072 	struct cvmx_pip_stat7_prtx_s cn58xxp1;
1073 };
1074 
1075 union cvmx_pip_stat8_prtx {
1076 	uint64_t u64;
1077 	struct cvmx_pip_stat8_prtx_s {
1078 		uint64_t frag:32;
1079 		uint64_t undersz:32;
1080 	} s;
1081 	struct cvmx_pip_stat8_prtx_s cn30xx;
1082 	struct cvmx_pip_stat8_prtx_s cn31xx;
1083 	struct cvmx_pip_stat8_prtx_s cn38xx;
1084 	struct cvmx_pip_stat8_prtx_s cn38xxp2;
1085 	struct cvmx_pip_stat8_prtx_s cn50xx;
1086 	struct cvmx_pip_stat8_prtx_s cn52xx;
1087 	struct cvmx_pip_stat8_prtx_s cn52xxp1;
1088 	struct cvmx_pip_stat8_prtx_s cn56xx;
1089 	struct cvmx_pip_stat8_prtx_s cn56xxp1;
1090 	struct cvmx_pip_stat8_prtx_s cn58xx;
1091 	struct cvmx_pip_stat8_prtx_s cn58xxp1;
1092 };
1093 
1094 union cvmx_pip_stat9_prtx {
1095 	uint64_t u64;
1096 	struct cvmx_pip_stat9_prtx_s {
1097 		uint64_t jabber:32;
1098 		uint64_t oversz:32;
1099 	} s;
1100 	struct cvmx_pip_stat9_prtx_s cn30xx;
1101 	struct cvmx_pip_stat9_prtx_s cn31xx;
1102 	struct cvmx_pip_stat9_prtx_s cn38xx;
1103 	struct cvmx_pip_stat9_prtx_s cn38xxp2;
1104 	struct cvmx_pip_stat9_prtx_s cn50xx;
1105 	struct cvmx_pip_stat9_prtx_s cn52xx;
1106 	struct cvmx_pip_stat9_prtx_s cn52xxp1;
1107 	struct cvmx_pip_stat9_prtx_s cn56xx;
1108 	struct cvmx_pip_stat9_prtx_s cn56xxp1;
1109 	struct cvmx_pip_stat9_prtx_s cn58xx;
1110 	struct cvmx_pip_stat9_prtx_s cn58xxp1;
1111 };
1112 
1113 union cvmx_pip_stat_ctl {
1114 	uint64_t u64;
1115 	struct cvmx_pip_stat_ctl_s {
1116 		uint64_t reserved_1_63:63;
1117 		uint64_t rdclr:1;
1118 	} s;
1119 	struct cvmx_pip_stat_ctl_s cn30xx;
1120 	struct cvmx_pip_stat_ctl_s cn31xx;
1121 	struct cvmx_pip_stat_ctl_s cn38xx;
1122 	struct cvmx_pip_stat_ctl_s cn38xxp2;
1123 	struct cvmx_pip_stat_ctl_s cn50xx;
1124 	struct cvmx_pip_stat_ctl_s cn52xx;
1125 	struct cvmx_pip_stat_ctl_s cn52xxp1;
1126 	struct cvmx_pip_stat_ctl_s cn56xx;
1127 	struct cvmx_pip_stat_ctl_s cn56xxp1;
1128 	struct cvmx_pip_stat_ctl_s cn58xx;
1129 	struct cvmx_pip_stat_ctl_s cn58xxp1;
1130 };
1131 
1132 union cvmx_pip_stat_inb_errsx {
1133 	uint64_t u64;
1134 	struct cvmx_pip_stat_inb_errsx_s {
1135 		uint64_t reserved_16_63:48;
1136 		uint64_t errs:16;
1137 	} s;
1138 	struct cvmx_pip_stat_inb_errsx_s cn30xx;
1139 	struct cvmx_pip_stat_inb_errsx_s cn31xx;
1140 	struct cvmx_pip_stat_inb_errsx_s cn38xx;
1141 	struct cvmx_pip_stat_inb_errsx_s cn38xxp2;
1142 	struct cvmx_pip_stat_inb_errsx_s cn50xx;
1143 	struct cvmx_pip_stat_inb_errsx_s cn52xx;
1144 	struct cvmx_pip_stat_inb_errsx_s cn52xxp1;
1145 	struct cvmx_pip_stat_inb_errsx_s cn56xx;
1146 	struct cvmx_pip_stat_inb_errsx_s cn56xxp1;
1147 	struct cvmx_pip_stat_inb_errsx_s cn58xx;
1148 	struct cvmx_pip_stat_inb_errsx_s cn58xxp1;
1149 };
1150 
1151 union cvmx_pip_stat_inb_octsx {
1152 	uint64_t u64;
1153 	struct cvmx_pip_stat_inb_octsx_s {
1154 		uint64_t reserved_48_63:16;
1155 		uint64_t octs:48;
1156 	} s;
1157 	struct cvmx_pip_stat_inb_octsx_s cn30xx;
1158 	struct cvmx_pip_stat_inb_octsx_s cn31xx;
1159 	struct cvmx_pip_stat_inb_octsx_s cn38xx;
1160 	struct cvmx_pip_stat_inb_octsx_s cn38xxp2;
1161 	struct cvmx_pip_stat_inb_octsx_s cn50xx;
1162 	struct cvmx_pip_stat_inb_octsx_s cn52xx;
1163 	struct cvmx_pip_stat_inb_octsx_s cn52xxp1;
1164 	struct cvmx_pip_stat_inb_octsx_s cn56xx;
1165 	struct cvmx_pip_stat_inb_octsx_s cn56xxp1;
1166 	struct cvmx_pip_stat_inb_octsx_s cn58xx;
1167 	struct cvmx_pip_stat_inb_octsx_s cn58xxp1;
1168 };
1169 
1170 union cvmx_pip_stat_inb_pktsx {
1171 	uint64_t u64;
1172 	struct cvmx_pip_stat_inb_pktsx_s {
1173 		uint64_t reserved_32_63:32;
1174 		uint64_t pkts:32;
1175 	} s;
1176 	struct cvmx_pip_stat_inb_pktsx_s cn30xx;
1177 	struct cvmx_pip_stat_inb_pktsx_s cn31xx;
1178 	struct cvmx_pip_stat_inb_pktsx_s cn38xx;
1179 	struct cvmx_pip_stat_inb_pktsx_s cn38xxp2;
1180 	struct cvmx_pip_stat_inb_pktsx_s cn50xx;
1181 	struct cvmx_pip_stat_inb_pktsx_s cn52xx;
1182 	struct cvmx_pip_stat_inb_pktsx_s cn52xxp1;
1183 	struct cvmx_pip_stat_inb_pktsx_s cn56xx;
1184 	struct cvmx_pip_stat_inb_pktsx_s cn56xxp1;
1185 	struct cvmx_pip_stat_inb_pktsx_s cn58xx;
1186 	struct cvmx_pip_stat_inb_pktsx_s cn58xxp1;
1187 };
1188 
1189 union cvmx_pip_tag_incx {
1190 	uint64_t u64;
1191 	struct cvmx_pip_tag_incx_s {
1192 		uint64_t reserved_8_63:56;
1193 		uint64_t en:8;
1194 	} s;
1195 	struct cvmx_pip_tag_incx_s cn30xx;
1196 	struct cvmx_pip_tag_incx_s cn31xx;
1197 	struct cvmx_pip_tag_incx_s cn38xx;
1198 	struct cvmx_pip_tag_incx_s cn38xxp2;
1199 	struct cvmx_pip_tag_incx_s cn50xx;
1200 	struct cvmx_pip_tag_incx_s cn52xx;
1201 	struct cvmx_pip_tag_incx_s cn52xxp1;
1202 	struct cvmx_pip_tag_incx_s cn56xx;
1203 	struct cvmx_pip_tag_incx_s cn56xxp1;
1204 	struct cvmx_pip_tag_incx_s cn58xx;
1205 	struct cvmx_pip_tag_incx_s cn58xxp1;
1206 };
1207 
1208 union cvmx_pip_tag_mask {
1209 	uint64_t u64;
1210 	struct cvmx_pip_tag_mask_s {
1211 		uint64_t reserved_16_63:48;
1212 		uint64_t mask:16;
1213 	} s;
1214 	struct cvmx_pip_tag_mask_s cn30xx;
1215 	struct cvmx_pip_tag_mask_s cn31xx;
1216 	struct cvmx_pip_tag_mask_s cn38xx;
1217 	struct cvmx_pip_tag_mask_s cn38xxp2;
1218 	struct cvmx_pip_tag_mask_s cn50xx;
1219 	struct cvmx_pip_tag_mask_s cn52xx;
1220 	struct cvmx_pip_tag_mask_s cn52xxp1;
1221 	struct cvmx_pip_tag_mask_s cn56xx;
1222 	struct cvmx_pip_tag_mask_s cn56xxp1;
1223 	struct cvmx_pip_tag_mask_s cn58xx;
1224 	struct cvmx_pip_tag_mask_s cn58xxp1;
1225 };
1226 
1227 union cvmx_pip_tag_secret {
1228 	uint64_t u64;
1229 	struct cvmx_pip_tag_secret_s {
1230 		uint64_t reserved_32_63:32;
1231 		uint64_t dst:16;
1232 		uint64_t src:16;
1233 	} s;
1234 	struct cvmx_pip_tag_secret_s cn30xx;
1235 	struct cvmx_pip_tag_secret_s cn31xx;
1236 	struct cvmx_pip_tag_secret_s cn38xx;
1237 	struct cvmx_pip_tag_secret_s cn38xxp2;
1238 	struct cvmx_pip_tag_secret_s cn50xx;
1239 	struct cvmx_pip_tag_secret_s cn52xx;
1240 	struct cvmx_pip_tag_secret_s cn52xxp1;
1241 	struct cvmx_pip_tag_secret_s cn56xx;
1242 	struct cvmx_pip_tag_secret_s cn56xxp1;
1243 	struct cvmx_pip_tag_secret_s cn58xx;
1244 	struct cvmx_pip_tag_secret_s cn58xxp1;
1245 };
1246 
1247 union cvmx_pip_todo_entry {
1248 	uint64_t u64;
1249 	struct cvmx_pip_todo_entry_s {
1250 		uint64_t val:1;
1251 		uint64_t reserved_62_62:1;
1252 		uint64_t entry:62;
1253 	} s;
1254 	struct cvmx_pip_todo_entry_s cn30xx;
1255 	struct cvmx_pip_todo_entry_s cn31xx;
1256 	struct cvmx_pip_todo_entry_s cn38xx;
1257 	struct cvmx_pip_todo_entry_s cn38xxp2;
1258 	struct cvmx_pip_todo_entry_s cn50xx;
1259 	struct cvmx_pip_todo_entry_s cn52xx;
1260 	struct cvmx_pip_todo_entry_s cn52xxp1;
1261 	struct cvmx_pip_todo_entry_s cn56xx;
1262 	struct cvmx_pip_todo_entry_s cn56xxp1;
1263 	struct cvmx_pip_todo_entry_s cn58xx;
1264 	struct cvmx_pip_todo_entry_s cn58xxp1;
1265 };
1266 
1267 #endif
1268