Bei der Einbindung von Broadcom Netzwerkkarten in Linux Distributionen kann die Verbindungsgeschwindigkeit (Linkspeed) vom erwarteten Wert abweichen. Dieser lässt sich nachträglich mithilfe der Firmware Utility bnxtnvm konfigurieren.
Dieser Artikel beschreibt die Prüfung und Konfiguration der Linkspeeds mithilfe von bnxtnvm.
Aufgrund des Mischbetriebs von unterschiedlichen Linkspeeds können einzelne Ports außer Funktion gesetzt sein. Im Produktivbetrieb macht sich das durch fehlende Verbindungen und/oder eine geringere Geschwindigkeit im Netzwerk bemerkbar, z.B. bei Betrieb eines Server-Clusters mit Mesh-Verkabelung.
Hinweis: Beachten Sie dazu die Kompatibilität der Linkspeeds. Bestimmte Broadcomkarten unterstützen keinen oder nur bestimmte Mischbetriebe.
Hier ein Beispiel für eine fehlerhafte Ausgabe:
root@PMX1:~# ethtool enp67s0f0np0 Settings for enp67s0f0np0: Supported ports: [ FIBRE ] Supported link modes: 10000baseT/Full 25000baseCR/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: RS BASER Advertised link modes: 10000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Advertised FEC modes: RS BASER Speed: 10000Mb/s Duplex: Full Auto-negotiation: on Port: Direct Attach Copper PHYAD: 0 Transceiver: internal Supports Wake-on: g Wake-on: d Current message level: 0x00002081 (8321) drv tx_err hw Link detected: yes
Unter "Advertised link modes" wird nur eine Geschwindigkeit angezeigt (10 Gb/s), obwohl die Netzwerkkarte auf 25 Gb/s laufen könnte.
Hinweis: Im Falle einer Mesh-Verkabelung ist es unter Umständen notwendig, dass Sie die Direktverkabelung der zu konfigurierenden Systeme vor Beginn der Konfiguration trennen. Die anderen Systeme können untereinander verkabelt bleiben.
Um die gewünschte und volle Funktionalität der Netzwerkkarten zu erreichen, müssen Sie die Netzwerkkarten mithilfe von bnxtnvm zur Nutzung der gewünschten Geschwindigkeit zwingen.
bnxtnvm können Sie im Thomas-Krenn Downloadsbereich für Ihre Windows-Systeme herunterladen oder durch folgende Befehle auf Ihren Linux-Systemen nutzen:
wget https://www.thomaskrenn.com/redx/tools/mb_download.php/ct.YuuHGw/mid.y9b3b4ba2bf7ab3b8/bnxtnvm.zip &&
unzip bnxtnvm.zip &&
chmod +x bnxtnvm
Anschließend müssen sie eine Reihe von Befehlen absetzen, um Ihr System auf die gewünschte Geschwindigkeit anzupassen:
Im ersten Schritt werden die Linkspeed-IDs des Treibers der Netzwerkkarte benötigt:
./bnxtnvm -dev=enp67s0f0np0 optionhelp=drv_link_speed
Ausgabe:
Name : drv_link_speed
Description : Driver Link speed
Option Type : Multi Instance Type
Max Instance Indexes : 0 to 15
Valid values :
0 (Autoneg)
1 (1G)
2 (10G)
3 (25G)
4 (40G)
5 (50G)
6 (100G)
7 (200G_PAM4)
8 (50G_PAM4)
9 (100G_PAM4)
14 (5G)
15 (100M)
Die Linkspeed-ID wird für die Erzwingung der gewünschten Verbindungsgeschwindigkeit benötigt.
Die Verbindungsgeschwindigkeit wird jetzt mithilfe der Linkspeed-ID gesetzt:
./bnxtnvm -dev=enp67s0f0np0 setoption=drv_link_speed:0#3
./bnxtnvm -dev=enp67s0f0np0 setoption=firmware_link_speed_d0:0#3
./bnxtnvm -dev=enp67s0f0np0 setoption=firmware_link_speed_d3:0#3
Zur Erläuterung der Befehle:
Interface-ID | Option | Port | Linkspeed-ID |
---|---|---|---|
enp67s0f0np0 | drv_link_speed | 0 | 3 |
enp67s0f0np0 | firmware_link_speed_d0 | 0 | 3 |
enp67s0f0np0 | firmware_link_speed_d3 | 0 | 3 |
Der drv_link_speed, firmware_link_speed_d0 & firmware_link_speed_d3 müssen für alle Ports gesetzt werden.
Die Werte entsprechen der Port-Anzahl der verwendeten Netzwerkkarte (z.B.: 0, 1, 2 und 3 bei einer Netzwerkkarte mit 4 Netzwerkports).
Mit der Linkspeed-ID "3" wird eine Geschwindigkeit von 25 Gb/s erzwungen.
Man erhält folgende Ausgabe nach Durchführung des Befehls:
root@PMX1:~# ./bnxtnvm -dev=enp67s0f0np0 setoption=drv_link_speed:0#3
drv_link_speed is set successfully
Please reboot the system to apply the configuration
Nach Eingabe der Befehle für alle Ports ist ein Reboot des Systems notwendig.
Führen Sie folgenden Befehl aus um den Status zu prüfen:
./bnxtnvm -dev=enp67s0f0np0 device_info
Die Konfiguration wurde korrekt durchgeführt, wenn der FW Image Status den Wert Operational ausgibt:
root@PMX1:~# ./bnxtnvm -dev=enp67s0f0np0 device_info Device Interface Name : enp67s0f0np0 MACAddress : bc:97:e1:da:92:a0 Base MACAddress : BC:97:E1:DA:92:A0 Device Serial Number : P425G214400143FV Chip Number : BCM57504 Part Number : BCM957504-P425G Description : Broadcom NetXtreme-E Quad-port 25Gb Ethernet PCIe Adapter PCI Vendor Id : 14e4 PCI Device Id : 1750 PCI Subsys Vendor Id : 14e4 PCI Subsys Device Id : 2100 PCI Device Name : 0000:01:00.0 Adapter Rev : 11 Active Package version : 224.1.102.0 Package version on NVM : 224.1.102.0 Firmware version : 224.0.159.0 Active NVM config version : 0.0.34 NVM config version : 0.0.34 Firmware Reset Counter : 0 Error Recovery Counter : 0 Crash Dump Timestamp : N/A Reboot Required : No Secure Boot : Enabled Secure Firmware Update : Enabled FW Image Status : Operational Crash Dump Available in DDR : False
Ist das nicht der Fall, muss zusätzlich die Firmware der Netzwerkkarte synchronisiert werden.
Durch die Synchronisation der Firmware wird der eingetragene Link Speed übernommen:
./bnxtnvm -dev=enp67s0f0np0 fw_sync
Die erfolgreiche Konfiguration kann jetzt mit dem ethtool überprüft werden:
root@PMX1:~# ethtool enp67f0np0 Settings for enp67f0np0: Supported ports: [ FIBRE ] Supported link modes: 10000baseT/Full 25000baseCR/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: RS BASER Advertised link modes: 25000baseCR/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Advertised FEC modes: RS BASER Speed: 25000Mb/s Duplex: Full Auto-negotiation: on Port: Direct Attach Copper PHYAD: 0 Transceiver: internal Supports Wake-on: g Wake-on: d Current message level: 0x00002081 (8321) drv tx_err hw Link detected: yes
Autor: Niklas Pauli Niklas Pauli arbeitet im Product Management Team von Thomas-Krenn. Er absolvierte am Gymnasium Freyung seine Allgemeine Hochschulreife und ist seit 2021 als Azubi zum Fachinformatiker für Systemintegration bei Thomas-Krenn beschäftigt. Dabei beschäftigt sich Herr Pauli unter anderem mit Proxmox Virtualisierung oder dem Thomas-Krenn-Wiki. |