On Thu, 27 Aug 2026 18:04:33 +0530
Rajesh Kumar <[email protected]> wrote:
> 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.
Later review with AI assistance also reached conclusion:
Overall, this adds seven new experimental functions plus an exported
array to solve one problem. Before going further, cut it down:
- drop rte_eth_timesync_tx_slot_dynfield_unregister(), it does nothing
- drop rte_eth_timesync_tx_slot_dynfield_register(), do it inside
rte_eth_timesync_enable() and fail enable if there is no dynfield space
- drop rte_eth_timesync_tx_timestamp_stamp_mbuf(), export the offset
and flag the same way rte_mbuf_dyn_rx_timestamp does and let the app
write the field
- drop the rte_eth_timesync_tx_slot_infos[] array and the static inline,
PMDs get the two globals from ethdev_driver.h
That leaves caps, alloc, read, release.
For the legacy API: rather than a doc comment pointing at the new one,
have ethdev synthesize SINGLE_REG / max_slots=1 from
timesync_read_tx_timestamp for PMDs without slot ops, convert testpmd
ieee1588fwd and examples/ptpclient in this series, and add a
deprecation notice with a removal release. Otherwise we end up carrying
both forever.