lpfc: Fix RegLogin failed error seen on Lancer FC during port bounce
Fix RegLogin failed error seen on Lancer FC during port bounce Fix the statemachine and ref counting. Signed-off-by: Dick Kennedy <dick.kennedy@avagotech.com> Signed-off-by: James Smart <james.smart@avagotech.com> Reviewed-by: Hannes Reinicke <hare@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
d6de08cc46
commit
4b7789b71c
@ -3779,14 +3779,17 @@ lpfc_cmpl_els_rsp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
|
||||
lpfc_nlp_set_state(vport, ndlp,
|
||||
NLP_STE_REG_LOGIN_ISSUE);
|
||||
}
|
||||
|
||||
ndlp->nlp_flag |= NLP_REG_LOGIN_SEND;
|
||||
if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT)
|
||||
!= MBX_NOT_FINISHED)
|
||||
goto out;
|
||||
else
|
||||
/* Decrement the ndlp reference count we
|
||||
* set for this failed mailbox command.
|
||||
*/
|
||||
lpfc_nlp_put(ndlp);
|
||||
|
||||
/* Decrement the ndlp reference count we
|
||||
* set for this failed mailbox command.
|
||||
*/
|
||||
lpfc_nlp_put(ndlp);
|
||||
ndlp->nlp_flag &= ~NLP_REG_LOGIN_SEND;
|
||||
|
||||
/* ELS rsp: Cannot issue reg_login for <NPortid> */
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS,
|
||||
@ -3843,6 +3846,7 @@ out:
|
||||
* the routine lpfc_els_free_iocb.
|
||||
*/
|
||||
cmdiocb->context1 = NULL;
|
||||
|
||||
}
|
||||
|
||||
lpfc_els_free_iocb(phba, cmdiocb);
|
||||
|
@ -3452,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);
|
||||
|
@ -2325,6 +2325,9 @@ lpfc_cmpl_reglogin_npr_node(struct lpfc_vport *vport,
|
||||
if (vport->phba->sli_rev < LPFC_SLI_REV4)
|
||||
ndlp->nlp_rpi = mb->un.varWords[0];
|
||||
ndlp->nlp_flag |= NLP_RPI_REGISTERED;
|
||||
if (ndlp->nlp_flag & NLP_LOGO_ACC) {
|
||||
lpfc_unreg_rpi(vport, ndlp);
|
||||
}
|
||||
} else {
|
||||
if (ndlp->nlp_flag & NLP_NODEV_REMOVE) {
|
||||
lpfc_drop_node(vport, ndlp);
|
||||
|
Loading…
Reference in New Issue
Block a user