git: 29d2aa149562 - stable/13 - Add mbuf_tstmp2timeval()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 12 Oct 2022 01:18:25 UTC
The branch stable/13 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=29d2aa149562e710f6ea2461ee58d411cf3359c8
commit 29d2aa149562e710f6ea2461ee58d411cf3359c8
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2022-10-03 22:49:45 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2022-10-12 01:12:40 +0000
Add mbuf_tstmp2timeval()
(cherry picked from commit 2220b66fe0d5c2dfdaf3c22dcec3771665874d69)
---
sys/netinet/tcp_stacks/bbr.c | 6 ++----
sys/netinet/tcp_stacks/rack.c | 3 +--
sys/sys/mbuf.h | 14 +++++++++++++-
3 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c
index 07c0e427f156..a029db05fd72 100644
--- a/sys/netinet/tcp_stacks/bbr.c
+++ b/sys/netinet/tcp_stacks/bbr.c
@@ -2265,8 +2265,7 @@ bbr_log_ack_event(struct tcp_bbr *bbr, struct tcphdr *th, struct tcpopt *to, uin
log.u_bbr.lt_epoch = 0;
}
if (m->m_flags & M_TSTMP_LRO) {
- tv.tv_sec = m->m_pkthdr.rcv_tstmp / 1000000000;
- tv.tv_usec = (m->m_pkthdr.rcv_tstmp % 1000000000) / 1000;
+ mbuf_tstmp2timeval(m, &tv);
log.u_bbr.flex5 = tcp_tv_to_usectick(&tv);
} else {
/* No arrival timestamp */
@@ -11722,8 +11721,7 @@ bbr_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so,
}
}
if (m->m_flags & M_TSTMP_LRO) {
- tv.tv_sec = m->m_pkthdr.rcv_tstmp /1000000000;
- tv.tv_usec = (m->m_pkthdr.rcv_tstmp % 1000000000)/1000;
+ mbuf_tstmp2timeval(m, &tv);
} else {
/* Should not be should we kassert instead? */
tcp_get_usecs(&tv);
diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c
index cd3b0347fdf2..db2638d65106 100644
--- a/sys/netinet/tcp_stacks/rack.c
+++ b/sys/netinet/tcp_stacks/rack.c
@@ -14139,8 +14139,7 @@ rack_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so,
}
}
if (m->m_flags & M_TSTMP_LRO) {
- tv.tv_sec = m->m_pkthdr.rcv_tstmp /1000000000;
- tv.tv_usec = (m->m_pkthdr.rcv_tstmp % 1000000000)/1000;
+ mbuf_tstmp2timeval(m, &tv);
} else {
/* Should not be should we kassert instead? */
tcp_get_usecs(&tv);
diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h
index 6fd83b165752..72495a925827 100644
--- a/sys/sys/mbuf.h
+++ b/sys/sys/mbuf.h
@@ -1629,12 +1629,24 @@ mbuf_tstmp2timespec(struct mbuf *m, struct timespec *ts)
{
KASSERT((m->m_flags & M_PKTHDR) != 0, ("mbuf %p no M_PKTHDR", m));
- KASSERT((m->m_flags & (M_TSTMP|M_TSTMP_LRO)) != 0, ("mbuf %p no M_TSTMP or M_TSTMP_LRO", m));
+ KASSERT((m->m_flags & (M_TSTMP|M_TSTMP_LRO)) != 0,
+ ("mbuf %p no M_TSTMP or M_TSTMP_LRO", m));
ts->tv_sec = m->m_pkthdr.rcv_tstmp / 1000000000;
ts->tv_nsec = m->m_pkthdr.rcv_tstmp % 1000000000;
}
#endif
+static inline void
+mbuf_tstmp2timeval(struct mbuf *m, struct timeval *tv)
+{
+
+ KASSERT((m->m_flags & M_PKTHDR) != 0, ("mbuf %p no M_PKTHDR", m));
+ KASSERT((m->m_flags & (M_TSTMP|M_TSTMP_LRO)) != 0,
+ ("mbuf %p no M_TSTMP or M_TSTMP_LRO", m));
+ tv->tv_sec = m->m_pkthdr.rcv_tstmp / 1000000000;
+ tv->tv_usec = (m->m_pkthdr.rcv_tstmp % 1000000000) / 1000;
+}
+
#ifdef DEBUGNET
/* Invoked from the debugnet client code. */
void debugnet_mbuf_drain(void);