xref: /dragonfly/share/man/man4/igb.4 (revision 31524921)
1.\" Copyright (c) 2001-2003, Intel Corporation
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions are met:
6.\"
7.\" 1. Redistributions of source code must retain the above copyright notice,
8.\"    this list of conditions and the following disclaimer.
9.\"
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.\" 3. Neither the name of the Intel Corporation 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.
17.\"
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.
29.\"
30.\" * Other names and brands may be claimed as the property of others.
31.\"
32.\" $FreeBSD: src/share/man/man4/igb.4,v 1.2 2010/05/14 20:11:30 marius Exp $
33.\"
34.Dd November 28, 2014
35.Dt IGB 4
36.Os
37.Sh NAME
38.Nm igb
39.Nd "Intel(R) PRO/1000 PCI Express Gigabit Ethernet adapter driver"
40.Sh SYNOPSIS
41To compile this driver into the kernel,
42place the following line in your
43kernel configuration file:
44.Bd -ragged -offset indent
45.Cd "device ig_hal"
46.Cd "device igb"
47.Ed
48.Pp
49Alternatively, to load the driver as a
50module at boot time, place the following line in
51.Xr loader.conf 5 :
52.Bd -literal -offset indent
53ig_hal_load="YES"
54if_igb_load="YES"
55.Ed
56.Sh DESCRIPTION
57The
58.Nm
59driver provides support for PCI Express Gigabit Ethernet adapters based on
60the Intel
6182575,
6282576,
6382580,
64I210,
65I211,
66I350 and I354
67Ethernet controller chips.
68The
69.Nm
70driver supports:
71.Pp
72.Bl -item -offset indent -compact
73.It
74Transmit/Receive checksum offload for IP/UDP/TCP.
75.\"Jumbo Frames.
76.It
77Interrupt moderation
78.It
79TCP segmentation offload (TSO)
80.It
81Receive side scaling (RSS)
82.It
83Multiple tranmission queues
84.It
85Multiple vector MSI-X
86.It
87VLAN tag stripping and inserting
88.El
89.Pp
90If
91.Xr polling 4
92or MSI-X is used,
93by default,
94the
95.Nm
96driver will try enabling as many reception queues and transmission queues
97as are allowed by the number of CPUs in the system.
98.Pp
99If multiple transmission queues are used,
100the round-robin arbitration is performed among the transmission queues.
101It should be noted that
102if both TSO and multiple transmission queues are used,
103for 82575, the round-robin arbitration between transmission queues is done
104at the TSO packet boundary;
105for the reset of the hardware, the round-robin arbitration
106between transmission queues is done at the TCP segment boundary after
107the hardware segmentation is performed.
108.Pp
10982575 supports 4 reception queues and 4 transmission queues.
110MSI-X is not enabled due to hardware errata.
111Under MSI or legacy interrupt mode,
1122 reception queues are enabled for hardware RSS hash
113and only 1 transmission queue is enable.
114.Pp
11582576 supports 16 reception queues and 16 transmission queues.
116MSI-X is enable by default.
117However,
118due to the number of MSI-X vectors is 10,
119at most 8 reception queues and 8 transmission queues will be enabled
120under MSI-X mode.
121When
122.Xr polling 4
123is enabled on the devices,
124at most 16 reception queues and 16 transmission queues will be enabled.
125.Pp
12682580,
127I350 and I354 support 8 reception queues and 8 transmission queues.
128MSI-X is enabled by default.
129.Pp
130I210 supports 4 reception queues and 4 transmission queues.
131MSI-X is enabled by default.
132.Pp
133I211 supports 2 reception queues and 2 transmission queues.
134MSI-X is enabled by default.
135.Pp
136.\"For questions related to hardware requirements, refer to the
137.\"documentation supplied with your Intel PRO/1000 adapter.
138.\"All hardware requirements listed apply to use with
139.\".Dx .
140.\".Pp
141.\"Support for Jumbo Frames is provided via the interface MTU setting.
142.\"Selecting an MTU larger than 1500 bytes with the
143.\".Xr ifconfig 8
144.\"utility configures the adapter to receive and transmit Jumbo Frames.
145.\"The maximum MTU size for Jumbo Frames is 9216.
146.\".Pp
147The
148.Nm
149driver supports the following media types:
150.Bl -tag -width ".Cm 10baseT/UTP"
151.It Cm autoselect
152Enables auto-negotiation for speed and duplex.
153.It Cm 10baseT/UTP
154Sets 10Mbps operation.
155Use the
156.Cm mediaopt
157option to select
158.Cm full-duplex
159mode.
160.It Cm 100baseTX
161Sets 100Mbps operation.
162Use the
163.Cm mediaopt
164option to select
165.Cm full-duplex
166mode.
167.It Cm 1000baseSX
168Sets 1000Mbps operation.
169Only
170.Cm full-duplex
171mode is supported at this speed.
172.It Cm 1000baseT
173Sets 1000Mbps operation.
174Only
175.Cm full-duplex
176mode is supported at this speed.
177.El
178.Pp
179The
180.Nm
181driver supports the following media options:
182.Bl -tag -width ".Cm full-duplex"
183.It Cm full-duplex
184Forces full-duplex operation
185.It Cm half-duplex
186Forces half-duplex operation.
187.El
188.Pp
189Only use
190.Cm mediaopt
191to set the driver to
192.Cm full-duplex .
193If
194.Cm mediaopt
195is not specified, the driver defaults to
196.Cm half-duplex .
197.Pp
198For more information on configuring this device, see
199.Xr ifconfig 8 .
200The
201.Nm
202driver supports
203.Xr polling 4 .
204.Sh HARDWARE
205The
206.Nm
207driver supports Gigabit Ethernet adapters based on the Intel
20882575,
20982576,
21082580,
211I210,
212I211,
213I350 and I354
214controller chips:
215.Pp
216.Bl -bullet -compact
217.It
218Intel 82575EB Gigabit Ethernet Controller
219.It
220Intel 82576 Gigabit Ethernet Controller
221.It
222Intel 82580EB Gigabit Ethernet Controller
223.It
224Intel Ethernet Controller I210 Series
225.It
226Intel Ethernet Controller I211 Series
227.It
228Intel Ethernet Controller I350
229.It
230Intel Ethernet Controller I354
231.It
232Intel Ethernet Server Adapter I210-T1
233.It
234Intel Ethernet Server Adapter I340-F4
235.It
236Intel Ethernet Server Adapter I340-T4
237.It
238Intel Ethernet Server Adapter I350-F2
239.It
240Intel Ethernet Server Adapter I350-F4
241.It
242Intel Ethernet Server Adapter I350-T2
243.It
244Intel Ethernet Server Adapter I350-T4
245.It
246Intel Gigabit EF Dual Port Server Adapter
247.It
248Intel Gigabit ET Dual Port Server Adapter
249.It
250Intel Gigabit ET Quad Port Server Adapter
251.It
252Intel Gigabit ET2 Quad Port Server Adapter
253.It
254Intel Gigabit VT Quad Port Server Adapter
255.El
256.Sh TUNABLES
257Tunables can be set at the
258.Xr loader 8
259prompt before booting the kernel or stored in
260.Xr loader.conf 5 .
261.Em X
262is the device unit number.
263.Bl -tag -width ".Va hw.igbX.irq.unshared"
264.It Va hw.igb.rxd Va hw.igbX.rxd
265Number of receive descriptors allocated by the driver.
266The default value is 512.
267The minimum is 256,
268and the maximum is 4096.
269.It Va hw.igb.txd Va hw.igbX.txd
270Number of transmit descriptors allocated by the driver.
271The default value is 1024.
272The minimum is 256,
273and the maximum is 4096.
274.It Va hw.igb.rxr Va hw.igbX.rxr
275This tunable specifies the number of reception queues could be enabled.
276Maximum allowed value for these tunables is device specific
277and it must be power of 2 aligned.
278Setting these tunables to 0 allows the driver to make
279as many reception queues ready-for-use as allowed by the number of CPUs.
280.It Va hw.igb.txr Va hw.igbX.txr
281This tunable specifies the number of transmission queues could be enabled.
282Maximum allowed value for these tunables is device specific
283and it must be power of 2 aligned.
284Setting these tunables to 0 allows the driver to make
285as many transmission queues ready-for-use as allowed by the number of CPUs.
286.It Va hw.igb.msix.enable Va hw.igbX.msix.enable
287By default,
288the driver will use MSI-X if it is supported.
289This behaviour can be turned off by setting this tunable to 0.
290.It Va hw.igbX.msix.off
291If MSI-X is used
292and the number of MSI-X vectors is not enough to
293put transmission queue processing and reception queue processing
294onto independent MSI-X vector,
295this tunable specifies the leading target CPU for
296transmission and reception queues processing.
297The value specificed must be aligned to the maximum of
298the number of reception queues
299and the number of transmission queues enabled,
300and must be less than the power of 2 number of CPUs.
301.It Va hw.igbX.msix.rxoff
302If MSI-X is used
303and the number of MSI-X vectors is enough to
304put transmission queue processing and reception queue processing
305onto independent MSI-X vector,
306this tunable specifies the leading target CPU for reception queues processing.
307The value specificed must be aligned to the number of reception queues enabled
308and must be less than the power of 2 number of CPUs.
309.It Va hw.igbX.msix.txoff
310If MSI-X is used
311and the number of MSI-X vectors is enough to
312put transmission queue processing and reception queue processing
313onto independent MSI-X vector,
314this tunable specifies the leading target CPU
315for transmission queues processing.
316The value specificed must be aligned to
317the number of transmission queues enabled
318and must be less than the power of 2 number of CPUs.
319.It Va hw.igb.msi.enable Va hw.igbX.msi.enable
320If MSI-X is disabled and MSI is supported,
321the driver will use MSI.
322This behavior can be turned off by setting this tunable to 0.
323.It Va hw.igbX.msi.cpu
324If MSI is used,
325it specifies the MSI's target CPU.
326.It Va hw.igbX.irq.unshared
327If legacy interrupt is used,
328by default,
329the driver assumes the interrupt could be shared.
330Setting this tunable to 1 allows the driver to perform certain
331optimization based on the knowledge that the interrupt is not shared.
332.It Va hw.igbX.npoll.txoff
333This tunable specifies the leading target CPU for
334transmission queue
335.Xr polling 4
336processing.
337The value specificed must be aligned to the number of transmission queues
338enabled and must be less than the power of 2 number of CPUs.
339.It Va hw.igbX.npoll.rxoff
340This tunable specifies the leading target CPU for
341reception queue
342.Xr polling 4
343processing.
344The value specificed must be aligned to the number of reception queues
345enabled and must be less than the power of 2 number of CPUs.
346.El
347.Sh MIB Variables
348A number of per-interface variables are implemented in the
349.Va dev.igb. Ns Em X
350branch of the
351.Xr sysctl 3
352MIB.
353.Bl -tag -width "tx_intr_nsegs"
354.It Va rxr
355Number of reception queues could be enabled (read-only).
356Use the tunable
357.Va hw.igb.rxr
358or
359.Va hw.igbX.rxr
360to configure it.
361.It Va rxr_inuse
362Number of reception queues being used (read-only).
363.It Va txr
364Number of transmission queues could be enabled (read-only).
365Use the tunable
366.Va hw.igb.txr
367or
368.Va hw.igbX.txr
369to configure it.
370.It Va txr_inuse
371Number of transmission queues being used (read-only).
372.It Va rxd
373Number of descriptors per reception queue (read-only).
374Use the tunable
375.Va hw.igb.rxd
376or
377.Va hw.igbX.rxd
378to configure it.
379.It Va txd
380Number of descriptors per transmission queue (read-only).
381Use the tunable
382.Va hw.igb.txd
383or
384.Va hw.igbX.txd
385to configure it.
386.It Va intr_rate
387If MSI or legacy interrupt is used,
388this sysctl controls the highest possible frequency
389that interrupt could be generated by the device.
390It is 6000 by default (~150us).
391.It Va msixY_rate
392If MSI-X is used,
393this sysctl controls the highest possible frequency
394that interrupt could be generated by the
395.Em Y
396MSI-X vector.
397For reception processing only MSI-X vector,
398the default value is 6000 (~150us).
399For transmission processing only MSI-X vector,
400the default value is 4000 (250us).
401For MSI-X vector which handles both reception and transmission,
402the default value is 6000 (~150us).
403.It Va tx_intr_nsegs
404Transmission interrupt is asked to be generated upon every
405.Va tx_intr_nsegs
406transmission descritors having been setup.
407The default value is 1/16 of the number of transmission descriptors per queue.
408.It Va tx_wreg_nsegs
409The number of transmission descriptors should be setup
410before the hardware register is written.
411Setting this value too high will have negative effect
412on transmission timeliness.
413Setting this value too low will hurt overall transmission performance
414due to the frequent hardware register writing.
415The default value is 8.
416.It Va rx_wreg_nsegs
417The number of reception descriptors should be setup
418before the hardware register is written.
419Setting this value too high will make device drop incoming packets.
420Setting this value too low will hurt overall reception performance
421due to the frequent hardware register writing.
422The default value is 32.
423.It Va npoll_rxoff
424See the tunable
425.Va hw.igbX.npoll.rxoff .
426The set value will take effect the next time
427.Xr polling 4
428is enabled on the device.
429.It Va npoll_txoff
430See the tunable
431.Va hw.igbX.npoll.txoff .
432The set value will take effect the next time
433.Xr polling 4
434is enabled on the device.
435.El
436.\".Sh SUPPORT
437.\"For general information and support,
438.\"go to the Intel support website at:
439.\".Pa http://support.intel.com .
440.\".Pp
441.\"If an issue is identified with the released source code on the supported kernel
442.\"with a supported adapter, email the specific information related to the
443.\"issue to
444.\".Aq Mt freebsdnic@mailbox.intel.com .
445.Sh SEE ALSO
446.Xr altq 4 ,
447.Xr arp 4 ,
448.Xr ifmedia 4 ,
449.Xr netintro 4 ,
450.Xr ng_ether 4 ,
451.Xr polling 4 ,
452.Xr vlan 4 ,
453.Xr ifconfig 8
454.Sh HISTORY
455The
456.Nm
457device driver first appeared in
458.Fx 7.1 .
459.Sh AUTHORS
460The
461.Nm
462driver was written by
463.An Intel Corporation Aq Mt freebsdnic@mailbox.intel.com .
464