Robert King - 2008-04-29

We're working on a project using the 2.6.16 kernel.  We have a pair of ethernet ports bonded and connected to an on-board switch.  When the card containing the switch is pulled and re-inserted a short time later, the bonded links always re-connect, but the bonding driver does not always select an active link and we loose contact with that system.

BROKEN:

   bonding: bond1: link status definitely down for interface eth2, disabling it
   bonding: bond1: link status definitely down for interface eth3, disabling it
   bonding: bond1: now running without any active interface !
   e100: eth2: e100_watchdog: link down
   e100: eth3: e100_watchdog: link down

<time passes>

*  bonding: bond1: link status definitely up for interface eth2.
*  bonding: bond1: link status definitely up for interface eth3.
   e100: eth2: e100_watchdog: link up, 100Mbps, full-duplex
   e100: eth3: e100_watchdog: link up, 100Mbps, full-duplex

WORKING:

   bonding: bond1: link status definitely down for interface eth2, disabling it
   bonding: bond1: link status definitely down for interface eth3, disabling it
   e100: eth2: e100_watchdog: link down
   e100: eth3: e100_watchdog: link down
   e100: eth2: e100_watchdog: link up, 100Mbps, full-duplex
   e100: eth3: e100_watchdog: link up, 100Mbps, full-duplex
*  bonding: bond1: link status definitely up for interface eth2.
*  bonding: bond1: link status definitely up for interface eth3.
*  bonding: bond1: making interface eth2 the new active one.

We see this behaviour when running in both balance-rr and in active-backup modes.

Is this a known bug, or perhaps a former bug fixed in a later release?  (Haven't been able to find a list of fixed bugs and their corresponding releases yet.)

-- Robert King