aboutsummaryrefslogtreecommitdiff
path: root/lib/net_utils.c
diff options
context:
space:
mode:
authorDavid S. Miller <[email protected]>2015-03-18 22:52:33 -0400
committerDavid S. Miller <[email protected]>2015-03-18 22:52:56 -0400
commit99c4a26a159b28fa46a3e746a9b41b297e73d261 (patch)
tree38f5c5d424b7596b77e1f40d7c5f1ce33cfa115e /lib/net_utils.c
parent738e6d30d392fb75933a5eb4b481811598038786 (diff)
net: Fix high overhead of vlan sub-device teardown.
When a networking device is taken down that has a non-trivial number of VLAN devices configured under it, we eat a full synchronize_net() for every such VLAN device. This is because of the call chain: NETDEV_DOWN notifier --> vlan_device_event() --> dev_change_flags() --> __dev_change_flags() --> __dev_close() --> __dev_close_many() --> dev_deactivate_many() --> synchronize_net() This is kind of rediculous because we already have infrastructure for batching doing operation X to a list of net devices so that we only incur one sync. So make use of that by exporting dev_close_many() and adjusting it's interfaace so that the caller can fully manage the batch list. Use this in vlan_device_event() and all the overhead goes away. Reported-by: Salam Noureddine <[email protected]> Signed-off-by: David S. Miller <[email protected]>
Diffstat (limited to 'lib/net_utils.c')
0 files changed, 0 insertions, 0 deletions