Re: [PATCH v3 net-next] net: introduce dev_set_forwarding()
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2013-11-03 16:31:14
On Sun, Nov 03, 2013 at 08:28:24AM -0800, Eric Dumazet wrote:
1) Because we should not call skb_segment() at all on a router ? 2) If you aggregate too much on a router, you increase latencies, or if you prefer the RTT of TCP flows. 3) Because skb_segment() layer only builds MSS sized skb, so this remove TSO ability on output path Splitting a 45 MSS packet into 3 TSO packets (16 + 16 + X MSS) is going to be quite complex, given the gso_segment() stuff is meant to segment in MSS packets. Adding complexity in this already complex stuff is simply not worth it. For local TCP, its different, because if you receive such high throughput, ability to build full size GRO packet helps to reduce number of ACK segments and number of SKB in receive queue (or OFO queue), without impacting ACK clocking and TCP dynamics. And even if a router does not do this aggregation, the final receiver will do. So in conclusion, GRO is like TSO : Its not because they are able to use 64KB skbs you always _have_ to fill skb to max capacity.
I give up. It's as if you've ignored everything I've said before. -- Email: Herbert Xu [off-list ref] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt