blob: 574e80b6f2850686f0c93ee48575be170c20e6cc [file] [log] [blame]
Aaron Williams019a5042020-12-11 17:05:44 +01001/* 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