--- /dev/null
+#!/bin/sh
+
+# ----- Initialize CAN devices -----
+. caninit.sh
+
+
+# ----- Configure ftrace -----
+mount -t debugfs nodev /sys/kernel/debug/
+FTRDIR=/sys/kernel/debug/tracing
+sysctl kernel.ftrace_enabled=1
+echo "function_graph" > ${FTRDIR}/current_tracer
+sleep 1
+echo "can_send" > ${FTRDIR}/set_ftrace_filter
+echo 1 > ${FTRDIR}/tracing_on
+
+
+# ----- Run benchmarks -----
+DESTDIR=ftrace
+GAP=0
+COUNT=5000
+DATA=i
+LENGTH=8
+FRMTYPE=""
+
+echo "Benchmarking ..."
+
+for X in "sff" "eff";
+do
+ if [ ${X} == "eff" ]; then
+ FRMTYPE="-e"
+ else
+ FRMTYPE=""
+ fi
+
+ # Default (pfifo qdisc)
+ echo "[pfifo]"
+ . setcanprio.sh del
+ echo > ${FTRDIR}/trace
+ cangen ${FRMTYPE} can0 -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_pfifo1.txt
+
+ echo > ${FTRDIR}/trace
+ cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_pfifo2.txt
+
+
+ # With PRIO qdisc; all traffic is classified into first class
+ echo "[prio]"
+ echo > ${FTRDIR}/trace
+ . setcanprio.sh del
+ . setcanprio.sh prio
+ cangen ${FRMTYPE} can0 -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_prio1.txt
+
+ # With PRIO qdisc; most of the traffic goes to "default" class
+ echo > ${FTRDIR}/trace
+ cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_prio1b.txt
+
+
+ # With PRIO qdisc; There is maximum rules for each (except the last) class
+ echo "[prio2]"
+ echo > ${FTRDIR}/trace
+ . setcanprio.sh del
+
+ if [ ${X} == "eff" ]; then
+ . setcanprio.sh prio2eff
+ else
+ . setcanprio.sh prio2sff
+ fi
+
+ cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_prio2.txt
+
+
+ # With HTB qdisc
+ echo "[htb]"
+ echo > ${FTRDIR}/trace
+ . setcanprio.sh del
+ . setcanprio.sh htb
+ cangen ${FRMTYPE} can0 -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_htb1.txt
+
+ echo > ${FTRDIR}/trace
+ cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT}
+ cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_htb2.txt
+done
+
+
+# ----- Disable tracing -----
+echo 0 > ${FTRDIR}/tracing_on
+exit 0
+