mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-21 06:50:25 +00:00

To check how many routes are installed in hardware, the test runs "ip route" and greps for "offload", which includes routes with state "offload_failed". Till now, this wrong check was not found because after one failure in route insertion, the driver moved to "abort" mode, which means that user cannot try to add more routes. The previous patch removed the abort mechanism and now failed routes are counted as offloaded. Fix this by not considering routes with "offload_failed" flag as offloaded. Signed-off-by: Amit Cohen <amcohen@nvidia.com> Signed-off-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
142 lines
2.1 KiB
Bash
142 lines
2.1 KiB
Bash
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
ROUTER_NUM_NETIFS=4
|
|
: ${TIMEOUT:=20000} # ms
|
|
|
|
router_h1_create()
|
|
{
|
|
simple_if_init $h1 192.0.1.1/24
|
|
}
|
|
|
|
router_h1_destroy()
|
|
{
|
|
simple_if_fini $h1 192.0.1.1/24
|
|
}
|
|
|
|
router_h2_create()
|
|
{
|
|
simple_if_init $h2 192.0.2.1/24
|
|
tc qdisc add dev $h2 handle ffff: ingress
|
|
}
|
|
|
|
router_h2_destroy()
|
|
{
|
|
tc qdisc del dev $h2 handle ffff: ingress
|
|
simple_if_fini $h2 192.0.2.1/24
|
|
}
|
|
|
|
router_create()
|
|
{
|
|
ip link set dev $rp1 up
|
|
ip link set dev $rp2 up
|
|
|
|
ip address add 192.0.1.2/24 dev $rp1
|
|
ip address add 192.0.2.2/24 dev $rp2
|
|
}
|
|
|
|
router_destroy()
|
|
{
|
|
ip address del 192.0.2.2/24 dev $rp2
|
|
ip address del 192.0.1.2/24 dev $rp1
|
|
|
|
ip link set dev $rp2 down
|
|
ip link set dev $rp1 down
|
|
}
|
|
|
|
router_setup_prepare()
|
|
{
|
|
h1=${NETIFS[p1]}
|
|
rp1=${NETIFS[p2]}
|
|
|
|
rp2=${NETIFS[p3]}
|
|
h2=${NETIFS[p4]}
|
|
|
|
h1mac=$(mac_get $h1)
|
|
rp1mac=$(mac_get $rp1)
|
|
|
|
vrf_prepare
|
|
|
|
router_h1_create
|
|
router_h2_create
|
|
|
|
router_create
|
|
}
|
|
|
|
wait_for_routes()
|
|
{
|
|
local t0=$1; shift
|
|
local route_count=$1; shift
|
|
|
|
local t1=$(ip route | grep 'offload' | grep -v 'offload_failed' | wc -l)
|
|
local delta=$((t1 - t0))
|
|
echo $delta
|
|
[[ $delta -ge $route_count ]]
|
|
}
|
|
|
|
router_routes_create()
|
|
{
|
|
local route_count=$1
|
|
local count=0
|
|
|
|
ROUTE_FILE="$(mktemp)"
|
|
|
|
for i in {0..255}
|
|
do
|
|
for j in {0..255}
|
|
do
|
|
for k in {0..255}
|
|
do
|
|
if [[ $count -eq $route_count ]]; then
|
|
break 3
|
|
fi
|
|
|
|
echo route add 193.${i}.${j}.${k}/32 dev $rp2 \
|
|
>> $ROUTE_FILE
|
|
((count++))
|
|
done
|
|
done
|
|
done
|
|
|
|
ip -b $ROUTE_FILE &> /dev/null
|
|
}
|
|
|
|
router_routes_destroy()
|
|
{
|
|
if [[ -v ROUTE_FILE ]]; then
|
|
rm -f $ROUTE_FILE
|
|
fi
|
|
}
|
|
|
|
router_test()
|
|
{
|
|
local route_count=$1
|
|
local should_fail=$2
|
|
local delta
|
|
|
|
RET=0
|
|
|
|
local t0=$(ip route | grep -o 'offload' | wc -l)
|
|
router_routes_create $route_count
|
|
delta=$(busywait "$TIMEOUT" wait_for_routes $t0 $route_count)
|
|
|
|
check_err_fail $should_fail $? "Offload routes: Expected $route_count, got $delta."
|
|
if [[ $RET -ne 0 ]] || [[ $should_fail -eq 1 ]]; then
|
|
return
|
|
fi
|
|
|
|
router_routes_destroy
|
|
}
|
|
|
|
router_cleanup()
|
|
{
|
|
pre_cleanup
|
|
|
|
router_routes_destroy
|
|
router_destroy
|
|
|
|
router_h2_destroy
|
|
router_h1_destroy
|
|
|
|
vrf_cleanup
|
|
}
|