Add two new regs to dump and stats function:
        DSAF_PAUSE_CFG_REG
        DSAFV2_INODE_FINAL_IN_PAUSE_NUM_0_REG.

Signed-off-by: Lisheng <lisheng...@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c 
b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
index 58d6091..d10f036 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
@@ -2012,6 +2012,8 @@ void hns_dsaf_update_stats(struct dsaf_device *dsaf_dev, 
u32 node_num)
 {
        struct dsaf_hw_stats *hw_stats
                = &dsaf_dev->hw_stats[node_num];
+       bool is_ver1 = AE_IS_VER1(dsaf_dev->dsaf_ver);
+       u32 reg_tmp;
 
        hw_stats->pad_drop += dsaf_read_dev(dsaf_dev,
                DSAF_INODE_PAD_DISCARD_NUM_0_REG + 0x80 * (u64)node_num);
@@ -2021,8 +2023,12 @@ void hns_dsaf_update_stats(struct dsaf_device *dsaf_dev, 
u32 node_num)
                DSAF_INODE_FINAL_IN_PKT_NUM_0_REG + 0x80 * (u64)node_num);
        hw_stats->rx_pkt_id += dsaf_read_dev(dsaf_dev,
                DSAF_INODE_SBM_PID_NUM_0_REG + 0x80 * (u64)node_num);
-       hw_stats->rx_pause_frame += dsaf_read_dev(dsaf_dev,
-               DSAF_INODE_FINAL_IN_PAUSE_NUM_0_REG + 0x80 * (u64)node_num);
+
+       reg_tmp = is_ver1 ? DSAF_INODE_FINAL_IN_PAUSE_NUM_0_REG :
+                           DSAFV2_INODE_FINAL_IN_PAUSE_NUM_0_REG;
+       hw_stats->rx_pause_frame +=
+               dsaf_read_dev(dsaf_dev, reg_tmp + 0x80 * (u64)node_num);
+
        hw_stats->release_buf_num += dsaf_read_dev(dsaf_dev,
                DSAF_INODE_SBM_RELS_NUM_0_REG + 0x80 * (u64)node_num);
        hw_stats->sbm_drop += dsaf_read_dev(dsaf_dev,
@@ -2055,6 +2061,8 @@ void hns_dsaf_get_regs(struct dsaf_device *ddev, u32 
port, void *data)
        u32 i = 0;
        u32 j;
        u32 *p = data;
+       u32 reg_tmp;
+       bool is_ver1 = AE_IS_VER1(ddev->dsaf_ver);
 
        /* dsaf common registers */
        p[0] = dsaf_read_dev(ddev, DSAF_SRAM_INIT_OVER_0_REG);
@@ -2119,8 +2127,9 @@ void hns_dsaf_get_regs(struct dsaf_device *ddev, u32 
port, void *data)
                                DSAF_INODE_FINAL_IN_PKT_NUM_0_REG + j * 0x80);
                p[190 + i] = dsaf_read_dev(ddev,
                                DSAF_INODE_SBM_PID_NUM_0_REG + j * 0x80);
-               p[193 + i] = dsaf_read_dev(ddev,
-                               DSAF_INODE_FINAL_IN_PAUSE_NUM_0_REG + j * 0x80);
+               reg_tmp = is_ver1 ? DSAF_INODE_FINAL_IN_PAUSE_NUM_0_REG :
+                                   DSAFV2_INODE_FINAL_IN_PAUSE_NUM_0_REG;
+               p[193 + i] = dsaf_read_dev(ddev, reg_tmp + j * 0x80);
                p[196 + i] = dsaf_read_dev(ddev,
                                DSAF_INODE_SBM_RELS_NUM_0_REG + j * 0x80);
                p[199 + i] = dsaf_read_dev(ddev,
@@ -2367,8 +2376,11 @@ void hns_dsaf_get_regs(struct dsaf_device *ddev, u32 
port, void *data)
        p[496] = dsaf_read_dev(ddev, DSAF_NETPORT_CTRL_SIG_0_REG + port * 0x4);
        p[497] = dsaf_read_dev(ddev, DSAF_XGE_CTRL_SIG_CFG_0_REG + port * 0x4);
 
+       if (!is_ver1)
+               p[498] = dsaf_read_dev(ddev, DSAF_PAUSE_CFG_REG + port * 0x4);
+
        /* mark end of dsaf regs */
-       for (i = 498; i < 504; i++)
+       for (i = 499; i < 504; i++)
                p[i] = 0xdddddddd;
 }
 
-- 
1.9.1

Reply via email to