selftests: mlxsw: ethtool_lanes: Wait for lanes parameter dump explicitly
authorDanielle Ratson <danieller@nvidia.com>
Fri, 12 Apr 2024 17:03:10 +0000 (19:03 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 16 Apr 2024 10:14:41 +0000 (12:14 +0200)
The ethtool dump includes the lanes parameter only when the port is up.
Therefore, the ethtool_lanes.sh test waits for ports to come before testing
the lanes parameter.

In some cases, the test considers the port as up, but the lanes parameter
is not yet dumped although assumed to be, resulting in ethtool_lanes.sh
test failure.

To avoid that, ensure that the lanes parameter is indeed dumped by waiting
for it explicitly, before preforming the test cases.

Signed-off-by: Danielle Ratson <danieller@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
tools/testing/selftests/drivers/net/mlxsw/ethtool_lanes.sh

index 91891b9418d7664a27832274b76845aa95d3f4d2..877cd6df94a10c2bdb69ea6f20b381e01a47b68f 100755 (executable)
@@ -24,8 +24,8 @@ setup_prepare()
        busywait "$TIMEOUT" wait_for_port_up ethtool $swp2
        check_err $? "ports did not come up"
 
-       local lanes_exist=$(ethtool $swp1 | grep 'Lanes:')
-       if [[ -z $lanes_exist ]]; then
+       busywait $TIMEOUT sh -c "ethtool $swp1 | grep -q Lanes:"
+       if [[ $? -ne 0 ]]; then
                log_test "SKIP: driver does not support lanes setting"
                exit 1
        fi
@@ -122,8 +122,9 @@ autoneg()
                        ethtool_set $swp1 speed $max_speed lanes $lanes
                        ip link set dev $swp1 up
                        ip link set dev $swp2 up
-                       busywait "$TIMEOUT" wait_for_port_up ethtool $swp2
-                       check_err $? "ports did not come up"
+
+                       busywait $TIMEOUT sh -c "ethtool $swp1 | grep -q Lanes:"
+                       check_err $? "Lanes parameter is not presented on time"
 
                        check_lanes $swp1 $lanes $max_speed
                        log_test "$lanes lanes is autonegotiated"
@@ -160,8 +161,9 @@ autoneg_force_mode()
                        ethtool_set $swp2 speed $max_speed lanes $lanes autoneg off
                        ip link set dev $swp1 up
                        ip link set dev $swp2 up
-                       busywait "$TIMEOUT" wait_for_port_up ethtool $swp2
-                       check_err $? "ports did not come up"
+
+                       busywait $TIMEOUT sh -c "ethtool $swp1 | grep -q Lanes:"
+                       check_err $? "Lanes parameter is not presented on time"
 
                        check_lanes $swp1 $lanes $max_speed
                        log_test "Autoneg off, $lanes lanes detected during force mode"