diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 7ddf52682271..086f95261605 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c | |||
@@ -601,15 +601,8 @@ __lpfc_sli_release_iocbq_s4(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq) | |||
601 | list_add(&sglq->list, &phba->sli4_hba.lpfc_sgl_list); | 601 | list_add(&sglq->list, &phba->sli4_hba.lpfc_sgl_list); |
602 | 602 | ||
603 | /* Check if TXQ queue needs to be serviced */ | 603 | /* Check if TXQ queue needs to be serviced */ |
604 | if (pring->txq_cnt) { | 604 | if (pring->txq_cnt) |
605 | spin_lock_irqsave( | ||
606 | &phba->pport->work_port_lock, iflag); | ||
607 | phba->pport->work_port_events |= | ||
608 | WORKER_SERVICE_TXQ; | ||
609 | lpfc_worker_wake_up(phba); | 605 | lpfc_worker_wake_up(phba); |
610 | spin_unlock_irqrestore( | ||
611 | &phba->pport->work_port_lock, iflag); | ||
612 | } | ||
613 | } | 606 | } |
614 | } | 607 | } |
615 | 608 | ||
@@ -12757,6 +12750,7 @@ lpfc_cleanup_pending_mbox(struct lpfc_vport *vport) | |||
12757 | LPFC_MBOXQ_t *mb, *nextmb; | 12750 | LPFC_MBOXQ_t *mb, *nextmb; |
12758 | struct lpfc_dmabuf *mp; | 12751 | struct lpfc_dmabuf *mp; |
12759 | struct lpfc_nodelist *ndlp; | 12752 | struct lpfc_nodelist *ndlp; |
12753 | struct Scsi_Host *shost = lpfc_shost_from_vport(vport); | ||
12760 | 12754 | ||
12761 | spin_lock_irq(&phba->hbalock); | 12755 | spin_lock_irq(&phba->hbalock); |
12762 | list_for_each_entry_safe(mb, nextmb, &phba->sli.mboxq, list) { | 12756 | list_for_each_entry_safe(mb, nextmb, &phba->sli.mboxq, list) { |
@@ -12778,6 +12772,9 @@ lpfc_cleanup_pending_mbox(struct lpfc_vport *vport) | |||
12778 | } | 12772 | } |
12779 | ndlp = (struct lpfc_nodelist *) mb->context2; | 12773 | ndlp = (struct lpfc_nodelist *) mb->context2; |
12780 | if (ndlp) { | 12774 | if (ndlp) { |
12775 | spin_lock_irq(shost->host_lock); | ||
12776 | ndlp->nlp_flag &= ~NLP_IGNR_REG_CMPL; | ||
12777 | spin_unlock_irq(shost->host_lock); | ||
12781 | lpfc_nlp_put(ndlp); | 12778 | lpfc_nlp_put(ndlp); |
12782 | mb->context2 = NULL; | 12779 | mb->context2 = NULL; |
12783 | } | 12780 | } |
@@ -12793,6 +12790,9 @@ lpfc_cleanup_pending_mbox(struct lpfc_vport *vport) | |||
12793 | if (mb->u.mb.mbxCommand == MBX_REG_LOGIN64) { | 12790 | if (mb->u.mb.mbxCommand == MBX_REG_LOGIN64) { |
12794 | ndlp = (struct lpfc_nodelist *) mb->context2; | 12791 | ndlp = (struct lpfc_nodelist *) mb->context2; |
12795 | if (ndlp) { | 12792 | if (ndlp) { |
12793 | spin_lock_irq(shost->host_lock); | ||
12794 | ndlp->nlp_flag &= ~NLP_IGNR_REG_CMPL; | ||
12795 | spin_unlock_irq(shost->host_lock); | ||
12796 | lpfc_nlp_put(ndlp); | 12796 | lpfc_nlp_put(ndlp); |
12797 | mb->context2 = NULL; | 12797 | mb->context2 = NULL; |
12798 | } | 12798 | } |
@@ -12879,10 +12879,6 @@ lpfc_drain_txq(struct lpfc_hba *phba) | |||
12879 | spin_unlock_irqrestore(&phba->hbalock, iflags); | 12879 | spin_unlock_irqrestore(&phba->hbalock, iflags); |
12880 | } | 12880 | } |
12881 | 12881 | ||
12882 | spin_lock_irqsave(&phba->pport->work_port_lock, iflags); | ||
12883 | phba->pport->work_port_events &= ~WORKER_SERVICE_TXQ; | ||
12884 | spin_unlock_irqrestore(&phba->pport->work_port_lock, iflags); | ||
12885 | |||
12886 | /* Cancel all the IOCBs that cannot be issued */ | 12882 | /* Cancel all the IOCBs that cannot be issued */ |
12887 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, | 12883 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, |
12888 | IOERR_SLI_ABORTED); | 12884 | IOERR_SLI_ABORTED); |