Skip to content

Commit

Permalink
amd-xgbe-phy: Allow more time for Rx/Tx to become ready
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Lendacky, Thomas authored and David S. Miller committed Aug 3, 2014
1 parent 8c43a2c commit 1fa1f2e
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions drivers/net/phy/amd-xgbe-phy.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -411,15 +411,15 @@ 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) &&
XSIR_GET_BITS(status, SIR0_STATUS, TX_READY))
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);
}

Expand Down

0 comments on commit 1fa1f2e

Please sign in to comment.