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