On Mon, Aug 18, 2025 at 09:22:55AM -0400, Paul Greenwalt wrote:
> This patch series introduces support for Earliest TxTime First (ETF)
> hardware offload on Intel E830 network devices. ETF allows applications
> to specify when packets should be transmitted, enabling precise timing
> control for time-sensitive networking applications.
> 
> The implementation consists of two patches:
> 
> 1. A preparatory patch that moves queue pair enable/disable functions
>    from ice_xsk.c to ice_base.c for reuse by the ETF implementation.
> 
> 2. The main ETF implementation that adds comprehensive support for
>    hardware-accelerated timestamp-based packet transmission.
> 
> Key Features
> 
> - Hardware offload for Earliest TxTime First (ETF) Qdisc
> - Per-queue configuration via tc-etf(8) 
> - Support for up to 2048 Tx queues with ETF capability
> - Timestamp ring mechanism for precise transmission timing
> - Dynamic enable/disable of ETF on individual queues
> 
> Hardware Details
> 
> E830 introduces a new Tx flow mechanism using a dedicated timestamp ring
> alongside the standard Tx ring. The timestamp ring contains descriptors
> that specify when hardware should transmit packets. Due to hardware
> limitations, additional timestamp descriptors are reserved when wrapping
> around the ring to prevent malicious driver detection events.
> 
> Configuration
> 
> ETF is configured per-queue using the standard tc-etf Qdisc (see
> tc-etf(8)).
> 

CC: [email protected]

Thanks for your patience Paul:) For the series:
Acked-by: Maciej Fijalkowski <[email protected]>

please cc netdev in the future when sending patches to iwl.

> ---
> Changelog
> v6->v7:
>  - Move tstamp_ring related member variables (tail, count, next_to_use,
>    desc) from ice_tx_ring to ice_tstamp_ring,
>  - Ignore ice_qp_dis() return value, and always attempt to enable the queue
>    via ice_qp_ena()
> v5->v6:
>  - Fixed resource leak in error path
>  - Added input validation
>  - Update error handling logic for disable failures
>  - Move ice_qp_* functions to preparatory patch, and add coverletter
>  - Address code style issues (u32 vs u16, code flattening)
>  - Propagate error status from ice_set_txq_ctx_vmvf
>  - Removed unnecessary RDMA compatibility checks
> v4->v5:
>  - Fix ! vs ~ issue reported by Smatch:
>    ice_txrx.c:192 ice_free_tx_tstamp_ring() warn: potential ! vs ~ typo
> v3->v4:
>  - Move ice_tstamp_ring to a member of ice_tx_ring (Maciej).
>   - Add struct ice_tstamp_ring for timestamp ring management.
>   - Move tstsmp ring fast patch variables to ice_tx_ring
>     (i.e. tstamp_[next_to_use|count|tail|desc]).
>   - Allocate/configure Tx Time on a per Tx ring basis using
>     ice_qp_[ena|dis], add txtime_txqs bitmap and ice_is_txtime_ena()
>     helper function, update all Tx ring and tstamp inrg allocation and
>     configuration flows.
>  - Update commit message related to updated implementation/design.
> v2->v3:
>  - Fix const compiler warning.
>  - Fix spelling error in function header.
>  - Fix Changelog version number.
> v1->v2:
>  - Resolve patch apply issue.
>  - Fixes RCT, zero struct initialization, move bailout condition to top
>    of function, removed unnecessary newlines, and added use of
>    str_enable_disable.
> v1: 
> https://patchwork.ozlabs.org/project/intel-wired-lan/patch/[email protected]/
> 
> Paul Greenwalt (2):
>   ice: move ice_qp_[ena|dis] for reuse
>   ice: add E830 Earliest TxTime First Offload support
> 
>  drivers/net/ethernet/intel/ice/ice.h          |  33 +-
>  .../net/ethernet/intel/ice/ice_adminq_cmd.h   |  35 ++
>  drivers/net/ethernet/intel/ice/ice_base.c     | 390 ++++++++++++++++--
>  drivers/net/ethernet/intel/ice/ice_base.h     |   3 +
>  drivers/net/ethernet/intel/ice/ice_common.c   |  78 ++++
>  drivers/net/ethernet/intel/ice/ice_common.h   |   6 +
>  drivers/net/ethernet/intel/ice/ice_ethtool.c  |  14 +-
>  .../net/ethernet/intel/ice/ice_hw_autogen.h   |   3 +
>  .../net/ethernet/intel/ice/ice_lan_tx_rx.h    |  41 ++
>  drivers/net/ethernet/intel/ice/ice_lib.c      |   1 +
>  drivers/net/ethernet/intel/ice/ice_main.c     | 109 ++++-
>  drivers/net/ethernet/intel/ice/ice_txrx.c     | 173 +++++++-
>  drivers/net/ethernet/intel/ice/ice_txrx.h     |  15 +
>  drivers/net/ethernet/intel/ice/ice_txrx_lib.h |  14 +
>  drivers/net/ethernet/intel/ice/ice_virtchnl.c |   2 +-
>  drivers/net/ethernet/intel/ice/ice_xsk.c      | 153 +------
>  drivers/net/ethernet/intel/ice/ice_xsk.h      |  22 +
>  17 files changed, 895 insertions(+), 197 deletions(-)
> 
> -- 
> 2.47.0
> 

Reply via email to