On Sat, 15 Aug 2026 00:45:50 +0000
Mark Blasko <[email protected]> wrote:

> This patch series introduces support for dynamic Rx timestamping and
> clock querying in the AF_XDP Poll Mode Driver.
> 
> The first patch introduces three new vdev devargs to specify
> layout-agnostic metadata offsets and bitmasks for extracting hardware
> Rx timestamps from XDP metadata into the mbuf dynamic timestamp field.
> 
> The second patch implements the read_clock ethdev operation, querying
> ethtool for the interface's PTP Hardware Clock index at start and using
> clock_gettime to query the NIC hardware clock time.
> ---
> v6:
> - Patch 1:
>   - Add per-queue Rx timestamp offload support.
>   - Refine SIOCGHWTSTAMP filter check and preserve flags.
>   - Fix feature matrix ordering in af_xdp.ini.
>   - Add conversion and overlap validation for devargs.
>   - Unify timestamp extraction for ZC and CP paths.
>   - Update documentation formatting, bounds, and casing.
> - Patch 2:
>   - Fix ptp_fd cleanup path in eth_dev_close().
>   - Lower PTP open failure log level to INFO.
> v5:
> - Patch 1:
>   - Fix rx_timestamp_enabled check in eth_rx_queue_setup().
>   - Update af_xdp.rst documentation and code example.
>   - Update release notes for 26.11.
> - Patch 2:
>   - Update release notes for 26.11.
> v4:
> - Patch 1:
>   - Validate rx_timestamp_offset (8 <= offset <= 256) and valid_hint_offset
>     (1 <= offset <= 256) bounds.
>   - Revert parse_integer_arg() to base 10 and add dedicated parse_hex_arg()
>     for validity mask.
>   - Optimize fast-path check and use rte_pktmbuf_mtod_offset() macro.
>   - Preserve config.tx_type in SIOCSHWTSTAMP instead of forcing
>     HWTSTAMP_TX_OFF.
>   - Return -errno on socket failure and replace (caddr_t) cast with
>     (void *).
>   - Advertise RTE_ETH_RX_OFFLOAD_TIMESTAMP conditionally when
>     rx_timestamp_offset >= 0.
>   - Update af_xdp.ini features matrix with Timestamp offload = Y.
>   - Document CAP_NET_ADMIN requirement and persistent HW filter side
>     effect in af_xdp.rst.
> - Patch 2:
>   - Move ptp_fd into pmd_process_private for multi-process safety.
>   - Decouple /dev/ptpX opening from RTE_ETH_RX_OFFLOAD_TIMESTAMP.
>   - Move read_clock documentation out of "Options" into its own section
>     in af_xdp.rst.
>   - Add #ifndef guards around CLOCKFD and FD_TO_CLOCKID macro definitions.
>   - Replace (caddr_t) cast with (void *).
> v3:
> - Patch 1:
>   - Add PMD documentation and release notes entry.
>   - Move dynamic mbuf timestamp field registration to eth_dev_start().
>   - Replace 64-bit pointer casting with memcpy.
>   - Add devargs validation and support auto-base integer parsing.
> - Patch 2:
>   - Add documentation and release notes entry.
>   - Add PTP file descriptor cleanup on device start, stop, and close.
>   - Return -errno on clock_gettime() failure and fix PTP open error logging.
> v2:
> - Patch 1:
>   - Replace static metadata struct assumption with configurable vdev devargs
>     for layout-agnostic timestamp offset extraction and validity verification.
> 
> Mark Blasko (2):
>   net/af_xdp: add af_xdp rx metadata and dynamic timestamping support
>   net/af_xdp: add read_clock support to AF_XDP PMD
> 
>  doc/guides/nics/af_xdp.rst             |  51 ++++
>  doc/guides/nics/features/af_xdp.ini    |   1 +
>  doc/guides/rel_notes/release_26_11.rst |   7 +
>  drivers/net/af_xdp/rte_eth_af_xdp.c    | 340 ++++++++++++++++++++++++-
>  4 files changed, 390 insertions(+), 9 deletions(-)
> 

Reading through the AI review chaff, all I see left as a minor
issue is:

 
Warning 1: eth_af_xdp_enable_hw_timestamping() writes an all-zero
hwtstamp_config when SIOCGHWTSTAMP fails.
 
    struct hwtstamp_config config = {0};
    ...
    ret = ioctl(fd, SIOCGHWTSTAMP, &ifr);
    if (ret == 0) {
            if (config.rx_filter == HWTSTAMP_FILTER_ALL || ...)
                    ...
    }
 
    config.rx_filter = HWTSTAMP_FILTER_ALL;
    ret = ioctl(fd, SIOCSHWTSTAMP, &ifr);
 
The v6 changelog says config.flags is preserved, but that only holds
when the GET succeeded.  Some drivers implement SET without GET; on
those the SET goes out with tx_type = HWTSTAMP_TX_OFF and flags = 0,
which turns off any Tx hardware timestamping another user of that
netdev had configured.  Since the setting is not restored on stop,
that is permanent.  Either fail when the GET fails, or only issue the
SET with a config that was actually read back.

Reply via email to