Please consider pulling from branch 'for-jeff' at
git://electric-eye.fr.zoreil.com/home/romieu/linux-2.6.git
to retrieve the patch below:

diff-tree 2371408c021f961b92fd2c42480cfddc9c6254f0 (from 
3ee68c4af3fd7228c1be63254b9f884614f9ebb2)
Author: Francois Romieu <[EMAIL PROTECTED]>
Date:   Sun Jan 29 00:49:09 2006 +0100

    r8169: prevent excessive busy-waiting
    
    The MII registers read/write function blindly busy waits for an
    amount of 1000 us (1 ms), then up to 200 ms. These functions are
    called from irq disabled context. Depending on the clock management,
    it triggers lost ticks events. Since the value is way above the
    standard delay required for mii register access, it strangely looks
    like a bandaid against posted writes.
    
    Fixes http://bugzilla.kernel.org/show_bug.cgi?id=5947
    
    Signed-off-by: Francois Romieu <[EMAIL PROTECTED]>

diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 2e1bed1..a81338b 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -484,13 +484,12 @@ static void mdio_write(void __iomem *ioa
        int i;
 
        RTL_W32(PHYAR, 0x80000000 | (RegAddr & 0xFF) << 16 | value);
-       udelay(1000);
 
-       for (i = 2000; i > 0; i--) {
+       for (i = 20; i > 0; i--) {
                /* Check if the RTL8169 has completed writing to the specified 
MII register */
                if (!(RTL_R32(PHYAR) & 0x80000000)) 
                        break;
-               udelay(100);
+               udelay(25);
        }
 }
 
@@ -499,15 +498,14 @@ static int mdio_read(void __iomem *ioadd
        int i, value = -1;
 
        RTL_W32(PHYAR, 0x0 | (RegAddr & 0xFF) << 16);
-       udelay(1000);
 
-       for (i = 2000; i > 0; i--) {
+       for (i = 20; i > 0; i--) {
                /* Check if the RTL8169 has completed retrieving data from the 
specified MII register */
                if (RTL_R32(PHYAR) & 0x80000000) {
                        value = (int) (RTL_R32(PHYAR) & 0xFFFF);
                        break;
                }
-               udelay(100);
+               udelay(25);
        }
        return value;
 }
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to