> -----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)
