mirror of https://gitee.com/openkylin/linux.git
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: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e66267483e
commit
a3984578bf
|
@ -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)) ?
|
||||
|
|
Loading…
Reference in New Issue