sonic-buildimage/platform/broadcom/docker-syncd-brcm/start_led.sh
Samuel Angebault 2284dd7a3c [led]: Skip ledinit if there is no led_proc_init.soc file for broadcom platform (#5483)
Some platforms don't leverage the brcm led coprocessor.
However ledinit will try to load a non existing file and exit with an
error code.
This change is a cosmetic fix mostly.

- How to verify it

Boot a platform without the configuration and verify in the syslog that the exit status of ledinit is 0
Boot a platform with the configuration and verify in the syslog that the exit status of ledinit is 0 and the leds are working.
Verified by adding a dumb led_proc_init.soc on an Arista platform which usually doesn't use it.
2020-11-09 12:38:11 -08:00

44 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
PLATFORM_DIR=/usr/share/sonic/platform
SYNCD_SOCKET_FILE=/var/run/sswsyncd/sswsyncd.socket
LED_PROC_INIT_SOC=${PLATFORM_DIR}/led_proc_init.soc
if [ ! -f "$LED_PROC_INIT_SOC" ]; then
echo "No soc led configuration found under $LED_SOC_INIT_SOC"
exit 0
fi
# Function: wait until syncd has created the socket for bcmcmd to connect to
wait_syncd() {
while true; do
if [ -e ${SYNCD_SOCKET_FILE} ]; then
break
fi
sleep 1
done
# wait until bcm sdk is ready to get a request
counter=0
while true; do
/usr/bin/bcmcmd -t 1 "show unit" | grep BCM >/dev/null 2>&1
rv=$?
if [ $rv -eq 0 ]; then
break
fi
counter=$((counter+1))
if [ $counter -ge 60 ]; then
echo "syncd is not ready to take commands after $counter re-tries; Exiting!"
break
fi
sleep 1
done
}
# If this platform has an initialization file for the Broadcom LED microprocessor, load it
if [[ -r "$LED_PROC_INIT_SOC" && ! -f /var/warmboot/warm-starting ]]; then
wait_syncd
fi
/usr/bin/bcmcmd -t 60 "rcload $LED_PROC_INIT_SOC"