Hi Yang, On Fri, Jul 4, 2025 at 1:36 PM Yang Li via B4 Relay <devnull+yang.li.amlogic.com@xxxxxxxxxx> wrote: > > 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 v3: > - Change to use hwtimestamp > - Link to v2: https://lore.kernel.org/r/20250702-iso_ts-v2-1-723d199c8068@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 | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c > index fc22782cbeeb..67ff355167d8 100644 > --- a/net/bluetooth/iso.c > +++ b/net/bluetooth/iso.c > @@ -2301,13 +2301,21 @@ void iso_recv(struct hci_conn *hcon, struct sk_buff *skb, u16 flags) > if (ts) { > struct hci_iso_ts_data_hdr *hdr; > > - /* TODO: add timestamp to the packet? */ > hdr = skb_pull_data(skb, HCI_ISO_TS_DATA_HDR_SIZE); > if (!hdr) { > BT_ERR("Frame is too short (len %d)", skb->len); > goto drop; > } > > + /* The ISO ts is based on the controller’s clock domain, > + * so hardware timestamping (hwtimestamp) must be used. > + * Ref: Documentation/networking/timestamping.rst, > + * chapter 3.1 Hardware Timestamping. > + */ I think the above comment is not necessary as it's a common usage for all kinds of drivers. If you reckon the information could be helpful, then you could clarify it in the commit message :) > + struct skb_shared_hwtstamps *hwts = skb_hwtstamps(skb); The above line should be moved underneath the 'if (ts) {' line because we need to group all the declarations altogether at the beginning. > + if (hwts) > + hwts->hwtstamp = us_to_ktime(le32_to_cpu(hdr->ts)); > + I'm definitely not a bluetooth expert, so I'm here only to check the timestamping usage. According to your prior v2 patch, the reader/receiver to turn on the timestamping feature is implemented in PipeWire? If so, so far the kernel part looks good to me. Thanks, Jason