README revision 146663
1202375Srdivacky$FreeBSD: head/sys/dev/em/README 146663 2005-05-26 23:33:24Z tackerman $
2202375SrdivackyFreeBSD* Driver for the Intel(R) PRO/1000 Family of Adapters
3202375Srdivacky============================================================
4202375Srdivacky
5202375SrdivackyMarch 18, 2005
6202375Srdivacky
7202375Srdivacky
8202375SrdivackyContents
9202375Srdivacky========
10202375Srdivacky
11202375Srdivacky- Overview
12202375Srdivacky- Identifying Your Adapter
13202375Srdivacky- Building and Installation
14202375Srdivacky- Speed and Duplex Configuration
15202375Srdivacky- Additional Configurations
16202375Srdivacky- Known Limitations
17249423Sdim- Support
18249423Sdim- License
19249423Sdim
20202375Srdivacky
21202375SrdivackyOverview
22249423Sdim========
23202375Srdivacky
24249423SdimThis file describes the FreeBSD* driver, version 2.1.x, for the Intel(R)
25202375SrdivackyPRO/1000 Family of Adapters. This driver has been developed for use with
26202375SrdivackyFreeBSD, version 5.x.
27202375Srdivacky
28249423SdimFor questions related to hardware requirements, refer to the documentation
29202375Srdivackysupplied with your Intel PRO/1000 adapter. All hardware requirements listed
30202375Srdivackyapply to use with FreeBSD.
31202375Srdivacky
32202375Srdivacky
33202375SrdivackyIdentifying Your Adapter
34202375Srdivacky========================
35202375Srdivacky
36202375SrdivackyFor information on how to identify your adapter, go to the Adapter &
37202375SrdivackyDriver ID Guide at:
38218893Sdim
39202375Srdivackyhttp://support.intel.com/support/network/adapter/pro100/21397.htm
40202375Srdivacky
41202375Srdivacky
42202375SrdivackyFor the latest Intel network drivers for FreeBSD, see:
43202375Srdivacky
44202375Srdivackyhttp://appsr.intel.com/scripts-df/support_intel.asp
45202375Srdivacky
46202375Srdivacky
47202375SrdivackyNOTE: Mobile adapters are not fully supported.
48202375Srdivacky
49202375Srdivacky
50202375SrdivackyBuilding and Installation
51202375Srdivacky=========================
52202375Srdivacky
53202375SrdivackyNOTE: The driver can be installed as a dynamic loadable kernel module or
54202375Srdivacky      compiled into the kernel. You must have kernel sources installed in
55202375Srdivacky      order to compile the driver module.
56202375Srdivacky
57249423SdimIn the instructions below, x.x.x is the driver version as indicated in the
58249423Sdimname of the driver tar file.
59202375Srdivacky
60202375Srdivacky1. Move the base driver tar file to the directory of your choice. For
61202375Srdivacky   example, use /home/username/em or /usr/local/src/em.
62202375Srdivacky
63202375Srdivacky2. Untar/unzip the archive:
64202375Srdivacky
65202375Srdivacky        tar xvfz em-x.x.x.tar.gz
66202375Srdivacky
67202375Srdivacky   This will create an em-x.x.x directory.
68202375Srdivacky
69249423Sdim3. To create a loadable module, perform the following steps.
70202375Srdivacky   NOTE: To compile the driver into the kernel, go directly to step 4.
71202375Srdivacky
72202375Srdivacky        a. To compile the module
73202375Srdivacky
74202375Srdivacky                  cd em-x.x.x
75202375Srdivacky                  make
76202375Srdivacky
77202375Srdivacky        b. To install the compiled module in system directory:
78202375Srdivacky
79202375Srdivacky                  make install
80202375Srdivacky
81202375Srdivacky        c. If you want the driver to load automatically when the system is booted:
82202375Srdivacky
83202375Srdivacky              1. Edit /boot/loader.conf, and add the following line:
84202375Srdivacky
85202375Srdivacky                  if_em_load="YES"
86202375Srdivacky
87202375Srdivacky4. To compile the driver into the kernel:
88202375Srdivacky
89202375Srdivacky        cd em-x.x.x/src
90249423Sdim
91202375Srdivacky        cp if_em* /usr/src/sys/dev/em
92202375Srdivacky
93202375Srdivacky        cp Makefile.kernel /usr/src/sys/modules/em/Makefile
94202375Srdivacky
95202375Srdivacky   Edit the /usr/src/sys/conf/files.i386 file, and add the following lines only if
96202375Srdivacky   they don't already exist:
97202375Srdivacky
98202375Srdivacky        dev/em/if_em.c optional em
99202375Srdivacky
100202375Srdivacky        dev/em/if_em_hw.c optional em
101202375Srdivacky
102202375Srdivacky   Remove the following lines from the /usr/src/sys/conf/files.i386 file,
103202375Srdivacky   if they exist:
104202375Srdivacky
105202375Srdivacky        dev/em/if_em_fxhw.c optional em
106202375Srdivacky        dev/em/if_em_phy.c optional em
107226633Sdim
108204642Srdivacky   Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in
109202375Srdivacky   /usr/src/sys/i386/conf, and ensure the following line is present:
110202375Srdivacky
111203954Srdivacky        device em
112202375Srdivacky
113202375Srdivacky   Compile and install the kernel. The system must be rebooted for the kernel
114202375Srdivacky   updates to take effect. For additional information on compiling the
115202375Srdivacky   kernel, consult the FreeBSD operating system documentation.
116202375Srdivacky
117202375Srdivacky5. To assign an IP address to the interface, enter the following:
118202375Srdivacky
119202375Srdivacky        ifconfig em<interface_num> <IP_address>
120202375Srdivacky
121202375Srdivacky6. Verify that the interface works. Enter the following, where <IP_address>
122202375Srdivacky   is the IP address for another machine on the same subnet as the interface
123202375Srdivacky   that is being tested:
124202375Srdivacky
125218893Sdim        ping <IP_address>
126202375Srdivacky
127202375Srdivacky7. To configure the IP address to remain after reboot, edit /etc/rc.conf,
128202375Srdivacky   and create the appropriate ifconfig_em<interface_num>entry:
129202375Srdivacky
130218893Sdim        ifconfig_em<interface_num>="<ifconfig_settings>"
131218893Sdim
132202375Srdivacky   Example usage:
133202375Srdivacky
134202375Srdivacky        ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0"
135202375Srdivacky
136202375Srdivacky   NOTE: For assistance, see the ifconfig man page.
137249423Sdim
138202375Srdivacky
139202375SrdivackySpeed and Duplex Configuration
140249423Sdim==============================
141202375Srdivacky
142203954SrdivackyBy default, the adapter auto-negotiates the speed and duplex of the
143202375Srdivackyconnection. If there is a specific need, the ifconfig utility can be used to
144202375Srdivackyconfigure the speed and duplex settings on the adapter. Example usage:
145202375Srdivacky
146234353Sdim        ifconfig em<interface_num> <IP_address> media 100baseTX mediaopt
147202375Srdivacky            full-duplex
148202375Srdivacky
149202375Srdivacky   NOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is
150202375Srdivacky         not specified and you are not running at gigabit speed, the driver
151202375Srdivacky         defaults to half-duplex.
152202375Srdivacky
153202375Srdivacky
154202375SrdivackyThis driver supports the following media type options:
155202375Srdivacky
156202375Srdivacky   autoselect      -  Enables auto-negotiation for speed and duplex.
157202375Srdivacky
158202375Srdivacky   10baseT/UTP     -  Sets speed to 10 Mbps. Use the ifconfig mediaopt
159202375Srdivacky                      option to select full-duplex mode.
160234353Sdim
161234353Sdim   100baseTX       -  Sets speed to 100 Mbps. Use the ifconfig mediaopt
162249423Sdim                      option to select full-duplex mode.
163202375Srdivacky
164202375Srdivacky   1000baseTX      -  Sets speed to 1000 Mbps. In this case, the driver
165202375Srdivacky                      supports only full-duplex mode.
166249423Sdim
167202375Srdivacky   1000baseSX      -  Sets speed to 1000 Mbps. In this case, the driver
168202375Srdivacky                      supports only full-duplex mode.
169249423Sdim
170202375SrdivackyFor more information on the ifconfig utility, see the ifconfig man page.
171202375Srdivacky
172249423Sdim
173202375SrdivackyAdditional Configurations
174202375Srdivacky=========================
175202375Srdivacky
176249423SdimThe driver supports Transmit/Receive Checksum Offload and Jumbo Frames on
177202375Srdivackyall but the 82542-based adapters. For specific adapters, refer to the
178202375SrdivackyIdentifying Your Adapter section.
179202375Srdivacky
180249423Sdim  Jumbo Frames
181202375Srdivacky  ------------
182234353Sdim  To enable Jumbo Frames, use the ifconfig utility to increase the MTU
183234353Sdim  beyond 1500 bytes.
184249423Sdim
185202375Srdivacky  NOTES: Only enable Jumbo Frames if your network infrastructure supports
186202375Srdivacky         them.
187202375Srdivacky
188249423Sdim         The Jumbo Frames setting on the switch must be set to at least
189202375Srdivacky         22 bytes larger than that of the MTU.
190202375Srdivacky
191249423Sdim         The Intel PRO/1000 PM Network Connection does not support jumbo
192202375Srdivacky         frames.
193202375Srdivacky
194249423Sdim
195202375Srdivacky  The Jumbo Frames MTU range for Intel Adapters is 1500 to 16114. The default
196202375Srdivacky  MTU range is 1500. To modify the setting, enter the following:
197249423Sdim
198202375Srdivacky        ifconfig em<interface_num> <hostname or IP address> mtu 9000
199202375Srdivacky
200249423Sdim To confirm the MTU used between two specific devices, use:
201202375Srdivacky
202202375Srdivacky        route get <destination_IP_address>
203249423Sdim
204249423Sdim  VLANs
205249423Sdim  -----
206249423Sdim  To create a new VLAN interface:
207249423Sdim
208249423Sdim        ifconfig <vlan_name> create
209249423Sdim
210249423Sdim  To associate the VLAN interface with a physical interface and
211249423Sdim  assign a VLAN ID, IP address, and netmask:
212249423Sdim
213249423Sdim        ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan
214249423Sdim           <vlan_id> vlandev <physical_interface>
215249423Sdim
216202375Srdivacky  Example:
217249423Sdim
218202375Srdivacky        ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan10 vlandev em0
219234353Sdim
220202375Srdivacky  In this example, all packets will be marked on egress with  802.1Q VLAN
221202375Srdivacky  tags, specifying a VLAN ID of 10.
222249423Sdim
223202375Srdivacky  To remove a VLAN interface:
224202375Srdivacky
225202375Srdivacky        ifconfig <vlan_name> destroy
226202375Srdivacky
227202375Srdivacky  Polling
228202375Srdivacky  -------
229249423Sdim  NOTES: DEVICE POLLING is only valid for non-SMP kernels.
230202375Srdivacky
231202375Srdivacky        The driver has to be compiled into the kernel for DEVICE POLLING to be
232234353Sdim        enabled in the driver.
233202375Srdivacky
234202375Srdivacky  To enable polling in the driver, add the following options to the kernel
235202375Srdivacky  configuration, and then recompile the kernel:
236202375Srdivacky
237202375Srdivacky        options DEVICE_POLLING
238202375Srdivacky        options HZ=1000
239202375Srdivacky
240202375Srdivacky  At runtime use:
241249423Sdim        sysctl kern.polling.enable=1 to turn polling on
242249423Sdim  Use:
243202375Srdivacky        sysctl ker.polling.enable=0 to turn polling off
244202375Srdivacky
245202375Srdivacky  Checksum Offload
246249423Sdim  ----------------
247202375Srdivacky  Checksum offloading is not supported on 82542 Gigabit adapters.
248202375Srdivacky
249249423Sdim  Checksum offloading supports both TCP and UDP packets and is
250202375Srdivacky  supported for both transmit and receive.
251202375Srdivacky
252249423Sdim  Checksum offloading can be enabled or disabled using ifconfig.
253202375Srdivacky  Both transmit and receive offloading will be either enabled or
254202375Srdivacky  disabled together. You cannot enable/disable one without the other.
255202375Srdivacky
256249423Sdim  To enable checksum offloading:
257202375Srdivacky
258202375Srdivacky         ifconfig <interface_num> rxcsum
259202375Srdivacky
260249423Sdim  To disable checksum offloading:
261202375Srdivacky
262203954Srdivacky         ifconfig <interface_num> -rxcsum
263202375Srdivacky
264203954Srdivacky  To confirm the current setting:
265202375Srdivacky
266202375Srdivacky         ifconfig <interface_num>
267202375Srdivacky
268249423Sdim  Look for the presence or absence of the following line:
269202375Srdivacky
270249423Sdim         options=3 <RXCSUM,TXCSUM>
271202375Srdivacky
272202375Srdivacky  See the ifconfig man page for further information.
273249423Sdim
274249423SdimKnown Limitations
275249423Sdim=================
276202375Srdivacky
277202375Srdivacky  There are known performance issues with this driver when running UDP traffic
278249423Sdim  with Jumbo Frames.
279202375Srdivacky
280202375Srdivacky  There is a known compatibility issue where time to link is slow or link is not
281249423Sdim  established between 82541/82547 controllers and some switches.  Known switches
282202375Srdivacky  include:
283202375Srdivacky        Planex FXG-08TE
284202375Srdivacky        I-O Data ETG-SH8
285202375Srdivacky
286202375Srdivacky  The driver can be compiled with the following changes:
287249423Sdim
288202375Srdivacky  Edit ./em.x.x.x/src/if_em.h to uncomment the #define EM_MASTER_SLAVE
289202375Srdivacky  from within the comments.  For example, change from:
290249423Sdim
291202375Srdivacky      /* #define EM_MASTER_SLAVE  2 */
292202375Srdivacky  to:
293249423Sdim      #define EM_MASTER_SLAVE  2
294202375Srdivacky
295202375Srdivacky  Use one of the following options:
296202375Srdivacky      1 = Master mode
297249423Sdim      2 = Slave mode
298202375Srdivacky      3 = Auto master/slave
299203954Srdivacky  Setting 2 is recommended.
300202375Srdivacky
301203954Srdivacky  Recompile the module:
302202375Srdivacky          a. To compile the module
303202375Srdivacky                cd em-x.x.x
304202375Srdivacky                make clean
305202375Srdivacky                make
306249423Sdim
307202375Srdivacky   b. To install the compiled module in system directory:
308202375Srdivacky                make install
309249423Sdim
310249423Sdim
311249423SdimSupport
312202375Srdivacky=======
313202375Srdivacky
314202375SrdivackyFor general information and support, go to the Intel support website at:
315202375Srdivacky
316202375Srdivacky        http://support.intel.com
317202375Srdivacky
318249423SdimIf an issue is identified, support is through email only at:
319202375Srdivackyfreebsdnic@mailbox.intel.com
320202375Srdivacky
321202375SrdivackyLicense
322202375Srdivacky=======
323249423Sdim
324202375SrdivackyThis software program is released under the terms of a license agreement
325202375Srdivackybetween you ('Licensee') and Intel. Do not use or load this software or any
326223017Sdimassociated materials (collectively, the 'Software') until you have carefully
327202375Srdivackyread the full terms and conditions of the LICENSE located in this software
328249423Sdimpackage. By loading or using the Software, you agree to the terms of this
329202375SrdivackyAgreement. If you do not agree with the terms of this Agreement, do not
330202375Srdivackyinstall or use the Software.
331202375Srdivacky
332202375Srdivacky* Other names and brands may be claimed as the property of others.
333249423Sdim