Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Jan 2016 21:07:08 +0000 (UTC)
From:      Andriy Voskoboinyk <avos@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r293178 - head/sys/dev/iwm
Message-ID:  <201601042107.u04L78vS045157@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: avos
Date: Mon Jan  4 21:07:08 2016
New Revision: 293178
URL: https://svnweb.freebsd.org/changeset/base/293178

Log:
  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

Modified:
  head/sys/dev/iwm/if_iwm.c

Modified: head/sys/dev/iwm/if_iwm.c
==============================================================================
--- head/sys/dev/iwm/if_iwm.c	Mon Jan  4 21:03:01 2016	(r293177)
+++ head/sys/dev/iwm/if_iwm.c	Mon Jan  4 21:07:08 2016	(r293178)
@@ -2041,6 +2041,7 @@ iwm_mvm_load_ucode_wait_alive(struct iwm
 
 	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, i
 	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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201601042107.u04L78vS045157>