1 .\" Copyright (c) 2016 Broadcom, All Rights Reserved.
2 .\" The term Broadcom refers to Broadcom Limited and/or its subsidiaries
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
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.
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.
33 .Nd "Broadcom NetXtreme-C/NetXtreme-E Family Ethernet driver"
35 To compile this driver into the kernel,
36 place the following lines in your
37 kernel configuration file:
38 .Bd -ragged -offset indent
42 Alternatively, to load the driver as a
43 module at boot time, place the following line in
45 .Bd -literal -offset indent
51 driver provides support for various NICs based on the Broadcom BCM57301/2/4,
52 and BCM57402/4/6 Ethernet controller chips.
54 For more information on configuring this device, see
59 driver provides support for various NICs based on the Broadcom NetXtreme-C and
60 NetXtreme-E families of Gigabit Ethernet controller chips, including the
65 Broadcom BCM57301 NetXtreme-C 10Gb Ethernet Controller
67 Broadcom BCM57302 NetXtreme-C 10Gb/25Gb Ethernet Controller
69 Broadcom BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet Controller
71 Broadcom BCM57402 NetXtreme-E 10Gb Ethernet Controller
73 Broadcom BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller
75 Broadcom BCM57406 NetXtreme-E 10GBase-T Ethernet Controller
77 Broadcom BCM57402 NetXtreme-E Partition
79 Broadcom BCM57407 NetXtreme-E 10GBase-T Ethernet Controller
81 Broadcom BCM57404 NetXtreme-E Partition
83 Broadcom BCM57406 NetXtreme-E Partition
85 Broadcom BCM57407 NetXtreme-E 25Gb Ethernet Controller
87 Broadcom BCM57304 NetXtreme-C Virtual Function
89 Broadcom BCM57404 NetXtreme-E Virtual Function
92 These variables must be set before loading the driver, either via
96 These are provided by the
98 framework, and might be better documented there.
99 .Bl -tag -width indent
100 .It Va dev.bnxt.X.iflib.override_nrxds
101 Override the number of RX descriptors for each queue.
102 The value is a comma separated list of three positive integers: the size of the
104 the size of the receive ring, and the size of the aggregation ring respectively.
105 The completion ring should be at least the size of the aggregation ring plus
106 four times the size of the receive ring.
107 These numbers must be powers of two, and zero means to use the default.
109 .It Va dev.bnxt.X.iflib.override_ntxds
110 Override the number of TX descriptors for each queue.
111 The value is a comma separated list of two positive integers: the size of the
112 completion ring, and the size of the transmit ring respectively.
113 The completion ring should be at least twice the size of the transmit ring.
114 These numbers must be powers of two, and zero means to use the default.
116 .It Va override_qs_enable
117 When set, allows the number of transmit and receive queues to be different.
118 If not set, the lower of the number of TX or RX queues will be used for both.
119 .It Va override_nrxqs
120 Set the number of RX queues.
121 If zero, the number of RX queues is derived from the number of cores on the
122 socket connected to the controller.
124 .It Va override_ntxqs
125 Set the number of TX queues.
126 If zero, the number of TX queues is derived from the number of cores on the
127 socket connected to the controller.
132 variables can be changed at any time:
133 .Bl -tag -width indent
134 .It Va dev.bnxt.X.vlan_only
135 Require that incoming frames must have a VLAN tag on them that matches one that
136 is configured for the NIC.
137 Normally, both frames that have a matching VLAN tag and frames that have no
138 VLAN tag are accepted.
140 .It Va dev.bnxt.X.vlan_strip
141 When non-zero the NIC strips VLAN tags on receive.
143 .It Va dev.bnxt.X.rx_stall
144 Enable buffering rather than dropping frames when there are no available host
147 .It Va dev.bnxt.X.rss_type
148 Comma-separated list of RSS hash types to support.
149 Default is all types.
150 Defaults to ipv4,tcp_ipv4,udp_ipv4,ipv6,tcp_ipv6,udp_ipv6.
151 .It Va dev.bnxt.X.rss_key
153 Defaults to a randomly generated value which is generated for each device
155 .It Va dev.bnxt.X.ver.hwrm_min_ver
156 Minimum HWRM (HardWare Resource Manager) firmware API to support.
157 If the firmware implements an older version, a warning will be printed, and the
158 firmware should be upgraded.
164 variables are read-only:
165 .Bl -tag -width indent
166 .It Va dev.bnxt.X.if_name
167 Current interface name of the device.
168 This will normally be
170 but this can be changed using
172 This sysctl allows correlating an interface with a child of
174 .It Va dev.bnxt.X.nvram.*
175 Information about the NVRAM device which contains the device firmware.
176 .It Va dev.bnxt.X.ver.*
177 Version-related information about the device and firmware:
178 .It Va dev.bnxt.X.ver.hwrm_if
179 Supported HWRM API version of the currently running firmware.
180 .It Va dev.bnxt.X.ver.driver_hwrm_if
181 HWRM API version the driver was built to support.
182 .It Va dev.bnxt.X.hwstats.*
183 Per-queue statistics tracked by the hardware.
184 .It Va dev.bnxt.X.hwstats.rxq0.drop_pkts
185 Number of packets dropped by hardware on queue zero.
186 This number might seem high, but the count includes packets dropped due to
187 incorrect destination MAC, unsubscribed multicast address, and other normal
188 reasons to ignore Ethernet frames.
192 .It "bnxt%d: %s command returned %s error."
193 Device firmware rejected a command from the driver.
194 There might be a driver/firmware HWRM API mismatch.
195 .It "bnxt%d: Timeout sending %s (timeout: %d) seq %d"
196 Device firmware unresponsive.
197 A PCI device reset is likely needed.
198 .It "bnxt%d: Timeout sending %s (timeout: %d) msg {0x%x 0x%x} len:%d v: %d"
199 Partial firmware response.
200 A PCI device reset is likely needed.
202 As of this writing, the system must be rebooted to initiate a PCI device reset.
215 device driver first appeared in
221 driver was written by
222 .An Jack Vogel Aq Mt jfvogel@gmail.com ,
223 and is currently maintained by
224 .An Stephen Hurd Aq Mt stephen.hurd@broadcom.com .