xref: /dflybsd-src/share/man/man4/igb.4 (revision 7a27faded6bccbda68815bb82b3be97f731409b9)
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 June 21, 2013
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,
66and I350
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 hardwares, 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 and I350 support 8 reception queues and 8 transmission queues.
127MSI-X is enabled by default.
128.Pp
129I210 supports 4 reception queues and 4 transmission queues.
130MSI-X is enabled by default.
131.Pp
132I211 supports 2 reception queues and 2 transmission queues.
133MSI-X is enabled by default.
134.Pp
135.\"For questions related to hardware requirements, refer to the
136.\"documentation supplied with your Intel PRO/1000 adapter.
137.\"All hardware requirements listed apply to use with
138.\".Dx .
139.\".Pp
140.\"Support for Jumbo Frames is provided via the interface MTU setting.
141.\"Selecting an MTU larger than 1500 bytes with the
142.\".Xr ifconfig 8
143.\"utility configures the adapter to receive and transmit Jumbo Frames.
144.\"The maximum MTU size for Jumbo Frames is 9216.
145.\".Pp
146The
147.Nm
148driver supports the following media types:
149.Bl -tag -width ".Cm 10baseT/UTP"
150.It Cm autoselect
151Enables auto-negotiation for speed and duplex.
152.It Cm 10baseT/UTP
153Sets 10Mbps operation.
154Use the
155.Cm mediaopt
156option to select
157.Cm full-duplex
158mode.
159.It Cm 100baseTX
160Sets 100Mbps operation.
161Use the
162.Cm mediaopt
163option to select
164.Cm full-duplex
165mode.
166.It Cm 1000baseSX
167Sets 1000Mbps operation.
168Only
169.Cm full-duplex
170mode is supported at this speed.
171.It Cm 1000baseT
172Sets 1000Mbps operation.
173Only
174.Cm full-duplex
175mode is supported at this speed.
176.El
177.Pp
178The
179.Nm
180driver supports the following media options:
181.Bl -tag -width ".Cm full-duplex"
182.It Cm full-duplex
183Forces full-duplex operation
184.It Cm half-duplex
185Forces half-duplex operation.
186.El
187.Pp
188Only use
189.Cm mediaopt
190to set the driver to
191.Cm full-duplex .
192If
193.Cm mediaopt
194is not specified, the driver defaults to
195.Cm half-duplex .
196.Pp
197For more information on configuring this device, see
198.Xr ifconfig 8 .
199The
200.Nm
201driver supports
202.Xr polling 4 .
203.Sh HARDWARE
204The
205.Nm
206driver supports Gigabit Ethernet adapters based on the Intel
20782575,
20882576,
20982580,
210I210,
211I211,
212and I350
213controller chips:
214.Pp
215.Bl -bullet -compact
216.It
217Intel 82575EB Gigabit Ethernet Controller
218.It
219Intel 82576 Gigabit Ethernet Controller
220.It
221Intel 82580EB Gigabit Ethernet Controller
222.It
223Intel Ethernet Controller I210 Series
224.It
225Intel Ethernet Controller I211 Series
226.It
227Intel Ethernet Controller I350
228.It
229Intel Ethernet Server Adapter I210-T1
230.It
231Intel Ethernet Server Adapter I340-F4
232.It
233Intel Ethernet Server Adapter I340-T4
234.It
235Intel Ethernet Server Adapter I350-F2
236.It
237Intel Ethernet Server Adapter I350-F4
238.It
239Intel Ethernet Server Adapter I350-T2
240.It
241Intel Ethernet Server Adapter I350-T4
242.It
243Intel Gigabit EF Dual Port Server Adapter
244.It
245Intel Gigabit ET Dual Port Server Adapter
246.It
247Intel Gigabit ET Quad Port Server Adapter
248.It
249Intel Gigabit ET2 Quad Port Server Adapter
250.It
251Intel Gigabit VT Quad Port Server Adapter
252.El
253.Sh TUNABLES
254Tunables can be set at the
255.Xr loader 8
256prompt before booting the kernel or stored in
257.Xr loader.conf 5 .
258.Em X
259is the device unit number.
260.Bl -tag -width ".Va hw.igbX.irq.unshared"
261.It Va hw.igb.rxd Va hw.igbX.rxd
262Number of receive descriptors allocated by the driver.
263The default value is 512.
264The minimum is 256,
265and the maximum is 4096.
266.It Va hw.igb.txd Va hw.igbX.txd
267Number of transmit descriptors allocated by the driver.
268The default value is 1024.
269The minimum is 256,
270and the maximum is 4096.
271.It Va hw.igb.rxr Va hw.igbX.rxr
272This tunable specifies the number of reception queues could be enabled.
273Maximum allowed value for these tunables is device specific
274and it must be power of 2 aligned.
275Setting these tunables to 0 allows the driver to make
276as many reception queues ready-for-use as allowed by the number of CPUs.
277.It Va hw.igb.txr Va hw.igbX.txr
278This tunable specifies the number of transmission queues could be enabled.
279Maximum allowed value for these tunables is device specific
280and it must be power of 2 aligned.
281Setting these tunables to 0 allows the driver to make
282as many transmission queues ready-for-use as allowed by the number of CPUs.
283.It Va hw.igb.msix.enable Va hw.igbX.msix.enable
284By default,
285the driver will use MSI-X if it is supported.
286This behaviour can be turned off by setting this tunable to 0.
287.It Va hw.igbX.msix.off
288If MSI-X is used
289and the number of MSI-X vectors is not enough to
290put transmission queue processing and reception queue processing
291onto independent MSI-X vector,
292this tunable specifies the leading target CPU for
293transmission and reception queues processing.
294The value specificed must be aligned to the maximum of
295the number of reception queues
296and the number of transmission queues enabled,
297and must be less than the power of 2 number of CPUs.
298.It Va hw.igbX.msix.rxoff
299If MSI-X is used
300and the number of MSI-X vectors is enough to
301put transmission queue processing and reception queue processing
302onto independent MSI-X vector,
303this tunable specifies the leading target CPU for reception queues processing.
304The value specificed must be aligned to the number of reception queues enabled
305and must be less than the power of 2 number of CPUs.
306.It Va hw.igbX.msix.txoff
307If MSI-X is used
308and the number of MSI-X vectors is enough to
309put transmission queue processing and reception queue processing
310onto independent MSI-X vector,
311this tunable specifies the leading target CPU
312for transmission queues processing.
313The value specificed must be aligned to
314the number of transmission queues enabled
315and must be less than the power of 2 number of CPUs.
316.It Va hw.igb.msi.enable Va hw.igbX.msi.enable
317If MSI-X is disabled and MSI is supported,
318the driver will use MSI.
319This behavior can be turned off by setting this tunable to 0.
320.It Va hw.igbX.msi.cpu
321If MSI is used,
322it specifies the MSI's target CPU.
323.It Va hw.igbX.irq.unshared
324If legacy interrupt is used,
325by default,
326the driver assumes the interrupt could be shared.
327Setting this tunable to 1 allows the driver to perform certain
328optimization based on the knowledge that the interrupt is not shared.
329.It Va hw.igbX.npoll.txoff
330This tunable specifies the leading target CPU for
331transmission queue
332.Xr polling 4
333processing.
334The value specificed must be aligned to the number of transmission queues
335enabled and must be less than the power of 2 number of CPUs.
336.It Va hw.igbX.npoll.rxoff
337This tunable specifies the leading target CPU for
338reception queue
339.Xr polling 4
340processing.
341The value specificed must be aligned to the number of reception queues
342enabled and must be less than the power of 2 number of CPUs.
343.El
344.Sh MIB Variables
345A number of per-interface variables are implemented in the
346.Va hw.igb Ns Em X
347branch of the
348.Xr sysctl 3
349MIB.
350.Bl -tag -width "tx_intr_nsegs"
351.It Va rxr
352Number of reception queues could be enabled (read-only).
353Use the tunable
354.Va hw.igb.rxr
355or
356.Va hw.igbX.rxr
357to configure it.
358.It Va rxr_inuse
359Number of reception queues being used (read-only).
360.It Va txr
361Number of transmission queues could be enabled (read-only).
362Use the tunable
363.Va hw.igb.txr
364or
365.Va hw.igbX.txr
366to configure it.
367.It Va txr_inuse
368Number of transmission queues being used (read-only).
369.It Va rxd
370Number of descriptors per reception queue (read-only).
371Use the tunable
372.Va hw.igb.rxd
373or
374.Va hw.igbX.rxd
375to configure it.
376.It Va txd
377Number of descriptors per transmission queue (read-only).
378Use the tunable
379.Va hw.igb.txd
380or
381.Va hw.igbX.txd
382to configure it.
383.It Va intr_rate
384If MSI or legacy interrupt is used,
385this sysctl controls the highest possible frequency
386that interrupt could be generated by the device.
387It is 6000 by default (~150us).
388.It Va msixY_rate
389If MSI-X is used,
390this sysctl controls the highest possible frequency
391that interrupt could be generated by the
392.Em Y
393MSI-X vector.
394For reception processing only MSI-X vector,
395the default value is 6000 (~150us).
396For transmission processing only MSI-X vector,
397the default value is 4000 (250us).
398For MSI-X vector which handles both reception and transmission,
399the default value is 6000 (~150us).
400.It Va tx_intr_nsegs
401Transmission interrupt is asked to be generated upon every
402.Va tx_intr_nsegs
403transmission descritors having been setup.
404The default value is 1/16 of the number of transmission descriptors per queue.
405.It Va tx_wreg_nsegs
406The number of transmission descriptors should be setup
407before the hardware register is written.
408Setting this value too high will have negative effect
409on transmission timeliness.
410Setting this value too low will hurt overall transmission performance
411due to the frequent hardware register writing.
412The default value is 8.
413.It Va rx_wreg_nsegs
414The number of reception descriptors should be setup
415before the hardware register is written.
416Setting this value too high will make device drop incoming packets.
417Setting this value too low will hurt overall reception performance
418due to the frequent hardware register writing.
419The default value is 32.
420.It Va npoll_rxoff
421See the tunable
422.Va hw.igbX.npoll.rxoff .
423The set value will take effect the next time
424.Xr polling 4
425is enabled on the device.
426.It Va npoll_txoff
427See the tunable
428.Va hw.igbX.npoll.txoff .
429The set value will take effect the next time
430.Xr polling 4
431is enabled on the device.
432.El
433.\".Sh SUPPORT
434.\"For general information and support,
435.\"go to the Intel support website at:
436.\".Pa http://support.intel.com .
437.\".Pp
438.\"If an issue is identified with the released source code on the supported kernel
439.\"with a supported adapter, email the specific information related to the
440.\"issue to
441.\".Aq Mt freebsdnic@mailbox.intel.com .
442.Sh SEE ALSO
443.Xr altq 4 ,
444.Xr arp 4 ,
445.Xr ifmedia 4 ,
446.Xr netintro 4 ,
447.Xr ng_ether 4 ,
448.Xr polling 4 ,
449.Xr vlan 4 ,
450.Xr ifconfig 8
451.Sh HISTORY
452The
453.Nm
454device driver first appeared in
455.Fx 7.1 .
456.Sh AUTHORS
457The
458.Nm
459driver was written by
460.An Intel Corporation Aq Mt freebsdnic@mailbox.intel.com .
461