| $FreeBSD$ |
| FreeBSD* Driver for Intel Network Connection |
| ============================================= |
| |
| May 30, 2007 |
| |
| |
| Contents |
| ======== |
| |
| - Overview |
| - Identifying Your Adapter |
| - Building and Installation |
| - Speed and Duplex Configuration |
| - Additional Configurations |
| - Known Limitations |
| - Support |
| - License |
| |
| |
| Overview |
| ======== |
| |
| This file describes the FreeBSD* driver for Intel Network Connection. |
| This driver has been developed for use with FreeBSD, Release 7.x. |
| |
| For questions related to hardware requirements, refer to the documentation |
| supplied with your Gigabit adapter. All hardware requirements listed |
| apply to use with FreeBSD. |
| |
| |
| Identifying Your Adapter |
| ======================== |
| |
| For information on how to identify your adapter, go to the Adapter & |
| Driver ID Guide at: |
| |
| http://support.intel.com/support/network/sb/cs-012904.htm |
| |
| |
| For the latest Intel network drivers for FreeBSD, see: |
| |
| http://downloadfinder.intel.com/scripts-df-external/support_intel.aspx |
| |
| |
| NOTE: Mobile adapters are not fully supported. |
| NOTE: The Intel(R) 82562v 10/100 Network Connection only provides 10/100 |
| support. |
| |
| Building and Installation |
| ========================= |
| |
| NOTE: The driver can be installed as a dynamic loadable kernel module or |
| compiled into the kernel. You must have kernel sources installed in |
| order to compile the driver module. |
| |
| In the instructions below, x.x.x is the driver version as indicated in the |
| name of the driver tar file. |
| |
| 1. Move the base driver tar file to the directory of your choice. For |
| example, use /home/username/em or /usr/local/src/em. |
| |
| 2. Untar/unzip the archive: |
| |
| tar xzvf em-x.x.x.tar.gz |
| |
| This will create an em-x.x.x directory. |
| |
| 3. To create a loadable module, perform the following steps. |
| NOTE: To compile the driver into the kernel, go directly to step 4. |
| |
| a. To compile the module |
| |
| cd em-x.x.x |
| make |
| |
| b. To install the compiled module to the system directory: |
| |
| make install |
| |
| c. If you want the driver to load automatically when the system is booted: |
| |
| 1. Edit /boot/loader.conf, and add the following line: |
| |
| if_em_load="YES" |
| |
| 4. To compile the driver into the kernel, enter: |
| |
| cd em-x.x.x/src |
| cp *.[ch] /usr/src/sys/dev/em |
| |
| Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in |
| /usr/src/sys/i386/conf, and ensure the following line is present: |
| |
| device em |
| |
| Compile and install the kernel. The system must be rebooted for the |
| kernel updates to take effect. For additional information on compiling |
| the kernel, consult the FreeBSD operating system documentation. |
| |
| 5. To assign an IP address to the interface, enter the following: |
| |
| ifconfig em<interface_num> <IP_address> |
| |
| 6. Verify that the interface works. Enter the following, where <IP_address> |
| is the IP address for another machine on the same subnet as the interface |
| that is being tested: |
| |
| ping <IP_address> |
| |
| 7. To configure the IP address to remain after reboot, edit /etc/rc.conf, |
| and create the appropriate ifconfig_em<interface_num>entry: |
| |
| ifconfig_em<interface_num>="<ifconfig_settings>" |
| |
| Example usage: |
| |
| ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0" |
| |
| NOTE: For assistance, see the ifconfig man page. |
| |
| |
| Speed and Duplex Configuration |
| ============================== |
| |
| By default, the adapter auto-negotiates the speed and duplex of the |
| connection. If there is a specific need, the ifconfig utility can be used to |
| configure the speed and duplex settings on the adapter. Example usage: |
| |
| ifconfig em<interface_num> <IP_address> media 100baseTX mediaopt |
| full-duplex |
| |
| NOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is |
| not specified and you are not running at gigabit speed, the driver |
| defaults to half-duplex. |
| |
| If the interface is currently forced to 100 full duplex, in order to change |
| to half duplex you must use this command: |
| |
| ifconfig em<interface_num> <IP_address> media 100baseTX -mediaopt |
| full-duplex |
| |
| |
| This driver supports the following media type options: |
| |
| autoselect - Enables auto-negotiation for speed and duplex. |
| |
| 10baseT/UTP - Sets speed to 10 Mbps. Use the ifconfig mediaopt |
| option to select full-duplex mode. |
| |
| 100baseTX - Sets speed to 100 Mbps. Use the ifconfig mediaopt |
| option to select full-duplex mode. |
| |
| 1000baseTX - Sets speed to 1000 Mbps. In this case, the driver |
| supports only full-duplex mode. |
| |
| 1000baseSX - Sets speed to 1000 Mbps. In this case, the driver |
| supports only full-duplex mode. |
| |
| For more information on the ifconfig utility, see the ifconfig man page. |
| |
| |
| Additional Configurations |
| ========================= |
| |
| The driver supports Transmit/Receive Checksum Offload and Jumbo Frames on |
| all but the 82542-based adapters. For specific adapters, refer to the |
| Identifying Your Adapter section. |
| |
| Jumbo Frames |
| ------------ |
| To enable Jumbo Frames, use the ifconfig utility to set the Maximum |
| Transport Unit (MTU) frame size above its default of 1500 bytes. |
| |
| The Jumbo Frames MTU range for Intel Adapters is 1500 to 16110. To modify |
| the setting, enter the following: |
| |
| ifconfig em<interface_num> <hostname or IP address> mtu 9000 |
| |
| To confirm the MTU used between two specific devices, use: |
| |
| route get <destination_IP_address> |
| |
| Notes: |
| |
| - Only enable Jumbo Frames if your network infrastructure supports them. |
| |
| - To enable Jumbo Frames, increase the MTU size on the interface beyond |
| 1500. |
| |
| - The Jumbo Frames setting on the switch must be set to at least 22 bytes |
| larger than that of the MTU. |
| |
| - The maximum MTU setting for Jumbo Frames is 16110. This value coincides |
| with the maximum Jumbo Frames size of 16128. |
| |
| - Some Intel gigabit adapters that support Jumbo Frames have a frame size |
| limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes. |
| The adapters with this limitation are based on the Intel(R) 82571EB, |
| 82572EI, 82573L, 82566, 82562, and 80003ES2LAN controller. These |
| correspond to the following product names: |
| Intel(R) PRO/1000 PT Server Adapter |
| Intel(R) PRO/1000 PT Desktop Adapter |
| Intel(R) PRO/1000 PT Network Connection |
| Intel(R) PRO/1000 PT Dual Port Server Adapter |
| Intel(R) PRO/1000 PT Dual Port Network Connection |
| Intel(R) PRO/1000 PT Quad Port Server Adapter |
| Intel(R) PRO/1000 PF Quad Port Server Adapter |
| Intel(R) PRO/1000 PF Server Adapter |
| Intel(R) PRO/1000 PF Network Connection |
| Intel(R) PRO/1000 PF Dual Port Server Adapter |
| Intel(R) PRO/1000 PB Server Connection |
| Intel(R) PRO/1000 PL Network Connection |
| Intel(R) PRO/1000 EB Network Connection with I/O Acceleration |
| Intel(R) PRO/1000 EB Backplane Connection with I/O Acceleration |
| Intel(R) 82566DM-2 Gigabit Network Connection |
| |
| - Adapters based on the Intel(R) 82542 and 82573V/E controller do not |
| support Jumbo Frames. These correspond to the following product names: |
| Intel(R) PRO/1000 Gigabit Server Adapter |
| Intel(R) PRO/1000 PM Network Connection |
| |
| - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or |
| loss of link. |
| |
| - The following adapters do not support Jumbo Frames: |
| Intel(R) 82562V 10/100 Network Connection |
| Intel(R) 82566DM Gigabit Network Connection |
| Intel(R) 82566DC Gigabit Network Connection |
| Intel(R) 82566MM Gigabit Network Connection |
| Intel(R) 82566MC Gigabit Network Connection |
| Intel(R) 82562GT 10/100 Network Connection |
| Intel(R) 82562G 10/100 Network Connection |
| Intel(R) 82566DC-2 Gigabit Network Connection |
| Intel(R) 82562V-2 10/100 Network Connection |
| Intel(R) 82562G-2 10/100 Network Connection |
| Intel(R) 82562GT-2 10/100 Network Connection |
| |
| VLANs |
| ----- |
| To create a new VLAN interface: |
| |
| ifconfig <vlan_name> create |
| |
| To associate the VLAN interface with a physical interface and |
| assign a VLAN ID, IP address, and netmask: |
| |
| ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan |
| <vlan_id> vlandev <physical_interface> |
| |
| Example: |
| |
| ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan 10 vlandev em0 |
| |
| In this example, all packets will be marked on egress with 802.1Q VLAN |
| tags, specifying a VLAN ID of 10. |
| |
| To remove a VLAN interface: |
| |
| Intel Network Connection ifconfig <vlan_name> destroy |
| |
| |
| Polling |
| ------- |
| |
| To enable polling in the driver, add the following options to the kernel |
| configuration, and then recompile the kernel: |
| |
| options DEVICE_POLLING |
| options HZ=1000 |
| |
| At runtime use: |
| ifconfig emX polling (to turn polling on) |
| and: |
| ifconfig emX -polling (to turn it off) |
| |
| |
| Checksum Offload |
| ---------------- |
| Checksum offloading is not supported on 82542 Gigabit adapters. |
| |
| Checksum offloading supports both TCP and UDP packets and is |
| supported for both transmit and receive. |
| |
| Checksum offloading can be enabled or disabled using ifconfig. |
| Both transmit and receive offloading will be either enabled or |
| disabled together. You cannot enable/disable one without the other. |
| |
| To enable checksum offloading: |
| |
| ifconfig <interface_num> rxcsum |
| |
| To disable checksum offloading: |
| |
| ifconfig <interface_num> -rxcsum |
| |
| To confirm the current setting: |
| |
| ifconfig <interface_num> |
| |
| Look for the presence or absence of the following line: |
| |
| options=3 <RXCSUM,TXCSUM> |
| |
| See the ifconfig man page for further information. |
| |
| |
| TSO |
| --- |
| The FreeBSD driver offers support for TSO (TCP Segmentation Offload). |
| |
| You can enable/disable it in two ways/places: |
| |
| - sysctl net.inet.tcp.tso=0 (or 1 to enable it) |
| |
| Doing this disables TSO in the stack and will affect all adapters. |
| |
| - ifconfig emX -tso |
| |
| Doing this will disable TSO only for this adapter. |
| |
| To enable: |
| |
| - ifconfig emX tso |
| |
| NOTES: By default only PCI-Express adapters are ENABLED to do TSO. Others |
| can be enabled by the user at their own risk |
| TSO is not supported on 82547 and 82544-based adapters, as well as older adapters. |
| |
| |
| Known Limitations |
| ================= |
| |
| Detected Tx Unit Hang in Quad Port Adapters |
| ------------------------------------------- |
| |
| In some cases ports 3 and 4 wont pass traffic. Ports 1 and 2 don't show |
| any errors and will pass traffic. |
| |
| This issue MAY be resolved by updating to the latest BIOS. You can |
| check your system's BIOS by downloading the Linux Firmware Developer Kit |
| that can be obtained at http://www.linuxfirmwarekit.org/ |
| |
| |
| There are known performance issues with this driver when running UDP traffic |
| with Jumbo Frames. |
| ---------------------------------------------------------------------------- |
| |
| 82541/82547 can't link or is slow to link with some link partners |
| ----------------------------------------------------------------- |
| |
| There is a known compatibility issue where time to link is slow or link is not |
| established between 82541/82547 controllers and some switches. Known switches |
| include: |
| Planex FXG-08TE |
| I-O Data ETG-SH8 |
| Netgear GS105v3 |
| |
| The driver can be compiled with the following changes: |
| |
| Edit ./em.x.x.x/src/if_em.h to change the #define EM_MASTER_SLAVE |
| For example, change from: |
| |
| #define EM_MASTER_SLAVE e1000_ms_hw_default |
| to: |
| #define EM_MASTER_SLAVE 2 |
| |
| Use one of the following options: |
| 1 = Master mode |
| 2 = Slave mode |
| 3 = Auto master/slave |
| Setting 2 is recommended. |
| |
| Recompile the module: |
| a. To compile the module |
| cd em-x.x.x |
| make clean |
| make |
| |
| b. To install the compiled module in system directory: |
| make install |
| |
| |
| Support |
| ======= |
| |
| For general information and support, go to the Intel support website at: |
| |
| http://support.intel.com |
| |
| If an issue is identified, support is through email only at: |
| freebsd@intel.com |
| |
| |
| License |
| ======= |
| |
| This software program is released under the terms of a license agreement |
| between you ('Licensee') and Intel. Do not use or load this software or any |
| associated materials (collectively, the 'Software') until you have carefully |
| read the full terms and conditions of the LICENSE located in this software |
| package. By loading or using the Software, you agree to the terms of this |
| Agreement. If you do not agree with the terms of this Agreement, do not |
| install or use the Software. |
| |
| * Other names and brands may be claimed as the property of others. |