aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/lpfc/lpfc_scsi.c5
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c17
2 files changed, 16 insertions, 6 deletions
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index 094f18f1fa05..f93799873721 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -467,6 +467,11 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
467 sdev = cmd->device; 467 sdev = cmd->device;
468 cmd->scsi_done(cmd); 468 cmd->scsi_done(cmd);
469 469
470 if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
471 lpfc_release_scsi_buf(phba, lpfc_cmd);
472 return;
473 }
474
470 if (!result && pnode != NULL && 475 if (!result && pnode != NULL &&
471 ((jiffies - pnode->last_ramp_up_time) > 476 ((jiffies - pnode->last_ramp_up_time) >
472 LPFC_Q_RAMP_UP_INTERVAL * HZ) && 477 LPFC_Q_RAMP_UP_INTERVAL * HZ) &&
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index d08fd89dd44f..764aadbec71b 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -1154,12 +1154,17 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
1154 cmdiocbq = lpfc_sli_iocbq_lookup(phba, pring, 1154 cmdiocbq = lpfc_sli_iocbq_lookup(phba, pring,
1155 &rspiocbq); 1155 &rspiocbq);
1156 if ((cmdiocbq) && (cmdiocbq->iocb_cmpl)) { 1156 if ((cmdiocbq) && (cmdiocbq->iocb_cmpl)) {
1157 spin_unlock_irqrestore( 1157 if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
1158 phba->host->host_lock, iflag); 1158 (cmdiocbq->iocb_cmpl)(phba, cmdiocbq,
1159 (cmdiocbq->iocb_cmpl)(phba, cmdiocbq, 1159 &rspiocbq);
1160 &rspiocbq); 1160 } else {
1161 spin_lock_irqsave(phba->host->host_lock, 1161 spin_unlock_irqrestore(
1162 iflag); 1162 phba->host->host_lock, iflag);
1163 (cmdiocbq->iocb_cmpl)(phba, cmdiocbq,
1164 &rspiocbq);
1165 spin_lock_irqsave(phba->host->host_lock,
1166 iflag);
1167 }
1163 } 1168 }
1164 break; 1169 break;
1165 default: 1170 default: