刷新 Mellanox ConnectX-3 40G 网卡固件

最近为了升级机房服务器 买了一块Mellanox MCX354A-QCBT ConnectX-3网卡。默认的固件是InfiniBand的,所以在把它当成40G QSFP网卡用之前需要把它刷成同系列FCBT版本的固件。

2024 11/30 update: CX3必须使用 4.22版本 mst 因为4.26删除了对老卡的支持

  1. nVidia官网下载固件工具 mst https://network.nvidia.com/products/adapter-software/firmware-tools/
  2. 同样是官网下载固件 https://network.nvidia.com/support/firmware/connectx3ib/ 这里我选的是 MCX354A-FCBT的固件。注意这里的PSID 是 MT_1090120019 后面还会用到这串字符

安装固件下载工具后首先确定卡的device id,可以用 ls pci 也可以用 mst status. 如果看不到卡可以用  mst start --with_unknown

# mst status
MST modules:
------------
    MST PCI module is not loaded
    MST PCI configuration module is not loaded

PCI Devices:
------------

03:00.0

这里 03:00.0 就是device id

接下来先备份卡上的旧配置和固件以防万一

flint -d 03:00.0 query full > flint_query.txt
flint -d 03:00.0 hw query > flint_hwinfo.txt
flint -d 03:00.0 ri orig_firmware.mlx
flint -d 03:00.0 dc orig_firmware.ini
flint -d 03:00.0 rrom orig_rom.mlx
mlxburn -d 03:00.0 -vpd > orig_vpd.txt

备份过后可以刷新新卡的固件

$flint -d 03:00.0 -i fw-ConnectX3-rel-2_42_5000-MCX354A-FCB_A2-A5-FlexBoot-3.4.752.bin -allow_psid_change burn

注意这里我们要改变卡的PSID (即我们把一块QCBT的卡刷成FCBT)程序会问你 You are about to replace current PSID on flash - "MT_1090120018" with a different PSID - "MT_1090110019". 这里的 MT_1090120019 就是前面我们下载固件时候同样的PSID

刷卡的过程很快。刷完后记得还要把卡的link改成Ethernet

mlxconfig -d 03:00.0 set LINK_TYPE_P1=2 LINK_TYPE_P2=2

这里 2 就是指Ethernet, 1是InfiniBand。改完后可以用 mlxconfig -d 03:00.0 query 查看新的状态

# mlxconfig -d 03:00.0 query

Device #1:
----------

Device type:    ConnectX3
Device:         03:00.0

Configurations:                                      Next Boot
         SRIOV_EN                                    False(0)
         NUM_OF_VFS                                  8
         LINK_TYPE_P1                                ETH(2)
         LINK_TYPE_P2                                ETH(2)
         LOG_BAR_SIZE                                3
         BOOT_PKEY_P1                                0
         BOOT_PKEY_P2                                0
         BOOT_OPTION_ROM_EN_P1                       True(1)
         BOOT_VLAN_EN_P1                             False(0)
         BOOT_RETRY_CNT_P1                           0
         LEGACY_BOOT_PROTOCOL_P1                     PXE(1)
         BOOT_VLAN_P1                                1
         BOOT_OPTION_ROM_EN_P2                       True(1)
         BOOT_VLAN_EN_P2                             False(0)
         BOOT_RETRY_CNT_P2                           0
         LEGACY_BOOT_PROTOCOL_P2                     PXE(1)
         BOOT_VLAN_P2                                1
         IP_VER_P1                                   IPv4(0)
         IP_VER_P2                                   IPv4(0)
         CQ_TIMESTAMP                                True(1)

重启机器后 ip link 就能看到新的2个ethernet端口。同时 mst status -v 也可以告诉你新卡的端口

# mst status -v
MST modules:
------------
    MST PCI module is not loaded
    MST PCI configuration module is not loaded
PCI devices:
------------
DEVICE_TYPE             MST      PCI       RDMA            NET                       NUMA
ConnectX3(rev:1)        NA       03:00.0   mlx4_0          net-enp3s0d1,net-enp3s0   0

到这里整个刷卡过程就顺利完成了

Leave a Reply

Your email address will not be published. Required fields are marked *