12a1e0746SXianjun Jiao#!/bin/bash 22a1e0746SXianjun Jiao 3*f5ad45c8SJiao Xianjun# Author: Michael Mehari 4*f5ad45c8SJiao Xianjun# SPDX-FileCopyrightText: 2019 UGent 5a6085186SLina Ceballos# SPDX-License-Identifier: AGPL-3.0-or-later 6a6085186SLina Ceballos 72a1e0746SXianjun JiaoPL_MIN=100 82a1e0746SXianjun JiaoPL_INC=100 92a1e0746SXianjun JiaoPL_MAX=1500 102a1e0746SXianjun JiaoPAYLOAD=( $(seq -s' ' $PL_MIN $PL_INC $PL_MAX) ) # paload size in bytes 112a1e0746SXianjun JiaoMCS_BPS=( 6 9 12 18 24 36 48 54 ) 122a1e0746SXianjun JiaoMCS_IDX=( 4 5 6 7 8 9 10 11 ) 132a1e0746SXianjun Jiao 142a1e0746SXianjun JiaoINTERVAL=0.001 # Wait interval seconds between sending each packet 152a1e0746SXianjun JiaoPKT_CNT=700 # Stop after sending count ECHO_REQUEST packets 162a1e0746SXianjun JiaoDEADLINE=1 # Specify a timeout, in seconds, before ping exits regardless of how many packets have been sent or received 172a1e0746SXianjun Jiao 182a1e0746SXianjun JiaoSDRCTL_EXEC="./sdrctl_src/sdrctl" 192a1e0746SXianjun JiaoCLIENT_IP="192.168.13.2" 202a1e0746SXianjun Jiao 212a1e0746SXianjun Jiao# Bandwidth = 1.4 MHz 222a1e0746SXianjun Jiaoprintf "LINK PERFORMANCE TEST\n" 232a1e0746SXianjun Jiaoprintf "=====================\n" 242a1e0746SXianjun Jiaoprintf "RATE/PL\t" 252a1e0746SXianjun Jiaofor (( j = 0 ; j < ${#PAYLOAD[@]} ; j++ )) do 262a1e0746SXianjun Jiao printf "%*s" 12 "${PAYLOAD[j]}" 272a1e0746SXianjun Jiaodone 282a1e0746SXianjun Jiaoprintf "\n" 292a1e0746SXianjun Jiao 302a1e0746SXianjun Jiaofor (( i = 0 ; i < ${#MCS_IDX[@]} ; i++ )) do 312a1e0746SXianjun Jiao 322a1e0746SXianjun Jiao # configure MCS 332a1e0746SXianjun Jiao $SDRCTL_EXEC dev sdr0 set reg drv_tx 0 ${MCS_IDX[$i]} > /dev/null 342a1e0746SXianjun Jiao 352a1e0746SXianjun Jiao printf "%sMbps\t" ${MCS_BPS[$i]} 362a1e0746SXianjun Jiao for (( j = 0 ; j < ${#PAYLOAD[@]} ; j++ )) do 372a1e0746SXianjun Jiao 382a1e0746SXianjun Jiao # Measure link performance 392a1e0746SXianjun Jiao link_per_str=$(ping $CLIENT_IP -i $INTERVAL -c $PKT_CNT -w $DEADLINE -s ${PAYLOAD[$j]} -nq | while read line; do 402a1e0746SXianjun Jiao 412a1e0746SXianjun Jiao # Skip non packet-loss and non rtt responses 422a1e0746SXianjun Jiao [[ ! "$line" =~ "packet loss" ]] && [[ ! "$line" =~ "rtt" ]] && continue 432a1e0746SXianjun Jiao 442a1e0746SXianjun Jiao # Extract packet loss 452a1e0746SXianjun Jiao if [[ "$line" =~ "packet loss" ]]; then 462a1e0746SXianjun Jiao PL=$(echo $line | grep 'packet loss' | cut -d' ' -f6) 472a1e0746SXianjun Jiao if [[ $PL == "100%" ]]; then 482a1e0746SXianjun Jiao printf "%s,INF" $PL 492a1e0746SXianjun Jiao else 502a1e0746SXianjun Jiao printf "%s," $PL 512a1e0746SXianjun Jiao fi 522a1e0746SXianjun Jiao # Extract rtt 532a1e0746SXianjun Jiao else 542a1e0746SXianjun Jiao RTT=$(echo $line | grep rtt | cut -d/ -f5) 552a1e0746SXianjun Jiao printf "%s" $RTT 562a1e0746SXianjun Jiao fi 572a1e0746SXianjun Jiao 582a1e0746SXianjun Jiao done) 592a1e0746SXianjun Jiao printf "%*s" 12 $link_per_str 602a1e0746SXianjun Jiao done 612a1e0746SXianjun Jiao printf "\n" 622a1e0746SXianjun Jiaodone 632a1e0746SXianjun Jiao 64