Page MenuHomeFreeBSD

D55460.id172525.diff
No OneTemporary

D55460.id172525.diff

Index: sys/netinet/tcp_ecn.c
===================================================================
--- sys/netinet/tcp_ecn.c
+++ sys/netinet/tcp_ecn.c
@@ -353,7 +353,8 @@
}
if (thflags & TH_CWR) {
tp->t_flags2 &= ~TF2_ECN_SND_ECE;
- tp->t_flags |= TF_ACKNOW;
+ if ((tp->t_flags == TCPS_ESTABLISHED) || (tp->t_flags == TCPS_CLOSE_WAIT))
+ tp->t_flags |= TF_ACKNOW;
}
if ((iptos & IPTOS_ECN_MASK) == IPTOS_ECN_CE)
tp->t_flags2 |= TF2_ECN_SND_ECE;
Index: sys/netinet/tcp_input.c
===================================================================
--- sys/netinet/tcp_input.c
+++ sys/netinet/tcp_input.c
@@ -539,9 +539,10 @@
CC_ALGO(tp)->ecnpkt_handler(&tp->t_ccv);
- if (tp->t_ccv.flags & CCF_ACKNOW) {
- tcp_timer_activate(tp, TT_DELACK, tcp_delacktime);
+ if (((tp->t_flags == TCPS_ESTABLISHED) || (tp->t_flags == TCPS_CLOSE_WAIT)) &&
+ (tp->t_ccv.flags & CCF_ACKNOW)) {
tp->t_flags |= TF_ACKNOW;
+ tp->t_ccv.flags &= ~CCF_ACKNOW;
}
}
}
Index: sys/netinet/tcp_stacks/rack.c
===================================================================
--- sys/netinet/tcp_stacks/rack.c
+++ sys/netinet/tcp_stacks/rack.c
@@ -15709,6 +15709,8 @@
tcp_packets_this_ack(tp, ae->ack),
ae->codepoint))
rack_cong_signal(tp, CC_ECN, ae->ack, __LINE__);
+ if (tp->t_flags & TF_ACKNOW)
+ rack->r_wanted_output = 1;
#ifdef TCP_ACCOUNTING
/* Count for the specific type of ack in */
if (tp->t_flags2 & TF2_TCP_ACCOUNTING) {
@@ -16566,7 +16568,8 @@
tcp_packets_this_ack(tp, th->th_ack),
iptos))
rack_cong_signal(tp, CC_ECN, th->th_ack, __LINE__);
-
+ if (tp->t_flags & TF_ACKNOW)
+ rack->r_wanted_output = 1;
/*
* If echoed timestamp is later than the current time, fall back to
* non RFC1323 RTT calculation. Normalize timestamp if syncookies

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 16, 1:16 AM (26 m, 22 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31567481
Default Alt Text
D55460.id172525.diff (1 KB)

Event Timeline