[realtek] rtl 8139 NIC set to wrong IRQ by Linux

James Palma jpalma@external.umass.edu
Mon, 21 Aug 2000 16:35:25 -0400


I have a configuration problem that I hope is simple.  My SMC1211TX NIC, 
which uses a RealTek 8139 chip, is being set to the wrong IRQ by Linux 
during start-up.  Instead of being set to IRQ 11, it is set to IRQ 0.  More 
annoying, it sometimes is set to the right IRQ, and then the card 
works.  This sounded like an IRQ conflict, so I searched around and found 
that I should disable the PnP OS setting in by computer's BIOS.  I did 
this, but it made no difference.

My computer is a Gateway GP7-500 with a Tabor II motherboard (Intel 440bx 
chipset).  I am running Slackware 7.1 with Kernel 2.2-15.  I am running it 
as a UMSDOS file system (the "BigSlak" distribution).  I connect to the 
network using DHCP.  When the card is not properly initialized it does not 
show up when running ifconfig (no eth0) and I get the following DHCP errors 
when running dhclient:

SIOCSIFFLAGS: Resource temporarily unavailable
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval xxx
Network is down
No DHCP offers received
No working leases in persistent database - sleeping

Here is what seems to be a relevant portion of the /proc/pci file:

   Bus  0, device  12, function  0:
     Multimedia audio controller: Ensoniq ES1371 (rev 6).
       Slow devsel.  IRQ 11.  Master Capable.  Latency=96.  Min Gnt=12.Max 
Lat=128.
       I/O at 0x1400 [0x1401].
   Bus  0, device  14, function  0:
     Ethernet controller: SMC 1211 TX (rev 16).
       Medium devsel.  Fast back-to-back capable.  IRQ 11.  Master 
Capable.  Latency=128.  Min Gnt=32.Max Lat=64.
       I/O at 0x5800 [0x5801].
   Bus  1, device   0, function  0:
     VGA compatible controller: NVidia Unknown device (rev 4).
       Vendor id=10de. Device id=20.
       Medium devsel.  Fast back-to-back capable.  IRQ 11.  Master 
Capable.  Latency=248.  Min Gnt=5.Max Lat=1.
       Non-prefetchable 32 bit memory at 0x1f000000 [0x1f000000].
       Prefetchable 32 bit memory at 0x21000000 [0x21000008].


As you can see, all the PCI devices share IRQ 11.  Is this a problem?  As 
far as I can tell, it shouldn't be.

Here is the most recent entry in the /var/log/messages file where the card 
was improperly initialized.  Note the first and last lines in the selection:

Aug 21 12:51:10 Donahue kernel:   The PCI BIOS has not enabled the device 
at 0/112!  Updating PCI command 0101->0105.
Aug 21 12:51:10 Donahue kernel: rtl8139.c:v1.07 5/6/99 Donald Becker 
http://cesdis.gsfc.nasa.gov/linux/drivers/rtl8139.html
Aug 21 12:51:10 Donahue kernel: eth0: SMC1211TX EZCard 10/100 (RealTek 
RTL8139) at 0x5800, IRQ 0, ff:ff:ff:ff:ff:ff.
.....
Aug 21 12:51:10 Donahue kernel: PCI routing table version 1.0 at 0xfdf10
Aug 21 12:51:10 Donahue kernel:   00:0e.0 -> irq 11
.....

Here is the entry in /var/log/messages from the last time the card worked. 
Note that there is no mention of the PCI BIOS not enabling any devices nor 
the notation "00:0e.0 -> irq 11":

Aug 21 10:48:54 Donahue kernel: rtl8139.c:v1.07 5/6/99 Donald Becker 
http://cesdis.gsfc.nasa.gov/linux/drivers/rtl8139.html
Aug 21 10:48:54 Donahue kernel: eth0: SMC1211TX EZCard 10/100 (RealTek 
RTL8139) at 0x1000, IRQ 11, 00:e0:29:31:52:f2.
.....
Aug 21 10:48:54 Donahue kernel: PCI routing table version 1.0 at 0xfdf10
.....

So, is this a PCI problem unrelated to the RealTek card?  Can I force the 
card to use IRQ 11?  Why does /proc/pci report the card as using I/O at 
0x5800 and IRQ 11 when the incorrect card setting reports IRQ 0 at 0x5800 
and the correct (working) card setting reports IRQ 11 at 0x1000?

Any suggestions?

Jim