[eepro100] problem with eepro100.c v1.13

Jan Just Keijser janjust@cisco.com
Thu, 15 Mar 2001 17:58:14 +0100


Hi all,

recently downloaded and installed eepro100.c v1.13 to get rid of the
wait_for_cmd timeout messages and on *most* of my boxes it is working
splendidly, except one:

it's running RH 6.2 and with the 2.2.14 eepro100.c I never had any
problems, except a very rare occurrence of the 'wait_for_cmd' timeout
thingie. With the new driver, I have a very weird problem:  when I
reboot the box, the network connection is killed (the light on my hub
goes out) the moment it is bringing down eth0; this happens about 90% of
the times I've tried so far; worse, at reboot the card won't come back
up and I have to go in and reset the transceiver using mii-diag for
things to clear up; it looks like the card is getting stuck in a state
that it nor the driver can get out of...

here's the output of mii-diag when the card is down:

mii-diag.c:v1.07 10/14/99  Donald Becker (becker@cesdis.gsfc.nasa.gov)
 MII PHY #1 transceiver registers:
   3000 7809 02a8 0150 05e1 05e1 0001 ffff
   ffff ffff ffff ffff ffff ffff ffff ffff
   0000 0000 0001 0000 0000 0000 0000 0000
   0000 0000 129e 0000 ffff ffff ffff ffff.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 Basic mode status register 0x7809 ... 7809.
   Link status: not established.
   This transceiver is capable of  100baseTx-FD 100baseTx 10baseT-FD
10baseT.
   Able to perform Auto-negotiation, negotiation not complete.
 Your link partner is generating 100baseTx link beat  (no
autonegotiation).

and eepro100-diag:

eepro100-diag.c:v2.00 4/19/2000 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html with 0.1 changes by VA Linux
Index #1: Found a Intel 82557 EtherExpressPro100B adapter at 0xe400.
i82557 chip registers at 0xe400:
  00000000 00000000 00000000 00080002 183fffff 00000000
  No interrupt sources are pending.
   The transmit unit state is 'Idle'.
   The receive unit state is 'Idle'.
  This status is unusual for an activated interface.
Intel EtherExpress Pro 10/100 EEPROM contents:
  Station address 00:10:DC:7D:50:D7.
  Receiver lock-up bug exists. (The driver work-around *is*
implemented.)
  Board assembly 668081-002, Physical connectors present: RJ45
  Primary interface chip i82555 PHY #1.
 MII PHY #1 transceiver registers:
  3000 7809 02a8 0150 05e1 05e1 0001 ffff
  ffff ffff ffff ffff ffff ffff ffff ffff
  0000 0000 0001 0000 0000 0000 0000 0000
  0000 0000 128f 0000 ffff ffff ffff ffff.

I have link beat but auto-negotation fails (even though the hub is seto
to auto-negotiate); I have to type

  rmmod eepro100
  insmod eepro100
  mii-diag -F 100BaseTX
  mii-diag -av # link is now up, light goes back on
  mii-diag -R
  mii-diag -av # we're back to auto-negotiate

After this mii-diag reports that the state of the card goes to '782d'
and everybody is happy again.
The only thing that is odd about this card WRT all the other cards I've
tried is the make and model:

from /var/log/messages:

 eepro100.c:v1.13 1/9/2001 Donald Becker <becker@scyld.com>
   http://www.scyld.com/network/eepro100.html
 eth0: OEM i82557/i82558 10/100 Ethernet at 0xc807f000,
00:10:DC:7D:50:D7, IRQ 9.
   Board assembly 668081-002, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
   General self-test: passed.
   Serial sub-system self-test: passed.
   Internal registers self-test: passed.
   ROM checksum self-test: passed (0x24c9f043).
   Receiver lock-up workaround activated.

lspci -vvx -s 00:12

00:12.0 Ethernet controller: Intel Corporation 82557 [Ethernet Pro 100]
(rev 05)
        Subsystem: Intel Corporation 82558 10/100 with Wake on LAN
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 8 min, 56 max, 64 set, cache line size 08
        Interrupt: pin A routed to IRQ 9
        Region 0: Memory at e7901000 (32-bit, prefetchable)
        Region 1: I/O ports at e400
        Region 2: Memory at e7800000 (32-bit, non-prefetchable)
        Expansion ROM at e6000000 [disabled]
        Capabilities: [dc] Power Management version 1
                Flags: PMEClk- AuxPwr- DSI+ D1+ D2+ PME+
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00: 86 80 29 12 07 00 90 02 05 00 00 02 08 40 00 00
10: 08 10 90 e7 01 e4 00 00 00 00 80 e7 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 08 00
30: 00 00 00 e6 dc 00 00 00 00 00 00 00 09 01 08 38

i.e. is has wake-on-lan but this is disabled, otherwise Linux won't even
boot!

I've check interrupts, DMA, etc but could not find anything interesting
- besides, if it were an interrupt conflict then why does the older
driver work? I've also tried the 2.2.16-3 kernel and that didn't do much
good either - the 2.2.16 driver works fine, the eepro100.c v1.13 kills
the cards at reboot.

any ideas anyone?

JJK
CNBU
Cisco Systems Inc
Linux SW Engineer