FILE
ppe_regs.h
File preview with syntax highlighting.
linux-6.19.14/drivers/net/ethernet/qualcomm/ppe/ppe_regs.h
1/* SPDX-License-Identifier: GPL-2.0-only 2 * 3 * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 4 */ 5 6/* PPE hardware register and table declarations. */ 7#ifndef __PPE_REGS_H__ 8#define __PPE_REGS_H__ 9 10#include <linux/bitfield.h> 11 12/* PPE scheduler configurations for buffer manager block. */ 13#define PPE_BM_SCH_CTRL_ADDR 0xb000 14#define PPE_BM_SCH_CTRL_INC 4 15#define PPE_BM_SCH_CTRL_SCH_DEPTH GENMASK(7, 0) 16#define PPE_BM_SCH_CTRL_SCH_OFFSET GENMASK(14, 8) 17#define PPE_BM_SCH_CTRL_SCH_EN BIT(31) 18 19/* PPE drop counters. */ 20#define PPE_DROP_CNT_TBL_ADDR 0xb024 21#define PPE_DROP_CNT_TBL_ENTRIES 8 22#define PPE_DROP_CNT_TBL_INC 4 23 24/* BM port drop counters. */ 25#define PPE_DROP_STAT_TBL_ADDR 0xe000 26#define PPE_DROP_STAT_TBL_ENTRIES 30 27#define PPE_DROP_STAT_TBL_INC 0x10 28 29/* Egress VLAN counters. */ 30#define PPE_EG_VSI_COUNTER_TBL_ADDR 0x41000 31#define PPE_EG_VSI_COUNTER_TBL_ENTRIES 64 32#define PPE_EG_VSI_COUNTER_TBL_INC 0x10 33 34/* Port TX counters. */ 35#define PPE_PORT_TX_COUNTER_TBL_ADDR 0x45000 36#define PPE_PORT_TX_COUNTER_TBL_ENTRIES 8 37#define PPE_PORT_TX_COUNTER_TBL_INC 0x10 38 39/* Virtual port TX counters. */ 40#define PPE_VPORT_TX_COUNTER_TBL_ADDR 0x47000 41#define PPE_VPORT_TX_COUNTER_TBL_ENTRIES 256 42#define PPE_VPORT_TX_COUNTER_TBL_INC 0x10 43 44/* Queue counters. */ 45#define PPE_QUEUE_TX_COUNTER_TBL_ADDR 0x4a000 46#define PPE_QUEUE_TX_COUNTER_TBL_ENTRIES 300 47#define PPE_QUEUE_TX_COUNTER_TBL_INC 0x10 48 49/* RSS settings are to calculate the random RSS hash value generated during 50 * packet receive to ARM cores. This hash is then used to generate the queue 51 * offset used to determine the queue used to transmit the packet to ARM cores. 52 */ 53#define PPE_RSS_HASH_MASK_ADDR 0xb4318 54#define PPE_RSS_HASH_MASK_HASH_MASK GENMASK(20, 0) 55#define PPE_RSS_HASH_MASK_FRAGMENT BIT(28) 56 57#define PPE_RSS_HASH_SEED_ADDR 0xb431c 58#define PPE_RSS_HASH_SEED_VAL GENMASK(31, 0) 59 60#define PPE_RSS_HASH_MIX_ADDR 0xb4320 61#define PPE_RSS_HASH_MIX_ENTRIES 11 62#define PPE_RSS_HASH_MIX_INC 4 63#define PPE_RSS_HASH_MIX_VAL GENMASK(4, 0) 64 65#define PPE_RSS_HASH_FIN_ADDR 0xb4350 66#define PPE_RSS_HASH_FIN_ENTRIES 5 67#define PPE_RSS_HASH_FIN_INC 4 68#define PPE_RSS_HASH_FIN_INNER GENMASK(4, 0) 69#define PPE_RSS_HASH_FIN_OUTER GENMASK(9, 5) 70 71#define PPE_RSS_HASH_MASK_IPV4_ADDR 0xb4380 72#define PPE_RSS_HASH_MASK_IPV4_HASH_MASK GENMASK(20, 0) 73#define PPE_RSS_HASH_MASK_IPV4_FRAGMENT BIT(28) 74 75#define PPE_RSS_HASH_SEED_IPV4_ADDR 0xb4384 76#define PPE_RSS_HASH_SEED_IPV4_VAL GENMASK(31, 0) 77 78#define PPE_RSS_HASH_MIX_IPV4_ADDR 0xb4390 79#define PPE_RSS_HASH_MIX_IPV4_ENTRIES 5 80#define PPE_RSS_HASH_MIX_IPV4_INC 4 81#define PPE_RSS_HASH_MIX_IPV4_VAL GENMASK(4, 0) 82 83#define PPE_RSS_HASH_FIN_IPV4_ADDR 0xb43b0 84#define PPE_RSS_HASH_FIN_IPV4_ENTRIES 5 85#define PPE_RSS_HASH_FIN_IPV4_INC 4 86#define PPE_RSS_HASH_FIN_IPV4_INNER GENMASK(4, 0) 87#define PPE_RSS_HASH_FIN_IPV4_OUTER GENMASK(9, 5) 88 89#define PPE_BM_SCH_CFG_TBL_ADDR 0xc000 90#define PPE_BM_SCH_CFG_TBL_ENTRIES 128 91#define PPE_BM_SCH_CFG_TBL_INC 0x10 92#define PPE_BM_SCH_CFG_TBL_PORT_NUM GENMASK(3, 0) 93#define PPE_BM_SCH_CFG_TBL_DIR BIT(4) 94#define PPE_BM_SCH_CFG_TBL_VALID BIT(5) 95#define PPE_BM_SCH_CFG_TBL_SECOND_PORT_VALID BIT(6) 96#define PPE_BM_SCH_CFG_TBL_SECOND_PORT GENMASK(11, 8) 97 98/* PPE service code configuration for the ingress direction functions, 99 * including bypass configuration for relevant PPE switch core functions 100 * such as flow entry lookup bypass. 101 */ 102#define PPE_SERVICE_TBL_ADDR 0x15000 103#define PPE_SERVICE_TBL_ENTRIES 256 104#define PPE_SERVICE_TBL_INC 0x10 105#define PPE_SERVICE_W0_BYPASS_BITMAP GENMASK(31, 0) 106#define PPE_SERVICE_W1_RX_CNT_EN BIT(0) 107 108#define PPE_SERVICE_SET_BYPASS_BITMAP(tbl_cfg, value) \ 109 FIELD_MODIFY(PPE_SERVICE_W0_BYPASS_BITMAP, tbl_cfg, value) 110#define PPE_SERVICE_SET_RX_CNT_EN(tbl_cfg, value) \ 111 FIELD_MODIFY(PPE_SERVICE_W1_RX_CNT_EN, (tbl_cfg) + 0x1, value) 112 113/* PPE port egress VLAN configurations. */ 114#define PPE_PORT_EG_VLAN_TBL_ADDR 0x20020 115#define PPE_PORT_EG_VLAN_TBL_ENTRIES 8 116#define PPE_PORT_EG_VLAN_TBL_INC 4 117#define PPE_PORT_EG_VLAN_TBL_VLAN_TYPE BIT(0) 118#define PPE_PORT_EG_VLAN_TBL_CTAG_MODE GENMASK(2, 1) 119#define PPE_PORT_EG_VLAN_TBL_STAG_MODE GENMASK(4, 3) 120#define PPE_PORT_EG_VLAN_TBL_VSI_TAG_MODE_EN BIT(5) 121#define PPE_PORT_EG_VLAN_TBL_PCP_PROP_CMD BIT(6) 122#define PPE_PORT_EG_VLAN_TBL_DEI_PROP_CMD BIT(7) 123#define PPE_PORT_EG_VLAN_TBL_TX_COUNTING_EN BIT(8) 124 125/* PPE queue counters enable/disable control. */ 126#define PPE_EG_BRIDGE_CONFIG_ADDR 0x20044 127#define PPE_EG_BRIDGE_CONFIG_QUEUE_CNT_EN BIT(2) 128 129/* PPE service code configuration on the egress direction. */ 130#define PPE_EG_SERVICE_TBL_ADDR 0x43000 131#define PPE_EG_SERVICE_TBL_ENTRIES 256 132#define PPE_EG_SERVICE_TBL_INC 0x10 133#define PPE_EG_SERVICE_W0_UPDATE_ACTION GENMASK(31, 0) 134#define PPE_EG_SERVICE_W1_NEXT_SERVCODE GENMASK(7, 0) 135#define PPE_EG_SERVICE_W1_HW_SERVICE GENMASK(13, 8) 136#define PPE_EG_SERVICE_W1_OFFSET_SEL BIT(14) 137#define PPE_EG_SERVICE_W1_TX_CNT_EN BIT(15) 138 139#define PPE_EG_SERVICE_SET_UPDATE_ACTION(tbl_cfg, value) \ 140 FIELD_MODIFY(PPE_EG_SERVICE_W0_UPDATE_ACTION, tbl_cfg, value) 141#define PPE_EG_SERVICE_SET_NEXT_SERVCODE(tbl_cfg, value) \ 142 FIELD_MODIFY(PPE_EG_SERVICE_W1_NEXT_SERVCODE, (tbl_cfg) + 0x1, value) 143#define PPE_EG_SERVICE_SET_HW_SERVICE(tbl_cfg, value) \ 144 FIELD_MODIFY(PPE_EG_SERVICE_W1_HW_SERVICE, (tbl_cfg) + 0x1, value) 145#define PPE_EG_SERVICE_SET_OFFSET_SEL(tbl_cfg, value) \ 146 FIELD_MODIFY(PPE_EG_SERVICE_W1_OFFSET_SEL, (tbl_cfg) + 0x1, value) 147#define PPE_EG_SERVICE_SET_TX_CNT_EN(tbl_cfg, value) \ 148 FIELD_MODIFY(PPE_EG_SERVICE_W1_TX_CNT_EN, (tbl_cfg) + 0x1, value) 149 150/* PPE port bridge configuration */ 151#define PPE_PORT_BRIDGE_CTRL_ADDR 0x60300 152#define PPE_PORT_BRIDGE_CTRL_ENTRIES 8 153#define PPE_PORT_BRIDGE_CTRL_INC 4 154#define PPE_PORT_BRIDGE_NEW_LRN_EN BIT(0) 155#define PPE_PORT_BRIDGE_STA_MOVE_LRN_EN BIT(3) 156#define PPE_PORT_BRIDGE_TXMAC_EN BIT(16) 157 158/* PPE port control configurations for the traffic to the multicast queues. */ 159#define PPE_MC_MTU_CTRL_TBL_ADDR 0x60a00 160#define PPE_MC_MTU_CTRL_TBL_ENTRIES 8 161#define PPE_MC_MTU_CTRL_TBL_INC 4 162#define PPE_MC_MTU_CTRL_TBL_MTU GENMASK(13, 0) 163#define PPE_MC_MTU_CTRL_TBL_MTU_CMD GENMASK(15, 14) 164#define PPE_MC_MTU_CTRL_TBL_TX_CNT_EN BIT(16) 165 166/* PPE VSI configurations */ 167#define PPE_VSI_TBL_ADDR 0x63800 168#define PPE_VSI_TBL_ENTRIES 64 169#define PPE_VSI_TBL_INC 0x10 170#define PPE_VSI_W0_MEMBER_PORT_BITMAP GENMASK(7, 0) 171#define PPE_VSI_W0_UUC_BITMAP GENMASK(15, 8) 172#define PPE_VSI_W0_UMC_BITMAP GENMASK(23, 16) 173#define PPE_VSI_W0_BC_BITMAP GENMASK(31, 24) 174#define PPE_VSI_W1_NEW_ADDR_LRN_EN BIT(0) 175#define PPE_VSI_W1_NEW_ADDR_FWD_CMD GENMASK(2, 1) 176#define PPE_VSI_W1_STATION_MOVE_LRN_EN BIT(3) 177#define PPE_VSI_W1_STATION_MOVE_FWD_CMD GENMASK(5, 4) 178 179#define PPE_VSI_SET_MEMBER_PORT_BITMAP(tbl_cfg, value) \ 180 FIELD_MODIFY(PPE_VSI_W0_MEMBER_PORT_BITMAP, tbl_cfg, value) 181#define PPE_VSI_SET_UUC_BITMAP(tbl_cfg, value) \ 182 FIELD_MODIFY(PPE_VSI_W0_UUC_BITMAP, tbl_cfg, value) 183#define PPE_VSI_SET_UMC_BITMAP(tbl_cfg, value) \ 184 FIELD_MODIFY(PPE_VSI_W0_UMC_BITMAP, tbl_cfg, value) 185#define PPE_VSI_SET_BC_BITMAP(tbl_cfg, value) \ 186 FIELD_MODIFY(PPE_VSI_W0_BC_BITMAP, tbl_cfg, value) 187#define PPE_VSI_SET_NEW_ADDR_LRN_EN(tbl_cfg, value) \ 188 FIELD_MODIFY(PPE_VSI_W1_NEW_ADDR_LRN_EN, (tbl_cfg) + 0x1, value) 189#define PPE_VSI_SET_NEW_ADDR_FWD_CMD(tbl_cfg, value) \ 190 FIELD_MODIFY(PPE_VSI_W1_NEW_ADDR_FWD_CMD, (tbl_cfg) + 0x1, value) 191#define PPE_VSI_SET_STATION_MOVE_LRN_EN(tbl_cfg, value) \ 192 FIELD_MODIFY(PPE_VSI_W1_STATION_MOVE_LRN_EN, (tbl_cfg) + 0x1, value) 193#define PPE_VSI_SET_STATION_MOVE_FWD_CMD(tbl_cfg, value) \ 194 FIELD_MODIFY(PPE_VSI_W1_STATION_MOVE_FWD_CMD, (tbl_cfg) + 0x1, value) 195 196/* PPE port control configurations for the traffic to the unicast queues. */ 197#define PPE_MRU_MTU_CTRL_TBL_ADDR 0x65000 198#define PPE_MRU_MTU_CTRL_TBL_ENTRIES 256 199#define PPE_MRU_MTU_CTRL_TBL_INC 0x10 200#define PPE_MRU_MTU_CTRL_W0_MRU GENMASK(13, 0) 201#define PPE_MRU_MTU_CTRL_W0_MRU_CMD GENMASK(15, 14) 202#define PPE_MRU_MTU_CTRL_W0_MTU GENMASK(29, 16) 203#define PPE_MRU_MTU_CTRL_W0_MTU_CMD GENMASK(31, 30) 204#define PPE_MRU_MTU_CTRL_W1_RX_CNT_EN BIT(0) 205#define PPE_MRU_MTU_CTRL_W1_TX_CNT_EN BIT(1) 206#define PPE_MRU_MTU_CTRL_W1_SRC_PROFILE GENMASK(3, 2) 207#define PPE_MRU_MTU_CTRL_W1_INNER_PREC_LOW BIT(31) 208#define PPE_MRU_MTU_CTRL_W2_INNER_PREC_HIGH GENMASK(1, 0) 209 210#define PPE_MRU_MTU_CTRL_SET_MRU(tbl_cfg, value) \ 211 FIELD_MODIFY(PPE_MRU_MTU_CTRL_W0_MRU, tbl_cfg, value) 212#define PPE_MRU_MTU_CTRL_SET_MRU_CMD(tbl_cfg, value) \ 213 FIELD_MODIFY(PPE_MRU_MTU_CTRL_W0_MRU_CMD, tbl_cfg, value) 214#define PPE_MRU_MTU_CTRL_SET_MTU(tbl_cfg, value) \ 215 FIELD_MODIFY(PPE_MRU_MTU_CTRL_W0_MTU, tbl_cfg, value) 216#define PPE_MRU_MTU_CTRL_SET_MTU_CMD(tbl_cfg, value) \ 217 FIELD_MODIFY(PPE_MRU_MTU_CTRL_W0_MTU_CMD, tbl_cfg, value) 218#define PPE_MRU_MTU_CTRL_SET_RX_CNT_EN(tbl_cfg, value) \ 219 FIELD_MODIFY(PPE_MRU_MTU_CTRL_W1_RX_CNT_EN, (tbl_cfg) + 0x1, value) 220#define PPE_MRU_MTU_CTRL_SET_TX_CNT_EN(tbl_cfg, value) \ 221 FIELD_MODIFY(PPE_MRU_MTU_CTRL_W1_TX_CNT_EN, (tbl_cfg) + 0x1, value) 222 223/* PPE service code configuration for destination port and counter. */ 224#define PPE_IN_L2_SERVICE_TBL_ADDR 0x66000 225#define PPE_IN_L2_SERVICE_TBL_ENTRIES 256 226#define PPE_IN_L2_SERVICE_TBL_INC 0x10 227#define PPE_IN_L2_SERVICE_TBL_DST_PORT_ID_VALID BIT(0) 228#define PPE_IN_L2_SERVICE_TBL_DST_PORT_ID GENMASK(4, 1) 229#define PPE_IN_L2_SERVICE_TBL_DST_DIRECTION BIT(5) 230#define PPE_IN_L2_SERVICE_TBL_DST_BYPASS_BITMAP GENMASK(29, 6) 231#define PPE_IN_L2_SERVICE_TBL_RX_CNT_EN BIT(30) 232#define PPE_IN_L2_SERVICE_TBL_TX_CNT_EN BIT(31) 233 234/* L2 Port configurations */ 235#define PPE_L2_VP_PORT_TBL_ADDR 0x98000 236#define PPE_L2_VP_PORT_TBL_ENTRIES 256 237#define PPE_L2_VP_PORT_TBL_INC 0x10 238#define PPE_L2_VP_PORT_W0_INVALID_VSI_FWD_EN BIT(0) 239#define PPE_L2_VP_PORT_W0_DST_INFO GENMASK(9, 2) 240 241#define PPE_L2_PORT_SET_INVALID_VSI_FWD_EN(tbl_cfg, value) \ 242 FIELD_MODIFY(PPE_L2_VP_PORT_W0_INVALID_VSI_FWD_EN, tbl_cfg, value) 243#define PPE_L2_PORT_SET_DST_INFO(tbl_cfg, value) \ 244 FIELD_MODIFY(PPE_L2_VP_PORT_W0_DST_INFO, tbl_cfg, value) 245 246/* Port RX and RX drop counters. */ 247#define PPE_PORT_RX_CNT_TBL_ADDR 0x150000 248#define PPE_PORT_RX_CNT_TBL_ENTRIES 256 249#define PPE_PORT_RX_CNT_TBL_INC 0x20 250 251/* Physical port RX and RX drop counters. */ 252#define PPE_PHY_PORT_RX_CNT_TBL_ADDR 0x156000 253#define PPE_PHY_PORT_RX_CNT_TBL_ENTRIES 8 254#define PPE_PHY_PORT_RX_CNT_TBL_INC 0x20 255 256/* Counters for the packet to CPU port. */ 257#define PPE_DROP_CPU_CNT_TBL_ADDR 0x160000 258#define PPE_DROP_CPU_CNT_TBL_ENTRIES 1280 259#define PPE_DROP_CPU_CNT_TBL_INC 0x10 260 261/* VLAN counters. */ 262#define PPE_VLAN_CNT_TBL_ADDR 0x178000 263#define PPE_VLAN_CNT_TBL_ENTRIES 64 264#define PPE_VLAN_CNT_TBL_INC 0x10 265 266/* PPE L2 counters. */ 267#define PPE_PRE_L2_CNT_TBL_ADDR 0x17c000 268#define PPE_PRE_L2_CNT_TBL_ENTRIES 64 269#define PPE_PRE_L2_CNT_TBL_INC 0x20 270 271/* Port TX drop counters. */ 272#define PPE_PORT_TX_DROP_CNT_TBL_ADDR 0x17d000 273#define PPE_PORT_TX_DROP_CNT_TBL_ENTRIES 8 274#define PPE_PORT_TX_DROP_CNT_TBL_INC 0x10 275 276/* Virtual port TX counters. */ 277#define PPE_VPORT_TX_DROP_CNT_TBL_ADDR 0x17e000 278#define PPE_VPORT_TX_DROP_CNT_TBL_ENTRIES 256 279#define PPE_VPORT_TX_DROP_CNT_TBL_INC 0x10 280 281/* Counters for the tunnel packet. */ 282#define PPE_TPR_PKT_CNT_TBL_ADDR 0x1d0080 283#define PPE_TPR_PKT_CNT_TBL_ENTRIES 8 284#define PPE_TPR_PKT_CNT_TBL_INC 4 285 286/* Counters for the all packet received. */ 287#define PPE_IPR_PKT_CNT_TBL_ADDR 0x1e0080 288#define PPE_IPR_PKT_CNT_TBL_ENTRIES 8 289#define PPE_IPR_PKT_CNT_TBL_INC 4 290 291/* PPE service code configuration for the tunnel packet. */ 292#define PPE_TL_SERVICE_TBL_ADDR 0x306000 293#define PPE_TL_SERVICE_TBL_ENTRIES 256 294#define PPE_TL_SERVICE_TBL_INC 4 295#define PPE_TL_SERVICE_TBL_BYPASS_BITMAP GENMASK(31, 0) 296 297/* Port scheduler global config. */ 298#define PPE_PSCH_SCH_DEPTH_CFG_ADDR 0x400000 299#define PPE_PSCH_SCH_DEPTH_CFG_INC 4 300#define PPE_PSCH_SCH_DEPTH_CFG_SCH_DEPTH GENMASK(7, 0) 301 302/* PPE queue level scheduler configurations. */ 303#define PPE_L0_FLOW_MAP_TBL_ADDR 0x402000 304#define PPE_L0_FLOW_MAP_TBL_ENTRIES 300 305#define PPE_L0_FLOW_MAP_TBL_INC 0x10 306#define PPE_L0_FLOW_MAP_TBL_FLOW_ID GENMASK(5, 0) 307#define PPE_L0_FLOW_MAP_TBL_C_PRI GENMASK(8, 6) 308#define PPE_L0_FLOW_MAP_TBL_E_PRI GENMASK(11, 9) 309#define PPE_L0_FLOW_MAP_TBL_C_NODE_WT GENMASK(21, 12) 310#define PPE_L0_FLOW_MAP_TBL_E_NODE_WT GENMASK(31, 22) 311 312#define PPE_L0_C_FLOW_CFG_TBL_ADDR 0x404000 313#define PPE_L0_C_FLOW_CFG_TBL_ENTRIES 512 314#define PPE_L0_C_FLOW_CFG_TBL_INC 0x10 315#define PPE_L0_C_FLOW_CFG_TBL_NODE_ID GENMASK(7, 0) 316#define PPE_L0_C_FLOW_CFG_TBL_NODE_CREDIT_UNIT BIT(8) 317 318#define PPE_L0_E_FLOW_CFG_TBL_ADDR 0x406000 319#define PPE_L0_E_FLOW_CFG_TBL_ENTRIES 512 320#define PPE_L0_E_FLOW_CFG_TBL_INC 0x10 321#define PPE_L0_E_FLOW_CFG_TBL_NODE_ID GENMASK(7, 0) 322#define PPE_L0_E_FLOW_CFG_TBL_NODE_CREDIT_UNIT BIT(8) 323 324#define PPE_L0_FLOW_PORT_MAP_TBL_ADDR 0x408000 325#define PPE_L0_FLOW_PORT_MAP_TBL_ENTRIES 300 326#define PPE_L0_FLOW_PORT_MAP_TBL_INC 0x10 327#define PPE_L0_FLOW_PORT_MAP_TBL_PORT_NUM GENMASK(3, 0) 328 329#define PPE_L0_COMP_CFG_TBL_ADDR 0x428000 330#define PPE_L0_COMP_CFG_TBL_ENTRIES 300 331#define PPE_L0_COMP_CFG_TBL_INC 0x10 332#define PPE_L0_COMP_CFG_TBL_SHAPER_METER_LEN GENMASK(1, 0) 333#define PPE_L0_COMP_CFG_TBL_NODE_METER_LEN GENMASK(3, 2) 334 335/* PPE queue to Ethernet DMA ring mapping table. */ 336#define PPE_RING_Q_MAP_TBL_ADDR 0x42a000 337#define PPE_RING_Q_MAP_TBL_ENTRIES 24 338#define PPE_RING_Q_MAP_TBL_INC 0x40 339 340/* Table addresses for per-queue dequeue setting. */ 341#define PPE_DEQ_OPR_TBL_ADDR 0x430000 342#define PPE_DEQ_OPR_TBL_ENTRIES 300 343#define PPE_DEQ_OPR_TBL_INC 0x10 344#define PPE_DEQ_OPR_TBL_DEQ_DISABLE BIT(0) 345 346/* PPE flow level scheduler configurations. */ 347#define PPE_L1_FLOW_MAP_TBL_ADDR 0x440000 348#define PPE_L1_FLOW_MAP_TBL_ENTRIES 64 349#define PPE_L1_FLOW_MAP_TBL_INC 0x10 350#define PPE_L1_FLOW_MAP_TBL_FLOW_ID GENMASK(3, 0) 351#define PPE_L1_FLOW_MAP_TBL_C_PRI GENMASK(6, 4) 352#define PPE_L1_FLOW_MAP_TBL_E_PRI GENMASK(9, 7) 353#define PPE_L1_FLOW_MAP_TBL_C_NODE_WT GENMASK(19, 10) 354#define PPE_L1_FLOW_MAP_TBL_E_NODE_WT GENMASK(29, 20) 355 356#define PPE_L1_C_FLOW_CFG_TBL_ADDR 0x442000 357#define PPE_L1_C_FLOW_CFG_TBL_ENTRIES 64 358#define PPE_L1_C_FLOW_CFG_TBL_INC 0x10 359#define PPE_L1_C_FLOW_CFG_TBL_NODE_ID GENMASK(5, 0) 360#define PPE_L1_C_FLOW_CFG_TBL_NODE_CREDIT_UNIT BIT(6) 361 362#define PPE_L1_E_FLOW_CFG_TBL_ADDR 0x444000 363#define PPE_L1_E_FLOW_CFG_TBL_ENTRIES 64 364#define PPE_L1_E_FLOW_CFG_TBL_INC 0x10 365#define PPE_L1_E_FLOW_CFG_TBL_NODE_ID GENMASK(5, 0) 366#define PPE_L1_E_FLOW_CFG_TBL_NODE_CREDIT_UNIT BIT(6) 367 368#define PPE_L1_FLOW_PORT_MAP_TBL_ADDR 0x446000 369#define PPE_L1_FLOW_PORT_MAP_TBL_ENTRIES 64 370#define PPE_L1_FLOW_PORT_MAP_TBL_INC 0x10 371#define PPE_L1_FLOW_PORT_MAP_TBL_PORT_NUM GENMASK(3, 0) 372 373#define PPE_L1_COMP_CFG_TBL_ADDR 0x46a000 374#define PPE_L1_COMP_CFG_TBL_ENTRIES 64 375#define PPE_L1_COMP_CFG_TBL_INC 0x10 376#define PPE_L1_COMP_CFG_TBL_SHAPER_METER_LEN GENMASK(1, 0) 377#define PPE_L1_COMP_CFG_TBL_NODE_METER_LEN GENMASK(3, 2) 378 379/* PPE port scheduler configurations for egress. */ 380#define PPE_PSCH_SCH_CFG_TBL_ADDR 0x47a000 381#define PPE_PSCH_SCH_CFG_TBL_ENTRIES 128 382#define PPE_PSCH_SCH_CFG_TBL_INC 0x10 383#define PPE_PSCH_SCH_CFG_TBL_DES_PORT GENMASK(3, 0) 384#define PPE_PSCH_SCH_CFG_TBL_ENS_PORT GENMASK(7, 4) 385#define PPE_PSCH_SCH_CFG_TBL_ENS_PORT_BITMAP GENMASK(15, 8) 386#define PPE_PSCH_SCH_CFG_TBL_DES_SECOND_PORT_EN BIT(16) 387#define PPE_PSCH_SCH_CFG_TBL_DES_SECOND_PORT GENMASK(20, 17) 388 389/* There are 15 BM ports and 4 BM groups supported by PPE. 390 * BM port (0-7) is for EDMA port 0, BM port (8-13) is for 391 * PPE physical port 1-6 and BM port 14 is for EIP port. 392 */ 393#define PPE_BM_PORT_FC_MODE_ADDR 0x600100 394#define PPE_BM_PORT_FC_MODE_ENTRIES 15 395#define PPE_BM_PORT_FC_MODE_INC 0x4 396#define PPE_BM_PORT_FC_MODE_EN BIT(0) 397 398#define PPE_BM_PORT_GROUP_ID_ADDR 0x600180 399#define PPE_BM_PORT_GROUP_ID_ENTRIES 15 400#define PPE_BM_PORT_GROUP_ID_INC 0x4 401#define PPE_BM_PORT_GROUP_ID_SHARED_GROUP_ID GENMASK(1, 0) 402 403/* Counters for PPE buffers used for packets cached. */ 404#define PPE_BM_USED_CNT_TBL_ADDR 0x6001c0 405#define PPE_BM_USED_CNT_TBL_ENTRIES 15 406#define PPE_BM_USED_CNT_TBL_INC 0x4 407#define PPE_BM_USED_CNT_VAL GENMASK(10, 0) 408 409/* Counters for PPE buffers used for packets received after pause frame sent. */ 410#define PPE_BM_REACT_CNT_TBL_ADDR 0x600240 411#define PPE_BM_REACT_CNT_TBL_ENTRIES 15 412#define PPE_BM_REACT_CNT_TBL_INC 0x4 413#define PPE_BM_REACT_CNT_VAL GENMASK(8, 0) 414 415#define PPE_BM_SHARED_GROUP_CFG_ADDR 0x600290 416#define PPE_BM_SHARED_GROUP_CFG_ENTRIES 4 417#define PPE_BM_SHARED_GROUP_CFG_INC 0x4 418#define PPE_BM_SHARED_GROUP_CFG_SHARED_LIMIT GENMASK(10, 0) 419 420#define PPE_BM_PORT_FC_CFG_TBL_ADDR 0x601000 421#define PPE_BM_PORT_FC_CFG_TBL_ENTRIES 15 422#define PPE_BM_PORT_FC_CFG_TBL_INC 0x10 423#define PPE_BM_PORT_FC_W0_REACT_LIMIT GENMASK(8, 0) 424#define PPE_BM_PORT_FC_W0_RESUME_THRESHOLD GENMASK(17, 9) 425#define PPE_BM_PORT_FC_W0_RESUME_OFFSET GENMASK(28, 18) 426#define PPE_BM_PORT_FC_W0_CEILING_LOW GENMASK(31, 29) 427#define PPE_BM_PORT_FC_W1_CEILING_HIGH GENMASK(7, 0) 428#define PPE_BM_PORT_FC_W1_WEIGHT GENMASK(10, 8) 429#define PPE_BM_PORT_FC_W1_DYNAMIC BIT(11) 430#define PPE_BM_PORT_FC_W1_PRE_ALLOC GENMASK(22, 12) 431 432#define PPE_BM_PORT_FC_SET_REACT_LIMIT(tbl_cfg, value) \ 433 FIELD_MODIFY(PPE_BM_PORT_FC_W0_REACT_LIMIT, tbl_cfg, value) 434#define PPE_BM_PORT_FC_SET_RESUME_THRESHOLD(tbl_cfg, value) \ 435 FIELD_MODIFY(PPE_BM_PORT_FC_W0_RESUME_THRESHOLD, tbl_cfg, value) 436#define PPE_BM_PORT_FC_SET_RESUME_OFFSET(tbl_cfg, value) \ 437 FIELD_MODIFY(PPE_BM_PORT_FC_W0_RESUME_OFFSET, tbl_cfg, value) 438#define PPE_BM_PORT_FC_SET_CEILING_LOW(tbl_cfg, value) \ 439 FIELD_MODIFY(PPE_BM_PORT_FC_W0_CEILING_LOW, tbl_cfg, value) 440#define PPE_BM_PORT_FC_SET_CEILING_HIGH(tbl_cfg, value) \ 441 FIELD_MODIFY(PPE_BM_PORT_FC_W1_CEILING_HIGH, (tbl_cfg) + 0x1, value) 442#define PPE_BM_PORT_FC_SET_WEIGHT(tbl_cfg, value) \ 443 FIELD_MODIFY(PPE_BM_PORT_FC_W1_WEIGHT, (tbl_cfg) + 0x1, value) 444#define PPE_BM_PORT_FC_SET_DYNAMIC(tbl_cfg, value) \ 445 FIELD_MODIFY(PPE_BM_PORT_FC_W1_DYNAMIC, (tbl_cfg) + 0x1, value) 446#define PPE_BM_PORT_FC_SET_PRE_ALLOC(tbl_cfg, value) \ 447 FIELD_MODIFY(PPE_BM_PORT_FC_W1_PRE_ALLOC, (tbl_cfg) + 0x1, value) 448 449/* The queue base configurations based on destination port, 450 * service code or CPU code. 451 */ 452#define PPE_UCAST_QUEUE_MAP_TBL_ADDR 0x810000 453#define PPE_UCAST_QUEUE_MAP_TBL_ENTRIES 3072 454#define PPE_UCAST_QUEUE_MAP_TBL_INC 0x10 455#define PPE_UCAST_QUEUE_MAP_TBL_PROFILE_ID GENMASK(3, 0) 456#define PPE_UCAST_QUEUE_MAP_TBL_QUEUE_ID GENMASK(11, 4) 457 458/* The queue offset configurations based on RSS hash value. */ 459#define PPE_UCAST_HASH_MAP_TBL_ADDR 0x830000 460#define PPE_UCAST_HASH_MAP_TBL_ENTRIES 4096 461#define PPE_UCAST_HASH_MAP_TBL_INC 0x10 462#define PPE_UCAST_HASH_MAP_TBL_HASH GENMASK(7, 0) 463 464/* The queue offset configurations based on PPE internal priority. */ 465#define PPE_UCAST_PRIORITY_MAP_TBL_ADDR 0x842000 466#define PPE_UCAST_PRIORITY_MAP_TBL_ENTRIES 256 467#define PPE_UCAST_PRIORITY_MAP_TBL_INC 0x10 468#define PPE_UCAST_PRIORITY_MAP_TBL_CLASS GENMASK(3, 0) 469 470/* PPE unicast queue (0-255) configurations. */ 471#define PPE_AC_UNICAST_QUEUE_CFG_TBL_ADDR 0x848000 472#define PPE_AC_UNICAST_QUEUE_CFG_TBL_ENTRIES 256 473#define PPE_AC_UNICAST_QUEUE_CFG_TBL_INC 0x10 474#define PPE_AC_UNICAST_QUEUE_CFG_W0_EN BIT(0) 475#define PPE_AC_UNICAST_QUEUE_CFG_W0_WRED_EN BIT(1) 476#define PPE_AC_UNICAST_QUEUE_CFG_W0_FC_EN BIT(2) 477#define PPE_AC_UNICAST_QUEUE_CFG_W0_CLR_AWARE BIT(3) 478#define PPE_AC_UNICAST_QUEUE_CFG_W0_GRP_ID GENMASK(5, 4) 479#define PPE_AC_UNICAST_QUEUE_CFG_W0_PRE_LIMIT GENMASK(16, 6) 480#define PPE_AC_UNICAST_QUEUE_CFG_W0_DYNAMIC BIT(17) 481#define PPE_AC_UNICAST_QUEUE_CFG_W0_WEIGHT GENMASK(20, 18) 482#define PPE_AC_UNICAST_QUEUE_CFG_W0_THRESHOLD GENMASK(31, 21) 483#define PPE_AC_UNICAST_QUEUE_CFG_W3_GRN_RESUME GENMASK(23, 13) 484 485#define PPE_AC_UNICAST_QUEUE_SET_EN(tbl_cfg, value) \ 486 FIELD_MODIFY(PPE_AC_UNICAST_QUEUE_CFG_W0_EN, tbl_cfg, value) 487#define PPE_AC_UNICAST_QUEUE_SET_GRP_ID(tbl_cfg, value) \ 488 FIELD_MODIFY(PPE_AC_UNICAST_QUEUE_CFG_W0_GRP_ID, tbl_cfg, value) 489#define PPE_AC_UNICAST_QUEUE_SET_PRE_LIMIT(tbl_cfg, value) \ 490 FIELD_MODIFY(PPE_AC_UNICAST_QUEUE_CFG_W0_PRE_LIMIT, tbl_cfg, value) 491#define PPE_AC_UNICAST_QUEUE_SET_DYNAMIC(tbl_cfg, value) \ 492 FIELD_MODIFY(PPE_AC_UNICAST_QUEUE_CFG_W0_DYNAMIC, tbl_cfg, value) 493#define PPE_AC_UNICAST_QUEUE_SET_WEIGHT(tbl_cfg, value) \ 494 FIELD_MODIFY(PPE_AC_UNICAST_QUEUE_CFG_W0_WEIGHT, tbl_cfg, value) 495#define PPE_AC_UNICAST_QUEUE_SET_THRESHOLD(tbl_cfg, value) \ 496 FIELD_MODIFY(PPE_AC_UNICAST_QUEUE_CFG_W0_THRESHOLD, tbl_cfg, value) 497#define PPE_AC_UNICAST_QUEUE_SET_GRN_RESUME(tbl_cfg, value) \ 498 FIELD_MODIFY(PPE_AC_UNICAST_QUEUE_CFG_W3_GRN_RESUME, (tbl_cfg) + 0x3, value) 499 500/* PPE multicast queue (256-299) configurations. */ 501#define PPE_AC_MULTICAST_QUEUE_CFG_TBL_ADDR 0x84a000 502#define PPE_AC_MULTICAST_QUEUE_CFG_TBL_ENTRIES 44 503#define PPE_AC_MULTICAST_QUEUE_CFG_TBL_INC 0x10 504#define PPE_AC_MULTICAST_QUEUE_CFG_W0_EN BIT(0) 505#define PPE_AC_MULTICAST_QUEUE_CFG_W0_FC_EN BIT(1) 506#define PPE_AC_MULTICAST_QUEUE_CFG_W0_CLR_AWARE BIT(2) 507#define PPE_AC_MULTICAST_QUEUE_CFG_W0_GRP_ID GENMASK(4, 3) 508#define PPE_AC_MULTICAST_QUEUE_CFG_W0_PRE_LIMIT GENMASK(15, 5) 509#define PPE_AC_MULTICAST_QUEUE_CFG_W0_THRESHOLD GENMASK(26, 16) 510#define PPE_AC_MULTICAST_QUEUE_CFG_W2_RESUME GENMASK(17, 7) 511 512#define PPE_AC_MULTICAST_QUEUE_SET_EN(tbl_cfg, value) \ 513 FIELD_MODIFY(PPE_AC_MULTICAST_QUEUE_CFG_W0_EN, tbl_cfg, value) 514#define PPE_AC_MULTICAST_QUEUE_SET_GRN_GRP_ID(tbl_cfg, value) \ 515 FIELD_MODIFY(PPE_AC_MULTICAST_QUEUE_CFG_W0_GRP_ID, tbl_cfg, value) 516#define PPE_AC_MULTICAST_QUEUE_SET_GRN_PRE_LIMIT(tbl_cfg, value) \ 517 FIELD_MODIFY(PPE_AC_MULTICAST_QUEUE_CFG_W0_PRE_LIMIT, tbl_cfg, value) 518#define PPE_AC_MULTICAST_QUEUE_SET_GRN_THRESHOLD(tbl_cfg, value) \ 519 FIELD_MODIFY(PPE_AC_MULTICAST_QUEUE_CFG_W0_THRESHOLD, tbl_cfg, value) 520#define PPE_AC_MULTICAST_QUEUE_SET_GRN_RESUME(tbl_cfg, value) \ 521 FIELD_MODIFY(PPE_AC_MULTICAST_QUEUE_CFG_W2_RESUME, (tbl_cfg) + 0x2, value) 522 523/* PPE admission control group (0-3) configurations */ 524#define PPE_AC_GRP_CFG_TBL_ADDR 0x84c000 525#define PPE_AC_GRP_CFG_TBL_ENTRIES 0x4 526#define PPE_AC_GRP_CFG_TBL_INC 0x10 527#define PPE_AC_GRP_W0_AC_EN BIT(0) 528#define PPE_AC_GRP_W0_AC_FC_EN BIT(1) 529#define PPE_AC_GRP_W0_CLR_AWARE BIT(2) 530#define PPE_AC_GRP_W0_THRESHOLD_LOW GENMASK(31, 25) 531#define PPE_AC_GRP_W1_THRESHOLD_HIGH GENMASK(3, 0) 532#define PPE_AC_GRP_W1_BUF_LIMIT GENMASK(14, 4) 533#define PPE_AC_GRP_W2_RESUME_GRN GENMASK(15, 5) 534#define PPE_AC_GRP_W2_PRE_ALLOC GENMASK(26, 16) 535 536#define PPE_AC_GRP_SET_BUF_LIMIT(tbl_cfg, value) \ 537 FIELD_MODIFY(PPE_AC_GRP_W1_BUF_LIMIT, (tbl_cfg) + 0x1, value) 538 539/* Counters for packets handled by unicast queues (0-255). */ 540#define PPE_AC_UNICAST_QUEUE_CNT_TBL_ADDR 0x84e000 541#define PPE_AC_UNICAST_QUEUE_CNT_TBL_ENTRIES 256 542#define PPE_AC_UNICAST_QUEUE_CNT_TBL_INC 0x10 543#define PPE_AC_UNICAST_QUEUE_CNT_TBL_PEND_CNT GENMASK(12, 0) 544 545/* Counters for packets handled by multicast queues (256-299). */ 546#define PPE_AC_MULTICAST_QUEUE_CNT_TBL_ADDR 0x852000 547#define PPE_AC_MULTICAST_QUEUE_CNT_TBL_ENTRIES 44 548#define PPE_AC_MULTICAST_QUEUE_CNT_TBL_INC 0x10 549#define PPE_AC_MULTICAST_QUEUE_CNT_TBL_PEND_CNT GENMASK(12, 0) 550 551/* Table addresses for per-queue enqueue setting. */ 552#define PPE_ENQ_OPR_TBL_ADDR 0x85c000 553#define PPE_ENQ_OPR_TBL_ENTRIES 300 554#define PPE_ENQ_OPR_TBL_INC 0x10 555#define PPE_ENQ_OPR_TBL_ENQ_DISABLE BIT(0) 556 557/* Unicast drop count includes the possible drops with WRED for the green, 558 * yellow and red categories. 559 */ 560#define PPE_UNICAST_DROP_CNT_TBL_ADDR 0x9e0000 561#define PPE_UNICAST_DROP_CNT_TBL_ENTRIES 1536 562#define PPE_UNICAST_DROP_CNT_TBL_INC 0x10 563#define PPE_UNICAST_DROP_TYPES 6 564#define PPE_UNICAST_DROP_FORCE_OFFSET 3 565 566/* There are 16 multicast queues dedicated to CPU port 0. Multicast drop 567 * count includes the force drop for green, yellow and red category packets. 568 */ 569#define PPE_P0_MULTICAST_DROP_CNT_TBL_ADDR 0x9f0000 570#define PPE_P0_MULTICAST_DROP_CNT_TBL_ENTRIES 48 571#define PPE_P0_MULTICAST_DROP_CNT_TBL_INC 0x10 572#define PPE_P0_MULTICAST_QUEUE_NUM 16 573 574/* Each PPE physical port has four dedicated multicast queues, providing 575 * a total of 12 entries per port. The multicast drop count includes forced 576 * drops for green, yellow, and red category packets. 577 */ 578#define PPE_MULTICAST_QUEUE_PORT_ADDR_INC 0x1000 579#define PPE_MULTICAST_DROP_CNT_TBL_INC 0x10 580#define PPE_MULTICAST_DROP_TYPES 3 581#define PPE_MULTICAST_QUEUE_NUM 4 582#define PPE_MULTICAST_DROP_CNT_TBL_ENTRIES 12 583 584#define PPE_CPU_PORT_MULTICAST_FORCE_DROP_CNT_TBL_ADDR(mq_offset) \ 585 (PPE_P0_MULTICAST_DROP_CNT_TBL_ADDR + \ 586 (mq_offset) * PPE_P0_MULTICAST_DROP_CNT_TBL_INC * \ 587 PPE_MULTICAST_DROP_TYPES) 588 589#define PPE_P1_MULTICAST_DROP_CNT_TBL_ADDR \ 590 (PPE_P0_MULTICAST_DROP_CNT_TBL_ADDR + PPE_MULTICAST_QUEUE_PORT_ADDR_INC) 591#endif
~/
Read-only file preview.