diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2010-01-13 13:59:13 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-01-14 04:12:47 +0300 |
commit | f3766c26a5d00189e5c0965c66f01956d15a92d6 (patch) | |
tree | 2cab8ee42ef7479d41f660ba5f1fcfd4d8706f08 | |
parent | 55029c1d65158aea9672c5dfadb43a57f23e3100 (diff) | |
download | linux-f3766c26a5d00189e5c0965c66f01956d15a92d6.tar.xz |
sfc: Fix conditions for MDIO self-test
The MDIO self-test should not be run on boards without an MDIO PHY,
such as SFN5122F-R3 and later revisions. It should also not try to
address a specific MMD in an MDIO clause 22 PHY. Check the
mode_support field to decide which mode to use, if any.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/sfc/selftest.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/sfc/selftest.c index af3933579790..250c8827b842 100644 --- a/drivers/net/sfc/selftest.c +++ b/drivers/net/sfc/selftest.c @@ -79,10 +79,14 @@ struct efx_loopback_state { static int efx_test_mdio(struct efx_nic *efx, struct efx_self_tests *tests) { int rc = 0; - int devad = __ffs(efx->mdio.mmds); + int devad; u16 physid1, physid2; - if (efx->phy_type == PHY_TYPE_NONE) + if (efx->mdio.mode_support & MDIO_SUPPORTS_C45) + devad = __ffs(efx->mdio.mmds); + else if (efx->mdio.mode_support & MDIO_SUPPORTS_C22) + devad = MDIO_DEVAD_NONE; + else return 0; mutex_lock(&efx->mac_lock); |