From nobody@FreeBSD.org  Wed Mar 27 23:13:13 2002
Return-Path: <nobody@FreeBSD.org>
Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21])
	by hub.freebsd.org (Postfix) with ESMTP id 4640C37B419
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 27 Mar 2002 23:13:13 -0800 (PST)
Received: (from nobody@localhost)
	by freefall.freebsd.org (8.11.6/8.11.6) id g2S7DDX69612;
	Wed, 27 Mar 2002 23:13:13 -0800 (PST)
	(envelope-from nobody)
Message-Id: <200203280713.g2S7DDX69612@freefall.freebsd.org>
Date: Wed, 27 Mar 2002 23:13:13 -0800 (PST)
From: Genya Sugiyama <g-sugiyama@nifty.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Bad mac address return from FNW-9803-T (ADMtek 983B) NIC
X-Send-Pr-Version: www-1.0

>Number:         36410
>Category:       kern
>Synopsis:       Bad mac address return from FNW-9803-T (ADMtek 983B) NIC
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    mbr
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 27 23:20:01 PST 2002
>Closed-Date:    Wed Feb 19 16:34:42 PST 2003
>Last-Modified:  Wed Feb 19 16:34:42 PST 2003
>Originator:     Genya Sugiyama
>Release:        FreeBSD 4.5-STABLE
>Organization:
>Environment:
FreeBSD ak73.home 4.5-STABLE FreeBSD 4.5-STABLE #13:
 Thu Mar 28 15:29:48 JST 2002 
    genya@ak73.home:/usr/export/src/sys/compile/AK73  i386
>Description:
I use FNW-9803-T ethernet card. (ADMtek 983B)
It released PLANEX COMMUNICATIONS INC.(TAIWAN) in japan.

it's dmesg was

dc0: <ADMtek AN985 10/100BaseTX> port 0xdc00-0xdcff \
     mem 0xe5810000-0xe58103ff irq 5 at device 10.0 on pci0
dc0: Ethernet address: 08:00:08:00:08:00

it's correct mac addres is 00:90:cc:xx:xx:xx

>How-To-Repeat:
      
>Fix:
I rewrited if_dc.c and if_dcreg.h.

*** /usr/src/sys/pci/if_dcreg.h.org	Tue Feb 26 22:35:49 2002
--- /usr/src/sys/pci/if_dcreg.h	Thu Mar 28 09:29:18 2002
***************
*** 77,82 ****
--- 77,84 ----
  #define DC_TYPE_PNIC		0xA	/* 82c168/82c169 PNIC I */
  #define DC_TYPE_CONEXANT        0xC     /* Conexant LANfinity RS7112 */
  
+ #define DC_TYPE_AN983		0xFF	/* ADMtek AN983B CentaurB */
+ 
  #define DC_IS_MACRONIX(x)			\
  	(x->dc_type == DC_TYPE_98713 ||		\
  	 x->dc_type == DC_TYPE_98713A ||	\
***************
*** 84,89 ****
--- 86,92 ----
  
  #define DC_IS_ADMTEK(x)				\
  	(x->dc_type == DC_TYPE_AL981 ||		\
+ 	 x->dc_type == DC_TYPE_AN983 ||		\
  	 x->dc_type == DC_TYPE_AN985)
  
  #define DC_IS_INTEL(x)		(x->dc_type == DC_TYPE_21143)


*** /usr/src/sys/pci/if_dc.c.org	Tue Feb 26 22:35:49 2002
--- /usr/src/sys/pci/if_dc.c	Thu Mar 28 09:27:06 2002
***************
*** 1669,1675 ****
  {
  	int			s, tmp = 0;
  	u_char			eaddr[ETHER_ADDR_LEN];
! 	u_int32_t		command;
  	struct dc_softc		*sc;
  	struct ifnet		*ifp;
  	u_int32_t		revision;
--- 1669,1675 ----
  {
  	int			s, tmp = 0;
  	u_char			eaddr[ETHER_ADDR_LEN];
! 	u_int32_t		command, reg;
  	struct dc_softc		*sc;
  	struct ifnet		*ifp;
  	u_int32_t		revision;
***************
*** 1775,1781 ****
  		break;
  	case DC_DEVICEID_AN985:
  	case DC_DEVICEID_EN2242:
! 		sc->dc_type = DC_TYPE_AN985;
  		sc->dc_flags |= DC_TX_USE_TX_INTR;
  		sc->dc_flags |= DC_TX_ADMTEK_WAR;
  		sc->dc_pmode = DC_PMODE_MII;
--- 1775,1791 ----
  		break;
  	case DC_DEVICEID_AN985:
  	case DC_DEVICEID_EN2242:
! 		reg = pci_read_config(dev, DC_PCI_CSID, 4);
! 		/* printf("CSID=%08x\n", reg); */
! 		switch (reg) {
! 		case 0x980314ea: /* FNW-9803-T */
! 		case 0xa11b1259: /* Corega */
! 			sc->dc_type = DC_TYPE_AN983;
! 			break;
! 		default:
! 			sc->dc_type = DC_TYPE_AN985;
! 			break;
! 		}
  		sc->dc_flags |= DC_TX_USE_TX_INTR;
  		sc->dc_flags |= DC_TX_ADMTEK_WAR;
  		sc->dc_pmode = DC_PMODE_MII;
***************
*** 1900,1905 ****
--- 1910,1916 ----
  		dc_read_eeprom(sc, (caddr_t)&eaddr, DC_EE_NODEADDR, 3, 0);
  		break;
  	case DC_TYPE_AL981:
+ 	case DC_TYPE_AN983:
  	case DC_TYPE_AN985:
  		dc_read_eeprom(sc, (caddr_t)&eaddr, DC_AL_EE_NODEADDR, 3, 0);
  		break;

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->mbr 
Responsible-Changed-By: mbr 
Responsible-Changed-When: Thu Jan 30 15:51:13 PST 2003 
Responsible-Changed-Why:  
I'll look at this. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=36410 
State-Changed-From-To: open->feedback 
State-Changed-By: mbr 
State-Changed-When: Sat Feb 1 03:33:57 PST 2003 
State-Changed-Why:  
Warner Losh has committed a fix for this issue about 4 month 
ago. Can you confirm that yout card works now correctly ? 

http://www.freebsd.org/cgi/query-pr.cgi?pr=36410 
State-Changed-From-To: feedback->closed 
State-Changed-By: mbr 
State-Changed-When: Wed Feb 19 16:34:15 PST 2003 
State-Changed-Why:  
Fixed in CURRENT and STABLE. Feedback timout. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=36410 
>Unformatted:
