Commit a3984578 authored by Heiner Kallweit's avatar Heiner Kallweit Committed by David S. Miller

r8169: improve rtl8169_set_features

__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: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e6626748
...@@ -1935,12 +1935,14 @@ static netdev_features_t rtl8169_fix_features(struct net_device *dev, ...@@ -1935,12 +1935,14 @@ static netdev_features_t rtl8169_fix_features(struct net_device *dev,
return features; return features;
} }
static void __rtl8169_set_features(struct net_device *dev, static int rtl8169_set_features(struct net_device *dev,
netdev_features_t features) netdev_features_t features)
{ {
struct rtl8169_private *tp = netdev_priv(dev); struct rtl8169_private *tp = netdev_priv(dev);
u32 rx_config; u32 rx_config;
rtl_lock_work(tp);
rx_config = RTL_R32(tp, RxConfig); rx_config = RTL_R32(tp, RxConfig);
if (features & NETIF_F_RXALL) if (features & NETIF_F_RXALL)
rx_config |= (AcceptErr | AcceptRunt); rx_config |= (AcceptErr | AcceptRunt);
...@@ -1963,24 +1965,12 @@ static void __rtl8169_set_features(struct net_device *dev, ...@@ -1963,24 +1965,12 @@ static void __rtl8169_set_features(struct net_device *dev,
RTL_W16(tp, CPlusCmd, tp->cp_cmd); RTL_W16(tp, CPlusCmd, tp->cp_cmd);
RTL_R16(tp, CPlusCmd); 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); rtl_unlock_work(tp);
return 0; return 0;
} }
static inline u32 rtl8169_tx_vlan_tag(struct sk_buff *skb) static inline u32 rtl8169_tx_vlan_tag(struct sk_buff *skb)
{ {
return (skb_vlan_tag_present(skb)) ? return (skb_vlan_tag_present(skb)) ?
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment