[realtek] bug found in driver

Chris Leavoy cyber@phix-it.com
Thu, 3 Aug 2000 16:03:45 -0400 (EDT)


There is a bug in the rtl8139.c driver that causes the interface to stop
responding. When the network card (mine is a dlink DFE-530tx+) is put
under load, after a few seconds the card will no longer recieve
packets.  I simulated load by opening two ftp transfers to the linux box
that has the rtl8139 based network card. I can re-create this bug at any
time using various different types of load. (ftp, nfs, smb transfers) They
all have the same outcome.  I think the problem is in how the driver
handles incoming packets because i was unable to reproduce this bug when
transfering files from the computer with the rtl8139 based network
card. When the interface was "frozen" i opened up tcpdump and saw that the
nic was still recieving broadcast packets, and the card was also
sending out arp request. Other than those two types of packets, there was
no other activity. I was able to get the card working again by taking down
the interface and bringing it back up again. 
`ifconfig eth0 down ; ifconfig eth0 up` 

I enabled debug level 3 in the driver (insmod rtl8139 debug=3) and when i
simulated the load the following messages were recorded in syslog.

kernel: eth0: Abnormal interrupt, status 00000051.
kernel: eth0: Abnormal interrupt, status 00000070.
kernel: eth0: Ethernet frame had errors, status ee573d56.
kernel: eth0: Abnormal interrupt, status 00000020.
  [ -- then it froze -- ]  

eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Abnormal interrupt, status 00000055.
eth0: Abnormal interrupt, status 00000030.
eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Ethernet frame had errors, status dba744af.
eth0: Oversized Ethernet frame, status dba744af!
eth0: Abnormal interrupt, status 00000020.
  [ -- then it froze -- ]

eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Abnormal interrupt, status 00000051.
eth0: Abnormal interrupt, status 00000030.
eth0: Ethernet frame had errors, status 774c0f79.
eth0: Oversized Ethernet frame, status 774c0f79!
eth0: Abnormal interrupt, status 00000020.
  [ -- then it froze -- ]

i repeated this around 20 times for each different driver version. and
each time, the output was similar to the above.  So far i have tried:
rtl8139.c:v1.04 9/22/98
rtl8139.c:v1.09 4/08/2000
rtl8139.c:v1.10 5/29/2000
rtl8139.c:v1.11 7/14/2000 (rebooted instead of freezing eth0)

I hope that someone reading this list can help me figure out what is
causing this problem.  I will include output from the diag programs below.



mii-diag 
Using the default interface 'eth0'.
Basic registers of MII PHY #32:  1100 782d 0000 0000 01e1 45e1 0001 0000.
 Basic mode control register 0x1100: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
 Your link partner advertised 45e1: Flow-control 100baseTx-FD 100baseTx
10baseT-FD 10baseT, w/ 802.3X flow control.

rtl8139-diag   
rtl8139-diag.c:v2.00 4/19/2000 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a RealTek RTL8139 adapter at 0xec00.
EEPROM size test returned 6, 0x204a7 / 0.



Thanks,
Chris Leavoy

PS: Am I the only one having this type of problem?