mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
selftests: RED: Use defer for test cleanup
Instead of having a suite of dedicated cleanup functions, use the defer framework to schedule cleanups right as their setup functions are run. The sleep after stop_traffic() in mlxsw selftests is necessary, but scheduling it as "defer sleep; defer stop_traffic" is silly. Instead, add a local helper to stop traffic and sleep afterwards. Signed-off-by: Petr Machata <petrm@nvidia.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
0e07d5dbfb
commit
7f46615d59
|
|
@ -75,6 +75,18 @@ source $lib_dir/lib.sh
|
|||
source $lib_dir/devlink_lib.sh
|
||||
source mlxsw_lib.sh
|
||||
|
||||
stop_traffic_sleep()
|
||||
{
|
||||
local pid=$1; shift
|
||||
|
||||
# Issuing a kill still leaves a bunch of packets lingering in the
|
||||
# buffers. This traffic then arrives at the point where a follow-up test
|
||||
# is already running, and can confuse the test. Therefore sleep after
|
||||
# stopping traffic to flush any leftover packets.
|
||||
stop_traffic "$pid"
|
||||
sleep 1
|
||||
}
|
||||
|
||||
ipaddr()
|
||||
{
|
||||
local host=$1; shift
|
||||
|
|
@ -89,39 +101,31 @@ host_create()
|
|||
local host=$1; shift
|
||||
|
||||
simple_if_init $dev
|
||||
defer simple_if_fini $dev
|
||||
|
||||
mtu_set $dev 10000
|
||||
defer mtu_restore $dev
|
||||
|
||||
vlan_create $dev 10 v$dev $(ipaddr $host 10)/28
|
||||
defer vlan_destroy $dev 10
|
||||
ip link set dev $dev.10 type vlan egress 0:0
|
||||
|
||||
vlan_create $dev 11 v$dev $(ipaddr $host 11)/28
|
||||
defer vlan_destroy $dev 11
|
||||
ip link set dev $dev.11 type vlan egress 0:1
|
||||
}
|
||||
|
||||
host_destroy()
|
||||
{
|
||||
local dev=$1; shift
|
||||
|
||||
vlan_destroy $dev 11
|
||||
vlan_destroy $dev 10
|
||||
mtu_restore $dev
|
||||
simple_if_fini $dev
|
||||
}
|
||||
|
||||
h1_create()
|
||||
{
|
||||
host_create $h1 1
|
||||
}
|
||||
|
||||
h1_destroy()
|
||||
{
|
||||
host_destroy $h1
|
||||
}
|
||||
|
||||
h2_create()
|
||||
{
|
||||
host_create $h2 2
|
||||
|
||||
tc qdisc add dev $h2 clsact
|
||||
defer tc qdisc del dev $h2 clsact
|
||||
|
||||
# Some of the tests in this suite use multicast traffic. As this traffic
|
||||
# enters BR2_10 resp. BR2_11, it is flooded to all other ports. Thus
|
||||
|
|
@ -139,13 +143,7 @@ h2_create()
|
|||
|
||||
tc qdisc replace dev $h2 root handle 10: tbf rate 200mbit \
|
||||
burst 128K limit 1G
|
||||
}
|
||||
|
||||
h2_destroy()
|
||||
{
|
||||
tc qdisc del dev $h2 root handle 10:
|
||||
tc qdisc del dev $h2 clsact
|
||||
host_destroy $h2
|
||||
defer tc qdisc del dev $h2 root handle 10:
|
||||
}
|
||||
|
||||
h3_create()
|
||||
|
|
@ -153,40 +151,54 @@ h3_create()
|
|||
host_create $h3 3
|
||||
}
|
||||
|
||||
h3_destroy()
|
||||
{
|
||||
host_destroy $h3
|
||||
}
|
||||
|
||||
switch_create()
|
||||
{
|
||||
local intf
|
||||
local vlan
|
||||
|
||||
ip link add dev br1_10 type bridge
|
||||
defer ip link del dev br1_10
|
||||
|
||||
ip link add dev br1_11 type bridge
|
||||
defer ip link del dev br1_11
|
||||
|
||||
ip link add dev br2_10 type bridge
|
||||
defer ip link del dev br2_10
|
||||
|
||||
ip link add dev br2_11 type bridge
|
||||
defer ip link del dev br2_11
|
||||
|
||||
for intf in $swp1 $swp2 $swp3 $swp4 $swp5; do
|
||||
ip link set dev $intf up
|
||||
defer ip link set dev $intf down
|
||||
|
||||
mtu_set $intf 10000
|
||||
defer mtu_restore $intf
|
||||
done
|
||||
|
||||
for intf in $swp1 $swp4; do
|
||||
for vlan in 10 11; do
|
||||
vlan_create $intf $vlan
|
||||
defer vlan_destroy $intf $vlan
|
||||
|
||||
ip link set dev $intf.$vlan master br1_$vlan
|
||||
defer ip link set dev $intf.$vlan nomaster
|
||||
|
||||
ip link set dev $intf.$vlan up
|
||||
defer ip link set dev $intf.$vlan up
|
||||
done
|
||||
done
|
||||
|
||||
for intf in $swp2 $swp3 $swp5; do
|
||||
for vlan in 10 11; do
|
||||
vlan_create $intf $vlan
|
||||
defer vlan_destroy $intf $vlan
|
||||
|
||||
ip link set dev $intf.$vlan master br2_$vlan
|
||||
defer ip link set dev $intf.$vlan nomaster
|
||||
|
||||
ip link set dev $intf.$vlan up
|
||||
defer ip link set dev $intf.$vlan up
|
||||
done
|
||||
done
|
||||
|
||||
|
|
@ -201,49 +213,25 @@ switch_create()
|
|||
for intf in $swp3 $swp4; do
|
||||
tc qdisc replace dev $intf root handle 1: tbf rate 200mbit \
|
||||
burst 128K limit 1G
|
||||
defer tc qdisc del dev $intf root handle 1:
|
||||
done
|
||||
|
||||
ip link set dev br1_10 up
|
||||
defer ip link set dev br1_10 down
|
||||
|
||||
ip link set dev br1_11 up
|
||||
defer ip link set dev br1_11 down
|
||||
|
||||
ip link set dev br2_10 up
|
||||
defer ip link set dev br2_10 down
|
||||
|
||||
ip link set dev br2_11 up
|
||||
defer ip link set dev br2_11 down
|
||||
|
||||
local size=$(devlink_pool_size_thtype 0 | cut -d' ' -f 1)
|
||||
devlink_port_pool_th_save $swp3 8
|
||||
devlink_port_pool_th_set $swp3 8 $size
|
||||
}
|
||||
|
||||
switch_destroy()
|
||||
{
|
||||
local intf
|
||||
local vlan
|
||||
|
||||
devlink_port_pool_th_restore $swp3 8
|
||||
|
||||
ip link set dev br2_11 down
|
||||
ip link set dev br2_10 down
|
||||
ip link set dev br1_11 down
|
||||
ip link set dev br1_10 down
|
||||
|
||||
for intf in $swp4 $swp3; do
|
||||
tc qdisc del dev $intf root handle 1:
|
||||
done
|
||||
|
||||
for intf in $swp5 $swp3 $swp2 $swp4 $swp1; do
|
||||
for vlan in 11 10; do
|
||||
ip link set dev $intf.$vlan down
|
||||
ip link set dev $intf.$vlan nomaster
|
||||
vlan_destroy $intf $vlan
|
||||
done
|
||||
|
||||
mtu_restore $intf
|
||||
ip link set dev $intf down
|
||||
done
|
||||
|
||||
ip link del dev br2_11
|
||||
ip link del dev br2_10
|
||||
ip link del dev br1_11
|
||||
ip link del dev br1_10
|
||||
defer devlink_port_pool_th_restore $swp3 8
|
||||
}
|
||||
|
||||
setup_prepare()
|
||||
|
|
@ -263,6 +251,7 @@ setup_prepare()
|
|||
h3_mac=$(mac_get $h3)
|
||||
|
||||
vrf_prepare
|
||||
defer vrf_cleanup
|
||||
|
||||
h1_create
|
||||
h2_create
|
||||
|
|
@ -270,18 +259,6 @@ setup_prepare()
|
|||
switch_create
|
||||
}
|
||||
|
||||
cleanup()
|
||||
{
|
||||
pre_cleanup
|
||||
|
||||
switch_destroy
|
||||
h3_destroy
|
||||
h2_destroy
|
||||
h1_destroy
|
||||
|
||||
vrf_cleanup
|
||||
}
|
||||
|
||||
ping_ipv4()
|
||||
{
|
||||
ping_test $h1.10 $(ipaddr 3 10) " from host 1, vlan 10"
|
||||
|
|
@ -450,6 +427,7 @@ __do_ecn_test()
|
|||
|
||||
start_tcp_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) \
|
||||
$h3_mac tos=0x01
|
||||
defer stop_traffic_sleep $!
|
||||
sleep 1
|
||||
|
||||
ecn_test_common "$name" "$get_nmarked" $vlan $limit
|
||||
|
|
@ -461,9 +439,6 @@ __do_ecn_test()
|
|||
build_backlog $vlan $((2 * limit)) udp >/dev/null
|
||||
check_fail $? "UDP traffic went into backlog instead of being early-dropped"
|
||||
log_test "TC $((vlan - 10)): $name backlog > limit: UDP early-dropped"
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
}
|
||||
|
||||
do_ecn_test()
|
||||
|
|
@ -471,7 +446,8 @@ do_ecn_test()
|
|||
local vlan=$1; shift
|
||||
local limit=$1; shift
|
||||
|
||||
__do_ecn_test get_nmarked "$vlan" "$limit"
|
||||
in_defer_scope \
|
||||
__do_ecn_test get_nmarked "$vlan" "$limit"
|
||||
}
|
||||
|
||||
do_ecn_test_perband()
|
||||
|
|
@ -480,10 +456,11 @@ do_ecn_test_perband()
|
|||
local limit=$1; shift
|
||||
|
||||
mlxsw_only_on_spectrum 3+ || return
|
||||
__do_ecn_test get_qdisc_nmarked "$vlan" "$limit" "per-band ECN"
|
||||
in_defer_scope \
|
||||
__do_ecn_test get_qdisc_nmarked "$vlan" "$limit" "per-band ECN"
|
||||
}
|
||||
|
||||
do_ecn_nodrop_test()
|
||||
__do_ecn_nodrop_test()
|
||||
{
|
||||
local vlan=$1; shift
|
||||
local limit=$1; shift
|
||||
|
|
@ -491,6 +468,7 @@ do_ecn_nodrop_test()
|
|||
|
||||
start_tcp_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) \
|
||||
$h3_mac tos=0x01
|
||||
defer stop_traffic_sleep $!
|
||||
sleep 1
|
||||
|
||||
ecn_test_common "$name" get_nmarked $vlan $limit
|
||||
|
|
@ -502,12 +480,15 @@ do_ecn_nodrop_test()
|
|||
build_backlog $vlan $((2 * limit)) udp >/dev/null
|
||||
check_err $? "UDP traffic was early-dropped instead of getting into backlog"
|
||||
log_test "TC $((vlan - 10)): $name backlog > limit: UDP not dropped"
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
}
|
||||
|
||||
do_red_test()
|
||||
do_ecn_nodrop_test()
|
||||
{
|
||||
in_defer_scope \
|
||||
__do_ecn_nodrop_test "$@"
|
||||
}
|
||||
|
||||
__do_red_test()
|
||||
{
|
||||
local vlan=$1; shift
|
||||
local limit=$1; shift
|
||||
|
|
@ -518,6 +499,7 @@ do_red_test()
|
|||
# is above limit.
|
||||
start_tcp_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) \
|
||||
$h3_mac tos=0x01
|
||||
defer stop_traffic_sleep $!
|
||||
|
||||
# Pushing below the queue limit should work.
|
||||
RET=0
|
||||
|
|
@ -539,12 +521,15 @@ do_red_test()
|
|||
((-15 <= pct && pct <= 15))
|
||||
check_err $? "backlog $backlog / $limit expected <= 15% distance"
|
||||
log_test "TC $((vlan - 10)): RED backlog > limit"
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
}
|
||||
|
||||
do_mc_backlog_test()
|
||||
do_red_test()
|
||||
{
|
||||
in_defer_scope \
|
||||
__do_red_test "$@"
|
||||
}
|
||||
|
||||
__do_mc_backlog_test()
|
||||
{
|
||||
local vlan=$1; shift
|
||||
local limit=$1; shift
|
||||
|
|
@ -554,7 +539,10 @@ do_mc_backlog_test()
|
|||
RET=0
|
||||
|
||||
start_tcp_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) bc
|
||||
defer stop_traffic_sleep $!
|
||||
|
||||
start_tcp_traffic $h2.$vlan $(ipaddr 2 $vlan) $(ipaddr 3 $vlan) bc
|
||||
defer stop_traffic_sleep $!
|
||||
|
||||
qbl=$(busywait 5000 until_counter_is ">= 500000" \
|
||||
get_qdisc_backlog $vlan)
|
||||
|
|
@ -567,13 +555,16 @@ do_mc_backlog_test()
|
|||
get_mc_transmit_queue $vlan)
|
||||
check_err $? "MC backlog reported by qdisc not visible in ethtool"
|
||||
|
||||
stop_traffic
|
||||
stop_traffic
|
||||
|
||||
log_test "TC $((vlan - 10)): Qdisc reports MC backlog"
|
||||
}
|
||||
|
||||
do_mark_test()
|
||||
do_mc_backlog_test()
|
||||
{
|
||||
in_defer_scope \
|
||||
__do_mc_backlog_test "$@"
|
||||
}
|
||||
|
||||
__do_mark_test()
|
||||
{
|
||||
local vlan=$1; shift
|
||||
local limit=$1; shift
|
||||
|
|
@ -588,6 +579,7 @@ do_mark_test()
|
|||
|
||||
start_tcp_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) \
|
||||
$h3_mac tos=0x01
|
||||
defer stop_traffic_sleep $!
|
||||
|
||||
# Create a bit of a backlog and observe no mirroring due to marks.
|
||||
qevent_rule_install_$subtest
|
||||
|
|
@ -617,12 +609,15 @@ do_mark_test()
|
|||
else
|
||||
log_test "TC $((vlan - 10)): marked packets $subtest'd"
|
||||
fi
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
}
|
||||
|
||||
do_drop_test()
|
||||
do_mark_test()
|
||||
{
|
||||
in_defer_scope \
|
||||
__do_mark_test "$@"
|
||||
}
|
||||
|
||||
__do_drop_test()
|
||||
{
|
||||
local vlan=$1; shift
|
||||
local limit=$1; shift
|
||||
|
|
@ -637,6 +632,7 @@ do_drop_test()
|
|||
RET=0
|
||||
|
||||
start_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) $h3_mac
|
||||
defer stop_traffic_sleep $!
|
||||
|
||||
# Create a bit of a backlog and observe no mirroring due to drops.
|
||||
qevent_rule_install_$subtest
|
||||
|
|
@ -671,9 +667,12 @@ do_drop_test()
|
|||
check_fail $? "$((now - base)) spurious packets observed after uninstall"
|
||||
|
||||
log_test "TC $((vlan - 10)): ${trigger}ped packets $subtest'd"
|
||||
}
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
do_drop_test()
|
||||
{
|
||||
in_defer_scope \
|
||||
__do_drop_test "$@"
|
||||
}
|
||||
|
||||
qevent_rule_install_mirror()
|
||||
|
|
|
|||
|
|
@ -80,36 +80,34 @@ uninstall_qdisc()
|
|||
ecn_test()
|
||||
{
|
||||
install_qdisc ecn
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_ecn_test 10 $BACKLOG1
|
||||
do_ecn_test 11 $BACKLOG2
|
||||
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
ecn_test_perband()
|
||||
{
|
||||
install_qdisc ecn
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_ecn_test_perband 10 $BACKLOG1
|
||||
do_ecn_test_perband 11 $BACKLOG2
|
||||
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
ecn_nodrop_test()
|
||||
{
|
||||
install_qdisc ecn nodrop
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_ecn_nodrop_test 10 $BACKLOG1
|
||||
do_ecn_nodrop_test 11 $BACKLOG2
|
||||
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
red_test()
|
||||
{
|
||||
install_qdisc
|
||||
defer uninstall_qdisc
|
||||
|
||||
# Make sure that we get the non-zero value if there is any.
|
||||
local cur=$(busywait 1100 until_counter_is "> 0" \
|
||||
|
|
@ -120,50 +118,44 @@ red_test()
|
|||
|
||||
do_red_test 10 $BACKLOG1
|
||||
do_red_test 11 $BACKLOG2
|
||||
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
mc_backlog_test()
|
||||
{
|
||||
install_qdisc
|
||||
defer uninstall_qdisc
|
||||
|
||||
# Note that the backlog numbers here do not correspond to RED
|
||||
# configuration, but are arbitrary.
|
||||
do_mc_backlog_test 10 $BACKLOG1
|
||||
do_mc_backlog_test 11 $BACKLOG2
|
||||
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
red_mirror_test()
|
||||
{
|
||||
install_qdisc qevent early_drop block 10
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_drop_mirror_test 10 $BACKLOG1 early_drop
|
||||
do_drop_mirror_test 11 $BACKLOG2 early_drop
|
||||
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
red_trap_test()
|
||||
{
|
||||
install_qdisc qevent early_drop block 10
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_drop_trap_test 10 $BACKLOG1 early_drop
|
||||
do_drop_trap_test 11 $BACKLOG2 early_drop
|
||||
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
ecn_mirror_test()
|
||||
{
|
||||
install_qdisc ecn qevent mark block 10
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_mark_mirror_test 10 $BACKLOG1
|
||||
do_mark_mirror_test 11 $BACKLOG2
|
||||
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
bail_on_lldpad "configure DCB" "configure Qdiscs"
|
||||
|
|
|
|||
|
|
@ -32,45 +32,51 @@ uninstall_qdisc()
|
|||
ecn_test()
|
||||
{
|
||||
install_qdisc ecn
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_ecn_test 10 $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
ecn_test_perband()
|
||||
{
|
||||
install_qdisc ecn
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_ecn_test_perband 10 $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
ecn_nodrop_test()
|
||||
{
|
||||
install_qdisc ecn nodrop
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_ecn_nodrop_test 10 $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
red_test()
|
||||
{
|
||||
install_qdisc
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_red_test 10 $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
mc_backlog_test()
|
||||
{
|
||||
install_qdisc
|
||||
defer uninstall_qdisc
|
||||
|
||||
# Note that the backlog value here does not correspond to RED
|
||||
# configuration, but is arbitrary.
|
||||
do_mc_backlog_test 10 $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
red_mirror_test()
|
||||
{
|
||||
install_qdisc qevent early_drop block 10
|
||||
defer uninstall_qdisc
|
||||
|
||||
do_drop_mirror_test 10 $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
bail_on_lldpad "configure DCB" "configure Qdiscs"
|
||||
|
|
|
|||
|
|
@ -53,71 +53,63 @@ PKTSZ=1400
|
|||
h1_create()
|
||||
{
|
||||
simple_if_init $h1 192.0.2.1/28
|
||||
defer simple_if_fini $h1 192.0.2.1/28
|
||||
|
||||
mtu_set $h1 10000
|
||||
defer mtu_restore $h1
|
||||
|
||||
tc qdisc replace dev $h1 root handle 1: tbf \
|
||||
rate 10Mbit burst 10K limit 1M
|
||||
}
|
||||
|
||||
h1_destroy()
|
||||
{
|
||||
tc qdisc del dev $h1 root
|
||||
mtu_restore $h1
|
||||
simple_if_fini $h1 192.0.2.1/28
|
||||
defer tc qdisc del dev $h1 root
|
||||
}
|
||||
|
||||
h2_create()
|
||||
{
|
||||
simple_if_init $h2 192.0.2.2/28
|
||||
mtu_set $h2 10000
|
||||
}
|
||||
defer simple_if_fini $h2 192.0.2.2/28
|
||||
|
||||
h2_destroy()
|
||||
{
|
||||
mtu_restore $h2
|
||||
simple_if_fini $h2 192.0.2.2/28
|
||||
mtu_set $h2 10000
|
||||
defer mtu_restore $h2
|
||||
}
|
||||
|
||||
h3_create()
|
||||
{
|
||||
simple_if_init $h3 192.0.2.3/28
|
||||
mtu_set $h3 10000
|
||||
}
|
||||
defer simple_if_fini $h3 192.0.2.3/28
|
||||
|
||||
h3_destroy()
|
||||
{
|
||||
mtu_restore $h3
|
||||
simple_if_fini $h3 192.0.2.3/28
|
||||
mtu_set $h3 10000
|
||||
defer mtu_restore $h3
|
||||
}
|
||||
|
||||
switch_create()
|
||||
{
|
||||
ip link add dev br up type bridge
|
||||
defer ip link del dev br
|
||||
|
||||
ip link set dev $swp1 up master br
|
||||
defer ip link set dev $swp1 down nomaster
|
||||
|
||||
ip link set dev $swp2 up master br
|
||||
defer ip link set dev $swp2 down nomaster
|
||||
|
||||
ip link set dev $swp3 up master br
|
||||
defer ip link set dev $swp3 down nomaster
|
||||
|
||||
mtu_set $swp1 10000
|
||||
defer mtu_restore $h1
|
||||
|
||||
mtu_set $swp2 10000
|
||||
defer mtu_restore $h2
|
||||
|
||||
mtu_set $swp3 10000
|
||||
defer mtu_restore $h3
|
||||
|
||||
tc qdisc replace dev $swp3 root handle 1: tbf \
|
||||
rate 10Mbit burst 10K limit 1M
|
||||
defer tc qdisc del dev $swp3 root
|
||||
|
||||
ip link add name _drop_test up type dummy
|
||||
}
|
||||
|
||||
switch_destroy()
|
||||
{
|
||||
ip link del dev _drop_test
|
||||
tc qdisc del dev $swp3 root
|
||||
|
||||
mtu_restore $h3
|
||||
mtu_restore $h2
|
||||
mtu_restore $h1
|
||||
|
||||
ip link set dev $swp3 down nomaster
|
||||
ip link set dev $swp2 down nomaster
|
||||
ip link set dev $swp1 down nomaster
|
||||
ip link del dev br
|
||||
defer ip link del dev _drop_test
|
||||
}
|
||||
|
||||
setup_prepare()
|
||||
|
|
@ -134,6 +126,7 @@ setup_prepare()
|
|||
h3_mac=$(mac_get $h3)
|
||||
|
||||
vrf_prepare
|
||||
defer vrf_cleanup
|
||||
|
||||
h1_create
|
||||
h2_create
|
||||
|
|
@ -141,18 +134,6 @@ setup_prepare()
|
|||
switch_create
|
||||
}
|
||||
|
||||
cleanup()
|
||||
{
|
||||
pre_cleanup
|
||||
|
||||
switch_destroy
|
||||
h3_destroy
|
||||
h2_destroy
|
||||
h1_destroy
|
||||
|
||||
vrf_cleanup
|
||||
}
|
||||
|
||||
ping_ipv4()
|
||||
{
|
||||
ping_test $h1 192.0.2.3 " from host 1"
|
||||
|
|
@ -287,6 +268,7 @@ do_ecn_test()
|
|||
|
||||
$MZ $h1 -p $PKTSZ -A 192.0.2.1 -B 192.0.2.3 -c 0 \
|
||||
-a own -b $h3_mac -t tcp -q tos=0x01 &
|
||||
defer stop_traffic $!
|
||||
sleep 1
|
||||
|
||||
ecn_test_common "$name" $limit
|
||||
|
|
@ -298,9 +280,6 @@ do_ecn_test()
|
|||
build_backlog $((2 * limit)) udp >/dev/null
|
||||
check_fail $? "UDP traffic went into backlog instead of being early-dropped"
|
||||
log_test "$name backlog > limit: UDP early-dropped"
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
}
|
||||
|
||||
do_ecn_nodrop_test()
|
||||
|
|
@ -310,6 +289,7 @@ do_ecn_nodrop_test()
|
|||
|
||||
$MZ $h1 -p $PKTSZ -A 192.0.2.1 -B 192.0.2.3 -c 0 \
|
||||
-a own -b $h3_mac -t tcp -q tos=0x01 &
|
||||
defer stop_traffic $!
|
||||
sleep 1
|
||||
|
||||
ecn_test_common "$name" $limit
|
||||
|
|
@ -321,9 +301,6 @@ do_ecn_nodrop_test()
|
|||
build_backlog $((2 * limit)) udp >/dev/null
|
||||
check_err $? "UDP traffic was early-dropped instead of getting into backlog"
|
||||
log_test "$name backlog > limit: UDP not dropped"
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
}
|
||||
|
||||
do_red_test()
|
||||
|
|
@ -336,6 +313,7 @@ do_red_test()
|
|||
# is above limit.
|
||||
$MZ $h1 -p $PKTSZ -A 192.0.2.1 -B 192.0.2.3 -c 0 \
|
||||
-a own -b $h3_mac -t tcp -q tos=0x01 &
|
||||
defer stop_traffic $!
|
||||
|
||||
# Pushing below the queue limit should work.
|
||||
RET=0
|
||||
|
|
@ -352,9 +330,6 @@ do_red_test()
|
|||
pct=$(check_marking "== 0")
|
||||
check_err $? "backlog $backlog / $limit Got $pct% marked packets, expected == 0."
|
||||
log_test "RED backlog > limit"
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
}
|
||||
|
||||
do_red_qevent_test()
|
||||
|
|
@ -369,6 +344,7 @@ do_red_qevent_test()
|
|||
|
||||
$MZ $h1 -p $PKTSZ -A 192.0.2.1 -B 192.0.2.3 -c 0 \
|
||||
-a own -b $h3_mac -t udp -q &
|
||||
defer stop_traffic $!
|
||||
sleep 1
|
||||
|
||||
tc filter add block 10 pref 1234 handle 102 matchall skip_hw \
|
||||
|
|
@ -396,9 +372,6 @@ do_red_qevent_test()
|
|||
check_err $? "Dropped packets still observed: 0 expected, $((now - base)) seen"
|
||||
|
||||
log_test "RED early_dropped packets mirrored"
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
}
|
||||
|
||||
do_ecn_qevent_test()
|
||||
|
|
@ -410,6 +383,7 @@ do_ecn_qevent_test()
|
|||
|
||||
$MZ $h1 -p $PKTSZ -A 192.0.2.1 -B 192.0.2.3 -c 0 \
|
||||
-a own -b $h3_mac -t tcp -q tos=0x01 &
|
||||
defer stop_traffic $!
|
||||
sleep 1
|
||||
|
||||
tc filter add block 10 pref 1234 handle 102 matchall skip_hw \
|
||||
|
|
@ -428,9 +402,6 @@ do_ecn_qevent_test()
|
|||
tc filter del block 10 pref 1234 handle 102 matchall
|
||||
|
||||
log_test "ECN marked packets mirrored"
|
||||
|
||||
stop_traffic
|
||||
sleep 1
|
||||
}
|
||||
|
||||
install_qdisc()
|
||||
|
|
@ -451,36 +422,36 @@ uninstall_qdisc()
|
|||
ecn_test()
|
||||
{
|
||||
install_qdisc ecn
|
||||
defer uninstall_qdisc
|
||||
xfail_on_slow do_ecn_test $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
ecn_nodrop_test()
|
||||
{
|
||||
install_qdisc ecn nodrop
|
||||
defer uninstall_qdisc
|
||||
xfail_on_slow do_ecn_nodrop_test $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
red_test()
|
||||
{
|
||||
install_qdisc
|
||||
defer uninstall_qdisc
|
||||
xfail_on_slow do_red_test $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
red_qevent_test()
|
||||
{
|
||||
install_qdisc qevent early_drop block 10
|
||||
defer uninstall_qdisc
|
||||
xfail_on_slow do_red_qevent_test $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
ecn_qevent_test()
|
||||
{
|
||||
install_qdisc ecn qevent mark block 10
|
||||
defer uninstall_qdisc
|
||||
xfail_on_slow do_ecn_qevent_test $BACKLOG
|
||||
uninstall_qdisc
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user