Subject: Re: A single 3Com 3c905C-TX has lots of different MAC addresses!
To: None <urban@boquist.net>
From: Masanori Kanaoka <kanaoka@ann.hi-ho.ne.jp>
List: port-i386
Date: 05/10/2001 11:57:16
Hi,

I have a same card and usually use with NetBSD-current(1.5S).
I try to use with 1.5.1_BETA kernel. I boot a few time. 
ex0 get MAC address correctly and it works fine for me below:

  NetBSD 1.5.1_BETA (LAB-1-5) #0: Thu May 10 10:01:09 JST 2001
      root@lab:/home/kana/work/syssrc/sys/arch/i386/compile/LAB-1-5
  cpu0: Intel Celeron (Mendocino) (686-class), 300.72 MHz
  total memory = 127 MB
  avail memory = 115 MB
  < ...snip... >
  ex0 at pci0 dev 11 function 0: 3Com 3c905C-TX 10/100 Ethernet with mngmt (rev. 0x74)
  ex0: interrupting at irq 5
  ex0: MAC address 00:01:02:49:7e:2b
  ukphy0 at ex0 phy 24: Generic IEEE 802.3u media interface
  ukphy0: OUI 0x001018, model 0x0017, rev. 6
  ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
  < ...snip... >

From: Urban Boquist <urban@boquist.net>
Subject: A single 3Com 3c905C-TX has lots of different MAC addresses!
Date: Wed, 09 May 2001 23:49:34 +0200

$ I have a 3c905C NIC which seems to have some problems getting the
$ correct MAC address. Here is a couple of boots:
$ 
$ groda# grep MAC /var/log/rtty/lan-gw
$ ex0: MAC address 00:04:76:26:a1:0b
$ ex0: MAC address 00:00:ad:ad:00:00
$ ex0: MAC address 00:00:ad:ad:00:00
$ ex0: MAC address 00:00:ad:ad:00:00
$ ex0: MAC address 00:00:00:00:00:00
$ ex0: MAC address 00:00:00:00:00:00
$ ex0: MAC address 00:04:76:26:a1:0b
$ ex0: MAC address ad:ad:ad:ad:00:00
$ ex0: MAC address 00:04:76:26:a1:0b
$ ex0: MAC address 00:04:76:26:a1:0b

I think your ex0 may need more delay in ex_read_rom() stuff.
How about increasing delay in ex_eeprom_busy()@sys/dev/ic/elinkxl.c? 

Regards!
---
  Masanori Kanaoka		kanaoka@ann.hi-ho.ne.jp

Index: elinkxl.c
===================================================================
RCS file: /ftp/cvs/syssrc/sys/dev/ic/elinkxl.c,v
retrieving revision 1.34.2.3
diff -u -r1.34.2.3 elinkxl.c
--- elinkxl.c   2001/03/20 17:25:14     1.34.2.3
+++ elinkxl.c   2001/05/10 01:35:56
@@ -1689,7 +1689,7 @@
 {
        bus_space_tag_t iot = sc->sc_iot;
        bus_space_handle_t ioh = sc->sc_ioh;
-       int i = 100;
+       int i = 1000;
 
        while (i--) {
                if (!(bus_space_read_2(iot, ioh, ELINK_W0_EEPROM_COMMAND) &