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