Move symbol reset detection code back into wi_reset. This is a more

reliable way to detect if the symbol cards have been reset or not.
This makes symbol cards work better.

Submitted by: deischen
This commit is contained in:
Warner Losh 2003-03-18 02:54:39 +00:00
parent 08d49adb7f
commit 572ab50c54
2 changed files with 10 additions and 8 deletions

View File

@ -627,15 +627,11 @@ wi_init(void *arg)
return;
}
wasenabled = sc->sc_enabled;
if (!sc->sc_enabled) {
sc->sc_enabled = 1;
} else
wi_stop(ifp, 0);
/* Symbol firmware cannot be initialized more than once */
if (sc->sc_firmware_type != WI_SYMBOL || !wasenabled)
wi_reset(sc);
if ((wasenabled = sc->sc_enabled))
wi_stop(ifp, 0);
sc->sc_enabled = 1;
wi_reset(sc);
/* common 802.11 configuration */
ic->ic_flags &= ~IEEE80211_F_IBSSON;
@ -957,6 +953,11 @@ wi_reset(struct wi_softc *sc)
#define WI_INIT_TRIES 5
int i, error;
/* Symbol firmware cannot be reset more than once. */
if (sc->sc_firmware_type == WI_SYMBOL && sc->sc_reset)
return (0);
sc->sc_reset = 1;
for (i = 0; i < WI_INIT_TRIES; i++) {
if ((error = wi_cmd(sc, WI_CMD_INI, 0, 0, 0)) == 0)
break;

View File

@ -68,6 +68,7 @@ struct wi_softc {
int sc_unit;
int wi_gone;
int sc_enabled;
int sc_reset;
int sc_firmware_type;
#define WI_NOTYPE 0
#define WI_LUCENT 1