iwm: revert r293178

This optimization is not proper (and causes kernel panic),
since driver checks fw_status to optimize away parsing stage
if it was already done.

Reported by:	dchagin
This commit is contained in:
Andriy Voskoboinyk 2016-01-05 20:09:26 +00:00
parent 43d53dba8f
commit 430384523d

View File

@ -2041,7 +2041,6 @@ iwm_mvm_load_ucode_wait_alive(struct iwm_softc *sc,
sc->sc_uc_current = ucode_type;
error = iwm_start_fw(sc, ucode_type);
iwm_fw_info_free(&sc->sc_fw);
if (error) {
sc->sc_uc_current = old_type;
return error;
@ -4937,6 +4936,7 @@ iwm_suspend(device_t dev)
static int
iwm_detach_local(struct iwm_softc *sc, int do_net80211)
{
struct iwm_fw_info *fw = &sc->sc_fw;
device_t dev = sc->sc_dev;
int i;
@ -4953,6 +4953,10 @@ iwm_detach_local(struct iwm_softc *sc, int do_net80211)
for (i = 0; i < nitems(sc->txq); i++)
iwm_free_tx_ring(sc, &sc->txq[i]);
/* Free firmware */
if (fw->fw_fp != NULL)
iwm_fw_info_free(fw);
/* Free scheduler */
iwm_free_sched(sc);
if (sc->ict_dma.vaddr != NULL)