Re: [PATCH v2] net:Add sysctl_tcp_sg_max_skb_frags

From: Hannes Frederic Sowa
Date: Wed Jan 27 2016 - 13:12:24 EST

On 27.01.2016 16:15, Eric Dumazet wrote:
On Wed, 2016-01-27 at 14:20 +0100, Hans Westgaard Ry wrote:
Devices may have limits on the number of fragments in an skb they support.
Current codebase uses a constant as maximum for number of fragments one
skb can hold and use.
When enabling scatter/gather and running traffic with many small messages
the codebase uses the maximum number of fragments and may thereby violate
the max for certain devices.
The patch introduces a global variable as max number of fragments in

Principle looks good, but we have to ask if other skb providers [1] will
add other sysctl, or if we could share a common one ?

If it is a common one, it should be /proc/sys/net/core/... instead
of /proc/sys/net/ipv4/tcp_....
Other providers include :

1) GRO stack
2) callers of sock_alloc_send_pskb(), alloc_skb_with_frags(),
sock_alloc_send_skb() ..

I agree, this knob should get a generic name and live in a generic net/ directory to control this globally, so things don't break during forwarding etc.

It does not solve the problem completely, e.g. when VMs send gso packets through a vhost-net onto IPoIB, no?