Subject: kern/34845: re(4) fixes for 8139C+
To: None <,,>
From: None <>
List: netbsd-bugs
Date: 10/18/2006 03:10:01
>Number:         34845
>Category:       kern
>Synopsis:       re(4) fixes for 8139C+
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 18 03:10:00 +0000 2006
>Originator:     Brian A. Seklecki
>Release:        -current
Collaborative Fusion, Inc.
NetBSD conference 4.99.3 NetBSD 4.99.3 (CFRDMDROOT.MCACPI-$Revision blah) #2: Tue Oct 17 21:44:07 EDT 2006 root@thunderwing:/blah i386
From part of an e-mail thread to

I'm tracking down a very similar bug with an SBC - An Axiomtek SBC83672 Ver.C13.10.0.  My platform is netbsd-3, but I just tried -current                               to see if recent rtl8169.c changes fix it.  No dice.                                                    
 FreeBSD 6.1 panics at probe of re0 as you've posted.  With NetBSD, re0                                  
 probes then fails the diagnostic function, then detatches.  re1, re2,                                   
 re3 all then sucsessfully probe on my system, but then they show no                                     
 media status and tcpdump(8)/arp(8) show no activity.  They're dead in                                   
 the water.                                                                                              

 There has also been some mention of the errors below on NetBSD and   
  OpenBSD  probably because of the bitrot/driver drift:                                                            

  I see a 8139C+ fix was commited 5 weeks ago by yongar@.  Based on                                  
  some other threads I've been reading on "8139C+ Watchdog Timeouts" and                                  
  "Diag failed, failing to attach" related messages, I imagine FreeBSD 
  has this covered.                                         

> re0 at pci0 dev 16 function 0: RealTek 8139C+ 10/100BaseTX
> re0: interrupting at irq 5
> re0: Ethernet address 00:60:e0:e1:3e:31 
> re0: using 64 tx descriptors
> ukphy0 at re0 phy 0: Generic IEEE 802.3u media interface
> ukphy0: OUI 0x000000, model 0x0000, rev. 0
> ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
> re: diagnostic failed, failed to receive packet in loopback mode
> re0: attach aborted due to hardware diag failure
> ukphy0 detached 

From what I've been told by Pyun YongHyeon <>  , there are three destinct problems here. 

1) The diag loop doesn't apply to the 8139C+, just the vintage 8139 when a 64bit card is in a 32bit slot

2) There are 8139C+ register bits that are non-homegenous with the rest of the product line for which special conditions must be included.

3) ukphy is attaching instead of rgephy(4) or rlphy(4).
Build a custom CF booting NetBSD -current kernel and load it on an Axiomtek BC83672 Ver.C13.10.0.
I will submit a patch as soon as I have one.