# Network card mysteriously stops (e100 and eepro100 module)

## Kristof

Hello,

My network card is a "Intel PRO/100 VM Network Connection", and I'm using the e100 driver (compiled in the kernel) for it. It works almost all the time, but after a while it just stops...

And then nothing works anymore (not even ping...). Then if have to do

```
ifconfig eth0 down

rm /var/run/dhcpcd-eth0.pid

dhcpcd eth0

```

And then it works again for a while...

It seems to stop at random times, sometimes after 1 MB downloaded, sometimes after 150 MB...

It's almost impossible for me to do 

```
emerge sync
```

because it always stops in the middle, and if I want to emerge a program, I always have to do --fetchonly first, and resume several times. It's VERY annoying.

btw, I have already tried the eepro100 module, and it doesn't work either, with this module the card already stops after a few kb download...

And I have dual boot here, and the card works perfect in Windows XP, so it can't be a network or hardware problem.

Does anyone know what can cause this problem?

KristofLast edited by Kristof on Sat Jul 31, 2004 4:24 pm; edited 1 time in total

----------

## nobspangle

Have you tried compiling the drivers as modules (not into the kernel)?

I had problems with the onboard intel pro 100 cards on a server, it worked fine under NT but not in gentoo. It would just give up after a while. In the end I just installed a PCI card (also a pro 100) that works fine.

----------

## kands

I have had issues with various NIC's and compiling them as modules has 'always' fixed the problems.   It would be the first thing I would try.

----------

## Kristof

Hello,

I first compiled the driver as a module instead of in the kernel, but this didn't have any effect. I got exactly the same problem.

Then I did

```
emerge e100
```

But this module doesn't just stop downloading, my computer completely hangs at random times, so thats even worse (always have to reset then).

Now I downloaded the source code of the e100 driver from the intel website, and use this as a module instead of putting it directly into the kernel. Now the problem seems to occur less often, but it still stops from time to time...

Any other suggestions?

Kristof

----------

## Janne Pikkarainen

The default e100 driver which is bundled in the kernel tree has been working for me several years without any problems at about five different servers. Driver has been compiled in as a module. The card is 

```
Ethernet controller: Intel Corporation 82557 [Ethernet Pro 100] (rev 08)
```

What if you type "dmesg" after the hang occurs? Does kernel complain something?

----------

## Kristof

it sure does  :Confused: 

```
e100: eth0: e100_wait_exec_simple: failed

e100: eth0: e100_wait_exec_simple: failed

e100: eth0: e100_wait_exec_simple: failed

e100: eth0: e100_wait_exec_simple: failed
```

And it goes on like that....

greetings,

Kristof

----------

## Janne Pikkarainen

That's weird. What's the kernel version? And just another wild guess: maybe this has something to do with APIC/ACPI? Have you tried to enable/disable those?

----------

## Peach

I have the same problem with a:

```
0000:02:08.0 Ethernet controller: Intel Corp. 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (rev 41)

        Subsystem: Compaq Computer Corporation: Unknown device 0093

        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B-

        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR-

        Latency: 66 (2000ns min, 14000ns max), cache line size 08

        Interrupt: pin A routed to IRQ 10

        Region 0: Memory at d0215000 (32-bit, non-prefetchable)

        Region 1: I/O ports at 3040 [size=64]

        Capabilities: [dc] Power Management version 2

                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)

                Status: D0 PME-Enable- DSel=0 DScale=2 PME-
```

under win2k works fine, but under gentoo the problem is damn irritating!!

I compiled as module (eepro100).

For me it happens that sometimes it works  :Razz: 

anyhow I get the same message from dmesg:

```
eth0: wait_for_cmd_done timeout!

eth0: wait_for_cmd_done timeout!

eth0: wait_for_cmd_done timeout!

eth0: wait_for_cmd_done timeout!
```

any suggestion  :Question: 

NOTE: this happens only while downloading large amount of bytes from the same server...

----------

## Kristof

Kernel version is 2.4.26-gentoo-r6.

And I don't know what APIC/ACPI is, could you explain that please?

greetings,

Kristof

----------

## Kristof

 *Peach wrote:*   

> 
> 
> under win2k works fine, but under gentoo the problem is damn irritating!!
> 
> I compiled as module (eepro100).
> ...

 

Yes, I also got that error when I use eepro100, but I noticed it works better with the e100 module (can download more before it stops working).

What command shows all that info about my network card as you did in your post?

greetings,

Kristof

----------

## Peach

my kernel version is gentoo-dev-sources-2.6.5-r1

I have local APIC (Processor Type and Feature section) enabled, and now I will try to disable it

I also have ACPI (Power Management Support section) and I know for sure the DMTS table is bugged on my laptop.

I'll let you know right now

----------

## Peach

 *Kristof wrote:*   

> What command shows all that info about my network card as you did in your post?
> 
> 

 

for the command issued for the listing of pci devices use

```
# lspci -vv
```

this command is part of the sys-apps/pciutils package

if you don't have it, emerge it  :Wink: 

----------

## Kristof

cool, it works  :Very Happy: 

This is mine:

```
0000:02:08.0 Ethernet controller: Intel Corp. 82801BA/BAM/CA/CAM Ethernet Controller (rev 01)

        Subsystem: Compaq Computer Corporation EtherExpress PRO/100 VM

        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-

        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR-

        Latency: 66 (2000ns min, 14000ns max), cache line size 08

        Interrupt: pin A routed to IRQ 5

        Region 0: Memory at 40000000 (32-bit, non-prefetchable) [size=4K]

        Region 1: I/O ports at 1000 [size=64]

        Capabilities: [dc] Power Management version 2

                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)

                Status: D0 PME-Enable- DSel=0 DScale=2 PME-
```

----------

## Peach

ok.. just recompiled the kernel without "local APIC" but this doesn't change anything, the eth0 device still hangs randomly.

[edit]Well, I recompiled the kernel without ACPI and with APM and still nothing has changed!  :Sad: 

any help will be appreciated!!!  :Exclamation: 

@Kristof: can u please change the title of the topic adding the "eepro100" ? thanks

----------

## pmjdebruijn

Well you actually have another option...

The e100 driver included in the 2.4 kernel series is a late 2.x version...

Now sourceforge has newer 'experimental' driver (which is also developed at Intel)...

http://sourceforge.net/projects/e1000

Yes I know the url says e1000, but it's for both e1000 and e100...

(That this driver is also included with the 2.6 kernel series)...

Regards,

Pascal de Bruijn

----------

## Kristof

 *pmjdebruijn wrote:*   

> Well you actually have another option...
> 
> The e100 driver included in the 2.4 kernel series is a late 2.x version...
> 
> Now sourceforge has newer 'experimental' driver (which is also developed at Intel)...
> ...

 

I had to use version 3.0.17 (development) because I could not extract the 3.0.27 tarball. But 3.0.17 still has the same problem, so I guess 3.0.27 will too...

greetings,

Kristof

----------

## Peach

 *pmjdebruijn wrote:*   

> 
> 
> (That this driver is also included with the 2.6 kernel series)...
> 
> Regards,
> ...

 

tried that too (mind I'm using the 2.6.5-r1 gentoo kernel) and it didn't work either as Kristof noticed before me

----------

## pmjdebruijn

No wait,

Not all 2.6 kernels have the new drivers, I don't know where the new one was put in there, be sure to check the version number...

Regards,

Pascal de Bruijn

----------

## Peach

same version as above: 3.0.17.

----------

## pmjdebruijn

Then I'm at a loss...

Sorry,

Pascal de Bruijn

----------

## nobspangle

I'd say it's most likely a problem with the hardware.

And before you say it, I know the card works fine under Windows, but it is possible that the card is failing under windows but windows is releasing and renewing in the background without you doing anything or noticing.

----------

## pmjdebruijn

You might also want to try compiling your kernel without ACPI... It messes up with some BIOSes while Windows does fine with them...

Regards,

Pascal de Bruijn

----------

## Peach

 *Peach wrote:*   

> [edit]Well, I recompiled the kernel without ACPI and with APM and still nothing has changed! 

 

----------

## nobspangle

I just noticed both your chips have an 82801 chip

All the pro100 card I've used (which work well) have been 82557/8/9 maybe the modules don't work so well with those chips

----------

## Kristof

 *nobspangle wrote:*   

> maybe the modules don't work so well with those chips

 

So if this is the case, there is nothing we can do about it?

Kristof

----------

## Peach

up

----------

## sism82

Hi. I recenty installed Gentoo in a Dell Machine. The net card is built in the mother board.

lspci -vv says:

```

Ethernet Controller: Intel Corp 82540EM Gigabit ethernet controller (rev 02)

Subsystem: Dell computer corporation : unknown device 002e

Flags: Bus master, 66Mhz, medium devsel, latency 64, IRQ 18

Memory at ff8c0000 (32-bit non prefetchable) [size=128K]

I/O ports at ec80 [size = 64]

Capabilities: [dc] power management version 2

Capabilities: [e4] pci-x non-bridge device.

Capabilities: [f0] message signaled interrupts: 64Bit + Queue=0/0 Enable

```

So first i did:

```

>> cd /usr/src/linux

>> make menuconfig

>> Device Drivers >>Networking support >> Ethernet (1000 Mbit)

>> Intel (R) PRO/1000 Gigabit Ethernet support

```

after compiled it in the kernel (didnt work) i decided to load the module, so i put (m), then compiled the kernel again and added an "e100" entry in /etc/modules.autolad.d/kernel-2.6

So i restarted and this showed up at boot:

```

using /etc/modules.autoload.d/kernel-2.6 as config:

Loading Modules e1000

autoloaded 1 modules(s)

```

and almost at the end...

```

failed to bring eth0 up

ERROR: problem starting needed services

"netmount" was not started

```

Im getting crazy, i know i could buy a PCI card but the point is why Intel PRO 1000 doesnt work???

any help would be appreciated.....

----------

## pmjdebruijn

I suggest you contact one of the developers...

http://sourceforge.net/projects/e1000/

There's a list right there...

Regards,

Pascal de Bruijn

----------

## pmjdebruijn

btw, just playing a hunch now.

You wouldn't all have an nForce shipset would you?

I'm not sure whether nVidia has licensed some other chipset (or made it's own), in that case try 'nforce-net'...

Regards,

Pascal de Bruijn

----------

## Mnemia

Hey guys, check out this thread:

https://forums.gentoo.org/viewtopic.php?t=144068&highlight=e100

This is a really tricky problem to fix and I've had it happen on two different laptops. First try the suggestion regarding "sleep mode" that is mentioned in that thread. 99% sure that that will fix the problem...if not, try rebooting after you do it and trying it again. I had some (seemingly different) problems even after I did that on one of my laptops, but it fixed it on the other one.

I've also found that many of the problems I've had with these cards are specific to certain kernel versions. Try a different version and definitely upgrade to 2.6 if you haven't done so yet if it still doesn't work. The e100 driver was rewritten around 2.6.5 IIRC and after they polished up the rewrite a bit things went a lot better for me.

----------

## sism82

Hum, very stupid problem that mine. After looking around for a while in my system i found that i have my network trying to bring up eth0 by DHCP, but when i boot it didn't say so... tricky stuff. That was the problem, i assgined an IP, netmask and broadcast address and it appears to be fine  :Smile: 

thanks to all anyway

----------

## Kristof

Thanks for the tool Mnemia, I'd really like to try it, but when I want to compile the source file I get alot of errors (I use the compile command at the end of the source file):

```
$ cc -O -Wall -o eepro100-diag eepro100-diag.c 

eepro100-diag.c:37:1: missing terminating " character

eepro100-diag.c:39: error: syntax error before "Show"

eepro100-diag.c:46: error: stray '\' in program

eepro100-diag.c:46:48: missing terminating " character

eepro100-diag.c:51:46: missing terminating ' character

eepro100-diag.c:51:46: warning: character constant too long for its type

eepro100-diag.c:52: error: syntax error at '#' token

eepro100-diag.c:54:60: warning: multi-character character constant

eepro100-diag.c:54:71: warning: multi-character character constant

eepro100-diag.c:67:1: missing terminating " character

In file included from eepro100-diag.c:74:

/usr/include/unistd.h:312: error: syntax error before "size_t"

/usr/include/unistd.h:318: error: syntax error before "size_t"

/usr/include/unistd.h:448: error: syntax error before "size_t"

In file included from eepro100-diag.c:74:

/usr/include/unistd.h:538: error: syntax error before "confstr"

/usr/include/unistd.h:538: error: syntax error before "size_t"

/usr/include/unistd.h:707: error: syntax error before "size_t"

/usr/include/unistd.h:732: error: syntax error before "size_t"

In file included from eepro100-diag.c:74:

/usr/include/unistd.h:783: error: syntax error before "size_t"

/usr/include/unistd.h:790: error: syntax error before "size_t"

/usr/include/unistd.h:800: error: syntax error before "size_t"

/usr/include/unistd.h:801: error: syntax error before "size_t"

/usr/include/unistd.h:818: error: syntax error before "size_t"

In file included from /usr/include/_G_config.h:44,

                 from /usr/include/libio.h:32,

                 from /usr/include/stdio.h:72,

                 from eepro100-diag.c:75:

/usr/include/gconv.h:72: error: syntax error before "size_t"

/usr/include/gconv.h:88: error: syntax error before "size_t"

/usr/include/gconv.h:97: error: syntax error before "size_t"

/usr/include/gconv.h:174: error: syntax error before "size_t"

/usr/include/gconv.h:177: error: syntax error before '}' token

In file included from /usr/include/libio.h:32,

                 from /usr/include/stdio.h:72,

                 from eepro100-diag.c:75:

/usr/include/_G_config.h:47: error: field `__cd' has incomplete type

/usr/include/_G_config.h:50: error: field `__cd' has incomplete type

In file included from /usr/include/stdio.h:72,

                 from eepro100-diag.c:75:

/usr/include/libio.h:351: error: syntax error before "size_t"

/usr/include/libio.h:360: error: syntax error before "size_t"

....

(there's alot more like it...)
```

I also tried the alternate compile command, same errors. Anyone know how to fix this?

Greetings,

Kristof

----------

## Mnemia

Hmm, I just downloaded it again and had the same problem. It's being messed up by having multiline string literals with none of the "\" characters to continue the quote on the next line. Try just opening up the source code in some editor with syntax highlighting and adding the "\" character at the ends of lines to fix the quotes, and it should work.

----------

## Peach

I got the same errors as kristof compiling the diagnose tool, anyhow I set up a static ip and not the card stopped working and then restarted again after a while, what I see now on dmesg is:

```
...

eth0: wait_for_cmd_done timeout!

eth0: wait_for_cmd_done timeout!

eth0: wait_for_cmd_done timeout!

NETDEV WATCHDOG: eth0: transmit timed out

eth0: Transmit timed out: status 0050  0cf0 at 56287/56347 command 000c0000.
```

----------

## pmjdebruijn

btw, the e100-3.0.27 (stable) is now downloadable from:

http://sourceforge.net/projects/e1000/

It's corrupted tarball has been replaced by a good one!

Regards,

Pascal de Bruijn

----------

## Kristof

 *Mnemia wrote:*   

> Hmm, I just downloaded it again and had the same problem. It's being messed up by having multiline string literals with none of the "\" characters to continue the quote on the next line. Try just opening up the source code in some editor with syntax highlighting and adding the "\" character at the ends of lines to fix the quotes, and it should work.

 

Thank you VERY VERY much!!!!! Disabling sleep mode has fixed it  :Laughing:   :Laughing: 

I just fetched OpenOffice to test my connection (192MB), and it didn't stop once, awsome  :Surprised: 

Thanks for all your help guys, this forum really rules, I hope this will also work for Peach...

Greetings, Kristof

@Peach: post something here if it works plz, so I can add [solved] to the topic title, wouldn't want someone to read this whole thread for nothing...

----------

## Peach

```
./eepro100-diag -aem -f

eepro100-diag.c:v2.12 4/15/2003 Donald Becker (becker@scyld.com)

 http://www.scyld.com/diag/index.html

Index #1: Found a Intel Pro/100 VE (type 1031) adapter at 0x3040.

i82557 chip registers at 0x3040:

  ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff

  Interrupt sources are pending.

   The transmit unit state is 'Unknown'.

   The receive unit state is 'Broken-15'.

  This status is unusual for an activated interface.

 The Command register has an unprocessed command ffff(?!).

Intel EtherExpress Pro 10/100 EEPROM contents:

  Station address FF:FF:FF:FF:FF:FF.

  Board assembly ffffff-255, Physical connectors present: RJ45 BNC AUI MII

  Primary interface chip i82555 PHY #-1.

    Secondary interface chip i82555, PHY -1.

   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.
```

seems to detect the sleep mode on... so:

```
./eepro100-diag -G 0 -w -w -f

eepro100-diag.c:v2.12 4/15/2003 Donald Becker (becker@scyld.com)

 http://www.scyld.com/diag/index.html

Index #1: Found a Intel Pro/100 VE (type 1031) adapter at 0x3040.

Changing the chip configuration word (offset 10) to 0xffff.

Writing 0xfffd to configuration EEPROM word 10.

Writing 0xbbbb to configuration EEPROM word 255.

 Use '-a' or '-aa' to show device registers,

     '-e' to show EEPROM contents, -ee for parsed contents,

  or '-m' or '-mm' to show MII management registers.
```

but after that if I issue the first command again, it seems it didn't wrote the new configuration on the nic!!!

Last strange thing is the "unprocessed command"...

mind that the nick is stopped when I launch the commands

Now I will test if activating will work normally

----------

## Peach

once activated the nic I still get freezes and errors on dmesg:

```
..

eth0: wait_for_cmd_done timeout!

eth0: wait_for_cmd_done timeout!

eth0: wait_for_cmd_done timeout!

NETDEV WATCHDOG: eth0: transmit timed out

eth0: Transmit timed out: status 0050  0cf0 at 1075/1135 command 000c0000.
```

and the diag gives me this:

```
./eepro100-diag -aem -f

eepro100-diag.c:v2.12 4/15/2003 Donald Becker (becker@scyld.com)

 http://www.scyld.com/diag/index.html

Index #1: Found a Intel Pro/100 VE (type 1031) adapter at 0x3040.

i82557 chip registers at 0x3040:

  0c000050 0e8e25e0 00000000 00080002 18217809 00000600

  No interrupt sources are pending.

   The transmit unit state is 'Suspended'.

   The receive unit state is 'Ready'.

  This status is normal for an activated but idle interface.

 The Command register has an unprocessed command 0c00(?!).

Intel EtherExpress Pro 10/100 EEPROM contents:

  Station address 00:02:A5:6D:F0:F8.

  Board assembly 000000-000, Physical connectors present: RJ45

  Primary interface chip i82555 PHY #1.

Primary transceiver is MII PHY #1. MII PHY #1 transceiver registers:

   3100 7829 02a8 0330 05e1 0021 0000 0000

   0000 0000 0000 0000 0000 0000 0000 0000

   2404 0000 0000 0000 0000 0000 0000 0000

   0000 0000 0000 0000 0010 0000 0000 0000.
```

----------

## Kristof

Hmm, weird, I did exactly the same, except that I also rebooted after I turned of the sleep mode... And did you turn off your eth0 before you changed it, because I thought the tool told me to do so.

This is the output I get from the program now:

```
# ./eepro100-diag -aem -f

eepro100-diag.c:v2.12 4/15/2003 Donald Becker (becker@scyld.com)

 http://www.scyld.com/diag/index.html

Index #1: Found a Intel i82562 Pro/100 V adapter at 0x1000.

i82557 chip registers at 0x1000:

  00000050 00000000 00000000 00080002 1821782d 000005e8

  No interrupt sources are pending.

   The transmit unit state is 'Suspended'.

   The receive unit state is 'Ready'.

  This status is normal for an activated but idle interface.

Intel EtherExpress Pro 10/100 EEPROM contents:

  Station address 00:02:A5:2A:EF:03.

  Board assembly 010630-001, Physical connectors present: RJ45

  Primary interface chip i82555 PHY #1.

Primary transceiver is MII PHY #1. MII PHY #1 transceiver registers:

   3100 782d 02a8 0320 05e1 4061 0003 0000

   0000 0000 0000 0000 0000 0000 0000 0000

   2405 0000 0000 0000 0000 0000 0000 0000

   0000 0000 0000 0000 0010 0000 0000 0000.

```

Greetings,

Kristof

----------

## defunct

The diag tool worked for me, as well.  The card had to be on (/etc/init.d/net.eth0 start) before I was able to turn off sleep mode and then I had to reboot.  After the reboot, it worked fine.

Note, this wasn't ever an issue for me until I tried to rebuild my laptop using the 2004.2 LiveCD (stage1).  During the initial emerge sync, the NIC kept failing.

Anyway, thanks for posting the tool.

-d

----------

