linksys PNIC card hangs up under load (v. 0.91g)

Eric Ding ericding@MIT.EDU
Thu Jul 22 23:48:55 1999


I've got the Linksys Lite-On 82c168 PNIC card (two, actually) in a
gateway on our intranet.  The actual mb is an old 486 VIP with an AMD
5x86-133 CPU.  I've got the machine set up to do IP Masquerading, and
am running kernel 2.0.36.  I'm using tulip driver version 0.91g.  Here's
the startup message:

 tulip.c:v0.91g 7/16/99
 eth0: Lite-On 82c168 PNIC rev 32 at 0xfc00, 00:A0:CC:22:F9:C0, IRQ 11.
 eth0:  MII transceiver #1 config 3100 status 7829 advertising 01e1.

The module is installed with option "csr0=0x00A04800".

Under heavy load, the intranet-homed card (i.e., invisible to outside
world), which is hooked up to another Linux box via 100 Mbps hub, is
hanging up.  I've got an X app running across the connection, playing mp3
files from an NFS-mounted disk.  With some light web surfing I can induce
the hangup.  I set debug to 5 so I could observe any relevant error
messages.  Here's what I see:

 eth0: Too much work during an interrupt, csr5=0x02670050.
 eth0: Too much work during an interrupt, csr5=0x026980d5.

At this point, the link goes kaput.  I begin to see the following message

 eth0: Transmit timeout using MII device.
 eth0: Transmit timeout using MII device.

/proc/net/dev looks like:

Inter-|   Receive                  |  Transmit
 face |packets errs drop fifo frame|packets errs drop fifo colls carrier
    lo:      9    0    0    0    0        9    0    0    0     0    0
  eth0:  19277    0   12    0    0    14999   11    0    3     0    0
  eth1:   8099    0    0    0    0     6068    0    0    0    15    0

If I do "ifconfig eth0 down; ifdown eth0; ifconfig eth0 up; ifup eth0"
then the card is back up and running.

Any clues on what's going on?  Suggestions for configuration tweaking?
Again, this is relatively easily reproducible, so if I can help in
tracking it down any further, let me know.