Skip to content

Commit

Permalink
[PATCH] bonding: Fix primary selection error at enslavement time
Browse files Browse the repository at this point in the history
	At enslavement time, the primary slave might not be activated if
there is already an active slave and the new slave is the primary.
Replaced complicated logic with a call to bond_select_active_slave(),
which does the right thing.

	Fixes http://bugzilla.kernel.org/show_bug.cgi?id=6378

Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Jay Vosburgh authored and Jeff Garzik committed Sep 26, 2006
1 parent 89cc76f commit 8a8e447
Showing 1 changed file with 2 additions and 23 deletions.
25 changes: 2 additions & 23 deletions drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1513,29 +1513,8 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)

switch (bond->params.mode) {
case BOND_MODE_ACTIVEBACKUP:
/* if we're in active-backup mode, we need one and
* only one active interface. The backup interfaces
* will have their SLAVE_INACTIVE flag set because we
* need them to be drop all packets. Thus, since we
* guarantee that curr_active_slave always point to
* the last usable interface, we just have to verify
* this interface's flag.
*/
if (((!bond->curr_active_slave) ||
(bond->curr_active_slave->dev->priv_flags & IFF_SLAVE_INACTIVE)) &&
(new_slave->link != BOND_LINK_DOWN)) {
/* first slave or no active slave yet, and this link
is OK, so make this interface the active one */
bond_change_active_slave(bond, new_slave);
printk(KERN_INFO DRV_NAME
": %s: first active interface up!\n",
bond->dev->name);
netif_carrier_on(bond->dev);

} else {
dprintk("This is just a backup slave\n");
bond_set_slave_inactive_flags(new_slave);
}
bond_set_slave_inactive_flags(new_slave);
bond_select_active_slave(bond);
break;
case BOND_MODE_8023AD:
/* in 802.3ad mode, the internal mechanism
Expand Down

0 comments on commit 8a8e447

Please sign in to comment.