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