r8169: improve rtl8169_set_features
authorHeiner Kallweit <hkallweit1@gmail.com>
Sat, 28 Apr 2018 20:19:15 +0000 (22:19 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 30 Apr 2018 13:38:19 +0000 (09:38 -0400)
__rtl8169_set_features is used in rtl8169_set_features only, so we
can inline it. In addition:
- Remove check (features ^ dev->features), __netdev_update_features
  check's already that requested features differ from current ones.
- Don't mask out unsupported flags, there's no benefit in it.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/realtek/r8169.c

index d265622..411d12b 100644 (file)
@@ -1935,12 +1935,14 @@ static netdev_features_t rtl8169_fix_features(struct net_device *dev,
        return features;
 }
 
-static void __rtl8169_set_features(struct net_device *dev,
-                                  netdev_features_t features)
+static int rtl8169_set_features(struct net_device *dev,
+                               netdev_features_t features)
 {
        struct rtl8169_private *tp = netdev_priv(dev);
        u32 rx_config;
 
+       rtl_lock_work(tp);
+
        rx_config = RTL_R32(tp, RxConfig);
        if (features & NETIF_F_RXALL)
                rx_config |= (AcceptErr | AcceptRunt);
@@ -1963,24 +1965,12 @@ static void __rtl8169_set_features(struct net_device *dev,
 
        RTL_W16(tp, CPlusCmd, tp->cp_cmd);
        RTL_R16(tp, CPlusCmd);
-}
 
-static int rtl8169_set_features(struct net_device *dev,
-                               netdev_features_t features)
-{
-       struct rtl8169_private *tp = netdev_priv(dev);
-
-       features &= NETIF_F_RXALL | NETIF_F_RXCSUM | NETIF_F_HW_VLAN_CTAG_RX;
-
-       rtl_lock_work(tp);
-       if (features ^ dev->features)
-               __rtl8169_set_features(dev, features);
        rtl_unlock_work(tp);
 
        return 0;
 }
 
-
 static inline u32 rtl8169_tx_vlan_tag(struct sk_buff *skb)
 {
        return (skb_vlan_tag_present(skb)) ?