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