From: Grischa Jacobs <grischa@bitclown.de>

I had the same messages about unknown PHY transceivers and very poor transfer
rates.  I figured that all but one of the transceivers had the status bit
MII_STAT_FAULT set.  Selecting that one solved my problems.

I posted this and the patch already a while ago but didn't get any response. 
It would be nice if a few people could check whether this fixes/breaks it for
them.

I just checked it with 2.6.6-rc3 and the problem is still there and gets
solved by the attached patch.


---

 25-akpm/drivers/net/sis900.c |    5 +++++
 1 files changed, 5 insertions(+)

diff -puN drivers/net/sis900.c~sis900-xcvr-fix drivers/net/sis900.c
--- 25/drivers/net/sis900.c~sis900-xcvr-fix	Wed May 19 14:51:16 2004
+++ 25-akpm/drivers/net/sis900.c	Wed May 19 14:51:16 2004
@@ -18,6 +18,7 @@
    preliminary Rev. 1.0 Jan. 18, 1998
    http://www.sis.com.tw/support/databook.htm
 
+               Jan.  7 2004 Grischa Jacobs - Skip mii's with MII_STAT_FAULT set
    Rev 1.08.07 Nov.  2 2003 Daniele Venzano <webvenza@libero.it> add suspend/resume support
    Rev 1.08.06 Sep. 24 2002 Mufasa Yang bug fix for Tx timeout & add SiS963 support
    Rev 1.08.05 Jun.  6 2002 Mufasa Yang bug fix for read_eeprom & Tx descriptor over-boundary
@@ -546,6 +547,10 @@ static int __init sis900_mii_probe (stru
 			/* the mii is not accessible, try next one */
 			continue;
 		
+		if (mii_status & MII_STAT_FAULT)
+			/* ignore mii with the fault bit set */
+			continue;
+
 		if ((mii_phy = kmalloc(sizeof(struct mii_phy), GFP_KERNEL)) == NULL) {
 			printk(KERN_INFO "Cannot allocate mem for struct mii_phy\n");
 			mii_phy = sis_priv->first_mii;

_