bonding: fix bond_open() don't always set slave active flag
authorWilson Kok <wkok@cumulusnetworks.com>
Mon, 26 Jan 2015 06:16:58 +0000 (01:16 -0500)
committerDavid S. Miller <davem@davemloft.net>
Wed, 28 Jan 2015 01:09:03 +0000 (17:09 -0800)
Mode 802.3ad, fix incorrect bond slave active state when slave is not in
active aggregator. During bond_open(), the bonding driver always sets
the slave active flag to true if the bond is not in active-backup, alb,
or tlb modes. Bonding should let the aggregator selection logic set the
active flag when in 802.3ad mode.

Cc: Andy Gospodarek <gospo@cumulusnetworks.com>
Reviewed-by: Nikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: Wilson Kok <wkok@cumulusnetworks.com>
Signed-off-by: Jonathan Toppins <jtoppins@cumulusnetworks.com>
Signed-off-by: Jay Vosburgh <jay.vosburgh@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c

index f83ace6..beff00e 100644 (file)
@@ -3066,7 +3066,7 @@ static int bond_open(struct net_device *bond_dev)
                            slave != rcu_access_pointer(bond->curr_active_slave)) {
                                bond_set_slave_inactive_flags(slave,
                                                              BOND_SLAVE_NOTIFY_NOW);
-                       } else {
+                       } else if (BOND_MODE(bond) != BOND_MODE_8023AD) {
                                bond_set_slave_active_flags(slave,
                                                            BOND_SLAVE_NOTIFY_NOW);
                        }