#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Verify that FQ has a packet limit per band:
#
# 1. set the limit to 10 per band
# 2. send 20 pkts on band A: verify that 10 are queued, 10 dropped
# 3. send 20 pkts on band A: verify that  0 are queued, 20 dropped
# 4. send 20 pkts on band B: verify that 10 are queued, 10 dropped
#
# Send packets with a 100ms delay to ensure that previously sent
# packets are still queued when later ones are sent.
# Use SO_TXTIME for this.

die() {
	echo "$1"
	exit 1
}

# run inside private netns
if [[ $# -eq 0 ]]; then
	./in_netns.sh "$0" __subprocess
	exit
fi

ip link add type dummy
ip link set dev dummy0 up
ip -6 addr add fdaa::1/128 dev dummy0
ip -6 route add fdaa::/64 dev dummy0
tc qdisc replace dev dummy0 root handle 1: fq quantum 1514 initial_quantum 1514 limit 10

./cmsg_sender -6 -p u -d 100000 -n 20 fdaa::2 8000
OUT1="$(tc -s qdisc show dev dummy0 | grep '^\ Sent')"

./cmsg_sender -6 -p u -d 100000 -n 20 fdaa::2 8000
OUT2="$(tc -s qdisc show dev dummy0 | grep '^\ Sent')"

./cmsg_sender -6 -p u -d 100000 -n 20 -P 7 fdaa::2 8000
OUT3="$(tc -s qdisc show dev dummy0 | grep '^\ Sent')"

# Initial stats will report zero sent, as all packets are still
# queued in FQ. Sleep for the delay period (100ms) and see that
# twenty are now sent.
sleep 0.1
OUT4="$(tc -s qdisc show dev dummy0 | grep '^\ Sent')"

# Log the output after the test
echo "${OUT1}"
echo "${OUT2}"
echo "${OUT3}"
echo "${OUT4}"

# Test the output for expected values
echo "${OUT1}" | grep -q '0\ pkt\ (dropped\ 10'  || die "unexpected drop count at 1"
echo "${OUT2}" | grep -q '0\ pkt\ (dropped\ 30'  || die "unexpected drop count at 2"
echo "${OUT3}" | grep -q '0\ pkt\ (dropped\ 40'  || die "unexpected drop count at 3"
echo "${OUT4}" | grep -q '20\ pkt\ (dropped\ 40' || die "unexpected accept count at 4"
