aboutsummaryrefslogtreecommitdiff
path: root/lib/bond.c
diff options
context:
space:
mode:
authorEthan Jackson <ethan@nicira.com>2011-11-28 15:14:11 -0800
committerEthan Jackson <ethan@nicira.com>2012-01-16 18:14:56 -0800
commit4592d0e2fb90aa9a9592a433a8e01aaeb513b2a9 (patch)
treec6d8fc5b2a6eef28031696c422b0c4eee7e9eecb /lib/bond.c
parenta9bf011b82b02249344740d139f2f28594fe9e61 (diff)
bond: Revalidate when lacp_negotiated status changes.
Typically, when the lacp_negotiated flag changes, the result of bond_is_tcp_hash() will change as well. However, for certain bond types (SLB, Active-Backup, etc) this may not be true. Since the lacp_negotiated flag affects the results of bond_check_admissibility() revalidation needs to happen whenever it changes. This patch makes the revalidation explicit. Signed-off-by: Ethan Jackson <ethan@nicira.com>
Diffstat (limited to 'lib/bond.c')
-rw-r--r--lib/bond.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/bond.c b/lib/bond.c
index 79fc18c1..a2105ca3 100644
--- a/lib/bond.c
+++ b/lib/bond.c
@@ -407,7 +407,10 @@ bond_run(struct bond *bond, struct tag_set *tags, bool lacp_negotiated)
struct bond_slave *slave;
bool is_tcp_hash = bond_is_tcp_hash(bond);
- bond->lacp_negotiated = lacp_negotiated;
+ if (bond->lacp_negotiated != lacp_negotiated) {
+ bond->lacp_negotiated = lacp_negotiated;
+ bond->bond_revalidate = true;
+ }
/* Enable slaves based on link status and LACP feedback. */
HMAP_FOR_EACH (slave, hmap_node, &bond->slaves) {