Xiu-Yan Wang wrote:
> Paul Durrant wrote:
>> Yunsong (Roamer) Lu wrote:
>>> LRO is not yet supported in the stack, and there will be some other 
>>> issues than the b_cont check in IP.
>>>
>>> But experimentally LRO implementation in driver works after fixing the 
>>> check against maximum 2-block of message. You may apply this *hack* to 
>>> try your LRO implementation if you can compile IP module for your 
>>> Solaris version.
>>>
>> Roamer,
>>
>> There's also the mblk_pull_len issue (there is a bug for this but I 
>> can't find the number right now). At the moment it needs to be set to 
>> zero to avoid unnecessary copying in the stack.

The number is 6694625, filed by Darren based on email I sent to this
list roughly 1 month ago.

> mblk_pull_len is set to 64 by default and it's used in kstrgetmsg():
> http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/os/streamio.c
> 
> The comments state the introduction of it is to decrease the per mblk
> overhead in dealing with a streams message consists of many short
> messages.
> 
> Could you be more detailed of the issue with LRO?

At least for me, I never noticed the issue until I started testing
my LRO implementation.  Because LRO aggregates frames, it interacts
poorly with Solaris' ack pacing, and you need to use larger socket
buffer sizes to keep the pipe full.  The trigger for the bug seems
to be using "large" socket buffer sizes (in excess of 512KB).  However,
the bug is not tied to LRO.  Rather, it happens without it.  But
without LRO, I seldom crank the socket buffers up that large so
I did not notice it previously.

Drew
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to