--- ./source/private_module/pcie/pcie_datapath.c	2022-03-26 13:56:00.823787411 +0000
+++ ./source/private_module/pcie/pcie_datapath.c.hotpatch	2022-03-28 11:28:45.807331498 +0000
@@ -935,7 +935,7 @@
 {
     return *v_pstPcieConn->pucRemoteLinkStatus;
 }
-
+extern OSP_VOID PCIE_RecvAndSendResentHandle_patch(PCIE_CONN_S *v_pstPcieConn, pfnSetIodStopProcFunc v_SetIodStopFunc, XNET_DEBUG_FLAG_E v_emSimuFlag);
 /*****************************************************************************
      : PCIE_Send
    : PCIEͺ
@@ -1011,7 +1011,7 @@
     }
 
     /* ֹͣʹɾ */
-    PCIE_RecvAndSendResentHandle(pstPcieConn, PCIE_SetIodStopSend, XNET_DEBUG_PCIE_TX_REQ_BLOCK);
+    PCIE_RecvAndSendResentHandle_patch(pstPcieConn, PCIE_SetIodStopSend, XNET_DEBUG_PCIE_TX_REQ_BLOCK);
 
     /* ʱͳ */
     XNET_STAT_XNET_DEV_SEND(pstXltlConn, pstPcieConn->uiSendMsgNum);
@@ -1685,7 +1685,7 @@
     }
 
     /* ֹͣմɾ */
-    PCIE_RecvAndSendResentHandle(pstPcieConn, PCIE_SetIodStopRecv, XNET_DEBUG_PCIE_RX_REQ_BLOCK);
+    PCIE_RecvAndSendResentHandle_patch(pstPcieConn, PCIE_SetIodStopRecv, XNET_DEBUG_PCIE_RX_REQ_BLOCK);
 
     /* IO·ʱͳϢ */
     XNET_STAT_XNET_DEV_RECV(pstXltlConn, uiRecvCount);
@@ -1909,6 +1909,62 @@
     return g_uiOneRecvNum;
 }
 
+OSP_VOID PCIE_RecvAndSendResentHandle_patch(PCIE_CONN_S *v_pstPcieConn,
+                                                    pfnSetIodStopProcFunc v_SetIodStopFunc, 
+                                                    XNET_DEBUG_FLAG_E v_emSimuFlag)
+{
+    OSP_U32 uiChannel;
+    OSP_U8 ucLinkStatus;
+    // DTS2022011006798: ͣiodǰж״̬Ϊactiveֱ˳
+    XLTL_CONN_S *pstXltlConn = PCIECONN_TO_XLTLCONN(v_pstPcieConn);
+
+    if (likely(XLTL_CONN_ACTIVED == pstXltlConn->uiState))
+    {
+        return;
+    }
+
+    ucLinkStatus = PCIE_GetHbConnStatus(v_pstPcieConn);
+	
+    if (unlikely(XNET_IS_STAT_RESENT(ucLinkStatus)))
+    {
+        OSAL_SPIN_LOCK_Lock(&v_pstPcieConn->stStatusLock);
+        uiChannel = v_pstPcieConn->uiChannelID;
+
+        /* SFMEAע, ģͨ */
+        if ((PCIE_HEARTBEAT_CHANNEL == uiChannel) 
+            && (XNET_CheckDebugFlag(XNET_DEBUG_PCIE_REQ_BLOCK)))
+        {
+            OSAL_SPIN_LOCK_Unlock(&v_pstPcieConn->stStatusLock);
+            return;
+        }
+
+        /* SFMEAע, ģⵥͨreq */
+        if ((PCIE_HEARTBEAT_CHANNEL + 1 == uiChannel) 
+            && (XNET_CheckDebugFlag(v_emSimuFlag)))
+        {
+            OSAL_SPIN_LOCK_Unlock(&v_pstPcieConn->stStatusLock);
+            return;
+        }
+
+        ucLinkStatus = PCIE_GetHbConnStatus(v_pstPcieConn);
+        if (XNET_IS_STAT_RESENT(ucLinkStatus))
+        {
+            v_SetIodStopFunc(v_pstPcieConn);
+
+            /* 1ͨӦһ, ͨպͷͶֹͣdelete connect */
+            if ((XUTIL_CheckWorkerReqIdle(&v_pstPcieConn->stRXWorkerReq))
+                && (XUTIL_CheckWorkerReqIdle(&v_pstPcieConn->stTXWorkerReq)))
+            {
+                PCIE_ResentMsgDecRef(v_pstPcieConn);
+                PCIE_DeleteConnect(v_pstPcieConn);
+            }
+        }
+        OSAL_SPIN_LOCK_Unlock(&v_pstPcieConn->stStatusLock);
+    }
+
+    return;
+}
+
 EXPORT_SYMBOL(PCIE_SetMaxRecvMsgNumOnceSch);
 
 #ifdef __cplusplus
