diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_els.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index 60f5cca0abe9..3567de613162 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -1848,9 +1848,12 @@ static void | |||
1848 | lpfc_cmpl_els_acc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb, | 1848 | lpfc_cmpl_els_acc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb, |
1849 | struct lpfc_iocbq * rspiocb) | 1849 | struct lpfc_iocbq * rspiocb) |
1850 | { | 1850 | { |
1851 | IOCB_t *irsp; | ||
1851 | struct lpfc_nodelist *ndlp; | 1852 | struct lpfc_nodelist *ndlp; |
1852 | LPFC_MBOXQ_t *mbox = NULL; | 1853 | LPFC_MBOXQ_t *mbox = NULL; |
1853 | 1854 | ||
1855 | irsp = &rspiocb->iocb; | ||
1856 | |||
1854 | ndlp = (struct lpfc_nodelist *) cmdiocb->context1; | 1857 | ndlp = (struct lpfc_nodelist *) cmdiocb->context1; |
1855 | if (cmdiocb->context_un.mbox) | 1858 | if (cmdiocb->context_un.mbox) |
1856 | mbox = cmdiocb->context_un.mbox; | 1859 | mbox = cmdiocb->context_un.mbox; |
@@ -1893,9 +1896,15 @@ lpfc_cmpl_els_acc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb, | |||
1893 | mempool_free( mbox, phba->mbox_mem_pool); | 1896 | mempool_free( mbox, phba->mbox_mem_pool); |
1894 | } else { | 1897 | } else { |
1895 | mempool_free( mbox, phba->mbox_mem_pool); | 1898 | mempool_free( mbox, phba->mbox_mem_pool); |
1896 | if (ndlp->nlp_flag & NLP_ACC_REGLOGIN) { | 1899 | /* Do not call NO_LIST for lpfc_els_abort'ed ELS cmds */ |
1897 | lpfc_nlp_list(phba, ndlp, NLP_NO_LIST); | 1900 | if (!((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && |
1898 | ndlp = NULL; | 1901 | ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || |
1902 | (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) || | ||
1903 | (irsp->un.ulpWord[4] == IOERR_SLI_DOWN)))) { | ||
1904 | if (ndlp->nlp_flag & NLP_ACC_REGLOGIN) { | ||
1905 | lpfc_nlp_list(phba, ndlp, NLP_NO_LIST); | ||
1906 | ndlp = NULL; | ||
1907 | } | ||
1899 | } | 1908 | } |
1900 | } | 1909 | } |
1901 | } | 1910 | } |