net: hns3: fix GRE checksum offload issue
authorJie Wang <wangjie125@huawei.com>
Mon, 18 Sep 2023 07:48:37 +0000 (15:48 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 6 Oct 2023 12:56:40 +0000 (14:56 +0200)
[ Upstream commit f9f651261130cdcb7adc9a3e365b356bc2749ab3 ]

The device_version V3 hardware can't offload the checksum for IP in GRE
packets, but can do it for NvGRE. So default to disable the checksum and
GSO offload for GRE, but keep the ability to enable it when only using
NvGRE.

Fixes: 76ad4f0ee747 ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC")
Signed-off-by: Jie Wang <wangjie125@huawei.com>
Signed-off-by: Jijie Shao <shaojijie@huawei.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c

index 8aae179554a812030f86e325b979d3d90c412916..04c9baca1b0f88172c8ea85cd78f6f1ca3550024 100644 (file)
@@ -3352,6 +3352,15 @@ static void hns3_set_default_feature(struct net_device *netdev)
                  NETIF_F_HW_TC);
 
        netdev->hw_enc_features |= netdev->vlan_features | NETIF_F_TSO_MANGLEID;
+
+       /* The device_version V3 hardware can't offload the checksum for IP in
+        * GRE packets, but can do it for NvGRE. So default to disable the
+        * checksum and GSO offload for GRE.
+        */
+       if (ae_dev->dev_version > HNAE3_DEVICE_VERSION_V2) {
+               netdev->features &= ~NETIF_F_GSO_GRE;
+               netdev->features &= ~NETIF_F_GSO_GRE_CSUM;
+       }
 }
 
 static int hns3_alloc_buffer(struct hns3_enet_ring *ring,