IB/srp: Respect target credit limit
authorDavid Dillow <dillowda@ornl.gov>
Wed, 19 Dec 2007 22:08:43 +0000 (17:08 -0500)
committerRoland Dreier <rolandd@cisco.com>
Fri, 25 Jan 2008 22:15:37 +0000 (14:15 -0800)
commit8cba2077325b361dedf058c7dfc6c33691422497
treedef0972f32f690ac7107cbeabdf7c0547abf8f87
parenta9e527e3f9f4510e9f3450ca3bc51bc3ef2854fd
IB/srp: Respect target credit limit

The current SRP initiator will send requests even if it has no credits
available.  The results of sending extra requests are vendor specific,
but on some devices, overrunning credits will cost 85% of peak
performance -- e.g. 100 MB/s vs 720 MB/s.  Other devices may just drop
the requests.

This patch will tell the SCSI midlayer to queue requests if there are
fewer than two credits remaining, and will not issue a task management
request if there are no credits remaining.  The mid-layer will retry
the queued command once an outstanding command completes.

The patch also removes the unlikely() in __srp_get_tx_iu(), as it is
not at all unlikely to hit this limit under heavy load.

Signed-off-by: David Dillow <dillowda@ornl.gov>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/ulp/srp/ib_srp.c
drivers/infiniband/ulp/srp/ib_srp.h