Firmware Programming
This section is intended for future firmware upgrades, and provides instructions for (1) installing firmware update tools (MFT), (2) downloading firmaware, and (3) updating adapter card firmware.
Download the current MFT from www.mellanox.com > Products > Software > InfiniBand (Learn More) Firmware Tools.
The tools package to download is "MFT_SW for FreeBSD" (tarball name is mft- X.X.X.tgz).Extract the tarball and run the installation script.
Retrieve the device's PCI slot (i.e. pci0:x:0:0). Run:
#> mst status
Verify your card's PSID.
#> flint -d pci0:<x>:
0
:0
qDownload the desired firmware from the website at: https://www.mellanox.com/support/firmware/firmware-downloads
Updating Firmware Using flint
Before burning a new firmware, make sure the modules are unloaded. To unload the modules, run:
#> kldunload mlx5en #> kldunload mlx5ib #> kldunload mlx5 #> kldstat | grep mlx5
Unzip the firmware binary file.
Burn the firmware on your server:
$flint -d pci0:<x>:
0
:0
-i <img.bin> bReboot the server.
Updating Firmware Using mlx5tool
Please note that mlx5tool can only use images of MFA2 format.
Upload the MFA2 firmware file to the device.
mlx5tool -d domain:bus:slot:func -f file.mfa2
Perform a link-level firmware reset for the firmware update to take effect.
mlx5tool -d domain:bus:slot:func -z
where:
Argument |
Description |
-f |
Flashes the firmware image file.mfa2 to the specified adapter. Image must be in MFA2 format and must contain a component suitable for the adapter hardware |
-z |
Initiate firmware reset |
Updating Firmware Using Kernel Module
Create a Makefile in sys/modules/mlx5mfa/Makefile directory structure as follows:
$ cat sys/modules/mlx5mfa/Makefile # $FreeBSD$ KMOD= mlx5fw_mfa FIRMWS= mlx5fw.mfa2:${KMOD} .include <bsd.kmod.mk>
Place the MFA2 file in the same directory.
Build and install the Kernel module.
Enable auto-firmware update.
kenv hw.mlx5.auto_fw_update=
1
NoteMake sure to disable auto firmware update before rebooting/resetting the firmware.
If you have a VPI HCA, you will need to set the ports to ETH. This is done by using the mlxconfig tool (part of the MFT).
If you have a card with two ports, run:
#> mlxconfig -d pci0:<x>:
0
:0
set LINK_TYPE_P1=2
(For the first port) #> mlxconfig -d pci0:<x>:0
:0
set LINK_TYPE_P2=2
(For the second port)Reboot the server.