11#! /bin/bash
22
3+ declare -r SYSLOG_LOGGER=" /usr/bin/logger"
4+ declare -r SYSLOG_IDENTIFIER=" platform_wait"
5+ declare -r SYSLOG_ERROR=" error"
6+ declare -r SYSLOG_NOTICE=" notice"
7+ declare -r SYSLOG_INFO=" info"
8+
9+ declare -r HW_MGMT_CONFIG=" /var/run/hw-management/config"
10+
11+ declare -r MODULE_COUNTER=" ${HW_MGMT_CONFIG} /module_counter"
12+ declare -r SFP_COUNTER=" ${HW_MGMT_CONFIG} /sfp_counter"
13+
314declare -r EXIT_SUCCESS=" 0"
415declare -r EXIT_TIMEOUT=" 1"
516
6- declare -r QSFP_PATH=" /var/run/hw-management/qsfp"
17+ function log_error() {
18+ eval " ${SYSLOG_LOGGER} -t ${SYSLOG_IDENTIFIER} -p ${SYSLOG_ERROR} $@ "
19+ }
720
8- function WaitForQsfpReady() {
9- local -r _QSFP_PATH=" ${1} "
21+ function log_notice() {
22+ eval " ${SYSLOG_LOGGER} -t ${SYSLOG_IDENTIFIER} -p ${SYSLOG_NOTICE} $@ "
23+ }
24+
25+ function log_info() {
26+ eval " ${SYSLOG_LOGGER} -t ${SYSLOG_IDENTIFIER} -p ${SYSLOG_INFO} $@ "
27+ }
28+
29+ function wait_for_sfp() {
30+ local -r _NUM_MATCH=" ^[0-9]+$"
31+ local -r _NUM_ZERO=" 0"
32+
33+ local _MODULE_CNT=" 0"
34+ local _SFP_CNT=" 0"
1035
1136 local -i _WDOG_CNT=" 1"
1237 local -ir _WDOG_MAX=" 300"
1338
1439 local -r _TIMEOUT=" 1s"
1540
1641 while [[ " ${_WDOG_CNT} " -le " ${_WDOG_MAX} " ]]; do
17- for _QSFP in ${_QSFP_PATH} /qsfp* ; do
18- if [[ -e " ${_QSFP} " ]]; then
42+ _MODULE_CNT=" $( cat ${MODULE_COUNTER} 2>&1 ) "
43+ _SFP_CNT=" $( cat ${SFP_COUNTER} 2>&1 ) "
44+
45+ if [[ " ${_MODULE_CNT} " =~ ${_NUM_MATCH} && " ${_SFP_CNT} " =~ ${_NUM_MATCH} ]]; then
46+ if [[ " ${_SFP_CNT} " -gt " ${_NUM_ZERO} " && " ${_MODULE_CNT} " -eq " ${_SFP_CNT} " ]]; then
1947 return " ${EXIT_SUCCESS} "
2048 fi
21- done
49+ fi
2250
2351 let " _WDOG_CNT++"
2452 sleep " ${_TIMEOUT} "
@@ -27,14 +55,15 @@ function WaitForQsfpReady() {
2755 return " ${EXIT_TIMEOUT} "
2856}
2957
30- echo " Wait for QSFP I2C interface is ready"
58+ log_info " Wait for SFP interfaces to be ready"
3159
32- WaitForQsfpReady " ${QSFP_PATH} "
60+ wait_for_sfp
3361EXIT_CODE=" $? "
3462if [[ " ${EXIT_CODE} " != " ${EXIT_SUCCESS} " ]]; then
35- echo " QSFP I2C interface is not ready: timeout"
63+ log_error " SFP interfaces are not ready: timeout"
3664 exit " ${EXIT_CODE} "
3765fi
3866
39- echo " QSFP I2C interface is ready: mlxsw_minimal has finished initialization"
67+ log_info " SFP interfaces are ready"
68+
4069exit " ${EXIT_SUCCESS} "
0 commit comments