diff options
author | Anirban Chakraborty <anirban.chakraborty@qlogic.com> | 2009-04-07 01:33:41 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-05-20 18:21:08 -0400 |
commit | 68ca949cdb04b4dc71451a999148fbc5f187a220 (patch) | |
tree | d1d06940e8f128804529386ccea9c0757e61db0f /drivers/scsi/qla2xxx/qla_mbx.c | |
parent | 2afa19a9377ca61b9489e44bf50029574fbe63be (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.c | 10 |
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 " |