> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of Paul 
> Greenwalt
> Sent: 18 August 2025 18:53
> To: [email protected]
> Cc: Fijalkowski, Maciej <[email protected]>; Greenwalt, Paul 
> <[email protected]>; Loktionov, Aleksandr 
> <[email protected]>
> Subject: [Intel-wired-lan] [PATCH iwl-next v7 2/2] ice: add E830 Earliest 
> TxTime First Offload support
>
> E830 supports Earliest TxTime First (ETF) hardware offload, which is 
> configured via the ETF Qdisc on a per-queue basis (see tc-etf(8)). ETF 
> introduces a new Tx flow mechanism that utilizes a timestamp ring
> (tstamp_ring) alongside the standard Tx ring. This timestamp ring is used to 
> indicate when hardware will transmit a packet. Tx Time is supported on the 
> first 2048 Tx queues of the device, and the NVM image limits the maximum 
> number of Tx queues to 2048 for the device.
>
> The allocation and initialization of the timestamp ring occur when the 
> feature is enabled on a specific Tx queue via tc-etf. The requested Tx Time 
> queue index cannot be greater than the number of Tx queues (vsi->num_txq).
>
> To support ETF, the following flags and bitmap are introduced:
>
> - ICE_F_TXTIME: Device feature flag set for E830 NICs, indicating ETF
>   support.
> - txtime_txqs: PF-level bitmap set when ETF is enabled and cleared
>   when disabled for a specific Tx queue. It is used by
>   ice_is_txtime_ena() to check if ETF is allocated and configured on
>   any Tx queue, which is checked during Tx ring allocation.
> - ICE_TX_FLAGS_TXTIME: Per Tx ring flag set when ETF is allocated and
>   configured for a specific Tx queue. It determines ETF status during
>   packet transmission and is checked by ice_is_txtime_ena() to verify
>   if ETF is enabled on any Tx queue.
>
> Due to a hardware issue that can result in a malicious driver detection 
> event, additional timestamp descriptors are required when wrapping around the 
> timestamp ring. Up to 64 additional timestamp descriptors are reserved, 
> reducing the available Tx descriptors.
>
> To accommodate this, ICE_MAX_NUM_DESC_BY_MAC is introduced, defining:
>
> - E830: Maximum Tx descriptor count of 8096 (8K - 32 - 64 for timestamp
>   fetch descriptors).
> - E810 and E82X: Maximum Tx descriptor count of 8160 (8K - 32).
>
> Reviewed-by: Aleksandr Loktionov <[email protected]>
> Co-developed-by: Alice Michael <[email protected]>
> Signed-off-by: Alice Michael <[email protected]>
> Signed-off-by: Paul Greenwalt <[email protected]>
> ---
> 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     | 245 +++++++++++++++---
> drivers/net/ethernet/intel/ice/ice_base.h     |   1 +
> 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 +-
> 15 files changed, 722 insertions(+), 48 deletions(-)
>

Tested-by: Rinitha S <[email protected]> (A Contingent worker at Intel)

Reply via email to