xref: /openwifi/user_space/link_perf_test.sh (revision a6085186d94dfe08b0e09c18c8d4b1b4fe38ea35)
1#!/bin/bash
2
3# SPDX-FileCopyrightText: 2019 Jiao Xianjun <[email protected]>
4# SPDX-License-Identifier: AGPL-3.0-or-later
5
6PL_MIN=100
7PL_INC=100
8PL_MAX=1500
9PAYLOAD=( $(seq -s' ' $PL_MIN $PL_INC $PL_MAX) ) # paload size in bytes
10MCS_BPS=( 6 9 12 18 24 36 48 54 )
11MCS_IDX=( 4 5  6  7  8  9 10 11 )
12
13INTERVAL=0.001	# Wait interval seconds between sending each packet
14PKT_CNT=700		# Stop after sending count ECHO_REQUEST packets
15DEADLINE=1		# Specify a timeout, in seconds, before ping exits regardless of how many packets have been sent or received
16
17SDRCTL_EXEC="./sdrctl_src/sdrctl"
18CLIENT_IP="192.168.13.2"
19
20# Bandwidth = 1.4 MHz
21printf "LINK PERFORMANCE TEST\n"
22printf "=====================\n"
23printf "RATE/PL\t"
24for (( j = 0 ; j < ${#PAYLOAD[@]} ; j++ )) do
25	printf "%*s" 12 "${PAYLOAD[j]}"
26done
27printf "\n"
28
29for (( i = 0 ; i < ${#MCS_IDX[@]} ; i++ )) do
30
31	# configure MCS
32	$SDRCTL_EXEC dev sdr0 set reg drv_tx 0 ${MCS_IDX[$i]} > /dev/null
33
34	printf "%sMbps\t" ${MCS_BPS[$i]}
35	for (( j = 0 ; j < ${#PAYLOAD[@]} ; j++ )) do
36
37		# Measure link performance
38		link_per_str=$(ping $CLIENT_IP -i $INTERVAL -c $PKT_CNT -w $DEADLINE -s ${PAYLOAD[$j]} -nq | while read line; do
39
40			# Skip non packet-loss and non rtt responses
41			[[ ! "$line" =~ "packet loss" ]] && [[ ! "$line" =~ "rtt" ]] && continue
42
43			# Extract packet loss
44			if [[ "$line" =~ "packet loss" ]]; then
45				PL=$(echo $line | grep 'packet loss' | cut -d' ' -f6)
46				if [[ $PL == "100%" ]]; then
47					printf "%s,INF" $PL
48				else
49					printf "%s," $PL
50				fi
51			# Extract rtt
52			else
53				RTT=$(echo $line | grep rtt | cut -d/ -f5)
54				printf "%s" $RTT
55			fi
56
57		done)
58		printf "%*s" 12 $link_per_str
59	done
60	printf "\n"
61done
62
63