Commit 87034e9c authored by Herbert Xu's avatar Herbert Xu Committed by David S. Miller

[IPV4/IPV6]: Remove frag_list check from output path.

I've removed the frag_list check before fragmenting and we'll
rely on dev_queue_xmit to fix things up if necessary.  Any
functions in between should do the right thing since they need
to handle non-linear skb's anyway.  Well that's the theory :)
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 555983d6
...@@ -278,7 +278,7 @@ int ip_mc_output(struct sk_buff *skb) ...@@ -278,7 +278,7 @@ int ip_mc_output(struct sk_buff *skb)
newskb->dev, ip_dev_loopback_xmit); newskb->dev, ip_dev_loopback_xmit);
} }
if (skb->len > dst_pmtu(&rt->u.dst) || skb_shinfo(skb)->frag_list) if (skb->len > dst_pmtu(&rt->u.dst))
return ip_fragment(skb, ip_finish_output); return ip_fragment(skb, ip_finish_output);
else else
return ip_finish_output(skb); return ip_finish_output(skb);
...@@ -288,8 +288,7 @@ int ip_output(struct sk_buff *skb) ...@@ -288,8 +288,7 @@ int ip_output(struct sk_buff *skb)
{ {
IP_INC_STATS(IPSTATS_MIB_OUTREQUESTS); IP_INC_STATS(IPSTATS_MIB_OUTREQUESTS);
if ((skb->len > dst_pmtu(skb->dst) || skb_shinfo(skb)->frag_list) && if (skb->len > dst_pmtu(skb->dst) && !skb_shinfo(skb)->tso_size)
!skb_shinfo(skb)->tso_size)
return ip_fragment(skb, ip_finish_output); return ip_fragment(skb, ip_finish_output);
else else
return ip_finish_output(skb); return ip_finish_output(skb);
......
...@@ -147,7 +147,7 @@ static int ip6_output2(struct sk_buff *skb) ...@@ -147,7 +147,7 @@ static int ip6_output2(struct sk_buff *skb)
int ip6_output(struct sk_buff *skb) int ip6_output(struct sk_buff *skb)
{ {
if ((skb->len > dst_pmtu(skb->dst) || skb_shinfo(skb)->frag_list)) if (skb->len > dst_pmtu(skb->dst))
return ip6_fragment(skb, ip6_output2); return ip6_fragment(skb, ip6_output2);
else else
return ip6_output2(skb); return ip6_output2(skb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment