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.
39 .Nd "Chelsio T4 and T5 based 40Gb, 10Gb, and 1Gb Ethernet VF driver"
41 To compile this driver into the kernel,
42 place the following lines in your
43 kernel configuration file:
44 .Bd -ragged -offset indent
49 To load the driver as a
50 module at boot time, place the following line in
52 .Bd -literal -offset indent
58 driver provides support for Virtual Functions on PCI Express Ethernet adapters
59 based on the Chelsio Terminator 4 and Terminator 5 ASICs (T4 and T5).
60 The driver supports Jumbo Frames, Transmit/Receive checksum offload,
61 TCP segmentation offload (TSO), Large Receive Offload (LRO), VLAN
62 tag insertion/extraction, VLAN checksum offload, VLAN TSO, and
63 Receive Side Steering (RSS).
64 For further hardware information and questions related to hardware
66 .Pa http://www.chelsio.com/ .
68 Note that ports of T5 VFs are named cxlv and attach to a t5vf parent device
69 (in contrast to ports named cxgbev that attach to a t4vf parent for a T4 VF).
70 Loader tunables with the hw.cxgbe prefix apply to both T4 and T5 VFs.
71 The Physical Function driver for T4 and T5 adapters shares these tunables.
72 The sysctl MIBs are at dev.t5vf and dev.cxlv for T5 cards and at dev.t4vf and
73 dev.cxgbev for T4 cards.
75 For more information on configuring this device, see
80 driver supports Virtual Functions on 40Gb, 10Gb and 1Gb Ethernet adapters
112 driver supports Virtual Functions on 10Gb and 1Gb Ethernet adapters based
138 Tunables can be set at the
140 prompt before booting the kernel or stored in
142 .Bl -tag -width indent
143 .It Va hw.cxgbe.ntxq10g
144 The number of tx queues to use for a 10Gb or 40Gb port.
145 The default is 16 or the number
146 of CPU cores in the system, whichever is less.
147 .It Va hw.cxgbe.nrxq10g
148 The number of rx queues to use for a 10Gb or 40Gb port.
149 The default is 8 or the number
150 of CPU cores in the system, whichever is less.
151 .It Va hw.cxgbe.ntxq1g
152 The number of tx queues to use for a 1Gb port.
153 The default is 4 or the number
154 of CPU cores in the system, whichever is less.
155 .It Va hw.cxgbe.nrxq1g
156 The number of rx queues to use for a 1Gb port.
157 The default is 2 or the number
158 of CPU cores in the system, whichever is less.
159 .It Va hw.cxgbe.holdoff_timer_idx_10G
160 .It Va hw.cxgbe.holdoff_timer_idx_1G
161 The timer index value to use to delay interrupts.
162 The holdoff timer list has the values 1, 5, 10, 50, 100, and 200
163 by default (all values are in microseconds) and the index selects a
164 value from this list.
165 The default value is 1 which means the timer value is 5us.
166 Different interfaces can be assigned different values at any time via the
167 dev.cxgbev.X.holdoff_tmr_idx or dev.cxlv.X.holdoff_tmr_idx sysctl.
168 .It Va hw.cxgbe.holdoff_pktc_idx_10G
169 .It Va hw.cxgbe.holdoff_pktc_idx_1G
170 The packet-count index value to use to delay interrupts.
171 The packet-count list has the values 1, 8, 16, and 32 by default
172 and the index selects a value from this list.
173 The default value is -1 which means packet counting is disabled and interrupts
174 are generated based solely on the holdoff timer value.
175 Different interfaces can be assigned different values via the
176 dev.cxgbev.X.holdoff_pktc_idx or dev.cxlv.X.holdoff_pktc_idx sysctl.
177 This sysctl works only when the interface has never been marked up (as done by
179 .It Va hw.cxgbe.qsize_txq
180 The size, in number of entries, of the descriptor ring used for a tx
182 A buf_ring of the same size is also allocated for additional
186 The default value is 1024.
187 Different interfaces can be assigned different values via the
188 dev.cxgbev.X.qsize_txq sysctl or dev.cxlv.X.qsize_txq sysctl.
189 This sysctl works only when the interface has never been marked up (as done by
191 .It Va hw.cxgbe.qsize_rxq
192 The size, in number of entries, of the descriptor ring used for an
194 The default value is 1024.
195 Different interfaces can be assigned different values via the
196 dev.cxgbev.X.qsize_rxq or dev.cxlv.X.qsize_rxq sysctl.
197 This sysctl works only when the interface has never been marked up (as done by
199 .It Va hw.cxgbe.interrupt_types
200 The interrupt types that the driver is allowed to use.
201 Bit 0 represents INTx (line interrupts), bit 1 MSI, bit 2 MSI-X.
202 The default is 7 (all allowed).
203 The driver will select the best possible type out of the allowed types by
205 .It Va hw.cxgbe.fl_pktshift
206 The number of bytes of padding inserted before the beginning of an Ethernet
207 frame in the receive buffer.
208 The default value of 2 ensures that the Ethernet payload (usually the IP header)
209 is at a 4 byte aligned address.
210 0-7 are all valid values.
211 .It Va hw.cxgbe.fl_pad
212 A non-zero value ensures that writes from the hardware to a receive buffer are
213 padded up to the specified boundary.
214 The default is -1 which lets the driver pick a pad boundary.
215 0 disables trailer padding completely.
216 .It Va hw.cxgbe.buffer_packing
217 Allow the hardware to deliver multiple frames in the same receive buffer
219 The default is -1 which lets the driver decide.
220 0 or 1 explicitly disable or enable this feature.
221 .It Va hw.cxgbe.allow_mbufs_in_cluster
222 1 allows the driver to lay down one or more mbufs within the receive buffer
225 0 prohibits the driver from doing so.
226 .It Va hw.cxgbe.largest_rx_cluster
227 .It Va hw.cxgbe.safest_rx_cluster
228 Sizes of rx clusters.
229 Each of these must be set to one of the sizes available
230 (usually 2048, 4096, 9216, and 16384) and largest_rx_cluster must be greater
231 than or equal to safest_rx_cluster.
232 The defaults are 16384 and 4096 respectively.
233 The driver will never attempt to allocate a receive buffer larger than
234 largest_rx_cluster and will fall back to allocating buffers of
235 safest_rx_cluster size if an allocation larger than safest_rx_cluster fails.
236 Note that largest_rx_cluster merely establishes a ceiling -- the driver is
237 allowed to allocate buffers of smaller sizes.
240 Certain settings and resources for Virtual Functions are dictated
241 by the parent Physical Function driver.
242 For example, the Physical Function driver limits the number of queues a
243 Virtual Function is permitted to use.
244 Some of these limits can be adjusted in the firmware configuration file
245 used with the Physical Function driver.
247 The PAUSE settings on the port of a Virtual Function are inherited from
248 the settings of the same port on the Physical Function.
249 Virtual Functions cannot modify the setting and track changes made to
250 the associated port's setting by the Physical Function driver.
252 Receive queues on a Virtual Function always drop packets in response to
255 equivalent to setting
256 .Va hw.cxgbe.cong_drop
260 The VF driver currently depends on the PF driver.
261 As a result, loading the VF driver will also load the PF driver as a
264 For general information and support,
265 go to the Chelsio support website at:
266 .Pa http://www.chelsio.com/ .
268 If an issue is identified with this driver with a supported adapter,
269 email all the specific information related to the issue to
270 .Aq Mt support@chelsio.com .
281 device driver first appeared in
287 driver was written by
288 .An Navdeep Parhar Aq Mt np@FreeBSD.org
290 .An John Baldwin Aq Mt jhb@FreeBSD.org .