struct Scsi_Host  *shost = lpfc_shost_from_vport(vport);
        IOCB_t *irsp;
        struct lpfc_nodelist *ndlp;
+       char *mode;
 
        /* we pass cmdiocb to state machine which needs rspiocb as well */
        cmdiocb->context_un.rsp_iocb = rspiocb;
                        goto out;
                }
 
+               /* If we don't send GFT_ID to Fabric, a PRLI error
+                * could be expected.
+                */
+               if ((vport->fc_flag & FC_FABRIC) ||
+                   (vport->cfg_enable_fc4_type != LPFC_ENABLE_BOTH))
+                       mode = KERN_ERR;
+               else
+                       mode = KERN_INFO;
+
                /* PRLI failed */
-               lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS,
+               lpfc_printf_vlog(vport, mode, LOG_ELS,
                                 "2754 PRLI failure DID:%06X Status:x%x/x%x, "
                                 "data: x%x\n",
                                 ndlp->nlp_DID, irsp->ulpStatus,
        uint32_t payload_len, length, nportid, *cmd;
        int rscn_cnt;
        int rscn_id = 0, hba_id = 0;
-       int i;
+       int i, tmo;
 
        pcmd = (struct lpfc_dmabuf *) cmdiocb->context2;
        lp = (uint32_t *) pcmd->virt;
 
                spin_lock_irq(shost->host_lock);
                vport->fc_flag |= FC_RSCN_DEFERRED;
+
+               /* Restart disctmo if its already running */
+               if (vport->fc_flag & FC_DISC_TMO) {
+                       tmo = ((phba->fc_ratov * 3) + 3);
+                       mod_timer(&vport->fc_disctmo,
+                                 jiffies + msecs_to_jiffies(1000 * tmo));
+               }
                if ((rscn_cnt < FC_MAX_HOLD_RSCN) &&
                    !(vport->fc_flag & FC_RSCN_DISCOVERY)) {
                        vport->fc_flag |= FC_RSCN_MODE;