> -----Original Message-----
> From: Michal Swiatkowski <[email protected]>
> Sent: Tuesday, April 28, 2026 9:07 AM
> To: [email protected]
> Cc: [email protected]; [email protected]; Nguyen, Anthony L
> <[email protected]>; Kitszel, Przemyslaw
> <[email protected]>; Loktionov, Aleksandr
> <[email protected]>; Michal Swiatkowski
> <[email protected]>
> Subject: [PATCH iwl-net v1 2/2] ice: use NETIF_F_HW_CSUM instead of
> IP/IPV6
> 
> The hardware is capable of calculating checksum for IPV6 packets with
> extension header. To not drop such packets switch from IP/IPV6
> checksum to HW_CSUM.
> 
> HW_CSUM is also used in previous generation (i40e).
> 
> Previously HW_CSUM was used to indicate that hardware supports general
> checksum. Drop it assuming that if the hardware supports it, it is
> used.
> 
> Disabling offload for E830 in case of TSO isn't needed anymore as the
> check for TSO is done in Tx path just before preparation of the
> special GCS descriptor.
> 
> The commit from Fixes didn't introduce a bug, it just shown that the
> driver is doing sth wrong with the checksum features.
> 
> Suggested-by: Jakub Ramaseuski <[email protected]>
> Reviewed-by: Przemek Kitszel <[email protected]>
> Fixes: 04c20a9356f2 ("net: skip offload for NETIF_F_IPV6_CSUM if ipv6
> header contains extension")
> Signed-off-by: Michal Swiatkowski <[email protected]>
> ---
>  drivers/net/ethernet/intel/ice/ice_main.c | 21 +--------------------
>  1 file changed, 1 insertion(+), 20 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c
> b/drivers/net/ethernet/intel/ice/ice_main.c
> index 15550216fbf0..0f2f949af536 100644
> --- a/drivers/net/ethernet/intel/ice/ice_main.c
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -3500,9 +3500,8 @@ void ice_set_netdev_features(struct net_device
> *netdev)
>                       NETIF_F_RXHASH;
> 
>       csumo_features = NETIF_F_RXCSUM   |
> -                      NETIF_F_IP_CSUM  |
>                        NETIF_F_SCTP_CRC |
> -                      NETIF_F_IPV6_CSUM;
> +                      NETIF_F_HW_CSUM;
> 
>       vlano_features = NETIF_F_HW_VLAN_CTAG_FILTER |
>                        NETIF_F_HW_VLAN_CTAG_TX     |
> @@ -3564,12 +3563,6 @@ void ice_set_netdev_features(struct net_device
> *netdev)
>       /* Allow core to manage IRQs affinity */
>       netif_set_affinity_auto(netdev);
> 
> -     /* Mutual exclusivity for TSO and GCS is enforced by the set
> features
> -      * ndo callback.
> -      */
> -     if (ice_is_feature_supported(pf, ICE_F_GCS))
> -             netdev->hw_features |= NETIF_F_HW_CSUM;
> -
>       netif_set_tso_max_size(netdev, ICE_MAX_TSO_SIZE);  }
> 
> @@ -6489,18 +6482,6 @@ ice_set_features(struct net_device *netdev,
> netdev_features_t features)
>       if (changed & NETIF_F_LOOPBACK)
>               ret = ice_set_loopback(vsi, !!(features &
> NETIF_F_LOOPBACK));
> 
> -     /* Due to E830 hardware limitations, TSO (NETIF_F_ALL_TSO) with
> GCS
> -      * (NETIF_F_HW_CSUM) is not supported.
> -      */
> -     if (ice_is_feature_supported(pf, ICE_F_GCS) &&
> -         ((features & NETIF_F_HW_CSUM) && (features &
> NETIF_F_ALL_TSO))) {
> -             if (netdev->features & NETIF_F_HW_CSUM)
> -                     dev_err(ice_pf_to_dev(pf), "To enable TSO, you
> must first disable HW checksum.\n");
> -             else
> -                     dev_err(ice_pf_to_dev(pf), "To enable HW
> checksum, you must first disable TSO.\n");
> -             return -EIO;
> -     }
> -
>       return ret;
>  }
> 
> --
> 2.49.0

Reviewed-by: Aleksandr Loktionov <[email protected]>

Reply via email to