I'm working on a load balancer for outbound IP traffic across multiple DSL lines. When one of those lines fail the kernel has to detect this and stop using the line. I applied patches to the kernel to make this work. Can't tell you where I got them, the bloody forum won't let me
but look at the loadbalancing section in the Advanced Routing HOWTO and you'll find them.
On my current test site I have the loadbalancer hooked up to the LAN via the Realtek card built into the motherboard (etth0). The DSL lines are on a Winbond NE2000 clone (eth1) and a 3Com card (eth2).
When I pull the cable out of eth1 the kernel detects this and a "NETDEV WATCHDOG: transmission timed out" message appears in the syslog, which is exactly what I want to happen.
However, when I pull the cable out of eth2 I don't get these messages, and the kernel keeps trying to send traffic over the disconnected eth2 interface.
So, how do I get the NETDEV WATCHDOG to bark?