Subject: Re: Lance Rev C ethernet bug
To: David Alan Gilbert <gilbertd@cs.man.ac.uk>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: port-sun3
Date: 10/26/1995 11:01:04
On Thu, 26 Oct 95 15:55:33 GMT 
 David Alan Gilbert <gilbertd@cs.man.ac.uk> wrote:

 > Now I'm trying to run 'rbootd' to boot an HP 9000/340 into NetBSD; it has
 > to do some fairly low level stuff using /dev/bpf.  When I start 'rbootd'
 > up we get hundreds of warnings in the log about 'le0: Lance revision C
 > ehternet bug' and seems to indicate it lost a packet.  Anyway, rbootd isn't
 > working (the HP doesn't see our system as providing a system for it).

Basically, rbootd sets the multicast address filter of the interface if 
possible, or places it in promiscuous mode, because the HP bootrom uses 
ethernet multicast rather than ethernet broadcast.  If you look around line 
681 of sys/arch/sun3/dev/if_le.c, you'll see that packets that aren't 
sent to a) "our" ethernet addr or b) the broadcast addr, are blamed on a 
bug that existed in the LANCE chip Rev C, and thrown away.  If you don't 
have a Rev C LANCE in your system, it's safe to not do this check.  To 
make rbootd work on my Sun 3 at home, I had to undef the LANCE_REVC_BUG 
macro in if_le.c.  I've always thought that this definition should be 
moved out to the kernel config file, and better documented.

--------------------------------------------------------------------------
Jason R. Thorpe                                       thorpej@nas.nasa.gov
NASA Ames Research Center                               Home: 408.866.1912
NAS: M/S 258-6                                          Work: 415.604.0935
Moffett Field, CA 94035                                Pager: 415.428.6939