[SCSI] qla2xxx: changes in multiq code

Following changes have been made:
 1. Scan outstanding commands only in the queue where it is submitted
 2. Update queue registers directly in the fast path
 3. Queue specific BAR is remapped only for multiq capable adapters

Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index eb4b43d..d5fb79a 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1446,7 +1446,6 @@
 qla24xx_process_response_queue(struct rsp_que *rsp)
 {
 	struct qla_hw_data *ha = rsp->hw;
-	device_reg_t __iomem *reg = ISP_QUE_REG(ha, rsp->id);
 	struct sts_entry_24xx *pkt;
 	struct scsi_qla_host *vha;
 
@@ -1500,10 +1499,7 @@
 	}
 
 	/* Adjust ring index */
-	if (ha->mqenable)
-		WRT_REG_DWORD(&reg->isp25mq.rsp_q_out, rsp->ring_index);
-	else
-		WRT_REG_DWORD(&reg->isp24.rsp_q_out, rsp->ring_index);
+	ha->isp_ops->wrt_rsp_reg(ha, rsp->id, rsp->ring_index);
 }
 
 static void
@@ -1702,7 +1698,7 @@
 	if (!rsp->id)
 		msix_disabled_hccr &= __constant_cpu_to_le32(BIT_22);
 	else
-		msix_disabled_hccr &= BIT_6;
+		msix_disabled_hccr &= __constant_cpu_to_le32(BIT_6);
 
 	qla24xx_process_response_queue(rsp);
 
@@ -2077,3 +2073,17 @@
 	return ret;
 }
 
+void
+qla25xx_wrt_rsp_reg(struct qla_hw_data *ha, uint16_t id, uint16_t index)
+{
+	device_reg_t __iomem *reg = (void *) ha->mqiobase + QLA_QUE_PAGE * id;
+	WRT_REG_DWORD(&reg->isp25mq.rsp_q_out, index);
+}
+
+void
+qla24xx_wrt_rsp_reg(struct qla_hw_data *ha, uint16_t id, uint16_t index)
+{
+	device_reg_t __iomem *reg = (void *) ha->iobase;
+	WRT_REG_DWORD(&reg->isp24.rsp_q_out, index);
+}
+