svn commit: r274853 - in head: sys/dev/iscsi usr.sbin/ctld usr.sbin/iscsid

Alexander Motin mav at FreeBSD.org
Sun Nov 23 03:58:20 UTC 2014


On 22.11.2014 20:03, Navdeep Parhar wrote:
> On Sat, Nov 22, 2014 at 03:09:19PM +0000, Alexander Motin wrote:
>> Author: mav
>> Date: Sat Nov 22 15:09:18 2014
>> New Revision: 274853
>> URL: https://svnweb.freebsd.org/changeset/base/274853
>>
>> Log:
>>    For both iSCSI initiator and target increase socket buffer sizes before
>>    establishing connection.
>>
>>    This is a workaround for Chelsio TOE driver, that does not update socket
>>    buffer size in hardware after connection established, and unless that is
>>    done beforehand, kernel code will stuck, attempting to send/receive full
>>    PDU at once.
>
> cxgbe's TOE driver does update the rcv window in the hardware in
> response to changes in the socket buffer size (see t4_rcvd in
> cxgbe/tom/t4_cpl_io.c).
>
> The bug is that the driver tries to avoid sending too many small updates
> to the chip, and instead tries to build up a balance of credits before
> an update.  This doesn't interact well with some applications that set
> the sockbuf size to a high fixed value and then wait for the entire
> buffer to fill up before draining it.  The driver ends up waiting for
> the application to drain the socket's receive buffer so that pru_rcvd
> (t4_rcvd) can then send a big batch of credits to the chip, the
> application is waiting for the receive to reach its high water mark
> before draining the buffer, but the TOE on the chip has shut down the
> receive window because it's out of credits.  If you see the peer sending
> zero window probes and the TOE refusing to budge, then the problem
> you've observed is definitely the problem I just described.

Yes, it looks like this. You may find the packet dump with the problem 
here: https://people.freebsd.org/~mav/rcvbuf.dump

> I'll fix this in the TOE driver.  I can send you an early patch in case
> you'd like to try out the fix before it gets committed.

Thank you. I'll be happy to try it.

-- 
Alexander Motin


More information about the svn-src-head mailing list