135 lines
4.9 KiB
Diff
135 lines
4.9 KiB
Diff
From 7ac8dac643da2af42736e095cb33e33c4e8e5c7f Mon Sep 17 00:00:00 2001
|
|
From: Jian Shen <shenjian15@huawei.com>
|
|
Date: Tue, 28 Sep 2021 11:52:16 +0800
|
|
Subject: [PATCH 123/283] net: hns3: refine function hns3_set_default_feature()
|
|
|
|
mainline inclusion
|
|
from mainline-v5.15-rc1
|
|
commit dc9b5ce03124cf86bac3bd714369a8387d6e2012
|
|
category: feature
|
|
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I8EMYT
|
|
CVE: NA
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dc9b5ce03124cf86bac3bd714369a8387d6e2012
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Currently, the driver sets default feature for netdev->features,
|
|
netdev->hw_features, netdev->vlan_features and
|
|
netdev->hw_enc_features separately. It's fussy, because most
|
|
of the feature bits are same. So refine it by copy value from
|
|
netdev->features.
|
|
|
|
Signed-off-by: Jian Shen <shenjian15@huawei.com>
|
|
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Reviewed-by: Yongxin Li <liyongxin1@huawei.com>
|
|
Signed-off-by: Junxin Chen <chenjunxin1@huawei.com>
|
|
Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com>
|
|
Signed-off-by: Xiaodong Li <lixiaodong67@huawei.com>
|
|
|
|
Conflicts:
|
|
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
|
|
---
|
|
.../net/ethernet/hisilicon/hns3/hns3_enet.c | 67 ++++++-------------
|
|
1 file changed, 22 insertions(+), 45 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
|
|
index f02b976a89bc..907d8e62e174 100644
|
|
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
|
|
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
|
|
@@ -2820,17 +2820,7 @@ static void hns3_set_default_feature(struct net_device *netdev)
|
|
|
|
netdev->priv_flags |= IFF_UNICAST_FLT;
|
|
|
|
- netdev->hw_enc_features |= 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;
|
|
-
|
|
-#ifdef NETIF_F_GSO_PARTIAL
|
|
- netdev->hw_enc_features |= NETIF_F_TSO_MANGLEID;
|
|
-
|
|
netdev->gso_partial_features |= NETIF_F_GSO_GRE_CSUM;
|
|
-#endif
|
|
|
|
netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER |
|
|
NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX |
|
|
@@ -2840,50 +2830,37 @@ static void hns3_set_default_feature(struct net_device *netdev)
|
|
NETIF_F_GSO_UDP_TUNNEL_CSUM | NETIF_F_SCTP_CRC |
|
|
NETIF_F_FRAGLIST;
|
|
|
|
- netdev->vlan_features |= 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;
|
|
-
|
|
- netdev->hw_features |= 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;
|
|
-
|
|
if (ae_dev->dev_version >= HNAE3_DEVICE_VERSION_V2) {
|
|
-#ifdef NETIF_F_GRO_HW
|
|
netdev->features |= NETIF_F_GRO_HW;
|
|
- netdev->hw_features |= NETIF_F_GRO_HW;
|
|
-#endif
|
|
- if (!(h->flags & HNAE3_SUPPORT_VF)) {
|
|
- netdev->hw_features |= NETIF_F_NTUPLE;
|
|
+
|
|
+ if (!(h->flags & HNAE3_SUPPORT_VF))
|
|
netdev->features |= NETIF_F_NTUPLE;
|
|
- }
|
|
}
|
|
|
|
- if (test_bit(HNAE3_DEV_SUPPORT_UDP_GSO_B, ae_dev->caps)) {
|
|
- netdev->hw_features |= NETIF_F_GSO_UDP_L4;
|
|
+ if (test_bit(HNAE3_DEV_SUPPORT_UDP_GSO_B, ae_dev->caps))
|
|
netdev->features |= NETIF_F_GSO_UDP_L4;
|
|
- netdev->vlan_features |= NETIF_F_GSO_UDP_L4;
|
|
- netdev->hw_enc_features |= NETIF_F_GSO_UDP_L4;
|
|
- }
|
|
|
|
- if (test_bit(HNAE3_DEV_SUPPORT_HW_TX_CSUM_B, ae_dev->caps)) {
|
|
- netdev->hw_features |= NETIF_F_HW_CSUM;
|
|
+ if (test_bit(HNAE3_DEV_SUPPORT_HW_TX_CSUM_B, ae_dev->caps))
|
|
netdev->features |= NETIF_F_HW_CSUM;
|
|
- netdev->vlan_features |= NETIF_F_HW_CSUM;
|
|
- netdev->hw_enc_features |= NETIF_F_HW_CSUM;
|
|
- } else {
|
|
- netdev->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
|
|
+ else
|
|
netdev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
|
|
- netdev->vlan_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
|
|
- netdev->hw_enc_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
|
|
- }
|
|
+
|
|
+ if (test_bit(HNAE3_DEV_SUPPORT_UDP_TUNNEL_CSUM_B, ae_dev->caps))
|
|
+ netdev->features |= NETIF_F_GSO_UDP_TUNNEL_CSUM;
|
|
+
|
|
+ if (test_bit(HNAE3_DEV_SUPPORT_FD_FORWARD_TC_B, ae_dev->caps))
|
|
+ netdev->features |= NETIF_F_HW_TC;
|
|
+
|
|
+ netdev->hw_features |= netdev->features;
|
|
+ if (!test_bit(HNAE3_DEV_SUPPORT_VLAN_FLTR_MDF_B, ae_dev->caps))
|
|
+ netdev->hw_features &= ~NETIF_F_HW_VLAN_CTAG_FILTER;
|
|
+
|
|
+ netdev->vlan_features |= netdev->features &
|
|
+ ~(NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_CTAG_TX |
|
|
+ NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_GRO_HW | NETIF_F_NTUPLE |
|
|
+ NETIF_F_HW_TC);
|
|
+
|
|
+ netdev->hw_enc_features |= netdev->vlan_features | NETIF_F_TSO_MANGLEID;
|
|
}
|
|
|
|
static int hns3_alloc_buffer(struct hns3_enet_ring *ring,
|
|
--
|
|
2.34.1
|
|
|