diff options
author | David S. Miller | 2019-05-06 06:56:57 +0200 |
---|---|---|
committer | David S. Miller | 2019-05-06 06:56:57 +0200 |
commit | 3a9723647266aef912e725808c77e9eb5282adf0 (patch) | |
tree | db93cc783460aace5cffe86f662b992ce8ab4d35 /tools/testing | |
parent | sch_htb: redefine htb qdisc overlimits (diff) | |
parent | selftests: Add loopback test (diff) | |
download | kernel-qcow2-linux-3a9723647266aef912e725808c77e9eb5282adf0.tar.gz kernel-qcow2-linux-3a9723647266aef912e725808c77e9eb5282adf0.tar.xz kernel-qcow2-linux-3a9723647266aef912e725808c77e9eb5282adf0.zip |
Merge branch 'mlxsw-spectrum-Implement-loopback-ethtool-feature'
Ido Schimmel says:
====================
mlxsw: spectrum: Implement loopback ethtool feature
This patchset from Jiri allows users to enable loopback feature for
individual ports using ethtool. The loopback feature is useful for
testing purposes and will also be used by upcoming patchsets to enable
the monitoring of buffer drops.
Patch #1 adds the relevant device register.
Patch #2 Implements support in the driver.
Patch #3 adds a selftest.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools/testing')
-rwxr-xr-x | tools/testing/selftests/net/forwarding/loopback.sh | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/tools/testing/selftests/net/forwarding/loopback.sh b/tools/testing/selftests/net/forwarding/loopback.sh new file mode 100755 index 000000000000..6e4626ae71b0 --- /dev/null +++ b/tools/testing/selftests/net/forwarding/loopback.sh @@ -0,0 +1,94 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +ALL_TESTS="loopback_test" +NUM_NETIFS=2 +source tc_common.sh +source lib.sh + +h1_create() +{ + simple_if_init $h1 192.0.2.1/24 + tc qdisc add dev $h1 clsact +} + +h1_destroy() +{ + tc qdisc del dev $h1 clsact + simple_if_fini $h1 192.0.2.1/24 +} + +h2_create() +{ + simple_if_init $h2 +} + +h2_destroy() +{ + simple_if_fini $h2 +} + +loopback_test() +{ + RET=0 + + tc filter add dev $h1 ingress protocol arp pref 1 handle 101 flower \ + skip_hw arp_op reply arp_tip 192.0.2.1 action drop + + $MZ $h1 -c 1 -t arp -q + + tc_check_packets "dev $h1 ingress" 101 1 + check_fail $? "Matched on a filter without loopback setup" + + ethtool -K $h1 loopback on + check_err $? "Failed to enable loopback" + + setup_wait_dev $h1 + + $MZ $h1 -c 1 -t arp -q + + tc_check_packets "dev $h1 ingress" 101 1 + check_err $? "Did not match on filter with loopback" + + ethtool -K $h1 loopback off + check_err $? "Failed to disable loopback" + + $MZ $h1 -c 1 -t arp -q + + tc_check_packets "dev $h1 ingress" 101 2 + check_fail $? "Matched on a filter after loopback was removed" + + tc filter del dev $h1 ingress protocol arp pref 1 handle 101 flower + + log_test "loopback" +} + +setup_prepare() +{ + h1=${NETIFS[p1]} + h2=${NETIFS[p2]} + + vrf_prepare + + h1_create + h2_create +} + +cleanup() +{ + pre_cleanup + + h2_destroy + h1_destroy + + vrf_cleanup +} + +trap cleanup EXIT + +setup_prepare +setup_wait + +tests_run + +exit $EXIT_STATUS |