svn commit: r248714 - head/sys/dev/ath
Adrian Chadd
adrian at FreeBSD.org
Tue Mar 26 04:48:58 UTC 2013
Author: adrian
Date: Tue Mar 26 04:48:58 2013
New Revision: 248714
URL: http://svnweb.freebsd.org/changeset/base/248714
Log:
Convert the EDMA multicast queue code over to use the HAL method to set
the descriptor link pointer, rather than directly.
This is needed on AR9380 and later (ie, EDMA) NICs so the multicast queue
has a chance in hell of being put together right.
Tested:
* AR9380, AR9580 in hostap mode, CABQ traffic (but with other patches..)
Modified:
head/sys/dev/ath/if_ath_tx_edma.c
Modified: head/sys/dev/ath/if_ath_tx_edma.c
==============================================================================
--- head/sys/dev/ath/if_ath_tx_edma.c Tue Mar 26 04:47:40 2013 (r248713)
+++ head/sys/dev/ath/if_ath_tx_edma.c Tue Mar 26 04:48:58 2013 (r248714)
@@ -249,7 +249,7 @@ ath_edma_xmit_handoff_mcast(struct ath_s
struct ath_buf *bf)
{
- ATH_TXQ_LOCK_ASSERT(txq);
+ ATH_TX_LOCK_ASSERT(sc);
KASSERT((bf->bf_flags & ATH_BUF_BUSY) == 0,
("%s: busy status 0x%x", __func__, bf->bf_flags));
@@ -257,7 +257,7 @@ ath_edma_xmit_handoff_mcast(struct ath_s
/*
* XXX this is mostly duplicated in ath_tx_handoff_mcast().
*/
- if (ATH_TXQ_FIRST(txq) != NULL) {
+ 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;
@@ -270,7 +270,9 @@ ath_edma_xmit_handoff_mcast(struct ath_s
BUS_DMASYNC_PREWRITE);
/* link descriptor */
- *txq->axq_link = bf->bf_daddr;
+ ath_hal_settxdesclink(sc->sc_ah,
+ bf_last->bf_lastds,
+ bf->bf_daddr);
}
#ifdef ATH_DEBUG_ALQ
More information about the svn-src-all
mailing list