mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 01:32:21 +02:00
selftest/rxe: Add selftests for perf
Create a virtual TUN net device with RXE support, then run rping server and client to invoke networking packets, finally compare both *port_xmit_data* and *port_rcv_data* of such device. Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev> Link: https://patch.msgid.link/20260414062948.671658-5-zhenwei.pi@linux.dev Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
1648bcf1ed
commit
c67bd97369
|
|
@ -2,6 +2,7 @@
|
|||
TEST_PROGS := rxe_rping_between_netns.sh \
|
||||
rxe_ipv6.sh \
|
||||
rxe_socket_with_netns.sh \
|
||||
rxe_test_NETDEV_UNREGISTER.sh
|
||||
rxe_test_NETDEV_UNREGISTER.sh \
|
||||
rxe_sent_rcvd_bytes.sh
|
||||
|
||||
include ../lib.mk
|
||||
|
|
|
|||
75
tools/testing/selftests/rdma/rxe_sent_rcvd_bytes.sh
Executable file
75
tools/testing/selftests/rdma/rxe_sent_rcvd_bytes.sh
Executable file
|
|
@ -0,0 +1,75 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Configuration
|
||||
PORT=4791
|
||||
MODS=("tun" "rdma_rxe")
|
||||
|
||||
exec > /dev/null
|
||||
|
||||
# --- Helper: Cleanup Routine ---
|
||||
cleanup() {
|
||||
echo "Cleaning up resources..."
|
||||
rdma link del rxe0 2>/dev/null
|
||||
ip link del tun0 2>/dev/null
|
||||
for m in "${MODS[@]}"; do modprobe -r "$m" 2>/dev/null; done
|
||||
}
|
||||
|
||||
# Ensure cleanup runs on script exit or interrupt
|
||||
trap cleanup EXIT
|
||||
|
||||
# --- Phase 1: Environment Check ---
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "Error: This script must be run as root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for m in "${MODS[@]}"; do
|
||||
modprobe "$m" || { echo "Error: Failed to load $m"; exit 1; }
|
||||
done
|
||||
|
||||
# --- Phase 2: Create Interfaces & RXE Links ---
|
||||
echo "Creating tun0 (1.1.1.1) and rxe0..."
|
||||
ip tuntap add mode tun tun0
|
||||
ip addr add 1.1.1.1/24 dev tun0
|
||||
ip link set tun0 up
|
||||
rdma link add rxe0 type rxe netdev tun0
|
||||
|
||||
# Verify port 4791 is listening
|
||||
if ! ss -Huln sport = :$PORT | grep -q ":$PORT"; then
|
||||
echo "Error: UDP port $PORT not found after rxe0 creation"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
orig_s=`cat /sys/class/infiniband/rxe0/ports/1/counters/port_xmit_data`
|
||||
orig_r=`cat /sys/class/infiniband/rxe0/ports/1/counters/port_rcv_data`
|
||||
|
||||
rping -s -a 1.1.1.1 -C 3 -v &
|
||||
sleep 1
|
||||
rping -c -a 1.1.1.1 -C 3 -d -v
|
||||
|
||||
new_s=`cat /sys/class/infiniband/rxe0/ports/1/counters/port_xmit_data`
|
||||
new_r=`cat /sys/class/infiniband/rxe0/ports/1/counters/port_rcv_data`
|
||||
|
||||
echo sent $new_s $orig_s
|
||||
echo rcvd $new_r $orig_r
|
||||
|
||||
result0=$((new_s - orig_s))
|
||||
result1=$((new_r - orig_r))
|
||||
|
||||
if [ $result0 != $result1 ]; then
|
||||
echo "Error: sent and rcvd bytes different"
|
||||
echo $result0
|
||||
echo $result1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Deleting rxe0..."
|
||||
rdma link del rxe0
|
||||
|
||||
# Port should now be gone
|
||||
if ss -Huln sport = :$PORT | grep -q ":$PORT"; then
|
||||
echo "Error: UDP port $PORT still exists after all links deleted"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Test passed successfully."
|
||||
Loading…
Reference in New Issue
Block a user