vswitchd: LACP attached status flapped.
authorEthan Jackson <ethan@nicira.com>
Mon, 7 Feb 2011 22:34:44 +0000 (14:34 -0800)
committerEthan Jackson <ethan@nicira.com>
Mon, 7 Feb 2011 22:37:51 +0000 (14:37 -0800)
A bug introduced in the switch to bit mask LACP status caused the
attached status of interfaces in a LACP bond to slowly flap.

vswitchd/bridge.c

index f5c5af37ede53992d0c38dc601b54b8157fe9fec..b369ced00e814c4bef2286e4525a333f71a95c8e 100644 (file)
@@ -3129,7 +3129,8 @@ lacp_process_packet(const struct ofpbuf *packet, struct iface *iface)
         return;
     }
 
-    iface->lacp_status = LACP_CURRENT;
+    iface->lacp_status |= LACP_CURRENT;
+    iface->lacp_status &= ~LACP_EXPIRED;
     iface->lacp_rx = time_msec() + LACP_SLOW_TIME_RX;
 
     iface->lacp_actor.state = iface_get_lacp_state(iface);
@@ -4702,7 +4703,8 @@ iface_set_lacp_defaulted(struct iface *iface)
 {
     memset(&iface->lacp_partner, 0, sizeof iface->lacp_partner);
 
-    iface->lacp_status = LACP_DEFAULTED;
+    iface->lacp_status |= LACP_DEFAULTED;
+    iface->lacp_status &= ~(LACP_CURRENT | LACP_EXPIRED);
     iface->lacp_tx = 0;
     iface->port->lacp_need_update = true;
 }