> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of Paul 
> Greenwalt
> Sent: Wednesday, September 18, 2024 3:16 AM
> To: [email protected]
> Cc: Joyner, Eric <[email protected]>; Lobakin, Aleksander 
> <[email protected]>; Michael, Alice <[email protected]>; 
> Nguyen, Anthony L <[email protected]>; Greenwalt, Paul 
> <[email protected]>
> Subject: [Intel-wired-lan] [PATCH iwl-next v3] ice: Add E830 checksum offload 
> support
>
> E830 supports raw receive and generic transmit checksum offloads.
>
> Raw receive checksum support is provided by hardware calculating the checksum 
> over the whole packet, regardless of type. The calculated checksum is 
> provided to driver in the Rx flex descriptor. Then the driver assigns the 
> checksum to skb->csum and sets skb->ip_summed to CHECKSUM_COMPLETE.
> 
> Generic transmit checksum support is provided by hardware calculating the 
> checksum given two offsets: the start offset to begin checksum calculation, 
> and the offset to insert the calculated checksum in the packet. Support is 
> advertised to the stack using NETIF_F_HW_CSUM feature.
>
> E830 has the following limitations when both generic transmit checksum 
> offload and TCP Segmentation Offload (TSO) are enabled:
>
> 1. Inner packet header modification is not supported. This restriction
>    includes the inability to alter TCP flags, such as the push flag. As a
>    result, this limitation can impact the receiver's ability to coalesce
>    packets, potentially degrading network throughput.
> 2. The Maximum Segment Size (MSS) is limited to 1023 bytes, which prevents
>    support of Maximum Transmission Unit (MTU) greater than 1063 bytes.
>
> Therefore NETIF_F_HW_CSUM and NETIF_F_ALL_TSO features are mutually 
> exclusive. NETIF_F_HW_CSUM hardware feature support is indicated but is not 
> enabled by default. Instead, IP checksums and > NETIF_F_ALL_TSO are the 
> defaults. Enforcement of mutual exclusivity of NETIF_F_HW_CSUM and 
> NETIF_F_ALL_TSO is done in ice_fix_features_tso_gcs(). Mutual exclusivity of 
> IP checksums and > NETIF_F_HW_CSUM is handled by netdev_fix_features().
> 
> When NETIF_F_HW_CSUM is requested the provided skb->csum_start and
> skb->csum_offset are passed to hardware in the Tx context descriptor
> generic checksum (GCS) parameters. Hardware calculates the 1's complement 
> from skb->csum_start to the end of the packet, and inserts the result in the 
> packet at skb->csum_offset.
>
> Co-developed-by: Alice Michael <[email protected]>
> Signed-off-by: Alice Michael <[email protected]>
> Co-developed-by: Eric Joyner <[email protected]>
> Signed-off-by: Eric Joyner <[email protected]>
> Signed-off-by: Paul Greenwalt <[email protected]>
> ---
> v1->v2
> - Update commit message with additional details.
> - Add newlines, and add params around
> - Return early from ice_fix_features() to avoid extra indentation and
>   large if block.
> - Move and change some defines.
> - replace htons and le16_t_cpu with swap16.
> - Use FIELD_PREP where possible.
> - Removed checksum valid bit check STATUS1_L2TAG2P_S. This check is not
>   needed since there is no situation which will return an error.
> v2->v3
> - Minor fixes in commit message.
> - Removed unused register defines in ice_hw_autogen.h.
> - Moved GCS and TSO feature fix to helper function
>   ice_fix_features_gcs(), and updated logic.
> - Update to align naming with related flags.
> ---
>  drivers/net/ethernet/intel/ice/ice.h          |  1 +
>  .../net/ethernet/intel/ice/ice_lan_tx_rx.h    |  9 +++-
>  drivers/net/ethernet/intel/ice/ice_lib.c      | 12 +++++-
>  drivers/net/ethernet/intel/ice/ice_main.c     | 43 +++++++++++++++++++
>  drivers/net/ethernet/intel/ice/ice_txrx.c     | 26 ++++++++++-
>  drivers/net/ethernet/intel/ice/ice_txrx.h     |  3 ++
>  drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 26 +++++++++++
>  7 files changed, 116 insertions(+), 4 deletions(-)
>

Tested-by: Pucha Himasekhar Reddy <[email protected]> (A 
Contingent worker at Intel)

Reply via email to