From owner-freebsd-mobile Fri Jun 2 13:43:47 2000 Delivered-To: freebsd-mobile@freebsd.org Received: from gloworm.Stanford.EDU (gloworm.Stanford.EDU [171.64.99.46]) by hub.freebsd.org (Postfix) with ESMTP id 98CE737B6A6 for ; Fri, 2 Jun 2000 13:43:44 -0700 (PDT) (envelope-from yergeau@gloworm.Stanford.EDU) Received: from localhost (yergeau@localhost) by gloworm.Stanford.EDU (8.9.3/8.9.3) with ESMTP id NAA20494; Fri, 2 Jun 2000 13:43:42 -0700 (PDT) Message-Id: <200006022043.NAA20494@gloworm.Stanford.EDU> To: freebsd-mobile@freebsd.org Cc: yergeau@gloworm.Stanford.EDU Subject: Re: 4.0-RELEASE, Linksys PCMPC100 V2, incorrect hardware address In-reply-to: Your message of "Fri, 02 Jun 2000 10:34:45 MST." <200006021734.KAA17964@gloworm.Stanford.EDU> Date: Fri, 02 Jun 2000 13:43:42 -0700 From: Dan Yergeau Sender: owner-freebsd-mobile@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org I think that I found the problem. I've filed a PR on this. /sys/dev/ed/if_ed.c:ed_probe_Novell_generic tries to identify if the card is NE2000, NE1000, or Linksys by writing a test pattern into the card's memory at 8k. This fails for the V2 version of the Linksys PCMPC100, so ed_get_Linksys doesn't get called to extract the MAC in the special way needed for the Linksys (DL10019C). When I change that conditional in if_ed.c to always succeed (not a real fix, but...), ================================================================= *************** *** 1013,1019 **** ed_pio_writemem(sc, test_pattern, 8192, sizeof(test_pattern)); ed_pio_readmem(sc, 8192, test_buffer, sizeof(test_pattern)); ! if (bcmp(test_pattern, test_buffer, sizeof(test_pattern)) == 0) { /* could be either an NE1000 or a Linksys ethernet controller */ linksys = ed_get_Linksys(sc); if (linksys) { --- 1022,1029 ---- ed_pio_writemem(sc, test_pattern, 8192, sizeof(test_pattern)); ed_pio_readmem(sc, 8192, test_buffer, sizeof(test_pattern)); ! /*if (bcmp(test_pattern, test_buffer, sizeof(test_pattern)) == 0) {*/ ! if (1) { /* could be either an NE1000 or a Linksys ethernet controller */ linksys = ed_get_Linksys(sc); if (linksys) { ================================================================= the correct MAC address is now extracted and the card is correctly identified as a "Linksys" instead of a "NE2000". ed0: address 00:e0:98:80:15:df, type Linksys (16 bit) Dan To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-mobile" in the body of the message