xref: /freebsd/share/man/man4/bnxt.4 (revision 7049547cd3bb0b2b3eac3267de2ed47f2f58ff1d)
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 September 20, 2018
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 4
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