1 .\" Copyright (c) 2011-2016, Chelsio Inc
2 .\" All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions are met:
7 .\" 1. Redistributions of source code must retain the above copyright notice,
8 .\" 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 .\" 3. Neither the name of the Chelsio Inc nor the names of its
15 .\" contributors may be used to endorse or promote products derived from
16 .\" this software without specific prior written permission.
18 .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 .\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 .\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 .\" POSSIBILITY OF SUCH DAMAGE.
30 .\" * Other names and brands may be claimed as the property of others.
37 .Nd "Chelsio T4-, T5-, and T6-based 100Gb, 40Gb, 25Gb, 10Gb, and 1Gb Ethernet VF driver"
39 To compile this driver into the kernel,
40 place the following lines in your
41 kernel configuration file:
42 .Bd -ragged -offset indent
47 To load the driver as a
48 module at boot time, place the following line in
50 .Bd -literal -offset indent
56 driver provides support for Virtual Functions on PCI Express Ethernet adapters
57 based on the Chelsio Terminator 4, Terminator 5, and Terminator 6 ASICs
59 The driver supports Jumbo Frames, Transmit/Receive checksum offload,
60 TCP segmentation offload (TSO), Large Receive Offload (LRO), VLAN
61 tag insertion/extraction, VLAN checksum offload, VLAN TSO, and
62 Receive Side Steering (RSS).
63 For further hardware information and questions related to hardware
65 .Pa http://www.chelsio.com/ .
69 driver uses different names for devices based on the associated ASIC:
70 .Bl -column -offset indent "ASIC" "Port Name"
71 .It Sy ASIC Ta Sy Port Name Ta Sy Parent Device
72 .It T4 Ta cxgbev Ta t4vf
73 .It T5 Ta cxlv Ta t5vf
77 Loader tunables with the hw.cxgbe prefix apply to VFs from all cards.
78 The Physical Function driver for Chelsio Terminator adapters shares these
80 The driver provides sysctl MIBs for both ports and parent devices using
82 For example, a T5 VF provides port MIBs under dev.cxlv and
83 parent device MIBs under dev.t5vf.
84 References to sysctl MIBs in the remainder of this page use
85 dev.<port> for port MIBs and dev.<nexus> for parent device MIBs.
87 For more information on configuring this device, see
92 driver supports Virtual Functions on 100Gb and 25Gb Ethernet adapters
110 driver supports Virtual Functions on 40Gb, 10Gb and 1Gb Ethernet adapters
111 based on the T5 ASIC:
119 Chelsio T580-LP-SO-CR
142 driver supports Virtual Functions on 10Gb and 1Gb Ethernet adapters based
168 Tunables can be set at the
170 prompt before booting the kernel or stored in
172 .Bl -tag -width indent
174 Number of tx queues used for a port.
175 The default is 16 or the number
176 of CPU cores in the system, whichever is less.
178 Number of rx queues used for a port.
179 The default is 8 or the number
180 of CPU cores in the system, whichever is less.
181 .It Va hw.cxgbe.holdoff_timer_idx
182 Timer index value used to delay interrupts.
183 The holdoff timer list has the values 1, 5, 10, 50, 100, and 200
184 by default (all values are in microseconds) and the index selects a
185 value from this list.
186 The default value is 1 which means the timer value is 5us.
187 Different interfaces can be assigned different values at any time via the
188 dev.<port>.X.holdoff_tmr_idx sysctl.
189 .It Va hw.cxgbe.holdoff_pktc_idx
190 Packet-count index value used to delay interrupts.
191 The packet-count list has the values 1, 8, 16, and 32 by default,
192 and the index selects a value from this list.
193 The default value is -1 which means packet counting is disabled and interrupts
194 are generated based solely on the holdoff timer value.
195 Different interfaces can be assigned different values via the
196 dev.<port>.X.holdoff_pktc_idx sysctl.
197 This sysctl works only when the interface has never been marked up (as done by
199 .It Va hw.cxgbe.qsize_txq
200 Number of entries in a transmit queue's descriptor ring.
201 A buf_ring of the same size is also allocated for additional
205 The default value is 1024.
206 Different interfaces can be assigned different values via the
207 dev.<port>.X.qsize_txq sysctl.
208 This sysctl works only when the interface has never been marked up (as done by
210 .It Va hw.cxgbe.qsize_rxq
211 Number of entries in a receive queue's descriptor ring.
212 The default value is 1024.
213 Different interfaces can be assigned different values via the
214 dev.<port>.X.qsize_rxq sysctl.
215 This sysctl works only when the interface has never been marked up (as done by
217 .It Va hw.cxgbe.interrupt_types
218 Permitted interrupt types.
219 Bit 0 represents INTx (line interrupts), bit 1 MSI, and bit 2 MSI-X.
220 The default is 7 (all allowed).
221 The driver selects the best possible type out of the allowed types.
222 Note that Virtual Functions do not support INTx interrupts and fail
223 to attach if neither MSI nor MSI-X are enabled.
224 .It Va hw.cxgbe.fl_pktshift
225 Number of padding bytes inserted before the beginning of an Ethernet
226 frame in the receive buffer.
227 The default value of 2 ensures that the Ethernet payload (usually the IP header)
228 is at a 4 byte aligned address.
229 0-7 are all valid values.
230 .It Va hw.cxgbe.fl_pad
231 A non-zero value ensures that writes from the hardware to a receive buffer are
232 padded up to the specified boundary.
233 The default is -1 which lets the driver pick a pad boundary.
234 0 disables trailer padding completely.
235 .It Va hw.cxgbe.buffer_packing
236 Allow the hardware to deliver multiple frames in the same receive buffer
238 The default is -1 which lets the driver decide.
239 0 or 1 explicitly disable or enable this feature.
240 .It Va hw.cxgbe.allow_mbufs_in_cluster
241 1 allows the driver to lay down one or more mbufs within the receive buffer
244 0 prohibits the driver from doing so.
245 .It Va hw.cxgbe.largest_rx_cluster
246 .It Va hw.cxgbe.safest_rx_cluster
247 Sizes of rx clusters.
248 Each of these must be set to one of the sizes available
249 (usually 2048, 4096, 9216, and 16384) and largest_rx_cluster must be greater
250 than or equal to safest_rx_cluster.
251 The defaults are 16384 and 4096 respectively.
252 The driver never attempts to allocate a receive buffer larger than
253 largest_rx_cluster and falls back to allocating buffers of
254 safest_rx_cluster size if an allocation larger than safest_rx_cluster fails.
255 Note that largest_rx_cluster merely establishes a ceiling -- the driver is
256 allowed to allocate buffers of smaller sizes.
259 Certain settings and resources for Virtual Functions are dictated
260 by the parent Physical Function driver.
261 For example, the Physical Function driver limits the number of queues
262 available to a Virtual Function.
263 Some of these limits can be adjusted in the firmware configuration file
264 used with the Physical Function driver.
266 The PAUSE settings on the port of a Virtual Function are inherited from
267 the settings of the same port on the Physical Function.
268 Virtual Functions cannot modify the setting and track changes made to
269 the associated port's setting by the Physical Function driver.
271 Receive queues on a Virtual Function always drop packets in response to
274 equivalent to setting
275 .Va hw.cxgbe.cong_drop
279 The VF driver currently depends on the PF driver.
280 As a result, loading the VF driver also loads the PF driver as a
283 For general information and support,
284 go to the Chelsio support website at:
285 .Pa http://www.chelsio.com/ .
287 If an issue is identified with this driver with a supported adapter,
288 email all the specific information related to the issue to
289 .Aq Mt support@chelsio.com .
299 device driver first appeared in
307 driver was written by
308 .An Navdeep Parhar Aq Mt np@FreeBSD.org
310 .An John Baldwin Aq Mt jhb@FreeBSD.org .