Date: 06 Nov 1999 18:29:22 -0600 From: rand@meridian-enviro.com (Douglas K. Rand) To: Warner Losh <imp@village.org> Cc: freebsd-stable@FreeBSD.ORG Subject: Re: Intel EtherExpress Pro/10+ on -stable Message-ID: <87d7tni1p9.fsf@deneb.meridian-enviro.com> In-Reply-To: Warner Losh's message of "Tue, 2 Nov 1999 23:19:06 -0700 (MST)" References: <199911030619.XAA18084@harmony.village.org>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
Warner> I've had 0 luck getting my Intel EtherExpress PRO/10+ working
Warner> on my 3.3-stable system. It never seems to get interrupts.
Warner> I've disabled plug and play, and have tried it at two
Warner> differend IRQs, which I set with the softset2 program that
Warner> came with my etherpro 10+ (version 3.5). Has anybody managed
Warner> to make one of these work in a -stable system?
I ran into a problem with the ISA Intel EtherExpress Pro/10+ in that
the ex driver used the hardware address to determine if the card is a
Pro/10 or a Pro/10+. If you have a Pro/10+ and the ethernet address
doesn't start with 00:A0:C9 then you need to patch if_ex.c to
recognize the new hardware address prefix as a Pro/10+.
Here is the diff I did to if_ex.c to get it to work for me:
[-- Attachment #2 --]
--- if_ex.c-orig Tue Sep 28 04:57:33 1999
+++ if_ex.c Tue Sep 28 04:59:29 1999
@@ -207,9 +207,9 @@
tmp = eeprom_read(iobase, EE_IRQ_No) & IRQ_No_Mask;
/* work out which set of irq <-> internal tables to use */
- if (sc->arpcom.ac_enaddr[0] == 0x00 &&
- sc->arpcom.ac_enaddr[1] == 0xA0 &&
- sc->arpcom.ac_enaddr[2] == 0xC9) { /* it's a 10+ */
+ if ((sc->arpcom.ac_enaddr[0] == 0x00 && sc->arpcom.ac_enaddr[1] == 0xA0 && sc->arpcom.ac_enaddr[2] == 0xC9) ||
+ (sc->arpcom.ac_enaddr[0] == 0x00 && sc->arpcom.ac_enaddr[1] == 0x90 && sc->arpcom.ac_enaddr[2] == 0x27)) {
+ /* it's a 10+ */
sc->irq2ee = plus_irq2eemap;
sc->ee2irq = plus_ee2irqmap;
} else { /* it's an ordinary 10 */
@@ -277,9 +277,8 @@
if_attach(ifp);
ether_ifattach(ifp);
- if (sc->arpcom.ac_enaddr[0] == 0x00 &&
- sc->arpcom.ac_enaddr[1] == 0xA0 &&
- sc->arpcom.ac_enaddr[2] == 0xC9) {
+ if ((sc->arpcom.ac_enaddr[0] == 0x00 && sc->arpcom.ac_enaddr[1] == 0xA0 && sc->arpcom.ac_enaddr[2] == 0xC9) ||
+ (sc->arpcom.ac_enaddr[0] == 0x00 && sc->arpcom.ac_enaddr[1] == 0x90 && sc->arpcom.ac_enaddr[2] == 0x27)) {
printf("ex%d: Intel EtherExpress Pro/10+, address %6D, connector ", dev->id_unit, sc->arpcom.ac_enaddr, ":");
} else {
printf("ex%d: Intel EtherExpress Pro/10, address %6D, connector ", dev->id_unit, sc->arpcom.ac_enaddr, ":");
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?87d7tni1p9.fsf>
