Page MenuHomeFreeBSD

D36721.diff
No OneTemporary

D36721.diff

diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -1614,6 +1614,10 @@
* XXX: This should be done after segment
* validation to ignore broken/spoofed segs.
*/
+ if (tp->t_idle_reduce &&
+ (tp->snd_max == tp->snd_una) &&
+ ((ticks - tp->t_rcvtime) >= tp->t_rxtcur))
+ cc_after_idle(tp);
tp->t_rcvtime = ticks;
if (thflags & TH_FIN)
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -155,8 +155,6 @@
tcp_timer_active((tp), TT_PERSIST), \
("neither rexmt nor persist timer is set"))
-static void inline cc_after_idle(struct tcpcb *tp);
-
#ifdef TCP_HHOOK
/*
* Wrapper for the TCP established output helper hook.
@@ -183,7 +181,7 @@
/*
* CC wrapper hook functions
*/
-static void inline
+void
cc_after_idle(struct tcpcb *tp)
{
INP_WLOCK_ASSERT(tp->t_inpcb);
diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h
--- a/sys/netinet/tcp_var.h
+++ b/sys/netinet/tcp_var.h
@@ -1206,6 +1206,7 @@
uint32_t tcp_hc_getmtu(struct in_conninfo *);
void tcp_hc_updatemtu(struct in_conninfo *, uint32_t);
void tcp_hc_update(struct in_conninfo *, struct hc_metrics_lite *);
+void cc_after_idle(struct tcpcb *tp);
extern struct protosw tcp_protosw; /* shared for TOE */
extern struct protosw tcp6_protosw; /* shared for TOE */

File Metadata

Mime Type
text/plain
Expires
Tue, Nov 19, 9:16 AM (20 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14713987
Default Alt Text
D36721.diff (1 KB)

Event Timeline