mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
[SCSI] lpfc 8.1.1 : Fixes for short cable pulls
Cause: Link bounces were causing discovery ELS's to be killed. Driver was not properly flushing ELS commands upon the subsequent link bounces. Thus, processing of ELS post link bounce erroneously assumed discovery failure and device loss. Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
2fb70f7993
commit
6281bfe000
2 changed files with 6 additions and 0 deletions
|
@ -720,6 +720,7 @@ lpfc_cmpl_els_plogi(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
|
|||
/* Do not call DSM for lpfc_els_abort'ed ELS cmds */
|
||||
if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
|
||||
((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
|
||||
(irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
|
||||
(irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
|
||||
disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC);
|
||||
}
|
||||
|
@ -869,6 +870,7 @@ lpfc_cmpl_els_prli(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
|
|||
/* Do not call DSM for lpfc_els_abort'ed ELS cmds */
|
||||
if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
|
||||
((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
|
||||
(irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
|
||||
(irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
|
||||
goto out;
|
||||
}
|
||||
|
@ -1054,6 +1056,7 @@ lpfc_cmpl_els_adisc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
|
|||
/* Do not call DSM for lpfc_els_abort'ed ELS cmds */
|
||||
if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
|
||||
((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
|
||||
(irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
|
||||
(irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
|
||||
disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC);
|
||||
}
|
||||
|
@ -1205,6 +1208,7 @@ lpfc_cmpl_els_logo(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
|
|||
/* Do not call DSM for lpfc_els_abort'ed ELS cmds */
|
||||
if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
|
||||
((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
|
||||
(irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
|
||||
(irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
|
||||
goto out;
|
||||
}
|
||||
|
|
|
@ -563,6 +563,8 @@ lpfc_handle_latt(struct lpfc_hba * phba)
|
|||
|
||||
rc = -EIO;
|
||||
|
||||
/* Cleanup any outstanding ELS commands */
|
||||
lpfc_els_flush_cmd(phba);
|
||||
|
||||
psli->slistat.link_event++;
|
||||
lpfc_read_la(phba, pmb, mp);
|
||||
|
|
Loading…
Reference in a new issue