Have ath_tx_txqaddbuf calculate and use the last descriptor for the buffer. This occurs in the FF case, where there may be two buffers.

This fixes problems with r3548 noted in #1922.


git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@3616 0192ed92-7a03-0410-a25b-9323aeb14dbd
This commit is contained in:
mentor 2008-05-06 00:18:09 +00:00
parent f577062ef7
commit f5f3adc423
1 changed files with 10 additions and 2 deletions

View File

@ -2964,6 +2964,14 @@ ath_tx_txqaddbuf(struct ath_softc *sc, struct ieee80211_node *ni,
struct ath_txq *txq, struct ath_buf *bf, int framelen)
{
struct ath_hal *ah = sc->sc_ah;
struct ath_desc *ds = bf->bf_desc;
#ifdef ATH_SUPERG_FF
/* Go to the last descriptor.
* NB: This code assumes that the descriptors for a buf are allocated,
* contiguously. This assumption is made elsewhere too. */
ds += bf->bf_numdescff;
#endif
if (ath_cac_running_dbgmsg(sc))
return;
@ -2991,7 +2999,7 @@ ath_tx_txqaddbuf(struct ath_softc *sc, struct ieee80211_node *ni,
txq->axq_qnum, txq->axq_link,
(u_int64_t)bf->bf_daddr, bf->bf_desc);
}
txq->axq_link = &bf->bf_desc->ds_link;
txq->axq_link = &ds->ds_link;
/* We do not start tx on this queue as it will be done as
"CAB" data at DTIM intervals. */
ath_hal_intrset(ah, sc->sc_imask);
@ -3022,7 +3030,7 @@ ath_tx_txqaddbuf(struct ath_softc *sc, struct ieee80211_node *ni,
txq->axq_qnum, txq->axq_link,
(u_int64_t)bf->bf_daddr, bf->bf_desc);
}
txq->axq_link = &bf->bf_desc->ds_link;
txq->axq_link = &ds->ds_link;
ath_hal_txstart(ah, txq->axq_qnum);
sc->sc_dev->trans_start = jiffies;
}