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
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to