On 2/4/26 8:12 PM, Jason Wang wrote:
> On Thu, Feb 5, 2026 at 3:36 AM Vishwanath Seshagiri <[email protected]> wrote:

Add iperf3-based test to verify RX buffer handling under load.
Optionally logs page_pool tracepoints when available.

Signed-off-by: Vishwanath Seshagiri <[email protected]>
---
  .../drivers/net/virtio_net/basic_features.sh  | 86 +++++++++++++++++++
  1 file changed, 86 insertions(+)

diff --git a/tools/testing/selftests/drivers/net/virtio_net/basic_features.sh 
b/tools/testing/selftests/drivers/net/virtio_net/basic_features.sh
index cf8cf816ed48..fa98505c4674 100755
--- a/tools/testing/selftests/drivers/net/virtio_net/basic_features.sh
+++ b/tools/testing/selftests/drivers/net/virtio_net/basic_features.sh
@@ -6,6 +6,7 @@
  ALL_TESTS="
         initial_ping_test
         f_mac_test
+       buffer_circulation_test
  "

  source virtio_net_common.sh
@@ -16,6 +17,8 @@ source "$lib_dir"/../../../net/forwarding/lib.sh
  h1=${NETIFS[p1]}
  h2=${NETIFS[p2]}

+IPERF_SERVER_PID=""
+
  h1_create()
  {
         simple_if_init $h1 $H1_IPV4/24 $H1_IPV6/64
@@ -83,6 +86,84 @@ f_mac_test()
         log_test "$test_name"
  }

+buffer_circulation_test()
+{
+       RET=0
+       local test_name="buffer circulation"
+       local tracefs="/sys/kernel/tracing"
+
+       if ! check_command iperf3; then
+               log_test_skip "$test_name" "iperf3 not installed"
+               return 0
+       fi
+
+       setup_cleanup
+       setup_prepare
+
+       ping -c 1 -I "$h1" "$H2_IPV4" >/dev/null
+       if [ $? -ne 0 ]; then
+               check_err 1 "Ping failed"
+               log_test "$test_name"
+               return
+       fi
+
+       local rx_start=$(cat /sys/class/net/"$h2"/statistics/rx_packets)
+       local tx_start=$(cat /sys/class/net/"$h1"/statistics/tx_packets)
+
+       if [ -d "$tracefs/events/page_pool" ]; then
+               echo > "$tracefs/trace"
+               echo 1 > "$tracefs/events/page_pool/enable"
+       fi
+
+       local port=$(shuf -i 49152-65535 -n 1)
+
+       iperf3 -s -1 --bind-dev "$h2" -p "$port" &>/dev/null &
+       IPERF_SERVER_PID=$!
+       sleep 1

Nit:

It's better to use a more robust detecting instead of a sleep 1.

Can I make it similar to wait_local_port_listen() function in
tools/testing/selftests/net/lib.sh? It proceeds as soon as it is
available, but checks the port every 100ms.


Thanks



Reply via email to