* [PATCH 10/16] sfc: Hold MAC lock for longer in efx_init_port()
@ 2009-11-26 2:11 Ben Hutchings
0 siblings, 0 replies; only message in thread
From: Ben Hutchings @ 2009-11-26 2:11 UTC (permalink / raw)
To: David Miller; +Cc: netdev, linux-net-drivers
Although efx_init_port() is only called at probe time and so cannot
race with port reconfiguration, most of the functions it calls can
expect to be called with the MAC lock held.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
drivers/net/sfc/efx.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index 4ebad61..155aa1c 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -737,23 +737,27 @@ static int efx_init_port(struct efx_nic *efx)
EFX_LOG(efx, "init port\n");
+ mutex_lock(&efx->mac_lock);
+
rc = efx->phy_op->init(efx);
if (rc)
- return rc;
- mutex_lock(&efx->mac_lock);
+ goto fail1;
efx->phy_op->reconfigure(efx);
rc = falcon_switch_mac(efx);
- mutex_unlock(&efx->mac_lock);
if (rc)
- goto fail;
+ goto fail2;
efx->mac_op->reconfigure(efx);
efx->port_initialized = true;
efx_stats_enable(efx);
+
+ mutex_unlock(&efx->mac_lock);
return 0;
-fail:
+fail2:
efx->phy_op->fini(efx);
+fail1:
+ mutex_unlock(&efx->mac_lock);
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.
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2009-11-26 2:11 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-26 2:11 [PATCH 10/16] sfc: Hold MAC lock for longer in efx_init_port() Ben Hutchings
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox