diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_reset.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_reset.c
index 4c4f631..9327f0c 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_reset.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_reset.c
@@ -177,10 +177,17 @@
 void mtk_dump_netsys_info(void *_eth)
 {
 	struct mtk_eth *eth = _eth;
+	u32 id = 0;
 
 	mtk_dump_reg(eth, "FE", 0x0, 0x500);
 	mtk_dump_reg(eth, "ADMA", PDMA_BASE, 0x300);
-	mtk_dump_reg(eth, "QDMA", QDMA_BASE, 0x400);
+	for (id = 0; id < MTK_QDMA_PAGE_NUM; id++){
+		mtk_w32(eth, id, MTK_QDMA_PAGE);
+		pr_info("\nQDMA PAGE:%x ",mtk_r32(eth, MTK_QDMA_PAGE));
+		mtk_dump_reg(eth, "QDMA", QDMA_BASE, 0x100);
+		mtk_w32(eth, 0, MTK_QDMA_PAGE);
+	}
+	mtk_dump_reg(eth, "QDMA", MTK_QRX_BASE_PTR0, 0x300);
 	mtk_dump_reg(eth, "WDMA", WDMA_BASE(0), 0x600);
 	mtk_dump_reg(eth, "PPE", 0x2200, 0x200);
 	mtk_dump_reg(eth, "GMAC", 0x10000, 0x300);
@@ -192,6 +199,10 @@
 	static u32 timestamp = 0;
 	static u32 err_cnt1 = 0, err_cnt2 = 0, err_cnt3 = 0;
 	static u32 prev_wdidx = 0;
+	unsigned int mib_base = MTK_GDM1_TX_GBCNT;
+	static u32 prev_gdm2rx = 0;
+
+	/*wdma tx path*/
 	u32 cur_wdidx = mtk_r32(eth, MTK_WDMA_DTX_PTR(0));
 	u32 is_wtx_busy = mtk_r32(eth, MTK_WDMA_GLO_CFG(0)) & MTK_TX_DMA_BUSY;
 	u32 is_oq_free = ((mtk_r32(eth, MTK_PSE_OQ_STA(0)) & 0x01FF0000) == 0) &&
@@ -199,20 +210,31 @@
 			 ((mtk_r32(eth, MTK_PSE_OQ_STA(4)) & 0x01FF0000) == 0);
 	u32 is_cdm_full =
 		!(mtk_r32(eth, MTK_WDMA_TX_DBG_MON0(0)) & MTK_CDM_TXFIFO_RDY);
+	/*qdma tx path*/
 	u32 is_qfsm_hang = mtk_r32(eth, MTK_QDMA_FSM) != 0;
 	u32 is_qfwd_hang = mtk_r32(eth, MTK_QDMA_FWD_CNT) == 0;
 	u32 is_qfq_hang = mtk_r32(eth, MTK_QDMA_FQ_CNT) !=
 			  ((MTK_DMA_SIZE << 16) | MTK_DMA_SIZE);
+	u32 is_gdm1_tx = (mtk_r32(eth, MTK_FE_GDM1_FSM) & 0xFFFF0000) > 0;
+	u32 is_gdm2_tx = (mtk_r32(eth, MTK_FE_GDM2_FSM) & 0xFFFF0000) > 0;
+	u32 is_gmac1_tx = (mtk_r32(eth, MTK_MAC_FSM(0)) & 0xFF000000) != 0x1000000;
+	u32 is_gmac2_tx = (mtk_r32(eth, MTK_MAC_FSM(1)) & 0xFF000000) != 0x1000000;
+	u32 gdm1_fc =  mtk_r32(eth, mib_base+0x24);
+	u32 gdm2_fc =  mtk_r32(eth, mib_base+0x64);
+	/*adma rx path*/
 	u32 is_oq0_stuck = (mtk_r32(eth, MTK_PSE_OQ_STA(0)) & 0x1FF) != 0;
 	u32 is_cdm1_busy = (mtk_r32(eth, MTK_FE_CDM1_FSM) & 0xFFFF0000) != 0;
 	u32 is_adma_busy = ((mtk_r32(eth, MTK_ADMA_RX_DBG0) & 0x1F) == 0) &&
 			   ((mtk_r32(eth, MTK_ADMA_RX_DBG0) & 0x40) == 0);
+	/*gmac2 rx path*/
+	u32 gmac2_rx = (mtk_r32(eth, MTK_MAC_FSM(1)) & 0xFF0000 != 0x10000);
+	u32 gdm2_rx_cnt =  mtk_r32(eth, mib_base+0x48);
 
 	if (cur_wdidx == prev_wdidx && is_wtx_busy &&
 	    is_oq_free && is_cdm_full) {
 		err_cnt1++;
 		if (err_cnt1 >= 3) {
-			pr_info("WDMA CDM Hang !\n");
+			pr_info("WDMA CDM Info\n");
 			pr_info("============== Time: %d ================\n",
 				timestamp);
 			pr_info("err_cnt1 = %d", err_cnt1);
@@ -242,10 +264,11 @@
 				schedule_work(&eth->pending_work);
 			}
 		}
-	} else if (is_qfsm_hang && is_qfwd_hang) {
+	} else if (is_qfsm_hang && is_qfwd_hang &&
+		((is_gdm1_tx && is_gmac1_tx && (gdm1_fc < 1)) || (is_gdm2_tx && is_gmac2_tx && (gdm2_fc < 1)))) {
 		err_cnt2++;
 		if (err_cnt2 >= 3) {
-			pr_info("QDMA Tx Hang !\n");
+			pr_info("QDMA Tx Info\n");
 			pr_info("============== Time: %d ================\n",
 				timestamp);
 			pr_info("err_cnt2 = %d", err_cnt2);
@@ -259,6 +282,8 @@
 				mtk_r32(eth, MTK_QDMA_FWD_CNT));
 			pr_info("MTK_QDMA_FQ_CNT = 0x%x\n",
 				mtk_r32(eth, MTK_QDMA_FQ_CNT));
+			pr_info("GDM1 FC = 0x%x\n",gdm1_fc);
+			pr_info("GDM2 FC = 0x%x\n",gdm2_fc);
 			pr_info("==============================\n");
 
 			if ((atomic_read(&reset_lock) == 0) &&
@@ -270,7 +295,7 @@
 	} else if (is_oq0_stuck && is_cdm1_busy && is_adma_busy) {
 		err_cnt3++;
 		if (err_cnt3 >= 3) {
-			pr_info("ADMA Rx Hang !\n");
+			pr_info("ADMA Rx Info\n");
 			pr_info("============== Time: %d ================\n",
 				timestamp);
 			pr_info("err_cnt3 = %d", err_cnt3);
@@ -291,6 +316,22 @@
 				schedule_work(&eth->pending_work);
 			}
 		}
+	}else if ((gdm2_rx_cnt == prev_gdm2rx) && gmac2_rx) {
+		err_cnt3++;
+		if (err_cnt3 >= 3) {
+			pr_info("GMAC Rx Info\n");
+			pr_info("============== Time: %d ================\n",
+				timestamp);
+			pr_info("err_cnt3 = %d", err_cnt3);
+			pr_info("gmac2_rx = %d\n", gmac2_rx);
+			pr_info("gdm2_rx_cnt = %d\n", gdm2_rx_cnt);
+			pr_info("==============================\n");
+			if ((atomic_read(&reset_lock) == 0) &&
+			    (atomic_read(&force) == 0)){
+				atomic_inc(&force);
+				schedule_work(&eth->pending_work);
+			}
+		}
 	} else {
 		err_cnt1 = 0;
 		err_cnt2 = 0;
@@ -298,6 +339,7 @@
 	}
 
 	prev_wdidx = cur_wdidx;
+	prev_gdm2rx = gdm2_rx_cnt;
 	mod_timer(&eth->mtk_dma_monitor_timer, jiffies + 1 * HZ);
 }
 
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h
index 7fa0db8..d75c28f 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -475,6 +475,7 @@
 
 /* QDMA TX NUM */
 #define MTK_QDMA_TX_NUM		16
+#define MTK_QDMA_PAGE_NUM	8
 #define MTK_QDMA_TX_MASK	((MTK_QDMA_TX_NUM) - 1)
 #define QID_LOW_BITS(x)         ((x) & 0xf)
 #define QID_HIGH_BITS(x)        ((((x) >> 4) & 0x3) << 20)
