diff options
author | rwatson <rwatson@FreeBSD.org> | 2007-09-07 09:19:22 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2007-09-07 09:19:22 +0000 |
commit | e14f216203a782ebef55f9b3423abe5ea4c83eb2 (patch) | |
tree | 710e9a8fadb8fa96b1269df0c62d76eb99d3b544 /sys/netinet/tcp_timer.h | |
parent | bf5d382aa7ca3d8b0a5b6e8c6b078c068d81071d (diff) | |
download | FreeBSD-src-e14f216203a782ebef55f9b3423abe5ea4c83eb2.zip FreeBSD-src-e14f216203a782ebef55f9b3423abe5ea4c83eb2.tar.gz |
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
Diffstat (limited to 'sys/netinet/tcp_timer.h')
-rw-r--r-- | sys/netinet/tcp_timer.h | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/sys/netinet/tcp_timer.h b/sys/netinet/tcp_timer.h index f4392dd..83b4958 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 */ |