Thread (27 messages) flat view 27 messages, 3 authors, 8d ago
COOLING8d

Revision v5 of 6 in this series.

Revisions (6)
  1. v2 [diff vs current]
  2. v2 [diff vs current]
  3. v3 [diff vs current]
  4. v3 [diff vs current]
  5. v4 [diff vs current]
  6. v5 current

[RFC PATCH v5 0/5] ethdev: add Tx timestamp slot APIs

From: Rajesh Kumar <hidden>
Date: 2026-09-08 07:32:31

The ethdev timesync API currently exposes Tx timestamps through a shared
hardware register. This requires applications to serialize timestamped
packets and does not allow correlation when multiple packets are in
flight.

This RFC proposes an ethdev interface for hardware with independent Tx
timestamp slots. The interface reports the supported timestamping
mechanism, provides a port-global slot lifecycle, and lets applications
poll each slot asynchronously after transmission.

The proposal includes the following components:

* Capability reporting for shared-register and per-packet timestamping.
* Slot allocation, asynchronous timestamp retrieval, and slot release.
* A dual-domain timestamp structure for adjusted PHC and raw hardware
  time.
* Mbuf dynamic field and dynflag support for passing slot handles to Tx,
  with a helper that stamps a slot handle onto an mbuf.
* Registration and process-local reset of the cached dynfield state.
* An ice PMD implementation using the 64 per-port PHY timestamp slots.
* A testpmd command to report the slot capabilities of a port.
* Programming guide documentation, split into a patch describing the
  pre-existing clock/Rx timesync API and a patch describing the new Tx
  timestamp slot feature.

The legacy rte_eth_timesync_read_tx_timestamp() API remains available on
devices using a shared timestamp register.

Changes since v4:

* Fixed review comments and AI observation.
* Consolidated the Tx timestamp slot API naming onto a single
  rte_eth_timesync_tx_slot_{caps,alloc,read,release,stamp} prefix,
  replacing the previous mix of tx_timestamp_slot_*, tx_ts_*, and
  tx_slot_* spellings across the public API, PMD ops, and the ice
  implementation.
* Dropped the per-port cached slot-info array in favor of a single
  process-local dynfield offset/dynflag pair.
* Split the programming guide documentation out of the ethdev patch
  into two dedicated patches: one documenting the pre-existing
  clock/Rx timesync API, and one documenting the new Tx timestamp slot
  feature, so review of the new functionality is not mixed with review
  of already-existing behavior.
* Fixed inconsistent TX/Tx casing in comments, log messages, and
  documentation to consistently use "Tx".

Comments and suggestions on the interface and the ice implementation are
welcome.

Rajesh Kumar (5):
  ethdev: add Tx timestamp slot management APIs
  doc: describe ethdev timesync clock and Rx timestamp API
  doc: describe ethdev Tx timestamp slot API
  net/ice: support per-packet Tx timestamp slots
  app/testpmd: add Tx timestamp capabilities command

 app/test-pmd/cmdline.c                    |  79 ++++++++
 doc/guides/nics/features.rst              |  15 +-
 doc/guides/prog_guide/ethdev/index.rst    |   1 +
 doc/guides/prog_guide/ethdev/timesync.rst | 219 +++++++++++++++++++++
 doc/guides/rel_notes/release_26_11.rst    |   7 +
 drivers/net/intel/ice/ice_ethdev.c        | 211 ++++++++++++++++++++-
 drivers/net/intel/ice/ice_ethdev.h        |   2 +
 drivers/net/intel/ice/ice_rxtx.c          |   9 +-
 lib/ethdev/ethdev_driver.h                |  28 +++
 lib/ethdev/rte_ethdev.c                   | 151 ++++++++++++++-
 lib/ethdev/rte_ethdev.h                   | 220 ++++++++++++++++++++++
 11 files changed, 933 insertions(+), 9 deletions(-)
 create mode 100644 doc/guides/prog_guide/ethdev/timesync.rst

-- 
2.55.0
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help