aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_mbx.c
diff options
context:
space:
mode:
authorAnirban Chakraborty <anirban.chakraborty@qlogic.com>2009-04-07 01:33:41 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-05-20 18:21:08 -0400
commit68ca949cdb04b4dc71451a999148fbc5f187a220 (patch)
treed1d06940e8f128804529386ccea9c0757e61db0f /drivers/scsi/qla2xxx/qla_mbx.c
parent2afa19a9377ca61b9489e44bf50029574fbe63be (diff)
[SCSI] qla2xxx: Add CPU affinity support.
Set the module parameter ql2xmultique_tag to 1 to enable this feature. In this mode, the total number of response queues created is equal to the number of online cpus. Turning the block layer's rq_affinity mode on enables requests to be routed to the proper cpu and at the same time it enables completion of the IO in a response queue that is affined to the cpu in the request path. Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com> Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_mbx.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index bfdc89f8569b..366522e8a766 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -1497,7 +1497,10 @@ qla24xx_login_fabric(scsi_qla_host_t *vha, uint16_t loop_id, uint8_t domain,
1497 1497
1498 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no)); 1498 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
1499 1499
1500 req = vha->req; 1500 if (ql2xmultique_tag)
1501 req = ha->req_q_map[0];
1502 else
1503 req = vha->req;
1501 rsp = req->rsp; 1504 rsp = req->rsp;
1502 1505
1503 lg = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &lg_dma); 1506 lg = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &lg_dma);
@@ -2311,7 +2314,10 @@ __qla24xx_issue_tmf(char *name, uint32_t type, struct fc_port *fcport,
2311 vha = fcport->vha; 2314 vha = fcport->vha;
2312 ha = vha->hw; 2315 ha = vha->hw;
2313 req = vha->req; 2316 req = vha->req;
2314 rsp = req->rsp; 2317 if (ql2xmultique_tag)
2318 rsp = ha->rsp_q_map[tag + 1];
2319 else
2320 rsp = req->rsp;
2315 tsk = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &tsk_dma); 2321 tsk = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &tsk_dma);
2316 if (tsk == NULL) { 2322 if (tsk == NULL) {
2317 DEBUG2_3(printk("%s(%ld): failed to allocate Task Management " 2323 DEBUG2_3(printk("%s(%ld): failed to allocate Task Management "