Date: Wed, 27 Mar 2002 23:13:13 -0800 (PST) From: Genya Sugiyama <g-sugiyama@nifty.com> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/36410: Bad mac address return from FNW-9803-T (ADMtek 983B) NIC Message-ID: <200203280713.g2S7DDX69612@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 36410
>Category: kern
>Synopsis: Bad mac address return from FNW-9803-T (ADMtek 983B) NIC
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Mar 27 23:20:01 PST 2002
>Closed-Date:
>Last-Modified:
>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:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200203280713.g2S7DDX69612>
