1
linux/net/bridge
Stephen Hemminger ef647f1300 bridge: Eliminate unnecessary forward delay
From: Stephen Hemminger <shemminger@vyatta.com>

Based upon original patch by Herbert Xu, which contained
the following problem description:

--------------------
When the forward delay is set to zero, we still delay the setting
of the forwarding state by one or possibly two timers depending
on whether STP is enabled.  This could either turn out to be
instantaneous, or horribly slow depending on the load of the
machine.

As there is nothing preventing us from enabling forwarding straight
away, this patch eliminates this potential delay by executing the
code directly if the forward delay is zero.

The effect of this problem is that immediately after the carrier
comes on a port, the bridge will drop all packets received from
that port until it enters forwarding mode, thus causing unnecessary
packet loss.

Note that this patch doesn't fully remove the delay due to the
link watcher.  We should also check the carrier state when we
are about to drop an incoming packet because the port is disabled.
But that's for another patch.
--------------------

This version of the fix takes a different approach, in that
it just does the state change directly.

Signed-off-by: David S. Miller <davem@davemloft.net>
2008-08-05 18:42:51 -07:00
..
netfilter netfilter: ebtables: use nf_register_hooks() 2008-07-26 17:47:53 -07:00
br_device.c bridge: send correct MTU value in PMTU (revised) 2008-07-30 16:27:55 -07:00
br_fdb.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-07-18 02:39:39 -07:00
br_forward.c net: Discard and warn about LRO'd skbs received for forwarding 2008-06-19 16:22:28 -07:00
br_if.c bridge: send correct MTU value in PMTU (revised) 2008-07-30 16:27:55 -07:00
br_input.c bridge: handle process all link-local frames 2008-06-17 16:09:45 -07:00
br_ioctl.c net: remove CVS keywords 2008-06-11 21:00:38 -07:00
br_netfilter.c bridge: fix compile warning in net/bridge/br_netfilter.c 2008-08-05 01:21:22 -07:00
br_netlink.c [NET] NETNS: Omit sock->sk_net without CONFIG_NET_NS. 2008-03-26 04:39:55 +09:00
br_notify.c netns: Use net_eq() to compare net-namespaces for optimization. 2008-07-19 22:34:43 -07:00
br_private_stp.h net: remove CVS keywords 2008-06-11 21:00:38 -07:00
br_private.h bridge: send correct MTU value in PMTU (revised) 2008-07-30 16:27:55 -07:00
br_stp_bpdu.c netns: Use net_eq() to compare net-namespaces for optimization. 2008-07-19 22:34:43 -07:00
br_stp_if.c bridge: make bridge address settings sticky 2008-06-17 16:10:06 -07:00
br_stp_timer.c net: remove CVS keywords 2008-06-11 21:00:38 -07:00
br_stp.c bridge: Eliminate unnecessary forward delay 2008-08-05 18:42:51 -07:00
br_sysfs_br.c net: replace remaining __FUNCTION__ occurrences 2008-03-05 20:47:47 -08:00
br_sysfs_if.c Kobject: change net/bridge to use kobject_create_and_add 2008-01-24 20:40:26 -08:00
br.c bridge: Use STP demux 2008-07-05 21:25:56 -07:00
Kconfig bridge: Use STP demux 2008-07-05 21:25:56 -07:00
Makefile