xref: /freebsd/share/man/man4/bnxt.4 (revision d933e97f9d7c919e68dc6aca4a6819a13ab3fbbf)
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