summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2013-03-26 04:47:40 +0000
committeradrian <adrian@FreeBSD.org>2013-03-26 04:47:40 +0000
commit5af56a0bad1ba2efd969921e41bf9a84c9ddfbe1 (patch)
tree2b7608f8f5846c8143a24984bf15c41383217276
parent49a21b7c2ed9406dd08968495779c6ccfb4a58a5 (diff)
downloadFreeBSD-src-5af56a0bad1ba2efd969921e41bf9a84c9ddfbe1.zip
FreeBSD-src-5af56a0bad1ba2efd969921e41bf9a84c9ddfbe1.tar.gz
Migrate the multicast queue assembly code to not use the axq_link pointer
and instead use the HAL method to set the link pointer. Tested: * AR9280, hostap mode, CABQ frames being queued and transmitted
-rw-r--r--sys/dev/ath/if_ath_tx.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/dev/ath/if_ath_tx.c b/sys/dev/ath/if_ath_tx.c
index 00c68d2..7d2a910 100644
--- a/sys/dev/ath/if_ath_tx.c
+++ b/sys/dev/ath/if_ath_tx.c
@@ -704,18 +704,20 @@ ath_tx_handoff_mcast(struct ath_softc *sc, struct ath_txq *txq,
("%s: busy status 0x%x", __func__, bf->bf_flags));
ATH_TXQ_LOCK(txq);
- if (txq->axq_link != NULL) {
- struct ath_buf *last = ATH_TXQ_LAST(txq, axq_q_s);
+ if (ATH_TXQ_LAST(txq, axq_q_s) != NULL) {
+ struct ath_buf *bf_last = ATH_TXQ_LAST(txq, axq_q_s);
struct ieee80211_frame *wh;
/* mark previous frame */
- wh = mtod(last->bf_m, struct ieee80211_frame *);
+ wh = mtod(bf_last->bf_m, struct ieee80211_frame *);
wh->i_fc[1] |= IEEE80211_FC1_MORE_DATA;
- bus_dmamap_sync(sc->sc_dmat, last->bf_dmamap,
+ bus_dmamap_sync(sc->sc_dmat, bf_last->bf_dmamap,
BUS_DMASYNC_PREWRITE);
/* link descriptor */
- *txq->axq_link = bf->bf_daddr;
+ ath_hal_settxdesclink(sc->sc_ah,
+ bf_last->bf_lastds,
+ bf->bf_daddr);
}
ATH_TXQ_INSERT_TAIL(txq, bf, bf_list);
ath_hal_gettxdesclinkptr(sc->sc_ah, bf->bf_lastds, &txq->axq_link);
OpenPOWER on IntegriCloud