Bonding issue with 2.6

From: Charlie Brett
Date: Mon Apr 09 2007 - 20:22:22 EST


We've encountered a problem with bonding on 2.6 that did not exist on
2.4. Here's the details:

1) Configure bonding with: activebackup, miimon, and assign a primary
interface. Use a short miimon time, such as 100ms.
2) The primary interface needs to use polling to determine the link
state (e.g. tulip).
3) Disconnect the link to the primary interface, and wait for the
interface polling to determine the interface is down (for tulip, it's 60
seconds). Bonding will failover to the backup within the miimon
interval, but you have to wait for the interface's driver to notice the
link is down.
4) Reconnect the primary interface.

Bonding will not assign the reconnected interface as primary.

The root problem:
After the interface's driver has determined the interface is down, it
sets the interface's state to down. When the interface is reconnected,
bonding sees the link go back up, however the interface's driver will
not, since it is polling, and has to wait for the next polling interval
(for tulip, it's 3 seconds to go from down to up). Bonding determines
that the link is up, but the interface is not, so it does not assign it
as primary. After the interface's polling interval, the interface driver
sets the up flag for the interface, but since there is no change in the
link status, bonding doesn't do anything.

In the 2.4 version of the driver, the interface state was always checked
when the bond link was up.

Does anyone have any ideas of how to fix this using just flags? e.g.
Would setting the updelay to be greater the interface driver's polling
time cause it to recognize it?

Thanks,
Charlie Brett - HP OSLO

--
Charlie Brett <cfb@xxxxxx>

-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html