197785Spdeuskar$FreeBSD$
2170141SjfvFreeBSD* Driver for Intel Network Connection
3170141Sjfv=============================================
497785Spdeuskar
5170141SjfvMay 30, 2007
697785Spdeuskar
797785Spdeuskar
897785SpdeuskarContents
997785Spdeuskar========
1097785Spdeuskar
11112472Spdeuskar- Overview
12146663Stackerman- Identifying Your Adapter
1397785Spdeuskar- Building and Installation
1497785Spdeuskar- Speed and Duplex Configuration
1597785Spdeuskar- Additional Configurations
1697785Spdeuskar- Known Limitations
1797785Spdeuskar- Support
1897785Spdeuskar- License
1997785Spdeuskar
2097785Spdeuskar
21112472SpdeuskarOverview
22112472Spdeuskar========
2397785Spdeuskar
24170141SjfvThis file describes the FreeBSD* driver for Intel Network Connection.
25170141SjfvThis driver has been developed for use with FreeBSD, Release 7.x.
2697785Spdeuskar
27146663StackermanFor questions related to hardware requirements, refer to the documentation
28169240Sjfvsupplied with your Gigabit adapter. All hardware requirements listed
2997785Spdeuskarapply to use with FreeBSD.
3097785Spdeuskar
3197785Spdeuskar
32146663StackermanIdentifying Your Adapter
33146663Stackerman========================
3497785Spdeuskar
35146663StackermanFor information on how to identify your adapter, go to the Adapter &
36146663StackermanDriver ID Guide at:
3797785Spdeuskar
38157566Sglebiushttp://support.intel.com/support/network/sb/cs-012904.htm
3997785Spdeuskar
4097785Spdeuskar
41146663StackermanFor the latest Intel network drivers for FreeBSD, see:
4297785Spdeuskar
43157566Sglebiushttp://downloadfinder.intel.com/scripts-df-external/support_intel.aspx
4497785Spdeuskar
4597785Spdeuskar
46146663StackermanNOTE: Mobile adapters are not fully supported.
47160949SglebiusNOTE: The Intel(R) 82562v 10/100 Network Connection only provides 10/100
48160949Sglebiussupport.
4997785Spdeuskar
5097785SpdeuskarBuilding and Installation
5197785Spdeuskar=========================
5297785Spdeuskar
53146663StackermanNOTE: The driver can be installed as a dynamic loadable kernel module or
54146663Stackerman      compiled into the kernel. You must have kernel sources installed in
55112472Spdeuskar      order to compile the driver module.
5697785Spdeuskar
57146663StackermanIn the instructions below, x.x.x is the driver version as indicated in the
58112472Spdeuskarname of the driver tar file.
5997785Spdeuskar
60146663Stackerman1. Move the base driver tar file to the directory of your choice. For
6197785Spdeuskar   example, use /home/username/em or /usr/local/src/em.
6297785Spdeuskar
6397785Spdeuskar2. Untar/unzip the archive:
6497785Spdeuskar
65169240Sjfv        tar xzvf em-x.x.x.tar.gz
6697785Spdeuskar
67112472Spdeuskar   This will create an em-x.x.x directory.
6897785Spdeuskar
69146663Stackerman3. To create a loadable module, perform the following steps.
70112472Spdeuskar   NOTE: To compile the driver into the kernel, go directly to step 4.
7197785Spdeuskar
72146663Stackerman        a. To compile the module
7397785Spdeuskar
74146663Stackerman                  cd em-x.x.x
75146663Stackerman                  make
7697785Spdeuskar
77169240Sjfv        b. To install the compiled module to the system directory:
7897785Spdeuskar
79146663Stackerman                  make install
8097785Spdeuskar
81146663Stackerman        c. If you want the driver to load automatically when the system is booted:
8297785Spdeuskar
83146663Stackerman              1. Edit /boot/loader.conf, and add the following line:
84146663Stackerman
85146663Stackerman                  if_em_load="YES"
86146663Stackerman
87169240Sjfv4. To compile the driver into the kernel, enter:
8897785Spdeuskar
89112472Spdeuskar        cd em-x.x.x/src
90169240Sjfv        cp *.[ch] /usr/src/sys/dev/em
9197785Spdeuskar
92169240Sjfv        Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in
93169240Sjfv        /usr/src/sys/i386/conf, and ensure the following line is present:
9497785Spdeuskar
95112472Spdeuskar        device em
9697785Spdeuskar
97169240Sjfv        Compile and install the kernel. The system must be rebooted for the
98169240Sjfv        kernel updates to take effect. For additional information on compiling
99169240Sjfv        the kernel, consult the FreeBSD operating system documentation.
10097785Spdeuskar
101112472Spdeuskar5. To assign an IP address to the interface, enter the following:
10297785Spdeuskar
103112472Spdeuskar        ifconfig em<interface_num> <IP_address>
10497785Spdeuskar
105112472Spdeuskar6. Verify that the interface works. Enter the following, where <IP_address>
106112472Spdeuskar   is the IP address for another machine on the same subnet as the interface
107112472Spdeuskar   that is being tested:
10897785Spdeuskar
109112472Spdeuskar        ping <IP_address>
11097785Spdeuskar
111146663Stackerman7. To configure the IP address to remain after reboot, edit /etc/rc.conf,
112146663Stackerman   and create the appropriate ifconfig_em<interface_num>entry:
11397785Spdeuskar
114112472Spdeuskar        ifconfig_em<interface_num>="<ifconfig_settings>"
115112472Spdeuskar
116112472Spdeuskar   Example usage:
117112472Spdeuskar
118112472Spdeuskar        ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0"
119112472Spdeuskar
120112472Spdeuskar   NOTE: For assistance, see the ifconfig man page.
121112472Spdeuskar
122112472Spdeuskar
12397785SpdeuskarSpeed and Duplex Configuration
12497785Spdeuskar==============================
12597785Spdeuskar
126146663StackermanBy default, the adapter auto-negotiates the speed and duplex of the
127146663Stackermanconnection. If there is a specific need, the ifconfig utility can be used to
12897785Spdeuskarconfigure the speed and duplex settings on the adapter. Example usage:
12997785Spdeuskar
130146663Stackerman        ifconfig em<interface_num> <IP_address> media 100baseTX mediaopt
13197785Spdeuskar            full-duplex
13297785Spdeuskar
133146663Stackerman   NOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is
134146663Stackerman         not specified and you are not running at gigabit speed, the driver
13597785Spdeuskar         defaults to half-duplex.
13697785Spdeuskar
137169240SjfvIf the interface is currently forced to 100 full duplex, in order to change
138169240Sjfvto half duplex you must use this command:
13997785Spdeuskar
140169240Sjfv        ifconfig em<interface_num> <IP_address> media 100baseTX -mediaopt
141169240Sjfv            full-duplex
142169240Sjfv
143169240Sjfv
14497785SpdeuskarThis driver supports the following media type options:
14597785Spdeuskar
14697785Spdeuskar   autoselect      -  Enables auto-negotiation for speed and duplex.
14797785Spdeuskar
148146663Stackerman   10baseT/UTP     -  Sets speed to 10 Mbps. Use the ifconfig mediaopt
14997785Spdeuskar                      option to select full-duplex mode.
15097785Spdeuskar
15197785Spdeuskar   100baseTX       -  Sets speed to 100 Mbps. Use the ifconfig mediaopt
15297785Spdeuskar                      option to select full-duplex mode.
15397785Spdeuskar
15497785Spdeuskar   1000baseTX      -  Sets speed to 1000 Mbps. In this case, the driver
15597785Spdeuskar                      supports only full-duplex mode.
15697785Spdeuskar
15797785Spdeuskar   1000baseSX      -  Sets speed to 1000 Mbps. In this case, the driver
15897785Spdeuskar                      supports only full-duplex mode.
15997785Spdeuskar
16097785SpdeuskarFor more information on the ifconfig utility, see the ifconfig man page.
16197785Spdeuskar
16297785Spdeuskar
16397785SpdeuskarAdditional Configurations
16497785Spdeuskar=========================
16597785Spdeuskar
166146663StackermanThe driver supports Transmit/Receive Checksum Offload and Jumbo Frames on
167157566Sglebiusall but the 82542-based adapters.  For specific adapters, refer to the
168146663StackermanIdentifying Your Adapter section.
169112472Spdeuskar
17097785Spdeuskar  Jumbo Frames
17197785Spdeuskar  ------------
172157566Sglebius  To enable Jumbo Frames, use the ifconfig utility to set the Maximum
173157566Sglebius  Transport Unit (MTU) frame size above its default of 1500 bytes.
17497785Spdeuskar
175157566Sglebius  The Jumbo Frames MTU range for Intel Adapters is 1500 to 16110. To modify
176157566Sglebius  the setting, enter the following:
17797785Spdeuskar
178157566Sglebius        ifconfig em<interface_num> <hostname or IP address> mtu 9000
179146663Stackerman
180157566Sglebius  To confirm the MTU used between two specific devices, use:
181146663Stackerman
182157566Sglebius        route get <destination_IP_address>
183146663Stackerman
184157566Sglebius  Notes:
18597785Spdeuskar
186157566Sglebius  - Only enable Jumbo Frames if your network infrastructure supports them.
18797785Spdeuskar
188157566Sglebius  - To enable Jumbo Frames, increase the MTU size on the interface beyond
189157566Sglebius    1500.
190112472Spdeuskar
191157566Sglebius  - The Jumbo Frames setting on the switch must be set to at least 22 bytes
192157566Sglebius    larger than that of the MTU.
193112472Spdeuskar
194157566Sglebius  - The maximum MTU setting for Jumbo Frames is 16110.  This value coincides
195157566Sglebius    with the maximum Jumbo Frames size of 16128.
196157566Sglebius
197157566Sglebius  - Some Intel gigabit adapters that support Jumbo Frames have a frame size
198157566Sglebius    limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes.
199157566Sglebius    The adapters with this limitation are based on the Intel(R) 82571EB,
200169240Sjfv    82572EI, 82573L, 82566, 82562, and 80003ES2LAN controller.  These
201169240Sjfv    correspond to the following product names:
202157566Sglebius     Intel(R) PRO/1000 PT Server Adapter
203157566Sglebius     Intel(R) PRO/1000 PT Desktop Adapter
204157566Sglebius     Intel(R) PRO/1000 PT Network Connection
205157566Sglebius     Intel(R) PRO/1000 PT Dual Port Server Adapter
206157566Sglebius     Intel(R) PRO/1000 PT Dual Port Network Connection
207170141Sjfv     Intel(R) PRO/1000 PT Quad Port Server Adapter
208170141Sjfv     Intel(R) PRO/1000 PF Quad Port Server Adapter
209157566Sglebius     Intel(R) PRO/1000 PF Server Adapter
210157566Sglebius     Intel(R) PRO/1000 PF Network Connection
211157566Sglebius     Intel(R) PRO/1000 PF Dual Port Server Adapter
212157566Sglebius     Intel(R) PRO/1000 PB Server Connection
213157566Sglebius     Intel(R) PRO/1000 PL Network Connection
214157566Sglebius     Intel(R) PRO/1000 EB Network Connection with I/O Acceleration
215157566Sglebius     Intel(R) PRO/1000 EB Backplane Connection with I/O Acceleration
216169240Sjfv     Intel(R) 82566DM-2 Gigabit Network Connection
217157566Sglebius
218157566Sglebius  - Adapters based on the Intel(R) 82542 and 82573V/E controller do not
219157566Sglebius    support Jumbo Frames. These correspond to the following product names:
220157566Sglebius     Intel(R) PRO/1000 Gigabit Server Adapter
221157566Sglebius     Intel(R) PRO/1000 PM Network Connection
222157566Sglebius
223157566Sglebius  - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or
224157566Sglebius    loss of link.
225157566Sglebius
226160949Sglebius  - The following adapters do not support Jumbo Frames:
227160949Sglebius    Intel(R) 82562V 10/100 Network Connection
228160949Sglebius    Intel(R) 82566DM Gigabit Network Connection
229160949Sglebius    Intel(R) 82566DC Gigabit Network Connection
230160949Sglebius    Intel(R) 82566MM Gigabit Network Connection
231160949Sglebius    Intel(R) 82566MC Gigabit Network Connection
232169240Sjfv    Intel(R) 82562GT 10/100 Network Connection
233169240Sjfv    Intel(R) 82562G 10/100 Network Connection
234169240Sjfv    Intel(R) 82566DC-2 Gigabit Network Connection
235169240Sjfv    Intel(R) 82562V-2 10/100 Network Connection
236169240Sjfv    Intel(R) 82562G-2 10/100 Network Connection
237169240Sjfv    Intel(R) 82562GT-2 10/100 Network Connection
238157566Sglebius
23997785Spdeuskar  VLANs
24097785Spdeuskar  -----
241146663Stackerman  To create a new VLAN interface:
24297785Spdeuskar
243112472Spdeuskar        ifconfig <vlan_name> create
24497785Spdeuskar
245146663Stackerman  To associate the VLAN interface with a physical interface and
246112472Spdeuskar  assign a VLAN ID, IP address, and netmask:
24797785Spdeuskar
248146663Stackerman        ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan
249112472Spdeuskar           <vlan_id> vlandev <physical_interface>
25097785Spdeuskar
251112472Spdeuskar  Example:
25297785Spdeuskar
253169240Sjfv        ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan 10 vlandev em0
25497785Spdeuskar
255169240Sjfv  In this example, all packets will be marked on egress with 802.1Q VLAN
256112472Spdeuskar  tags, specifying a VLAN ID of 10.
25797785Spdeuskar
258146663Stackerman  To remove a VLAN interface:
25997785Spdeuskar
260170141Sjfv  Intel Network Connection        ifconfig <vlan_name> destroy
26197785Spdeuskar
262157566Sglebius
263112472Spdeuskar  Polling
264112472Spdeuskar  -------
265169240Sjfv
266146663Stackerman  To enable polling in the driver, add the following options to the kernel
267112472Spdeuskar  configuration, and then recompile the kernel:
26897785Spdeuskar
269112472Spdeuskar        options DEVICE_POLLING
270112472Spdeuskar        options HZ=1000
271112472Spdeuskar
272146663Stackerman  At runtime use:
273170141Sjfv        ifconfig emX polling (to turn polling on)
274170141Sjfv  and:
275170141Sjfv        ifconfig emX -polling  (to turn it off)
276112472Spdeuskar
277157566Sglebius
278146663Stackerman  Checksum Offload
279146663Stackerman  ----------------
280146663Stackerman  Checksum offloading is not supported on 82542 Gigabit adapters.
281112472Spdeuskar
282146663Stackerman  Checksum offloading supports both TCP and UDP packets and is
283146663Stackerman  supported for both transmit and receive.
284112472Spdeuskar
285146663Stackerman  Checksum offloading can be enabled or disabled using ifconfig.
286146663Stackerman  Both transmit and receive offloading will be either enabled or
287146663Stackerman  disabled together. You cannot enable/disable one without the other.
288112472Spdeuskar
289146663Stackerman  To enable checksum offloading:
290112472Spdeuskar
291146663Stackerman         ifconfig <interface_num> rxcsum
292112472Spdeuskar
293146663Stackerman  To disable checksum offloading:
294146663Stackerman
295146663Stackerman         ifconfig <interface_num> -rxcsum
296146663Stackerman
297146663Stackerman  To confirm the current setting:
298146663Stackerman
299146663Stackerman         ifconfig <interface_num>
300146663Stackerman
301146663Stackerman  Look for the presence or absence of the following line:
302146663Stackerman
303146663Stackerman         options=3 <RXCSUM,TXCSUM>
304146663Stackerman
305146663Stackerman  See the ifconfig man page for further information.
306146663Stackerman
307157566Sglebius
308169240Sjfv  TSO
309169240Sjfv  ---
310170141Sjfv  The FreeBSD driver offers support for TSO (TCP Segmentation Offload).
311169240Sjfv
312170141Sjfv  You can enable/disable it in two ways/places:
313169240Sjfv
314170141Sjfv        -  sysctl net.inet.tcp.tso=0    (or 1 to enable it)
315169240Sjfv
316170141Sjfv  Doing this disables TSO in the stack and will affect all adapters.
317169240Sjfv
318170141Sjfv        -  ifconfig emX -tso
319169240Sjfv
320170141Sjfv  Doing this will disable TSO only for this adapter.
321170141Sjfv
322170141Sjfv  To enable:
323170141Sjfv
324170141Sjfv        -  ifconfig emX tso
325170141Sjfv
326170141Sjfv  NOTES: By default only PCI-Express adapters are ENABLED to do TSO. Others
327170141Sjfv  can be enabled by the user at their own risk
328170141Sjfv  TSO is not supported on 82547 and 82544-based adapters, as well as older adapters.
329170141Sjfv
330170141Sjfv
33197785SpdeuskarKnown Limitations
33297785Spdeuskar=================
333146663Stackerman
334169240Sjfv  Detected Tx Unit Hang in Quad Port Adapters
335169240Sjfv  -------------------------------------------
336169240Sjfv
337169240Sjfv  In some cases ports 3 and 4 wont pass traffic. Ports 1 and 2 don't show
338169240Sjfv  any errors and will pass traffic.
339169240Sjfv
340169240Sjfv  This issue MAY be resolved by updating to the latest BIOS. You can
341169240Sjfv  check your system's BIOS by downloading the Linux Firmware Developer Kit
342169240Sjfv  that can be obtained at http://www.linuxfirmwarekit.org/
343169240Sjfv
344169240Sjfv
345119509Spdeuskar  There are known performance issues with this driver when running UDP traffic
346146663Stackerman  with Jumbo Frames.
347169240Sjfv  ----------------------------------------------------------------------------
34897785Spdeuskar
349169240Sjfv  82541/82547 can't link or is slow to link with some link partners
350169240Sjfv  -----------------------------------------------------------------
351169240Sjfv
352146663Stackerman  There is a known compatibility issue where time to link is slow or link is not
353146663Stackerman  established between 82541/82547 controllers and some switches.  Known switches
354146663Stackerman  include:
355119509Spdeuskar        Planex FXG-08TE
356119509Spdeuskar        I-O Data ETG-SH8
357235527Sjfv        Netgear GS105v3
358119509Spdeuskar
359146663Stackerman  The driver can be compiled with the following changes:
360119509Spdeuskar
361170141Sjfv  Edit ./em.x.x.x/src/if_em.h to change the #define EM_MASTER_SLAVE
362170141Sjfv  For example, change from:
363119509Spdeuskar
364170141Sjfv      #define EM_MASTER_SLAVE   e1000_ms_hw_default
365146663Stackerman  to:
366170141Sjfv      #define EM_MASTER_SLAVE   2
367119509Spdeuskar
368146663Stackerman  Use one of the following options:
369119509Spdeuskar      1 = Master mode
370119509Spdeuskar      2 = Slave mode
371119509Spdeuskar      3 = Auto master/slave
372146663Stackerman  Setting 2 is recommended.
373119509Spdeuskar
374146663Stackerman  Recompile the module:
375146663Stackerman          a. To compile the module
376146663Stackerman                cd em-x.x.x
377146663Stackerman                make clean
378146663Stackerman                make
379119509Spdeuskar
380119509Spdeuskar   b. To install the compiled module in system directory:
381146663Stackerman                make install
382119509Spdeuskar
383119509Spdeuskar
38497785SpdeuskarSupport
38597785Spdeuskar=======
38697785Spdeuskar
38797785SpdeuskarFor general information and support, go to the Intel support website at:
38897785Spdeuskar
38997785Spdeuskar        http://support.intel.com
39097785Spdeuskar
391146663StackermanIf an issue is identified, support is through email only at:
392252899Sjfvfreebsd@intel.com
39397785Spdeuskar
394157566Sglebius
39597785SpdeuskarLicense
39697785Spdeuskar=======
39797785Spdeuskar
398146663StackermanThis software program is released under the terms of a license agreement
399146663Stackermanbetween you ('Licensee') and Intel. Do not use or load this software or any
400146663Stackermanassociated materials (collectively, the 'Software') until you have carefully
401146663Stackermanread the full terms and conditions of the LICENSE located in this software
402146663Stackermanpackage. By loading or using the Software, you agree to the terms of this
403146663StackermanAgreement. If you do not agree with the terms of this Agreement, do not
40497785Spdeuskarinstall or use the Software.
40597785Spdeuskar
40697785Spdeuskar* Other names and brands may be claimed as the property of others.
407