diff mbox

Bugzilla 42595

Message ID 1326894249.2316.8.camel@edumazet-HP-Compaq-6005-Pro-SFF-PC
State RFC, archived
Delegated to: David Miller
Headers show

Commit Message

Eric Dumazet Jan. 18, 2012, 1:44 p.m. UTC
Le mercredi 18 janvier 2012 à 11:58 +0100, Eric Dumazet a écrit :
> Le mercredi 18 janvier 2012 à 00:43 +0100, Eric Dumazet a écrit :
> > Le mardi 17 janvier 2012 à 21:03 +0100, Tore Anderson a écrit :
> > 
> > > 
> > > 3) There seems to be a bug related to generating the TCP checksum of
> > > SYN/ACK packets to destinations with the allfrag features set. I just
> > > submitted a bug report about this:
> > > 
> > > https://bugzilla.kernel.org/show_bug.cgi?id=42595
> > > 
> > > This makes the allfrag feature pretty much useless for me, as I can only
> > > successfully establish a single TCP session from a client behind a <1280
> > > MTU link for the entire lifetime of the routing cache entry.
> > > 
> > 
> > It seems we dont handle skb ip_summed CHECKSUM_PARTIAL 
> > in ip6_fragment() slow_path
> 
> 
> and many drivers dont handle the presence of a frag header.
> 
> if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
> 
> I suspect we'll have to compute the checksum in software...
> 

Following patch seems to help for me, please test it ;)



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Tore Anderson Jan. 18, 2012, 2:20 p.m. UTC | #1
* Eric Dumazet

> Following patch seems to help for me, please test it ;)

Looks very good! I uploaded a PCAP to the bug report:

https://bugzilla.kernel.org/show_bug.cgi?id=42595#c7
Eric Dumazet Jan. 18, 2012, 2:42 p.m. UTC | #2
Le mercredi 18 janvier 2012 à 15:20 +0100, Tore Anderson a écrit :
> * Eric Dumazet
> 
> > Following patch seems to help for me, please test it ;)
> 
> Looks very good! I uploaded a PCAP to the bug report:
> 
> https://bugzilla.kernel.org/show_bug.cgi?id=42595#c7
> 

Thanks

It seems that if you try to have the default ethtool settings (tso, gso,
tx checksum ... on), transfert is very slow... I am investigating, but I
suspect that if dst_allfrag() is true, we must disable gso as well.



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index d97e071..92ea301 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -791,6 +791,10 @@  slow_path_clean:
 	}
 
 slow_path:
+	if ((skb->ip_summed == CHECKSUM_PARTIAL) &&
+	    skb_checksum_help(skb))
+		goto fail;
+
 	left = skb->len - hlen;		/* Space per frame */
 	ptr = hlen;			/* Where to start from */