README revision 181027
176195Sbrian$FreeBSD: head/sys/dev/e1000/README 170141 2007-05-30 23:32:21Z jfv $
276195SbrianFreeBSD* Driver for Intel Network Connection
376195Sbrian=============================================
476195Sbrian
576195SbrianMay 30, 2007
676195Sbrian
776195Sbrian
876195SbrianContents
976195Sbrian========
1076195Sbrian
1176195Sbrian- Overview
1276195Sbrian- Identifying Your Adapter
1376195Sbrian- Building and Installation
1476195Sbrian- Speed and Duplex Configuration
1576195Sbrian- Additional Configurations
1676195Sbrian- Known Limitations
1776195Sbrian- Support
1876195Sbrian- License
1976195Sbrian
2076195Sbrian
2176195SbrianOverview
2276195Sbrian========
2376195Sbrian
2476195SbrianThis file describes the FreeBSD* driver for Intel Network Connection.
2576195SbrianThis driver has been developed for use with FreeBSD, Release 7.x.
2676195Sbrian
2776195SbrianFor questions related to hardware requirements, refer to the documentation
2876195Sbriansupplied with your Gigabit adapter. All hardware requirements listed
2976195Sbrianapply to use with FreeBSD.
30145975Sanholt
3176195Sbrian
3276195SbrianIdentifying Your Adapter
3376195Sbrian========================
3476195Sbrian
3576195SbrianFor information on how to identify your adapter, go to the Adapter &
3676195SbrianDriver ID Guide at:
3776195Sbrian
3876195Sbrianhttp://support.intel.com/support/network/sb/cs-012904.htm
3976195Sbrian
4076195Sbrian
4176195SbrianFor the latest Intel network drivers for FreeBSD, see:
4276195Sbrian
4376195Sbrianhttp://downloadfinder.intel.com/scripts-df-external/support_intel.aspx
4476195Sbrian
4576195Sbrian
4676195SbrianNOTE: Mobile adapters are not fully supported.
4776195SbrianNOTE: The Intel(R) 82562v 10/100 Network Connection only provides 10/100
4876195Sbriansupport.
4976195Sbrian
5076195SbrianBuilding and Installation
5176195Sbrian=========================
5276195Sbrian
5376195SbrianNOTE: The driver can be installed as a dynamic loadable kernel module or
5476195Sbrian      compiled into the kernel. You must have kernel sources installed in
5576195Sbrian      order to compile the driver module.
5676195Sbrian
5776195SbrianIn the instructions below, x.x.x is the driver version as indicated in the
5876195Sbrianname of the driver tar file.
5976195Sbrian
6076195Sbrian1. Move the base driver tar file to the directory of your choice. For
6176195Sbrian   example, use /home/username/em or /usr/local/src/em.
6276195Sbrian
6376195Sbrian2. Untar/unzip the archive:
6476195Sbrian
6576195Sbrian        tar xzvf em-x.x.x.tar.gz
6676195Sbrian
6776195Sbrian   This will create an em-x.x.x directory.
6876195Sbrian
6976195Sbrian3. To create a loadable module, perform the following steps.
7076195Sbrian   NOTE: To compile the driver into the kernel, go directly to step 4.
7176195Sbrian
7276195Sbrian        a. To compile the module
7376195Sbrian
7476195Sbrian                  cd em-x.x.x
7576195Sbrian                  make
7676195Sbrian
7776195Sbrian        b. To install the compiled module to the system directory:
7876195Sbrian
7976195Sbrian                  make install
8076195Sbrian
8176195Sbrian        c. If you want the driver to load automatically when the system is booted:
8276195Sbrian
8376195Sbrian              1. Edit /boot/loader.conf, and add the following line:
8476195Sbrian
8576195Sbrian                  if_em_load="YES"
8676195Sbrian
8776195Sbrian4. To compile the driver into the kernel, enter:
8876195Sbrian
8976195Sbrian        cd em-x.x.x/src
9076195Sbrian        cp *.[ch] /usr/src/sys/dev/em
9176195Sbrian
9276195Sbrian        Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in
9376195Sbrian        /usr/src/sys/i386/conf, and ensure the following line is present:
9476195Sbrian
9576195Sbrian        device em
9676195Sbrian
9776195Sbrian        Compile and install the kernel. The system must be rebooted for the
9876195Sbrian        kernel updates to take effect. For additional information on compiling
9976195Sbrian        the kernel, consult the FreeBSD operating system documentation.
10076195Sbrian
10176195Sbrian5. To assign an IP address to the interface, enter the following:
10276195Sbrian
10376195Sbrian        ifconfig em<interface_num> <IP_address>
10476195Sbrian
10576195Sbrian6. Verify that the interface works. Enter the following, where <IP_address>
10676195Sbrian   is the IP address for another machine on the same subnet as the interface
10776195Sbrian   that is being tested:
10876195Sbrian
10976195Sbrian        ping <IP_address>
11076195Sbrian
11176195Sbrian7. To configure the IP address to remain after reboot, edit /etc/rc.conf,
11276195Sbrian   and create the appropriate ifconfig_em<interface_num>entry:
11376195Sbrian
11476195Sbrian        ifconfig_em<interface_num>="<ifconfig_settings>"
11576195Sbrian
11676195Sbrian   Example usage:
11776195Sbrian
11876195Sbrian        ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0"
11976195Sbrian
12076195Sbrian   NOTE: For assistance, see the ifconfig man page.
12176195Sbrian
12276195Sbrian
12376195SbrianSpeed and Duplex Configuration
12476195Sbrian==============================
12576195Sbrian
12676195SbrianBy default, the adapter auto-negotiates the speed and duplex of the
12776195Sbrianconnection. If there is a specific need, the ifconfig utility can be used to
12876195Sbrianconfigure the speed and duplex settings on the adapter. Example usage:
12976195Sbrian
13076195Sbrian        ifconfig em<interface_num> <IP_address> media 100baseTX mediaopt
13176195Sbrian            full-duplex
13276195Sbrian
13376195Sbrian   NOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is
13476195Sbrian         not specified and you are not running at gigabit speed, the driver
13576195Sbrian         defaults to half-duplex.
13676195Sbrian
13776195SbrianIf the interface is currently forced to 100 full duplex, in order to change
13876195Sbrianto half duplex you must use this command:
13976195Sbrian
14076195Sbrian        ifconfig em<interface_num> <IP_address> media 100baseTX -mediaopt
14176195Sbrian            full-duplex
14276195Sbrian
14376195Sbrian
14476195SbrianThis driver supports the following media type options:
14576195Sbrian
14676195Sbrian   autoselect      -  Enables auto-negotiation for speed and duplex.
14776195Sbrian
14876195Sbrian   10baseT/UTP     -  Sets speed to 10 Mbps. Use the ifconfig mediaopt
14976195Sbrian                      option to select full-duplex mode.
15076195Sbrian
15176195Sbrian   100baseTX       -  Sets speed to 100 Mbps. Use the ifconfig mediaopt
15276195Sbrian                      option to select full-duplex mode.
15376195Sbrian
15476195Sbrian   1000baseTX      -  Sets speed to 1000 Mbps. In this case, the driver
15576195Sbrian                      supports only full-duplex mode.
15676195Sbrian
15776195Sbrian   1000baseSX      -  Sets speed to 1000 Mbps. In this case, the driver
15876195Sbrian                      supports only full-duplex mode.
15976195Sbrian
16076195SbrianFor more information on the ifconfig utility, see the ifconfig man page.
16176195Sbrian
16276195Sbrian
16376195SbrianAdditional Configurations
16476195Sbrian=========================
16576195Sbrian
16676195SbrianThe driver supports Transmit/Receive Checksum Offload and Jumbo Frames on
16776195Sbrianall but the 82542-based adapters.  For specific adapters, refer to the
16876195SbrianIdentifying Your Adapter section.
16976195Sbrian
17076195Sbrian  Jumbo Frames
17176195Sbrian  ------------
17276195Sbrian  To enable Jumbo Frames, use the ifconfig utility to set the Maximum
17376195Sbrian  Transport Unit (MTU) frame size above its default of 1500 bytes.
17476195Sbrian
17576195Sbrian  The Jumbo Frames MTU range for Intel Adapters is 1500 to 16110. To modify
17676195Sbrian  the setting, enter the following:
17776195Sbrian
17876195Sbrian        ifconfig em<interface_num> <hostname or IP address> mtu 9000
17976195Sbrian
18076195Sbrian  To confirm the MTU used between two specific devices, use:
18176195Sbrian
18276195Sbrian        route get <destination_IP_address>
18376195Sbrian
18476195Sbrian  Notes:
18576195Sbrian
18676195Sbrian  - Only enable Jumbo Frames if your network infrastructure supports them.
18776195Sbrian
18876195Sbrian  - To enable Jumbo Frames, increase the MTU size on the interface beyond
18976195Sbrian    1500.
19076195Sbrian
19176195Sbrian  - The Jumbo Frames setting on the switch must be set to at least 22 bytes
19276195Sbrian    larger than that of the MTU.
19376195Sbrian
19476195Sbrian  - The maximum MTU setting for Jumbo Frames is 16110.  This value coincides
19576195Sbrian    with the maximum Jumbo Frames size of 16128.
19676195Sbrian
19776195Sbrian  - Some Intel gigabit adapters that support Jumbo Frames have a frame size
19876195Sbrian    limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes.
19976195Sbrian    The adapters with this limitation are based on the Intel(R) 82571EB,
20076195Sbrian    82572EI, 82573L, 82566, 82562, and 80003ES2LAN controller.  These
20176195Sbrian    correspond to the following product names:
20276195Sbrian     Intel(R) PRO/1000 PT Server Adapter
20376195Sbrian     Intel(R) PRO/1000 PT Desktop Adapter
20476195Sbrian     Intel(R) PRO/1000 PT Network Connection
20576195Sbrian     Intel(R) PRO/1000 PT Dual Port Server Adapter
20676195Sbrian     Intel(R) PRO/1000 PT Dual Port Network Connection
20776195Sbrian     Intel(R) PRO/1000 PT Quad Port Server Adapter
20876195Sbrian     Intel(R) PRO/1000 PF Quad Port Server Adapter
20976195Sbrian     Intel(R) PRO/1000 PF Server Adapter
21076195Sbrian     Intel(R) PRO/1000 PF Network Connection
21176195Sbrian     Intel(R) PRO/1000 PF Dual Port Server Adapter
21276195Sbrian     Intel(R) PRO/1000 PB Server Connection
21376195Sbrian     Intel(R) PRO/1000 PL Network Connection
21476195Sbrian     Intel(R) PRO/1000 EB Network Connection with I/O Acceleration
21576195Sbrian     Intel(R) PRO/1000 EB Backplane Connection with I/O Acceleration
21676195Sbrian     Intel(R) 82566DM-2 Gigabit Network Connection
21776195Sbrian
21876195Sbrian  - Adapters based on the Intel(R) 82542 and 82573V/E controller do not
21976195Sbrian    support Jumbo Frames. These correspond to the following product names:
22076195Sbrian     Intel(R) PRO/1000 Gigabit Server Adapter
22176195Sbrian     Intel(R) PRO/1000 PM Network Connection
22276195Sbrian
22376195Sbrian  - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or
22476195Sbrian    loss of link.
22576195Sbrian
22676195Sbrian  - The following adapters do not support Jumbo Frames:
22776195Sbrian    Intel(R) 82562V 10/100 Network Connection
22876195Sbrian    Intel(R) 82566DM Gigabit Network Connection
22976195Sbrian    Intel(R) 82566DC Gigabit Network Connection
23076195Sbrian    Intel(R) 82566MM Gigabit Network Connection
23176195Sbrian    Intel(R) 82566MC Gigabit Network Connection
23276195Sbrian    Intel(R) 82562GT 10/100 Network Connection
23376195Sbrian    Intel(R) 82562G 10/100 Network Connection
23476195Sbrian    Intel(R) 82566DC-2 Gigabit Network Connection
23576195Sbrian    Intel(R) 82562V-2 10/100 Network Connection
23676195Sbrian    Intel(R) 82562G-2 10/100 Network Connection
23776195Sbrian    Intel(R) 82562GT-2 10/100 Network Connection
23876195Sbrian
23976195Sbrian  VLANs
24076195Sbrian  -----
24176195Sbrian  To create a new VLAN interface:
24276195Sbrian
24376195Sbrian        ifconfig <vlan_name> create
24476195Sbrian
24576195Sbrian  To associate the VLAN interface with a physical interface and
24676195Sbrian  assign a VLAN ID, IP address, and netmask:
24776195Sbrian
24876195Sbrian        ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan
24976195Sbrian           <vlan_id> vlandev <physical_interface>
25076195Sbrian
25176195Sbrian  Example:
25276195Sbrian
25376195Sbrian        ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan 10 vlandev em0
25476195Sbrian
25576195Sbrian  In this example, all packets will be marked on egress with 802.1Q VLAN
25676195Sbrian  tags, specifying a VLAN ID of 10.
25776195Sbrian
25876195Sbrian  To remove a VLAN interface:
25976195Sbrian
26076195Sbrian  Intel Network Connection        ifconfig <vlan_name> destroy
26176195Sbrian
26276195Sbrian
26376195Sbrian  Polling
26476195Sbrian  -------
26576195Sbrian
26676195Sbrian  To enable polling in the driver, add the following options to the kernel
26776195Sbrian  configuration, and then recompile the kernel:
26876195Sbrian
26976195Sbrian        options DEVICE_POLLING
27076195Sbrian        options HZ=1000
27176195Sbrian
27276195Sbrian  At runtime use:
27376195Sbrian        ifconfig emX polling (to turn polling on)
27476195Sbrian  and:
27576195Sbrian        ifconfig emX -polling  (to turn it off)
27676195Sbrian
27776195Sbrian
27876195Sbrian  Checksum Offload
27976195Sbrian  ----------------
28076195Sbrian  Checksum offloading is not supported on 82542 Gigabit adapters.
28176195Sbrian
28276195Sbrian  Checksum offloading supports both TCP and UDP packets and is
28376195Sbrian  supported for both transmit and receive.
28476195Sbrian
28576195Sbrian  Checksum offloading can be enabled or disabled using ifconfig.
28676195Sbrian  Both transmit and receive offloading will be either enabled or
28776195Sbrian  disabled together. You cannot enable/disable one without the other.
28876195Sbrian
28976195Sbrian  To enable checksum offloading:
29076195Sbrian
29176195Sbrian         ifconfig <interface_num> rxcsum
29276195Sbrian
29376195Sbrian  To disable checksum offloading:
29476195Sbrian
29576195Sbrian         ifconfig <interface_num> -rxcsum
29676195Sbrian
29776195Sbrian  To confirm the current setting:
29876195Sbrian
29976195Sbrian         ifconfig <interface_num>
30076195Sbrian
30176195Sbrian  Look for the presence or absence of the following line:
30276195Sbrian
30376195Sbrian         options=3 <RXCSUM,TXCSUM>
30476195Sbrian
30576195Sbrian  See the ifconfig man page for further information.
30676195Sbrian
30776195Sbrian
30876195Sbrian  TSO
30976195Sbrian  ---
31076195Sbrian  The FreeBSD driver offers support for TSO (TCP Segmentation Offload).
31176195Sbrian
31276195Sbrian  You can enable/disable it in two ways/places:
31376195Sbrian
31476195Sbrian        -  sysctl net.inet.tcp.tso=0    (or 1 to enable it)
31576195Sbrian
31676195Sbrian  Doing this disables TSO in the stack and will affect all adapters.
31776195Sbrian
31876195Sbrian        -  ifconfig emX -tso
31976195Sbrian
32076195Sbrian  Doing this will disable TSO only for this adapter.
32176195Sbrian
32276195Sbrian  To enable:
32376195Sbrian
32476195Sbrian        -  ifconfig emX tso
32576195Sbrian
32676195Sbrian  NOTES: By default only PCI-Express adapters are ENABLED to do TSO. Others
32776195Sbrian  can be enabled by the user at their own risk
32876195Sbrian  TSO is not supported on 82547 and 82544-based adapters, as well as older adapters.
32976195Sbrian
33076195Sbrian
33176195SbrianKnown Limitations
33276195Sbrian=================
33376195Sbrian
33476195Sbrian  Detected Tx Unit Hang in Quad Port Adapters
33576195Sbrian  -------------------------------------------
33676195Sbrian
33776195Sbrian  In some cases ports 3 and 4 wont pass traffic. Ports 1 and 2 don't show
33876195Sbrian  any errors and will pass traffic.
33976195Sbrian
34076195Sbrian  This issue MAY be resolved by updating to the latest BIOS. You can
34176195Sbrian  check your system's BIOS by downloading the Linux Firmware Developer Kit
34276195Sbrian  that can be obtained at http://www.linuxfirmwarekit.org/
34376195Sbrian
34476195Sbrian
34576195Sbrian  There are known performance issues with this driver when running UDP traffic
34676195Sbrian  with Jumbo Frames.
34776195Sbrian  ----------------------------------------------------------------------------
34876195Sbrian
34976195Sbrian  82541/82547 can't link or is slow to link with some link partners
35076195Sbrian  -----------------------------------------------------------------
35176195Sbrian
35276195Sbrian  There is a known compatibility issue where time to link is slow or link is not
35376195Sbrian  established between 82541/82547 controllers and some switches.  Known switches
35476195Sbrian  include:
35576195Sbrian        Planex FXG-08TE
35676195Sbrian        I-O Data ETG-SH8
35776195Sbrian
35876195Sbrian  The driver can be compiled with the following changes:
35976195Sbrian
36076195Sbrian  Edit ./em.x.x.x/src/if_em.h to change the #define EM_MASTER_SLAVE
36176195Sbrian  For example, change from:
36276195Sbrian
36376195Sbrian      #define EM_MASTER_SLAVE   e1000_ms_hw_default
36476195Sbrian  to:
36576195Sbrian      #define EM_MASTER_SLAVE   2
36676195Sbrian
36776195Sbrian  Use one of the following options:
36876195Sbrian      1 = Master mode
36976195Sbrian      2 = Slave mode
37076195Sbrian      3 = Auto master/slave
37176195Sbrian  Setting 2 is recommended.
37276195Sbrian
37376195Sbrian  Recompile the module:
37476195Sbrian          a. To compile the module
37576195Sbrian                cd em-x.x.x
37676195Sbrian                make clean
37776195Sbrian                make
37876195Sbrian
37976195Sbrian   b. To install the compiled module in system directory:
38076195Sbrian                make install
38176195Sbrian
38276195Sbrian
38376195SbrianSupport
38476195Sbrian=======
38576195Sbrian
38676195SbrianFor general information and support, go to the Intel support website at:
38776195Sbrian
38876195Sbrian        http://support.intel.com
38976195Sbrian
39076195SbrianIf an issue is identified, support is through email only at:
39176195Sbrianfreebsdnic@mailbox.intel.com
39276195Sbrian
39376195Sbrian
39476195SbrianLicense
39576195Sbrian=======
39676195Sbrian
39776195SbrianThis software program is released under the terms of a license agreement
39876195Sbrianbetween you ('Licensee') and Intel. Do not use or load this software or any
39976195Sbrianassociated materials (collectively, the 'Software') until you have carefully
40076195Sbrianread the full terms and conditions of the LICENSE located in this software
40176195Sbrianpackage. By loading or using the Software, you agree to the terms of this
40276195SbrianAgreement. If you do not agree with the terms of this Agreement, do not
40376195Sbrianinstall or use the Software.
40476195Sbrian
40576195Sbrian* Other names and brands may be claimed as the property of others.
40676195Sbrian