63 lines
1.4 KiB
Bash
63 lines
1.4 KiB
Bash
|
#!/bin/bash
|
||
|
# SPDX-License-Identifier: GPL-2.0
|
||
|
|
||
|
# Test for physical ports resource. The test splits each splittable port
|
||
|
# to its width and checks that eventually the number of physical ports equals
|
||
|
# the maximum number of physical ports.
|
||
|
|
||
|
PORT_NUM_NETIFS=0
|
||
|
|
||
|
declare -a unsplit
|
||
|
|
||
|
port_setup_prepare()
|
||
|
{
|
||
|
:
|
||
|
}
|
||
|
|
||
|
port_cleanup()
|
||
|
{
|
||
|
pre_cleanup
|
||
|
|
||
|
for port in "${unsplit[@]}"; do
|
||
|
devlink port unsplit $port
|
||
|
check_err $? "Did not unsplit $netdev"
|
||
|
done
|
||
|
unsplit=()
|
||
|
}
|
||
|
|
||
|
split_all_ports()
|
||
|
{
|
||
|
local should_fail=$1; shift
|
||
|
|
||
|
# Loop over the splittable netdevs and create tuples of netdev along
|
||
|
# with its width. For example:
|
||
|
# '$netdev1 $count1 $netdev2 $count2...', when:
|
||
|
# $netdev1-2 are splittable netdevs in the device, and
|
||
|
# $count1-2 are the netdevs width respectively.
|
||
|
while read netdev count <<<$(
|
||
|
devlink -j port show |
|
||
|
jq -r '.[][] | select(.splittable==true) | "\(.netdev) \(.lanes)"'
|
||
|
)
|
||
|
[[ ! -z $netdev ]]
|
||
|
do
|
||
|
devlink port split $netdev count $count
|
||
|
check_err $? "Did not split $netdev into $count"
|
||
|
unsplit+=( "${netdev}s0" )
|
||
|
done
|
||
|
}
|
||
|
|
||
|
port_test()
|
||
|
{
|
||
|
local max_ports=$1; shift
|
||
|
local should_fail=$1; shift
|
||
|
|
||
|
split_all_ports $should_fail
|
||
|
|
||
|
occ=$(devlink -j resource show $DEVLINK_DEV \
|
||
|
| jq '.[][][] | select(.name=="physical_ports") |.["occ"]')
|
||
|
|
||
|
[[ $occ -eq $max_ports ]]
|
||
|
check_err_fail $should_fail $? "Attempt to create $max_ports ports (actual result $occ)"
|
||
|
|
||
|
}
|