tcp: be more strict before accepting ECN negociation
authorEric Dumazet <edumazet@google.com>
Fri, 4 May 2012 05:14:02 +0000 (05:14 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 4 May 2012 16:05:27 +0000 (12:05 -0400)
commitbd14b1b2e29bd6812597f896dde06eaf7c6d2f24
treebd641279d50993e32da8f8d72672bce4e54820bd
parentf45ebf3a6be9da051f078b30e7309b6788932189
tcp: be more strict before accepting ECN negociation

It appears some networks play bad games with the two bits reserved for
ECN. This can trigger false congestion notifications and very slow
transferts.

Since RFC 3168 (6.1.1) forbids SYN packets to carry CT bits, we can
disable TCP ECN negociation if it happens we receive mangled CT bits in
the SYN packet.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Perry Lorier <perryl@google.com>
Cc: Matt Mathis <mattmathis@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Wilmer van der Gaast <wilmer@google.com>
Cc: Ankur Jain <jankur@google.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Dave Täht <dave.taht@bufferbloat.net>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/tcp_ipv4.c
net/ipv6/tcp_ipv6.c