ptp: Add PHC timestamp quality attributes
| From: | Arthur Kiyanovski <akiyano-AT-amazon.com> | |
| To: | David Miller <davem-AT-davemloft.net>, Jakub Kicinski <kuba-AT-kernel.org>, <netdev-AT-vger.kernel.org> | |
| Subject: | [PATCH net-next 0/8] ptp: Add PHC timestamp quality attributes | |
| Date: | Tue, 28 Apr 2026 16:54:18 +0000 | |
| Message-ID: | <20260428165659.2811-1-akiyano@amazon.com> | |
| Cc: | Arthur Kiyanovski <akiyano-AT-amazon.com>, Richard Cochran <richardcochran-AT-gmail.com>, Eric Dumazet <edumazet-AT-google.com>, Paolo Abeni <pabeni-AT-redhat.com>, David Woodhouse <dwmw2-AT-infradead.org>, Thomas Gleixner <tglx-AT-linutronix.de>, Miroslav Lichvar <mlichvar-AT-redhat.com>, Andrew Lunn <andrew+netdev-AT-lunn.ch>, Wen Gu <guwen-AT-linux.alibaba.com>, Xuan Zhuo <xuanzhuo-AT-linux.alibaba.com>, "Woodhouse, David" <dwmw-AT-amazon.com>, "Sarna, Yonatan" <ysarna-AT-amazon.com>, "Machulsky, Zorik" <zorik-AT-amazon.com>, "Matushevsky, Alexander" <matua-AT-amazon.com>, Saeed Bshara <saeedb-AT-amazon.com>, "Wilson, Matt" <msw-AT-amazon.com>, "Liguori, Anthony" <aliguori-AT-amazon.com>, "Bshara, Nafea" <nafea-AT-amazon.com>, "Schmeilin, Evgeny" <evgenys-AT-amazon.com>, "Belgazal, Netanel" <netanel-AT-amazon.com>, "Saidi, Ali" <alisaidi-AT-amazon.com>, "Herrenschmidt, Benjamin" <benh-AT-amazon.com>, "Dagan, Noam" <ndagan-AT-amazon.com>, "Arinzon, David" <darinzon-AT-amazon.com>, "Ostrovsky, Evgeny" <evostrov-AT-amazon.com>, "Tabachnik, Ofir" <ofirt-AT-amazon.com> | |
| Archive-link: | Article |
This series adds quality attributes to PTP Hardware Clock (PHC) timestamps, allowing userspace to obtain error bound, clock status, timescale, and raw counter values alongside timestamps in a single call. Motivation ---------- The existing PTP APIs return timestamps without any indication of their quality. Applications that need clock accuracy and synchronization status commonly rely on external tools such as ptp4l, which implement synchronization logic and can export their measurement of clock accuracy. For managed PHC devices — such as the ENA network adapter, whose clock is synchronized by the device without userspace involvement — these tools are not available, and the existing APIs lack a way to report quality metrics to consumers of time. This was previously proposed as an RFC [1] with a single ioctl. Based on community feedback, the design was reworked to cover both the extended (multi-sample) and precise (cross-timestamp) paths, with a shared attributes structure. Design ------ This series introduces two new ioctls that extend the existing extended and precise timestamp paths with per-timestamp quality attributes: error bound (nanoseconds), clock synchronization status, timescale, and raw hardware counter values. A capability flag is added to ptp_clock_caps so userspace can discover attributes support. Patches 2-3 add testptp support for the new ioctls. Patch 4 implements the attributes for ptp_vmclock, reporting error bound, clock status, timescale, and raw counter values. Patches 5-8 implement the attributes for the ENA driver, reporting error bound from the device's PHC layer. [1] https://lore.kernel.org/netdev/20250724115657.150-1-darin... Arthur Kiyanovski (8): ptp: Add ioctls for PHC timestamps with quality attributes selftests/ptp: Extract print_system_timestamp helper in testptp selftests/ptp: Add testptp support for attributes ioctls ptp: ptp_vmclock: Implement attributes ioctls net: ena: PHC: Check return code before setting timestamp output net: ena: Update PHC admin interface for error bound support net: ena: Add error bound to PHC communication layer net: ena: Implement gettimexattrs64 callback for PTP attributes .../device_drivers/ethernet/amazon/ena.rst | 2 + .../net/ethernet/amazon/ena/ena_admin_defs.h | 17 +- drivers/net/ethernet/amazon/ena/ena_com.c | 47 ++-- drivers/net/ethernet/amazon/ena/ena_com.h | 5 +- drivers/net/ethernet/amazon/ena/ena_debugfs.c | 3 + drivers/net/ethernet/amazon/ena/ena_phc.c | 67 +++++- drivers/ptp/ptp_chardev.c | 137 ++++++++++- drivers/ptp/ptp_clock.c | 4 +- drivers/ptp/ptp_vmclock.c | 195 +++++++++++++-- include/linux/ptp_clock_kernel.h | 30 +++ include/uapi/linux/ptp_clock.h | 225 +++++++++++++++++- tools/testing/selftests/ptp/testptp.c | 175 ++++++++++---- 12 files changed, 799 insertions(+), 108 deletions(-) -- 2.47.3
