#32 8139too hangs on bringing interface down

critical
closed-fixed
Jeff Garzik
8139too (65)
7
2001-11-01
2001-05-28
Jim Paris
No

bug: 8139too.c version 0.9.17 (and 0.9.15c) under
linux 2.4.5 (and 2.4.3)

My RTL8139 based card is having problems. I've gone
through a ton of
network cards on this machine trying to find one that
works
consistently well. This is the closest I've come, but
it's far from
perfect. The biggest problem is that my system hangs
when I try to
bring the interface down. ('ifconfig eth0 down'). I
have the driver
loaded as a module. The initial debug output when I
execute ifconfig is:

rtl8139_set_rx_mode: ENTER
rtl8139_set_rx_mode: eth0: rtl8139_set_rx_mode(1003)
done -- Rx config 0200f78e.
ether_crc: ENTER
ether_crc: EXIT, returning 2141400475
rtl8139_set_rx_mode: EXIT
rtl8139_close: ENTER

And then, (not immediately, but pretty soon), my dmesg
fills up with this:

rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
eth0: Too much work at interrupt, IntrStatus=0x0001.
rtl8139_interrupt: eth0: exiting interrupt,
intr_status=0x0000.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
rtl8139_interrupt: eth0: interrupt status=0x0000
ackstat=0x0001 new intstat=0x0001.
eth0: Too much work at interrupt, IntrStatus=0x0001.
rtl8139_interrupt: eth0: exiting interrupt,
intr_status=0x0000.

(which repeats forever)

The network interface is dead and any further attempts
to ifconfig
hang (pretty hard -- I can switch VTs but can't break
out or kill ifconfig0)

Attached:
diag-before.txt (output from rtl8139-diag -
mmaaavvveef before ifconfig)
diag-after.txt (output from rtl8139-diag -
mmaaavvveef after ifconfig)
proc-pci.txt (/proc/pci)

All relevant information about the system should be
findable in proc-pci.txt

-jim

Discussion

  • Jim Paris
    Jim Paris
    2001-05-28

    output from rtl8139-diag -mmaaavvveef after ifconfig

     
    Attachments
  • Jim Paris
    Jim Paris
    2001-05-28

    output from rtl8139-diag -mmaaavvveef before ifconfig

     
    Attachments
  • Jim Paris
    Jim Paris
    2001-05-28

    Logged In: YES
    user_id=175928

    oops -- sorry about the line wrapping in that guy :)

     
  • Jim Paris
    Jim Paris
    2001-05-28

    • priority: 5 --> 7
     
  • Jim Paris
    Jim Paris
    2001-05-28

    • assigned_to: nobody --> jgarzik
     
  • Jim Paris
    Jim Paris
    2001-05-28

    Logged In: YES
    user_id=175928

    one more file

     
  • Jim Paris
    Jim Paris
    2001-05-28

    /proc/pci

     
    Attachments
  • Jim Paris
    Jim Paris
    2001-05-28

    Logged In: YES
    user_id=175928

    one more file

     
  • Jeff Garzik
    Jeff Garzik
    2001-11-01

    • status: open --> closed
     
  • Jeff Garzik
    Jeff Garzik
    2001-11-01

    • status: closed --> closed-fixed
     
  • Jeff Garzik
    Jeff Garzik
    2001-11-01

    Logged In: YES
    user_id=17443

    This problem is fixed in the latest version of the driver. You
    can download the driver from the download section on this
    SourceForge web page.