aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/tcp_timer.h
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2007-09-07 09:19:22 +0000
committerRobert Watson <rwatson@FreeBSD.org>2007-09-07 09:19:22 +0000
commit85d94372502647815bd6bd3fc62f8867f663a71e (patch)
tree710e9a8fadb8fa96b1269df0c62d76eb99d3b544 /sys/netinet/tcp_timer.h
parent2a2391c23c71e9e5b79e69435688423afa1e598c (diff)
downloadsrc-85d94372502647815bd6bd3fc62f8867f663a71e.tar.gz
src-85d94372502647815bd6bd3fc62f8867f663a71e.zip
Back out tcp_timer.c:1.93 and associated changes that reimplemented the many
TCP timers as a single timer, but retain the API changes necessary to reintroduce this change. This will back out the source of at least two reported problems: lock leaks in certain timer edge cases, and TCP timers continuing to fire after a connection has closed (a bug previously fixed and then reintroduced with the timer rewrite). In a follow-up commit, some minor restylings and comment changes performed after the TCP timer rewrite will be reapplied, and a further change to allow the TCP timer rewrite to be added back without disturbing the ABI. The new design is believed to be a good thing, but the outstanding issues are leading to significant stability/correctness problems that are holding up 7.0. This patch was generated by silby, but is being committed by proxy due to poor network connectivity for silby this week. Approved by: re (kensmith) Submitted by: silby Tested by: rwatson, kris Problems reported by: peter, kris, others
Notes
Notes: svn path=/head/; revision=172074
Diffstat (limited to 'sys/netinet/tcp_timer.h')
-rw-r--r--sys/netinet/tcp_timer.h15
1 files changed, 5 insertions, 10 deletions
diff --git a/sys/netinet/tcp_timer.h b/sys/netinet/tcp_timer.h
index f4392dd16336..83b495842ab3 100644
--- a/sys/netinet/tcp_timer.h
+++ b/sys/netinet/tcp_timer.h
@@ -141,21 +141,11 @@ static const char *tcptimers[] =
#ifdef _KERNEL
-struct tcp_timer {
- struct callout tt_timer;
- int tt_nextc; /* next callout time in time_uptime */
- int tt_active; /* engaged callouts */
#define TT_DELACK 0x01
#define TT_REXMT 0x02
#define TT_PERSIST 0x04
#define TT_KEEP 0x08
#define TT_2MSL 0x10
- int tt_delack;
- int tt_rexmt;
- int tt_persist;
- int tt_keep;
- int tt_2msl;
-};
extern int tcp_keepinit; /* time to establish connection */
extern int tcp_keepidle; /* time before keepalive probes begin */
@@ -173,8 +163,13 @@ extern int tcp_finwait2_timeout;
extern int tcp_fast_finwait2_recycle;
void tcp_timer_init(void);
+void tcp_timer_2msl(void *xtp);
struct tcptw *
tcp_tw_2msl_scan(int _reuse); /* XXX temporary */
+void tcp_timer_keep(void *xtp);
+void tcp_timer_persist(void *xtp);
+void tcp_timer_rexmt(void *xtp);
+void tcp_timer_delack(void *xtp);
#endif /* _KERNEL */