diff options
author | David S. Miller <davem@davemloft.net> | 2015-03-18 22:52:33 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-18 22:52:56 -0400 |
commit | 99c4a26a159b28fa46a3e746a9b41b297e73d261 (patch) | |
tree | 38f5c5d424b7596b77e1f40d7c5f1ce33cfa115e /firmware/cpia2 | |
parent | 738e6d30d392fb75933a5eb4b481811598038786 (diff) | |
download | op-kernel-dev-99c4a26a159b28fa46a3e746a9b41b297e73d261.zip op-kernel-dev-99c4a26a159b28fa46a3e746a9b41b297e73d261.tar.gz |
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 <noureddine@arista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'firmware/cpia2')
0 files changed, 0 insertions, 0 deletions