Re: limited network bandwidth with 3.2.x kernels

Eric Dumazet
2012-02-16T15:09:48Z

Le jeudi 16 février 2012 à 13:51 +0000, Ben Hutchings a écrit :

> I'm aware of this problem and I believe it exists with most
> implementations of LRO.
>
> The out-of-tree version of the sfc driver has its own soft-LRO
> implementation (SSR) which does some limited connection tracking to
> detect slow start and disable aggregation temporarily. I've been
> meaning to look into enhancing GRO to match SSR, but haven't got round
> to it yet.

Not sure why we cant change tcp_grow_window() to take into account
number of segments in skb ?

It currently increments rcv_ssthresh by a fixed amount (2 * advmss)

if (tcp_win_from_space(skb->truesize) <= skb->len)
incr = 2 * tp->advmss;
else
incr = __tcp_grow_window(sk, skb);
if (incr) {
tp->rcv_ssthresh = min(tp->rcv_ssthresh + incr,
tp->window_clamp);
inet_csk(sk)->icsk_ack.quick |= 1;
}