Commit b9b72999 authored by Petr Machata's avatar Petr Machata Committed by David S. Miller

selftests: forwarding: ETS: Use Qdisc counters

Currently the SW-datapath ETS selftests use "ip link" stats to obtain the
number of packets that went through a given band. mlxsw then uses ethtool
per-priority counters.

Instead, change both to use qdiscs. In SW datapath this is the obvious
choice, and now that mlxsw offloads FIFO, this should work on the offloaded
datapath as well. This has the effect of verifying that the FIFO offload
works.
Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7bec1a45
......@@ -56,11 +56,19 @@ switch_destroy()
}
# Callback from sch_ets_tests.sh
get_stats()
collect_stats()
{
local band=$1; shift
local -a streams=("$@")
local stream
ethtool_stats_get "$h2" rx_octets_prio_$band
# Wait for qdisc counter update so that we don't get it mid-way through.
busywait_for_counter 1000 +1 \
qdisc_parent_stats_get $swp2 10:$((${streams[0]} + 1)) .bytes \
> /dev/null
for stream in ${streams[@]}; do
qdisc_parent_stats_get $swp2 10:$((stream + 1)) .bytes
done
}
bail_on_lldpad
......
......@@ -655,6 +655,16 @@ qdisc_stats_get()
| jq '.[] | select(.handle == "'"$handle"'") | '"$selector"
}
qdisc_parent_stats_get()
{
local dev=$1; shift
local parent=$1; shift
local selector=$1; shift
tc -j -s qdisc show dev "$dev" invisible \
| jq '.[] | select(.parent == "'"$parent"'") | '"$selector"
}
humanize()
{
local speed=$1; shift
......
......@@ -34,11 +34,14 @@ switch_destroy()
}
# Callback from sch_ets_tests.sh
get_stats()
collect_stats()
{
local stream=$1; shift
local -a streams=("$@")
local stream
link_stats_get $h2.1$stream rx bytes
for stream in ${streams[@]}; do
qdisc_parent_stats_get $swp2 10:$((stream + 1)) .bytes
done
}
ets_run
......@@ -2,7 +2,7 @@
# Global interface:
# $put -- port under test (e.g. $swp2)
# get_stats($band) -- A function to collect stats for band
# collect_stats($streams...) -- A function to get stats for individual streams
# ets_start_traffic($band) -- Start traffic for this band
# ets_change_qdisc($op, $dev, $nstrict, $quanta...) -- Add or change qdisc
......@@ -94,15 +94,11 @@ __ets_dwrr_test()
sleep 10
t0=($(for stream in ${streams[@]}; do
get_stats $stream
done))
t0=($(collect_stats "${streams[@]}"))
sleep 10
t1=($(for stream in ${streams[@]}; do
get_stats $stream
done))
t1=($(collect_stats "${streams[@]}"))
d=($(for ((i = 0; i < ${#streams[@]}; i++)); do
echo $((${t1[$i]} - ${t0[$i]}))
done))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment