Red Hat Linux 9 (kernel 2.4.20-8) on Nokia IP330: "Invalid EEPROM checksum 0xff00" or "Corrupted EEPROM" with EtherExpress Pro 100 drivers
"Matthew X. Economou" <[email protected]> Sun, 27 Jul 2003 22:16:10 -0400
| Newsgroups | gmane.linux.drivers.eepro100.devel |
|---|---|
| Organization | Cincinnati Children's Hospital Medical Center |
| Message-ID | <[email protected]> |
Please help! I'm having problems getting the 3 on-board EtherExpress
Pro 100 NICs of a Nokia IP330 working under Linux (Red Hat Linux 9
with kernel 2.4.20-8). Obviously, the NICs work under Nokia's IPSO
operating system. I have also tested FreeBSD, where the NICs work as
long as I specify each NIC's MAC address on the ifconfig command line.
Here's what I've tried under Linux thus far:
- Intel's e100 driver (get the "Corrupted EEPROM on instance #0"
error)
- Becker's eepro100 driver (loads but reports "Invalid checksum
0xff00" and MAC addresses of FF:FF:FF:FF:FF:FF on all interfaces)
- Specifying the MAC (ifconfig fails with "SIOCSIFHWADDR: Device or
resource busy", eepro100-diag fails with "Modifying the station
(MAC) address has been disabled in this release of the diagnostic")
- Disabling plug-and-play in the system's BIOS (no effect)
- Enabling PCI 2.1 compliance in the system's BIOS (no effect)
- Passing IRQ and IO address arguments to the modules (no affect)
- Disabling sleep mode with Becker's eepro100-diag utility (it
doesn't work; sleep mode remains enabled)
I am at my wits end. Everything I have found on Google or Usenet thus
far has not worked.
Details are below. Relevant diagnostic information can be seen at the
following URLs:
http://www.cs.rose-hulman.edu/~econommx/eepro100-diag.txt
http://www.cs.rose-hulman.edu/~econommx/eepro100-dmesg.txt
http://www.cs.rose-hulman.edu/~econommx/eepro100-error.txt
http://www.cs.rose-hulman.edu/~econommx/eepro100-lspci.txt
http://www.cs.rose-hulman.edu/~econommx/eepro100-pciconfig.txt
1. Using the Intel "e100" driver
Kudzu (Red Hat's device management tool) configured the cards to use
the Intel "e100" device driver (version 2.1.29-k2). This driver
returns the following errors:
e100: selftest OK.
e100: Corrupted EEPROM on instance #0
e100: selftest OK.
e100: Corrupted EEPROM on instance #0
e100: selftest OK.
e100: Corrupted EEPROM on instance #0
Modprobe issues the following:
[root@gw1 root]# modprobe e100
Intel(R) PRO/100 Network Driver - version 2.1.29-k2
Copyright (c) 2002 Intel Corporation
e100: Corrupted EEPROM on instance #0
e100: Corrupted EEPROM on instance #0
e100: Corrupted EEPROM on instance #0
/lib/modules/2.4.20-8/kernel/drivers/net/e100/e100.o: init_module:
No such device
Hint: insmod errors can be caused by incorrect module parameters,
including invalid IO or IRQ parameters.
You may find more information in syslog or the output from
dmesg
/lib/modules/2.4.20-8/kernel/drivers/net/e100/e100.o: insmod
/lib/modules/2.4.20-8/kernel/drivers/net/e100/e100.o failed
/lib/modules/2.4.20-8/kernel/drivers/net/e100/e100.o: insmod e100
failed
After this point, the e100 driver refuses to load.
2. Using Donald Becker's "eepro100" driver
I built the latest version of the eepro100 driver as a module. It
loads into the kernel, but not after issuing the following error
messages:
pci-scan.c:v1.11 8/31/2002 Donald Becker <[email protected]>
http://www.scyld.com/linux/drivers.html
eepro100.c:v1.26 11/17/2002 Donald Becker <[email protected]>
http://www.scyld.com/network/eepro100.html
divert: allocating divert_blk for eth0
eth0: Invalid EEPROM checksum 0xff00, check settings before
activating this device!
eth0: OEM Intel PCI EtherExpress Pro100 at 0xc4888000,
FF:FF:FF:FF:FF:FF, IRQ 10.
Board assembly ffffff-255, Physical connectors present: RJ45 BNC
AUI MII
Primary interface chip unknown-15 PHY #31.
Secondary interface chip i82555.
** The configuration EEPROM enables Sleep Mode.
** This will cause PCI bus errors!
** Update the configuration EEPROM with the eepro100-diag
program.
General self-test: passed.
Serial sub-system self-test: passed.
Internal registers self-test: passed.
ROM checksum self-test: passed (0x24c9f043).
(The errors are the same for the other two interfaces.) This driver
does load, and an "ifconfig -a" command shows three network
interfaces, eth[0-2].
3. Specifying the MAC address
With the Becker driver loaded, the network interfaces work but all of
the packets have the Ethernet broadcast address (FF:FF:FF:FF:FF:FF).
I did record the actual MAC addresses as reported by IPSO, but when I
attempt to specify them on the ifconfig command line, I get the
following error regardless of the interface:
[root@gw1 root]# ifconfig eth0 hw ether 00:a0:8e:0a:ff:48
SIOCSIFHWADDR: Device or resource busy
eepro100-diag fails with the error "Modifying the station (MAC)
address has been disabled in this release of the diagnostic."
4. Disabling plug-and-play in the BIOS
The IP330 uses an Award BIOS. In the PNP/PCI configuration menu, I
set "Resources controlled by" to "Manual". All IRQs are assigned to
"PCI/ISA PnP". I could not find any other PnP-related settings in the
BIOS configuration menus.
Changing the "Resources controlled by" setting has no effect.
5. Enabling PCI 2.1 compliance in the BIOS
I toggled the setting "PCI 2.1 compliance" (from disabled to enabled).
This had no effect.
6. Passing IRQ and IO address arguments to the drivers
I tried specifying the IRQ and IO address of each NIC in the arguments
to modprobe. This had no effect.
7. Disabling sleep mode with Becker's eepro100-diag utility
The device driver recommends disabling sleep mode with the
eepro100-diag utility. This does not work. Subsequent invocations of
the eepro100-diag utility show that PCI sleep mode is still enabled:
sh-2.05b# /usr/local/bin/eepro100-diag -G 0 -w -w -f -# 1
eepro100-diag.c:v2.12 4/15/2003 Donald Becker ([email protected])
http://www.scyld.com/diag/index.html
Index #1: Found a Intel i82557/8/9 EtherExpressPro100 adapter at
0x6800.
Changing the chip configuration word (offset 10) to 0xffff.
Writing 0xfffd to configuration EEPROM word 10.
Writing 0xbbbb to configuration EEPROM word 255.
Use '-a' or '-aa' to show device registers,
'-e' to show EEPROM contents, -ee for parsed contents,
or '-m' or '-mm' to show MII management registers.
sh-2.05b# /usr/local/bin/eepro100-diag -ee -# 1
eepro100-diag.c:v2.12 4/15/2003 Donald Becker ([email protected])
http://www.scyld.com/diag/index.html
Index #1: Found a Intel i82557/8/9 EtherExpressPro100 adapter at
0x6800.
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 ________________
..output elided...
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.
To clear sleep mode use the '-G 0 -w -w -f' options.
I even tried powering off the hardware after running the above
commands as recommended in
http://www.scyld.com/pipermail/eepro100/2003-April/000007.html, to no
effect.
--
Matthew X. Economou, Sr. Systems Analyst, I.S. Information Security
Cincinnati Children's Hospital Medical Center, Inc.
ATTN: VP1/eHealth, MLC 9009, 2900 Vernon Place, Cincinnati, OH 45219
Desk: +1 513 6365621, Fax: +1 513 6367737, Page: +1 877 7801326