amd-xgbe-phy: Allow more time for Rx/Tx to become ready
authorLendacky, Thomas <Thomas.Lendacky@amd.com>
Fri, 1 Aug 2014 16:56:36 +0000 (11:56 -0500)
committerDavid S. Miller <davem@davemloft.net>
Sun, 3 Aug 2014 02:29:53 +0000 (19:29 -0700)
The current time range waiting for Rx/Tx to become ready can sometimes
be too short if a connection is not present.  Increase the number of
retries and the sleep to give a bit more time. Also, change level of
the message issued from _err to _dbg if Rx/Tx do not become ready
since the underlying logic will function as if no link is established
and retry eventually.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/amd-xgbe-phy.c

index 388e302..f3230ee 100644 (file)
@@ -95,7 +95,7 @@ MODULE_DESCRIPTION("AMD 10GbE (amd-xgbe) PHY driver");
 #define XNP_MP_FORMATTED               (1 << 13)
 #define XNP_NP_EXCHANGE                        (1 << 15)
 
-#define XGBE_PHY_RATECHANGE_COUNT      100
+#define XGBE_PHY_RATECHANGE_COUNT      500
 
 #ifndef MDIO_PMA_10GBR_PMD_CTRL
 #define MDIO_PMA_10GBR_PMD_CTRL                0x0096
@@ -411,7 +411,7 @@ static void amd_xgbe_phy_serdes_complete_ratechange(struct phy_device *phydev)
        /* Wait for Rx and Tx ready */
        wait = XGBE_PHY_RATECHANGE_COUNT;
        while (wait--) {
-               usleep_range(10, 20);
+               usleep_range(50, 75);
 
                status = XSIR0_IOREAD(priv, SIR0_STATUS);
                if (XSIR_GET_BITS(status, SIR0_STATUS, RX_READY) &&
@@ -419,7 +419,7 @@ static void amd_xgbe_phy_serdes_complete_ratechange(struct phy_device *phydev)
                        return;
        }
 
-       netdev_err(phydev->attached_dev, "SerDes rx/tx not ready (%#hx)\n",
+       netdev_dbg(phydev->attached_dev, "SerDes rx/tx not ready (%#hx)\n",
                   status);
 }