Re: [PATCH 2/2] net: ip, ipv6: handle gso skbs in forwarding path
From: Eric Dumazet <hidden>
Date: 2014-02-10 13:12:38
On Mon, 2014-02-10 at 20:31 +0800, Herbert Xu wrote:
On Mon, Feb 10, 2014 at 01:23:31PM +0100, Florian Westphal wrote:quoted
Herbert Xu [off-list ref] wrote:quoted
quoted
quoted
static void ip_gso_adjust_seglen(struct sk_buff *skb) { unsigned int mtu; if (!skb_is_gso(skb)) return; mtu = ip_dst_mtu_maybe_forward(skb_dst(skb), true); skb_shinfo(skb)->gso_size = mtu - sizeof(struct iphdr); } But this yields [ 28.644776] kernel BUG at net/net/core/skbuff.c:2984!Yep, lets CC Herbert Xu, as he 'owns' skb_segment()IMHO we should just stop merging ~DF packets altogether, at least for TCP.Eric, you added DF aggregation in db8caf3dbc77599dc90f4ea0a803cd1d97116f30 (gro: should aggregate frames without DF). I guess you don't want to revert this commit? Any other ideas? skb_gso_segment() is already very complex, I don't want to add more code to it. And that seems unavoidable if we need to de-couple nr_frags and gso_size.I don't think adding all this complexity just to be able to aggregate ~DF packets (which are just wrong to begin with) is worth it.
Wrong by your standards. Which are not universal.
If aggregating ~DF packets was a one-liner then sure, but there is a reason why I didn't aggregate them in the first place and you've found it :)
I sent months ago a solution for skb_segment() that you ignored. I understand you never hit cases where DF was not set, I can tell you its happening in the real world. GRO stack already breaks reversibility by definition since day-0 Recent tunneling support breaks it as well.