aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_sli.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c20
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);