README revision 169240
1$FreeBSD: head/sys/dev/em/README 169240 2007-05-04 00:00:12Z jfv $ 2FreeBSD Driver for the Gigabit Family of Adapters 3============================================================ 4 5April 18, 2007 6 7 8Contents 9======== 10 11- Overview 12- Identifying Your Adapter 13- Building and Installation 14- Speed and Duplex Configuration 15- Additional Configurations 16- Known Limitations 17- Support 18- License 19 20 21Overview 22======== 23 24This file describes the FreeBSD* driver for the Gigabit Family of 25Adapters. This driver has been developed for use with FreeBSD, Release 6.x. 26 27For questions related to hardware requirements, refer to the documentation 28supplied with your Gigabit adapter. All hardware requirements listed 29apply to use with FreeBSD. 30 31 32Identifying Your Adapter 33======================== 34 35For information on how to identify your adapter, go to the Adapter & 36Driver ID Guide at: 37 38http://support.intel.com/support/network/sb/cs-012904.htm 39 40 41For the latest Intel network drivers for FreeBSD, see: 42 43http://downloadfinder.intel.com/scripts-df-external/support_intel.aspx 44 45 46NOTE: Mobile adapters are not fully supported. 47NOTE: The Intel(R) 82562v 10/100 Network Connection only provides 10/100 48support. 49 50Building and Installation 51========================= 52 53NOTE: The driver can be installed as a dynamic loadable kernel module or 54 compiled into the kernel. You must have kernel sources installed in 55 order to compile the driver module. 56 57In the instructions below, x.x.x is the driver version as indicated in the 58name of the driver tar file. 59 601. Move the base driver tar file to the directory of your choice. For 61 example, use /home/username/em or /usr/local/src/em. 62 632. Untar/unzip the archive: 64 65 tar xzvf em-x.x.x.tar.gz 66 67 This will create an em-x.x.x directory. 68 693. To create a loadable module, perform the following steps. 70 NOTE: To compile the driver into the kernel, go directly to step 4. 71 72 a. To compile the module 73 74 cd em-x.x.x 75 make 76 77 b. To install the compiled module to the system directory: 78 79 make install 80 81 c. If you want the driver to load automatically when the system is booted: 82 83 1. Edit /boot/loader.conf, and add the following line: 84 85 if_em_load="YES" 86 874. To compile the driver into the kernel, enter: 88 89 cd em-x.x.x/src 90 cp *.[ch] /usr/src/sys/dev/em 91 cp Makefile.kernel /usr/src/sys/modules/em/Makefile 92 93 NOTE: At this point you MUST install a patch, kernbuild.patch, which is 94 located in the patches directory. This is applied as shown below where 95 "$PATH_TO_KERNBUILD_PATCH" is the location of the kernbuild.patch: 96 97 cd /usr/src/sys; patch -p1 < $PATH_TO_KERNBUILD_PATCH 98 99 Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in 100 /usr/src/sys/i386/conf, and ensure the following line is present: 101 102 device em 103 104 Compile and install the kernel. The system must be rebooted for the 105 kernel updates to take effect. For additional information on compiling 106 the kernel, consult the FreeBSD operating system documentation. 107 1085. To assign an IP address to the interface, enter the following: 109 110 ifconfig em<interface_num> <IP_address> 111 1126. Verify that the interface works. Enter the following, where <IP_address> 113 is the IP address for another machine on the same subnet as the interface 114 that is being tested: 115 116 ping <IP_address> 117 1187. To configure the IP address to remain after reboot, edit /etc/rc.conf, 119 and create the appropriate ifconfig_em<interface_num>entry: 120 121 ifconfig_em<interface_num>="<ifconfig_settings>" 122 123 Example usage: 124 125 ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0" 126 127 NOTE: For assistance, see the ifconfig man page. 128 129 130Speed and Duplex Configuration 131============================== 132 133By default, the adapter auto-negotiates the speed and duplex of the 134connection. If there is a specific need, the ifconfig utility can be used to 135configure the speed and duplex settings on the adapter. Example usage: 136 137 ifconfig em<interface_num> <IP_address> media 100baseTX mediaopt 138 full-duplex 139 140 NOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is 141 not specified and you are not running at gigabit speed, the driver 142 defaults to half-duplex. 143 144If the interface is currently forced to 100 full duplex, in order to change 145to half duplex you must use this command: 146 147 ifconfig em<interface_num> <IP_address> media 100baseTX -mediaopt 148 full-duplex 149 150 151This driver supports the following media type options: 152 153 autoselect - Enables auto-negotiation for speed and duplex. 154 155 10baseT/UTP - Sets speed to 10 Mbps. Use the ifconfig mediaopt 156 option to select full-duplex mode. 157 158 100baseTX - Sets speed to 100 Mbps. Use the ifconfig mediaopt 159 option to select full-duplex mode. 160 161 1000baseTX - Sets speed to 1000 Mbps. In this case, the driver 162 supports only full-duplex mode. 163 164 1000baseSX - Sets speed to 1000 Mbps. In this case, the driver 165 supports only full-duplex mode. 166 167For more information on the ifconfig utility, see the ifconfig man page. 168 169 170Additional Configurations 171========================= 172 173The driver supports Transmit/Receive Checksum Offload and Jumbo Frames on 174all but the 82542-based adapters. For specific adapters, refer to the 175Identifying Your Adapter section. 176 177 Jumbo Frames 178 ------------ 179 To enable Jumbo Frames, use the ifconfig utility to set the Maximum 180 Transport Unit (MTU) frame size above its default of 1500 bytes. 181 182 The Jumbo Frames MTU range for Intel Adapters is 1500 to 16110. To modify 183 the setting, enter the following: 184 185 ifconfig em<interface_num> <hostname or IP address> mtu 9000 186 187 To confirm the MTU used between two specific devices, use: 188 189 route get <destination_IP_address> 190 191 Notes: 192 193 - Only enable Jumbo Frames if your network infrastructure supports them. 194 195 - To enable Jumbo Frames, increase the MTU size on the interface beyond 196 1500. 197 198 - The Jumbo Frames setting on the switch must be set to at least 22 bytes 199 larger than that of the MTU. 200 201 - The maximum MTU setting for Jumbo Frames is 16110. This value coincides 202 with the maximum Jumbo Frames size of 16128. 203 204 - Some Intel gigabit adapters that support Jumbo Frames have a frame size 205 limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes. 206 The adapters with this limitation are based on the Intel(R) 82571EB, 207 82572EI, 82573L, 82566, 82562, and 80003ES2LAN controller. These 208 correspond to the following product names: 209 Intel(R) PRO/1000 PT Server Adapter 210 Intel(R) PRO/1000 PT Desktop Adapter 211 Intel(R) PRO/1000 PT Network Connection 212 Intel(R) PRO/1000 PT Dual Port Server Adapter 213 Intel(R) PRO/1000 PT Dual Port Network Connection 214 Intel(R) PRO/1000 PF Server Adapter 215 Intel(R) PRO/1000 PF Network Connection 216 Intel(R) PRO/1000 PF Dual Port Server Adapter 217 Intel(R) PRO/1000 PB Server Connection 218 Intel(R) PRO/1000 PL Network Connection 219 Intel(R) PRO/1000 EB Network Connection with I/O Acceleration 220 Intel(R) PRO/1000 EB Backplane Connection with I/O Acceleration 221 Intel(R) 82566DM-2 Gigabit Network Connection 222 223 - Adapters based on the Intel(R) 82542 and 82573V/E controller do not 224 support Jumbo Frames. These correspond to the following product names: 225 Intel(R) PRO/1000 Gigabit Server Adapter 226 Intel(R) PRO/1000 PM Network Connection 227 228 - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or 229 loss of link. 230 231 - The following adapters do not support Jumbo Frames: 232 Intel(R) 82562V 10/100 Network Connection 233 Intel(R) 82566DM Gigabit Network Connection 234 Intel(R) 82566DC Gigabit Network Connection 235 Intel(R) 82566MM Gigabit Network Connection 236 Intel(R) 82566MC Gigabit Network Connection 237 Intel(R) 82562GT 10/100 Network Connection 238 Intel(R) 82562G 10/100 Network Connection 239 Intel(R) 82566DC-2 Gigabit Network Connection 240 Intel(R) 82562V-2 10/100 Network Connection 241 Intel(R) 82562G-2 10/100 Network Connection 242 Intel(R) 82562GT-2 10/100 Network Connection 243 244 VLANs 245 ----- 246 To create a new VLAN interface: 247 248 ifconfig <vlan_name> create 249 250 To associate the VLAN interface with a physical interface and 251 assign a VLAN ID, IP address, and netmask: 252 253 ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan 254 <vlan_id> vlandev <physical_interface> 255 256 Example: 257 258 ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan 10 vlandev em0 259 260 In this example, all packets will be marked on egress with 802.1Q VLAN 261 tags, specifying a VLAN ID of 10. 262 263 To remove a VLAN interface: 264 265 ifconfig <vlan_name> destroy 266 267 268 Polling 269 ------- 270 NOTES: Device Polling is only valid for non-SMP (Symmetric MultiProcessing) 271 kernels. 272 273 The driver has to be compiled into the kernel for Device Polling to be 274 enabled in the driver. 275 276 To enable polling in the driver, add the following options to the kernel 277 configuration, and then recompile the kernel: 278 279 options DEVICE_POLLING 280 options HZ=1000 281 282 At runtime use: 283 sysctl kern.polling.enable=1 to turn polling on 284 Use: 285 sysctl kern.polling.enable=0 to turn polling off 286 287 288 Checksum Offload 289 ---------------- 290 Checksum offloading is not supported on 82542 Gigabit adapters. 291 292 Checksum offloading supports both TCP and UDP packets and is 293 supported for both transmit and receive. 294 295 Checksum offloading can be enabled or disabled using ifconfig. 296 Both transmit and receive offloading will be either enabled or 297 disabled together. You cannot enable/disable one without the other. 298 299 To enable checksum offloading: 300 301 ifconfig <interface_num> rxcsum 302 303 To disable checksum offloading: 304 305 ifconfig <interface_num> -rxcsum 306 307 To confirm the current setting: 308 309 ifconfig <interface_num> 310 311 Look for the presence or absence of the following line: 312 313 options=3 <RXCSUM,TXCSUM> 314 315 See the ifconfig man page for further information. 316 317 318 TSO 319 --- 320 The FreeBSD driver now offers support for TSO (TCP Segmentation Offload). 321 To enable this support perform the following: 322 323 Patch the kernel with the patch supplied in the tarball. 324 Rebuild and install the kernel. 325 Recompile the driver. You must alter the Makefile to build the driver with 326 E1000_TSO defined. 327 328 Enable or disable TSO: 329 sysctl net.inet.tcp.tso=1 or 0 330 0=disabled, 1=enabled (TSO is enabled by default). 331 332 NOTE: TSO is not supported on 82547 and 82544-based adapters, as well as 333 older adapters. 334 335 336Known Limitations 337================= 338 339 Detected Tx Unit Hang in Quad Port Adapters 340 ------------------------------------------- 341 342 In some cases ports 3 and 4 wont pass traffic. Ports 1 and 2 don't show 343 any errors and will pass traffic. 344 345 This issue MAY be resolved by updating to the latest BIOS. You can 346 check your system's BIOS by downloading the Linux Firmware Developer Kit 347 that can be obtained at http://www.linuxfirmwarekit.org/ 348 349 FreeBSD version 4.x with Symmetric MultiProcessing (SMP) 350 -------------------------------------------------------- 351 352 In FreeBSD version 4.x with Symmetric MultiProcessing (SMP), there is a known 353 issue on some newer hardware. The problem is kernel generic and only in SMP 354 mode. The workaround is to either use FreeBSD version 4.x in single processor 355 mode, or use FreeBSD 5.4 or later. 356 357 There are known performance issues with this driver when running UDP traffic 358 with Jumbo Frames. 359 ---------------------------------------------------------------------------- 360 361 82541/82547 can't link or is slow to link with some link partners 362 ----------------------------------------------------------------- 363 364 There is a known compatibility issue where time to link is slow or link is not 365 established between 82541/82547 controllers and some switches. Known switches 366 include: 367 Planex FXG-08TE 368 I-O Data ETG-SH8 369 370 The driver can be compiled with the following changes: 371 372 Edit ./em.x.x.x/src/if_em.h to uncomment the #define E1000_MASTER_SLAVE 373 from within the comments. For example, change from: 374 375 /* #define E1000_MASTER_SLAVE 2 */ 376 to: 377 #define E1000_MASTER_SLAVE 2 378 379 Use one of the following options: 380 1 = Master mode 381 2 = Slave mode 382 3 = Auto master/slave 383 Setting 2 is recommended. 384 385 Recompile the module: 386 a. To compile the module 387 cd em-x.x.x 388 make clean 389 make 390 391 b. To install the compiled module in system directory: 392 make install 393 394 395Support 396======= 397 398For general information and support, go to the Intel support website at: 399 400 http://support.intel.com 401 402If an issue is identified, support is through email only at: 403freebsdnic@mailbox.intel.com 404 405 406License 407======= 408 409This software program is released under the terms of a license agreement 410between you ('Licensee') and Intel. Do not use or load this software or any 411associated materials (collectively, the 'Software') until you have carefully 412read the full terms and conditions of the LICENSE located in this software 413package. By loading or using the Software, you agree to the terms of this 414Agreement. If you do not agree with the terms of this Agreement, do not 415install or use the Software. 416 417* Other names and brands may be claimed as the property of others. 418