xref: /freebsd/share/man/man4/bnxt.4 (revision 443788c26716250d8110b6aa6df481634a1a268f)
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 November 16, 2016
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 BCM57402 NetXtreme-E 10Gb Ethernet Controller
72.It
73Broadcom BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller
74.It
75Broadcom BCM57406 NetXtreme-E 10GBase-T Ethernet Controller
76.It
77Broadcom BCM57402 NetXtreme-E Partition
78.It
79Broadcom BCM57407 NetXtreme-E 10GBase-T Ethernet Controller
80.It
81Broadcom BCM57404 NetXtreme-E Partition
82.It
83Broadcom BCM57406 NetXtreme-E Partition
84.It
85Broadcom BCM57407 NetXtreme-E 25Gb Ethernet Controller
86.It
87Broadcom BCM57304 NetXtreme-C Virtual Function
88.It
89Broadcom BCM57404 NetXtreme-E Virtual Function
90.El
91.Sh SYSCTL VARIABLES
92These variables must be set before loading the driver, either via
93.Xr loader.conf 5
94or through the use of
95.Xr kenv 1 .
96These are provided by the
97.Xr iflib 9
98framework, and might be better documented there.
99.Bl -tag -width indent
100.It Va dev.bnxt.X.iflib.override_nrxds
101Override the number of RX descriptors for each queue.
102The value is a comma separated list of three positive integers: the size of the
103completion ring,
104the size of the receive ring, and the size of the aggregation ring respectively.
105The completion ring should be at least the size of the aggregation ring plus
106four times the size of the receive ring.
107These numbers must be powers of two, and zero means to use the default.
108Defaults to 0,0,0.
109.It Va dev.bnxt.X.iflib.override_ntxds
110Override the number of TX descriptors for each queue.
111The value is a comma separated list of two positive integers: the size of the
112completion ring, and the size of the transmit ring respectively.
113The completion ring should be at least twice the size of the transmit ring.
114These numbers must be powers of two, and zero means to use the default.
115Defaults to 0,0.
116.It Va override_qs_enable
117When set, allows the number of transmit and receive queues to be different.
118If not set, the lower of the number of TX or RX queues will be used for both.
119.It Va override_nrxqs
120Set the number of RX queues.
121If zero, the number of RX queues is derived from the number of cores on the
122socket connected to the controller.
123Defaults to 0.
124.It Va override_ntxqs
125Set the number of TX queues.
126If zero, the number of TX queues is derived from the number of cores on the
127socket connected to the controller.
128.El
129.Pp
130These
131.Xr sysctl 8
132variables can be changed at any time:
133.Bl -tag -width indent
134.It Va dev.bnxt.X.vlan_only
135Require that incoming frames must have a VLAN tag on them that matches one that
136is configured for the NIC.
137Normally, both frames that have a matching VLAN tag and frames that have no
138VLAN tag are accepted.
139Defaults to 0.
140.It Va dev.bnxt.X.vlan_strip
141When non-zero the NIC strips VLAN tags on receive.
142Defaults to 0.
143.It Va dev.bnxt.X.rx_stall
144Enable buffering rather than dropping frames when there are no available host
145RX buffers for DMA.
146Defaults to 0.
147.It Va dev.bnxt.X.rss_type
148Comma-separated list of RSS hash types to support.
149Default is all types.
150Defaults to ipv4,tcp_ipv4,udp_ipv4,ipv6,tcp_ipv6,udp_ipv6.
151.It Va dev.bnxt.X.rss_key
152Current RSS key.
153Defaults to a randomly generated value which is generated for each device
154during attach.
155.It Va dev.bnxt.X.ver.hwrm_min_ver
156Minimum HWRM (HardWare Resource Manager) firmware API to support.
157If the firmware implements an older version, a warning will be printed, and the
158firmware should be upgraded.
159Defaults to 1.2.2.
160.El
161.Pp
162These
163.Xr sysctl 8
164variables are read-only:
165.Bl -tag -width indent
166.It Va dev.bnxt.X.if_name
167Current interface name of the device.
168This will normally be
169.Va bnxtX ,
170but this can be changed using
171.Cm ifconfig name .
172This sysctl allows correlating an interface with a child of
173.Va dev.bnxt .
174.It Va dev.bnxt.X.nvram.*
175Information about the NVRAM device which contains the device firmware.
176.It Va dev.bnxt.X.ver.*
177Version-related information about the device and firmware:
178.It Va dev.bnxt.X.ver.hwrm_if
179Supported HWRM API version of the currently running firmware.
180.It Va dev.bnxt.X.ver.driver_hwrm_if
181HWRM API version the driver was built to support.
182.It Va dev.bnxt.X.hwstats.*
183Per-queue statistics tracked by the hardware.
184.It Va dev.bnxt.X.hwstats.rxq0.drop_pkts
185Number of packets dropped by hardware on queue zero.
186This number might seem high, but the count includes packets dropped due to
187incorrect destination MAC, unsubscribed multicast address, and other normal
188reasons to ignore Ethernet frames.
189.El
190.Sh DIAGNOSTICS
191.Bl -diag
192.It "bnxt%d: %s command returned %s error."
193Device firmware rejected a command from the driver.
194There might be a driver/firmware HWRM API mismatch.
195.It "bnxt%d: Timeout sending %s (timeout: %d) seq %d"
196Device firmware unresponsive.
197A PCI device reset is likely needed.
198.It "bnxt%d: Timeout sending %s (timeout: %d) msg {0x%x 0x%x} len:%d v: %d"
199Partial firmware response.
200A PCI device reset is likely needed.
201.Pp
202As of this writing, the system must be rebooted to initiate a PCI device reset.
203.El
204.Sh SEE ALSO
205.Xr altq 4 ,
206.Xr arp 4 ,
207.Xr iflib 4 ,
208.Xr netintro 4 ,
209.Xr ng_ether 4 ,
210.Xr vlan 4 ,
211.Xr ifconfig 8
212.Sh HISTORY
213The
214.Nm
215device driver first appeared in
216.Fx 12.0 .
217.Sh AUTHORS
218.An -nosplit
219The
220.Nm
221driver was written by
222.An Jack Vogel Aq Mt jfvogel@gmail.com ,
223and is currently maintained by
224.An Stephen Hurd Aq Mt stephen.hurd@broadcom.com .
225