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);