[PATCH v7 0/4] IEEE 1588 PTP v2 protocol support in lib/net
Rajesh Kumar
rajesh3.kumar at intel.com
Thu May 7 15:45:25 CEST 2026
Add IEEE 1588-2019 Precision Time Protocol (PTP) support to DPDK via a
new header library in lib/net/. This patchset provides wire-format packet
structure definitions and inline helpers for Transparent Clock and
ordinary clock applications.
Design Rationale
================
Following DPDK conventions for protocol libraries (rte_tcp.h, rte_ip.h),
PTP definitions are provided as a header-only library with inline functions
for zero-overhead packet processing. All functions are suitable for
real-time, performance-critical code paths.
Contents
========
Patch 1: lib/net/rte_ptp.h - Header structures and inline helpers
- rte_ptp_port_id: 10-byte port identity with EUI-64 clock ID
- rte_ptp_hdr: 34-byte PTP v2 common message header
- rte_ptp_timestamp: 10-byte nanosecond-precision timestamp
- Message type constants (Sync, Delay_Req, Announce, etc.)
- Flag field bits (two-step, unicast, leap indicator)
- Inline helpers: rte_ptp_msg_type(), rte_ptp_seq_id(),
rte_ptp_is_event(), rte_ptp_correction_ns(), rte_ptp_add_correction(),
rte_ptp_timestamp_to_ns()
Patch 2: examples/ptp_tap_relay_sw - Software PTP Transparent Clock relay
- Relays PTP packets between a DPDK-bound physical NIC and Linux TAP
- Software timestamp-based residence time measurement (CLOCK_MONOTONIC)
- Accumulates residence time to correctionField per IEEE 1588-2019 §10.2
- Handles L2, VLAN/QinQ, UDP/IPv4, UDP/IPv6 PTP encapsulations
- Works with unmodified Linux kernel and stock DPDK (no patches required)
- Compatible with standard linuxptp (ptp4l) tooling
Patch 3: doc/guides/rel_notes/release_26_07.rst - Release notes update
Patch 4: examples/ptpclient - Update to use lib/net PTP definitions
- Replace local struct ptp_header with struct rte_ptp_hdr
- Replace local struct tstamp with struct rte_ptp_timestamp
- Replace local struct clock_id with uint8_t[8] arrays
- Use RTE_PTP_MSGTYPE_* constants instead of local defines
- Use rte_ptp_msg_type(), rte_ptp_seq_id() inline helpers
- Remove local PTP_PROTOCOL macro (use RTE_ETHER_TYPE_1588)
- Add lib/net dependency in meson.build
Testing
=======
- Build: `ninja -C build` - clean compilation
- Examples: Both ptpclient and ptp_tap_relay_sw compile and link correctly
- No stale references to old patterns or removed functions
Changelog
=========
v7 changes:
- Added sample app guide to sample_app_ug toctree to fix Sphinx warning
- Fixed all checkpatch warnings (commit message line lengths <= 75 chars)
- Refactored ptpclient to use shared lib/net/rte_ptp.h definitions
- All 5 patches (cover + 4 functional) pass checkpatch validation
v6 changes:
- Restructured to lib/net (header-only, following lib/net conventions)
- Removed separate DPI library functions (moved to example local parser)
- Removed app/test unit tests (header-only, example-driven testing)
- Removed programmer's guide (lib/net headers use Doxygen API docs only)
Rajesh Kumar (4):
lib/net: add IEEE 1588 PTP v2 protocol header definitions
examples/ptp_tap_relay_sw: add PTP software transparent clock relay
doc: update release notes for PTP protocol library
examples/ptpclient: use shared PTP library definitions
MAINTAINERS | 6 +
doc/guides/rel_notes/release_26_07.rst | 12 +
doc/guides/sample_app_ug/index.rst | 1 +
doc/guides/sample_app_ug/ptp_tap_relay_sw.rst | 212 +++++++++
examples/ptp_tap_relay_sw/Makefile | 41 ++
examples/ptp_tap_relay_sw/meson.build | 13 +
examples/ptp_tap_relay_sw/ptp_parse.h | 211 +++++++++
examples/ptp_tap_relay_sw/ptp_tap_relay_sw.c | 432 ++++++++++++++++++
examples/ptpclient/meson.build | 1 +
examples/ptpclient/ptpclient.c | 204 ++++-----
lib/net/meson.build | 1 +
lib/net/rte_ptp.h | 264 +++++++++++
12 files changed, 1274 insertions(+), 124 deletions(-)
create mode 100644 doc/guides/sample_app_ug/ptp_tap_relay_sw.rst
create mode 100644 examples/ptp_tap_relay_sw/Makefile
create mode 100644 examples/ptp_tap_relay_sw/meson.build
create mode 100644 examples/ptp_tap_relay_sw/ptp_parse.h
create mode 100644 examples/ptp_tap_relay_sw/ptp_tap_relay_sw.c
create mode 100644 lib/net/rte_ptp.h
--
2.53.0
More information about the dev
mailing list