linux/drivers/infiniband/ulp/srp
Bart Van Assche c996bb47bb IB/srp: Make receive buffer handling more robust
The current strategy in ib_srp for posting receive buffers is:

 * Post one buffer after channel establishment.
 * Post one buffer before sending an SRP_CMD or SRP_TSK_MGMT to the target.

As a result, only the first non-SRP_RSP information unit from the
target will be processed.  If that first information unit is an
SRP_T_LOGOUT, it will be processed.  On the other hand, if the
initiator receives an SRP_CRED_REQ or SRP_AER_REQ before it receives a
SRP_T_LOGOUT, the SRP_T_LOGOUT won't be processed.

We can fix this inconsistency by changing the strategy for posting
receive buffers to:

 * Post all receive buffers after channel establishment.
 * After a receive buffer has been consumed and processed, post it again.

A side effect is that the ib_post_recv() call is moved out of the SCSI
command processing path.  Since __srp_post_recv() is not called
directly any more, get rid of it and move the code directly into
srp_post_recv().  Also, move srp_post_recv() up in the file to avoid a
forward declaration.

Signed-off-by: Bart Van Assche <bart.vanassche@gmail.com>
Acked-by: David Dillow <dave@thedillows.org>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2010-08-04 11:47:39 -07:00
..
ib_srp.c IB/srp: Make receive buffer handling more robust 2010-08-04 11:47:39 -07:00
ib_srp.h IB/srp: Split send and recieve CQs to reduce number of interrupts 2010-03-01 23:51:38 -08:00
Kbuild IB: Add SCSI RDMA Protocol (SRP) initiator 2005-11-02 14:07:13 -08:00
Kconfig [SCSI] ib_srp: convert to use the srp transport class 2007-10-12 14:37:42 -04:00