]> git.droids-corp.org - dpdk.git/commitdiff
bonding: do not activate slave twice
authorEric Kinzie <ekinzie@brocade.com>
Tue, 1 Mar 2016 17:32:02 +0000 (09:32 -0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 16 Mar 2016 18:05:47 +0000 (19:05 +0100)
The current code for detecting link during slave addition can cause a
slave interface to be activated twice -- once during slave_configure()
and again at the end of __eth_bond_slave_add_lock_free().  This will
either cause the active slave count to be incorrect or will cause the
802.3ad activation function to panic.  Ensure that the interface is not
activated more than once.

Fixes: 46fb43683679 ("bond: add mode 4")
Signed-off-by: Eric Kinzie <ekinzie@brocade.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Declan Doherty <declan.doherty@intel.com>
drivers/net/bonding/rte_eth_bond_api.c

index 5292ae19b92be30938d701c79b44efdd29e4cd35..c6c0ed89c0cc1058362e5943ac79d547ec876bfa 100644 (file)
@@ -424,7 +424,11 @@ __eth_bond_slave_add_lock_free(uint8_t bonded_port_id, uint8_t slave_port_id)
                            !internals->user_defined_primary_port)
                                bond_ethdev_primary_set(internals,
                                                        slave_port_id);
-                       activate_slave(bonded_eth_dev, slave_port_id);
+
+                       if (find_slave_by_id(internals->active_slaves,
+                                            internals->active_slave_count,
+                                            slave_port_id) == internals->active_slave_count)
+                               activate_slave(bonded_eth_dev, slave_port_id);
                }
        }
        return 0;