mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-02 06:26:39 +07:00
Merge branch 'Fixes-for-running-mirror-to-gretap-tests-on-veth'
Petr Machata says: ==================== Fixes for running mirror-to-gretap tests on veth The forwarding selftests infrastructure makes it possible to run the individual tests on a purely software netdevices. Names of interfaces to run the test with can be passed as command line arguments to a test. lib.sh then creates veth pairs backing the interfaces if none exist in the system. However, the tests need to recognize that they might be run on a soft device. Many mirror-to-gretap tests are buggy in this regard. This patch set aims to fix the problems in running mirror-to-gretap tests on veth devices. In patch #1, a service function is split out of setup_wait(). In patch #2, installing a trap is made optional. In patch #3, tc filters in several tests are tweaked to work with veth. In patch #4, the logic for waiting for neighbor is fixed for veth. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
b0402f0113
@ -185,18 +185,25 @@ log_info()
|
||||
echo "INFO: $msg"
|
||||
}
|
||||
|
||||
setup_wait_dev()
|
||||
{
|
||||
local dev=$1; shift
|
||||
|
||||
while true; do
|
||||
ip link show dev $dev up \
|
||||
| grep 'state UP' &> /dev/null
|
||||
if [[ $? -ne 0 ]]; then
|
||||
sleep 1
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
setup_wait()
|
||||
{
|
||||
for i in $(eval echo {1..$NUM_NETIFS}); do
|
||||
while true; do
|
||||
ip link show dev ${NETIFS[p$i]} up \
|
||||
| grep 'state UP' &> /dev/null
|
||||
if [[ $? -ne 0 ]]; then
|
||||
sleep 1
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
setup_wait_dev ${NETIFS[p$i]}
|
||||
done
|
||||
|
||||
# Make sure links are ready.
|
||||
@ -472,9 +479,15 @@ trap_install()
|
||||
local dev=$1; shift
|
||||
local direction=$1; shift
|
||||
|
||||
# For slow-path testing, we need to install a trap to get to
|
||||
# slow path the packets that would otherwise be switched in HW.
|
||||
tc filter add dev $dev $direction pref 1 flower skip_sw action trap
|
||||
# Some devices may not support or need in-hardware trapping of traffic
|
||||
# (e.g. the veth pairs that this library creates for non-existent
|
||||
# loopbacks). Use continue instead, so that there is a filter in there
|
||||
# (some tests check counters), and so that other filters are still
|
||||
# processed.
|
||||
tc filter add dev $dev $direction pref 1 \
|
||||
flower skip_sw action trap 2>/dev/null \
|
||||
|| tc filter add dev $dev $direction pref 1 \
|
||||
flower action continue
|
||||
}
|
||||
|
||||
trap_uninstall()
|
||||
@ -482,11 +495,13 @@ trap_uninstall()
|
||||
local dev=$1; shift
|
||||
local direction=$1; shift
|
||||
|
||||
tc filter del dev $dev $direction pref 1 flower skip_sw
|
||||
tc filter del dev $dev $direction pref 1 flower
|
||||
}
|
||||
|
||||
slow_path_trap_install()
|
||||
{
|
||||
# For slow-path testing, we need to install a trap to get to
|
||||
# slow path the packets that would otherwise be switched in HW.
|
||||
if [ "${tcflags/skip_hw}" != "$tcflags" ]; then
|
||||
trap_install "$@"
|
||||
fi
|
||||
|
@ -74,12 +74,14 @@ test_vlan_match()
|
||||
|
||||
test_gretap()
|
||||
{
|
||||
test_vlan_match gt4 'vlan_id 555 vlan_ethtype ip' "mirror to gretap"
|
||||
test_vlan_match gt4 'skip_hw vlan_id 555 vlan_ethtype ip' \
|
||||
"mirror to gretap"
|
||||
}
|
||||
|
||||
test_ip6gretap()
|
||||
{
|
||||
test_vlan_match gt6 'vlan_id 555 vlan_ethtype ipv6' "mirror to ip6gretap"
|
||||
test_vlan_match gt6 'skip_hw vlan_id 555 vlan_ethtype ip' \
|
||||
"mirror to ip6gretap"
|
||||
}
|
||||
|
||||
test_gretap_stp()
|
||||
|
@ -122,15 +122,8 @@ test_span_gre_egress_up()
|
||||
# After setting the device up, wait for neighbor to get resolved so that
|
||||
# we can expect mirroring to work.
|
||||
ip link set dev $swp3 up
|
||||
while true; do
|
||||
ip neigh sh dev $swp3 $remote_ip nud reachable |
|
||||
grep -q ^
|
||||
if [[ $? -ne 0 ]]; then
|
||||
sleep 1
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
setup_wait_dev $swp3
|
||||
ping -c 1 -I $swp3 $remote_ip &>/dev/null
|
||||
|
||||
quick_test_span_gre_dir $tundev ingress
|
||||
mirror_uninstall $swp1 ingress
|
||||
|
@ -62,7 +62,7 @@ full_test_span_gre_dir_vlan_ips()
|
||||
"$backward_type" "$ip1" "$ip2"
|
||||
|
||||
tc filter add dev $h3 ingress pref 77 prot 802.1q \
|
||||
flower $vlan_match ip_proto 0x2f \
|
||||
flower $vlan_match \
|
||||
action pass
|
||||
mirror_test v$h1 $ip1 $ip2 $h3 77 10
|
||||
tc filter del dev $h3 ingress pref 77
|
||||
|
@ -88,12 +88,14 @@ test_vlan_match()
|
||||
|
||||
test_gretap()
|
||||
{
|
||||
test_vlan_match gt4 'vlan_id 555 vlan_ethtype ip' "mirror to gretap"
|
||||
test_vlan_match gt4 'skip_hw vlan_id 555 vlan_ethtype ip' \
|
||||
"mirror to gretap"
|
||||
}
|
||||
|
||||
test_ip6gretap()
|
||||
{
|
||||
test_vlan_match gt6 'vlan_id 555 vlan_ethtype ipv6' "mirror to ip6gretap"
|
||||
test_vlan_match gt6 'skip_hw vlan_id 555 vlan_ethtype ip' \
|
||||
"mirror to ip6gretap"
|
||||
}
|
||||
|
||||
test_span_gre_forbidden_cpu()
|
||||
|
Loading…
Reference in New Issue
Block a user