Skip to content

Commit

Permalink
sfc: Do not read STAT1.FAULT in efx_mdio_check_mmd()
Browse files Browse the repository at this point in the history
This field does not exist in all MMDs we want to check, and all
callers allow it to be set (fault_fatal = 0).

Remove the loopback condition, as STAT2.DEVPRST should be valid
regardless of any fault.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
  • Loading branch information
Ben Hutchings committed Feb 28, 2011
1 parent e5f0fd2 commit a461103
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 31 deletions.
32 changes: 5 additions & 27 deletions drivers/net/sfc/mdio_10g.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,10 @@ int efx_mdio_reset_mmd(struct efx_nic *port, int mmd,
return spins ? spins : -ETIMEDOUT;
}

static int efx_mdio_check_mmd(struct efx_nic *efx, int mmd, int fault_fatal)
static int efx_mdio_check_mmd(struct efx_nic *efx, int mmd)
{
int status;

if (LOOPBACK_INTERNAL(efx))
return 0;

if (mmd != MDIO_MMD_AN) {
/* Read MMD STATUS2 to check it is responding. */
status = efx_mdio_read(efx, mmd, MDIO_STAT2);
Expand All @@ -68,20 +65,6 @@ static int efx_mdio_check_mmd(struct efx_nic *efx, int mmd, int fault_fatal)
}
}

/* Read MMD STATUS 1 to check for fault. */
status = efx_mdio_read(efx, mmd, MDIO_STAT1);
if (status & MDIO_STAT1_FAULT) {
if (fault_fatal) {
netif_err(efx, hw, efx->net_dev,
"PHY MMD %d reporting fatal"
" fault: status %x\n", mmd, status);
return -EIO;
} else {
netif_dbg(efx, hw, efx->net_dev,
"PHY MMD %d reporting status"
" %x (expected)\n", mmd, status);
}
}
return 0;
}

Expand Down Expand Up @@ -130,8 +113,7 @@ int efx_mdio_wait_reset_mmds(struct efx_nic *efx, unsigned int mmd_mask)
return rc;
}

int efx_mdio_check_mmds(struct efx_nic *efx,
unsigned int mmd_mask, unsigned int fatal_mask)
int efx_mdio_check_mmds(struct efx_nic *efx, unsigned int mmd_mask)
{
int mmd = 0, probe_mmd, devs1, devs2;
u32 devices;
Expand Down Expand Up @@ -161,13 +143,9 @@ int efx_mdio_check_mmds(struct efx_nic *efx,

/* Check all required MMDs are responding and happy. */
while (mmd_mask) {
if (mmd_mask & 1) {
int fault_fatal = fatal_mask & 1;
if (efx_mdio_check_mmd(efx, mmd, fault_fatal))
return -EIO;
}
if ((mmd_mask & 1) && efx_mdio_check_mmd(efx, mmd))
return -EIO;
mmd_mask = mmd_mask >> 1;
fatal_mask = fatal_mask >> 1;
mmd++;
}

Expand Down Expand Up @@ -337,7 +315,7 @@ int efx_mdio_test_alive(struct efx_nic *efx)
"no MDIO PHY present with ID %d\n", efx->mdio.prtad);
rc = -EINVAL;
} else {
rc = efx_mdio_check_mmds(efx, efx->mdio.mmds, 0);
rc = efx_mdio_check_mmds(efx, efx->mdio.mmds);
}

mutex_unlock(&efx->mac_lock);
Expand Down
3 changes: 1 addition & 2 deletions drivers/net/sfc/mdio_10g.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@ extern int efx_mdio_reset_mmd(struct efx_nic *efx, int mmd,
int spins, int spintime);

/* As efx_mdio_check_mmd but for multiple MMDs */
int efx_mdio_check_mmds(struct efx_nic *efx,
unsigned int mmd_mask, unsigned int fatal_mask);
int efx_mdio_check_mmds(struct efx_nic *efx, unsigned int mmd_mask);

/* Check the link status of specified mmds in bit mask */
extern bool efx_mdio_links_ok(struct efx_nic *efx, unsigned int mmd_mask);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/sfc/tenxpress.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ static int tenxpress_phy_init(struct efx_nic *efx)
if (rc < 0)
return rc;

rc = efx_mdio_check_mmds(efx, TENXPRESS_REQUIRED_DEVS, 0);
rc = efx_mdio_check_mmds(efx, TENXPRESS_REQUIRED_DEVS);
if (rc < 0)
return rc;
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/sfc/txc43128_phy.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ static int txc_reset_phy(struct efx_nic *efx)
goto fail;

/* Check that all the MMDs we expect are present and responding. */
rc = efx_mdio_check_mmds(efx, TXC_REQUIRED_DEVS, 0);
rc = efx_mdio_check_mmds(efx, TXC_REQUIRED_DEVS);
if (rc < 0)
goto fail;

Expand Down

0 comments on commit a461103

Please sign in to comment.