Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Jan 2005 22:00:09 GMT
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 68856 for review
Message-ID:  <200501122200.j0CM09C9012253@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=68856

Change 68856 by sam@sam_ebb on 2005/01/12 21:59:40

	o hold a node reference in each beacon tx buf for consistency
	o reclaim existing beacon resources explicitly before allocating
	  new ones (eliminates code duplication)

Affected files ...

.. //depot/projects/wifi/sys/dev/ath/if_ath.c#68 edit

Differences ...

==== //depot/projects/wifi/sys/dev/ath/if_ath.c#68 (text+ko) ====

@@ -2069,12 +2069,6 @@
 		sc->sc_stats.ast_be_nombuf++;	/* XXX */
 		return ENOMEM;			/* XXX */
 	}
-	if (bf->bf_m != NULL) {
-		bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap);
-		m_freem(bf->bf_m);
-		bf->bf_m = NULL;
-		bf->bf_node = NULL;
-	}
 	/*
 	 * NB: the beacon data buffer must be 32-bit aligned;
 	 * we assume the mbuf routines will return us something
@@ -2092,7 +2086,7 @@
 				     BUS_DMA_NOWAIT);
 	if (error == 0) {
 		bf->bf_m = m;
-		bf->bf_node = ni;		/* NB: no held reference */
+		bf->bf_node = ieee80211_ref_node(ni);
 	} else {
 		m_freem(m);
 	}
@@ -2322,13 +2316,17 @@
 {
 	struct ath_buf *bf;
 
-	STAILQ_FOREACH(bf, &sc->sc_bbuf, bf_list)
+	STAILQ_FOREACH(bf, &sc->sc_bbuf, bf_list) {
 		if (bf->bf_m != NULL) {
 			bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap);
 			m_freem(bf->bf_m);
 			bf->bf_m = NULL;
+		}
+		if (bf->bf_node != NULL) {
+			ieee80211_free_node(bf->bf_node);
 			bf->bf_node = NULL;
 		}
+	}
 }
 
 /*
@@ -4355,6 +4353,7 @@
 			 * be called with beacon transmission active.
 			 */
 			ath_hal_stoptxdma(ah, sc->sc_bhalq);
+			ath_beacon_free(sc);
 			error = ath_beacon_alloc(sc, ni);
 			if (error != 0)
 				goto bad;



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