d0c8e2d127
This simplifies FW upgrade procedure and allows to specify required version only in one place (fw recipe).
48 lines
1.1 KiB
Bash
Executable File
48 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
query_retry_count_max="10"
|
|
fw_file=/etc/mlnx/fw-SPC.mfa
|
|
|
|
run_or_fail() {
|
|
$1
|
|
if [[ $? != 0 ]]; then
|
|
echo $1 failed
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# wait until devices will be available
|
|
query_retry_count="0"
|
|
query_cmd="mlxfwmanager --query -i ${fw_file}"
|
|
${query_cmd} > /dev/null
|
|
|
|
while [[ (${query_retry_count} -lt ${query_retry_count_max}) && ($? -ne "0") ]]; do
|
|
sleep 1
|
|
query_retry_count=$[${query_retry_count}+1]
|
|
${query_cmd} > /dev/null
|
|
done
|
|
|
|
run_or_fail "${query_cmd}" > /tmp/mlnxfwmanager-query.txt
|
|
|
|
# get current firmware version and required version
|
|
fw_info=$(grep FW /tmp/mlnxfwmanager-query.txt)
|
|
fw_current=$(echo $fw_info | cut -f2 -d' ')
|
|
fw_required=$(echo $fw_info | cut -f3 -d' ')
|
|
|
|
if [[ -z ${fw_current} ]]; then
|
|
echo "Could not retreive current FW version."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z ${fw_required} ]]; then
|
|
echo "Could not retreive required FW version."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ${fw_current} == ${fw_required} ]]; then
|
|
echo "Mellanox firmware is up to date."
|
|
else
|
|
echo "Mellanox firmware required version is ${fw_required}. Installing compatible version..."
|
|
run_or_fail "mlxfwmanager -i ${fw_file} -u -f -y"
|
|
fi
|