git: f5abdb03119a - main - tcp: fix a bug where unshifting should be put last in tcp_get_srtt()

From: Cheng Cui <cc_at_FreeBSD.org>
Date: Fri, 26 May 2023 10:35:18 UTC
The branch main has been updated by cc:

URL: https://cgit.FreeBSD.org/src/commit/?id=f5abdb03119a7e6608f0cfee0e7a28c94b9b0ca1

commit f5abdb03119a7e6608f0cfee0e7a28c94b9b0ca1
Author:     Cheng Cui <cc@FreeBSD.org>
AuthorDate: 2023-05-25 13:14:38 +0000
Commit:     Cheng Cui <cc@FreeBSD.org>
CommitDate: 2023-05-26 06:30:52 +0000

    tcp: fix a bug where unshifting should be put last in tcp_get_srtt()
    
    Reported by: Bhaskar Pardeshi from VMware.
    Reviewers: rscheff, tuexen, #transport!
    Approved by: tuexen (mentor)
    Subscribers: imp, melifaro, glebius
    Differential Revision: https://reviews.freebsd.org/D40267
---
 sys/netinet/tcp_subr.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
index 8636ff4cefeb..52222d7c1634 100644
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -4660,8 +4660,9 @@ tcp_get_srtt(struct tcpcb *tp, int granularity)
 		/*
 		 * The user wants useconds and internally
 		 * its kept in ticks, convert to useconds.
+		 * Put unshift at last improves precision.
 		 */
-		srtt =  TICKS_2_USEC(srtt);
+		srtt = TICKS_2_USEC(tp->t_srtt) >> TCP_RTT_SHIFT;
 	} else if (granularity == TCP_TMR_GRANULARITY_TICKS) {
 		/*
 		 * The user wants ticks and internally its