OK florian@
On Tue, Feb 06, 2018 at 05:10:17PM +0100, Alexander Bluhm wrote:
> Hi,
>
> Historically TCP timeouts were implemented with pr_slowtimo and
> pr_fasttimo. That is the reason why we have two timeout mechanisms
> with complicated ticks calculation.
>
> I would like to move to milliseconds and merge them eventually.
> This makes it easier to see the actual values.
>
> Let's get rid of some easy ticks and hz.
>
> ok?
>
> bluhm
>
> Index: netinet/tcp_timer.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/tcp_timer.c,v
> retrieving revision 1.63
> diff -u -p -r1.63 tcp_timer.c
> --- netinet/tcp_timer.c 6 Feb 2018 15:13:08 -0000 1.63
> +++ netinet/tcp_timer.c 6 Feb 2018 15:47:06 -0000
> @@ -64,7 +64,7 @@ int tcp_maxidle;
> * Time to delay the ACK. This is initialized in tcp_init(), unless
> * its patched.
> */
> -int tcp_delack_ticks;
> +int tcp_delack_msecs;
>
> void tcp_timer_rexmt(void *);
> void tcp_timer_persist(void *);
> @@ -96,8 +96,8 @@ tcp_timer_init(void)
> if (tcp_maxpersistidle == 0)
> tcp_maxpersistidle = TCPTV_KEEP_IDLE;
>
> - if (tcp_delack_ticks == 0)
> - tcp_delack_ticks = TCP_DELACK_TICKS;
> + if (tcp_delack_msecs == 0)
> + tcp_delack_msecs = TCP_DELACK_MSECS;
> }
>
> /*
> Index: netinet/tcp_timer.h
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/tcp_timer.h,v
> retrieving revision 1.16
> diff -u -p -r1.16 tcp_timer.h
> --- netinet/tcp_timer.h 6 Feb 2018 15:13:08 -0000 1.16
> +++ netinet/tcp_timer.h 6 Feb 2018 15:47:06 -0000
> @@ -106,7 +106,7 @@
>
> #define TCP_MAXRXTSHIFT 12 /* maximum retransmits
> */
>
> -#define TCP_DELACK_TICKS (hz / PR_FASTHZ) /* time to delay ACK */
> +#define TCP_DELACK_MSECS 200 /* time to delay ACK */
>
> #ifdef TCPTIMERS
> const char *tcptimers[TCPT_NTIMERS] =
> @@ -122,7 +122,7 @@ const char *tcptimers[TCPT_NTIMERS] =
> #define TCP_TIMER_ARM(tp, timer, nticks)
> \
> do { \
> SET((tp)->t_flags, TF_TIMER << (timer)); \
> - timeout_add(&(tp)->t_timer[(timer)], (nticks) * (hz / PR_SLOWHZ)); \
> + timeout_add_msec(&(tp)->t_timer[(timer)], (nticks) * 500); \
> } while (0)
>
> #define TCP_TIMER_DISARM(tp, timer)
> \
> @@ -151,6 +151,7 @@ typedef void (*tcp_timer_func_t)(void *)
>
> extern const tcp_timer_func_t tcp_timer_funcs[TCPT_NTIMERS];
>
> +extern int tcp_delack_msecs; /* delayed ACK timeout in millisecs */
> extern int tcptv_keep_init;
> extern int tcp_always_keepalive; /* assume SO_KEEPALIVE is always set */
> extern int tcp_keepidle; /* time before keepalive probes begin */
> Index: netinet/tcp_var.h
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/tcp_var.h,v
> retrieving revision 1.130
> diff -u -p -r1.130 tcp_var.h
> --- netinet/tcp_var.h 6 Feb 2018 15:13:08 -0000 1.130
> +++ netinet/tcp_var.h 6 Feb 2018 15:47:06 -0000
> @@ -205,14 +205,13 @@ struct tcpcb {
> #define sototcpcb(so) (intotcpcb(sotoinpcb(so)))
>
> #ifdef _KERNEL
> -extern int tcp_delack_ticks;
> void tcp_delack(void *);
>
> #define TCP_INIT_DELACK(tp) \
> timeout_set_proc(&(tp)->t_delack_to, tcp_delack, tp)
>
> #define TCP_RESTART_DELACK(tp)
> \
> - timeout_add(&(tp)->t_delack_to, tcp_delack_ticks)
> + timeout_add_msec(&(tp)->t_delack_to, tcp_delack_msecs)
>
> #define TCP_SET_DELACK(tp)
> \
> do { \
>
--
I'm not entirely sure you are real.