Hi, ke, 2025-07-02 kello 19:35 +0800, Yang Li via B4 Relay kirjoitti: > From: Yang Li <yang.li@xxxxxxxxxxx> > > User-space applications (e.g., PipeWire) depend on > ISO-formatted timestamps for precise audio sync. > > Signed-off-by: Yang Li <yang.li@xxxxxxxxxxx> > --- > Changes in v2: > - Support SOCK_RCVTSTAMPNS via CMSG for ISO sockets > - Link to v1: https://lore.kernel.org/r/20250429-iso_ts-v1-1-e586f30de6cb@xxxxxxxxxxx > --- > net/bluetooth/iso.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c > index fc22782cbeeb..6927c593a1d6 100644 > --- a/net/bluetooth/iso.c > +++ b/net/bluetooth/iso.c > @@ -2308,6 +2308,9 @@ void iso_recv(struct hci_conn *hcon, struct sk_buff *skb, u16 flags) > goto drop; > } > > + /* Record the timestamp to skb*/ > + skb->skb_mstamp_ns = le32_to_cpu(hdr->ts); Hardware timestamps are supposed to go in skb_hwtstamps(skb)->hwtstamp See Documentation/networking/timestamping.rst "3.1 Hardware Timestamping Implementation: Device Drivers" and how it is done in drivers/net/ This documentation also explains how user applications can obtain the hardware timestamps. AFAIK, skb->tstamp (skb->skb_mstamp_ns is union for it) must be in system clock. The hdr->ts is in some unsynchronized controller clock, so they should go to HW timestamps. > + > len = __le16_to_cpu(hdr->slen); > } else { > struct hci_iso_data_hdr *hdr; > > --- > base-commit: 3bc46213b81278f3a9df0324768e152de71eb9fe > change-id: 20250421-iso_ts-c82a300ae784 > > Best regards, -- Pauli Virtanen