35b64fa6d2be76659bdce57d3a2096510f83e4ac
[dragonfly.git] / sys / dev / netif / em / README
1 $FreeBSD: src/sys/dev/em/README,v 1.1.2.7 2003/06/09 21:43:41 pdeuskar Exp $
2 $DragonFly: src/sys/dev/netif/em/README,v 1.3 2004/03/17 04:59:41 dillon Exp $
3 FreeBSD* Driver for the Intel(R) PRO/1000 Family of Adapters
4 ============================================================
5
6 July 24, 2003
7
8
9 Contents
10 ========
11
12 - Overview
13 - Supported Adapters
14 - Building and Installation
15 - Speed and Duplex Configuration
16 - Additional Configurations
17 - Known Limitations
18 - Support
19 - License
20
21
22 Overview
23 ========
24
25 This file describes the FreeBSD* driver, version 1.7.x, for the Intel(R)
26 PRO/1000 Family of Adapters. This driver has been developed for use with 
27 FreeBSD, version 4.7. 
28
29 For questions related to hardware requirements, refer to the documentation 
30 supplied with your Intel PRO/1000 adapter. All hardware requirements listed 
31 apply to use with FreeBSD.
32
33
34 Supported Adapters
35 ==================
36
37 The following Intel network adapters are compatible with the drivers in this 
38 release:
39
40    Controller  Adapter Name                         Board IDs
41    ----------  ------------                         ---------
42
43    82542       PRO/1000 Gigabit Server Adapter      700262-xxx, 717037-xxx
44
45    82543       PRO/1000 F Server Adapter            738640-xxx, A38888-xxx,
46                                                     A06512-xxx
47
48    82543       PRO/1000 T Server Adapter            A19845-xxx, A33948-xxx
49
50    82544       PRO/1000 XT Server Adapter           A51580-xxx
51
52    82544       PRO/1000 XF Server Adapter           A50484-xxx
53
54    82544       PRO/1000 T Desktop Adapter           A62947-xxx
55
56    82540       PRO/1000 MT Desktop Adapter          A78408-xxx
57
58    82541       PRO/1000 MT Desktop Adapter          C91016-xxx
59
60    82545       PRO/1000 MT Server Adapter           A92165-xxx
61
62    82545       PRO/1000 MF Server Adapter           A91622-xxx
63
64    82545       PRO/1000 MF Server Adapter(LX)       A91624-xxx
65
66    82546       PRO/1000 MT Dual Port Server Adapter A92111-xxx
67
68    82546       PRO/1000 MF Dual Port Server Adapter A91620-xxx
69
70    82546EB     PRO/1000 MT Quad Port Server Adapter C11227-xxx 
71
72    82547       PRO/1000 CT Network Connection
73
74
75 To verify your Intel adapter is supported, find the board ID number on the
76 adapter. Look for a label that has a barcode and a number in the format of
77 123456-001 (six digits hyphen three digits). Match this to the list of 
78 numbers above.
79
80 For more information on how to identify your adapter, go to the Adapter &
81 Driver ID Guide at:
82
83     http://support.intel.com/support/network/adapter/pro100/21397.htm
84
85 For the latest Intel network drivers for FreeBSD, see:
86
87     http://appsr.intel.com/scripts-df/support_intel.asp
88
89
90 Building and Installation
91 =========================
92
93 NOTE: The driver can be installed as a dynamic loadable kernel module or 
94       compiled into the kernel. You must have kernel sources installed in 
95       order to compile the driver module.
96
97 In the instructions below, x.x.x is the driver version as indicated in the 
98 name of the driver tar file.
99
100 1. Move the base driver tar file to the directory of your choice. For 
101    example, use /home/username/em or /usr/local/src/em.
102
103 2. Untar/unzip the archive:
104
105         tar xvfz em-x.x.x.tar.gz
106
107    This will create an em-x.x.x directory.
108
109 3. To create a loadable module, perform the following steps. 
110    NOTE: To compile the driver into the kernel, go directly to step 4.
111
112         a. To compile the module
113
114                   cd em-x.x.x
115                   make
116
117         b. To install the compiled module in system directory:
118          
119                   make install
120                 
121         c. If you want the driver to load automatically when the system is booted:
122
123               1. Follow steps a, and b above to compile and install the module
124               2. Edit /boot/loader.conf, and add the following line:
125
126                   if_em_load="YES"
127
128 4. To compile the driver into the kernel:
129
130         cd em-x.x.x/src
131
132         cp if_em* /usr/src/sys/dev/em
133
134         cp Makefile.kernel /usr/src/sys/modules/em/Makefile
135
136    Edit the /usr/src/sys/conf/files.i386 file, and add the following lines:
137
138         dev/em/if_em.c optional em
139
140         dev/em/if_em_hw.c optional em 
141
142    Remove the following lines from the /usr/src/sys/conf/files.i386 file, 
143    if they exist:
144
145         dev/em/if_em_fxhw.c optional em
146         dev/em/if_em_phy.c optional em
147
148    Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in 
149    /usr/src/sys/i386/conf, and ensure the following line is present:
150
151         device em
152
153    Compile and install the kernel. The system must be rebooted for the kernel
154    updates to take effect. For additional information on compiling the 
155    kernel, consult the FreeBSD operating system documentation.
156
157 5. To assign an IP address to the interface, enter the following:
158
159         ifconfig em<interface_num> <IP_address>
160
161 6. Verify that the interface works. Enter the following, where <IP_address>
162    is the IP address for another machine on the same subnet as the interface
163    that is being tested:
164
165         ping <IP_address>
166
167 7. To configure the IP address to remain after reboot, edit /etc/rc.conf, 
168    and create the appropriate ifconfig_em<interface_num> entry:
169
170         ifconfig_em<interface_num>="<ifconfig_settings>"
171
172    Example usage:
173
174         ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0"
175
176    NOTE: For assistance, see the ifconfig man page.
177
178
179 Speed and Duplex Configuration
180 ==============================
181
182 By default, the adapter auto-negotiates the speed and duplex of the 
183 connection. If there is a specific need, the ifconfig utility can be used to 
184 configure the speed and duplex settings on the adapter. Example usage:
185
186         ifconfig em<interface_num> <IP_address> media 100baseTX mediaopt 
187             full-duplex
188
189    NOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is 
190          not specified and you are not running at gigabit speed, the driver 
191          defaults to half-duplex.
192
193
194 This driver supports the following media type options:
195
196    autoselect      -  Enables auto-negotiation for speed and duplex.
197
198    10baseT/UTP     -  Sets speed to 10 Mbps. Use the ifconfig mediaopt 
199                       option to select full-duplex mode.
200
201    100baseTX       -  Sets speed to 100 Mbps. Use the ifconfig mediaopt
202                       option to select full-duplex mode.
203
204    1000baseTX      -  Sets speed to 1000 Mbps. In this case, the driver
205                       supports only full-duplex mode.
206
207    1000baseSX      -  Sets speed to 1000 Mbps. In this case, the driver
208                       supports only full-duplex mode.
209
210 For more information on the ifconfig utility, see the ifconfig man page.
211
212
213 Additional Configurations
214 =========================
215
216 The driver supports Transmit/Receive Checksum Offload and Jumbo Frames on 
217 all but the 82542-based adapters. For specific adapters, refer to the 
218 Supported Adapters section.
219
220   Jumbo Frames
221   ------------
222   To enable Jumbo Frames, use the ifconfig utility to increase the MTU 
223   beyond 1500 bytes. 
224
225   NOTES: Only enable Jumbo Frames if your network infrastructure supports 
226          them.
227    
228          The Jumbo Frames setting on the switch must be set to at least 
229          22 bytes larger than that of the adapter.
230
231   The Jumbo Frames MTU range for Intel Adapters is 1500 to 16114. The default 
232   MTU range is 1500. To modify the setting, enter the following:
233
234         ifconfig em<interface_num> <hostname or IP address> mtu 9000
235
236   To confirm an interface's MTU value, use the ifconfig command. To confirm
237   the MTU used between two specific devices, use:
238
239         route get <destination_IP_address>
240
241   VLANs
242   -----
243   To create a new VLAN pseudo-interface:
244
245         ifconfig <vlan_name> create
246
247   To associate the VLAN pseudo-interface with a physical interface and 
248   assign a VLAN ID, IP address, and netmask:
249
250         ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan 
251            <vlan_id> vlandev <physical_interface>
252
253   Example:
254
255         ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan10 vlandev em0
256
257   In this example, all packets will be marked on egress with  802.1Q VLAN 
258   tags, specifying a VLAN ID of 10.
259
260   To remove a VLAN pseudo-interface:
261
262         ifconfig <vlan_name> destroy
263
264   Polling
265   -------
266   To enable polling in the driver, add the following options to the kernel 
267   configuration, and then recompile the kernel:
268
269         options DEVICE_POLLING
270         options HZ=1000
271
272   At runtime, use the following command to turn on polling mode. Similarly,
273   turn off polling mode by setting the variable to 0:
274
275         sysctl kern.polling.enable=1
276
277
278   NOTES: DEVICE POLLING is only valid for non-SMP kernels.
279
280          The driver has to be built into the kernel for DEVICE POLLING to be
281          enabled in the driver.
282
283
284 Known Limitations
285 =================
286  
287   There are known performance issues with this driver when running UDP traffic
288   with Jumbo Frames. Intel recommends not using Jumbo Frames for UDP traffic.
289
290
291   82541/82547 can't link or is slow to link with some link partners
292   -----------------------------------------------------------------
293
294   There is a known compatibility issue with 82541/82547 and some switches 
295   where link will not be established, or will be slow to establish.  In 
296   particular, these switches are known to be incompatible with 82541/82547:
297
298         Planex FXG-08TE
299         I-O Data ETG-SH8
300
301   To workaround the issue, the driver can be compiled with an override of the 
302   PHY's master/slave setting.  Forcing master or forcing slave mode will 
303   improve time-to-link.
304
305   Edit ./em.x.x.x/src/if_em.h to remove the #define EM_MASTER_SLAVE 
306   from within the comments.  
307
308       /* #define EM_MASTER_SLAVE  2 */
309       #define EM_MASTER_SLAVE  2 
310
311   Use one of the following options.
312       0 = Hardware default
313       1 = Master mode
314       2 = Slave mode
315       3 = Auto master/slave
316
317   Recompile the module (refer to step 3 above)
318   a. To compile the module
319
320           cd em-x.x.x
321           make clean
322           make
323
324    b. To install the compiled module in system directory:
325  
326           make install
327
328
329 Support
330 =======
331
332 For general information and support, go to the Intel support website at:
333
334         http://support.intel.com
335
336 If an issue is identified with the released source code on the supported
337 kernel with a supported adapter, email the specific information related to 
338 the issue to freebsdnic@mailbox.intel.com.
339
340
341 License
342 =======
343
344 This software program is released under the terms of a license agreement 
345 between you ('Licensee') and Intel. Do not use or load this software or any 
346 associated materials (collectively, the 'Software') until you have carefully 
347 read the full terms and conditions of the LICENSE located in this software 
348 package. By loading or using the Software, you agree to the terms of this 
349 Agreement. If you do not agree with the terms of this Agreement, do not 
350 install or use the Software.
351
352 * Other names and brands may be claimed as the property of others.