From cd0e7599429b5f6b4228bca037ff907bde512b9e Mon Sep 17 00:00:00 2001 From: Roman Azarenko <roman.azarenko@iopsys.eu> Date: Fri, 21 Jan 2022 17:04:22 +0100 Subject: [PATCH] brcm63xx-arm: fix media type setting with autoneg disabled in /lib/network/port.sh (IOP-6415) Commit 7d1285b6d4ac484c773132b24ab383af2a1ededf introduced an issue with setting media type for a particular port when autonegotiation is disabled. In this case $subport ends up being undefined, resulting in an error in ethctl, which leads to the appropriate media type not being set. This change is designed to fix the above. Additionally cleaned up the conditionals a bit, so that media type is only determined once and then reused regardless of whether "oncrossbar" is set or not. Related to IOP-6415 Related to IOP-5001 --- .../base-files/lib/network/port.sh | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/iopsys-brcm63xx-arm/base-files/lib/network/port.sh b/iopsys-brcm63xx-arm/base-files/lib/network/port.sh index d531d7b83..0ce40a448 100644 --- a/iopsys-brcm63xx-arm/base-files/lib/network/port.sh +++ b/iopsys-brcm63xx-arm/base-files/lib/network/port.sh @@ -43,7 +43,7 @@ set_port_settings() { local autoneg=$5 local eee=$6 local pause=$7 - local crossbarports + local crossbarports media_type [ -d /sys/class/net/$ifname ] || return @@ -56,22 +56,20 @@ set_port_settings() { [ "$duplex" == 0 ] && dplx="HD" || dplx="FD" crossbar="$(echo `ethctl $ifname phy-crossbar` | awk -F' ' '{ print $2 $3 }')" + if [ "$autoneg" = "on" ]; then + media_type="auto" + else + media_type="$speed$dplx" + fi + if [ "$crossbar" == "oncrossbar" ]; then crossbarports="$(echo `ethctl $ifname phy-crossbar` | awk -F':' '{ print $NF }')" - if [ "$autoneg" == "on" ]; then - for subport in $crossbarports; do - ethctl $ifname media-type auto port $subport &>/dev/null - done - else - ethctl $ifname media-type $speed$dplx port $subport &>/dev/null - fi + for subport in $crossbarports; do + ethctl $ifname media-type $media_type port $subport &>/dev/null + done else - if [ "$autoneg" == "on" ]; then - ethctl $ifname media-type auto &>/dev/null - else - ethctl $ifname media-type $speed$dplx &>/dev/null - fi + ethctl $ifname media-type $media_type &>/dev/null fi [ $eee -eq 1 ] && eee="on" || eee="off" -- GitLab