Upgrade to 4.4.50-rt62
[kvmfornfv.git] / kernel / drivers / scsi / lpfc / lpfc_hbadisc.c
index bfc2442..d3668aa 100644 (file)
@@ -1083,7 +1083,7 @@ out:
 }
 
 
-static void
+void
 lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
 {
        struct lpfc_vport *vport = pmb->vport;
@@ -1113,8 +1113,10 @@ lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
        /* Start discovery by sending a FLOGI. port_state is identically
         * LPFC_FLOGI while waiting for FLOGI cmpl
         */
-       if (vport->port_state != LPFC_FLOGI || vport->fc_flag & FC_PT2PT_PLOGI)
+       if (vport->port_state != LPFC_FLOGI)
                lpfc_initial_flogi(vport);
+       else if (vport->fc_flag & FC_PT2PT)
+               lpfc_disc_start(vport);
        return;
 
 out:
@@ -2963,8 +2965,10 @@ lpfc_mbx_cmpl_reg_vfi(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
 
 out_free_mem:
        mempool_free(mboxq, phba->mbox_mem_pool);
-       lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys);
-       kfree(dmabuf);
+       if (dmabuf) {
+               lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys);
+               kfree(dmabuf);
+       }
        return;
 }
 
@@ -3448,10 +3452,10 @@ lpfc_mbx_cmpl_reg_login(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
                spin_lock_irq(shost->host_lock);
                ndlp->nlp_flag &= ~NLP_IGNR_REG_CMPL;
                spin_unlock_irq(shost->host_lock);
-       } else
-               /* Good status, call state machine */
-               lpfc_disc_state_machine(vport, ndlp, pmb,
-                               NLP_EVT_CMPL_REG_LOGIN);
+       }
+
+       /* Call state machine */
+       lpfc_disc_state_machine(vport, ndlp, pmb, NLP_EVT_CMPL_REG_LOGIN);
 
        lpfc_mbuf_free(phba, mp->virt, mp->phys);
        kfree(mp);