diff --git a/files/scripts/syncd.sh b/files/scripts/syncd.sh index 8aacfe8f6c..827be1463f 100755 --- a/files/scripts/syncd.sh +++ b/files/scripts/syncd.sh @@ -2,6 +2,18 @@ . /usr/local/bin/syncd_common.sh +declare -r UNKN_MST="unknown" + +function GetMstDevice() { + local _MST_DEVICE="$(ls /dev/mst/*_pci_cr0 2>&1)" + + if [[ ! -c "${_MST_DEVICE}" ]]; then + echo "${UNKN_MST}" + else + echo "${_MST_DEVICE}" + fi +} + function startplatform() { # platform specific tasks @@ -23,6 +35,12 @@ function startplatform() { debug "Starting Firmware update procedure" /usr/bin/mst start --with_i2cdev + + local -r _MST_DEVICE="$(GetMstDevice)" + if [[ "${_MST_DEVICE}" != "${UNKN_MST}" ]]; then + /usr/bin/flint -d $_MST_DEVICE --clear_semaphore + fi + /usr/bin/mlnx-fw-upgrade.sh /etc/init.d/sxdkernel restart debug "Firmware update procedure ended"