Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4# Test for physical ports resource. The test splits each splittable port
5# to its width and checks that eventually the number of physical ports equals
6# the maximum number of physical ports.
7
8PORT_NUM_NETIFS=0
9
10declare -a unsplit
11
12port_setup_prepare()
13{
14 :
15}
16
17port_cleanup()
18{
19 pre_cleanup
20
21 for port in "${unsplit[@]}"; do
22 devlink port unsplit $port
23 check_err $? "Did not unsplit $netdev"
24 done
25 unsplit=()
26}
27
28split_all_ports()
29{
30 local should_fail=$1; shift
31
32 # Loop over the splittable netdevs and create tuples of netdev along
33 # with its width. For example:
34 # '$netdev1 $count1 $netdev2 $count2...', when:
35 # $netdev1-2 are splittable netdevs in the device, and
36 # $count1-2 are the netdevs width respectively.
37 while read netdev count <<<$(
38 devlink -j port show |
39 jq -r '.[][] | select(.splittable==true) | "\(.netdev) \(.lanes)"'
40 )
41 [[ ! -z $netdev ]]
42 do
43 devlink port split $netdev count $count
44 check_err $? "Did not split $netdev into $count"
45 unsplit+=( "${netdev}s0" )
46 done
47}
48
49port_test()
50{
51 local max_ports=$1; shift
52 local should_fail=$1; shift
53
54 split_all_ports $should_fail
55
56 occ=$(devlink -j resource show $DEVLINK_DEV \
57 | jq '.[][][] | select(.name=="physical_ports") |.["occ"]')
58
59 [[ $occ -eq $max_ports ]]
60 check_err_fail $should_fail $? "Attempt to create $max_ports ports (actual result $occ)"
61
62}