最近为了升级机房服务器 买了一块Mellanox MCX354A-QCBT ConnectX-3网卡。默认的固件是InfiniBand的,所以在把它当成40G QSFP网卡用之前需要把它刷成同系列FCBT版本的固件。
- nVidia官网下载固件工具 mst https://network.nvidia.com/products/adapter-software/firmware-tools/
- 同样是官网下载固件 https://network.nvidia.com/support/firmware/connectx3ib/ 这里我选的是 MCX354A-FCBT的固件。注意这里的PSID 是 MT_1090120019 后面还会用到这串字符
安装固件下载工具后首先确定卡的device id,可以用 ls pci
也可以用 mst status
# 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
到这里整个刷卡过程就顺利完成了