Use netdev_feature_xxx helpers to replace the logical operation for netdev features.
Signed-off-by: Jian Shen shenjian15@huawei.com --- drivers/net/vxlan.c | 21 ++++++++++++--------- include/net/vxlan.h | 4 ++-- 2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 141635a35c28..1978dfc71056 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -3294,15 +3294,18 @@ static void vxlan_setup(struct net_device *dev) dev->needs_free_netdev = true; SET_NETDEV_DEVTYPE(dev, &vxlan_type);
- dev->features |= NETIF_F_LLTX; - dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST; - dev->features |= NETIF_F_RXCSUM; - dev->features |= NETIF_F_GSO_SOFTWARE; - - dev->vlan_features = dev->features; - dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST; - dev->hw_features |= NETIF_F_RXCSUM; - dev->hw_features |= NETIF_F_GSO_SOFTWARE; + netdev_feature_set_bit(NETIF_F_LLTX_BIT, &dev->features); + netdev_feature_set_bits(NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST, + &dev->features); + netdev_feature_set_bit(NETIF_F_RXCSUM_BIT, &dev->features); + netdev_feature_set_bits(NETIF_F_GSO_SOFTWARE, &dev->features); + + netdev_feature_copy(&dev->vlan_features, dev->features); + netdev_feature_set_bits(NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST, + &dev->hw_features); + netdev_feature_set_bit(NETIF_F_RXCSUM_BIT, &dev->hw_features); + netdev_feature_set_bits(NETIF_F_GSO_SOFTWARE, &dev->hw_features); + netif_keep_dst(dev); dev->priv_flags |= IFF_NO_QUEUE;
diff --git a/include/net/vxlan.h b/include/net/vxlan.h index a801e59e2313..dba14ed12c5d 100644 --- a/include/net/vxlan.h +++ b/include/net/vxlan.h @@ -322,8 +322,8 @@ static inline void vxlan_features_check(struct sk_buff *skb, sizeof(struct udphdr) + sizeof(struct vxlanhdr)) || (skb->ip_summed != CHECKSUM_NONE && !can_checksum_protocol(*features, inner_eth_hdr(skb)->h_proto)))) - *features &= ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); - + netdev_feature_clear_bits(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK, + features); }
/* IP header + UDP + VXLAN + Ethernet header */