Mal wieder etwas was dringend in einem Blog festgehalten werden muss. Meines Wissens kann man bei allen Mellanox ConnectX Karten ein sogenanntes Crossflashing durchführen. Mit diesem Crossflashing werden Funktionen und Geschwindigkeiten freigeschaltet, was eigentlich für die besagte Karte nicht vorgesehen war. Allerdings sind die Mellanox Karten zu 100% Baugleich, sodass dies kein Problem darstellt.

Hier in meinem Beispiel zeige ich euch wie man eine Mellanox ConnectX-3 CX354A PCIe (PN MCX354A-QCBT) in eine PN MCX354A-FCBT verwandelt. Der Unterschied sieht wie folgt aus.

MCX354A-QCBT = 10 Gbit Ethernet // 40 Gbit Infiniband
MCX354A-FCBT = 40 Gbit Ethernet // 56 Gbit Infiniband

Durch ein einfaches Flashen gewinnen wir hier ohne Ende Speed.

Bestseller Nr. 1
10Gtek® 10GbE PCIE Netzwerkkarte für Intel X520-DA1, 82599EN Chip, Single SFP+ Ports, 10Gbit PCI Express x8 LAN Adapter, 10Gb NIC für Windows Server/Linux/VMware
  • Equipped with high quality original Intel 82599EN controller which supports I/O virtualization and make the servers more stable.
  • Compatible with Windows Server 2003/ 2008/ 2012, Windows7/8/10/Visa, Linux, VMware ESX.(Note that this card can be used with Windows 11, but it needs to be manually set up. If you buy it for Windows 11, please contact us for installation guide before using.)
  • Single SFP+ port let you connect to 10 Gigabit SFP+ module/DAC/AOC for meeting the demands of data center environments. PCI-E X8 Lane is suitable for both PCI-E X8 and PCI-E X16 slots.

Mellanox ConnectX-3 Firmware Flashing mit Linux

Folgende Anleitung zeigt den Flashing Weg unter einem aktuellen Debian 11.3. Als erstes müssen wir die Mellanox Firmware Tool (MFT) installieren.

## Zunächst die Abhängigkeiten installieren für die Mellanox Tools ##
apt-get install gcc make dkms unzip ethtool linux-headers-$(uname -r)
## Bei Proxmox installiert man anstatt linux-headers --> die pve-headers

## MFT Downloaden, Entpacken und Installieren ##
wget https://www.mellanox.com/downloads/MFT/mft-4.18.0-106-x86_64-deb.tgz
tar -xvf mft-4.18.0-106-x86_64-deb.tgz && cd mft-4.18.0-106-x86_64-deb
./install.sh

Mit diesen Tools können wir nun endlich die Karte ansprechen und auslesen. Mit den Ethtools können wir auch prima auslesen was die Karte ein Speed aktuell bringen kann.

ethtool <EUER-INTERFACE-NAME>

ethtool enp16s0
Settings for enp16s0:
        Supported ports: [ FIBRE ]
        Supported link modes:   10000baseKX4/Full
                                1000baseX/Full
                                10000baseCR/Full
                                10000baseSR/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10000baseKX4/Full
                                1000baseX/Full
                                10000baseCR/Full
                                10000baseSR/Full

Wie Ihr hier seht kann die Karte aktuell nur 10Gbit/s Ethernet, aber wir wollen mehr.

HIER findet Ihr die aktuellen Firmwares für die ConnectX-3 Karten.

## MST Starten
mst start
mst status

## Kopiere dir den Device Namen, welcher auf CR0 endet. 
/dev/mst/mt4099_pci_cr0

## Downloade dir für die Karte die aktuelle Firmware. 
## GANZ Wichtig die FCBT Firmware Treiber auswählen. 
wget http://www.mellanox.com/downloads/firmware/fw-ConnectX3-rel-2_42_5000-MCX354A-FCB_A2-A5-FlexBoot-3.4.752.bin.zip
unzip fw-ConnectX3-rel-2_42_5000-MCX354A-FCB_A2-A5-FlexBoot-3.4.752.bin.zip

## Die Aktuelle Firmware können wir auch zwischenspeichern.
flint -d /dev/mst/mt4099_pci_cr0 dc orig_firmware.ini

## Mit diesem Befehl wird die neue Firmware auf die Karte gebrannt
flint -d /dev/mst/mt4099_pci_cr0 -i fw-ConnectX3-rel-2_42_5000-MCX354A-FCB_A2-A5-FlexBoot-3.4.752.bin -allow_psid_change burn

## Wenn Ihr die Karte noch auf Ethernet umstellen müsst, hier der Befehl ##
mlxconfig -d /dev/mst/mt4099_pci_cr0 set LINK_TYPE_P1=2 LINK_TYPE_P2=2

## SYSTEM NEUSTARTEN ##
reboot

Falls Fehlermeldungen kommen hinsichtlich das dass Device nicht gefunden wird. kannst du auch das PCI Device direkt ansprechen. Einfach mal lspci eingeben und anstatt /dev/xYZ eingeben dann dann Device wie z.B. 10:00.0.

Wenn alles geklappt hat sollte die Mellanox Karte nach dem Neustart auf 40 Gbit/s Ethernet freigeschaltet sein. Das überprüfen wir einmal.

ethtool <EUER-INTERFACE-NAME>

ethtool enp16s0
Settings for enp16s0:
        Supported ports: [ FIBRE ]
        Supported link modes:   10000baseKX4/Full
                                40000baseCR4/Full
                                40000baseSR4/Full
                                56000baseCR4/Full
                                56000baseSR4/Full
                                1000baseX/Full
                                10000baseCR/Full
                                10000baseSR/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10000baseKX4/Full
                                40000baseCR4/Full
                                40000baseSR4/Full
                                1000baseX/Full
                                10000baseCR/Full
                                10000baseSR/Full

Hier ein paar gute 10Gbit Switches.