aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc/selftest.c
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2008-12-13 00:59:24 -0500
committerDavid S. Miller <davem@davemloft.net>2008-12-13 00:59:24 -0500
commit766ca0fa6bf1600bdf4bc7726c74f14c8455c6b8 (patch)
treeb1ea2df622753f2493b1053fda21c0db3f18a043 /drivers/net/sfc/selftest.c
parent04cc8cacb01c09fba2297faf1477cd570ba43f0b (diff)
sfc: Rework MAC, PHY and board event handling
From: Steve Hodgson <shodgson@solarflare.com> MAC, PHY and board events may be separately enabled and signalled. Our current arrangement of chaining the polling functions can result in events being missed. Change them to be more independent. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sfc/selftest.c')
-rw-r--r--drivers/net/sfc/selftest.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/sfc/selftest.c
index 8142e37a518f..578b7f410ed4 100644
--- a/drivers/net/sfc/selftest.c
+++ b/drivers/net/sfc/selftest.c
@@ -594,12 +594,14 @@ static int efx_test_loopbacks(struct efx_nic *efx, struct ethtool_cmd ecmd,
594 efx->loopback_mode = mode; 594 efx->loopback_mode = mode;
595 efx_reconfigure_port(efx); 595 efx_reconfigure_port(efx);
596 596
597 /* Wait for the PHY to signal the link is up */ 597 /* Wait for the PHY to signal the link is up. Interrupts
598 * are enabled for PHY's using LASI, otherwise we poll()
599 * quickly */
598 count = 0; 600 count = 0;
599 do { 601 do {
600 struct efx_channel *channel = &efx->channel[0]; 602 struct efx_channel *channel = &efx->channel[0];
601 603
602 efx->mac_op->check_hw(efx); 604 efx->phy_op->poll(efx);
603 schedule_timeout_uninterruptible(HZ / 10); 605 schedule_timeout_uninterruptible(HZ / 10);
604 if (channel->work_pending) 606 if (channel->work_pending)
605 efx_process_channel_now(channel); 607 efx_process_channel_now(channel);