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/NICCLI.
Bevor Sie beginnen, befolgen Sie diesen Artikel um den Maintenance Mode zu aktivieren.
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. Entfernen Sie auch sämtliche Transceiver der zu konfigurierenden Netzwerkkarte.
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 Linkspeed ü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
Zuletzt können Sie den Maintenance Mode wieder deaktivieren und wiederholen Sie gegebenenfalls dieses Vorgehen bei den restlichen Nodes.
Hinweis: Im Falle einer Mesh-Verkabelung ist es unter Umständen auch hier notwendig, dass Sie die Direktverkabelung der zu konfigurierenden Systeme vor Beginn der Konfiguration trennen. Die anderen Systeme können untereinander verkabelt bleiben. Entfernen Sie auch sämtliche Transceiver der zu konfigurierenden Netzwerkkarte.
Um die gewünschte und volle Funktionalität der Netzwerkkarten zu erreichen, müssen Sie die Netzwerkkarten mithilfe von NICCLI zur Nutzung der gewünschten Geschwindigkeit zwingen.
Um NICCLI zu installieren befolgen Sie folgende Anleitung: Installation NICCLI
Zu Beginn führen Sie folgenden Befehl aus, um die Zuordnung der Interfacenamen und PCI-IDs herauszufinden:
root@PMX2:~# lshw -c network -businfo Bus info Device Class Description pci@0000:01:00.0 enp1s0f0np0 network BCM57508 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet pci@0000:01:00.1 enp1s0f1np1 network BCM57508 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet pci@0000:06:00.0 enp6s0f0 network I350 Gigabit Network Connection pci@0000:06:00.1 enp6s0f1 network I350 Gigabit Network Connection pci@0000:41:00.0 enp65s0f0np0 network BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller pci@0000:41:00.1 enp65s0f1np1 network BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller pci@0000:81:00.0 ens17f0np0 network BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet pci@0000:81:00.1 ens17f1np1 network BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet pci@0000:81:00.2 ens17f2np2 network BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet pci@0000:81:00.3 ens17f3np3 network BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet usb@1:1.3 enx42a65ce855c5 network Ethernet interface
Anschließend geben Sie in dem CLI "niccli" ein. Sie müssen im Anschluss einen Port-Index auswählen, wählen Sie hier den Index, welcher die gleiche PCI-ID wie oben ausgewählt, besitzt:
root@PMX2:~# niccli /opt/niccli/niccli.x86_64: /lib/x86_64-linux-gnu/libnl-3.so.200: no version information available (required by /opt/niccli/niccli.x86_64) ------------------------------------------------------------------------------- Scrutiny NIC CLI v229.0.150.0 - Broadcom Inc. (c) 2024 (Bld-79.52.33.102.16.0) ------------------------------------------------------------------------------- BoardId MAC Address FwVersion PCIAddr Type Mode 1) BCM57508 84:16:0C:6F:16:90 226.0.145.1 0000:01:00.0 NIC PCI 2) BCM57508 84:16:0C:6F:16:90 226.0.145.1 0000:01:00.1 NIC PCI 3) BCM57416 00:62:0B:31:4A:F0 226.0.145.0 0000:41:00.0 NIC PCI 4) BCM57416 00:62:0B:31:4A:F1 226.0.145.0 0000:41:00.1 NIC PCI 5) BCM57504 00:62:0B:6F:00:8C 226.0.145.1 0000:81:00.0 NIC PCI 6) BCM57504 00:62:0B:6F:00:8C 226.0.145.1 0000:81:00.1 NIC PCI 7) BCM57504 00:62:0B:6F:00:8E 226.0.145.1 0000:81:00.2 NIC PCI 8) BCM57504 00:62:0B:6F:00:8E 226.0.145.1 0000:81:00.3 NIC PCI Enter the target index to connect with : 5
Nun können Sie die Linkspeed-ID für die gewünschte Portgeschwindigkeit auslesen:
BCM57504> setoption -name firmware_link_speed_d0 -value ? -scope 0 ERROR: Invalid syntax. Name : firmware_link_speed_d0 Description : This per-port option configures the speed setting when the device is in D0 mode. The default speed is set to Autoneg. A 10GBaseT board only allows Autoneg. Option Type : Multi Instance Type 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 (2_5G) 15 (100M) BCM57504>
Die Linkspeed-ID wird für die Erzwingung der gewünschten Verbindungsgeschwindigkeit benötigt.
Diese Linkspeed-ID geben Sie in nachfolgendenden Befehl unter "-value " an:
BCM57504> setoption -name firmware_link_speed_d0 -value 3 -scope 0 BCM57504> setoption -name firmware_link_speed_d0 -value 3 -scope 1 BCM57504> setoption -name firmware_link_speed_d0 -value 3 -scope 2 BCM57504> setoption -name firmware_link_speed_d0 -value 3 -scope 3 firmware_link_speed_d0 is set successfully Please reboot the system to apply the configuration
Das gleiche muss auch für "firmware_link_speed_d3" wiederholt werden:
BCM57504> setoption -name firmware_link_speed_d3 -value 3 -scope 0 BCM57504> setoption -name firmware_link_speed_d3 -value 3 -scope 1 BCM57504> setoption -name firmware_link_speed_d3 -value 3 -scope 2 BCM57504> setoption -name firmware_link_speed_d3 -value 3 -scope 3
Erklärung des Befehls:
Option | Linkspeed-ID (value) | Port (scope) |
---|---|---|
firmware_link_speed_d0 | 3 | 0-3 |
firmware_link_speed_d3 | 3 | 0-3 |
Die Optionen 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.
Nach Eingabe der Befehle für alle Ports, ist ein Reboot des Systems notwendig.
Geben Sie nach dem Reboot in das CLI erneut "niccli" ein und führen sie folgenden Befehl aus:
BCM57504> device_info Interface Name : ens17f0np0 MAC Address : 00:62:0B:6F:00:8C Base MAC Address : 00:62:0B:6F:00:8C Serial Number : N425G224200E5NFG Part Number : BCM957504-N425G PCI Address : 0000:81:00.0 Chip Number : BCM57504 Chip Name : THOR Description : Broadcom NetXtreme E-Series Quad-port 25Gb SFP28 OCP 3.0 Ethernet Adapter Active Package Name : 226.1.107.1 Firmware Name : PRIMATE_FW Firmware Version : 226.0.145.1 RoCE Firmware Version : 226.0.145.0 HWRM Interface Spec : 1.10.2 Kong mailbox channel : Not Applicable Active Package Version : 226.1.107.1 Package Version on NVM : 226.1.107.1 PCI Device ID : 0x1751 PCI Vendor ID : 0x14E4 PCI Revision ID : 0x11 PCI Component ID : 0x1751 PCI Subsys Device ID : 0x5425 PCI Subsys Vendor ID : 0x14E4 Active NVM config version : 0.0.37 NVM config version : 0.0.37 Reboot Required : No Firmware Reset Counter : 0 Error Recovery Counter : 0 Crash Dump Timestamp : Not Available Secure Boot : Enabled Secure Firmware Update : Enabled FW Image Status : Operational Crash Dump Available in DDR : No
Überprüfen Sie hierbei, ob der Wert auf Operational steht. Wenn dies nicht gegeben ist müssen Sie noch einen Firmware Sync durchführen, ansonsten war die Konfiguration erfolgreich.
Durch die Synchronisation der Firmware wird der eingetragene Linkspeed übernommen:
BCM57504> fw_sync
Nun können Sie zusätzlich die Konfiguration der Netzwerkkarte mit ethtool überprüfen:
root@PMX2:~# ethtool ens17f0np0 Settings for ens17f0np0: Supported ports: [ FIBRE ] Supported link modes: 10000baseT/Full 10000baseKX4/Full 10000baseKR/Full 25000baseCR/Full 25000baseKR/Full 25000baseSR/Full 10000baseCR/Full 10000baseSR/Full 10000baseLR/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: No Advertised FEC modes: Not reported Speed: 25000Mb/s Duplex: Full Auto-negotiation: off Port: FIBRE PHYAD: 0 Transceiver: internal Supports Wake-on: g Wake-on: d Current message level: 0x00002081 (8321) drv tx_err hw Link detected: no
Zuletzt können Sie den Maintenance Mode wieder deaktivieren und wiederholen Sie gegebenenfalls dieses Vorgehen bei den restlichen Nodes.
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. |