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