README revision 169240
1$FreeBSD: head/sys/dev/em/README 169240 2007-05-04 00:00:12Z jfv $
2FreeBSD Driver for the Gigabit Family of Adapters
3============================================================
4
5April 18, 2007
6
7
8Contents
9========
10
11- Overview
12- Identifying Your Adapter
13- Building and Installation
14- Speed and Duplex Configuration
15- Additional Configurations
16- Known Limitations
17- Support
18- License
19
20
21Overview
22========
23
24This file describes the FreeBSD* driver for the Gigabit Family of
25Adapters. This driver has been developed for use with FreeBSD, Release 6.x.
26
27For questions related to hardware requirements, refer to the documentation
28supplied with your Gigabit adapter. All hardware requirements listed
29apply to use with FreeBSD.
30
31
32Identifying Your Adapter
33========================
34
35For information on how to identify your adapter, go to the Adapter &
36Driver ID Guide at:
37
38http://support.intel.com/support/network/sb/cs-012904.htm
39
40
41For the latest Intel network drivers for FreeBSD, see:
42
43http://downloadfinder.intel.com/scripts-df-external/support_intel.aspx
44
45
46NOTE: Mobile adapters are not fully supported.
47NOTE: The Intel(R) 82562v 10/100 Network Connection only provides 10/100
48support.
49
50Building and Installation
51=========================
52
53NOTE: The driver can be installed as a dynamic loadable kernel module or
54      compiled into the kernel. You must have kernel sources installed in
55      order to compile the driver module.
56
57In the instructions below, x.x.x is the driver version as indicated in the
58name of the driver tar file.
59
601. Move the base driver tar file to the directory of your choice. For
61   example, use /home/username/em or /usr/local/src/em.
62
632. Untar/unzip the archive:
64
65        tar xzvf em-x.x.x.tar.gz
66
67   This will create an em-x.x.x directory.
68
693. To create a loadable module, perform the following steps.
70   NOTE: To compile the driver into the kernel, go directly to step 4.
71
72        a. To compile the module
73
74                  cd em-x.x.x
75                  make
76
77        b. To install the compiled module to the system directory:
78
79                  make install
80
81        c. If you want the driver to load automatically when the system is booted:
82
83              1. Edit /boot/loader.conf, and add the following line:
84
85                  if_em_load="YES"
86
874. To compile the driver into the kernel, enter:
88
89        cd em-x.x.x/src
90        cp *.[ch] /usr/src/sys/dev/em
91        cp Makefile.kernel /usr/src/sys/modules/em/Makefile
92
93        NOTE: At this point you MUST install a patch, kernbuild.patch, which is
94        located in the patches directory. This is applied as shown below where
95        "$PATH_TO_KERNBUILD_PATCH" is the location of the kernbuild.patch:
96
97        cd /usr/src/sys; patch -p1 < $PATH_TO_KERNBUILD_PATCH
98
99        Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in
100        /usr/src/sys/i386/conf, and ensure the following line is present:
101
102        device em
103
104        Compile and install the kernel. The system must be rebooted for the
105        kernel updates to take effect. For additional information on compiling
106        the kernel, consult the FreeBSD operating system documentation.
107
1085. To assign an IP address to the interface, enter the following:
109
110        ifconfig em<interface_num> <IP_address>
111
1126. Verify that the interface works. Enter the following, where <IP_address>
113   is the IP address for another machine on the same subnet as the interface
114   that is being tested:
115
116        ping <IP_address>
117
1187. To configure the IP address to remain after reboot, edit /etc/rc.conf,
119   and create the appropriate ifconfig_em<interface_num>entry:
120
121        ifconfig_em<interface_num>="<ifconfig_settings>"
122
123   Example usage:
124
125        ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0"
126
127   NOTE: For assistance, see the ifconfig man page.
128
129
130Speed and Duplex Configuration
131==============================
132
133By default, the adapter auto-negotiates the speed and duplex of the
134connection. If there is a specific need, the ifconfig utility can be used to
135configure the speed and duplex settings on the adapter. Example usage:
136
137        ifconfig em<interface_num> <IP_address> media 100baseTX mediaopt
138            full-duplex
139
140   NOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is
141         not specified and you are not running at gigabit speed, the driver
142         defaults to half-duplex.
143
144If the interface is currently forced to 100 full duplex, in order to change
145to half duplex you must use this command:
146
147        ifconfig em<interface_num> <IP_address> media 100baseTX -mediaopt
148            full-duplex
149
150
151This driver supports the following media type options:
152
153   autoselect      -  Enables auto-negotiation for speed and duplex.
154
155   10baseT/UTP     -  Sets speed to 10 Mbps. Use the ifconfig mediaopt
156                      option to select full-duplex mode.
157
158   100baseTX       -  Sets speed to 100 Mbps. Use the ifconfig mediaopt
159                      option to select full-duplex mode.
160
161   1000baseTX      -  Sets speed to 1000 Mbps. In this case, the driver
162                      supports only full-duplex mode.
163
164   1000baseSX      -  Sets speed to 1000 Mbps. In this case, the driver
165                      supports only full-duplex mode.
166
167For more information on the ifconfig utility, see the ifconfig man page.
168
169
170Additional Configurations
171=========================
172
173The driver supports Transmit/Receive Checksum Offload and Jumbo Frames on
174all but the 82542-based adapters.  For specific adapters, refer to the
175Identifying Your Adapter section.
176
177  Jumbo Frames
178  ------------
179  To enable Jumbo Frames, use the ifconfig utility to set the Maximum
180  Transport Unit (MTU) frame size above its default of 1500 bytes.
181
182  The Jumbo Frames MTU range for Intel Adapters is 1500 to 16110. To modify
183  the setting, enter the following:
184
185        ifconfig em<interface_num> <hostname or IP address> mtu 9000
186
187  To confirm the MTU used between two specific devices, use:
188
189        route get <destination_IP_address>
190
191  Notes:
192
193  - Only enable Jumbo Frames if your network infrastructure supports them.
194
195  - To enable Jumbo Frames, increase the MTU size on the interface beyond
196    1500.
197
198  - The Jumbo Frames setting on the switch must be set to at least 22 bytes
199    larger than that of the MTU.
200
201  - The maximum MTU setting for Jumbo Frames is 16110.  This value coincides
202    with the maximum Jumbo Frames size of 16128.
203
204  - Some Intel gigabit adapters that support Jumbo Frames have a frame size
205    limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes.
206    The adapters with this limitation are based on the Intel(R) 82571EB,
207    82572EI, 82573L, 82566, 82562, and 80003ES2LAN controller.  These
208    correspond to the following product names:
209     Intel(R) PRO/1000 PT Server Adapter
210     Intel(R) PRO/1000 PT Desktop Adapter
211     Intel(R) PRO/1000 PT Network Connection
212     Intel(R) PRO/1000 PT Dual Port Server Adapter
213     Intel(R) PRO/1000 PT Dual Port Network Connection
214     Intel(R) PRO/1000 PF Server Adapter
215     Intel(R) PRO/1000 PF Network Connection
216     Intel(R) PRO/1000 PF Dual Port Server Adapter
217     Intel(R) PRO/1000 PB Server Connection
218     Intel(R) PRO/1000 PL Network Connection
219     Intel(R) PRO/1000 EB Network Connection with I/O Acceleration
220     Intel(R) PRO/1000 EB Backplane Connection with I/O Acceleration
221     Intel(R) 82566DM-2 Gigabit Network Connection
222
223  - Adapters based on the Intel(R) 82542 and 82573V/E controller do not
224    support Jumbo Frames. These correspond to the following product names:
225     Intel(R) PRO/1000 Gigabit Server Adapter
226     Intel(R) PRO/1000 PM Network Connection
227
228  - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or
229    loss of link.
230
231  - The following adapters do not support Jumbo Frames:
232    Intel(R) 82562V 10/100 Network Connection
233    Intel(R) 82566DM Gigabit Network Connection
234    Intel(R) 82566DC Gigabit Network Connection
235    Intel(R) 82566MM Gigabit Network Connection
236    Intel(R) 82566MC Gigabit Network Connection
237    Intel(R) 82562GT 10/100 Network Connection
238    Intel(R) 82562G 10/100 Network Connection
239    Intel(R) 82566DC-2 Gigabit Network Connection
240    Intel(R) 82562V-2 10/100 Network Connection
241    Intel(R) 82562G-2 10/100 Network Connection
242    Intel(R) 82562GT-2 10/100 Network Connection
243
244  VLANs
245  -----
246  To create a new VLAN interface:
247
248        ifconfig <vlan_name> create
249
250  To associate the VLAN interface with a physical interface and
251  assign a VLAN ID, IP address, and netmask:
252
253        ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan
254           <vlan_id> vlandev <physical_interface>
255
256  Example:
257
258        ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan 10 vlandev em0
259
260  In this example, all packets will be marked on egress with 802.1Q VLAN
261  tags, specifying a VLAN ID of 10.
262
263  To remove a VLAN interface:
264
265        ifconfig <vlan_name> destroy
266
267
268  Polling
269  -------
270  NOTES: Device Polling is only valid for non-SMP (Symmetric MultiProcessing)
271  kernels.
272
273        The driver has to be compiled into the kernel for Device Polling to be
274        enabled in the driver.
275
276  To enable polling in the driver, add the following options to the kernel
277  configuration, and then recompile the kernel:
278
279        options DEVICE_POLLING
280        options HZ=1000
281
282  At runtime use:
283        sysctl kern.polling.enable=1 to turn polling on
284  Use:
285        sysctl kern.polling.enable=0 to turn polling off
286
287
288  Checksum Offload
289  ----------------
290  Checksum offloading is not supported on 82542 Gigabit adapters.
291
292  Checksum offloading supports both TCP and UDP packets and is
293  supported for both transmit and receive.
294
295  Checksum offloading can be enabled or disabled using ifconfig.
296  Both transmit and receive offloading will be either enabled or
297  disabled together. You cannot enable/disable one without the other.
298
299  To enable checksum offloading:
300
301         ifconfig <interface_num> rxcsum
302
303  To disable checksum offloading:
304
305         ifconfig <interface_num> -rxcsum
306
307  To confirm the current setting:
308
309         ifconfig <interface_num>
310
311  Look for the presence or absence of the following line:
312
313         options=3 <RXCSUM,TXCSUM>
314
315  See the ifconfig man page for further information.
316
317
318  TSO
319  ---
320  The FreeBSD driver now offers support for TSO (TCP Segmentation Offload).
321  To enable this support perform the following:
322
323  Patch the kernel with the patch supplied in the tarball.
324  Rebuild and install the kernel.
325  Recompile the driver. You must alter the Makefile to build the driver with
326  E1000_TSO defined.
327
328  Enable or disable TSO:
329          sysctl net.inet.tcp.tso=1 or 0
330          0=disabled, 1=enabled (TSO is enabled by default).
331
332  NOTE: TSO is not supported on 82547 and 82544-based adapters, as well as
333  older adapters.
334
335
336Known Limitations
337=================
338
339  Detected Tx Unit Hang in Quad Port Adapters
340  -------------------------------------------
341
342  In some cases ports 3 and 4 wont pass traffic. Ports 1 and 2 don't show
343  any errors and will pass traffic.
344
345  This issue MAY be resolved by updating to the latest BIOS. You can
346  check your system's BIOS by downloading the Linux Firmware Developer Kit
347  that can be obtained at http://www.linuxfirmwarekit.org/
348
349  FreeBSD version 4.x with Symmetric MultiProcessing (SMP)
350  --------------------------------------------------------
351
352  In FreeBSD version 4.x with Symmetric MultiProcessing (SMP), there is a known
353  issue on some newer hardware.  The problem is kernel generic and only in SMP
354  mode.  The workaround is to either use FreeBSD version 4.x in single processor
355  mode, or use FreeBSD 5.4 or later.
356
357  There are known performance issues with this driver when running UDP traffic
358  with Jumbo Frames.
359  ----------------------------------------------------------------------------
360
361  82541/82547 can't link or is slow to link with some link partners
362  -----------------------------------------------------------------
363
364  There is a known compatibility issue where time to link is slow or link is not
365  established between 82541/82547 controllers and some switches.  Known switches
366  include:
367        Planex FXG-08TE
368        I-O Data ETG-SH8
369
370  The driver can be compiled with the following changes:
371
372  Edit ./em.x.x.x/src/if_em.h to uncomment the #define E1000_MASTER_SLAVE
373  from within the comments.  For example, change from:
374
375      /* #define E1000_MASTER_SLAVE   2 */
376  to:
377      #define E1000_MASTER_SLAVE   2
378
379  Use one of the following options:
380      1 = Master mode
381      2 = Slave mode
382      3 = Auto master/slave
383  Setting 2 is recommended.
384
385  Recompile the module:
386          a. To compile the module
387                cd em-x.x.x
388                make clean
389                make
390
391   b. To install the compiled module in system directory:
392                make install
393
394
395Support
396=======
397
398For general information and support, go to the Intel support website at:
399
400        http://support.intel.com
401
402If an issue is identified, support is through email only at:
403freebsdnic@mailbox.intel.com
404
405
406License
407=======
408
409This software program is released under the terms of a license agreement
410between you ('Licensee') and Intel. Do not use or load this software or any
411associated materials (collectively, the 'Software') until you have carefully
412read the full terms and conditions of the LICENSE located in this software
413package. By loading or using the Software, you agree to the terms of this
414Agreement. If you do not agree with the terms of this Agreement, do not
415install or use the Software.
416
417* Other names and brands may be claimed as the property of others.
418