selftests: fix the return value for UDP GRO test
[ Upstream commit 3503ee6c0b
]
The udpgro.sh will always return 0 (unless the bpf selftest was not
build first) even if there are some failed sub test-cases.
Therefore the kselftest framework will report this case is OK.
Check and return the exit status of each test to make it easier to
spot real failures.
Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
5.4-rM2-2.2.x-imx-squashed
parent
5fc06b7064
commit
242793c7ef
|
@ -5,6 +5,14 @@
|
||||||
|
|
||||||
readonly PEER_NS="ns-peer-$(mktemp -u XXXXXX)"
|
readonly PEER_NS="ns-peer-$(mktemp -u XXXXXX)"
|
||||||
|
|
||||||
|
# set global exit status, but never reset nonzero one.
|
||||||
|
check_err()
|
||||||
|
{
|
||||||
|
if [ $ret -eq 0 ]; then
|
||||||
|
ret=$1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
local -r jobs="$(jobs -p)"
|
local -r jobs="$(jobs -p)"
|
||||||
local -r ns="$(ip netns list|grep $PEER_NS)"
|
local -r ns="$(ip netns list|grep $PEER_NS)"
|
||||||
|
@ -44,7 +52,9 @@ run_one() {
|
||||||
# Hack: let bg programs complete the startup
|
# Hack: let bg programs complete the startup
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
./udpgso_bench_tx ${tx_args}
|
./udpgso_bench_tx ${tx_args}
|
||||||
|
ret=$?
|
||||||
wait $(jobs -p)
|
wait $(jobs -p)
|
||||||
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
run_test() {
|
run_test() {
|
||||||
|
@ -87,8 +97,10 @@ run_one_nat() {
|
||||||
|
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
./udpgso_bench_tx ${tx_args}
|
./udpgso_bench_tx ${tx_args}
|
||||||
|
ret=$?
|
||||||
kill -INT $pid
|
kill -INT $pid
|
||||||
wait $(jobs -p)
|
wait $(jobs -p)
|
||||||
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
run_one_2sock() {
|
run_one_2sock() {
|
||||||
|
@ -110,7 +122,9 @@ run_one_2sock() {
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
# first UDP GSO socket should be closed at this point
|
# first UDP GSO socket should be closed at this point
|
||||||
./udpgso_bench_tx ${tx_args}
|
./udpgso_bench_tx ${tx_args}
|
||||||
|
ret=$?
|
||||||
wait $(jobs -p)
|
wait $(jobs -p)
|
||||||
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
run_nat_test() {
|
run_nat_test() {
|
||||||
|
@ -131,36 +145,54 @@ run_all() {
|
||||||
local -r core_args="-l 4"
|
local -r core_args="-l 4"
|
||||||
local -r ipv4_args="${core_args} -4 -D 192.168.1.1"
|
local -r ipv4_args="${core_args} -4 -D 192.168.1.1"
|
||||||
local -r ipv6_args="${core_args} -6 -D 2001:db8::1"
|
local -r ipv6_args="${core_args} -6 -D 2001:db8::1"
|
||||||
|
ret=0
|
||||||
|
|
||||||
echo "ipv4"
|
echo "ipv4"
|
||||||
run_test "no GRO" "${ipv4_args} -M 10 -s 1400" "-4 -n 10 -l 1400"
|
run_test "no GRO" "${ipv4_args} -M 10 -s 1400" "-4 -n 10 -l 1400"
|
||||||
|
check_err $?
|
||||||
|
|
||||||
# explicitly check we are not receiving UDP_SEGMENT cmsg (-S -1)
|
# explicitly check we are not receiving UDP_SEGMENT cmsg (-S -1)
|
||||||
# when GRO does not take place
|
# when GRO does not take place
|
||||||
run_test "no GRO chk cmsg" "${ipv4_args} -M 10 -s 1400" "-4 -n 10 -l 1400 -S -1"
|
run_test "no GRO chk cmsg" "${ipv4_args} -M 10 -s 1400" "-4 -n 10 -l 1400 -S -1"
|
||||||
|
check_err $?
|
||||||
|
|
||||||
# the GSO packets are aggregated because:
|
# the GSO packets are aggregated because:
|
||||||
# * veth schedule napi after each xmit
|
# * veth schedule napi after each xmit
|
||||||
# * segmentation happens in BH context, veth napi poll is delayed after
|
# * segmentation happens in BH context, veth napi poll is delayed after
|
||||||
# the transmission of the last segment
|
# the transmission of the last segment
|
||||||
run_test "GRO" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720"
|
run_test "GRO" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720"
|
||||||
|
check_err $?
|
||||||
run_test "GRO chk cmsg" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720 -S 1472"
|
run_test "GRO chk cmsg" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720 -S 1472"
|
||||||
|
check_err $?
|
||||||
run_test "GRO with custom segment size" "${ipv4_args} -M 1 -s 14720 -S 500 " "-4 -n 1 -l 14720"
|
run_test "GRO with custom segment size" "${ipv4_args} -M 1 -s 14720 -S 500 " "-4 -n 1 -l 14720"
|
||||||
|
check_err $?
|
||||||
run_test "GRO with custom segment size cmsg" "${ipv4_args} -M 1 -s 14720 -S 500 " "-4 -n 1 -l 14720 -S 500"
|
run_test "GRO with custom segment size cmsg" "${ipv4_args} -M 1 -s 14720 -S 500 " "-4 -n 1 -l 14720 -S 500"
|
||||||
|
check_err $?
|
||||||
|
|
||||||
run_nat_test "bad GRO lookup" "${ipv4_args} -M 1 -s 14720 -S 0" "-n 10 -l 1472"
|
run_nat_test "bad GRO lookup" "${ipv4_args} -M 1 -s 14720 -S 0" "-n 10 -l 1472"
|
||||||
|
check_err $?
|
||||||
run_2sock_test "multiple GRO socks" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720 -S 1472"
|
run_2sock_test "multiple GRO socks" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720 -S 1472"
|
||||||
|
check_err $?
|
||||||
|
|
||||||
echo "ipv6"
|
echo "ipv6"
|
||||||
run_test "no GRO" "${ipv6_args} -M 10 -s 1400" "-n 10 -l 1400"
|
run_test "no GRO" "${ipv6_args} -M 10 -s 1400" "-n 10 -l 1400"
|
||||||
|
check_err $?
|
||||||
run_test "no GRO chk cmsg" "${ipv6_args} -M 10 -s 1400" "-n 10 -l 1400 -S -1"
|
run_test "no GRO chk cmsg" "${ipv6_args} -M 10 -s 1400" "-n 10 -l 1400 -S -1"
|
||||||
|
check_err $?
|
||||||
run_test "GRO" "${ipv6_args} -M 1 -s 14520 -S 0" "-n 1 -l 14520"
|
run_test "GRO" "${ipv6_args} -M 1 -s 14520 -S 0" "-n 1 -l 14520"
|
||||||
|
check_err $?
|
||||||
run_test "GRO chk cmsg" "${ipv6_args} -M 1 -s 14520 -S 0" "-n 1 -l 14520 -S 1452"
|
run_test "GRO chk cmsg" "${ipv6_args} -M 1 -s 14520 -S 0" "-n 1 -l 14520 -S 1452"
|
||||||
|
check_err $?
|
||||||
run_test "GRO with custom segment size" "${ipv6_args} -M 1 -s 14520 -S 500" "-n 1 -l 14520"
|
run_test "GRO with custom segment size" "${ipv6_args} -M 1 -s 14520 -S 500" "-n 1 -l 14520"
|
||||||
|
check_err $?
|
||||||
run_test "GRO with custom segment size cmsg" "${ipv6_args} -M 1 -s 14520 -S 500" "-n 1 -l 14520 -S 500"
|
run_test "GRO with custom segment size cmsg" "${ipv6_args} -M 1 -s 14520 -S 500" "-n 1 -l 14520 -S 500"
|
||||||
|
check_err $?
|
||||||
|
|
||||||
run_nat_test "bad GRO lookup" "${ipv6_args} -M 1 -s 14520 -S 0" "-n 10 -l 1452"
|
run_nat_test "bad GRO lookup" "${ipv6_args} -M 1 -s 14520 -S 0" "-n 10 -l 1452"
|
||||||
|
check_err $?
|
||||||
run_2sock_test "multiple GRO socks" "${ipv6_args} -M 1 -s 14520 -S 0 " "-n 1 -l 14520 -S 1452"
|
run_2sock_test "multiple GRO socks" "${ipv6_args} -M 1 -s 14520 -S 0 " "-n 1 -l 14520 -S 1452"
|
||||||
|
check_err $?
|
||||||
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ ! -f ../bpf/xdp_dummy.o ]; then
|
if [ ! -f ../bpf/xdp_dummy.o ]; then
|
||||||
|
@ -180,3 +212,5 @@ elif [[ $1 == "__subprocess_2sock" ]]; then
|
||||||
shift
|
shift
|
||||||
run_one_2sock $@
|
run_one_2sock $@
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
exit $?
|
||||||
|
|
Loading…
Reference in New Issue