lkml.org 
[lkml]   [2006]   [Mar]   [29]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateTue, 28 Mar 2006 23:01:32 -0800
FromAndrew Morton <>
SubjectRe: Correction: 2.6.16-git12 killed networking -- 3c900 card
Pete Clements <clem@clem.clem-digital.net> wrote:
>
> Quoting Steffen Klassert
>   > >   Had several of these with git11
>   > >   NETDEV WATCHDOG: eth0: transmit timed out
>   > 
>   > Is this for sure that these messages occured first time with git11?
>   > There were no changes in the 3c59x driver between git10 and git11.
>   > 
> Tried 2.6.15 and could not get a timed out condition.  Looks like
> that defect is between 15 and 16 in my case.  
> 
> Be glad to do any testing that I can.

If it's noether of those then I'd expect the problem relates to the
conversion to use the standard mii layer.  Possibly we need to re-port some
mdo reading oddity into 3c59x.c:mdio_read(), but it would take some effort
to work out which one.

You could try this shot-in-the-dark:


diff -puN drivers/net/3c59x.c~revert-3c59x-avoid-blindly-reading-link-status-twice drivers/net/3c59x.c
--- devel/drivers/net/3c59x.c~revert-3c59x-avoid-blindly-reading-link-status-twice	2006-03-28 22:51:52.000000000 -0800
+++ devel-akpm/drivers/net/3c59x.c	2006-03-28 23:00:47.000000000 -0800
@@ -3196,7 +3196,7 @@ static void mdio_sync(void __iomem *ioad
 	}
 }
 
-static int mdio_read(struct net_device *dev, int phy_id, int location)
+static int __mdio_read(struct net_device *dev, int phy_id, int location)
 {
 	int i;
 	struct vortex_private *vp = netdev_priv(dev);
@@ -3227,6 +3227,13 @@ static int mdio_read(struct net_device *
 	return retval & 0x20000 ? 0xffff : retval>>1 & 0xffff;
 }
 
+static int mdio_read(struct net_device *dev, int phy_id, int location)
+{
+	if (location == MII_BMSR)
+		__mdio_read(dev, phy_id, location);
+	return __mdio_read(dev, phy_id, location);
+}
+
 static void mdio_write(struct net_device *dev, int phy_id, int location, int value)
 {
 	struct vortex_private *vp = netdev_priv(dev);
_
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-03-29 09:04    [from the cache]
©2003-2008