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