From: "Timo Teräs" <timo.teras@iki.fi>
To: "Phil Sutter" <phil@nwl.cc>,
"françois romieu" <romieu@fr.zoreil.com>,
netdev@vger.kernel.org
Subject: [PATCH] Re: still having r8169 woes with XID 18000000
Date: Sat, 05 Jun 2010 10:39:55 +0300 [thread overview]
Message-ID: <4C09FF4B.4050601@iki.fi> (raw)
In-Reply-To: <4C09611B.2090805@iki.fi>
On 06/04/2010 11:24 PM, Timo Teräs wrote:
> On 06/04/2010 08:31 PM, Timo Teräs wrote:
> r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
> r8169 0000:00:09.0: PCI->APIC IRQ transform: INT A -> IRQ 18
> r8169 0000:00:09.0: no PCI Express capability
> eth0: RTL8169sc/8110sc at 0xf835c000, 00:30:18:a6:2b:6c, XID 18000000 IRQ 18
> r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
> r8169 0000:00:0b.0: PCI->APIC IRQ transform: INT A -> IRQ 19
> r8169 0000:00:0b.0: no PCI Express capability
> eth1: RTL8169sc/8110sc at 0xf8360000, 00:30:18:a6:2b:6d, XID 18000000 IRQ 19
> r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
> r8169 0000:00:0c.0: PCI->APIC IRQ transform: INT A -> IRQ 16
> r8169 0000:00:0c.0: no PCI Express capability
> eth2: RTL8169sc/8110sc at 0xf8364000, 00:30:18:a6:2b:6e, XID 18000000 IRQ 16
> r8169: mdio_write(f8364000, 0x00000003, 0000000a1) required 2000 cycles
> r8169: mdio_write(f8364000, 0x00000000, 000001000) required 2000 cycles
> r8169: mdio_write(f8364000, 0x00000000, 00000a0ff) required 2000 cycles
> r8169: mdio_write(f8364000, 0x00000014, 00000fb54) required 2000 cycles
>
> And eth2 was not working. Reloading the module gave a lot of other
> mdio_write and mdio_read errors.
>
> It seems to be pretty random when the errors occur, but that's the
> reason why the NIC stops working: mdio_write() fails (one or more times)
> at some crucial point of the board specific phy config code resulting in
> bad state.
>
> Any ideas how to debug this further?
Ok, I compared Realtek's and the in-tree driver. The only essential
difference is that Realtek driver uses udelay(100) in mdio_write()'s
busy polling loop where as the in-tree uses udelay(25). And that seems
to be the magic difference! Using udelay(100) fixes this!
I'm guessing that the phy needs slight delay between consecutive
mdio_write's even if it has advertised that the write has been
completed. And yes, just adding a small delay in the end of mdio_write
does seem to work too.
Francois, you think the below patch is ok? Should I send it as properly
formatted commit?
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 217e709..6db62bf 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -559,6 +559,7 @@ static void mdio_write(void __iomem *ioaddr,
break;
udelay(25);
}
+ udelay(25);
}
static int mdio_read(void __iomem *ioaddr, int reg_addr)
next prev parent reply other threads:[~2010-06-05 7:39 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-04 12:10 still having r8169 woes with XID 18000000 Timo Teräs
2010-06-04 12:36 ` Phil Sutter
2010-06-04 13:02 ` Timo Teräs
2010-06-04 13:43 ` Phil Sutter
2010-06-04 17:31 ` Timo Teräs
2010-06-04 20:24 ` Timo Teräs
2010-06-05 7:39 ` Timo Teräs [this message]
2010-06-05 9:02 ` [PATCH] " David Miller
2010-06-05 9:13 ` Eric Dumazet
2010-06-05 9:21 ` Timo Teräs
2010-06-05 10:21 ` [PATCH] r8169: fix random mdio_write failures Timo Teräs
2010-06-05 12:41 ` Francois Romieu
2010-06-06 22:39 ` David Miller
2010-06-07 9:26 ` hayeswang
2010-06-07 21:51 ` Francois Romieu
2010-06-08 6:06 ` Timo Teräs
2010-06-08 6:26 ` Francois Romieu
2010-06-09 2:47 ` hayeswang
2010-06-09 5:22 ` [PATCH] r8169: fix mdio_read and update mdio_write according to hw specs Timo Teräs
2010-06-09 6:18 ` Francois Romieu
2010-06-10 0:32 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C09FF4B.4050601@iki.fi \
--to=timo.teras@iki.fi \
--cc=netdev@vger.kernel.org \
--cc=phil@nwl.cc \
--cc=romieu@fr.zoreil.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.