From: Ben Hutchings <bhutchings@solarflare.com>
To: David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org, linux-net-drivers@solarflare.com
Subject: [PATCH 01/20] sfc: SFT9001: Include non-breaking cable diagnostics in online self-tests
Date: Thu, 29 Jan 2009 19:15:21 +0000 [thread overview]
Message-ID: <1233256521.3656.12.camel@achroite> (raw)
In-Reply-To: <1233256358.3656.9.camel@achroite>
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
drivers/net/sfc/tenxpress.c | 45 ++++++++++++++++++++++--------------------
1 files changed, 24 insertions(+), 21 deletions(-)
diff --git a/drivers/net/sfc/tenxpress.c b/drivers/net/sfc/tenxpress.c
index 9ecb77d..9f5c8b8 100644
--- a/drivers/net/sfc/tenxpress.c
+++ b/drivers/net/sfc/tenxpress.c
@@ -708,12 +708,10 @@ static int sft9001_run_tests(struct efx_nic *efx, int *results, unsigned flags)
{
struct ethtool_cmd ecmd;
int phy_id = efx->mii.phy_id;
- int rc = 0, rc2, i, res_reg;
+ int rc = 0, rc2, i, ctrl_reg, res_reg;
- if (!(flags & ETH_TEST_FL_OFFLINE))
- return 0;
-
- efx->phy_op->get_settings(efx, &ecmd);
+ if (flags & ETH_TEST_FL_OFFLINE)
+ efx->phy_op->get_settings(efx, &ecmd);
/* Initialise cable diagnostic results to unknown failure */
for (i = 1; i < 9; ++i)
@@ -721,18 +719,22 @@ static int sft9001_run_tests(struct efx_nic *efx, int *results, unsigned flags)
/* Run cable diagnostics; wait up to 5 seconds for them to complete.
* A cable fault is not a self-test failure, but a timeout is. */
+ ctrl_reg = ((1 << CDIAG_CTRL_IMMED_LBN) |
+ (CDIAG_CTRL_LEN_METRES << CDIAG_CTRL_LEN_UNIT_LBN));
+ if (flags & ETH_TEST_FL_OFFLINE) {
+ /* Break the link in order to run full diagnostics. We
+ * must reset the PHY to resume normal service. */
+ ctrl_reg |= (1 << CDIAG_CTRL_BRK_LINK_LBN);
+ }
mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD,
- PMA_PMD_CDIAG_CTRL_REG,
- (1 << CDIAG_CTRL_IMMED_LBN) |
- (1 << CDIAG_CTRL_BRK_LINK_LBN) |
- (CDIAG_CTRL_LEN_METRES << CDIAG_CTRL_LEN_UNIT_LBN));
+ PMA_PMD_CDIAG_CTRL_REG, ctrl_reg);
i = 0;
while (mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD,
PMA_PMD_CDIAG_CTRL_REG) &
(1 << CDIAG_CTRL_IN_PROG_LBN)) {
if (++i == 50) {
rc = -ETIMEDOUT;
- goto reset;
+ goto out;
}
msleep(100);
}
@@ -757,17 +759,18 @@ static int sft9001_run_tests(struct efx_nic *efx, int *results, unsigned flags)
results[5 + i] = len_reg;
}
- /* We must reset to exit cable diagnostic mode. The BIST will
- * also run when we do this. */
-reset:
- rc2 = tenxpress_special_reset(efx);
- results[0] = rc2 ? -1 : 1;
- if (!rc)
- rc = rc2;
-
- rc2 = efx->phy_op->set_settings(efx, &ecmd);
- if (!rc)
- rc = rc2;
+out:
+ if (flags & ETH_TEST_FL_OFFLINE) {
+ /* Reset, running the BIST and then resuming normal service. */
+ rc2 = tenxpress_special_reset(efx);
+ results[0] = rc2 ? -1 : 1;
+ if (!rc)
+ rc = rc2;
+
+ rc2 = efx->phy_op->set_settings(efx, &ecmd);
+ if (!rc)
+ rc = rc2;
+ }
return rc;
}
--
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
next prev parent reply other threads:[~2009-01-29 19:15 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-29 19:12 [PATCH 00/20] sfc: Fixes and new PHY support for 2.6.29 Ben Hutchings
2009-01-29 19:15 ` Ben Hutchings [this message]
2009-01-29 19:16 ` [PATCH 02/20] sfc: Fix test for MDIO read failure Ben Hutchings
2009-01-29 19:17 ` [PATCH 03/20] sfc: SFT9001: Enable robust link training Ben Hutchings
2009-01-29 19:23 ` Ben Hutchings
2009-01-29 19:17 ` [PATCH 04/20] sfc: SFX7101: Remove workaround for bad " Ben Hutchings
2009-01-29 19:23 ` Ben Hutchings
2009-01-29 19:17 ` [PATCH 05/20] sfc: SFT9001/SFN4111T: Check PHY boot status during board initialisation Ben Hutchings
2009-01-29 19:17 ` [PATCH 06/20] sfc: SFT9001: Fix speed reporting in 1G PHY loopback Ben Hutchings
2009-01-29 19:18 ` [PATCH 07/20] sfc: SFN4111T: Fix GPIO sharing between I2C and FLASH_CFG_1 Ben Hutchings
2009-01-29 19:19 ` [PATCH 08/20] sfc: Fix post-reset MAC selection Ben Hutchings
2009-01-29 19:19 ` [PATCH 09/20] sfc: Reinitialise the PHY completely in case of a PHY or NIC reset Ben Hutchings
2009-01-29 19:19 ` [PATCH 10/20] sfc: Test for PHYXS faults whenever we cannot test link state bits Ben Hutchings
2009-01-29 19:19 ` [PATCH 11/20] sfc: Update board info for hardware monitor on SFN4111T-R5 and later Ben Hutchings
2009-01-29 19:20 ` [PATCH 12/20] sfc: SFT9001: Always enable XNP exchange on SFT9001 rev B Ben Hutchings
2009-01-29 19:20 ` [PATCH 13/20] sfc: SFX7101/SFT9001: Fix AN advertisements Ben Hutchings
2009-01-29 19:20 ` [PATCH 14/20] sfc: Remove "XFP" from log messages that are not specific to XFP Ben Hutchings
2009-01-29 19:20 ` [PATCH 15/20] sfc: Fix reporting of PHY id Ben Hutchings
2009-01-29 19:21 ` [PATCH 16/20] sfc: Add support for QT2025C PHY Ben Hutchings
2009-01-29 19:21 ` [PATCH 17/20] sfc: Delete unused efx_blinker::led_num field Ben Hutchings
2009-01-29 19:21 ` [PATCH 18/20] sfc: Clean up LED control Ben Hutchings
2009-01-29 19:21 ` [PATCH 19/20] sfc: Add support for SFN4112F SFP+ reference design Ben Hutchings
2009-01-29 19:22 ` [PATCH 20/20] sfc: Replace stats_enabled flag with a disable count Ben Hutchings
2009-01-29 23:26 ` [PATCH 00/20] sfc: Fixes and new PHY support for 2.6.29 David Miller
2009-01-30 1:05 ` Ben Hutchings
2009-01-30 1:08 ` David Miller
2009-01-30 3:48 ` [PATCH 01/11] sfc: SFT9001: Enable robust link training Ben Hutchings
2009-01-30 22:09 ` David Miller
2009-01-31 0:04 ` Ben Hutchings
2009-01-31 0:02 ` David Miller
2009-01-30 3:48 ` [PATCH 02/11] sfc: SFX7101: Remove workaround for bad " Ben Hutchings
2009-01-30 3:49 ` [PATCH 03/11] sfc: SFT9001: Fix speed reporting in 1G PHY loopback Ben Hutchings
2009-01-30 3:49 ` [PATCH 04/11] sfc: SFN4111T: Fix GPIO sharing between I2C and FLASH_CFG_1 Ben Hutchings
2009-01-30 3:49 ` [PATCH 05/11] sfc: Fix post-reset MAC selection Ben Hutchings
2009-01-30 3:50 ` [PATCH 06/11] sfc: Reinitialise the PHY completely in case of a PHY or NIC reset Ben Hutchings
2009-01-30 3:51 ` [PATCH 07/11] sfc: Test for PHYXS faults whenever we cannot test link state bits Ben Hutchings
2009-01-30 3:51 ` [PATCH 08/11] sfc: Update board info for hardware monitor on SFN4111T-R5 and later Ben Hutchings
2009-01-30 3:52 ` [PATCH 09/11] sfc: SFT9001: Always enable XNP exchange on SFT9001 rev B Ben Hutchings
2009-01-30 3:59 ` [PATCH 10/11] sfc: SFX7101/SFT9001: Fix AN advertisements Ben Hutchings
2009-01-30 4:00 ` [PATCH 11/11] sfc: Replace stats_enabled flag with a disable count Ben Hutchings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1233256521.3656.12.camel@achroite \
--to=bhutchings@solarflare.com \
--cc=davem@davemloft.net \
--cc=linux-net-drivers@solarflare.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).