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>