git: e0bd180130b8 - main - tcp: fix conversion of rttvar
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 03 Apr 2024 16:42:59 UTC
The branch main has been updated by tuexen:
URL: https://cgit.FreeBSD.org/src/commit/?id=e0bd180130b8c95f568483d0df6abff00d7d2153
commit e0bd180130b8c95f568483d0df6abff00d7d2153
Author: Michael Tuexen <tuexen@FreeBSD.org>
AuthorDate: 2024-04-03 16:39:31 +0000
Commit: Michael Tuexen <tuexen@FreeBSD.org>
CommitDate: 2024-04-03 16:39:31 +0000
tcp: fix conversion of rttvar
A wrong variable and wrong scaling factors were used.
Reported by: Coverity Scan
CID: 1508689
Reviewed by: rscheff
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44612
---
sys/netinet/tcp_subr.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
index db335a890b28..860d65249148 100644
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -4240,19 +4240,19 @@ tcp_change_time_units(struct tcpcb *tp, int granularity)
uint32_t val, frac;
val = USEC_2_TICKS(tp->t_rttvar);
- frac = tp->t_srtt % (HPTS_USEC_IN_SEC / hz);
+ frac = tp->t_rttvar % (HPTS_USEC_IN_SEC / hz);
tp->t_rttvar = val << TCP_RTTVAR_SHIFT;
/*
* frac is the fractional part here is left
* over from converting to hz and shifting.
- * We need to convert this to the 5 bit
+ * We need to convert this to the 4 bit
* remainder.
*/
if (frac) {
if (hz == 1000) {
- frac = (((uint64_t)frac * (uint64_t)TCP_RTT_SCALE) / (uint64_t)HPTS_USEC_IN_MSEC);
+ frac = (((uint64_t)frac * (uint64_t)TCP_RTTVAR_SCALE) / (uint64_t)HPTS_USEC_IN_MSEC);
} else {
- frac = (((uint64_t)frac * (uint64_t)(hz) * (uint64_t)TCP_RTT_SCALE) /(uint64_t)HPTS_USEC_IN_SEC);
+ frac = (((uint64_t)frac * (uint64_t)(hz) * (uint64_t)TCP_RTTVAR_SCALE) /(uint64_t)HPTS_USEC_IN_SEC);
}
tp->t_rttvar += frac;
}