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 */
103union 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
127typedef 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 */
135union 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
161typedef 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 */
169union 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
206typedef 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 */
214union 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
232typedef 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 */
240union 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
267typedef 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 */
275union 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
311typedef union cvmx_pip_bsel_tbl_entx cvmx_pip_bsel_tbl_entx_t;
312
313/**
314 * cvmx_pip_clken
315 */
316union 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
333typedef 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 */
342union 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
355typedef 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 */
393union 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
405typedef 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 */
413union 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
443typedef union cvmx_pip_dec_ipsecx cvmx_pip_dec_ipsecx_t;
444
445/**
446 * cvmx_pip_dsa_src_grp
447 */
448union 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
482typedef union cvmx_pip_dsa_src_grp cvmx_pip_dsa_src_grp_t;
483
484/**
485 * cvmx_pip_dsa_vid_grp
486 */
487union 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
521typedef 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 */
530union 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
553typedef 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 */
561union 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
595typedef 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 */
603union 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
781typedef 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 */
793union 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
815typedef 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 */
823union 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
930typedef 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 */
940union 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
1047typedef 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 */
1055union 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
1083typedef 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 */
1100union 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
1123typedef 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 */
1131union 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
1331typedef 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 */
1340union 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
1381typedef 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 */
1389union 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
1500typedef 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 */
1508union 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
1534typedef 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 */
1543union 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
1574typedef 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 */
1584union 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
1661typedef 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 */
1669union 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
1697typedef 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 */
1705union 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
1732typedef 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 */
1763union 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
1773typedef 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 */
1796union 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
1822typedef 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 */
1830union 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
1840typedef 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 */
1848union 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
1867typedef 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 */
1875union 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
1885typedef 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 */
1893union 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
1912typedef 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 */
1920union 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
1930typedef 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 */
1938union 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
1964typedef 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 */
1972union 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
1982typedef 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 */
1990union 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
2016typedef 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 */
2024union 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
2034typedef 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 */
2042union 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
2068typedef 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 */
2076union 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
2086typedef 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 */
2094union 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
2120typedef 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 */
2128union 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
2138typedef 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 */
2146union 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
2172typedef 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 */
2180union 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
2190typedef 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 */
2198union 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
2224typedef 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 */
2232union 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
2242typedef 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 */
2254union 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
2280typedef 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 */
2288union 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
2298typedef 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 */
2310union 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
2336typedef 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 */
2344union 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
2354typedef 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 */
2367union 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
2393typedef 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 */
2401union 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
2434typedef 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 */
2445union 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
2471typedef 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 */
2484union 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
2494typedef 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 */
2506union 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
2532typedef 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 */
2546union 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
2556typedef 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 */
2567union 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
2593typedef 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 */
2606union 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
2616typedef union cvmx_pip_stat_inb_pkts_pkndx cvmx_pip_stat_inb_pkts_pkndx_t;
2617
2618/**
2619 * cvmx_pip_sub_pkind_fcs#
2620 */
2621union 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
2630typedef 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 */
2638union 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
2666typedef 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 */
2674union 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
2702typedef 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 */
2710union 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
2739typedef 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 */
2747union 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
2776typedef union cvmx_pip_todo_entry cvmx_pip_todo_entry_t;
2777
2778/**
2779 * cvmx_pip_vlan_etypes#
2780 */
2781union 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
2797typedef 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 */
2805union 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
2816typedef 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 */
2824union 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
2835typedef 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 */
2843union 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
2854typedef 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 */
2862union 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
2873typedef 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 */
2881union 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
2892typedef 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 */
2900union 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
2911typedef 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 */
2919union 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
2930typedef 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 */
2938union 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
2949typedef 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 */
2957union 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
2968typedef 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 */
2980union 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
2991typedef 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 */
3003union 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
3014typedef 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 */
3027union 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
3038typedef union cvmx_pip_xstat9_prtx cvmx_pip_xstat9_prtx_t;
3039
3040#endif
3041