[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210929155334.12454-162-shenjian15@huawei.com>
Date: Wed, 29 Sep 2021 23:53:28 +0800
From: Jian Shen <shenjian15@...wei.com>
To: <davem@...emloft.net>, <kuba@...nel.org>, <andrew@...n.ch>,
<hkallweit1@...il.com>
CC: <netdev@...r.kernel.org>, <linuxarm@...neuler.org>
Subject: [RFCv2 net-next 161/167] net: openvswitch: use netdev feature helpers
Use netdev_feature_xxx helpers to replace the logical operation
for netdev features.
Signed-off-by: Jian Shen <shenjian15@...wei.com>
---
net/openvswitch/datapath.c | 5 ++++-
net/openvswitch/vport-internal_dev.c | 24 +++++++++++++++---------
2 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 67ad08320886..dfb69428c6b2 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -320,10 +320,13 @@ static int queue_gso_packets(struct datapath *dp, struct sk_buff *skb,
unsigned int gso_type = skb_shinfo(skb)->gso_type;
struct sw_flow_key later_key;
struct sk_buff *segs, *nskb;
+ netdev_features_t feature;
int err;
BUILD_BUG_ON(sizeof(*OVS_CB(skb)) > SKB_GSO_CB_OFFSET);
- segs = __skb_gso_segment(skb, NETIF_F_SG, false);
+ netdev_feature_zero(&feature);
+ netdev_feature_set_bit(NETIF_F_SG_BIT, &feature);
+ segs = __skb_gso_segment(skb, feature, false);
if (IS_ERR(segs))
return PTR_ERR(segs);
if (segs == NULL)
diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c
index 5b2ee9c1c00b..27b7322be008 100644
--- a/net/openvswitch/vport-internal_dev.c
+++ b/net/openvswitch/vport-internal_dev.c
@@ -108,14 +108,19 @@ static void do_setup(struct net_device *netdev)
netdev->ethtool_ops = &internal_dev_ethtool_ops;
netdev->rtnl_link_ops = &internal_dev_link_ops;
- netdev->features = NETIF_F_LLTX | NETIF_F_SG | NETIF_F_FRAGLIST |
- NETIF_F_HIGHDMA | NETIF_F_HW_CSUM |
- NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ENCAP_ALL;
-
- netdev->vlan_features = netdev->features;
- netdev->hw_enc_features = netdev->features;
- netdev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX;
- netdev->hw_features = netdev->features & ~NETIF_F_LLTX;
+ netdev_feature_zero(&netdev->features);
+ netdev_feature_set_bits(NETIF_F_LLTX | NETIF_F_SG | NETIF_F_FRAGLIST |
+ NETIF_F_HIGHDMA | NETIF_F_HW_CSUM |
+ NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ENCAP_ALL,
+ &netdev->features);
+
+ netdev_feature_copy(&netdev->vlan_features, netdev->features);
+ netdev_feature_copy(&netdev->hw_enc_features, netdev->features);
+ netdev_feature_set_bits(NETIF_F_HW_VLAN_CTAG_TX |
+ NETIF_F_HW_VLAN_STAG_TX,
+ &netdev->features);
+ netdev_feature_copy(&netdev->hw_features, netdev->features);
+ netdev_feature_clear_bit(NETIF_F_LLTX_BIT, &netdev->hw_features);
eth_hw_addr_random(netdev);
}
@@ -152,7 +157,8 @@ static struct vport *internal_dev_create(const struct vport_parms *parms)
/* Restrict bridge port to current netns. */
if (vport->port_no == OVSP_LOCAL)
- vport->dev->features |= NETIF_F_NETNS_LOCAL;
+ netdev_feature_set_bit(NETIF_F_NETNS_LOCAL_BIT,
+ &vport->dev->features);
rtnl_lock();
err = register_netdevice(vport->dev);
--
2.33.0
Powered by blists - more mailing lists