On Tue, Apr 16, 2013 at 9:56 AM, Eric Dumazet <[email protected]> wrote:
> I am afraid I don't understand what the issue is.
>
> the pull_tail() in itself is not a performance issue : Intel guys only
> fixed last gays ago fact that IGB/IXGBE drivers were not pulling tcp
> headers in skb->head , and nobody noticed.
>
> Real cost is the cache line miss.

According to Markus there is a pretty huge performance penalty if the
whole packet (TCP/IP headers + payload) ends up in the fragment, and
stack has to memcpy headers into the linear part.

> Now, if you pull too many bytes in skb->head, say part of TCP payload,
> you lose opportunities in TCP coalescing or splice().

So it sounds like this patch is a bad change from that POV, since it
would cause us to have lots of TCP payload in the linear part and then
second half of the payload in the fragments (if we are running with 4K
IPoIB MTU).

Seems like the real fix is to enable the header separation feature in
adapters that support it (ConnectX-2 and -3) so that exactly TCP/IP
headers go in linear part and payload goes in the fragment.  That's a
bit more involved, but I'll look into doing it.

 - R.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to