README revision 153355
1246074Sgabor$FreeBSD: head/sys/dev/em/README 153355 2005-12-12 19:29:30Z glebius $
2246074SgaborFreeBSD* Driver for the Intel(R) PRO/1000 Family of Adapters
3246074Sgabor============================================================
4246074Sgabor
5246074SgaborMarch 18, 2005
6246074Sgabor
7246074Sgabor
8246074SgaborContents
9246074Sgabor========
10246074Sgabor
11246074Sgabor- Overview
12246074Sgabor- Identifying Your Adapter
13246074Sgabor- Building and Installation
14246074Sgabor- Speed and Duplex Configuration
15246074Sgabor- Additional Configurations
16246074Sgabor- Known Limitations
17246074Sgabor- Support
18246074Sgabor- License
19246074Sgabor
20246074Sgabor
21246074SgaborOverview
22246074Sgabor========
23246074Sgabor
24246074SgaborThis file describes the FreeBSD* driver, version 2.1.x, for the Intel(R)
25246074SgaborPRO/1000 Family of Adapters. This driver has been developed for use with
26246074SgaborFreeBSD, version 5.x.
27246074Sgabor
28246074SgaborFor questions related to hardware requirements, refer to the documentation
29246074Sgaborsupplied with your Intel PRO/1000 adapter. All hardware requirements listed
30246074Sgaborapply to use with FreeBSD.
31246074Sgabor
32246074Sgabor
33246074SgaborIdentifying Your Adapter
34246074Sgabor========================
35246074Sgabor
36246074SgaborFor information on how to identify your adapter, go to the Adapter &
37246074SgaborDriver ID Guide at:
38246074Sgabor
39246074Sgaborhttp://support.intel.com/support/network/adapter/pro100/21397.htm
40246074Sgabor
41246074Sgabor
42246074SgaborFor the latest Intel network drivers for FreeBSD, see:
43246074Sgabor
44246074Sgaborhttp://appsr.intel.com/scripts-df/support_intel.asp
45246074Sgabor
46246074Sgabor
47246074SgaborNOTE: Mobile adapters are not fully supported.
48246074Sgabor
49246074Sgabor
50246074SgaborBuilding and Installation
51246074Sgabor=========================
52246074Sgabor
53246074SgaborNOTE: The driver can be installed as a dynamic loadable kernel module or
54246074Sgabor      compiled into the kernel. You must have kernel sources installed in
55246074Sgabor      order to compile the driver module.
56246074Sgabor
57246074SgaborIn the instructions below, x.x.x is the driver version as indicated in the
58246074Sgaborname of the driver tar file.
59246074Sgabor
60246074Sgabor1. Move the base driver tar file to the directory of your choice. For
61246074Sgabor   example, use /home/username/em or /usr/local/src/em.
62246074Sgabor
63246074Sgabor2. Untar/unzip the archive:
64246074Sgabor
65246074Sgabor        tar xvfz em-x.x.x.tar.gz
66246074Sgabor
67246074Sgabor   This will create an em-x.x.x directory.
68246074Sgabor
69246074Sgabor3. To create a loadable module, perform the following steps.
70246074Sgabor   NOTE: To compile the driver into the kernel, go directly to step 4.
71246074Sgabor
72246074Sgabor        a. To compile the module
73246074Sgabor
74246074Sgabor                  cd em-x.x.x
75246074Sgabor                  make
76246074Sgabor
77246074Sgabor        b. To install the compiled module in system directory:
78246074Sgabor
79246074Sgabor                  make install
80246074Sgabor
81246074Sgabor        c. If you want the driver to load automatically when the system is booted:
82246074Sgabor
83246074Sgabor              1. Edit /boot/loader.conf, and add the following line:
84246074Sgabor
85246074Sgabor                  if_em_load="YES"
86246074Sgabor
87246074Sgabor4. To compile the driver into the kernel:
88246074Sgabor
89246074Sgabor        cd em-x.x.x/src
90246074Sgabor
91246074Sgabor        cp if_em* /usr/src/sys/dev/em
92246074Sgabor
93246074Sgabor        cp Makefile.kernel /usr/src/sys/modules/em/Makefile
94246074Sgabor
95246074Sgabor   Edit the /usr/src/sys/conf/files.i386 file, and add the following lines only if
96246074Sgabor   they don't already exist:
97246074Sgabor
98246074Sgabor        dev/em/if_em.c optional em
99246074Sgabor
100246074Sgabor        dev/em/if_em_hw.c optional em
101246074Sgabor
102246074Sgabor   Remove the following lines from the /usr/src/sys/conf/files.i386 file,
103246074Sgabor   if they exist:
104246074Sgabor
105246074Sgabor        dev/em/if_em_fxhw.c optional em
106246074Sgabor        dev/em/if_em_phy.c optional em
107246074Sgabor
108246074Sgabor   Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in
109246074Sgabor   /usr/src/sys/i386/conf, and ensure the following line is present:
110246074Sgabor
111246074Sgabor        device em
112246074Sgabor
113246074Sgabor   Compile and install the kernel. The system must be rebooted for the kernel
114246074Sgabor   updates to take effect. For additional information on compiling the
115246074Sgabor   kernel, consult the FreeBSD operating system documentation.
116246074Sgabor
117246074Sgabor5. To assign an IP address to the interface, enter the following:
118246074Sgabor
119246074Sgabor        ifconfig em<interface_num> <IP_address>
120246074Sgabor
121246074Sgabor6. Verify that the interface works. Enter the following, where <IP_address>
122246074Sgabor   is the IP address for another machine on the same subnet as the interface
123246074Sgabor   that is being tested:
124246074Sgabor
125246074Sgabor        ping <IP_address>
126246074Sgabor
127246074Sgabor7. To configure the IP address to remain after reboot, edit /etc/rc.conf,
128246074Sgabor   and create the appropriate ifconfig_em<interface_num>entry:
129246074Sgabor
130246074Sgabor        ifconfig_em<interface_num>="<ifconfig_settings>"
131246074Sgabor
132246074Sgabor   Example usage:
133246074Sgabor
134246074Sgabor        ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0"
135246074Sgabor
136246074Sgabor   NOTE: For assistance, see the ifconfig man page.
137246074Sgabor
138246074Sgabor
139246074SgaborSpeed and Duplex Configuration
140246074Sgabor==============================
141246074Sgabor
142246074SgaborBy default, the adapter auto-negotiates the speed and duplex of the
143246074Sgaborconnection. If there is a specific need, the ifconfig utility can be used to
144246074Sgaborconfigure the speed and duplex settings on the adapter. Example usage:
145246074Sgabor
146246074Sgabor        ifconfig em<interface_num> <IP_address> media 100baseTX mediaopt
147246074Sgabor            full-duplex
148246074Sgabor
149246074Sgabor   NOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is
150246074Sgabor         not specified and you are not running at gigabit speed, the driver
151246074Sgabor         defaults to half-duplex.
152246074Sgabor
153246074Sgabor
154246074SgaborThis driver supports the following media type options:
155246074Sgabor
156246074Sgabor   autoselect      -  Enables auto-negotiation for speed and duplex.
157246074Sgabor
158246074Sgabor   10baseT/UTP     -  Sets speed to 10 Mbps. Use the ifconfig mediaopt
159246074Sgabor                      option to select full-duplex mode.
160246074Sgabor
161246074Sgabor   100baseTX       -  Sets speed to 100 Mbps. Use the ifconfig mediaopt
162246074Sgabor                      option to select full-duplex mode.
163246074Sgabor
164246074Sgabor   1000baseTX      -  Sets speed to 1000 Mbps. In this case, the driver
165246074Sgabor                      supports only full-duplex mode.
166246074Sgabor
167246074Sgabor   1000baseSX      -  Sets speed to 1000 Mbps. In this case, the driver
168246074Sgabor                      supports only full-duplex mode.
169246074Sgabor
170246074SgaborFor more information on the ifconfig utility, see the ifconfig man page.
171246074Sgabor
172246074Sgabor
173246074SgaborAdditional Configurations
174246074Sgabor=========================
175246074Sgabor
176246074SgaborThe driver supports Transmit/Receive Checksum Offload and Jumbo Frames on
177246074Sgaborall but the 82542-based adapters. For specific adapters, refer to the
178246074SgaborIdentifying Your Adapter section.
179246074Sgabor
180246074Sgabor  Jumbo Frames
181246074Sgabor  ------------
182246074Sgabor  To enable Jumbo Frames, use the ifconfig utility to increase the MTU
183246074Sgabor  beyond 1500 bytes.
184246074Sgabor
185246074Sgabor  NOTES: Only enable Jumbo Frames if your network infrastructure supports
186246074Sgabor         them.
187246074Sgabor
188246074Sgabor         The Jumbo Frames setting on the switch must be set to at least
189246074Sgabor         22 bytes larger than that of the MTU.
190246074Sgabor
191246074Sgabor         The Intel PRO/1000 PM Network Connection does not support jumbo
192246074Sgabor         frames.
193246074Sgabor
194246074Sgabor
195246074Sgabor  The Jumbo Frames MTU range for Intel Adapters is 1500 to 16114. The default
196246074Sgabor  MTU range is 1500. To modify the setting, enter the following:
197246074Sgabor
198246074Sgabor        ifconfig em<interface_num> <hostname or IP address> mtu 9000
199246074Sgabor
200246074Sgabor To confirm the MTU used between two specific devices, use:
201246074Sgabor
202246074Sgabor        route get <destination_IP_address>
203246074Sgabor
204246074Sgabor  VLANs
205246074Sgabor  -----
206246074Sgabor  To create a new VLAN interface:
207246074Sgabor
208246074Sgabor        ifconfig <vlan_name> create
209246074Sgabor
210246074Sgabor  To associate the VLAN interface with a physical interface and
211246074Sgabor  assign a VLAN ID, IP address, and netmask:
212246074Sgabor
213246074Sgabor        ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan
214246074Sgabor           <vlan_id> vlandev <physical_interface>
215246074Sgabor
216246074Sgabor  Example:
217246074Sgabor
218246074Sgabor        ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan10 vlandev em0
219246074Sgabor
220246074Sgabor  In this example, all packets will be marked on egress with  802.1Q VLAN
221246074Sgabor  tags, specifying a VLAN ID of 10.
222246074Sgabor
223246074Sgabor  To remove a VLAN interface:
224246074Sgabor
225246074Sgabor        ifconfig <vlan_name> destroy
226246074Sgabor
227246074Sgabor  Polling
228246074Sgabor  -------
229246074Sgabor  To enable polling in the driver, add the following options to the kernel
230246074Sgabor  configuration, and then recompile the kernel:
231246074Sgabor
232246074Sgabor        options DEVICE_POLLING
233246074Sgabor        options HZ=1000
234246074Sgabor
235246074Sgabor  At runtime use:
236246074Sgabor        sysctl kern.polling.enable=1 to turn polling on
237246074Sgabor  Use:
238246074Sgabor        sysctl kern.polling.enable=0 to turn polling off
239246074Sgabor
240246074Sgabor  Checksum Offload
241246074Sgabor  ----------------
242246074Sgabor  Checksum offloading is not supported on 82542 Gigabit adapters.
243246074Sgabor
244246074Sgabor  Checksum offloading supports both TCP and UDP packets and is
245246074Sgabor  supported for both transmit and receive.
246246074Sgabor
247246074Sgabor  Checksum offloading can be enabled or disabled using ifconfig.
248246074Sgabor  Both transmit and receive offloading will be either enabled or
249246074Sgabor  disabled together. You cannot enable/disable one without the other.
250246074Sgabor
251246074Sgabor  To enable checksum offloading:
252246074Sgabor
253246074Sgabor         ifconfig <interface_num> rxcsum
254246074Sgabor
255246074Sgabor  To disable checksum offloading:
256246074Sgabor
257246074Sgabor         ifconfig <interface_num> -rxcsum
258246074Sgabor
259246074Sgabor  To confirm the current setting:
260246074Sgabor
261246074Sgabor         ifconfig <interface_num>
262246074Sgabor
263246074Sgabor  Look for the presence or absence of the following line:
264246074Sgabor
265246074Sgabor         options=3 <RXCSUM,TXCSUM>
266246074Sgabor
267246074Sgabor  See the ifconfig man page for further information.
268246074Sgabor
269246074SgaborKnown Limitations
270246074Sgabor=================
271246074Sgabor
272246074Sgabor  There are known performance issues with this driver when running UDP traffic
273246074Sgabor  with Jumbo Frames.
274246074Sgabor
275246074Sgabor  There is a known compatibility issue where time to link is slow or link is not
276246074Sgabor  established between 82541/82547 controllers and some switches.  Known switches
277246074Sgabor  include:
278246074Sgabor        Planex FXG-08TE
279246074Sgabor        I-O Data ETG-SH8
280246074Sgabor
281246074Sgabor  The driver can be compiled with the following changes:
282246074Sgabor
283246074Sgabor  Edit ./em.x.x.x/src/if_em.h to uncomment the #define EM_MASTER_SLAVE
284246074Sgabor  from within the comments.  For example, change from:
285246074Sgabor
286246074Sgabor      /* #define EM_MASTER_SLAVE  2 */
287246074Sgabor  to:
288246074Sgabor      #define EM_MASTER_SLAVE  2
289246074Sgabor
290246074Sgabor  Use one of the following options:
291246074Sgabor      1 = Master mode
292246074Sgabor      2 = Slave mode
293246074Sgabor      3 = Auto master/slave
294246074Sgabor  Setting 2 is recommended.
295246074Sgabor
296246074Sgabor  Recompile the module:
297246074Sgabor          a. To compile the module
298246074Sgabor                cd em-x.x.x
299246074Sgabor                make clean
300246074Sgabor                make
301246074Sgabor
302246074Sgabor   b. To install the compiled module in system directory:
303246074Sgabor                make install
304246074Sgabor
305246074Sgabor
306246074SgaborSupport
307246074Sgabor=======
308246074Sgabor
309246074SgaborFor general information and support, go to the Intel support website at:
310246074Sgabor
311246074Sgabor        http://support.intel.com
312246074Sgabor
313246074SgaborIf an issue is identified, support is through email only at:
314246074Sgaborfreebsdnic@mailbox.intel.com
315246074Sgabor
316246074SgaborLicense
317246074Sgabor=======
318246074Sgabor
319246074SgaborThis software program is released under the terms of a license agreement
320246074Sgaborbetween you ('Licensee') and Intel. Do not use or load this software or any
321246074Sgaborassociated materials (collectively, the 'Software') until you have carefully
322246074Sgaborread the full terms and conditions of the LICENSE located in this software
323246074Sgaborpackage. By loading or using the Software, you agree to the terms of this
324246074SgaborAgreement. If you do not agree with the terms of this Agreement, do not
325246074Sgaborinstall or use the Software.
326246074Sgabor
327246074Sgabor* Other names and brands may be claimed as the property of others.
328246074Sgabor