2021-11-04 10:49:20

by Andrea Righi

[permalink] [raw]
Subject: [PATCH] selftests: net: properly support IPv6 in GSO GRE test

Explicitly pass -6 to netcat when the test is using IPv6 to prevent
failures.

Also make sure to pass "-N" to netcat to close the socket after EOF on
the client side, otherwise we would always hit the timeout and the test
would fail.

Without this fix applied:

TEST: GREv6/v4 - copy file w/ TSO [FAIL]
TEST: GREv6/v4 - copy file w/ GSO [FAIL]
TEST: GREv6/v6 - copy file w/ TSO [FAIL]
TEST: GREv6/v6 - copy file w/ GSO [FAIL]

With this fix applied:

TEST: GREv6/v4 - copy file w/ TSO [ OK ]
TEST: GREv6/v4 - copy file w/ GSO [ OK ]
TEST: GREv6/v6 - copy file w/ TSO [ OK ]
TEST: GREv6/v6 - copy file w/ GSO [ OK ]

Fixes: 025efa0a82df ("selftests: add simple GSO GRE test")
Signed-off-by: Andrea Righi <[email protected]>
---
tools/testing/selftests/net/gre_gso.sh | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/net/gre_gso.sh b/tools/testing/selftests/net/gre_gso.sh
index facbb0c80443..fdeb44d621eb 100755
--- a/tools/testing/selftests/net/gre_gso.sh
+++ b/tools/testing/selftests/net/gre_gso.sh
@@ -116,17 +116,18 @@ gre_gst_test_checks()
{
local name=$1
local addr=$2
+ local proto=$3

- $NS_EXEC nc -kl $port >/dev/null &
+ $NS_EXEC nc $proto -kl $port >/dev/null &
PID=$!
while ! $NS_EXEC ss -ltn | grep -q $port; do ((i++)); sleep 0.01; done

- cat $TMPFILE | timeout 1 nc $addr $port
+ cat $TMPFILE | timeout 1 nc $proto -N $addr $port
log_test $? 0 "$name - copy file w/ TSO"

ethtool -K veth0 tso off

- cat $TMPFILE | timeout 1 nc $addr $port
+ cat $TMPFILE | timeout 1 nc $proto -N $addr $port
log_test $? 0 "$name - copy file w/ GSO"

ethtool -K veth0 tso on
@@ -155,7 +156,7 @@ gre6_gso_test()
sleep 2

gre_gst_test_checks GREv6/v4 172.16.2.2
- gre_gst_test_checks GREv6/v6 2001:db8:1::2
+ gre_gst_test_checks GREv6/v6 2001:db8:1::2 -6

cleanup
}
--
2.32.0


2021-11-04 11:31:37

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH] selftests: net: properly support IPv6 in GSO GRE test

Hello:

This patch was applied to netdev/net.git (master)
by David S. Miller <[email protected]>:

On Thu, 4 Nov 2021 11:46:13 +0100 you wrote:
> Explicitly pass -6 to netcat when the test is using IPv6 to prevent
> failures.
>
> Also make sure to pass "-N" to netcat to close the socket after EOF on
> the client side, otherwise we would always hit the timeout and the test
> would fail.
>
> [...]

Here is the summary with links:
- selftests: net: properly support IPv6 in GSO GRE test
https://git.kernel.org/netdev/net/c/a985442fdecb

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html


2021-11-11 15:20:52

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH] selftests: net: properly support IPv6 in GSO GRE test

On Thu, 4 Nov 2021 11:46:13 +0100 Andrea Righi wrote:
> Explicitly pass -6 to netcat when the test is using IPv6 to prevent
> failures.
>
> Also make sure to pass "-N" to netcat to close the socket after EOF on
> the client side, otherwise we would always hit the timeout and the test
> would fail.
>
> Without this fix applied:
>
> TEST: GREv6/v4 - copy file w/ TSO [FAIL]
> TEST: GREv6/v4 - copy file w/ GSO [FAIL]
> TEST: GREv6/v6 - copy file w/ TSO [FAIL]
> TEST: GREv6/v6 - copy file w/ GSO [FAIL]
>
> With this fix applied:
>
> TEST: GREv6/v4 - copy file w/ TSO [ OK ]
> TEST: GREv6/v4 - copy file w/ GSO [ OK ]
> TEST: GREv6/v6 - copy file w/ TSO [ OK ]
> TEST: GREv6/v6 - copy file w/ GSO [ OK ]
>
> Fixes: 025efa0a82df ("selftests: add simple GSO GRE test")
> Signed-off-by: Andrea Righi <[email protected]>

This breaks the test for me on Fedora now :(

nc: invalid option -- 'N'
Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.
TEST: GREv6/v4 - copy file w/ TSO [FAIL]
nc: invalid option -- 'N'
Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.
TEST: GREv6/v4 - copy file w/ GSO [FAIL]
nc: invalid option -- 'N'
Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.
TEST: GREv6/v6 - copy file w/ TSO [FAIL]
nc: invalid option -- 'N'
Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.
TEST: GREv6/v6 - copy file w/ GSO [FAIL]

Tests passed: 0
Tests failed: 4


Can you please test this on your distro?

--->8-----

diff --git a/tools/testing/selftests/net/gre_gso.sh b/tools/testing/selftests/net/gre_gso.sh
index fdeb44d621eb..3224651db97b 100755
--- a/tools/testing/selftests/net/gre_gso.sh
+++ b/tools/testing/selftests/net/gre_gso.sh
@@ -118,16 +118,18 @@ gre_gst_test_checks()
local addr=$2
local proto=$3

- $NS_EXEC nc $proto -kl $port >/dev/null &
+ [ "$proto" == 6 ] && addr="[$addr]"
+
+ $NS_EXEC socat - tcp${proto}-listen:$port,reuseaddr,fork >/dev/null &
PID=$!
while ! $NS_EXEC ss -ltn | grep -q $port; do ((i++)); sleep 0.01; done

- cat $TMPFILE | timeout 1 nc $proto -N $addr $port
+ cat $TMPFILE | timeout 1 socat -u STDIN TCP:$addr:$port
log_test $? 0 "$name - copy file w/ TSO"

ethtool -K veth0 tso off

- cat $TMPFILE | timeout 1 nc $proto -N $addr $port
+ cat $TMPFILE | timeout 1 socat -u STDIN TCP:$addr:$port
log_test $? 0 "$name - copy file w/ GSO"

ethtool -K veth0 tso on
@@ -155,8 +157,8 @@ gre6_gso_test()

sleep 2

- gre_gst_test_checks GREv6/v4 172.16.2.2
- gre_gst_test_checks GREv6/v6 2001:db8:1::2 -6
+ gre_gst_test_checks GREv6/v4 172.16.2.2 4
+ gre_gst_test_checks GREv6/v6 2001:db8:1::2 6

cleanup
}
@@ -212,8 +214,8 @@ if [ ! -x "$(command -v ip)" ]; then
exit $ksft_skip
fi

-if [ ! -x "$(command -v nc)" ]; then
- echo "SKIP: Could not run test without nc tool"
+if [ ! -x "$(command -v socat)" ]; then
+ echo "SKIP: Could not run test without socat tool"
exit $ksft_skip
fi


2021-11-11 15:31:23

by Andrea Righi

[permalink] [raw]
Subject: Re: [PATCH] selftests: net: properly support IPv6 in GSO GRE test

On Thu, Nov 11, 2021 at 07:20:48AM -0800, Jakub Kicinski wrote:
> On Thu, 4 Nov 2021 11:46:13 +0100 Andrea Righi wrote:
> > Explicitly pass -6 to netcat when the test is using IPv6 to prevent
> > failures.
> >
> > Also make sure to pass "-N" to netcat to close the socket after EOF on
> > the client side, otherwise we would always hit the timeout and the test
> > would fail.
> >
> > Without this fix applied:
> >
> > TEST: GREv6/v4 - copy file w/ TSO [FAIL]
> > TEST: GREv6/v4 - copy file w/ GSO [FAIL]
> > TEST: GREv6/v6 - copy file w/ TSO [FAIL]
> > TEST: GREv6/v6 - copy file w/ GSO [FAIL]
> >
> > With this fix applied:
> >
> > TEST: GREv6/v4 - copy file w/ TSO [ OK ]
> > TEST: GREv6/v4 - copy file w/ GSO [ OK ]
> > TEST: GREv6/v6 - copy file w/ TSO [ OK ]
> > TEST: GREv6/v6 - copy file w/ GSO [ OK ]
> >
> > Fixes: 025efa0a82df ("selftests: add simple GSO GRE test")
> > Signed-off-by: Andrea Righi <[email protected]>
>
> This breaks the test for me on Fedora now :(

Oops, sorry about that.

>
> nc: invalid option -- 'N'
> Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.
> TEST: GREv6/v4 - copy file w/ TSO [FAIL]
> nc: invalid option -- 'N'
> Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.
> TEST: GREv6/v4 - copy file w/ GSO [FAIL]
> nc: invalid option -- 'N'
> Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.
> TEST: GREv6/v6 - copy file w/ TSO [FAIL]
> nc: invalid option -- 'N'
> Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.
> TEST: GREv6/v6 - copy file w/ GSO [FAIL]
>
> Tests passed: 0
> Tests failed: 4
>
>
> Can you please test this on your distro?

Tested, it works fine in Ubuntu as well:

$ sudo ./tools/testing/selftests/net/gre_gso.sh
TEST: GREv6/v4 - copy file w/ TSO [ OK ]
TEST: GREv6/v4 - copy file w/ GSO [ OK ]
TEST: GREv6/v6 - copy file w/ TSO [ OK ]
TEST: GREv6/v6 - copy file w/ GSO [ OK ]

Tests passed: 4
Tests failed: 0

Tested-by: Andrea Righi <[email protected]>