42 lines
1.6 KiB
Diff
42 lines
1.6 KiB
Diff
|
From 7a7122edf1c8d63e516d1b2c2eff6fa9b54e0f82 Mon Sep 17 00:00:00 2001
|
||
|
From: Eric Kinzie <ekinzie@brocade.com>
|
||
|
Date: Tue, 1 Mar 2016 09:32:02 -0800
|
||
|
Subject: [PATCH] bonding: do not activate slave twice
|
||
|
|
||
|
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 | 6 +++++-
|
||
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c
|
||
|
index 5292ae1..c6c0ed8 100644
|
||
|
--- a/drivers/net/bonding/rte_eth_bond_api.c
|
||
|
+++ b/drivers/net/bonding/rte_eth_bond_api.c
|
||
|
@@ -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;
|
||
|
--
|
||
|
2.6.2
|
||
|
|