86 lines
3.2 KiB
Diff
86 lines
3.2 KiB
Diff
From 81c45d5a7a94f4a11969a7de829aa146d75acec6 Mon Sep 17 00:00:00 2001
|
|
From: Jie Wang <wangjie125@huawei.com>
|
|
Date: Tue, 23 May 2023 10:35:55 +0800
|
|
Subject: [PATCH 236/283] net: hns3: fix GRE checksum offload issue
|
|
|
|
driver inclusion
|
|
category: bugfix
|
|
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I8EN49
|
|
CVE: NA
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
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>
|
|
(cherry picked from commit df924f69199ae2297033cbe69ac656d7c1aadab6)
|
|
Signed-off-by: Xiaodong Li <lixiaodong67@huawei.com>
|
|
|
|
Conflicts:
|
|
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
|
|
---
|
|
drivers/net/ethernet/hisilicon/hns3/hnae3.h | 3 +++
|
|
.../net/ethernet/hisilicon/hns3/hns3_enet.c | 22 ++++++++++---------
|
|
2 files changed, 15 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
|
|
index d05ee2c939b8..ec9aa9233506 100644
|
|
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h
|
|
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
|
|
@@ -111,6 +111,9 @@ enum HNAE3_DEV_CAP_BITS {
|
|
#define hnae3_ae_dev_fd_supported(ae_dev) \
|
|
test_bit(HNAE3_DEV_SUPPORT_FD_B, (ae_dev)->caps)
|
|
|
|
+#define hnae3_ae_dev_gro_supported(ae_dev) \
|
|
+ test_bit(HNAE3_DEV_SUPPORT_GRO_B, (ae_dev)->caps)
|
|
+
|
|
#define hnae3_dev_fd_supported(hdev) \
|
|
test_bit(HNAE3_DEV_SUPPORT_FD_B, (hdev)->ae_dev->caps)
|
|
|
|
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
|
|
index 303b7b76bc8d..5b7bf29f0934 100644
|
|
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
|
|
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
|
|
@@ -2991,22 +2991,24 @@ static void hns3_set_default_feature(struct net_device *netdev)
|
|
|
|
netdev->priv_flags |= IFF_UNICAST_FLT;
|
|
|
|
- netdev->gso_partial_features |= NETIF_F_GSO_GRE_CSUM;
|
|
-
|
|
netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER |
|
|
NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX |
|
|
NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_GSO |
|
|
- NETIF_F_GRO | NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_GSO_GRE |
|
|
- NETIF_F_GSO_GRE_CSUM | NETIF_F_GSO_UDP_TUNNEL |
|
|
- NETIF_F_GSO_UDP_TUNNEL_CSUM | NETIF_F_SCTP_CRC |
|
|
- NETIF_F_FRAGLIST;
|
|
+ NETIF_F_GRO | NETIF_F_TSO | NETIF_F_TSO6 |
|
|
+ NETIF_F_GSO_UDP_TUNNEL |
|
|
+ NETIF_F_SCTP_CRC | NETIF_F_FRAGLIST;
|
|
+
|
|
+ if (pdev->revision == HNAE3_DEVICE_VERSION_V2) {
|
|
+ netdev->gso_partial_features |= NETIF_F_GSO_GRE_CSUM;
|
|
+ netdev->features |= NETIF_F_GSO_GRE_CSUM;
|
|
+ netdev->features |= NETIF_F_GSO_GRE;
|
|
+ }
|
|
|
|
- if (ae_dev->dev_version >= HNAE3_DEVICE_VERSION_V2) {
|
|
+ if (hnae3_ae_dev_gro_supported(ae_dev))
|
|
netdev->features |= NETIF_F_GRO_HW;
|
|
|
|
- if (!(h->flags & HNAE3_SUPPORT_VF))
|
|
- netdev->features |= NETIF_F_NTUPLE;
|
|
- }
|
|
+ if (hnae3_ae_dev_fd_supported(ae_dev))
|
|
+ netdev->features |= NETIF_F_NTUPLE;
|
|
|
|
if (test_bit(HNAE3_DEV_SUPPORT_UDP_GSO_B, ae_dev->caps))
|
|
netdev->features |= NETIF_F_GSO_UDP_L4;
|
|
--
|
|
2.34.1
|
|
|