[eepro100] sleep mode persistence

Frank Lenaerts Frank Lenaerts <lenaerts.frank@pandora.be>
Sun Sep 29 10:47:01 2002


Hi,

I have a question regarding the sleep mode of the eepro100. Because
the sleep mode is enabled by default, I issued an eepro100-diag -ee -G
0 -w -w -f to disable the sleep mode. I then shutdown the machine with
a shutdown -h now, powered off but left the power cord connected. As I
am dealing with an ATX mobo, the power wasn't actually really cut
off. When I powered on the machine again, eepro100-diag -ee -f did not
show the sleep mode message anymore, and the network adapter worked
fine. 

Later on however, I also unplugged the power cord. The next time I
booted, the network adapter did not seem to work anymore. The output
of eepro100-diag -ee -f showed an incorrect EEPROM checksum. 

--- begin ---
escher:~# eepro100-diag -ee -f
eepro100-diag.c:v2.05 6/13/2001 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xb400.
EEPROM contents, size 256x16:
    00: ffff ffff ffff ffff ffff ffff ffff ffff
  0x08: ffff ffff ffff ffff ffff ffff ffff ffff
  0x10: ffff ffff ffff ffff ffff ffff ffff ffff
  0x18: ffff ffff ffff ffff ffff ffff ffff ffff
  0x20: ffff ffff ffff ffff ffff ffff ffff ffff
  0x28: ffff ffff ffff ffff ffff ffff ffff ffff
  0x30: ffff ffff ffff ffff ffff ffff ffff ffff
  0x38: ffff ffff ffff ffff ffff ffff ffff ffff
  0x40: ffff ffff ffff ffff ffff ffff ffff ffff
  0x48: ffff ffff ffff ffff ffff ffff ffff ffff
  0x50: ffff ffff ffff ffff ffff ffff ffff ffff
  0x58: ffff ffff ffff ffff ffff ffff ffff ffff
  0x60: ffff ffff ffff ffff ffff ffff ffff ffff
  0x68: ffff ffff ffff ffff ffff ffff ffff ffff
  0x70: ffff ffff ffff ffff ffff ffff ffff ffff
  0x78: ffff ffff ffff ffff ffff ffff ffff ffff
  0x80: ffff ffff ffff ffff ffff ffff ffff ffff
  0x88: ffff ffff ffff ffff ffff ffff ffff ffff
  0x90: ffff ffff ffff ffff ffff ffff ffff ffff
  0x98: ffff ffff ffff ffff ffff ffff ffff ffff
  0xa0: ffff ffff ffff ffff ffff ffff ffff ffff
  0xa8: ffff ffff ffff ffff ffff ffff ffff ffff
  0xb0: ffff ffff ffff ffff ffff ffff ffff ffff
  0xb8: ffff ffff ffff ffff ffff ffff ffff ffff
  0xc0: ffff ffff ffff ffff ffff ffff ffff ffff
  0xc8: ffff ffff ffff ffff ffff ffff ffff ffff
  0xd0: ffff ffff ffff ffff ffff ffff ffff ffff
  0xd8: ffff ffff ffff ffff ffff ffff ffff ffff
  0xe0: ffff ffff ffff ffff ffff ffff ffff ffff
  0xe8: ffff ffff ffff ffff ffff ffff ffff ffff
  0xf0: ffff ffff ffff ffff ffff ffff ffff ffff
  0xf8: ffff ffff ffff ffff ffff ffff ffff ffff
 *****  The EEPROM checksum is INCORRECT!  *****
  The checksum is 0xFF00, it should be 0xBABA!
Intel EtherExpress Pro 10/100 EEPROM contents:
  Station address FF:FF:FF:FF:FF:FF.
  Board assembly ffffff-255, Physical connectors present: RJ45 BNC AUI MII
  Primary interface chip i82555 PHY #-1.
    Secondary interface chip i82555, PHY -1.
   Sleep mode is enabled.  This is not recommended.
   Under high load the card may not respond to
    PCI requests, and thus cause a master abort.
escher:~# 
---  end  ---

This problem also seems to generate some other error messages as can
be noted in the dmesg output.

--- begin ---
eepro100: wait_for_cmd_done timeout!
eepro100: wait_for_cmd_done timeout!
eepro100: wait_for_cmd_done timeout!
eepro100: wait_for_cmd_done timeout!
eepro100: wait_for_cmd_done timeout!
eepro100: wait_for_cmd_done timeout!
eepro100: wait_for_cmd_done timeout!
---  end  ---

I started doing some tests and noticed that this problem only occurs
after a complete (i.e. really no power to the mobo) power outage. When
I really cut off the power, and then boot the machine, I always get
this incorrect EEPROM checksum. If I just reboot or shutdown the
machine (without pulling the power cord out of the case) right after
the first boot, the problem is solved.

--- begin ---
escher:~# eepro100-diag -ee -f
eepro100-diag.c:v2.05 6/13/2001 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xb400.
EEPROM contents, size 64x16:
    00: 0200 4cb3 0e1f 020b ffff 0201 4701 ffff
  0x08: 7517 6704 50a0 0040 8086 fe73 ffff ffff
  0x10: ffff ffff ffff ffff ffff ffff ffff ffff
  0x18: ffff ffff ffff ffff ffff ffff ffff ffff
  0x20: ffff ffff ffff 1229 ffff ffff ffff ffff
  0x28: ffff ffff ffff ffff ffff ffff ffff ffff
  0x30: 002c 4000 3003 ffff ffff ffff ffff ffff
  0x38: ffff ffff ffff ffff ffff ffff ffff e4be
 The EEPROM checksum is correct.
Intel EtherExpress Pro 10/100 EEPROM contents:
  Station address 00:02:B3:4C:1F:0E.
  Board assembly 751767-004, Physical connectors present: RJ45
  Primary interface chip i82555 PHY #1.
    Secondary interface chip i82555, PHY -1.
escher:~# 
---  end  ---

As expected, there are not wait_for_cmd_done timeout error messages
anymore in this case.

According to me, this means that disabling the sleep mode bit must
have worked, because it is disabled after a reboot. 

It seems however:

- that the contents of the EEPROM cannot be read when the machine is
  powered on the first time

or

- that there is some trigger during the shutdown process so that the
  EEPROM can be read during the next boot (as long as the mobo has
  power) or reboot


Anyone any idea what might be the cause of this problem?


-- 
lenaerts.frank@pandora.be

Those who do not understand Unix are condemned to reinvent it, poorly."
-- Henry Spencer