mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
selftests: udpgro: report error when receive failed
Currently, we only check the latest senders's exit code. If the receiver
report failed, it is not recoreded. Fix it by checking the exit code
of all the involved processes.
Before:
bad GRO lookup ok
multiple GRO socks ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520
./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520
failed
$ echo $?
0
After:
bad GRO lookup ok
multiple GRO socks ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520
./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520
failed
$ echo $?
1
Fixes: 3327a9c463
("selftests: add functionals test for UDP GRO")
Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2d7423040b
commit
7167395a4b
1 changed files with 27 additions and 17 deletions
|
@ -46,17 +46,19 @@ run_one() {
|
|||
local -r all="$@"
|
||||
local -r tx_args=${all%rx*}
|
||||
local -r rx_args=${all#*rx}
|
||||
local ret=0
|
||||
|
||||
cfg_veth
|
||||
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${rx_args} && \
|
||||
echo "ok" || \
|
||||
echo "failed" &
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${rx_args} &
|
||||
local PID1=$!
|
||||
|
||||
wait_local_port_listen ${PEER_NS} 8000 udp
|
||||
./udpgso_bench_tx ${tx_args}
|
||||
ret=$?
|
||||
wait $(jobs -p)
|
||||
check_err $?
|
||||
wait ${PID1}
|
||||
check_err $?
|
||||
[ "$ret" -eq 0 ] && echo "ok" || echo "failed"
|
||||
return $ret
|
||||
}
|
||||
|
||||
|
@ -73,6 +75,7 @@ run_one_nat() {
|
|||
local -r all="$@"
|
||||
local -r tx_args=${all%rx*}
|
||||
local -r rx_args=${all#*rx}
|
||||
local ret=0
|
||||
|
||||
if [[ ${tx_args} = *-4* ]]; then
|
||||
ipt_cmd=iptables
|
||||
|
@ -93,16 +96,17 @@ run_one_nat() {
|
|||
# ... so that GRO will match the UDP_GRO enabled socket, but packets
|
||||
# will land on the 'plain' one
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx -G ${family} -b ${addr1} -n 0 &
|
||||
pid=$!
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${family} -b ${addr2%/*} ${rx_args} && \
|
||||
echo "ok" || \
|
||||
echo "failed"&
|
||||
local PID1=$!
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${family} -b ${addr2%/*} ${rx_args} &
|
||||
local PID2=$!
|
||||
|
||||
wait_local_port_listen "${PEER_NS}" 8000 udp
|
||||
./udpgso_bench_tx ${tx_args}
|
||||
ret=$?
|
||||
kill -INT $pid
|
||||
wait $(jobs -p)
|
||||
check_err $?
|
||||
kill -INT ${PID1}
|
||||
wait ${PID2}
|
||||
check_err $?
|
||||
[ "$ret" -eq 0 ] && echo "ok" || echo "failed"
|
||||
return $ret
|
||||
}
|
||||
|
||||
|
@ -111,20 +115,26 @@ run_one_2sock() {
|
|||
local -r all="$@"
|
||||
local -r tx_args=${all%rx*}
|
||||
local -r rx_args=${all#*rx}
|
||||
local ret=0
|
||||
|
||||
cfg_veth
|
||||
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${rx_args} -p 12345 &
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 2000 -R 10 ${rx_args} && \
|
||||
echo "ok" || \
|
||||
echo "failed" &
|
||||
local PID1=$!
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 2000 -R 10 ${rx_args} &
|
||||
local PID2=$!
|
||||
|
||||
wait_local_port_listen "${PEER_NS}" 12345 udp
|
||||
./udpgso_bench_tx ${tx_args} -p 12345
|
||||
check_err $?
|
||||
wait_local_port_listen "${PEER_NS}" 8000 udp
|
||||
./udpgso_bench_tx ${tx_args}
|
||||
ret=$?
|
||||
wait $(jobs -p)
|
||||
check_err $?
|
||||
wait ${PID1}
|
||||
check_err $?
|
||||
wait ${PID2}
|
||||
check_err $?
|
||||
[ "$ret" -eq 0 ] && echo "ok" || echo "failed"
|
||||
return $ret
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue