From owner-freebsd-questions Fri Nov 5 10: 4:27 1999 Delivered-To: freebsd-questions@freebsd.org Received: from procyon.meridian-enviro.com (thunder.meridian-enviro.com [207.109.234.227]) by hub.freebsd.org (Postfix) with ESMTP id 3143314C8B for ; Fri, 5 Nov 1999 10:04:21 -0800 (PST) (envelope-from rand@meridian-enviro.com) Received: from deneb.meridian-enviro.com (deneb.meridian-enviro.com [10.10.10.32]) by procyon.meridian-enviro.com (8.9.2/8.9.2) with ESMTP id MAA19449; Fri, 5 Nov 1999 12:03:37 -0600 (CST) Received: (from rand@localhost) by deneb.meridian-enviro.com (8.9.2/8.9.2) id MAA20455; Fri, 5 Nov 1999 12:03:37 -0600 (CST) From: "Douglas K. Rand" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="x/xPdoksgB" Content-Transfer-Encoding: 7bit Message-ID: <14371.7160.823862.191340@deneb.meridian-enviro.com> Date: Fri, 5 Nov 1999 12:03:36 -0600 (CST) To: Brad Chapman Cc: freebsd-questions@freebsd.org Subject: Re: Intel EtherExpress PRO/10+ and EEPROM problem In-Reply-To: References: X-Mailer: VM 6.71 under 21.1 "20 Minutes to Nikko" XEmacs Lucid (patch 2) X-Face: $L%T~#'9fAQ])o]A][d7EH`V;"_;2K;TEPQB=v]rDf_2s% on Thu, 4 Nov 1999 11:56:50 -0500 (EST) ** in [Intel EtherExpress PRO/10+ and EEPROM problem] writes: Brad> Hello! Hi! Brad> I am trying to install an Intel EtherExpress Pro/10+ card on Brad> FreeBSD 3.3-release and in searching through the -questions Brad> archive came across your post from February of this year Brad> concerning the oh-so-annoying error "Board's EEPROM is Brad> Configured for IRQ 0, using 9." As you hinted to in your posts, Brad> everything looks okay for me if I run "ifconfig -a" (ie. it Brad> shows that ex0 is up and has the ip that I gave it) but I'm not Brad> having any luck connecting externally to a cable modem. My Brad> kernel config for it looks like: "device ex0 at isa? port? net Brad> irq 9," so I've only set my irq (which I verified was free) and Brad> left everything else to autodetect. Sounds exactly like you have a new Intel EtherExpress Pro/10+ card with one of the new hardware addresses. Unfortunately, the ex driver uses the hardware address to decide if the card is a Pro/10 or a Pro/10+, and I'm not capable of coming up with a better solution. So I just added the check for an Ethernet address prefix of 00:90:27 in addition to the existin check of a 00:A0:C9 prefix. Brad> So before I go in and completely mess everything up, I Brad> wanted to ask you: Brad> 1) Do you know if the driver has been update/fixed in Brad> 3.3-release? Nope. :( Brad> a) If not, are the changes you made specific to "your card" or Brad> do I need to determine something from my card before I go in? Brad> ie. does the prefix on the MAC address change regularly? Well, it depends on the hardware address of your card. If the ethernet address of your Pro/10+ NIC starts with 00:90:27 I'd expect my patch to work. If it doesn't, you'll either have to tweak the patch, or give me the prefix and I can tweak it for you. Brad> b) If so, do you have any clue what my problem might be if it's Brad> not the same as yours? If it isn't the same as what I had, and I expect that it is, then I'm clueless. :) Brad> 2) This is just to satisfy my own curiousity, but exactly what Brad> would I be doing by changing this stuff in the drivers? You would change the ex driver to recognize additional hardware addresses as a Pro/10+ card. Hope this helps. Here is the patch: --x/xPdoksgB Content-Type: text/plain Content-Description: if_ex.c patch Content-Disposition: inline; filename="diff" Content-Transfer-Encoding: 7bit --- 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, ":"); --x/xPdoksgB-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message