Commit 0d1cee123a84 (stp: Fix bpdu tx problem in listening state)
makes ovs drop the stp bpdu packets if stp is not enabled on the
input port.  However, when pif bridge is used and stp is enabled
on the integration bridge.  The flow translation of stp bpdu
packets will go through a level of resubmission which changes
the input port to the corresponding peer port.  Since, the
patch port on the pif bridge does not have stp enabled, the
flow translation will drop the bpdu packets.

This commit fixes the issue by making ovs forward stp bpdu packets
on stp-disabled port.

VMware-BZ: #1284695

Signed-off-by: Alex Wang <al...@nicira.com>
---
 lib/stp.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/stp.c b/lib/stp.c
index 218eb9a..85b8008 100644
--- a/lib/stp.c
+++ b/lib/stp.c
@@ -685,12 +685,16 @@ stp_learn_in_state(enum stp_state state)
 }
 
 /* Returns true if 'state' is one in which rx&tx bpdu should be done on
- * on a port, false otherwise. */
+ * on a port, false otherwise.
+ *
+ * Returns true if 'state' is STP_DISABLED, since presumably in that case the
+ * port should still work, just not have STP applied to it. */
 bool
 stp_listen_in_state(enum stp_state state)
 {
     return (state &
-            (STP_LISTENING | STP_LEARNING | STP_FORWARDING)) != 0;
+            ( STP_DISABLED | STP_LISTENING | STP_LEARNING
+              | STP_FORWARDING)) != 0;
 }
 
 /* Returns the name for the given 'role' (for use in debugging and log
-- 
1.7.9.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to