lkml.org 
[lkml]   [2004]   [May]   [19]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateWed, 19 May 2004 08:57:27 +0200
FromGrischa Jacobs <>
SubjectRe: [PATCH] Sis900 bug fixes 0/4
Dominik Karall wrote:
> I applied all 4 patches, but the wrong PHY transceiver is used now again.
> Here is the dmesg output:
> 
> sis900.c: v1.08.07 11/02/2003
> eth0: Unknown PHY transceiver found at address 0.
> eth0: Realtek RTL8201 PHY transceiver found at address 1.
> eth0: Unknown PHY transceiver found at address 2.
<snip>
> eth0: Unknown PHY transceiver found at address 31.
> eth0: Using transceiver found at address 31 as default
> eth0: SiS 900 PCI Fast Ethernet at 0xdc00, IRQ 19, 00:10:dc:8f:a9:ac.
> 
> greets,
> dominik
> -

Hi

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.


Grischa
--- linux-2.6.3/drivers/net/sis900.c	2004-03-08 20:50:05.000000000 +0100
+++ linux-2.6.3-bc/drivers/net/sis900.c	2004-02-20 14:56:00.000000000 +0100
@@ -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
@@ -541,6 +542,10 @@
 			/* 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;
\
 
 \ /
  Last update: 2005-03-22 14:03    [from the cache]
©2003-2008