aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ath
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2004-01-07 19:16:49 +0000
committerSam Leffler <sam@FreeBSD.org>2004-01-07 19:16:49 +0000
commit23428eafa02d4bf0576e45c7429f37d1e5ea1bf6 (patch)
tree1b8fb360802a940ce1d33183845645f79639ad62 /sys/dev/ath
parenta9c0425768534c843326b5ba0431abd9fd3a71b0 (diff)
Notes
Diffstat (limited to 'sys/dev/ath')
-rw-r--r--sys/dev/ath/if_ath.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c
index 3b07851426b6a..33748a3a42e3a 100644
--- a/sys/dev/ath/if_ath.c
+++ b/sys/dev/ath/if_ath.c
@@ -2238,7 +2238,9 @@ static void
ath_draintxq(struct ath_softc *sc)
{
struct ath_hal *ah = sc->sc_ah;
- struct ifnet *ifp = &sc->sc_ic.ic_if;
+ struct ieee80211com *ic = &sc->sc_ic;
+ struct ifnet *ifp = &ic->ic_if;
+ struct ieee80211_node *ni;
struct ath_buf *bf;
/* XXX return value */
@@ -2272,7 +2274,14 @@ ath_draintxq(struct ath_softc *sc)
bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap);
m_freem(bf->bf_m);
bf->bf_m = NULL;
+ ni = bf->bf_node;
bf->bf_node = NULL;
+ if (ni != NULL && ni != ic->ic_bss) {
+ /*
+ * Reclaim node reference.
+ */
+ ieee80211_free_node(ic, ni);
+ }
ATH_TXBUF_LOCK(sc);
TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list);
ATH_TXBUF_UNLOCK(sc);