aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_isr.c
diff options
context:
space:
mode:
authorAnirban Chakraborty <anirban.chakraborty@qlogic.com>2009-08-04 19:12:13 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-08-22 18:52:19 -0400
commiteb94114bfd894dce1955e2ece575db544cecd921 (patch)
tree2c55270c760568cdaa63697af50046ebfb3c579e /drivers/scsi/qla2xxx/qla_isr.c
parent80de7efa6d6a4eb72e917bb2d814f38332090d45 (diff)
[SCSI] qla2xxx: Fix a bug that clears the interrupt status register for the base queue
The interrupt handler clears the interrupt status register for response updates in the base queue while working in the multique mode. This could lead to missing interrupt for async events, mail box completions etc. as these are also handled in the base queue. The fix ensures that the interrupt bit is not cleared for response updates in the ISR when the driver is working in multiqueue mode. Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_isr.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 40014f3407b9..74fa6f992041 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1769,8 +1769,10 @@ qla24xx_msix_rsp_q(int irq, void *dev_id)
1769 1769
1770 vha = qla25xx_get_host(rsp); 1770 vha = qla25xx_get_host(rsp);
1771 qla24xx_process_response_queue(vha, rsp); 1771 qla24xx_process_response_queue(vha, rsp);
1772 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT); 1772 if (!ha->mqenable) {
1773 1773 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT);
1774 RD_REG_DWORD_RELAXED(&reg->hccr);
1775 }
1774 spin_unlock_irq(&ha->hardware_lock); 1776 spin_unlock_irq(&ha->hardware_lock);
1775 1777
1776 return IRQ_HANDLED; 1778 return IRQ_HANDLED;