IPQ5424 has more BM ports than IPQ9574, so the BM used, reacted and overflow-drop counter tables have more entries on IPQ5424, and the used and reacted counter tables are located at different addresses. The BM silent-drop counter table on the other hand has only 4 entries on IPQ5424, versus 8 on IPQ9574. Signed-off-by: Luo Jie --- drivers/net/ethernet/qualcomm/ppe/ppe_debugfs.c | 14 +++++----- drivers/net/ethernet/qualcomm/ppe/ppe_regs.h | 36 ++++++++++++++++++++----- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/qualcomm/ppe/ppe_debugfs.c b/drivers/net/ethernet/qualcomm/ppe/ppe_debugfs.c index fd959a76ff43..8d5a6fad8337 100644 --- a/drivers/net/ethernet/qualcomm/ppe/ppe_debugfs.c +++ b/drivers/net/ethernet/qualcomm/ppe/ppe_debugfs.c @@ -201,7 +201,7 @@ static int ppe_bm_counter_get(struct ppe_device *ppe_dev, struct seq_file *seq) seq_printf(seq, "%-24s", "BM SILENT_DROP:"); tag = 0; - for (i = 0; i < PPE_DROP_CNT_TBL_ENTRIES; i++) { + for (i = 0; i < PPE_DROP_CNT_TBL_ENTRIES(ppe_dev); i++) { reg = PPE_DROP_CNT_TBL_ADDR + i * PPE_DROP_CNT_TBL_INC; ret = ppe_pkt_cnt_get(ppe_dev, reg, PPE_PKT_CNT_SIZE_1WORD, &pkt_cnt, NULL); @@ -225,7 +225,7 @@ static int ppe_bm_counter_get(struct ppe_device *ppe_dev, struct seq_file *seq) */ seq_printf(seq, "%-24s", "BM OVERFLOW_DROP:"); tag = 0; - for (i = 0; i < PPE_DROP_STAT_TBL_ENTRIES; i++) { + for (i = 0; i < PPE_DROP_STAT_TBL_ENTRIES(ppe_dev); i++) { reg = PPE_DROP_STAT_TBL_ADDR + PPE_DROP_STAT_TBL_INC * i; ret = ppe_pkt_cnt_get(ppe_dev, reg, PPE_PKT_CNT_SIZE_3WORD, @@ -248,8 +248,8 @@ static int ppe_bm_counter_get(struct ppe_device *ppe_dev, struct seq_file *seq) /* The number of currently occupied buffers, that can't be flushed. */ seq_printf(seq, "%-24s", "BM USED/REACT:"); tag = 0; - for (i = 0; i < PPE_BM_USED_CNT_TBL_ENTRIES; i++) { - reg = PPE_BM_USED_CNT_TBL_ADDR + i * PPE_BM_USED_CNT_TBL_INC; + for (i = 0; i < PPE_BM_USED_CNT_TBL_ENTRIES(ppe_dev); i++) { + reg = PPE_BM_USED_CNT_TBL_ADDR(ppe_dev) + i * PPE_BM_USED_CNT_TBL_INC; ret = regmap_read(ppe_dev->regmap, reg, &val); if (ret) { dev_err(ppe_dev->dev, "CNT ERROR %d\n", ret); @@ -261,7 +261,7 @@ static int ppe_bm_counter_get(struct ppe_device *ppe_dev, struct seq_file *seq) */ pkt_cnt = FIELD_GET(PPE_BM_USED_CNT_VAL, val); - reg = PPE_BM_REACT_CNT_TBL_ADDR + i * PPE_BM_REACT_CNT_TBL_INC; + reg = PPE_BM_REACT_CNT_TBL_ADDR(ppe_dev) + i * PPE_BM_REACT_CNT_TBL_INC; ret = regmap_read(ppe_dev->regmap, reg, &val); if (ret) { dev_err(ppe_dev->dev, "CNT ERROR %d\n", ret); @@ -723,12 +723,12 @@ static ssize_t ppe_packet_counter_write(struct file *file, switch (entry->counter_type) { case PPE_CNT_BM: - for (i = 0; i < PPE_DROP_CNT_TBL_ENTRIES; i++) { + for (i = 0; i < PPE_DROP_CNT_TBL_ENTRIES(ppe_dev); i++) { reg = PPE_DROP_CNT_TBL_ADDR + i * PPE_DROP_CNT_TBL_INC; ppe_tbl_pkt_cnt_clear(ppe_dev, reg, PPE_PKT_CNT_SIZE_1WORD); } - for (i = 0; i < PPE_DROP_STAT_TBL_ENTRIES; i++) { + for (i = 0; i < PPE_DROP_STAT_TBL_ENTRIES(ppe_dev); i++) { reg = PPE_DROP_STAT_TBL_ADDR + PPE_DROP_STAT_TBL_INC * i; ppe_tbl_pkt_cnt_clear(ppe_dev, reg, PPE_PKT_CNT_SIZE_3WORD); } diff --git a/drivers/net/ethernet/qualcomm/ppe/ppe_regs.h b/drivers/net/ethernet/qualcomm/ppe/ppe_regs.h index 089aa34b7732..d08ab02bdf79 100644 --- a/drivers/net/ethernet/qualcomm/ppe/ppe_regs.h +++ b/drivers/net/ethernet/qualcomm/ppe/ppe_regs.h @@ -18,12 +18,20 @@ /* PPE drop counters. */ #define PPE_DROP_CNT_TBL_ADDR 0xb024 -#define PPE_DROP_CNT_TBL_ENTRIES 8 +#define PPE_DROP_CNT_TBL_IPQ9574_ENTRIES 8 +#define PPE_DROP_CNT_TBL_IPQ5424_ENTRIES 4 +#define PPE_DROP_CNT_TBL_ENTRIES(ppe_dev) \ + ((ppe_dev)->type == IPQ5424_PPE ? PPE_DROP_CNT_TBL_IPQ5424_ENTRIES : \ + PPE_DROP_CNT_TBL_IPQ9574_ENTRIES) #define PPE_DROP_CNT_TBL_INC 4 /* BM port drop counters. */ #define PPE_DROP_STAT_TBL_ADDR 0xe000 -#define PPE_DROP_STAT_TBL_ENTRIES 30 +#define PPE_DROP_STAT_TBL_IPQ9574_ENTRIES 30 +#define PPE_DROP_STAT_TBL_IPQ5424_ENTRIES 38 +#define PPE_DROP_STAT_TBL_ENTRIES(ppe_dev) \ + ((ppe_dev)->type == IPQ5424_PPE ? PPE_DROP_STAT_TBL_IPQ5424_ENTRIES : \ + PPE_DROP_STAT_TBL_IPQ9574_ENTRIES) #define PPE_DROP_STAT_TBL_INC 0x10 /* Egress VLAN counters. */ @@ -426,14 +434,30 @@ #define PPE_BM_PORT_GROUP_ID_SHARED_GROUP_ID GENMASK(1, 0) /* Counters for PPE buffers used for packets cached. */ -#define PPE_BM_USED_CNT_TBL_ADDR 0x6001c0 -#define PPE_BM_USED_CNT_TBL_ENTRIES 15 +#define PPE_BM_USED_CNT_TBL_IPQ9574_ADDR 0x6001c0 +#define PPE_BM_USED_CNT_TBL_IPQ5424_ADDR 0x600220 +#define PPE_BM_USED_CNT_TBL_ADDR(ppe_dev) \ + ((ppe_dev)->type == IPQ5424_PPE ? PPE_BM_USED_CNT_TBL_IPQ5424_ADDR : \ + PPE_BM_USED_CNT_TBL_IPQ9574_ADDR) +#define PPE_BM_USED_CNT_TBL_IPQ9574_ENTRIES 15 +#define PPE_BM_USED_CNT_TBL_IPQ5424_ENTRIES 19 +#define PPE_BM_USED_CNT_TBL_ENTRIES(ppe_dev) \ + ((ppe_dev)->type == IPQ5424_PPE ? PPE_BM_USED_CNT_TBL_IPQ5424_ENTRIES : \ + PPE_BM_USED_CNT_TBL_IPQ9574_ENTRIES) #define PPE_BM_USED_CNT_TBL_INC 0x4 #define PPE_BM_USED_CNT_VAL GENMASK(10, 0) /* Counters for PPE buffers used for packets received after pause frame sent. */ -#define PPE_BM_REACT_CNT_TBL_ADDR 0x600240 -#define PPE_BM_REACT_CNT_TBL_ENTRIES 15 +#define PPE_BM_REACT_CNT_TBL_IPQ9574_ADDR 0x600240 +#define PPE_BM_REACT_CNT_TBL_IPQ5424_ADDR 0x600280 +#define PPE_BM_REACT_CNT_TBL_ADDR(ppe_dev) \ + ((ppe_dev)->type == IPQ5424_PPE ? PPE_BM_REACT_CNT_TBL_IPQ5424_ADDR : \ + PPE_BM_REACT_CNT_TBL_IPQ9574_ADDR) +#define PPE_BM_REACT_CNT_TBL_IPQ9574_ENTRIES 15 +#define PPE_BM_REACT_CNT_TBL_IPQ5424_ENTRIES 19 +#define PPE_BM_REACT_CNT_TBL_ENTRIES(ppe_dev) \ + ((ppe_dev)->type == IPQ5424_PPE ? PPE_BM_REACT_CNT_TBL_IPQ5424_ENTRIES : \ + PPE_BM_REACT_CNT_TBL_IPQ9574_ENTRIES) #define PPE_BM_REACT_CNT_TBL_INC 0x4 #define PPE_BM_REACT_CNT_VAL GENMASK(8, 0) -- 2.43.0