mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 10:08:59 +00:00
53 lines
2.4 KiB
Diff
53 lines
2.4 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
|
||
|
Date: Mon, 22 Feb 2021 17:25:45 +0100
|
||
|
Subject: [PATCH] wireguard: selftests: test multiple parallel streams
|
||
|
|
||
|
commit d5a49aa6c3e264a93a7d08485d66e346be0969dd upstream.
|
||
|
|
||
|
In order to test ndo_start_xmit being called in parallel, explicitly add
|
||
|
separate tests, which should all run on different cores. This should
|
||
|
help tease out bugs associated with queueing up packets from different
|
||
|
cores in parallel. Currently, it hasn't found those types of bugs, but
|
||
|
given future planned work, this is a useful regression to avoid.
|
||
|
|
||
|
Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
|
||
|
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
|
||
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||
|
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
|
||
|
---
|
||
|
tools/testing/selftests/wireguard/netns.sh | 15 ++++++++++++++-
|
||
|
1 file changed, 14 insertions(+), 1 deletion(-)
|
||
|
|
||
|
--- a/tools/testing/selftests/wireguard/netns.sh
|
||
|
+++ b/tools/testing/selftests/wireguard/netns.sh
|
||
|
@@ -39,7 +39,7 @@ ip0() { pretty 0 "ip $*"; ip -n $netns0
|
||
|
ip1() { pretty 1 "ip $*"; ip -n $netns1 "$@"; }
|
||
|
ip2() { pretty 2 "ip $*"; ip -n $netns2 "$@"; }
|
||
|
sleep() { read -t "$1" -N 1 || true; }
|
||
|
-waitiperf() { pretty "${1//*-}" "wait for iperf:5201 pid $2"; while [[ $(ss -N "$1" -tlpH 'sport = 5201') != *\"iperf3\",pid=$2,fd=* ]]; do sleep 0.1; done; }
|
||
|
+waitiperf() { pretty "${1//*-}" "wait for iperf:${3:-5201} pid $2"; while [[ $(ss -N "$1" -tlpH "sport = ${3:-5201}") != *\"iperf3\",pid=$2,fd=* ]]; do sleep 0.1; done; }
|
||
|
waitncatudp() { pretty "${1//*-}" "wait for udp:1111 pid $2"; while [[ $(ss -N "$1" -ulpH 'sport = 1111') != *\"ncat\",pid=$2,fd=* ]]; do sleep 0.1; done; }
|
||
|
waitiface() { pretty "${1//*-}" "wait for $2 to come up"; ip netns exec "$1" bash -c "while [[ \$(< \"/sys/class/net/$2/operstate\") != up ]]; do read -t .1 -N 0 || true; done;"; }
|
||
|
|
||
|
@@ -141,6 +141,19 @@ tests() {
|
||
|
n2 iperf3 -s -1 -B fd00::2 &
|
||
|
waitiperf $netns2 $!
|
||
|
n1 iperf3 -Z -t 3 -b 0 -u -c fd00::2
|
||
|
+
|
||
|
+ # TCP over IPv4, in parallel
|
||
|
+ for max in 4 5 50; do
|
||
|
+ local pids=( )
|
||
|
+ for ((i=0; i < max; ++i)) do
|
||
|
+ n2 iperf3 -p $(( 5200 + i )) -s -1 -B 192.168.241.2 &
|
||
|
+ pids+=( $! ); waitiperf $netns2 $! $(( 5200 + i ))
|
||
|
+ done
|
||
|
+ for ((i=0; i < max; ++i)) do
|
||
|
+ n1 iperf3 -Z -t 3 -p $(( 5200 + i )) -c 192.168.241.2 &
|
||
|
+ done
|
||
|
+ wait "${pids[@]}"
|
||
|
+ done
|
||
|
}
|
||
|
|
||
|
[[ $(ip1 link show dev wg0) =~ mtu\ ([0-9]+) ]] && orig_mtu="${BASH_REMATCH[1]}"
|