From: Alexander Sverdlin <[email protected]>

It seems that most of the tests prepare the interfaces once before the test
run (setup_prepare()), rely on setup_wait() to wait for link and only then
run the test(s).

local_termination brings the physical interfaces down and up during test
run but never wait for them to come up. If the auto-negotiation takes
some seconds, first test packets are being lost, which leads to
false-negative test results.

Use setup_wait_dev() after corresponding simple_if_init() on physical
interfaces to make sure auto-negotiation has been completed and test
packets will not be lost because of the race against link establishment.

The wait has to be done in each individual test because the interfaces
have to be brough up first and only then we can wait for link (not
individually, because they are expected to be looped in pairs).

Fixes: 90b9566aa5cd3f ("selftests: forwarding: add a test for 
local_termination.sh")
Signed-off-by: Alexander Sverdlin <[email protected]>
---
 .../selftests/net/forwarding/local_termination.sh      | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tools/testing/selftests/net/forwarding/local_termination.sh 
b/tools/testing/selftests/net/forwarding/local_termination.sh
index ecd34f364125c..369c8b2c1f4a2 100755
--- a/tools/testing/selftests/net/forwarding/local_termination.sh
+++ b/tools/testing/selftests/net/forwarding/local_termination.sh
@@ -430,6 +430,8 @@ standalone()
        h1_create
        h2_create
        macvlan_create $h2
+       setup_wait_dev $h1
+       setup_wait_dev $h2
 
        run_test $h1 $h2 $skip_ptp $no_unicast_flt "$h2"
 
@@ -448,6 +450,8 @@ test_bridge()
        bridge_create $vlan_filtering
        simple_if_init br0 $H2_IPV4/24 $H2_IPV6/64
        macvlan_create br0
+       setup_wait_dev $h1
+       setup_wait_dev $h2
 
        run_test $h1 br0 $skip_ptp $no_unicast_flt \
                "vlan_filtering=$vlan_filtering bridge"
@@ -480,6 +484,8 @@ test_vlan()
        h1_vlan_create
        h2_vlan_create
        macvlan_create $h2.100
+       setup_wait_dev $h1
+       setup_wait_dev $h2
 
        run_test $h1.100 $h2.100 $skip_ptp $no_unicast_flt "VLAN upper"
 
@@ -505,6 +511,8 @@ vlan_over_bridged_port()
        h2_vlan_create
        bridge_create $vlan_filtering
        macvlan_create $h2.100
+       setup_wait_dev $h1
+       setup_wait_dev $h2
 
        run_test $h1.100 $h2.100 $skip_ptp $no_unicast_flt \
                "VLAN over vlan_filtering=$vlan_filtering bridged port"
@@ -536,6 +544,8 @@ vlan_over_bridge()
        simple_if_init br0
        vlan_create br0 100 vbr0 $H2_IPV4/24 $H2_IPV6/64
        macvlan_create br0.100
+       setup_wait_dev $h1
+       setup_wait_dev $h2
 
        if [ $vlan_filtering = 1 ]; then
                bridge vlan add dev $h2 vid 100 master
-- 
2.51.1


Reply via email to