diff options
author | Steve Hodgson <shodgson@solarflare.com> | 2009-01-29 12:49:09 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-01-30 17:06:29 -0500 |
commit | 8b9dc8dd447cfe27c0214761ced22a8e4aa58f5e (patch) | |
tree | 2b7eb0523fe541647ca2e78f6c4c0742700c7959 /drivers/net/sfc/mdio_10g.c | |
parent | 2d18835d65b7433e7e6583f65395f8c01e7874af (diff) |
sfc: SFT9001: Fix speed reporting in 1G PHY loopback
Instead of disabling AN in loopback, just prevent restarting AN and
override the speed in sft9001_get_settings().
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sfc/mdio_10g.c')
-rw-r--r-- | drivers/net/sfc/mdio_10g.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/sfc/mdio_10g.c b/drivers/net/sfc/mdio_10g.c index f6a16428113d..7f09ab581945 100644 --- a/drivers/net/sfc/mdio_10g.c +++ b/drivers/net/sfc/mdio_10g.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include "net_driver.h" | 15 | #include "net_driver.h" |
16 | #include "mdio_10g.h" | 16 | #include "mdio_10g.h" |
17 | #include "boards.h" | 17 | #include "boards.h" |
18 | #include "workarounds.h" | ||
18 | 19 | ||
19 | int mdio_clause45_reset_mmd(struct efx_nic *port, int mmd, | 20 | int mdio_clause45_reset_mmd(struct efx_nic *port, int mmd, |
20 | int spins, int spintime) | 21 | int spins, int spintime) |
@@ -517,6 +518,9 @@ int mdio_clause45_set_settings(struct efx_nic *efx, | |||
517 | reg |= BMCR_ANENABLE | BMCR_ANRESTART; | 518 | reg |= BMCR_ANENABLE | BMCR_ANRESTART; |
518 | else | 519 | else |
519 | reg &= ~BMCR_ANENABLE; | 520 | reg &= ~BMCR_ANENABLE; |
521 | if (EFX_WORKAROUND_15195(efx) | ||
522 | && LOOPBACK_MASK(efx) & efx->phy_op->loopbacks) | ||
523 | reg &= ~BMCR_ANRESTART; | ||
520 | if (xnp) | 524 | if (xnp) |
521 | reg |= 1 << MDIO_AN_CTRL_XNP_LBN; | 525 | reg |= 1 << MDIO_AN_CTRL_XNP_LBN; |
522 | else | 526 | else |