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} 63