Subject: port-sparc/4823: Dead eeprom screws ethernet on sparc
To: None <gnats-bugs@gnats.netbsd.org>
From: None <abs@mono.org>
List: netbsd-bugs
Date: 01/14/1998 15:20:00
>Number: 4823
>Category: port-sparc
>Synopsis: Dead eeprom screws ethernet on sparc
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: gnats-admin (GNATS administrator)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Jan 14 15:35:00 1998
>Last-Modified:
>Originator: David Brownlee
>Organization:
<a href="http://www.mono.org/">Monochrome</a>
>Release: 1.3
>Environment:
System: NetBSD sublimation.anim.dreamworks.com 1.3 NetBSD 1.3 (_SUBLIMATION_)
>Description:
If the eeprom fails on a sparc (at least on a sun4c) the ethernet
address is read as ff:ff:ff:ff:ff:ff.
Under earlier versions of NetBSD this still worked, however probably
since the arp new world order it no longer does. This is probably
a Good Thing from an objective viewpoint, but it does leave the
owner SOL under they get a new eeprom.
>How-To-Repeat:
Boot a sparc with a dead eeprom, watch ethernet address get set to
ff:ff:ff:ff:ff:ff, be unable to use the network interface.
>Fix:
The below patch catches this and sets the first three octets to Sun's
reserved range 08:00:20, leaving the last three ff:ff:ff. This is
obviously still not a good situation, but it at least allows the
machine to use the network pending a new eeprom (unless another
machine on the same network suffered a similar fate :).
If this is not wanted by default, would it be possible to put it
in (or something similar) as an option?
Index: clock.c
===================================================================
RCS file: /cvsroot/src/sys/arch/sparc/sparc/clock.c,v
retrieving revision 1.54.2.2
diff -u -r1.54.2.2 clock.c
--- clock.c 1997/12/20 23:06:07 1.54.2.2
+++ clock.c 1998/01/14 23:13:30
@@ -633,6 +633,12 @@
cp[3] = idp->id_ether[3];
cp[4] = idp->id_ether[4];
cp[5] = idp->id_ether[5];
+ if( cp[0] + cp[1] + cp[2] + cp[3] + cp[4] + cp[5] + cp[6] == 255*6 ) {
+ printf(" (reset from ff:ff:ff:ff:ff)");
+ cp[0] = 0x08;
+ cp[1] = 0x00;
+ cp[2] = 0x20;
+ }
}
/*
>Audit-Trail:
>Unformatted: