Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Nov 1999 12:03:36 -0600 (CST)
From:      "Douglas K. Rand" <rand@meridian-enviro.com>
To:        Brad Chapman <chapmanb@arches.uga.edu>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Intel EtherExpress PRO/10+ and EEPROM problem
Message-ID:  <14371.7160.823862.191340@deneb.meridian-enviro.com>
In-Reply-To: <Pine.A41.4.10.9911041152460.55382-100000@archa13.cc.uga.edu>
References:  <Pine.A41.4.10.9911041152460.55382-100000@archa13.cc.uga.edu>

next in thread | previous in thread | raw e-mail | index | archive | help

--x/xPdoksgB
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit

** Brad Chapman <chapmanb@arches.uga.edu> 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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?14371.7160.823862.191340>