Commit edcbf513 authored by Danielle Ratson's avatar Danielle Ratson Committed by Jakub Kicinski

selftests: forwarding: Fix race condition in mirror installation

When mirroring to a gretap in hardware the device expects to be
programmed with the egress port and all the encapsulating headers. This
requires the driver to resolve the path the packet will take in the
software data path and program the device accordingly.

If the path cannot be resolved (in this case because of an unresolved
neighbor), then mirror installation fails until the path is resolved.
This results in a race that causes the test to sometimes fail.

Fix this by setting the neighbor's state to permanent, so that it is
always valid.

Fixes: b5b02939 ("selftests: forwarding: mirror_gre_bridge_1d_vlan: Add STP test")
Signed-off-by: default avatarDanielle Ratson <danieller@nvidia.com>
Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 2107d45f
...@@ -86,11 +86,20 @@ test_ip6gretap() ...@@ -86,11 +86,20 @@ test_ip6gretap()
test_gretap_stp() test_gretap_stp()
{ {
# Sometimes after mirror installation, the neighbor's state is not valid.
# The reason is that there is no SW datapath activity related to the
# neighbor for the remote GRE address. Therefore whether the corresponding
# neighbor will be valid is a matter of luck, and the test is thus racy.
# Set the neighbor's state to permanent, so it would be always valid.
ip neigh replace 192.0.2.130 lladdr $(mac_get $h3) \
nud permanent dev br2
full_test_span_gre_stp gt4 $swp3.555 "mirror to gretap" full_test_span_gre_stp gt4 $swp3.555 "mirror to gretap"
} }
test_ip6gretap_stp() test_ip6gretap_stp()
{ {
ip neigh replace 2001:db8:2::2 lladdr $(mac_get $h3) \
nud permanent dev br2
full_test_span_gre_stp gt6 $swp3.555 "mirror to ip6gretap" full_test_span_gre_stp gt6 $swp3.555 "mirror to ip6gretap"
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment