--- ./source/private_module/unf_common/unf_service.c	2020-11-10 04:01:28.930501375 +0000
+++ ./source/private_module/unf_common/unf_service.c.hotpatch	2020-11-10 08:51:30.054501375 +0000
@@ -137,13 +137,13 @@
                                             UNF_U32       v_uiPortFeature);
 
 
-/*----------------------------------------------*
-* ȫֱ                                     *
-*----------------------------------------------*/
 
-/*----------------------------------------------*
-* ģ鼶                                   *
-*----------------------------------------------*/
+
+UNF_U32 UNF_CheckRPortNeedDelayPlogiByFeature(UNF_LPORT_S * v_pstLPort, UNF_RPORT_S * v_pstRPort);
+UNF_VOID UNF_CheckRPortNeedDelayPrliByNodeName(UNF_LPORT_S * v_pstLPort, UNF_RPORT_S * v_pstRPort);
+
+
+
 
 /*----------------------------------------------*
 *                                      *
@@ -6438,12 +6438,7 @@
         pstRPort->uiOptions = uiPortFeature;
     }
 
-    UNF_CheckRPortNeedDelayPrli(pstLPort, pstRPort, pstRPort->uiOptions);
-
-    /* BEGIN: Modified by , 2013/12/2  ⵥ:DTS2013112207212, 
-       ޸ԭ:ΪTGTPLOGI֮ҪһtimerȴPRLIʱ¼ */
-    UNF_ScheduleOpenWork(pstLPort, pstRPort);
-    /* END: Modified by , 2013/12/2, ⵥ:DTS2013112207212 */
+    UNF_CheckRPortNeedDelayPrliByNodeName(pstLPort, pstRPort);
 
     /*RPortPRLI_WAIT״̬*/
     UNF_TRACE(0x3869, UNF_LOG_LOGIN_ATT, UNF_MAJOR,
@@ -6463,6 +6458,11 @@
  ú  :
    :
 
+
+
+
+
+
  ޸ʷ      :
   1.       : 2013226
            : z00228969
@@ -12835,9 +12835,9 @@
 
     UNF_OS_SPIN_LOCK_IRQSAVE(&(pstRPort->stRPortStateLock), ulFlag);
     pstRPort->uiNPortId = uiNPortId;
-    UNF_RPortStateMa(pstRPort, UNF_EVENT_RPORT_ENTER_PLOGI);
     UNF_OS_SPIN_UNLOCK_IRQRESTORE(&(pstRPort->stRPortStateLock), ulFlag);
-    uiRet = UNF_SendPlogi(pstLPort, pstRPort);
+
+    uiRet = UNF_CheckRPortNeedDelayPlogiByFeature(pstLPort, pstRPort);
     if (RETURN_OK != uiRet)
     {
         UNF_TRACE(0x4040, UNF_LOG_LOGIN_ATT, UNF_MAJOR,
@@ -14441,12 +14441,7 @@
 
         UNF_SavePlogiParams(pstLPort, pstRPort, pstLoginParms);
 
-        UNF_CheckRPortNeedDelayPrli(pstLPort, pstRPort, pstRPort->uiOptions);
-
-        /* BEGIN: Modified by , 2013/12/2  ⵥ:DTS2013112207212, 
-           ޸ԭ:ΪTGTPLOGI֮ҪһtimerȴPRLIʱ¼ */
-        UNF_ScheduleOpenWork(pstLPort, pstRPort);
-        /* END: Modified by , 2013/12/2, ⵥ:DTS2013112207212 */
+        UNF_CheckRPortNeedDelayPrliByNodeName(pstLPort, pstRPort);
     }
 
     return;
@@ -14490,7 +14485,12 @@
 *           : panjiwei
 *    ޸   : ⵥ:DTS2017122903444 ޸
 *                 1յԶ˻ظRJT
-
+*
+*
+*
+*
+*
+*
 *****************************************************************************/
 UNF_VOID UNF_PlogiCallback(UNF_VOID * v_pstLPort,
                            UNF_VOID * v_pstRPort,
@@ -17213,3 +17213,39 @@
     return uiResCnt;
 }
 
+UNF_VOID UNF_CheckRPortNeedDelayPrliByNodeName(UNF_LPORT_S * v_pstLPort, UNF_RPORT_S * v_pstRPort)
+{
+    if (v_pstLPort->ullNodeName == v_pstRPort->ullNodeName) {
+        UNF_TRACE(0x3159, UNF_LOG_REG_ATT, UNF_MAJOR, "LPort(0x%x_0x%x), RPort(0x%x) WWPN(0x%llx) is same WWN, remove rport.",
+                  v_pstLPort->uiPortId, v_pstLPort->uiNPortId, v_pstRPort->uiNPortId, v_pstRPort->ullPortName);
+        UNF_RPortImmediateLinkDown(v_pstLPort, v_pstRPort);
+        return;
+    }
+    
+    UNF_CheckRPortNeedDelayPrli(v_pstLPort, v_pstRPort, v_pstRPort->uiOptions);
+    
+    /* BEGIN: Modified by , 2013/12/2  ⵥ:DTS2013112207212, 
+       ޸ԭ:ΪTGTPLOGI֮ҪһtimerȴPRLIʱ¼ */
+    UNF_ScheduleOpenWork(v_pstLPort, v_pstRPort);
+    /* END: Modified by , 2013/12/2, ⵥ:DTS2013112207212 */
+
+    return;
+}        
+
+UNF_U32 UNF_CheckRPortNeedDelayPlogiByFeature(UNF_LPORT_S * v_pstLPort, UNF_RPORT_S * v_pstRPort)
+{
+    UNF_U32       uiPortFeature;
+    
+    /* Զ˴INIѾREADY,GFF_IDʧֱӷPLOGIᵼ״̬, ܵ޷ */
+    uiPortFeature = FC_GetPortFeature(v_pstRPort->ullPortName);
+    uiPortFeature &= UNF_PORT_MODE_BOTH;
+    if (uiPortFeature == UNF_PORT_MODE_UNKNOWN) {
+        UNF_TRACE(0x4040, UNF_LOG_LOGIN_ATT, UNF_MAJOR, "LPort(0x%x) RPort(0x%x)'s FC4 feature is unknown.",
+                  v_pstLPort->uiPortId, v_pstRPort->uiNPortId);
+    }
+
+    UNF_CheckRPortNeedDelayPlogi(v_pstLPort, v_pstRPort, uiPortFeature);
+
+    return RETURN_OK;
+}
+                      
\ No newline at end of file
