From sjr@home.net  Mon Aug 18 19:34:20 1997
Received: from istari.home.net (cc158233-a.catv1.md.home.com [24.3.25.17])
          by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id TAA03316
          for <FreeBSD-gnats-submit@freebsd.org>; Mon, 18 Aug 1997 19:34:19 -0700 (PDT)
Received: (from sjr@localhost)
	by istari.home.net (8.8.7/8.8.6) id WAA00450;
	Mon, 18 Aug 1997 22:34:17 -0400 (EDT)
Message-Id: <199708190234.WAA00450@istari.home.net>
Date: Mon, 18 Aug 1997 22:34:17 -0400 (EDT)
From: sjr@home.net
Reply-To: sjr@home.net
To: FreeBSD-gnats-submit@freebsd.org
Subject: Support for EtherExpress Pro/10+
X-Send-Pr-Version: 3.2

>Number:         4335
>Category:       kern
>Synopsis:       Support for EtherExpress Pro/10+
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    msmith
>State:          closed
>Quarter:
>Keywords:
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Aug 18 19:40:01 PDT 1997
>Closed-Date:    Fri Sep 12 01:31:06 PDT 1997
>Last-Modified:  Fri Sep 12 01:32:19 PDT 1997
>Originator:     Stephen J. Roznowski
>Release:        FreeBSD 3.0-CURRENT i386
>Organization:
>Environment:

	N/A

>Description:

	This patch adds support for the EtherExpress Pro/10+, as well
	as correcting the IRQ handling for the 82595 controller.

	I needed to boost the delay during the reset to get a reliable
	read of the Ethernet address.

>How-To-Repeat:

	

>Fix:
	
*** sys/i386/isa/if_ex.c.orig	Fri Aug  8 00:38:33 1997
--- sys/i386/isa/if_ex.c	Mon Aug 18 22:18:43 1997
***************
*** 103,110 ****
  
  static struct ex_softc ex_sc[NEX]; /* XXX would it be better to malloc(3) the memory? */
  
! static char irq2eemap[] = { -1, -1, 0, 1, -1, 2, -1, -1, -1, 0, 3, 4, -1, -1, -1, -1 };
! static u_char ee2irqmap[] = { 9, 3, 5, 10, 11, 0, 0, 0 };
  
  static int ex_probe __P((struct isa_device *));
  static int ex_attach __P((struct isa_device *));
--- 103,110 ----
  
  static struct ex_softc ex_sc[NEX]; /* XXX would it be better to malloc(3) the memory? */
  
! static char irq2eemap[] = { -1, -1, -1, 0, 1, 2, -1, 3, -1, 4, 5, 6, 7, -1, -1, -1 };
! static u_char ee2irqmap[] = { 3, 4, 5, 7, 9, 10, 11, 12 };
  
  static int ex_probe __P((struct isa_device *));
  static int ex_attach __P((struct isa_device *));
***************
*** 176,182 ****
  	 * Reset the card.
  	 */
  	outb(iobase + CMD_REG, Reset_CMD);
! 	DELAY(200);
  
  	/*
  	 * Fill in several fields of the softc structure:
--- 176,182 ----
  	 * Reset the card.
  	 */
  	outb(iobase + CMD_REG, Reset_CMD);
! 	DELAY(400);
  
  	/*
  	 * Fill in several fields of the softc structure:
***************
*** 256,262 ****
  	if_attach(ifp);
  	ether_ifattach(ifp);
  
! 	printf("ex%d: Intel EtherExpress Pro/10, address %6D, connector ", dev->id_unit, sc->arpcom.ac_enaddr, ":");
  	switch(sc->connector) {
  		case Conn_TPE: printf("TPE\n"); break;
  		case Conn_BNC: printf("BNC\n"); break;
--- 256,268 ----
  	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) {
! 		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, ":");
! 	}
  	switch(sc->connector) {
  		case Conn_TPE: printf("TPE\n"); break;
  		case Conn_BNC: printf("BNC\n"); break;
>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: msmith 
State-Changed-When: Fri Sep 12 01:31:06 PDT 1997 
State-Changed-Why:  
The suggested fix was committed. 



Responsible-Changed-From-To: freebsd-bugs->msmith 
Responsible-Changed-By: msmith 
Responsible-Changed-When: Fri Sep 12 01:31:06 PDT 1997 
Responsible-Changed-Why:  

Someone had to commit it. 8) 
>Unformatted:
