diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli.c')
| -rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 17 |
1 files changed, 11 insertions, 6 deletions
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: |
