From nobody Thu Sep 03 00:51:21 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hb1Hs4Glgz6qyNM for ; Thu, 03 Sep 2026 00:51:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hb1Hs39pQz3ChN for ; Thu, 03 Sep 2026 00:51:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788396681; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KtIbHDtXZqpgHTMCs4pv4DDuBJAljwZBz5+EbrbPGzM=; b=NvMUA+jAsDANjmRfiXtxViUncqFA20Rce6Yyytfsgp99pUWWeaC0hKM+4bIBlfZVfVgta7 RZ6Y3dHotOufRU1JTgAO4k2PKQJla4eXIPIY/KJ1fAYKEK8XBPJm6zaxNJntdB5aznI4FI 4sYlhW1Fka9sp5Pc5I1cxNOnOg7631NynvSiF9obZX62digHKwWi/QZwLZ5ZY37WcMc9Pg PGEpnwPOb8mTpVvi6J/aQ+O/aJnbRcr1Lzm5yM1hY0Dekl8BEJdum/8M1/tIgWzdmz9m1k fJVtBN+s4e456Q+GICifffuU+FHXomhEDX9a5BZjDEt4USAVw6zPwt7Vj4fqSA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788396681; a=rsa-sha256; cv=none; b=bkwIa8i/IeWpJIUSruNCC9lqNLQ/T6GY15mEH7DUqDHP6VHlSY3BhkdjRmh2kpFeutV7mx 0xyYamQwAGD5K4u7NXusNKKLNiMlgobDOODwgMWDZfcfMOlHcbRw3w34HMjpfXZA3VE5t8 gdwVJ+XXCw1LR8HLIHdnKsQY93BcLnb3TvocRsdzaATYGs1UAp52VBzgmh0/DDfWQBiRPQ 2VuCetjb1vDxuijPk3Qt/qQNeoWxVZm8z/w31eloVelkeU8Pl9TJB4tBz2lTsjiiYvATcU 2nMh49DXY2mepqE7i/LVwhEzHFaX9+epejuEoa94pSV5Ajrplds8RP4waTuDRw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788396681; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KtIbHDtXZqpgHTMCs4pv4DDuBJAljwZBz5+EbrbPGzM=; b=GNbe32WxPwQkEeC5Tzmy/u8dqU7dWfJAJtrq+FXlpdVSStkMlHbW0glvvfEF8BDRfIo+a4 AdNmfu4rljaktMm7ZkIfAwDQKoGlpA4wI7sQWcOkabEfKR5McVmiRs9paudO3WBpJsuhew fBM7VAwtMrbDkqU1hwbmm2H5yOzheQkoaqyuiq4Al+zS67y3c0uLxbbntsbq5gDkQY+/yX /hfFBx2PoDM2wNoeojTy0FvlrHeJ9R4DYp1PXfD1k5r+L309PASws3VTiG2bZbQsHER+HM 7gpy2smt3+VVjMNHCWQmPGfmAUVgI5cBHDS43o/b2Afr+GuLYnQSZCVj1Wq3KA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hb1Hs1wYrz161m for ; Thu, 03 Sep 2026 00:51:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1c2bd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 03 Sep 2026 00:51:21 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Sumit Saxena From: Kevin Bowling Subject: git: 3c928ccadbb5 - main - iflib: Plumb per-packet RX hardware timestamps to mbufs List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3c928ccadbb5d7baa3ce18d33d09d9a1d2770397 Auto-Submitted: auto-generated Date: Thu, 03 Sep 2026 00:51:21 +0000 Message-Id: <6a98c489.1c2bd.6d1587@gitrepo.freebsd.org> The branch main has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=3c928ccadbb5d7baa3ce18d33d09d9a1d2770397 commit 3c928ccadbb5d7baa3ce18d33d09d9a1d2770397 Author: Sumit Saxena AuthorDate: 2026-09-02 19:36:43 +0000 Commit: Kevin Bowling CommitDate: 2026-09-03 00:49:30 +0000 iflib: Plumb per-packet RX hardware timestamps to mbufs Add iri_rcv_tstmp to if_rxd_info so an isc_rxd_pkt_get() driver can report a hardware RX timestamp. Copy it into m_pkthdr.rcv_tstmp, reusing the generic mbuf timestamp path. Widen iri_flags from uint8_t to uint32_t and define the flags drivers may supply. Mask the flags before copying them into the mbuf so no other mbuf state can leak through the driver callback. Place the timestamp next to iri_frags to avoid an alignment hole, and document its nanoseconds-since-boot representation and validity flags. Bump __FreeBSD_version because changing if_rxd_info breaks KBI. Reviewed by: gallatin Signed-off-by: Sreekanth Reddy Differential Revision: https://reviews.freebsd.org/D58638 --- UPDATING | 4 ++++ share/man/man9/iflibtxrx.9 | 22 ++++++++++++++++++---- sys/net/iflib.c | 3 ++- sys/net/iflib.h | 10 +++++++++- sys/sys/param.h | 2 +- 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/UPDATING b/UPDATING index f8fc8620f740..de5b9024832f 100644 --- a/UPDATING +++ b/UPDATING @@ -27,6 +27,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 16.x IS SLOW: world, or to merely disable the most expensive debugging functionality at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20260902: + struct if_rxd_info now carries a receive timestamp. iflib drivers + must be rebuilt. __FreeBSD_version has been bumped to 1600022. + 20260827: now provides the V4L2 cropping, control menu and overlay definitions. __FreeBSD_version has been bumped to 1600021 diff --git a/share/man/man9/iflibtxrx.9 b/share/man/man9/iflibtxrx.9 index df017dea0130..bbea0a3ed999 100644 --- a/share/man/man9/iflibtxrx.9 +++ b/share/man/man9/iflibtxrx.9 @@ -1,4 +1,4 @@ -.Dd December 17, 2020 +.Dd September 2, 2026 .Dt IFLIBTXTX 9 .Os .Sh NAME @@ -154,10 +154,24 @@ consumer queue. .It Va iri_flowid .Pq Vt "uint32_t" Value of the RSS hash for the packet. +.It Va iri_rcv_tstmp +.Pq Vt "uint64_t" +Receive timestamp in nanoseconds since boot. +The driver must set +.Dv M_TSTMP +in +.Va iri_flags +when the timestamp is valid, and may additionally set +.Dv M_TSTMP_HPREC +when the timestamp was taken by hardware at the port. .It Va iri_flags -.Pq Vt "uint" - Flags describing the operational parameters of the mbuf contained in the - receive packet. +.Pq Vt "uint32_t" +Flags to copy to the received mbuf. +Drivers may set only +.Dv M_VLANTAG , +.Dv M_TSTMP , +and +.Dv M_TSTMP_HPREC . .It Va iri_csum_flags .Pq Vt "uint32_t" Flags describing the checksum value contained in the receive packet. diff --git a/sys/net/iflib.c b/sys/net/iflib.c index 83a518462100..7a6e817f6073 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -3002,7 +3002,7 @@ iflib_rxd_pkt_get(iflib_rxq_t rxq, if_rxd_info_t ri) } m->m_pkthdr.len = ri->iri_len; m->m_pkthdr.rcvif = ri->iri_ifp; - m->m_flags |= ri->iri_flags; + m->m_flags |= ri->iri_flags & IFLIB_IRI_VALID_FLAGS; m->m_pkthdr.ether_vtag = ri->iri_vtag; m->m_pkthdr.flowid = ri->iri_flowid; #ifdef NUMA @@ -3011,6 +3011,7 @@ iflib_rxd_pkt_get(iflib_rxq_t rxq, if_rxd_info_t ri) M_HASHTYPE_SET(m, ri->iri_rsstype); m->m_pkthdr.csum_flags = ri->iri_csum_flags; m->m_pkthdr.csum_data = ri->iri_csum_data; + m->m_pkthdr.rcv_tstmp = ri->iri_rcv_tstmp; return (m); } diff --git a/sys/net/iflib.h b/sys/net/iflib.h index 0f35f1080bad..84b1e8723737 100644 --- a/sys/net/iflib.h +++ b/sys/net/iflib.h @@ -66,6 +66,13 @@ typedef struct if_rxd_frag { /* bnxt supports 64 with hardware LRO enabled */ #define IFLIB_MAX_RX_SEGS 64 +/* + * iri_flags bits an isc_rxd_pkt_get() driver callback is permitted to + * set. iflib masks iri_flags against this set before copying the flags + * into an mbuf. + */ +#define IFLIB_IRI_VALID_FLAGS (M_VLANTAG | M_TSTMP | M_TSTMP_HPREC) + typedef struct if_rxd_info { /* set by iflib */ uint16_t iri_qsidx; /* qset index */ @@ -77,11 +84,12 @@ typedef struct if_rxd_info { /* updated by driver */ if_rxd_frag_t iri_frags; + uint64_t iri_rcv_tstmp; /* nanoseconds since boot */ uint32_t iri_flowid; /* RSS hash for packet */ uint32_t iri_csum_flags; /* m_pkthdr csum flags */ uint32_t iri_csum_data; /* m_pkthdr csum data */ - uint8_t iri_flags; /* mbuf flags for packet */ + uint32_t iri_flags; /* see IFLIB_IRI_VALID_FLAGS */ uint8_t iri_nfrags; /* number of fragments in packet */ uint8_t iri_rsstype; /* RSS hash type */ uint8_t iri_pad; /* any padding in the received data */ diff --git a/sys/sys/param.h b/sys/sys/param.h index f593b87fe970..4bbf4aacb87b 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -74,7 +74,7 @@ * cannot include sys/param.h and should only be updated here. */ #undef __FreeBSD_version -#define __FreeBSD_version 1600021 +#define __FreeBSD_version 1600022 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,