IB/srp: Reduce number of BUSY conditions
As proposed by the SRP (draft) standard, ib_srp reserves one ring element for SRP_TSK_MGMT requests. This patch makes sure that the SCSI mid-layer never tries to queue more than (SRP request limit) - 1 SCSI commands to ib_srp. This improves performance for targets whose request limit is less than or equal to SRP_NORMAL_REQ_SQ_SIZE by reducing the number of BUSY responses reported by ib_srp to the SCSI mid-layer. Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: David Dillow <dillowda@ornl.gov> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
05a1d7504f
commit
7ade400aba
|
@ -1339,8 +1339,13 @@ static int srp_cm_handler(struct ib_cm_id *cm_id, struct ib_cm_event *event)
|
||||||
target->max_ti_iu_len = be32_to_cpu(rsp->max_ti_iu_len);
|
target->max_ti_iu_len = be32_to_cpu(rsp->max_ti_iu_len);
|
||||||
target->req_lim = be32_to_cpu(rsp->req_lim_delta);
|
target->req_lim = be32_to_cpu(rsp->req_lim_delta);
|
||||||
|
|
||||||
target->scsi_host->can_queue = min(target->req_lim,
|
/*
|
||||||
target->scsi_host->can_queue);
|
* Reserve credits for task management so we don't
|
||||||
|
* bounce requests back to the SCSI mid-layer.
|
||||||
|
*/
|
||||||
|
target->scsi_host->can_queue
|
||||||
|
= min(target->req_lim - SRP_TSK_MGMT_SQ_SIZE,
|
||||||
|
target->scsi_host->can_queue);
|
||||||
} else {
|
} else {
|
||||||
shost_printk(KERN_WARNING, target->scsi_host,
|
shost_printk(KERN_WARNING, target->scsi_host,
|
||||||
PFX "Unhandled RSP opcode %#x\n", opcode);
|
PFX "Unhandled RSP opcode %#x\n", opcode);
|
||||||
|
|
Loading…
Reference in a new issue