aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/sfc')
-rw-r--r--drivers/net/sfc/efx.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index ce1c7d3cd12e..8f832bf1e4d2 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -2112,8 +2112,6 @@ static int __devinit efx_pci_probe(struct pci_dev *pci_dev,
2112 * we're in STATE_INIT. */ 2112 * we're in STATE_INIT. */
2113 for (i = 0; i < 5; i++) { 2113 for (i = 0; i < 5; i++) {
2114 rc = efx_pci_probe_main(efx); 2114 rc = efx_pci_probe_main(efx);
2115 if (rc == 0)
2116 break;
2117 2115
2118 /* Serialise against efx_reset(). No more resets will be 2116 /* Serialise against efx_reset(). No more resets will be
2119 * scheduled since efx_stop_all() has been called, and we 2117 * scheduled since efx_stop_all() has been called, and we
@@ -2121,6 +2119,17 @@ static int __devinit efx_pci_probe(struct pci_dev *pci_dev,
2121 * the rtnetlink or driverlink layers. */ 2119 * the rtnetlink or driverlink layers. */
2122 cancel_work_sync(&efx->reset_work); 2120 cancel_work_sync(&efx->reset_work);
2123 2121
2122 if (rc == 0) {
2123 if (efx->reset_pending != RESET_TYPE_NONE) {
2124 /* If there was a scheduled reset during
2125 * probe, the NIC is probably hosed anyway */
2126 efx_pci_remove_main(efx);
2127 rc = -EIO;
2128 } else {
2129 break;
2130 }
2131 }
2132
2124 /* Retry if a recoverably reset event has been scheduled */ 2133 /* Retry if a recoverably reset event has been scheduled */
2125 if ((efx->reset_pending != RESET_TYPE_INVISIBLE) && 2134 if ((efx->reset_pending != RESET_TYPE_INVISIBLE) &&
2126 (efx->reset_pending != RESET_TYPE_ALL)) 2135 (efx->reset_pending != RESET_TYPE_ALL))