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