Skip site navigation (1)Skip section navigation (2)
Date:      Fri,  2 Jun 2000 13:42:40 -0700 (PDT)
From:      yergeau@gloworm.stanford.edu
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   i386/18970: Linksys PCMPC100 *V2* gets incorrect hardware address
Message-ID:  <20000602204240.6CCE737B782@hub.freebsd.org>

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


>Number:         18970
>Category:       i386
>Synopsis:       Linksys PCMPC100 *V2* gets incorrect hardware address
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jun 02 13:50:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Dan Yergeau
>Release:        4.0
>Organization:
>Environment:
FreeBSD ritter.Stanford.EDU 4.0-RELEASE FreeBSD 4.0-RELEASE #3: Fri Jun  2 12:19:41 PDT 2000     troot@ritter.Stanford.EDU:/usr/src/sys/compile/RITTER  i386
>Description:
Version 2 of this PCMCIA card is incorrectly identified as a NE2000,
and the incorrect MAC address is extracted.

  ed0: address 01:d4:ff:03:00:20, type NE2000 (16 bit)

The MAC address should be 00:e0:98:80:15:df (as printed on the card
and reported by Windoze).


>How-To-Repeat:

>Fix:
/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 address in the special way needed for the Linksys (DL10019C).

When I change that conditional in if_ed.c to always succeed, 

=================================================================
***************
*** 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 not extracted and the card is 
identified as a "Linksys" instead of a "NE2000".

  ed0: address 00:e0:98:80:15:df, type Linksys (16 bit)

Note that I'm not suggesting the above diff as the fix, but it
does point out where the driver needs to be fixed.


>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?20000602204240.6CCE737B782>