1
1
#! /bin/bash
2
2
3
3
query_retry_count_max=" 10"
4
- required_fw_version=" 13.1224.0140"
5
4
fw_file=/etc/mlnx/fw-SPC.mfa
6
5
7
6
run_or_fail () {
@@ -14,37 +13,35 @@ run_or_fail() {
14
13
15
14
# wait until devices will be available
16
15
query_retry_count=" 0"
17
- mlxfwmanager --query > /dev/null
16
+ query_cmd=" mlxfwmanager --query -i ${fw_file} "
17
+ ${query_cmd} > /dev/null
18
18
19
19
while [[ (${query_retry_count} -lt ${query_retry_count_max} ) && ($? -ne " 0" ) ]]; do
20
20
sleep 1
21
21
query_retry_count=$[${query_retry_count} +1]
22
- mlxfwmanager --query > /dev/null
22
+ ${query_cmd} > /dev/null
23
23
done
24
24
25
- run_or_fail " mlxfwmanager --query " > /tmp/mlnxfwmanager-query.txt
25
+ run_or_fail " ${query_cmd} " > /tmp/mlnxfwmanager-query.txt
26
26
27
- # get current firmware version
28
- found_fw=false
29
- for word in ` cat /tmp/mlnxfwmanager-query.txt`
30
- do
31
- if [[ ${found_fw} == true ]]; then
32
- fw_version=${word}
33
- break
34
- fi
35
- if [[ ${word} == FW ]]; then
36
- found_fw=true
37
- fi
38
- done
27
+ # get current firmware version and required version
28
+ fw_info=$( grep FW /tmp/mlnxfwmanager-query.txt)
29
+ fw_current=$( echo $fw_info | cut -f2 -d' ' )
30
+ fw_required=$( echo $fw_info | cut -f3 -d' ' )
39
31
40
- if [[ -z ${fw_version } ]]; then
32
+ if [[ -z ${fw_current } ]]; then
41
33
echo " Could not retreive current FW version."
42
34
exit 1
43
35
fi
44
36
45
- if [[ ${required_fw_version} == ${fw_version} ]]; then
37
+ if [[ -z ${fw_required} ]]; then
38
+ echo " Could not retreive required FW version."
39
+ exit 1
40
+ fi
41
+
42
+ if [[ ${fw_current} == ${fw_required} ]]; then
46
43
echo " Mellanox firmware is up to date."
47
44
else
48
- echo " Mellanox firmware required version is ${required_fw_version } . Installing compatible version..."
45
+ echo " Mellanox firmware required version is ${fw_required } . Installing compatible version..."
49
46
run_or_fail " mlxfwmanager -i ${fw_file} -u -f -y"
50
47
fi
0 commit comments