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