diff options
author | avos <avos@FreeBSD.org> | 2016-01-04 21:07:08 +0000 |
---|---|---|
committer | avos <avos@FreeBSD.org> | 2016-01-04 21:07:08 +0000 |
commit | 39c32841aed0a19d23a00e5547defaae9a39dafd (patch) | |
tree | 5aa795f796882133cf38d3ff6b60f1aa4b860bf7 | |
parent | a9971d44a356eb019d464c6b2e1d005411c75033 (diff) | |
download | FreeBSD-src-39c32841aed0a19d23a00e5547defaae9a39dafd.zip FreeBSD-src-39c32841aed0a19d23a00e5547defaae9a39dafd.tar.gz |
iwm: free firmware related resources after uploading it to the hardware
iwn(4) / wpi(4) works in the same way
(read_firmware() -> hw_init() -> firmware_put())
Approved by: adrian (mentor)
Differential Revision: https://reviews.freebsd.org/D4766
-rw-r--r-- | sys/dev/iwm/if_iwm.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/sys/dev/iwm/if_iwm.c b/sys/dev/iwm/if_iwm.c index 8d94355..5556ca6 100644 --- a/sys/dev/iwm/if_iwm.c +++ b/sys/dev/iwm/if_iwm.c @@ -2041,6 +2041,7 @@ 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; @@ -4936,7 +4937,6 @@ 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,11 +4953,7 @@ 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 */ + /* Free scheduler */ iwm_free_sched(sc); if (sc->ict_dma.vaddr != NULL) iwm_free_ict(sc); |