kernel eepro100 <-> e100 <-> netdrivers eepro100 ?

"Eddy Steevens" <[email protected]> Thu, 17 Jul 2003 20:12:12 +0200
Newsgroups gmane.linux.drivers.eepro100.devel
Message-ID <001901c34c8e$f2755a70$6100a8c0@PC0092>
Hello,

I'm rather new to Linux so don't shoot me if I tell stupid things.  We are using machines that use the intel chipset for the onboard network card.  lspci reports them as 

01:08.0 Ethernet controller: Intel Corporation 82820 (ICH2) Chipset Ethernet Controller (rev 03)
01:08.0 Ethernet controller: Intel Corporation 82820 (ICH2) Chipset Ethernet Controller (rev 01)

We are using redhat enterprise license workstation 2.1 (RHEL2.1).  RHEL 2.1 provides 3 drivers for the onboard network card. The eepro100 driver which is part of the kernel development tree. De driver supplied with RHEL2.1 is v1.36. Intel has made it's own driver for linux. This one is called e100. RHEL2.1 provides 2 versions of this driver v1.6.22 and v2.1.24-k2. All 3 of them have more or less the same problems. The system locks up completely or the network driver starts giving errors like: 

eepro100: wait_for_cmd_done timeout!

I've tried using ethtool (ethtool-1.6-5.i386.rpm) to disable autonegotiation, but that didn't change anything.  I've downloaded and compiled 2 other versions of the drivers to see if that works better: 

1. The latest version of the e100 from the Intel website: v2.3.13 
2. An alternative version of eepro100 from the netdrivers package from the scyld website (ftp://ftp.scyld.com/pub/network/netdrivers-3-4.tgz). The version number for this one is v1.27c. 

When loading this alternative eepro100 version, the kernel messages (obtained with the dmesg command) show that there is a problem with the EEPROM configuration of the ethernet chip. It also shows that it is recommended to use the eepro100-diag tool (http://www.scyld.com/diag/index.html). The eepro100-diag tool gives the following message: 

Sleep mode is enabled.  This is not recommended.
Under high load the card may not respond to
PCI requests, and thus cause a master abort.
To clear sleep mode use the '-G 0 -w -w -f' options.

Executing eepro100-diag with parameters -G 0 -w -w -f and cold rebooting the machine removes the warning messages from the kernel messages. I haven't tried using the e100 v2.3.13 yet and I have no final results on the use of eepro100 v1.27c.

Now my questions: 

1. Why are the eepro100 improvements and updates not merged back into the version that is inside the kernel source tree?
2. Why did Intel made it's own driver next to the eepro100 version?
3. What exactly is the problem with these wait_for_cmd_done timeouts?  With the M$ Windows driver we don't seem to have this problem.
4. Suppose I find a driver that SEEMS to work well. How can I make sure that it keeps working for a longer period of time?  Are there particular things I need to look for or test?
5. Which driver should I use when going into production?
6. Has disabling the sleep mode effect on the e100 or kernel version eepro100 driver too?  Is it possible to disabling the sleep mode solves the problem even with the other drivers?

I know a lot of difficult questions, but I don't have much hard information to base my decision on.

E.