svn commit: r224954 - user/adrian/if_ath_tx/sys/dev/ath
Adrian Chadd
adrian at FreeBSD.org
Thu Aug 18 00:19:12 UTC 2011
Author: adrian
Date: Thu Aug 18 00:19:12 2011
New Revision: 224954
URL: http://svn.freebsd.org/changeset/base/224954
Log:
In preparation for forming aggregates, push the descriptor setup and
descriptor chain code into the software queue routine, and leave setting
the rate control stuff until the packet is actually queued to the hardware.
Modified:
user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c
Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c
==============================================================================
--- user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c Thu Aug 18 00:05:09 2011 (r224953)
+++ user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c Thu Aug 18 00:19:12 2011 (r224954)
@@ -1397,10 +1397,10 @@ ath_tx_raw_start(struct ath_softc *sc, s
*/
if (do_override) {
- ATH_TXQ_LOCK(sc->sc_ac2q[pri]);
ath_tx_setds(sc, bf);
ath_tx_set_ratectrl(sc, ni, bf);
ath_tx_chaindesclist(sc, bf);
+ ATH_TXQ_LOCK(sc->sc_ac2q[pri]);
ath_tx_handoff(sc, sc->sc_ac2q[pri], bf);
ATH_TXQ_UNLOCK(sc->sc_ac2q[pri]);
}
@@ -1792,6 +1792,16 @@ ath_tx_swq(struct ath_softc *sc, struct
bf->bf_state.bfs_aggr = 0;
bf->bf_state.bfs_aggrburst = 0;
+ /*
+ * Program first and chain the descriptors together.
+ *
+ * These fields (along with the DMA map setup) are needed
+ * by the aggregate forming code, which only overrides
+ * the rate control setup and the aggregation fields.
+ */
+ ath_tx_setds(sc, bf);
+ ath_tx_chaindesclist(sc, bf);
+
/* Queue frame to the tail of the software queue */
ATH_TXQ_LOCK(atid);
ATH_TXQ_INSERT_TAIL(atid, bf, bf_list);
@@ -2636,10 +2646,8 @@ ath_tx_tid_hw_queue_aggr(struct ath_soft
if (bf->bf_state.bfs_tid == IEEE80211_NONQOS_TID)
device_printf(sc->sc_dev, "%s: TID=16?\n", __func__);
- /* Program descriptor */
- ath_tx_setds(sc, bf);
+ /* Program rate control */
ath_tx_set_ratectrl(sc, ni, bf);
- ath_tx_chaindesclist(sc, bf);
/* Punt to hardware or software txq */
ATH_TXQ_LOCK(txq);
@@ -2700,10 +2708,8 @@ ath_tx_tid_hw_queue_norm(struct ath_soft
/* Normal completion handler */
bf->bf_comp = ath_tx_normal_comp;
- /* Program descriptor */
- ath_tx_setds(sc, bf);
+ /* Program rate control*/
ath_tx_set_ratectrl(sc, ni, bf);
- ath_tx_chaindesclist(sc, bf);
/* Punt to hardware or software txq */
ATH_TXQ_LOCK(txq);
More information about the svn-src-user
mailing list