After obtaining the DTB element register, check if the PCIe link is abnormal.
Signed-off-by: Tianhao Zhang <[email protected]> --- drivers/net/zxdh/zxdh_np.c | 8 +++++++- drivers/net/zxdh/zxdh_np.h | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/net/zxdh/zxdh_np.c b/drivers/net/zxdh/zxdh_np.c index 024da113e2..89c9283498 100644 --- a/drivers/net/zxdh/zxdh_np.c +++ b/drivers/net/zxdh/zxdh_np.c @@ -3698,6 +3698,12 @@ zxdh_np_dtb_queue_unused_item_num_get(uint32_t dev_id, rc = zxdh_np_reg_read(dev_id, ZXDH_DTB_INFO_QUEUE_BUF_SPACE, 0, queue_id, p_item_num); ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "dpp_reg_read"); + + if ((*p_item_num & ZXDH_DTB_SPACE_LEFT_MASK) == ZXDH_DTB_SPACE_LEFT_MASK) { + PMD_DRV_LOG(ERR, "pcie bar abnormal."); + return ZXDH_RC_DTB_BAR_ABNORMAL; + } + return rc; } @@ -5374,7 +5380,7 @@ zxdh_np_dtb_tab_down_success_status_check(uint32_t dev_id, element_id, 0, ZXDH_DTB_TAB_ACK_UNUSED_MASK); ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "zxdh_np_dtb_item_ack_wr"); - return ZXDH_ERR; + return ZXDH_RC_DTB_OVER_TIME; } rd_cnt++; diff --git a/drivers/net/zxdh/zxdh_np.h b/drivers/net/zxdh/zxdh_np.h index b0823192e7..80eac8de37 100644 --- a/drivers/net/zxdh/zxdh_np.h +++ b/drivers/net/zxdh/zxdh_np.h @@ -94,6 +94,7 @@ #define ZXDH_DTB_TAB_ACK_SUCCESS_MASK (0xff) #define ZXDH_DTB_TAB_ACK_FAILED_MASK (0x1) #define ZXDH_DTB_TAB_ACK_CHECK_VALUE (0x12345678) +#define ZXDH_DTB_SPACE_LEFT_MASK (0x3F) #define ZXDH_DTB_TAB_ACK_VLD_SHIFT (104) #define ZXDH_DTB_TAB_ACK_STATUS_SHIFT (96) @@ -321,6 +322,8 @@ #define ZXDH_RC_DTB_DUMP_SIZE_SMALL (ZXDH_RC_DTB_BASE | 0x16) #define ZXDH_RC_DTB_SEARCH_VPORT_QUEUE_ZERO (ZXDH_RC_DTB_BASE | 0x17) #define ZXDH_RC_DTB_QUEUE_NOT_ENABLE (ZXDH_RC_DTB_BASE | 0x18) +#define ZXDH_RC_DTB_OVER_TIME (ZXDH_RC_DTB_BASE | 0x19) +#define ZXDH_RC_DTB_BAR_ABNORMAL (ZXDH_RC_DTB_BASE | 0x1a) #define ZXDH_RC_CTRLCH_BASE (0xf00) #define ZXDH_RC_CTRLCH_MSG_LEN_ZERO (ZXDH_RC_CTRLCH_BASE | 0x0) -- 2.27.0

