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