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