Skip to contentSkip to conversation

PROBLEM: can't initiate empty e100 eeprom

DISCUSSION Seved Torstendahl 1 participant 1 message Mar 22, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

When we receive new CPU bourds the EEPROM for one Ethernet port is unprogrammed i.e. contains only FF. The first thing to do is to perform some accepence tests and to set the MAC address on this port using the tool eepro100-diag. This worked with earlier kernels but now the e100.c driver refuses to do this.

The new module parameter eeprom_bad_csum_allow solves half the problem but the check is_valid_ether_addr(...) at line 2669 fails and then the device is removed (our line number due to other changes).

Suggestion: let the module parameter control this test as in the patch below. We don't want to use a DOS tool!

Regards
Seved Torstendahl

Signature · 23 lines
Seved Torstendahl               Net Insight AB
Senior SW System Architect      Box 42093, S-126 14 Stockholm, SWEDEN
tel: + 46 8 685 04 38           Visiting Address: Västberga Allé 9, Hägersten
fax: + 46 8 685 04 20           http://www.netinsight.net


Index: e100.c
===================================================================
RCS file: /cvs/new-sw/kernel/kernel/drivers/net/e100.c,v
retrieving revision 1.2
diff -u -r1.2 e100.c
--- e100.c      23 Oct 2006 13:58:36 -0000      1.2
+++ e100.c      22 Mar 2007 10:09:22 -0000
@@ -2666,7 +2666,8 @@

        memcpy(netdev->dev_addr, nic->eeprom, ETH_ALEN);
        memcpy(netdev->perm_addr, nic->eeprom, ETH_ALEN);
-       if(!is_valid_ether_addr(netdev->perm_addr)) {
+       /* invalid MAC address (ff:ff:ff:ff:ff:ff) accepted, changed at installation */
+       if (!eeprom_bad_csum_allow && (!is_valid_ether_addr(netdev->perm_addr))) {
                DPRINTK(PROBE, ERR, "Invalid MAC address from "
                        "EEPROM, aborting.\n");
                err = -EAGAIN;