1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(C) 2021 Marvell. 3 */ 4 5 #ifndef __NPC_HW_H__ 6 #define __NPC_HW_H__ 7 8 /* Register offsets */ 9 10 #define NPC_AF_CFG (0x0ull) 11 #define NPC_AF_ACTIVE_PC (0x10ull) 12 #define NPC_AF_CONST (0x20ull) 13 #define NPC_AF_CONST1 (0x30ull) 14 #define NPC_AF_BLK_RST (0x40ull) 15 #define NPC_AF_MCAM_SCRUB_CTL (0xa0ull) 16 #define NPC_AF_KCAM_SCRUB_CTL (0xb0ull) 17 #define NPC_AF_KPUX_CFG(a) (0x500ull | (uint64_t)(a) << 3) 18 #define NPC_AF_PCK_CFG (0x600ull) 19 #define NPC_AF_PCK_DEF_OL2 (0x610ull) 20 #define NPC_AF_PCK_DEF_OIP4 (0x620ull) 21 #define NPC_AF_PCK_DEF_OIP6 (0x630ull) 22 #define NPC_AF_PCK_DEF_IIP4 (0x640ull) 23 #define NPC_AF_KEX_LDATAX_FLAGS_CFG(a) (0x800ull | (uint64_t)(a) << 3) 24 #define NPC_AF_INTFX_KEX_CFG(a) (0x1010ull | (uint64_t)(a) << 8) 25 #define NPC_AF_PKINDX_ACTION0(a) (0x80000ull | (uint64_t)(a) << 6) 26 #define NPC_AF_PKINDX_ACTION1(a) (0x80008ull | (uint64_t)(a) << 6) 27 #define NPC_AF_PKINDX_CPI_DEFX(a, b) \ 28 (0x80020ull | (uint64_t)(a) << 6 | (uint64_t)(b) << 3) 29 #define NPC_AF_CHLEN90B_PKIND (0x3bull) 30 #define NPC_AF_KPUX_ENTRYX_CAMX(a, b, c) \ 31 (0x100000ull | (uint64_t)(a) << 14 | (uint64_t)(b) << 6 | \ 32 (uint64_t)(c) << 3) 33 #define NPC_AF_KPUX_ENTRYX_ACTION0(a, b) \ 34 (0x100020ull | (uint64_t)(a) << 14 | (uint64_t)(b) << 6) 35 #define NPC_AF_KPUX_ENTRYX_ACTION1(a, b) \ 36 (0x100028ull | (uint64_t)(a) << 14 | (uint64_t)(b) << 6) 37 #define NPC_AF_KPUX_ENTRY_DISX(a, b) \ 38 (0x180000ull | (uint64_t)(a) << 6 | (uint64_t)(b) << 3) 39 #define NPC_AF_CPIX_CFG(a) (0x200000ull | (uint64_t)(a) << 3) 40 #define NPC_AF_INTFX_LIDX_LTX_LDX_CFG(a, b, c, d) \ 41 (0x900000ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 12 | \ 42 (uint64_t)(c) << 5 | (uint64_t)(d) << 3) 43 #define NPC_AF_INTFX_LDATAX_FLAGSX_CFG(a, b, c) \ 44 (0x980000ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 12 | \ 45 (uint64_t)(c) << 3) 46 #define NPC_AF_MCAMEX_BANKX_CAMX_INTF(a, b, c) \ 47 (0x1000000ull | (uint64_t)(a) << 10 | (uint64_t)(b) << 6 | \ 48 (uint64_t)(c) << 3) 49 #define NPC_AF_MCAMEX_BANKX_CAMX_W0(a, b, c) \ 50 (0x1000010ull | (uint64_t)(a) << 10 | (uint64_t)(b) << 6 | \ 51 (uint64_t)(c) << 3) 52 #define NPC_AF_MCAMEX_BANKX_CAMX_W1(a, b, c) \ 53 (0x1000020ull | (uint64_t)(a) << 10 | (uint64_t)(b) << 6 | \ 54 (uint64_t)(c) << 3) 55 #define NPC_AF_MCAMEX_BANKX_CFG(a, b) \ 56 (0x1800000ull | (uint64_t)(a) << 8 | (uint64_t)(b) << 4) 57 #define NPC_AF_MCAMEX_BANKX_STAT_ACT(a, b) \ 58 (0x1880000ull | (uint64_t)(a) << 8 | (uint64_t)(b) << 4) 59 #define NPC_AF_MATCH_STATX(a) (0x1880008ull | (uint64_t)(a) << 8) 60 #define NPC_AF_INTFX_MISS_STAT_ACT(a) (0x1880040ull + 0x8 * (uint64_t)(a)) 61 #define NPC_AF_MCAMEX_BANKX_ACTION(a, b) \ 62 (0x1900000ull | (uint64_t)(a) << 8 | (uint64_t)(b) << 4) 63 #define NPC_AF_MCAMEX_BANKX_TAG_ACT(a, b) \ 64 (0x1900008ull | (uint64_t)(a) << 8 | (uint64_t)(b) << 4) 65 #define NPC_AF_INTFX_MISS_ACT(a) (0x1a00000ull | (uint64_t)(a) << 4) 66 #define NPC_AF_INTFX_MISS_TAG_ACT(a) (0x1b00008ull | (uint64_t)(a) << 4) 67 #define NPC_AF_MCAM_BANKX_HITX(a, b) \ 68 (0x1c80000ull | (uint64_t)(a) << 8 | (uint64_t)(b) << 4) 69 #define NPC_AF_LKUP_CTL (0x2000000ull) 70 #define NPC_AF_LKUP_DATAX(a) (0x2000200ull | (uint64_t)(a) << 4) 71 #define NPC_AF_LKUP_RESULTX(a) (0x2000400ull | (uint64_t)(a) << 4) 72 #define NPC_AF_INTFX_STAT(a) (0x2000800ull | (uint64_t)(a) << 4) 73 #define NPC_AF_DBG_CTL (0x3000000ull) 74 #define NPC_AF_DBG_STATUS (0x3000010ull) 75 #define NPC_AF_KPUX_DBG(a) (0x3000020ull | (uint64_t)(a) << 8) 76 #define NPC_AF_IKPU_ERR_CTL (0x3000080ull) 77 #define NPC_AF_KPUX_ERR_CTL(a) (0x30000a0ull | (uint64_t)(a) << 8) 78 #define NPC_AF_MCAM_DBG (0x3001000ull) 79 #define NPC_AF_DBG_DATAX(a) (0x3001400ull | (uint64_t)(a) << 4) 80 #define NPC_AF_DBG_RESULTX(a) (0x3001800ull | (uint64_t)(a) << 4) 81 82 /* Enum offsets */ 83 84 #define NPC_INTF_NIX0_RX (0x0ull) 85 #define NPC_INTF_NIX0_TX (0x1ull) 86 87 #define NPC_LKUPOP_PKT (0x0ull) 88 #define NPC_LKUPOP_KEY (0x1ull) 89 90 #define NPC_MCAM_KEY_X1 (0x0ull) 91 #define NPC_MCAM_KEY_X2 (0x1ull) 92 #define NPC_MCAM_KEY_X4 (0x2ull) 93 94 #ifndef __NPC_ERRLEVELS__ 95 #define __NPC_ERRLEVELS__ 96 97 enum NPC_ERRLEV_E { 98 NPC_ERRLEV_RE = 0, 99 NPC_ERRLEV_LA = 1, 100 NPC_ERRLEV_LB = 2, 101 NPC_ERRLEV_LC = 3, 102 NPC_ERRLEV_LD = 4, 103 NPC_ERRLEV_LE = 5, 104 NPC_ERRLEV_LF = 6, 105 NPC_ERRLEV_LG = 7, 106 NPC_ERRLEV_LH = 8, 107 NPC_ERRLEV_R9 = 9, 108 NPC_ERRLEV_R10 = 10, 109 NPC_ERRLEV_R11 = 11, 110 NPC_ERRLEV_R12 = 12, 111 NPC_ERRLEV_R13 = 13, 112 NPC_ERRLEV_R14 = 14, 113 NPC_ERRLEV_NIX = 15, 114 NPC_ERRLEV_ENUM_LAST = 16, 115 }; 116 117 #endif 118 119 enum npc_kpu_err_code { 120 NPC_EC_NOERR = 0, /* has to be zero */ 121 NPC_EC_UNK, 122 NPC_EC_IH_LENGTH, 123 NPC_EC_EDSA_UNK, 124 NPC_EC_L2_K1, 125 NPC_EC_L2_K2, 126 NPC_EC_L2_K3, 127 NPC_EC_L2_K3_ETYPE_UNK, 128 NPC_EC_L2_K4, 129 NPC_EC_MPLS_2MANY, 130 NPC_EC_MPLS_UNK, 131 NPC_EC_NSH_UNK, 132 NPC_EC_IP_TTL_0, 133 NPC_EC_IP_FRAG_OFFSET_1, 134 NPC_EC_IP_VER, 135 NPC_EC_IP6_HOP_0, 136 NPC_EC_IP6_VER, 137 NPC_EC_TCP_FLAGS_FIN_ONLY, 138 NPC_EC_TCP_FLAGS_ZERO, 139 NPC_EC_TCP_FLAGS_RST_FIN, 140 NPC_EC_TCP_FLAGS_URG_SYN, 141 NPC_EC_TCP_FLAGS_RST_SYN, 142 NPC_EC_TCP_FLAGS_SYN_FIN, 143 NPC_EC_VXLAN, 144 NPC_EC_NVGRE, 145 NPC_EC_GRE, 146 NPC_EC_GRE_VER1, 147 NPC_EC_L4, 148 NPC_EC_OIP4_CSUM, 149 NPC_EC_IIP4_CSUM, 150 NPC_EC_LAST /* has to be the last item */ 151 }; 152 153 enum NPC_LID_E { 154 NPC_LID_LA = 0, 155 NPC_LID_LB, 156 NPC_LID_LC, 157 NPC_LID_LD, 158 NPC_LID_LE, 159 NPC_LID_LF, 160 NPC_LID_LG, 161 NPC_LID_LH, 162 }; 163 164 #ifndef __NPC_LT_TYPES__ 165 #define __NPC_LT_TYPES__ 166 #define NPC_LT_NA 0 167 168 enum npc_kpu_la_ltype { 169 NPC_LT_LA_8023 = 1, 170 NPC_LT_LA_ETHER, 171 NPC_LT_LA_IH_NIX_ETHER, 172 NPC_LT_LA_HIGIG2_ETHER = 7, 173 NPC_LT_LA_IH_NIX_HIGIG2_ETHER, 174 NPC_LT_LA_CUSTOM_L2_90B_ETHER, 175 NPC_LT_LA_CPT_HDR, 176 NPC_LT_LA_CUSTOM_L2_24B_ETHER, 177 NPC_LT_LA_CUSTOM_PRE_L2_ETHER, 178 NPC_LT_LA_CUSTOM0 = 0xE, 179 NPC_LT_LA_CUSTOM1 = 0xF, 180 }; 181 182 enum npc_kpu_lb_ltype { 183 NPC_LT_LB_ETAG = 1, 184 NPC_LT_LB_CTAG, 185 NPC_LT_LB_STAG_QINQ, 186 NPC_LT_LB_BTAG, 187 NPC_LT_LB_PPPOE, 188 NPC_LT_LB_DSA, 189 NPC_LT_LB_DSA_VLAN, 190 NPC_LT_LB_EDSA, 191 NPC_LT_LB_EDSA_VLAN, 192 NPC_LT_LB_EXDSA, 193 NPC_LT_LB_EXDSA_VLAN, 194 NPC_LT_LB_FDSA, 195 NPC_LT_LB_VLAN_EXDSA, 196 NPC_LT_LB_CUSTOM0 = 0xE, 197 NPC_LT_LB_CUSTOM1 = 0xF, 198 }; 199 200 enum npc_kpu_lc_ltype { 201 NPC_LT_LC_PTP = 1, 202 NPC_LT_LC_IP, 203 NPC_LT_LC_IP_OPT, 204 NPC_LT_LC_IP6, 205 NPC_LT_LC_IP6_EXT, 206 NPC_LT_LC_ARP, 207 NPC_LT_LC_RARP, 208 NPC_LT_LC_MPLS, 209 NPC_LT_LC_NSH, 210 NPC_LT_LC_FCOE, 211 NPC_LT_LC_NGIO, 212 NPC_LT_LC_CUSTOM0 = 0xE, 213 NPC_LT_LC_CUSTOM1 = 0xF, 214 }; 215 216 /* Don't modify Ltypes up to SCTP, otherwise it will 217 * effect flow tag calculation and thus RSS. 218 */ 219 enum npc_kpu_ld_ltype { 220 NPC_LT_LD_TCP = 1, 221 NPC_LT_LD_UDP, 222 NPC_LT_LD_SCTP = 4, 223 NPC_LT_LD_ICMP6, 224 NPC_LT_LD_CUSTOM0, 225 NPC_LT_LD_CUSTOM1, 226 NPC_LT_LD_IGMP = 8, 227 NPC_LT_LD_AH, 228 NPC_LT_LD_GRE, 229 NPC_LT_LD_NVGRE, 230 NPC_LT_LD_NSH, 231 NPC_LT_LD_TU_MPLS_IN_NSH, 232 NPC_LT_LD_TU_MPLS_IN_IP, 233 NPC_LT_LD_ICMP, 234 }; 235 236 enum npc_kpu_le_ltype { 237 NPC_LT_LE_VXLAN = 1, 238 NPC_LT_LE_GENEVE, 239 NPC_LT_LE_ESP, 240 NPC_LT_LE_GTPU = 4, 241 NPC_LT_LE_VXLANGPE, 242 NPC_LT_LE_GTPC, 243 NPC_LT_LE_NSH, 244 NPC_LT_LE_TU_MPLS_IN_GRE, 245 NPC_LT_LE_TU_NSH_IN_GRE, 246 NPC_LT_LE_TU_MPLS_IN_UDP, 247 NPC_LT_LE_CUSTOM0 = 0xE, 248 NPC_LT_LE_CUSTOM1 = 0xF, 249 }; 250 251 #endif 252 253 enum npc_kpu_lf_ltype { 254 NPC_LT_LF_TU_ETHER = 1, 255 NPC_LT_LF_TU_PPP, 256 NPC_LT_LF_TU_MPLS_IN_VXLANGPE, 257 NPC_LT_LF_TU_NSH_IN_VXLANGPE, 258 NPC_LT_LF_TU_MPLS_IN_NSH, 259 NPC_LT_LF_TU_3RD_NSH, 260 NPC_LT_LF_CUSTOM0 = 0xE, 261 NPC_LT_LF_CUSTOM1 = 0xF, 262 }; 263 264 enum npc_kpu_lg_ltype { 265 NPC_LT_LG_TU_IP = 1, 266 NPC_LT_LG_TU_IP6, 267 NPC_LT_LG_TU_ARP, 268 NPC_LT_LG_TU_ETHER_IN_NSH, 269 NPC_LT_LG_CUSTOM0 = 0xE, 270 NPC_LT_LG_CUSTOM1 = 0xF, 271 }; 272 273 /* Don't modify Ltypes up to SCTP, otherwise it will 274 * effect flow tag calculation and thus RSS. 275 */ 276 enum npc_kpu_lh_ltype { 277 NPC_LT_LH_TU_TCP = 1, 278 NPC_LT_LH_TU_UDP, 279 NPC_LT_LH_TU_SCTP = 4, 280 NPC_LT_LH_TU_ICMP6, 281 NPC_LT_LH_CUSTOM0, 282 NPC_LT_LH_CUSTOM1, 283 NPC_LT_LH_TU_IGMP = 8, 284 NPC_LT_LH_TU_ESP, 285 NPC_LT_LH_TU_AH, 286 NPC_LT_LH_TU_ICMP = 0xF, 287 }; 288 289 enum npc_kpu_lb_uflag { 290 NPC_F_LB_U_UNK_ETYPE = 0x80, 291 NPC_F_LB_U_MORE_TAG = 0x40, 292 }; 293 294 enum npc_kpu_lb_lflag { 295 NPC_F_LB_L_WITH_CTAG = 1, 296 NPC_F_LB_L_WITH_CTAG_UNK, 297 NPC_F_LB_L_WITH_STAG_CTAG, 298 NPC_F_LB_L_WITH_STAG_STAG, 299 NPC_F_LB_L_WITH_QINQ_CTAG, 300 NPC_F_LB_L_WITH_QINQ_QINQ, 301 NPC_F_LB_L_WITH_ITAG, 302 NPC_F_LB_L_WITH_ITAG_STAG, 303 NPC_F_LB_L_WITH_ITAG_CTAG, 304 NPC_F_LB_L_WITH_ITAG_UNK, 305 NPC_F_LB_L_WITH_BTAG_ITAG, 306 NPC_F_LB_L_WITH_STAG, 307 NPC_F_LB_L_WITH_QINQ, 308 NPC_F_LB_L_DSA, 309 NPC_F_LB_L_DSA_VLAN, 310 NPC_F_LB_L_EDSA, 311 NPC_F_LB_L_EDSA_VLAN, 312 NPC_F_LB_L_EXDSA, 313 NPC_F_LB_L_EXDSA_VLAN, 314 NPC_F_LB_L_FDSA, 315 }; 316 317 enum npc_kpu_lc_uflag { 318 NPC_F_LC_U_UNK_PROTO = 0x10, 319 NPC_F_LC_U_IP_FRAG = 0x20, 320 NPC_F_LC_U_IP6_FRAG = 0x40, 321 }; 322 323 enum npc_kpu_lc_lflag { 324 NPC_F_LC_L_IP_IN_IP = 1, 325 NPC_F_LC_L_6TO4, 326 NPC_F_LC_L_MPLS_IN_IP, 327 NPC_F_LC_L_IP6_TUN_IP6, 328 NPC_F_LC_L_IP6_MPLS_IN_IP, 329 NPC_F_LC_L_MPLS_4_LABELS, 330 NPC_F_LC_L_MPLS_3_LABELS, 331 NPC_F_LC_L_MPLS_2_LABELS, 332 NPC_F_LC_L_EXT_HOP, 333 NPC_F_LC_L_EXT_DEST, 334 NPC_F_LC_L_EXT_ROUT, 335 NPC_F_LC_L_EXT_MOBILITY, 336 NPC_F_LC_L_EXT_HOSTID, 337 NPC_F_LC_L_EXT_SHIM6, 338 }; 339 340 /* Structures definitions */ 341 struct npc_kpu_profile_cam { 342 uint8_t state; 343 uint8_t state_mask; 344 uint16_t dp0; 345 uint16_t dp0_mask; 346 uint16_t dp1; 347 uint16_t dp1_mask; 348 uint16_t dp2; 349 uint16_t dp2_mask; 350 }; 351 352 struct npc_kpu_profile_action { 353 uint8_t errlev; 354 uint8_t errcode; 355 uint8_t dp0_offset; 356 uint8_t dp1_offset; 357 uint8_t dp2_offset; 358 uint8_t bypass_count; 359 uint8_t parse_done; 360 uint8_t next_state; 361 uint8_t ptr_advance; 362 uint8_t cap_ena; 363 uint8_t lid; 364 uint8_t ltype; 365 uint8_t flags; 366 uint8_t offset; 367 uint8_t mask; 368 uint8_t right; 369 uint8_t shift; 370 }; 371 372 struct npc_kpu_profile { 373 int cam_entries; 374 int action_entries; 375 struct npc_kpu_profile_cam *cam; 376 struct npc_kpu_profile_action *action; 377 }; 378 379 /* NPC KPU register formats */ 380 struct npc_kpu_cam { 381 uint64_t dp0_data : 16; 382 uint64_t dp1_data : 16; 383 uint64_t dp2_data : 16; 384 uint64_t state : 8; 385 uint64_t rsvd_63_56 : 8; 386 }; 387 388 struct npc_kpu_action0 { 389 uint64_t var_len_shift : 3; 390 uint64_t var_len_right : 1; 391 uint64_t var_len_mask : 8; 392 uint64_t var_len_offset : 8; 393 uint64_t ptr_advance : 8; 394 uint64_t capture_flags : 8; 395 uint64_t capture_ltype : 4; 396 uint64_t capture_lid : 3; 397 uint64_t rsvd_43 : 1; 398 uint64_t next_state : 8; 399 uint64_t parse_done : 1; 400 uint64_t capture_ena : 1; 401 uint64_t byp_count : 3; 402 uint64_t rsvd_63_57 : 7; 403 }; 404 405 struct npc_kpu_action1 { 406 uint64_t dp0_offset : 8; 407 uint64_t dp1_offset : 8; 408 uint64_t dp2_offset : 8; 409 uint64_t errcode : 8; 410 uint64_t errlev : 4; 411 uint64_t rsvd_63_36 : 28; 412 }; 413 414 struct npc_kpu_pkind_cpi_def { 415 uint64_t cpi_base : 10; 416 uint64_t rsvd_11_10 : 2; 417 uint64_t add_shift : 3; 418 uint64_t rsvd_15 : 1; 419 uint64_t add_mask : 8; 420 uint64_t add_offset : 8; 421 uint64_t flags_mask : 8; 422 uint64_t flags_match : 8; 423 uint64_t ltype_mask : 4; 424 uint64_t ltype_match : 4; 425 uint64_t lid : 3; 426 uint64_t rsvd_62_59 : 4; 427 uint64_t ena : 1; 428 }; 429 430 struct nix_rx_action { 431 uint64_t op : 4; 432 uint64_t pf_func : 16; 433 uint64_t index : 20; 434 uint64_t match_id : 16; 435 uint64_t flow_key_alg : 5; 436 uint64_t rsvd_63_61 : 3; 437 }; 438 439 struct nix_tx_action { 440 uint64_t op : 4; 441 uint64_t rsvd_11_4 : 8; 442 uint64_t index : 20; 443 uint64_t match_id : 16; 444 uint64_t rsvd_63_48 : 16; 445 }; 446 447 /* NPC layer parse information structure */ 448 struct npc_layer_info_s { 449 uint32_t lptr : 8; 450 uint32_t flags : 8; 451 uint32_t ltype : 4; 452 uint32_t rsvd_31_20 : 12; 453 }; 454 455 /* NPC layer mcam search key extract structure */ 456 struct npc_layer_kex_s { 457 uint16_t flags : 8; 458 uint16_t ltype : 4; 459 uint16_t rsvd_15_12 : 4; 460 }; 461 462 /* NPC mcam search key x1 structure */ 463 struct npc_mcam_key_x1_s { 464 uint64_t intf : 2; 465 uint64_t rsvd_63_2 : 62; 466 uint64_t kw0 : 64; /* W1 */ 467 uint64_t kw1 : 48; 468 uint64_t rsvd_191_176 : 16; 469 }; 470 471 /* NPC mcam search key x2 structure */ 472 struct npc_mcam_key_x2_s { 473 uint64_t intf : 2; 474 uint64_t rsvd_63_2 : 62; 475 uint64_t kw0 : 64; /* W1 */ 476 uint64_t kw1 : 64; /* W2 */ 477 uint64_t kw2 : 64; /* W3 */ 478 uint64_t kw3 : 32; 479 uint64_t rsvd_319_288 : 32; 480 }; 481 482 /* NPC mcam search key x4 structure */ 483 struct npc_mcam_key_x4_s { 484 uint64_t intf : 2; 485 uint64_t rsvd_63_2 : 62; 486 uint64_t kw0 : 64; /* W1 */ 487 uint64_t kw1 : 64; /* W2 */ 488 uint64_t kw2 : 64; /* W3 */ 489 uint64_t kw3 : 64; /* W4 */ 490 uint64_t kw4 : 64; /* W5 */ 491 uint64_t kw5 : 64; /* W6 */ 492 uint64_t kw6 : 64; /* W7 */ 493 }; 494 495 /* NPC parse key extract structure */ 496 struct npc_parse_kex_s { 497 uint64_t chan : 12; 498 uint64_t errlev : 4; 499 uint64_t errcode : 8; 500 uint64_t l2m : 1; 501 uint64_t l2b : 1; 502 uint64_t l3m : 1; 503 uint64_t l3b : 1; 504 uint64_t la : 12; 505 uint64_t lb : 12; 506 uint64_t lc : 12; 507 uint64_t ld : 12; 508 uint64_t le : 12; 509 uint64_t lf : 12; 510 uint64_t lg : 12; 511 uint64_t lh : 12; 512 uint64_t rsvd_127_124 : 4; 513 }; 514 515 /* NPC result structure */ 516 struct npc_result_s { 517 uint64_t intf : 2; 518 uint64_t pkind : 6; 519 uint64_t chan : 12; 520 uint64_t errlev : 4; 521 uint64_t errcode : 8; 522 uint64_t l2m : 1; 523 uint64_t l2b : 1; 524 uint64_t l3m : 1; 525 uint64_t l3b : 1; 526 uint64_t eoh_ptr : 8; 527 uint64_t rsvd_63_44 : 20; 528 uint64_t action : 64; /* W1 */ 529 uint64_t vtag_action : 64; /* W2 */ 530 uint64_t la : 20; 531 uint64_t lb : 20; 532 uint64_t lc : 20; 533 uint64_t rsvd_255_252 : 4; 534 uint64_t ld : 20; 535 uint64_t le : 20; 536 uint64_t lf : 20; 537 uint64_t rsvd_319_316 : 4; 538 uint64_t lg : 20; 539 uint64_t lh : 20; 540 uint64_t rsvd_383_360 : 24; 541 }; 542 543 #endif /* __NPC_HW_H__ */ 544