BNXT(4)
π BNXT(4) β like, the Broadcom NetXtreme driver manual, but make it make sense
okay bestie, so this is the manual page for bnxt, which lives in section 4 of the Kernel Interfaces Manual (the driver section β yes, that one π). Sit down, hydrate, and let's get into it.
β¨ NAME β¨
bnxt β the Broadcom NetXtreme family Ethernet driver, and when I say family I mean it covers everything from 10Gb all the way up to 400Gb. no cap. π₯
πΈ SYNOPSIS πΈ
So there's two ways to get this driver into your life, and it's giving "choose your own adventure".
Option A β build it straight into the kernel. Drop these lines into your kernel configuration file:
device iflib
device bnxt
Option B β load it as a module at boot time. Put this line in loader.conf(5):
if_bnxt_load="YES"
slay, that's it, that's the whole synopsis π«Ά
π DESCRIPTION π
The bnxt driver provides support for PCIe NICs based on the Broadcom BCM573XX, BCM574XX, BCM575XX, and BCM576XX Ethernet controllers. iconic behavior honestly.
Want the full deets on configuring this device? Go see ifconfig(8). iykyk.
π¦ HARDWARE π¦
Here's the part where the driver flexes its entire roster. The bnxt driver supports the following Broadcom 10Gb to 400Gb Ethernet controllers β and yes, I'm listing every single one, because we don't skip items in this house π
- Broadcom
BCM57301NetXtreme-C 10Gb Ethernet Controller - Broadcom
BCM57302NetXtreme-C 10Gb/25Gb Ethernet Controller - Broadcom
BCM57304NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet Controller - Broadcom
BCM57304NetXtreme-C Ethernet Virtual Function - Broadcom
BCM57314NetXtreme-C Ethernet Virtual Function - Broadcom
BCM57402NetXtreme-E 10Gb Ethernet Controller - Broadcom
BCM57402NetXtreme-E Ethernet Partition - Broadcom
BCM57404NetXtreme-E 10Gb/25Gb Ethernet Controller - Broadcom
BCM57404NetXtreme-E Ethernet Virtual Function - Broadcom
BCM57404NetXtreme-E Partition - Broadcom
BCM57406NetXtreme-E 10GBASE-T Ethernet Controller - Broadcom
BCM57406NetXtreme-E Partition - Broadcom
BCM57407NetXtreme-E 10GBase-T Ethernet Controller - Broadcom
BCM57407NetXtreme-E 25Gb Ethernet Controller - Broadcom
BCM57407NetXtreme-E Partition - Broadcom
BCM57412NetXtreme-E Partition - Broadcom
BCM57414NetXtreme-E Ethernet Virtual Function - Broadcom
BCM57414NetXtreme-E Partition - Broadcom
BCM57416NetXtreme-E Partition - Broadcom
BCM57417NetXtreme-E Ethernet Partition - Broadcom
BCM57454NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb Ethernet - Broadcom
BCM57502NetXtreme-E 10Gb/25Gb/50Gb Ethernet - Broadcom
N425BCM57504NetXtreme-E 10Gb/25Gb Ethernet - Broadcom
P425BCM57504NetXtreme-E 10Gb/25Gb Ethernet - Broadcom
N1100BCM57504NetXtreme-E 10Gb/25Gb/50Gb/100Gb Ethernet - Broadcom
N2100BCM57508Thor 10Gb/25Gb/50Gb/100Gb Ethernet - Broadcom
P2100BCM57508Thor 10Gb/25Gb/50Gb/100Gb Ethernet - Broadcom
N2200BCM57608Thor 2 10Gb/25Gb/50Gb/100Gb/200Gb Ethernet - Broadcom
P2200BCM57608Thor 2 10Gb/25Gb/50Gb/100Gb/200Gb Ethernet - Broadcom
N1400BCM57608Thor 2 25Gb/50Gb/100Gb/200Gb/400Gb Ethernet - Broadcom
P1400BCM57608Thor 2 25Gb/50Gb/100Gb/200Gb/400Gb Ethernet
π SYSCTL VARIABLES π
β the "set these BEFORE you load the driver" girlies
These variables must be set before loading the driver, either via loader.conf(5) or through the use of kenv(1). They're actually provided by the iflib(4) framework, so honestly they might be better documented over there. just saying π
dev.bnxt.X.iflib.override_nrxdsβ Override the number of RX descriptors for each queue. The value is a comma separated list of three positive integers: the size of the completion ring, the size of the receive ring, and the size of the aggregation ring respectively. The completion ring should be at least the size of the aggregation ring plus four times the size of the receive ring. These numbers must be powers of two, and zero means to use the default. Defaults to0,0,0.dev.bnxt.X.iflib.override_ntxdsβ Override the number of TX descriptors for each queue. The value is a comma separated list of two positive integers: the size of the completion ring, and the size of the transmit ring respectively. The completion ring should be at least twice the size of the transmit ring. These numbers must be powers of two, and zero means to use the default. Defaults to0,0.dev.bnxt.X.iflib.override_qs_enableβ When set, this allows the number of transmit and receive queues to be different. If it's not set, the lower of the number of TX or RX queues will be used for both. π«Άdev.bnxt.X.iflib.override_nrxqsβ Set the number of RX queues. If zero, the number of RX queues is derived from the number of cores on the socket connected to the controller. Defaults to0.dev.bnxt.X.iflib.override_ntxqsβ Set the number of TX queues. If zero, the number of TX queues is derived from the number of cores on the socket connected to the controller.
π the "change me whenever, bestie" sysctls
These sysctl(8) variables can be changed at any time:
dev.bnxt.X.vlan_onlyβ Require that incoming frames must have a VLAN tag on them that matches one that's configured for the NIC. Normally, both frames that have a matching VLAN tag and frames that have no VLAN tag are accepted. Defaults to0.dev.bnxt.X.vlan_stripβ When non-zero, the NIC strips VLAN tags on receive. Defaults to0.dev.bnxt.X.rx_stallβ Enable buffering rather than dropping frames when there are no available host RX buffers for DMA. Defaults to0. (buffering > dropping, lowkey)dev.bnxt.X.rss_typeβ Comma-separated list of RSS hash types to support. Default is all types. Defaults toipv4,tcp_ipv4,udp_ipv4,ipv6,tcp_ipv6,udp_ipv6.dev.bnxt.X.rss_keyβ Current RSS key. Defaults to a randomly generated value which is generated for each device during attach. β¨randomizedβ¨dev.bnxt.X.ver.hwrm_min_verβ Minimum HWRM (HardWare Resource Manager) firmware API to support. If the firmware implements an older version, a warning will be printed, and the firmware should be upgraded. Defaults to1.2.2.
π the read-only ones (look, don't touch, bestie)
These sysctl(8) variables are read-only:
dev.bnxt.X.if_nameβ Current interface name of the device. This will normally bebnxtX, but this can be changed usingifconfig name. This sysctl allows correlating an interface with a child ofdev.bnxt.dev.bnxt.X.nvram.*β Information about the NVRAM device which contains the device firmware.dev.bnxt.X.ver.*β Version-related information about the device and firmware:dev.bnxt.X.ver.hwrm_ifβ Supported HWRM API version of the currently running firmware.dev.bnxt.X.ver.driver_hwrm_ifβ HWRM API version the driver was built to support.
dev.bnxt.X.hwstats.*β Per-queue statistics tracked by the hardware.dev.bnxt.X.hwstats.port_stats.*β Per-port statistics tracked by the hardware.dev.bnxt.X.hwstats.rxq0.drop_pktsβ Number of packets dropped by hardware on queue zero. This number might seem high, but the count includes packets dropped due to incorrect destination MAC, unsubscribed multicast address, and other normal reasons to ignore Ethernet frames. so don't panic πdev.bnxt.X.hwstats.rxq0.tpa_*β statistics related to HW LRO.dev.bnxt.X.hw_lro.*β Enable / Disable HW LRO feature. Defaults to disable. > Enabling HW LRO could cause issues when forwarding is enabled on host. you've been warned πdev.bnxt.X.fcβ Enable / Disable Flow Control feature. Defaults to Enable
π DIAGNOSTICS π
When things go sideways, you get these bad boys. Read them, don't just scroll past π«Ά
bnxt%d: %s command returned %s error.
Device firmware rejected a command from the driver. There might be a driver/firmware HWRM API mismatch.
bnxt%d: Timeout sending %s (timeout: %d) seq %d
Device firmware unresponsive. A PCI device reset is likely needed. π
bnxt%d: Timeout sending %s (timeout: %d) msg {0x%x 0x%x} len:%d v: %d
Partial firmware response. A PCI device reset is likely needed.
As of this writing, the system must be rebooted to initiate a PCI device reset. no soft fix for this one, bestie, you're rebooting. π
π SEE ALSO π
altq(4), arp(4), iflib(4), netintro(4), ng_ether(4), vlan(4), ifconfig(8)
π HISTORY π
The bnxt device driver first appeared in FreeBSD 11.1. throwback era fr fr π¦
π AUTHORS π
The bnxt driver was written by Jack Vogel <jfvogel@gmail.com> and Stephen Hurd <shurd@freebsd.org>, and is currently maintained by Broadcom Limited <freebsd.pdl@broadcom.com>.
okay that's the whole page, you ate that π This cutie came from the Debian build of the page, dated December 10, 2025, and it's filed under BNXT(4). mwah, go configure some NICs πβ¨
π¦ where this page comes from
- freebsd 15.1: base 15.1
- Copyright (c) 2016 Broadcom, All Rights Reserved
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms