Subject: Re: any details available on DECchip 21041 (updated PCI ethernet
To: None <matt@lkg.dec.com>
From: John Kohl <jtk@atria.com>
List: port-i386
Date: 07/22/1995 12:11:16
>>>>> "Matt" == Matt Thomas <matt@lkg.dec.com> writes:

Matt> Actually, those are the SMC8432EBT which have the new chip.

It must be a slightly different package that you have--the box my card
came in clearly says SMC8432BT.

Anyway, I needed one more tweak to the driver to get my card working.
The ethernet address on this card wasn't in the place expected by the
driver.  I did see it in the debug output, so I was able to add this
kludge.  Matt, I'm sure there's a better way?  I can send driver output
pre-change if you need/want it.

I also added changes to differentiate the error return codes to make it
easier to tell what's crocked.

Is there a good way to force a particular media port?  I know what port
I have hooked to my home ethernet, and I'd rather not have to wait for
it to (slowly) figure out to use the thinwire/BNC port.

==John

===================================================================
RCS file: RCS/if_de.c,v
retrieving revision 1.2
diff -c -r1.2 if_de.c
*** if_de.c	1995/07/21 22:39:09	1.2
--- if_de.c	1995/07/22 02:48:48
***************
*** 1541,1559 ****
	 * of the rom and let the rest be all 0xffs.  (Can we say
	 * ZNYX???)
	 */
	for (idx = 6; idx < 32; idx++) {
	    if (sc->tulip_rombuf[idx] != 0xFF)
!		return -4;
	}
	/*
	 * Make sure the address is not multicast or locally assigned
	 * that the OUI is not 00-00-00.
	 */
	if ((sc->tulip_rombuf[0] & 3) != 0)
!	    return -4;
	if (sc->tulip_rombuf[0] == 0 && sc->tulip_rombuf[1] == 0
		&& sc->tulip_rombuf[2] == 0)
!	    return -4;
	bcopy(sc->tulip_rombuf, sc->tulip_hwaddr, 6);
	return 0;
      }
--- 1541,1563 ----
	 * of the rom and let the rest be all 0xffs.  (Can we say
	 * ZNYX???)
	 */
+ #if defined(KOLVIR) || defined(PATTERN)
+       bcopy(&sc->tulip_rombuf[20], sc->tulip_rombuf, 6); /* XXX */
+ #else
	for (idx = 6; idx < 32; idx++) {
	    if (sc->tulip_rombuf[idx] != 0xFF)
!		return -5;
	}
+ #endif
	/*
	 * Make sure the address is not multicast or locally assigned
	 * that the OUI is not 00-00-00.
	 */
	if ((sc->tulip_rombuf[0] & 3) != 0)
!	    return -7;
	if (sc->tulip_rombuf[0] == 0 && sc->tulip_rombuf[1] == 0
		&& sc->tulip_rombuf[2] == 0)
!	    return -8;
	bcopy(sc->tulip_rombuf, sc->tulip_hwaddr, 6);
	return 0;
      }