[realtek] RTL-8139C: SIOCSIFFLAGS: Device or resource busy

kiing@altern.org kiing@altern.org
Fri Nov 30 13:52:11 2001

I just buyed a ST100S StarTech ethernet card with a 8139C chip in it. The card work fine under windows, but work under Linux (Slackware Linux 8.0, tryed with a 2.2.19 generic kernel and a 2.4.10 custom kernel). When I use ifconfig, I always get the "Device or resource busy" error. I tryed the rtl8139 and the 8139too driver.

With the 2.2.19 and rtl8139:
rtl8139.c:v1.07 5/6/99 Donald Becker http://cesdis.gsfc.nasa.gov/linux/drivers/rtl8139.html
eth0: RealTek RTL8139 Fast Ethernet at 0xf800, IRQ 11, 00:50:fc:33:0f:01.

root@kiingbox:~# ifconfig eth0 up
SIOCSIFFLAGS: Resource temporarily unavailable

With the 2.4.10 and 8139too:
8139too Fast Ethernet driver 0.9.18a
eth0: RealTek RTL8139 Fast Ethernet at 0xc6a66c00, 00:50:fc:33:0f:01, IRQ 11
eth0:  Identified 8139 chip type 'RTL-8139C'

root@kiingbox:~# ifconfig eth0 up
SIOCSIFFLAGS: Device or resource busy

The rtl8139-diag -eam output:
rtl8139-diag.c:v2.04 8/08/2001 Donald Becker (becker@scyld.com)
Index #1: Found a RealTek RTL8139 adapter at 0xf800.
RealTek chip registers at 0xf800
 0x000: 33fc5000 0000010f ffffffff ffffffff 00002000 00002000 00002000 00002000
 0x020: 00028c84 00029484 00029c84 0002a484 0002ac84 01000000 0000fff0 00000000
 0x040: 74000000 00000000 e493a692 00000000 000f1000 00000000 0088e100 00100000
 0x060: 1100000f 01e1782d 000141e1 00000000 00000004 000307c8 b0f243b9 8a36df43.
  No interrupt sources are pending.
 The chip configuration is 0x10 0x0f, MII half-duplex mode.
Decoded EEPROM contents:
   PCI IDs -- Vendor 0x10ec, Device 0x8139.
   PCI Subsystem IDs -- Vendor 0x10ec, Device 0x8139.
   PCI timer settings -- minimum grant 32, maximum latency 64.
  General purpose pins --  direction 0xe1  value 0x12.
  Station Address 00:50:FC:33:0F:01.
  Configuration register 0/1 -- 0x0c / 0xc2.
 EEPROM active region checksum is 08cd.
 The RTL8139 does not use a MII transceiver.
 It does have internal MII-compatible registers:
   Basic mode control register   0x782d.
   Basic mode status register    0x1100.
   Autonegotiation Advertisement 0x01e1.
   Link Partner Ability register 0x41e1.
   Autonegotiation expansion     0x0001.
   Disconnects                   0x0000.
   False carrier sense counter   0x0000.
   NWay test register            0x0004.
   Receive frame error count     0x0000.

If I type ifconfig eth0 I get:

eth0      Link encap:Ethernet  HWaddr 00:50:FC:33:0F:01  
          inet addr:  Bcast:  Mask:
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:11 Base address:0x6c00 

The RX packets and TX packets always stay to 0.

Anyone have an idea to fix this ?