Broadcom bnxt Treiberupdate unter OPNsense

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Bei der Open Source Firewall OPNsense hängt die Unterstützung der Hardware grundsätzlich von den Treibern, die über den FreeBSD Kernel mitgeliefert werden, ab. Es kann vorkommen dass es beim Hersteller neue Treiber gibt die es erst später im FreeBSD Kernel aufgenommen werden. Deshalb ist es bei Problemen möglich den Treiber manuell zu installieren. Dieser Artikel behandelt die Konsolenmeldung "HWRM_CFA_L2_SET_RX_MASK command returned RESOURCE_ALLOC_ERROR error", die beim Einsatz von Broadcom Netzwerkkarten unter OPNsense 25.4 (betrifft auch die Community Edition OPNsense 25.1) auftreten kann. Es wird gezeigt wie Sie den Treiber unter OPNsense Business Edition 25.4 (gilt auch für die Community Edition 25.1) aktualisieren, damit diese Konsolenmeldungen nicht mehr auftreten.

Konsolenmeldung "HWRM_CFA_L2_SET_RX_MASK command returned RESOURCE_ALLOC_ERROR error" mit bnxt Treiberversion 230.0.133.0

Problembeschreibung

Diese Konsolenmeldung "HWRM_CFA_L2_SET_RX_MASK command returned RESOURCE_ALLOC_ERROR error" tritt beim Einsatz von Broadcom bnxt-Treiber-basierten Netzwerkkarten (also z.B. der Broadcom P225p) beim Einsatz der aktuellen OPNsense Versionen (Community Edition 25.1 und Business Edition 25.4) im Zusammenhang mit VLANs bzw. Link Aggregation auf.

Betroffene Komponenten

Folgende Komponenten wurde im Laufe der Recherche verwendet um das Problem nachzustellen:

  • Supermicro H12SSW-NT (mit 2x 1OG Broadcom BCM57416 onboard)
  • Broadcom P225p (2x 25/10G PCIe NIC)

Lösung

Dieses Problem kann aktuell durch manuelle Kompilierung des aktuellen Treibers gelöst werden, mit der zukünftigen Version OPNsense 25.7 fließen durch eine Aktualisierung des FreeBSD Kernels viele Verbesserungen am bnxt-Treiber ein.

Neuer Kernel mit OPNsense 25.7

Mit dem anstehenden Release von OPNsense 25.7 soll laut Roadmap der Entwickler auch der Kernel auf FreeBSD 14.3-RELEASE angehoben werden.[1] (opnsense.org) Dieser neue Kernel enthält viele Verbesserungen für bnxt-Treiber basierte Netzwerkkarten.[2] (freebsd.org)

  • Test mit OPNsense 25.7-RC1:
root@OPNsense:~ # opnsense-version
OPNsense 25.7.r1 (amd64)
  • Neuer Kernel von OPNsense 25.7:
root@OPNsense:~ # freebsd-version -k
14.3-RELEASE-p1
  • Abfrage der Treiberversion:
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5
[...]
dev.bnxt.0.iflib.driver_version: 230.0.133.0
dev.bnxt.0.%iommu: rid=0xc600
dev.bnxt.0.%parent: pci6
dev.bnxt.0.%pnpinfo: vendor=0x14e4 device=0x16d8 subvendor=0x15d9 subdevice=0x16d8 class=0x020000
dev.bnxt.0.%location: slot=0 function=0 dbsf=pci0:198:0:0 handle=\_SB_.S0D0.D0A6.D017
dev.bnxt.0.%driver: bnxt

Der Treiber wurde bisher noch nicht aktualisiert, eine manuelle Aktualisierung ist auch mit der zukünftigen Version OPNsense 25.7 erforderlich.

Manuelle Kompilierung des bnxt-Treibers

Eine konkrete Problemlösung zum jetzigen Zeitpunkt lässt sich über eine manuelle Kompilierung des bnxt-Treibers vornehmen.

Manuelle Kompilierung und Installation des bnxt-Treibers durchführen

Der nachfolgende Abschnitt beschreibt die manuelle Komplierung des bxnt-Treibers unter OPNsense Business Edition 25.4, gilt auch für OPNsense 25.1.

Vorbereitungen

Aktivieren Sie bei der OPNsense Firewall SSH. Dies können Sie im Webinterface unter System --> Settings --> Administration vornehmen.

Verbindung über SSH und Installation der erforderlichen Komponenten

Die folgenden Schritte werden alle über eine SSH-Verbindung zur OPNsense Firewall vorgenommen:

pkg install git
cd /usr/
git clone https://github.com/opnsense/src
git checkout stable/25.1 (für Business Edition 25.4 passt dies ebenso)
cd /root

Download und Entpacken des Treibers

Laden Sie den Treiber herunter und entpacken Sie ihn mit folgenden Kommandos:

curl -o FreeBSD_Drivers-233.0.174.0.zip https://docs.broadcom.com/docs-and-downloads/ethernet-network-adapters/NXE/BRCM_233.1.135.7/FreeBSD_Drivers-233.0.174.0.zip
unzip FreeBSD_Drivers-233.0.174.0.zip
cd FreeBSD_Drivers-233.0.174.0
tar xvfz freebsd-bnxt-233.0.174.0.tar.gz
cd freebsd-bnxt-233.0.174.0/bnxt_en/

Treiber installieren

Mit den folgenden Befehlen wird dann der Treiber kompiliert und anstelle des durch den Kernel mitgelieferten Treibers gesetzt.

make
cp if_bnxt.ko /boot/kernel/if_bnxt174.ko
cd /boot/kernel
mv if_bnxt.ko if_bnxt133.ko
mv if_bnxt174.ko if_bnxt.ko
reboot

Prüfung nach Neustart

Prüfen Sie nach dem erfolgten Neustart noch ob das aktuelle Modul verwendet wird.

sysctl -a | grep dev.bnxt.0.iflib.driver_version
dev.bnxt.0.iflib.driver_version: 233.0.174.0

In diesem Fall hat das Update geklappt, die Treiberversion wurde nun von 233.0.133.0 auf 233.0.174.0 angehoben.

Einzelnachweise


Autor: Thomas Niedermeier

Thomas Niedermeier arbeitet im Product Management Team von Thomas-Krenn. Er absolvierte an der Hochschule Deggendorf sein Studium zum Bachelor Wirtschaftsinformatik. Seit 2013 ist Thomas bei Thomas-Krenn beschäftigt und kümmert sich unter anderem um OPNsense Firewalls, das Thomas-Krenn-Wiki und Firmware Sicherheitsupdates.

 

Das könnte Sie auch interessieren

BNXT NVM - failed to get mac address
Mellanox Firmware Tools - Firmware Upgrade unter Linux
NVIDIA Netzwerkkarten