]> git.baikalelectronics.ru Git - kernel.git/commit
bridge: move to workqueue gc
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Sat, 4 Feb 2017 17:05:07 +0000 (18:05 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 Feb 2017 03:53:13 +0000 (22:53 -0500)
commit0b68844187e1552f514f6ea06169ca7395133a0b
treebda0a6e29e0d7748d2f7e59a8da9c5194f486b36
parente860ae229265e28b8b0c01004916a69e8218a7a0
bridge: move to workqueue gc

Move the fdb garbage collector to a workqueue which fires at least 10
milliseconds apart and cleans chain by chain allowing for other tasks
to run in the meantime. When having thousands of fdbs the system is much
more responsive. Most importantly remove the need to check if the
matched entry has expired in __br_fdb_get that causes false-sharing and
is completely unnecessary if we cleanup entries, at worst we'll get 10ms
of traffic for that entry before it gets deleted.

Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_device.c
net/bridge/br_fdb.c
net/bridge/br_if.c
net/bridge/br_ioctl.c
net/bridge/br_netlink.c
net/bridge/br_private.h
net/bridge/br_stp.c
net/bridge/br_stp_if.c
net/bridge/br_stp_timer.c
net/bridge/br_sysfs_br.c