scsi: qla2xxx: Skip IRQ affinity for Target QPairs
authorQuinn Tran <quinn.tran@cavium.com>
Mon, 4 Dec 2017 22:44:59 +0000 (14:44 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 8 Dec 2017 02:07:01 +0000 (21:07 -0500)
Fix co-existence between Block MQ and Target Mode. Block MQ and
initiator mode requires midlayer queue mapping to check for IRQ to be
affinitized. For target mode, it's not the case.

Fixes: 09620eeb62c41 ("scsi: qla2xxx: Add debug knob for user control workload")
Cc: <stable@vger.kernel.org> # 4.12+
Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_os.c

index dfbf82e716b0175e65df34086e5242447192bd92..428e1bfaa83b8c7ae4f8c17a7e9488a9756f8554 100644 (file)
@@ -6609,9 +6609,14 @@ qla83xx_disable_laser(scsi_qla_host_t *vha)
 
 static int qla2xxx_map_queues(struct Scsi_Host *shost)
 {
+       int rc;
        scsi_qla_host_t *vha = (scsi_qla_host_t *)shost->hostdata;
 
-       return blk_mq_pci_map_queues(&shost->tag_set, vha->hw->pdev);
+       if (USER_CTRL_IRQ(vha->hw))
+               rc = blk_mq_map_queues(&shost->tag_set);
+       else
+               rc = blk_mq_pci_map_queues(&shost->tag_set, vha->hw->pdev);
+       return rc;
 }
 
 static const struct pci_error_handlers qla2xxx_err_handler = {