Index: sys/dev/sfxge/sfxge.c =================================================================== --- sys/dev/sfxge/sfxge.c +++ sys/dev/sfxge/sfxge.c @@ -750,6 +750,7 @@ { struct sfxge_softc *sc; int rc; + unsigned attempt; (void)npending; @@ -762,10 +763,15 @@ sfxge_stop(sc); efx_nic_reset(sc->enp); - if ((rc = sfxge_start(sc)) != 0) - device_printf(sc->dev, - "reset failed (%d); interface is now stopped\n", - rc); + for (attempt = 0; attempt < 3; ++attempt) { + if ((rc = sfxge_start(sc)) == 0) + goto done; + + device_printf(sc->dev, "start on reset failed (%d)\n", rc); + DELAY(100000); + } + + device_printf(sc->dev, "reset failed; interface is now stopped\n"); done: SFXGE_ADAPTER_UNLOCK(sc);