Commit ccdb66dd authored by Petr Machata's avatar Petr Machata Committed by David S. Miller
Browse files

selftests: forwarding: mirror_gre_vlan_bridge_1q: Fix roaming test



ARP or ND traffic can cause spurious migration of FDB back to $swp3.
Mirroring is then updated in accordance with the change, and mirrored
packets are seen at h3, causing a failure.

Detect the case of this spurious roaming, and retry the test.

Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 35036b0b
Loading
Loading
Loading
Loading
+19 −6
Original line number Diff line number Diff line
@@ -269,12 +269,25 @@ test_span_gre_fdb_roaming()
	mirror_install $swp1 ingress $tundev "matchall $tcflags"
	quick_test_span_gre_dir $tundev ingress

	bridge fdb del dev $swp3 $h3mac vlan 555 master
	while ((RET == 0)); do
		bridge fdb del dev $swp3 $h3mac vlan 555 master 2>/dev/null
		bridge fdb add dev $swp2 $h3mac vlan 555 master
		sleep 1
		fail_test_span_gre_dir $tundev ingress

	bridge fdb del dev $swp2 $h3mac vlan 555 master
		if ! bridge fdb sh dev $swp2 vlan 555 master \
		    | grep -q $h3mac; then
			printf "TEST: %-60s  [RETRY]\n" \
				"$what: MAC roaming ($tcflags)"
			# ARP or ND probably reprimed the FDB while the test
			# was running. We would get a spurious failure.
			RET=0
			continue
		fi
		break
	done

	bridge fdb del dev $swp2 $h3mac vlan 555 master 2>/dev/null
	# Re-prime FDB
	$ARPING -I br1.555 192.0.2.130 -fqc 1
	sleep 1