mirror of
https://github.com/open-sdr/openwifi.git
synced 2024-12-23 15:32:41 +00:00
60 lines
1.5 KiB
Bash
60 lines
1.5 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
PL_MIN=100
|
||
|
PL_INC=100
|
||
|
PL_MAX=1500
|
||
|
PAYLOAD=( $(seq -s' ' $PL_MIN $PL_INC $PL_MAX) ) # paload size in bytes
|
||
|
MCS_BPS=( 6 9 12 18 24 36 48 54 )
|
||
|
MCS_IDX=( 4 5 6 7 8 9 10 11 )
|
||
|
|
||
|
INTERVAL=0.001 # Wait interval seconds between sending each packet
|
||
|
PKT_CNT=700 # Stop after sending count ECHO_REQUEST packets
|
||
|
DEADLINE=1 # Specify a timeout, in seconds, before ping exits regardless of how many packets have been sent or received
|
||
|
|
||
|
SDRCTL_EXEC="./sdrctl_src/sdrctl"
|
||
|
CLIENT_IP="192.168.13.2"
|
||
|
|
||
|
# Bandwidth = 1.4 MHz
|
||
|
printf "LINK PERFORMANCE TEST\n"
|
||
|
printf "=====================\n"
|
||
|
printf "RATE/PL\t"
|
||
|
for (( j = 0 ; j < ${#PAYLOAD[@]} ; j++ )) do
|
||
|
printf "%*s" 12 "${PAYLOAD[j]}"
|
||
|
done
|
||
|
printf "\n"
|
||
|
|
||
|
for (( i = 0 ; i < ${#MCS_IDX[@]} ; i++ )) do
|
||
|
|
||
|
# configure MCS
|
||
|
$SDRCTL_EXEC dev sdr0 set reg drv_tx 0 ${MCS_IDX[$i]} > /dev/null
|
||
|
|
||
|
printf "%sMbps\t" ${MCS_BPS[$i]}
|
||
|
for (( j = 0 ; j < ${#PAYLOAD[@]} ; j++ )) do
|
||
|
|
||
|
# Measure link performance
|
||
|
link_per_str=$(ping $CLIENT_IP -i $INTERVAL -c $PKT_CNT -w $DEADLINE -s ${PAYLOAD[$j]} -nq | while read line; do
|
||
|
|
||
|
# Skip non packet-loss and non rtt responses
|
||
|
[[ ! "$line" =~ "packet loss" ]] && [[ ! "$line" =~ "rtt" ]] && continue
|
||
|
|
||
|
# Extract packet loss
|
||
|
if [[ "$line" =~ "packet loss" ]]; then
|
||
|
PL=$(echo $line | grep 'packet loss' | cut -d' ' -f6)
|
||
|
if [[ $PL == "100%" ]]; then
|
||
|
printf "%s,INF" $PL
|
||
|
else
|
||
|
printf "%s," $PL
|
||
|
fi
|
||
|
# Extract rtt
|
||
|
else
|
||
|
RTT=$(echo $line | grep rtt | cut -d/ -f5)
|
||
|
printf "%s" $RTT
|
||
|
fi
|
||
|
|
||
|
done)
|
||
|
printf "%*s" 12 $link_per_str
|
||
|
done
|
||
|
printf "\n"
|
||
|
done
|
||
|
|