summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorrpaulo <rpaulo@FreeBSD.org>2010-04-10 12:47:06 +0000
committerrpaulo <rpaulo@FreeBSD.org>2010-04-10 12:47:06 +0000
commitd89608b359c0241db9538907fc2d58a4d53e7109 (patch)
treef067f8bc291ec91b9c8d3652828f33a9bc6a3749 /sys/netinet
parent36e7399a7ce0c8d4b12eb54d1d36a4420850aa16 (diff)
downloadFreeBSD-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.c6
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.
OpenPOWER on IntegriCloud