diff options
author | rpaulo <rpaulo@FreeBSD.org> | 2010-04-10 12:47:06 +0000 |
---|---|---|
committer | rpaulo <rpaulo@FreeBSD.org> | 2010-04-10 12:47:06 +0000 |
commit | d89608b359c0241db9538907fc2d58a4d53e7109 (patch) | |
tree | f067f8bc291ec91b9c8d3652828f33a9bc6a3749 /sys/netinet | |
parent | 36e7399a7ce0c8d4b12eb54d1d36a4420850aa16 (diff) | |
download | FreeBSD-src-d89608b359c0241db9538907fc2d58a4d53e7109.zip FreeBSD-src-d89608b359c0241db9538907fc2d58a4d53e7109.tar.gz |
Honor the CE bit even when the CWR bit is set.
PR: 145600
Submitted by: Richard Scheffenegger <rs at netapp.com>
MFC after: 1 week
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/tcp_input.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index edc8d0a..0254cff 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1134,6 +1134,8 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, * TCP ECN processing. */ if (tp->t_flags & TF_ECN_PERMIT) { + if (thflags & TH_CWR) + tp->t_flags &= ~TF_ECN_SND_ECE; switch (iptos & IPTOS_ECN_MASK) { case IPTOS_ECN_CE: tp->t_flags |= TF_ECN_SND_ECE; @@ -1146,10 +1148,6 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, TCPSTAT_INC(tcps_ecn_ect1); break; } - - if (thflags & TH_CWR) - tp->t_flags &= ~TF_ECN_SND_ECE; - /* * Congestion experienced. * Ignore if we are already trying to recover. |