[1/7] tcp: LRO timestamps have lost their previous precision
Commit Message
From: Randall Stewart <rrs@FreeBSD.org>
Recently we had a rewrite to tcp_lro.c that was tested but one subtle change
was the move to a less precise timestamp. This causes all kinds of chaos
in tcp's that do pacing and needs to be fixed to use the more precise
time that was there before.
Reviewed by: mtuexen, gallatin, hselasky
Sponsored by: Netflix Inc
Differential Revision: https://reviews.freebsd.org/D30695
---
newlib/libc/include/sys/time.h | 11 +++++++++++
1 file changed, 11 insertions(+)
@@ -281,6 +281,17 @@ bintime2timespec(const struct bintime *_bt, struct timespec *_ts)
(uint32_t)(_bt->frac >> 32)) >> 32;
}
+static __inline uint64_t
+bintime2ns(const struct bintime *_bt)
+{
+ uint64_t ret;
+
+ ret = (uint64_t)(_bt->sec) * (uint64_t)1000000000;
+ ret += (((uint64_t)1000000000 *
+ (uint32_t)(_bt->frac >> 32)) >> 32);
+ return (ret);
+}
+
static __inline void
timespec2bintime(const struct timespec *_ts, struct bintime *_bt)
{