diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_isr.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index bc07d8392ac3..1692a883f4de 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
@@ -1928,7 +1928,7 @@ qla24xx_msix_rsp_q(int irq, void *dev_id) | |||
1928 | 1928 | ||
1929 | vha = qla25xx_get_host(rsp); | 1929 | vha = qla25xx_get_host(rsp); |
1930 | qla24xx_process_response_queue(vha, rsp); | 1930 | qla24xx_process_response_queue(vha, rsp); |
1931 | if (!ha->mqenable) { | 1931 | if (!ha->flags.disable_msix_handshake) { |
1932 | WRT_REG_DWORD(®->hccr, HCCRX_CLR_RISC_INT); | 1932 | WRT_REG_DWORD(®->hccr, HCCRX_CLR_RISC_INT); |
1933 | RD_REG_DWORD_RELAXED(®->hccr); | 1933 | RD_REG_DWORD_RELAXED(®->hccr); |
1934 | } | 1934 | } |
@@ -1942,6 +1942,7 @@ qla25xx_msix_rsp_q(int irq, void *dev_id) | |||
1942 | { | 1942 | { |
1943 | struct qla_hw_data *ha; | 1943 | struct qla_hw_data *ha; |
1944 | struct rsp_que *rsp; | 1944 | struct rsp_que *rsp; |
1945 | struct device_reg_24xx __iomem *reg; | ||
1945 | 1946 | ||
1946 | rsp = (struct rsp_que *) dev_id; | 1947 | rsp = (struct rsp_que *) dev_id; |
1947 | if (!rsp) { | 1948 | if (!rsp) { |
@@ -1951,6 +1952,14 @@ qla25xx_msix_rsp_q(int irq, void *dev_id) | |||
1951 | } | 1952 | } |
1952 | ha = rsp->hw; | 1953 | ha = rsp->hw; |
1953 | 1954 | ||
1955 | /* Clear the interrupt, if enabled, for this response queue */ | ||
1956 | if (rsp->options & ~BIT_6) { | ||
1957 | reg = &ha->iobase->isp24; | ||
1958 | spin_lock_irq(&ha->hardware_lock); | ||
1959 | WRT_REG_DWORD(®->hccr, HCCRX_CLR_RISC_INT); | ||
1960 | RD_REG_DWORD_RELAXED(®->hccr); | ||
1961 | spin_unlock_irq(&ha->hardware_lock); | ||
1962 | } | ||
1954 | queue_work_on((int) (rsp->id - 1), ha->wq, &rsp->q_work); | 1963 | queue_work_on((int) (rsp->id - 1), ha->wq, &rsp->q_work); |
1955 | 1964 | ||
1956 | return IRQ_HANDLED; | 1965 | return IRQ_HANDLED; |