diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2012-07-27 14:35:52 -0400 |
---|---|---|
committer | Ben Hutchings <bhutchings@solarflare.com> | 2012-08-24 15:10:20 -0400 |
commit | 5642ceef466365ebc94eb1332d9e6228efa09518 (patch) | |
tree | fee58b508a8fc6c57e95762cda293d8641b9e6e7 /drivers/net | |
parent | 6032fb56c546c0a14856dc57a92d84560816b217 (diff) |
sfc: Hold RTNL lock (only) when calling efx_stop_interrupts()
Interrupt state should be consistently guarded by the RTNL lock once
the net device is registered.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/sfc/efx.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c index f02591bb62f4..629029e2037d 100644 --- a/drivers/net/ethernet/sfc/efx.c +++ b/drivers/net/ethernet/sfc/efx.c | |||
@@ -2164,9 +2164,9 @@ void efx_reset_down(struct efx_nic *efx, enum reset_type method) | |||
2164 | EFX_ASSERT_RESET_SERIALISED(efx); | 2164 | EFX_ASSERT_RESET_SERIALISED(efx); |
2165 | 2165 | ||
2166 | efx_stop_all(efx); | 2166 | efx_stop_all(efx); |
2167 | mutex_lock(&efx->mac_lock); | ||
2168 | |||
2169 | efx_stop_interrupts(efx, false); | 2167 | efx_stop_interrupts(efx, false); |
2168 | |||
2169 | mutex_lock(&efx->mac_lock); | ||
2170 | if (efx->port_initialized && method != RESET_TYPE_INVISIBLE) | 2170 | if (efx->port_initialized && method != RESET_TYPE_INVISIBLE) |
2171 | efx->phy_op->fini(efx); | 2171 | efx->phy_op->fini(efx); |
2172 | efx->type->fini(efx); | 2172 | efx->type->fini(efx); |
@@ -2492,11 +2492,11 @@ static void efx_pci_remove(struct pci_dev *pci_dev) | |||
2492 | rtnl_lock(); | 2492 | rtnl_lock(); |
2493 | efx->state = STATE_UNINIT; | 2493 | efx->state = STATE_UNINIT; |
2494 | dev_close(efx->net_dev); | 2494 | dev_close(efx->net_dev); |
2495 | efx_stop_interrupts(efx, false); | ||
2495 | 2496 | ||
2496 | /* Allow any queued efx_resets() to complete */ | 2497 | /* Allow any queued efx_resets() to complete */ |
2497 | rtnl_unlock(); | 2498 | rtnl_unlock(); |
2498 | 2499 | ||
2499 | efx_stop_interrupts(efx, false); | ||
2500 | efx_sriov_fini(efx); | 2500 | efx_sriov_fini(efx); |
2501 | efx_unregister_netdev(efx); | 2501 | efx_unregister_netdev(efx); |
2502 | 2502 | ||