image image image image image

On This Page

In order to flash the firmware on the device using ethtool, you need to prepare a .mfa2 firmware file using the mlxarchive tool - see mlxarchive – Binary Files Compression Tool. Note that mlxarchive requires installing MFT with --oem option.

To perform firmware upgrade using ethtool/devlink, follow the steps below:

  1. Run the mlxarchive tool to generate the .mfa2 file (the following example assumes MFA2 v1.1.1). 

    # mlxarchive -v 1.1.1 --bins-dir <source binaries directory> --out-file /lib/firmware/<file_name>.mfa2
  2. Obtain the interface name of the adapter for which you wish to update firmware. For example, you can use ifconfig -a.

    # ifconfig -a
    ...
    p5p1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether ec:0d:9a:48:af:2a  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    p5p2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether ec:0d:9a:48:af:2b  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    ...
  3. Burn the firmware using the .mfa2 image with ethtool/devlink. Please use the .mfa2 file path relative to /lib/firmware.
    ethtool command:

    # ethtool -f <interface name> <file_name>.mfa2

    devlink command:

    $ devlink dev flash <dev> file <file_name>.mfa2
  4. Query the adapter to verify that the new firmware version has been loaded following.

    # mst start
    # mst status -v
    MST modules:
    ------------
        MST PCI module loaded
        MST PCI configuration module loaded
    PCI devices:
    ------------
    DEVICE_TYPE             MST                           PCI       RDMA            NET                       NUMA
    ConnectX5(rev:0)        /dev/mst/mt4119_pciconf0.1    05:00.1   mlx5_3          net-p5p2                  0
    ConnectX5(rev:0)        /dev/mst/mt4119_pciconf0      05:00.0   mlx5_2          net-p5p1                  0
    ...
    #
    
    # flint -d /dev/mst/mt4119_pciconf0 q
    Image type:            FS4FW Version: 16.25.1042 FW Version(Running): 16.25.1020 FW Release Date: 30.4.2019 Product Version: 16.25.1020 Rom Info: type=UEFI version=14.18.19 cpu=AMD64 type=PXE version=3.5.701 cpu=AMD64 Description: UID GuidsNumber Base GUID: ec0d9a030048af2a 4 Base MAC: ec0d9a48af2a 4 Image VSD: N/A Device VSD: N/A PSID: MT_0000000080 Security Attributes: N/A 
  5. For the firmware update to take effect, you need to either reboot the server or run:

    # mlxfwreset -d /dev/mst/mt4119_pciconf0 -y r
  6. Validate the firmware update by a query.
    Using mst:

    # mst start
    
    # flint -d /dev/mst/mt4119_pciconf0 q
    Image type:            FS4
    FW Version:            16.25.1042
    FW Release Date:       15.5.2019
    Product Version:       16.25.1042
    Rom Info:              type=UEFI version=14.18.19 cpu=AMD64
                           type=PXE version=3.5.701 cpu=AMD64
    Description:           UID                GuidsNumber
    Base GUID:             ec0d9a030048af2a        4
    Base MAC:              ec0d9a48af2a            4
    Image VSD:             N/A
    Device VSD:            N/A
    PSID:                  MT_0000000080
    Security Attributes:   N/A
    #
    

    Using devlink:

    $ devlink dev info <dev>
    pci/0000:05:00.0:
      driver mlx5_core
      versions:
          fixed: fw.psid MT_0000000080
          running: fw.version 16.23.1000
          stored: fw.version 16.25.1042