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