#!/bin/bash

. lib.sh

main() {
    if [ "$kvers" = 3.0.4-rt14-00008-gb2052fd -a "$load" = eth ]; then echo "Skipping eth test"; SKIPPED=1; return; fi
    if [ "$kvers" = 3.4.33-rt47-00004-gc58c9ae -a "$load" = eth ]; then echo "Skipping eth test"; SKIPPED=1; return; fi;

    sshgw cangw -A -s can0 -d can1
    sshgw 'if pid=`pidof irq/145-can0`; then chrt -p -f 99 $pid; fi'
    sshgw 'if pid=`pidof irq/146-can1`; then chrt -p -f 99 $pid; fi'

    # Unfortunately, we must also increase FEC (Ethernet) IRQ priority
    # to be above softirq. Otherwise the system crashes with eth load.
    sshgw 'if pid=`pidof irq/192-mpc52xx`; then chrt -p -f 99 $pid; fi'
    sshgw 'if pid=`pidof irq/193-mpc52xx`; then chrt -p -f 99 $pid; fi'

    sshgw 'if pid=`pidof sirq-net-rx/0`; then chrt -p -f 98 $pid; fi'
    sshgw 'if pid=`pidof sirq-net-tx/0`; then chrt -p -f 98 $pid; fi'
    latester -d can0 -d can1 -d can2 -c $COUNT $(traffic_and_length 2) -n len2
    latester -d can0 -d can1 -d can2 -c $COUNT $(traffic_and_length 4) -n len4
    latester -d can0 -d can1 -d can2 -c $COUNT $(traffic_and_length 6) -n len6
    latester -d can0 -d can1 -d can2 -c $COUNT $(traffic_and_length 8) -n len8
}

ADDITIONAL_PLOTS=detail

plot_cmds() {
    if [[ "$1" = detail ]]; then
	range=0.0:0.3
	echo "set logscale y"
    else
	range=0.01:100
	echo "set logscale xy"
    fi
    cat <<EOF
set title "Single GW rule for all messages, no modifications, high (soft)irq task priority"
set grid xtics mxtics ytics mytics lw 1, lw 0.5
set xlabel "GW latency [ms]"
set ylabel "Latency profile [frames]"
plot [$range] [1:$COUNT] \\
          "len2-hist.txt" with lp lt 1 title "2 byte messages", \\
          "len4-hist.txt" with lp lt 2 title "4 byte messages", \\
          "len6-hist.txt" with lp lt 3 title "6 byte messages", \\
          "len8-hist.txt" with lp lt 4 title "8 byte messages"
EOF
}
    
test_end