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