Force gigE NICs to operate at 100baseTX-FD.

Glen Turner glen.turner at
Wed Apr 14 08:01:00 CDT 2004

On Mon, 12 Apr 2004, Asim Zuberi wrote:

> The requirement is to operate the gigE network cards at 100Mbps
> Full-Duplex with "no" auto-negotiation.
> By default -- the NICs are getting configured 1000Mbps with
> auto-negotiation.
> I did install the rpm package "e100-2.3.30-rh9-2.4.20-16.9.i386.rpm"
> from Intel to have the 100Mbps functionality....but the NICs are
> failing to operate at 100Mbps-full.

Oh dear.

Firstly, the e100 module is a driver for the Intel Pro/100
cards and controllers.  You have a Intel Pro/1000 controller,
so you need to go back to using the e1000 driver.  The
device driver modules are related to the chipsets used by
the ethernet interface and are not a means of selecting
autonegotiation, speed and duplex.

To select
 autonegotiation = off
 speed = 100Mbps
 duplex = full
add a line to /etc/sysconfig/network-scripts/eth0 saying
 ETHTOOL_OPTS=autoneg off speed 100 duplex full

Note that over-riding autonegotiation is deliberately
difficult, as most system administrators don't understand
ethernet autonegotiation and stuff it up (much to the
annoyance of the network engineers).

The occasional network card won't do autonegotiation
properly (some of the original 100Mbps chipsets had
bugs).  Throw that card away, it will cost you more
in administration than to replace it.

On Wed, 2004-04-14 at 00:38, Brian E. Seppanen wrote:
> I have to ask why would you be forcing the NIC to a slower speed?  Keep
> this in mind:  when you force the NIC, and Switch both to the same speed
> you will start to see CRC errors on the switch.

This is likely because the switch is still running
autonegotiation.  So let's see what happens

  host: not running autoneg protocol, speed = 100, duplex=full

  switch: running autoneg protocol, but no data seen,
          so assume speed = 10, duplex = half (the
          safe choice as 10Base-T didn't have an
          autoneg protocol).

  switch: clocking from host seen at 100Mbps, so set
          tx clocking to 100Mbps.  Result is speed = 100,
          duplex = half

Now let's think about a duplex mismatch.  The switch will
never send packets whilst the host is transmitting.  If
the switch does see packets from the host whilst it is
transmitting then it will announce a collision (sending
a jam signal which causes errors on a full-duplex host).
The switch will also record framing and late collision

I'd suggest you set your switch to explicitly match the
settings on the host.  That is, these are the only
valid configuration choices for fast ethernet:

         HOST                     SWITCH
a = on *                     a = on *
a = off, s = 100, d = full   a = off, s = 100, d = full
a = off, s = 100, d = half   a = off, s = 100, d = half
a = off, s = 10, d = full    a = off, s = 10, d = full
a = off, s = 10, d = half    a = off, s = 10, d = half
a = on **                    a = off, s = 10, d = half
a = off, s = 10, d = half    a = on **

  a is autonegotiation
  s is speed
  d is duplex
  * indicates autonegotiation results in s = 100, d = full
  ** indicates autonegotiation results in s = 10, d = half

> When you have them autonegotiate you won't see CRC's.  I've
> seen this with E1000's, E100's, 3Com 3C509-B's. with Cisco 6509's,
> Cisco 2900's, Cisco 7609's.

I've just plugged a Intel e1000 with Fedora Core 1
into a Cisco 2924XL-M and aren't seeing CRCs when
I configure a=off, s=100, d=full at both ends.

If I set autnegotiation it also works (the only
machine that I've explicitly set speed and duplex
for is a DEC machine with the -AA release of the
Tulip 100Mbps controller. I'd love to throw that
away, but the choices under DEC UNIX aren't great).


Glen Turner         Tel: (08) 8303 3936 or +61 8 8303 3936 
Network Engineer          Email: glen.turner at
Australian Academic & Research Network

More information about the Linux-PowerEdge mailing list