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