DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Rajesh Kumar <rajesh3.kumar@intel.com>
To: dev@dpdk.org
Cc: thomas@monjalon.net, bruce.richardson@intel.com,
	andrew.rybchenko@oktetlabs.ru, stephen@networkplumber.org,
	aman.deep.singh@intel.com, Rajesh Kumar <rajesh3.kumar@intel.com>
Subject: [RFC PATCH v4 0/3] ethdev: add Tx timestamp slot APIs
Date: Wed,  2 Sep 2026 11:21:21 +0530	[thread overview]
Message-ID: <20260902055125.836268-1-rajesh3.kumar@intel.com> (raw)
In-Reply-To: <20260827122200.339388-2-rajesh3.kumar@intel.com>

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.
* Programmer-guide and NIC feature documentation.

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

Changes since v3:

* Added an ice PMD implementation of the new slot ops. The ice PHY
  exposes 64 Tx timestamp slots per port, which are now tracked in an
  atomic per-adapter bitmap instead of the single static slot the driver
  used before. On E822 the 64 quad slots are split evenly between the
  PFs sharing the quad so allocations never overlap.
* The ice Tx context descriptor now takes the timestamp index from the
  mbuf dynamic field when the packet carries the slot dynflag, and falls
  back to the legacy static index otherwise.
* The ice legacy single-slot read path now uses ptp_tx_index instead of
  a hardcoded slot 0, and clears the PHY timestamp on E810 after a read
  or a timeout so a stale entry cannot block later requests.
* Added a testpmd command, "show port <port_id> tx_timestamp_caps", that
  reports the slot capabilities of a port and performs an allocate and
  release round-trip to exercise the API.

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

Rajesh Kumar (3):
  ethdev: add Tx timestamp slot management APIs
  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              |  16 +-
 doc/guides/prog_guide/ethdev/index.rst    |   1 +
 doc/guides/prog_guide/ethdev/timesync.rst | 223 +++++++++++++++++
 doc/guides/rel_notes/release_26_11.rst    |   7 +
 drivers/net/intel/ice/ice_ethdev.c        | 210 +++++++++++++++-
 drivers/net/intel/ice/ice_ethdev.h        |   2 +
 drivers/net/intel/ice/ice_rxtx.c          |  11 +-
 lib/ethdev/ethdev_driver.h                |  25 ++
 lib/ethdev/rte_ethdev.c                   | 202 ++++++++++++++++
 lib/ethdev/rte_ethdev.h                   | 278 ++++++++++++++++++++++
 11 files changed, 1047 insertions(+), 7 deletions(-)
 create mode 100644 doc/guides/prog_guide/ethdev/timesync.rst

-- 
2.55.0


  parent reply	other threads:[~2026-09-02  5:51 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-17 19:24 [RFC 0/1] ethdev: per-packet Tx timestamp slot management Rajesh Kumar
2026-08-17 19:24 ` [RFC 1/1] ethdev: add per-packet Tx timestamp slot APIs Rajesh Kumar
2026-08-20  4:51   ` Naga Harish K, S V
2026-08-18  2:23 ` [RFC 0/1] ethdev: per-packet Tx timestamp slot management Stephen Hemminger
2026-08-20  4:41 ` Naga Harish K, S V
2026-08-27 11:09   ` Kumar, Rajesh
2026-08-27 12:13 ` [RFC PATCH v2 0/1] ethdev: add Tx timestamp slot APIs Rajesh Kumar
2026-08-27 12:13   ` [RFC PATCH v3 1/1] ethdev: add Tx timestamp slot management APIs Rajesh Kumar
2026-08-27 12:18 ` [RFC PATCH v3 0/1] ethdev: add Tx timestamp slot APIs Rajesh Kumar
2026-08-27 12:21 ` Rajesh Kumar
2026-08-27 12:21   ` [RFC PATCH v3 1/1] ethdev: add Tx timestamp slot management APIs Rajesh Kumar
2026-08-27 21:45     ` Stephen Hemminger
2026-09-02  5:51     ` Rajesh Kumar [this message]
2026-09-02  5:51       ` [RFC PATCH v4 1/3] " Rajesh Kumar
2026-09-02 14:13         ` Stephen Hemminger
2026-09-02  5:51       ` [RFC PATCH v4 2/3] net/ice: support per-packet Tx timestamp slots Rajesh Kumar
2026-09-02  5:51       ` [RFC PATCH v4 3/3] app/testpmd: add Tx timestamp capabilities command Rajesh Kumar
2026-08-27 12:34 ` [RFC PATCH v2 0/1] ethdev: add Tx timestamp slot APIs Rajesh Kumar
2026-08-27 12:34   ` [RFC PATCH v2 1/1] ethdev: add Tx timestamp slot management APIs Rajesh Kumar
2026-09-02 14:16   ` [RFC PATCH v2 0/1] ethdev: add Tx timestamp slot APIs Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260902055125.836268-1-rajesh3.kumar@intel.com \
    --to=rajesh3.kumar@intel.com \
    --cc=aman.deep.singh@intel.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox