1.\" Copyright (c) 2016 Broadcom, All Rights Reserved. 2.\" The term Broadcom refers to Broadcom Limited and/or its subsidiaries 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS' 15.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 18.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 24.\" THE POSSIBILITY OF SUCH DAMAGE. 25.\" 26.\" $FreeBSD$ 27.\" 28.Dd May 9, 2017 29.Dt BNXT 4 30.Os 31.Sh NAME 32.Nm bnxt 33.Nd "Broadcom NetXtreme-C/NetXtreme-E Family Ethernet driver" 34.Sh SYNOPSIS 35To compile this driver into the kernel, 36place the following lines in your 37kernel configuration file: 38.Bd -ragged -offset indent 39.Cd "device bnxt" 40.Ed 41.Pp 42Alternatively, to load the driver as a 43module at boot time, place the following line in 44.Xr loader.conf 5 : 45.Bd -literal -offset indent 46if_bnxt_load="YES" 47.Ed 48.Sh DESCRIPTION 49The 50.Nm 51driver provides support for various NICs based on the Broadcom BCM57301/2/4, 52and BCM57402/4/6 Ethernet controller chips. 53.Pp 54For more information on configuring this device, see 55.Xr ifconfig 8 . 56.Sh HARDWARE 57The 58.Nm 59driver provides support for various NICs based on the Broadcom NetXtreme-C and 60NetXtreme-E families of Gigabit Ethernet controller chips, including the 61following: 62.Pp 63.Bl -bullet -compact 64.It 65Broadcom BCM57301 NetXtreme-C 10Gb Ethernet Controller 66.It 67Broadcom BCM57302 NetXtreme-C 10Gb/25Gb Ethernet Controller 68.It 69Broadcom BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet Controller 70.It 71Broadcom BCM57304 NetXtreme-C Ethernet Virtual Function 72.It 73Broadcom BCM57314 NetXtreme-C Ethernet Virtual Function 74.It 75Broadcom BCM57402 NetXtreme-E 10Gb Ethernet Controller 76.It 77Broadcom BCM57402 NetXtreme-E Ethernet Partition 78.It 79Broadcom BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller 80.It 81Broadcom BCM57404 NetXtreme-E Ethernet Virtual Function 82.It 83Broadcom BCM57404 NetXtreme-E Partition 84.It 85Broadcom BCM57406 NetXtreme-E 10GBASE-T Ethernet Controller 86.It 87Broadcom BCM57406 NetXtreme-E Partition 88.It 89Broadcom BCM57407 NetXtreme-E 10GBase-T Ethernet Controller 90.It 91Broadcom BCM57407 NetXtreme-E 25Gb Ethernet Controller 92.It 93Broadcom BCM57407 NetXtreme-E Partition 94.It 95Broadcom BCM57412 NetXtreme-E Partition 96.It 97Broadcom BCM57414 NetXtreme-E Ethernet Virtual Function 98.It 99Broadcom BCM57414 NetXtreme-E Partition 100.It 101Broadcom BCM57416 NetXtreme-E Partition 102.It 103Broadcom BCM57417 NetXtreme-E Ethernet Partition 104.It 105Broadcom BCM57454 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb Ethernet 106.El 107.Sh SYSCTL VARIABLES 108These variables must be set before loading the driver, either via 109.Xr loader.conf 5 110or through the use of 111.Xr kenv 1 . 112These are provided by the 113.Xr iflib 9 114framework, and might be better documented there. 115.Bl -tag -width indent 116.It Va dev.bnxt.X.iflib.override_nrxds 117Override the number of RX descriptors for each queue. 118The value is a comma separated list of three positive integers: the size of the 119completion ring, 120the size of the receive ring, and the size of the aggregation ring respectively. 121The completion ring should be at least the size of the aggregation ring plus 122four times the size of the receive ring. 123These numbers must be powers of two, and zero means to use the default. 124Defaults to 0,0,0. 125.It Va dev.bnxt.X.iflib.override_ntxds 126Override the number of TX descriptors for each queue. 127The value is a comma separated list of two positive integers: the size of the 128completion ring, and the size of the transmit ring respectively. 129The completion ring should be at least twice the size of the transmit ring. 130These numbers must be powers of two, and zero means to use the default. 131Defaults to 0,0. 132.It Va override_qs_enable 133When set, allows the number of transmit and receive queues to be different. 134If not set, the lower of the number of TX or RX queues will be used for both. 135.It Va override_nrxqs 136Set the number of RX queues. 137If zero, the number of RX queues is derived from the number of cores on the 138socket connected to the controller. 139Defaults to 0. 140.It Va override_ntxqs 141Set the number of TX queues. 142If zero, the number of TX queues is derived from the number of cores on the 143socket connected to the controller. 144.El 145.Pp 146These 147.Xr sysctl 8 148variables can be changed at any time: 149.Bl -tag -width indent 150.It Va dev.bnxt.X.vlan_only 151Require that incoming frames must have a VLAN tag on them that matches one that 152is configured for the NIC. 153Normally, both frames that have a matching VLAN tag and frames that have no 154VLAN tag are accepted. 155Defaults to 0. 156.It Va dev.bnxt.X.vlan_strip 157When non-zero the NIC strips VLAN tags on receive. 158Defaults to 0. 159.It Va dev.bnxt.X.rx_stall 160Enable buffering rather than dropping frames when there are no available host 161RX buffers for DMA. 162Defaults to 0. 163.It Va dev.bnxt.X.rss_type 164Comma-separated list of RSS hash types to support. 165Default is all types. 166Defaults to ipv4,tcp_ipv4,udp_ipv4,ipv6,tcp_ipv6,udp_ipv6. 167.It Va dev.bnxt.X.rss_key 168Current RSS key. 169Defaults to a randomly generated value which is generated for each device 170during attach. 171.It Va dev.bnxt.X.ver.hwrm_min_ver 172Minimum HWRM (HardWare Resource Manager) firmware API to support. 173If the firmware implements an older version, a warning will be printed, and the 174firmware should be upgraded. 175Defaults to 1.2.2. 176.El 177.Pp 178These 179.Xr sysctl 8 180variables are read-only: 181.Bl -tag -width indent 182.It Va dev.bnxt.X.if_name 183Current interface name of the device. 184This will normally be 185.Va bnxtX , 186but this can be changed using 187.Cm ifconfig name . 188This sysctl allows correlating an interface with a child of 189.Va dev.bnxt . 190.It Va dev.bnxt.X.nvram.* 191Information about the NVRAM device which contains the device firmware. 192.It Va dev.bnxt.X.ver.* 193Version-related information about the device and firmware: 194.It Va dev.bnxt.X.ver.hwrm_if 195Supported HWRM API version of the currently running firmware. 196.It Va dev.bnxt.X.ver.driver_hwrm_if 197HWRM API version the driver was built to support. 198.It Va dev.bnxt.X.hwstats.* 199Per-queue statistics tracked by the hardware. 200.It Va dev.bnxt.X.hwstats.port_stats.* 201Per-port statistics tracked by the hardware. 202.It Va dev.bnxt.X.hwstats.rxq0.drop_pkts 203Number of packets dropped by hardware on queue zero. 204This number might seem high, but the count includes packets dropped due to 205incorrect destination MAC, unsubscribed multicast address, and other normal 206reasons to ignore Ethernet frames. 207.It Va dev.bnxt.X.hwstats.rxq0.tpa_* 208statistics related to HW LRO. 209.It Va dev.bnxt.X.hw_lro.* 210Enable / Disable HW LRO feature. Defaults to disable. 211Enabling HW LRO could cause issues when forwarding is enabled on host. 212.It Va dev.bnxt.X.fc 213Enable / Disable Flow Control feature. Defaults to Enable 214.El 215.Sh DIAGNOSTICS 216.Bl -diag 217.It "bnxt%d: %s command returned %s error." 218Device firmware rejected a command from the driver. 219There might be a driver/firmware HWRM API mismatch. 220.It "bnxt%d: Timeout sending %s (timeout: %d) seq %d" 221Device firmware unresponsive. 222A PCI device reset is likely needed. 223.It "bnxt%d: Timeout sending %s (timeout: %d) msg {0x%x 0x%x} len:%d v: %d" 224Partial firmware response. 225A PCI device reset is likely needed. 226.Pp 227As of this writing, the system must be rebooted to initiate a PCI device reset. 228.El 229.Sh SEE ALSO 230.Xr altq 4 , 231.Xr arp 4 , 232.Xr iflib 4 , 233.Xr netintro 4 , 234.Xr ng_ether 4 , 235.Xr vlan 4 , 236.Xr ifconfig 8 237.Sh HISTORY 238The 239.Nm 240device driver first appeared in 241.Fx 11.1 . 242.Sh AUTHORS 243.An -nosplit 244The 245.Nm 246driver was written by 247.An Jack Vogel Aq Mt jfvogel@gmail.com 248and 249.An Stephen Hurd Aq Mt shurd@freebsd.org , 250and is currently maintained by 251.An Broadcom Limited Aq Mt freebsd.pdl@broadcom.com . 252