From 6a65da89fd3f187e0e90d1af7b1e8f7c77670578 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 21 Nov 2011 13:18:25 -0800 Subject: [PATCH] bond: Only drop packets that indicate moves on SLB bonds. SLB bonds, for important reasons, drop most incoming packets that indicate that a MAC has moved to the bond from another port. These reasons do not apply to active-backup bonds, but until now OVS has still dropped them. This fixes the problem. Behavior of SLB bonds and TCP bonds in SLB fallback mode is unaffected. Cross-port of patch f931a4c93075e from master. Bug #7928. --- vswitchd/bridge.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index 86c50407e..f1adf4e69 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -3049,11 +3049,13 @@ is_admissible(struct bridge *br, const struct flow *flow, bool have_packet, * to the exception is if we locked the learning table to avoid * reflections on bond slaves. If this is the case, just drop the * packet now. */ - src_idx = mac_learning_lookup(br->ml, flow->dl_src, vlan, - &is_grat_arp_locked); - if (src_idx != -1 && src_idx != in_port->port_idx && - (!is_gratuitous_arp(flow) || is_grat_arp_locked)) { + if (in_port->bond_mode != BM_AB) { + src_idx = mac_learning_lookup(br->ml, flow->dl_src, vlan, + &is_grat_arp_locked); + if (src_idx != -1 && src_idx != in_port->port_idx && + (!is_gratuitous_arp(flow) || is_grat_arp_locked)) { return false; + } } } -- 2.47.0