linux/net/8021q
David S. Miller 99c4a26a15 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>
2015-03-18 22:52:56 -04:00
..
Kconfig 8021q: update description 2014-01-21 17:01:25 -08:00
Makefile net/8021q: Implement Multiple VLAN Registration Protocol (MVRP) 2013-02-10 20:37:22 -05:00
vlan_core.c net: rename vlan_tx_* helpers since "tx" is misleading there 2015-01-13 17:51:08 -05:00
vlan_dev.c 8021q: Use eth_<foo>_addr instead of memset 2015-03-03 17:01:37 -05:00
vlan_gvrp.c net: vlan: prepare for 802.1ad support 2013-04-19 14:45:27 -04:00
vlan_mvrp.c net: vlan: prepare for 802.1ad support 2013-04-19 14:45:27 -04:00
vlan_netlink.c vlan: advertise link netns via netlink 2015-01-23 17:51:15 -08:00
vlan.c net: Fix high overhead of vlan sub-device teardown. 2015-03-18 22:52:56 -04:00
vlan.h 8021q: Convert uses of __constant_<foo> to <foo> 2014-03-12 15:28:06 -04:00
vlanproc.c vlan: fail early when creating netdev named config 2014-07-29 11:43:50 -07:00
vlanproc.h [VLAN]: Add a net argument to proc init and cleanup calls. 2008-04-16 00:51:12 -07:00