4c89b5bc10
new chips and improves support for already supported ones. Some details, important for future merges: - if_em.c merged manually, viewing diff between new vendor driver and previous one. - if_em_hw.h dropped in from vendor, and then restored revisions 1.16, 1.17, 1.18. - if_em_hw.c dropped in from vendor, and then two liner change made, that restores support for two rare chips.
367 lines
11 KiB
Plaintext
367 lines
11 KiB
Plaintext
$FreeBSD$
|
|
FreeBSD* Driver for the Intel(R) PRO/1000 Family of Adapters
|
|
============================================================
|
|
|
|
January 4, 2006
|
|
|
|
|
|
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 the Intel(R) PRO/1000 Family of
|
|
Adapters. This driver has been developed for use with FreeBSD, Release 4.11
|
|
and greater and Release 5.4.
|
|
|
|
For questions related to hardware requirements, refer to the documentation
|
|
supplied with your Intel PRO/1000 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.
|
|
|
|
|
|
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 xvfz 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 in 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:
|
|
|
|
cd em-x.x.x/src
|
|
|
|
cp if_em* /usr/src/sys/dev/em
|
|
|
|
cp Makefile.kernel /usr/src/sys/modules/em/Makefile
|
|
|
|
Edit the /usr/src/sys/conf/files.i386 file, and add the following lines only if
|
|
they don't already exist:
|
|
|
|
dev/em/if_em.c optional em
|
|
|
|
dev/em/if_em_hw.c optional em
|
|
|
|
Remove the following lines from the /usr/src/sys/conf/files.i386 file,
|
|
if they exist:
|
|
|
|
dev/em/if_em_fxhw.c optional em
|
|
dev/em/if_em_phy.c optional 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.
|
|
|
|
|
|
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 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 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
|
|
|
|
- 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.
|
|
|
|
|
|
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 vlan10 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:
|
|
|
|
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 em0 polling to turn polling on
|
|
Use:
|
|
ifconfig em0 -polling to turn polling 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.
|
|
|
|
|
|
Known Limitations
|
|
=================
|
|
|
|
In FreeBSD version 4.x with Symmetric MultiProcessing (SMP), there is a known
|
|
issue on some newer hardware. The problem is generic kernel and only in SMP
|
|
mode. The workaround is to either use FreeBSD version 4.x in single processor
|
|
mode, or use FreeBSD 5.4 or later.
|
|
|
|
There are known performance issues with this driver when running UDP traffic
|
|
with Jumbo Frames.
|
|
|
|
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
|
|
|
|
The driver can be compiled with the following changes:
|
|
|
|
Edit ./em.x.x.x/src/if_em.h to uncomment the #define EM_MASTER_SLAVE
|
|
from within the comments. For example, change from:
|
|
|
|
/* #define EM_MASTER_SLAVE 2 */
|
|
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:
|
|
freebsdnic@mailbox.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.
|