Re: [RFC PATCH v2] net: fold dev_disable_lro() into netdev_fix_features()
From: Ben Hutchings <hidden>
Date: 2011-05-12 16:29:11
Also in:
bridge
On Thu, 2011-05-12 at 18:06 +0200, Michał Mirosław wrote:
This implements checks for forwarding mode in netdev_fix_features() using dev->priv_flags bits. As a side effect, after device is no longer forwarding it gets LRO back. This also means that user is not allowed to enable LRO after device is put to forwarding mode. This patch depends on removal of discrete offload setting ethtool ops.
This is nice, but: [...]
quoted hunk ↗ jump to hunk
--- a/net/bridge/br_if.c +++ b/net/bridge/br_if.c@@ -158,6 +158,8 @@ static void del_nbp(struct net_bridge_port *p) br_netpoll_disable(p); call_rcu(&p->rcu, destroy_nbp_rcu); + + netdev_update_features(dev); } /* called with RTNL */@@ -368,11 +370,9 @@ int br_add_if(struct net_bridge *br, struct net_device *dev) dev->priv_flags |= IFF_BRIDGE_PORT; - dev_disable_lro(dev); - list_add_rcu(&p->list, &br->port_list); - netdev_update_features(br->dev); + netdev_change_features(dev); spin_lock_bh(&br->lock); changed_addr = br_stp_recalculate_bridge_id(br);
Why netdev_change_features() here? I thought that was primarily for use when vlan_features may have been changed. [...]
quoted hunk ↗ jump to hunk
--- a/net/core/dev.c +++ b/net/core/dev.c
[...]
quoted hunk ↗ jump to hunk
@@ -5241,6 +5221,11 @@ u32 netdev_fix_features(struct net_device *dev, u32 features) } } + if (features & NETIF_F_LRO && dev->priv_flags & IFF_LRO_FORBIDDEN) { + netdev_info(dev, "Disabling LRO for forwarding interface.\n"); + features &= NETIF_F_LRO;
[...] Mising '~'. Ben. -- Ben Hutchings, Senior Software Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.