1
0
Fork 0

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>
wifi-calibration
Ben Hutchings 2010-01-13 10:59:13 +00:00 committed by David S. Miller
parent 55029c1d65
commit f3766c26a5
1 changed files with 6 additions and 2 deletions

View File

@ -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);