Shouldn't the e100 driver wait for PHY reset to complete before
proceeding in e100_set_settings()?

I'm asking because the interface (82551) sometimes ends up in loopback
when I try to set AUTONEG.

I'm thinking something like this patch.

Anders

--- linux-2.6.18.orig/drivers/net/e100.c        2006-09-20 05:42:06.000000000 
+0200
+++ linux-2.6.18/drivers/net/e100.c     2006-10-17 17:43:47.000000000 +0200
@@ -2201,8 +2201,16 @@ static int e100_set_settings(struct net_
{
        struct nic *nic = netdev_priv(netdev);
        int err;
+       int counter = 50;

        mdio_write(netdev, nic->mii.phy_id, MII_BMCR, BMCR_RESET);
+
+       /* wait for possibly (ouch) 500ms */
+       while (mdio_read(netdev, nic->mii.phy_id, MII_BMCR) & BMCR_RESET) {
+               msleep(10);
+               if (!--counter) break;
+       }
+
        err = mii_ethtool_sset(&nic->mii, cmd);
        e100_exec_cb(nic, NULL, e100_configure);

-
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