diff options
author | sam <sam@FreeBSD.org> | 2006-04-16 18:14:01 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2006-04-16 18:14:01 +0000 |
commit | 6ecdb098d347dc853ffb2fd7e09f4a8ca9fca721 (patch) | |
tree | a51222875a399852cda2cbc4b1353542b69258e5 /sys/dev/ath | |
parent | 51c1e211e6347c7971449bf097605b8814176d5c (diff) | |
download | FreeBSD-src-6ecdb098d347dc853ffb2fd7e09f4a8ca9fca721.zip FreeBSD-src-6ecdb098d347dc853ffb2fd7e09f4a8ca9fca721.tar.gz |
Unbreak cabq handling: check the s/w q, not the h/w q as the frames
have not been passed to the h/w yet. This remedies watchdog timeout
of buffered multicast frames in hostap mode.
While here eliminate an extraneous check; ieee80211_beacon_update sets
the tim bit based on ncabq != 0 so there's no reason to check it too.
Noticed by: Christophe Prevotaux
Diffstat (limited to 'sys/dev/ath')
-rw-r--r-- | sys/dev/ath/if_ath.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index a50d3cd..c5be72d 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -2042,7 +2042,7 @@ ath_beacon_proc(void *arg, int pending) * of the TIM bitmap). */ m = bf->bf_m; - ncabq = ath_hal_numtxpending(ah, sc->sc_cabq->axq_qnum); + ncabq = sc->sc_cabq->axq_depth; if (ieee80211_beacon_update(ic, bf->bf_node, &sc->sc_boff, m, ncabq)) { /* XXX too conservative? */ bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); @@ -2102,7 +2102,7 @@ ath_beacon_proc(void *arg, int pending) * Enable the CAB queue before the beacon queue to * insure cab frames are triggered by this beacon. */ - if (ncabq != 0 && (sc->sc_boff.bo_tim[4] & 1)) /* NB: only at DTIM */ + if (sc->sc_boff.bo_tim[4] & 1) /* NB: only at DTIM */ ath_hal_txstart(ah, sc->sc_cabq->axq_qnum); ath_hal_puttxbuf(ah, sc->sc_bhalq, bf->bf_daddr); ath_hal_txstart(ah, sc->sc_bhalq); |