Skip to content

Commit 51b78b5

Browse files
nazariigjleveque
authored andcommitted
[mellanox]: Enhance pmon synchronization with hw-mgmt platform counters. (#3885)
Signed-off-by: Nazarii Hnydyn <[email protected]>
1 parent 7ae3712 commit 51b78b5

1 file changed

Lines changed: 39 additions & 10 deletions

File tree

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,52 @@
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+
314
declare -r EXIT_SUCCESS="0"
415
declare -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
3361
EXIT_CODE="$?"
3462
if [[ "${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}"
3765
fi
3866

39-
echo "QSFP I2C interface is ready: mlxsw_minimal has finished initialization"
67+
log_info "SFP interfaces are ready"
68+
4069
exit "${EXIT_SUCCESS}"

0 commit comments

Comments
 (0)