Signed-off-by: Zhu Yanjun <[email protected]> --- MAINTAINERS | 1 + tools/testing/selftests/Makefile | 1 + tools/testing/selftests/rdma/Makefile | 5 ++ tools/testing/selftests/rdma/config | 3 + .../selftests/rdma/rping_between_netns.sh | 57 +++++++++++++++++ tools/testing/selftests/rdma/rxe_ipv6.sh | 47 ++++++++++++++ .../testing/selftests/rdma/socket_with_rxe.sh | 64 +++++++++++++++++++ 7 files changed, 178 insertions(+) create mode 100644 tools/testing/selftests/rdma/Makefile create mode 100644 tools/testing/selftests/rdma/config create mode 100755 tools/testing/selftests/rdma/rping_between_netns.sh create mode 100755 tools/testing/selftests/rdma/rxe_ipv6.sh create mode 100755 tools/testing/selftests/rdma/socket_with_rxe.sh
diff --git a/MAINTAINERS b/MAINTAINERS index 61bf550fd37c..3f3aca470d77 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -24509,6 +24509,7 @@ L: [email protected] S: Supported F: drivers/infiniband/sw/rxe/ F: include/uapi/rdma/rdma_user_rxe.h +F: tools/testing/selftests/rdma/ SOFTLOGIC 6x10 MPEG CODEC M: Bluecherry Maintainers <[email protected]> diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index 450f13ba4cca..110e07c0d99d 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -94,6 +94,7 @@ TARGETS += proc TARGETS += pstore TARGETS += ptrace TARGETS += openat2 +TARGETS += rdma TARGETS += resctrl TARGETS += riscv TARGETS += rlimits diff --git a/tools/testing/selftests/rdma/Makefile b/tools/testing/selftests/rdma/Makefile new file mode 100644 index 000000000000..362e97f0fb3e --- /dev/null +++ b/tools/testing/selftests/rdma/Makefile @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0 +TEST_PROGS := rping_between_netns.sh \ + rxe_ipv6.sh \ + socket_with_rxe.sh +include ../lib.mk diff --git a/tools/testing/selftests/rdma/config b/tools/testing/selftests/rdma/config new file mode 100644 index 000000000000..4ffb814e253b --- /dev/null +++ b/tools/testing/selftests/rdma/config @@ -0,0 +1,3 @@ +CONFIG_TUN +CONFIG_VETH +CONFIG_RDMA_RXE diff --git a/tools/testing/selftests/rdma/rping_between_netns.sh b/tools/testing/selftests/rdma/rping_between_netns.sh new file mode 100755 index 000000000000..80b4249dba55 --- /dev/null +++ b/tools/testing/selftests/rdma/rping_between_netns.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +# Notes: +# +# 1. Before running this script, please disable the firewall, as it may +# block UDP port 4791. + +# 2. This test script depends on the veth and tun drivers. Before running +# the script, please verify that both drivers are available by executing: +# +# modinfo veth +# +# Make sure these commands return valid module information. + +#1. Check if rping can work or not +exec > /dev/null +ip netns add test1 +ip netns ls +ip link add veth-a type veth peer name veth-b +ip l +ip link set veth-a netns test1 +ip l +ip netns exec test1 ip l set veth-a up +ip netns exec test1 ip addr add 1.1.1.1/24 dev veth-a +ip netns exec test1 ip l +ip netns exec test1 ip -4 a +ip netns exec test1 rdma link add rxe0 type rxe netdev veth-a + +#check if socket exist or not +ip netns exec test1 ss -lun | grep :4791 + +ip netns exec test1 rdma link +ip link set veth-b up +ip addr add 1.1.1.2/24 dev veth-b +ping -c 3 1.1.1.1 || exit 1 +ip netns exec test1 rping -s -a 1.1.1.1& +rdma link add rxe1 type rxe netdev veth-b +rdma link + +#check if socket exist or not +ss -lun | grep :4791 + +rping -c -a 1.1.1.1 -d -v -C 3 || exit 1 +ip netns ls +rdma link del rxe1 + +#check if socket exist or not +ss -lun | grep :4791 + +ip netns exec test1 ss -lun | grep :4791 +ip netns exec test1 rdma link del rxe0 +ip netns exec test1 ss -lun | grep :4791 +ip netns del test1 +ip netns ls + +modprobe -v -r veth +modprobe -v -r rdma_rxe diff --git a/tools/testing/selftests/rdma/rxe_ipv6.sh b/tools/testing/selftests/rdma/rxe_ipv6.sh new file mode 100755 index 000000000000..9337ac4fd13f --- /dev/null +++ b/tools/testing/selftests/rdma/rxe_ipv6.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# Notes: +# +# 1. Before running this script, please disable the firewall, as it may +# block UDP port 4791. + +# 2. This test script depends on the veth and tun drivers. Before running +# the script, please verify that both drivers are available by executing: +# +# modinfo tun +# modinfo veth +# +# Make sure these commands return valid module information. + +# 3. ipv6 test. +# While RXE is conventionally deployed over IPv4, it maintains +# native support for IPv6. However, IPv6 implementations typically +# receive less validation and performance tuning in standard use cases. +exec > /dev/null +# 1) create ipv6 net namespace +ip netns add net6 +ip link add veth0 type veth peer name veth1 +ip link set veth1 netns net6 +ip netns exec net6 ip addr add 2001:db8::1/64 dev veth1 +ip netns exec net6 ip link set veth1 up + +# 2) Add rdma link +ip netns exec net6 rdma link add rxe6 type rxe netdev veth1 + +# 3) check IPv6 UDP 4791 listening port +if ! ip netns exec net6 ss -ul6n | grep :4791; then + echo "Error: udp port 4791 exists" + exit 1 +fi + +# 4) Delete rxe link +ip netns exec net6 rdma link del rxe6 +if ip netns exec net6 ss -ul6n | grep :4791; then # result should be null + echo "Error: udp port 4791 exists" + exit 1 +fi + +# 5) delete net6 +ip netns del net6 + +modprobe -v -r rdma_rxe diff --git a/tools/testing/selftests/rdma/socket_with_rxe.sh b/tools/testing/selftests/rdma/socket_with_rxe.sh new file mode 100755 index 000000000000..676aec63babd --- /dev/null +++ b/tools/testing/selftests/rdma/socket_with_rxe.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +# Notes: +# +# 1. Before running this script, please disable the firewall, as it may +# block UDP port 4791. + +# 2. This test script depends on the veth and tun drivers. Before running +# the script, please verify that both drivers are available by executing: +# +# modinfo tun +# +# Make sure these commands return valid module information. + +# Check if socket exist or not +exec > /dev/null +ip tuntap add mode tun tun0 +ip -4 a +ip addr add 1.1.1.1/24 dev tun0 +ip link set tun0 up +ip -4 a +rdma link add rxe0 type rxe netdev tun0 +rdma link +ret=`ss -lun | grep :4791` +if [ X"$ret" == X"" ]; then + echo "Error: udp port 4791 does not exist" + exit 1 +fi + +ip tuntap add mode tun tun1 +ip -4 a +ip addr add 2.2.2.2/24 dev tun1 +ip link set tun1 up +rdma link add rxe1 type rxe netdev tun1 +rdma link +ret=`ss -lun | grep :4791` +if [ X"$ret" == X"" ]; then + echo "Error: udp port 4791 does not exist" + exit 1 +fi + +rdma link del rxe1 +rdma link +ret=`ss -lun | grep :4791` +if [ X"$ret" == X"" ]; then + echo "Error: udp port 4791 doese not exist" + exit 1 +fi + +rdma link del rxe0 +rdma link +if ss -lun | grep :4791; then + echo "Error: udp port 4791 exists" + exit 1 +fi + +ip addr del 2.2.2.2/24 dev tun1 +ip tuntap del mode tun tun1 + +ip addr del 1.1.1.1/24 dev tun0 +ip tuntap del mode tun tun0 + +modprobe -v -r tun +modprobe -v -r rdma_rxe -- 2.52.0
